JP2021190125A - メモリリソースを管理するためのシステム及び方法 - Google Patents

メモリリソースを管理するためのシステム及び方法 Download PDF

Info

Publication number
JP2021190125A
JP2021190125A JP2021089584A JP2021089584A JP2021190125A JP 2021190125 A JP2021190125 A JP 2021190125A JP 2021089584 A JP2021089584 A JP 2021089584A JP 2021089584 A JP2021089584 A JP 2021089584A JP 2021190125 A JP2021190125 A JP 2021190125A
Authority
JP
Japan
Prior art keywords
server
memory
switch
memory module
cxl
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.)
Pending
Application number
JP2021089584A
Other languages
English (en)
Inventor
テジャ マラディ,クリシュナ
Teja Malladi Krishna
チャン,アンドリュー
Chang Andrew
秉 熙 崔
Byunghee Choi
エム ナジャファバディ,エフサン
M Najafabadi Ehsan
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US17/026,087 external-priority patent/US11461263B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021190125A publication Critical patent/JP2021190125A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/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
    • 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/4027Coupling between buses using bus bridges
    • 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
    • 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/0608Saving storage space on 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/0653Monitoring storage devices or 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/10Current supply arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • 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/04Addressing variable-length words or parts of words
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1028Power efficiency
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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
    • 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)

Abstract

【課題】メモリリソースを管理するためのシステム及び方法を提供する。【解決手段】本発明によるシステムは、キャッシュコヒーレントスイッチと第1のメモリモジュールとを有する第1のメモリサーバと、第2のメモリサーバと、第1のメモリサーバ及び第2のメモリサーバに接続されるサーバリンクスイッチと、を含み、第1のメモリモジュールは、キャッシュコヒーレントスイッチに接続され、キャッシュコヒーレントスイッチは、サーバリンクスイッチに接続される。【選択図】図1A

Description

本発明は、コンピューティングシステムに係り、特に、一つ以上のサーバを含むシステム内のメモリリソースを管理するためのシステム及び方法に関する。
本背景セクションは、内容のみを提供することを意図する。このセクションの実施形態又は概念の開示は、先行技術として認められない。
一部のサーバシステムは、ネットワークプロトコルによって接続されたサーバのコレクションを含み得る。このようなシステム内の各サーバは、処理リソース(例えば、プロセッサ)及びメモリリソース(例えば、システムメモリ)を含み得る。ある場合では、一つのサーバの処理リソースが別のサーバのメモリリソースにアクセスすることが有利であり、いずれかのサーバの処理リソースを最小限に抑えながら、このようなアクセスを行うことが有利である。
従って、一つ以上のサーバを含むシステム内のメモリリソースを管理するための改善されたシステム及び方法が必要である。
特開2020−201957号公報
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、一つ以上のサーバを含むシステム内のメモリリソースを管理するための改善されたシステム及び方法を提供することにある。
上記目的を達成するためになされた本発明によるデータ記憶及び処理システムは、サーバリンクスイッチによって接続された一つ以上のサーバ及び一つ以上のメモリサーバを含む。各メモリサーバは、キャッシュコヒーレントスイッチを介してサーバリンクスイッチに接続された一つ以上のメモリモジュールを含む。各メモリモジュールは、強化した機能を提供するコントローラ(例えば、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC))を含む。これらの機能は、サーバが(例えば、リモートダイレクトメモリアクセス(RDMA)を実行することによって)中央処理装置(CPU)などのプロセッサにアクセスすることなく、メモリモジュールと相互作用できるようにすることを含む。
前記システムは、キャッシュコヒーレントスイッチ及び第1のメモリモジュールを含む第1のメモリサーバと、第2のメモリサーバと、前記第1のメモリサーバ及び前記第2のメモリサーバに接続されたサーバリンクスイッチと、を備え、前記第1のメモリモジュールは、前記キャッシュコヒーレントスイッチに接続され、前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチに接続される。
上記目的を達成するためになされた本発明によるサーバリンクスイッチは、第1のメモリモジュールの電源を無効にできる。
前記サーバリンクスイッチは、前記第1のメモリモジュールの電源を無効にするように前記キャッシュコヒーレントスイッチに指示することによって、前記第1のメモリモジュールへの電源を無効にし、前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチによって前記第1のメモリモジュールへの電源を無効にするように指示されると、前記第1のメモリモジュールの電源を無効にする。
上記目的を達成するためになされた本発明によるキャッシュコヒーレントスイッチは、前記第1のメモリモジュール内で重複排除を実行する。
前記キャッシュコヒーレントスイッチは、データを圧縮し、前記第1のメモリモジュール内に圧縮したデータを格納する。
前記サーバリンクスイッチは、前記第1のメモリモジュールの状態を照会する。
前記サーバリンクスイッチは、インテリジェントプラットホーム管理インターフェース(IPMI)を介して前記第1のメモリモジュールの状態を照会する。
前記状態を照会することは、電源状態、ネットワーク状態、及びエラーチェック状態からなるグループから選択された一つの状態を照会することを含む。
前記サーバリンクスイッチは、前記第1のメモリサーバに指示されたキャッシュ要求を一括する。
前記システムは、前記サーバリンクスイッチに接続された第3のメモリモジュールをさらに含み、前記サーバリンクスイッチは、前記第1のメモリサーバに格納されたデータと前記第3のメモリサーバに格納されたデータとの間で厳密な一貫性、逐次一貫性、因果一貫性、及びプロセッサ一貫性からなるグループから選択された一貫性レベルを維持する。
前記キャッシュコヒーレントスイッチは、メモリの第1の領域の充足度を監視し、前記メモリの前記第1の領域から前記メモリの第2の領域にデータを移動し、前記メモリの前記第1の領域は、揮発性メモリ内にあり、前記メモリの前記第2の領域は、永続メモリ内にある。
前記サーバリンクスイッチは、PCIeスイッチを含む。
前記サーバリンクスイッチは、CXLスイッチを含む。
前記サーバリンクスイッチは、ToR CXLスイッチを含む。
前記サーバリンクスイッチは、前記第2のメモリサーバから前記第1のメモリサーバにデータを送信し、前記データに対してフロー制御を実行する。
前記システムは、前記サーバリンクスイッチに接続された第3のメモリサーバをさらに含み、前記サーバリンクスイッチは、前記第2のメモリサーバから第1のパケットを受信し、前記第3のメモリサーバから第2のパケットを受信し、前記第1のパケット及び前記第2のパケットを前記第1のメモリサーバに送信する。
第1のメモリサーバと、第1のサーバと、第2のサーバと、前記第1のメモリサーバ、前記第1のサーバ、及び前記第2のサーバに接続されたサーバリンクスイッチと、を含み、前記第1のメモリサーバは、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を含み、前記第1のサーバは、内蔵プログラム処理回路を含み、前記第2のサーバは、内蔵プログラム処理回路を含むコンピューティングシステムにおいて、リモートダイレクトメモリアクセスを実行する方法は、前記サーバリンクスイッチによって前記第1のサーバから第1のパケットを受信する段階と、前記サーバリンクスイッチによって前記第2のサーバから第2のパケットを受信する段階と、前記第1のパケット及び前記第2のパケットを前記第1のメモリサーバに送信する段階と、を含む。
前記方法は、前記キャッシュコヒーレントスイッチによってデータを圧縮する段階と、前記第1のメモリモジュールに前記データを格納する段階と、をさらに含む。
前記方法は、前記サーバリンクスイッチによって前記第1のメモリサーバの状態を照会する段階をさらに含む。
システムは、キャッシュコヒーレントスイッチ、及び第1のメモリモジュールを含む第1のメモリサーバと、第2のメモリサーバと、前記第1のメモリサーバ及び前記第2のメモリサーバに接続されたサーバリンクスイッチング手段と、を備え、前記第1のメモリモジュールは、前記キャッシュコヒーレントスイッチに接続され、前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチング手段に接続される。
本発明によれば、サーバがリモートダイレクトメモリアクセス(RDMA)を実行することによって、プロセッサにアクセスすることなく、メモリモジュールと相互作用することができる。
本発明の一実施形態に係るキャッシュコヒーレント接続を使用して、メモリリソースをコンピューティングリソースに接続するためのシステムのブロック図である。 本発明の一実施形態に係るキャッシュコヒーレント接続を使用して、メモリリソースをコンピューティングリソースに接続するために拡張ソケットアダプタを使用するシステムのブロック図である。 本発明の一実施形態に係るイーサネットToR(top of rack)スイッチを使用してメモリを集合するシステムのブロック図である。 本発明の一実施形態に係るイーサネットToRスイッチ及び拡張ソケットアダプタを使用してメモリを集合するシステムのブロック図である。 本発明の一実施形態に係るメモリを集合するシステムのブロック図である。 本発明の一実施形態に係る拡張ソケットアダプタを使用してメモリを集合するシステムのブロック図である。 本発明の一実施形態に係るサーバを分けるシステムのブロック図である。 本発明の一実施形態に係る、図1A〜図1Gに示す実施形態のための処理回路をバイパス(bypass)して、リモートダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)転送を実行する方法を説明するためのフローチャートである。 本発明の一実施形態に係る、図1A〜図1Dに示す実施形態のための処理回路の関与でRDMA転送を実行する方法を説明するためのフローチャートである。 本発明の一実施形態に係る、図1E及び図1Fに示す実施形態のためのコンピュートエクスプレスリンク(compute express link:CXL)スイッチを介してRDMA転送を実行する方法を説明するためのフローチャートである。 本発明の一実施形態に係る、図1Gに示すCXLスイッチを介してRDMA転送を実行する方法を説明するためのフローチャートである。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
図面を参照して、以下の詳細な説明は、本明細書で提供するメモリリソースを管理するためのシステム及び方法の例示的な実施形態の説明を意図しており、本明細書が構成又は利用され得る形態のみを示すことを意図するものではない。この説明は、例示する実施形態に関連する本明細書の特徴を提示する。しかし、同一又は同等の機能及び構造は、本明細書の範囲内に含まれることを意図している異なる実施形態によって達成できることを理解すべきである。本明細書の他の箇所に記載のように、同様の番号は同様の要素又は特徴を示すことを意図する。
ペリフェラル・コンポーネント・インターコネクト・エクスプレス(Peripheral Component Interconnect express:PCIe)は、メモリへ接続する際の有用性を制限し得る、比較的高く可変レイテンシを有するコンピュータインターフェイスを指す。CXLは固定され、比較的短いパケットサイズを提供し、その結果、比較的高い帯域幅及び比較的低い固定レイテンシを提供し得るPCIe5.0を介した通信のためのオープンな業界標準である。従って、CXLはキャッシュコヒーレンスをサポートすることができ、CXLはメモリへの接続に適している。CXLはさらに、サーバでホストとアクセラレータ、メモリデバイス、及びネットワークインターフェース回路(又は、「ネットワークインターフェースコントローラ」若しくは「ネットワークインターフェースカード」(NICs))との接続を提供するために使用する。
CXLなどのキャッシュコヒーレンスプロトコルは、例えば、スカラー(scalar)、ベクトル(vector)、及びバッファリングされた(buffered)メモリシステムにおける異種処理のために使用する。CXLは、チャンネル、リタイマ(retimer)、システムのPHY層、インターフェースの論理的な側面、及びPCIe5.0のプロトコルを利用して、キャッシュコヒーレントインターフェースを提供するために使用する。CXLトランザクション層は、単一のリンクで同時に実行される2つの多重化サブプロトコルを含み、CXL.io、CXL.cache、及びCXL.memoryと呼ばれる。CXL.ioは、PCIeに類似したI/Oセマンティック(semantics)を含む。CXL.cacheはキャッシュセマンティックを含み、CXL.memoryはメモリセマンティックを含み、キャッシュセマンティックとメモリセマンティックは、いずれもオプションである。PCIeと同様に、CXLは、(i)分割可能なx16、x8、x4の基本幅、(ii)8GT/s及び16GT/sに分解可能な32GT/s、128b/130bのデータレート、(iii)300W(x16コネクタで75W)、及び(iv)プラグアンドプレイをサポートする。プラグアンドプレイをサポートするために、PCIe又はCXLデバイスリンクは、Gen1のPCIeでトレーニングを開始し、CXLと交渉し、Gen1−5のトレーニングを完了してから、CXLトランザクションを開始する。
一実施形態において、以下でさらに詳細に説明するように、ネットワークによって共に接続される複数のサーバを含むシステムにおいて、メモリの集合又は「プール」(例えば、共に接続された複数のメモリセルを含むメモリの量)へのCXL接続の使用は、様々な利点を提供する。例えば、CXLパケットにパケット/スイッチング機能を提供することに加えて、さらなる機能を有するCXLスイッチ(ここでは「強化機能CXLスイッチ」と記載する)は、メモリの集合を一つ以上の中央処理装置(CPU)(又は「中央処理回路」)及び(強化機能を有する)一つ以上のネットワークインターフェース回路に接続するために使用する。このような構成は、(i)メモリの集合が、異なる特性を有する様々な形態のメモリを含み、(ii)強化機能CXLスイッチが、メモリの集合を仮想化し、適切なタイプのメモリに異なる特性(例えば、アクセス頻度)のデータを格納し、(iii)強化機能CXLスイッチは、リモートダイレクトメモリアクセス(RDMA)がサーバの処理回路にほとんど又はまったく関与することなく実行されるように、RDMAをサポートし得る。
本明細書に記載のように、メモリを「仮想化」するということは、処理回路とメモリとの間でメモリアドレス変換を実行することを意味する。
CXLスイッチは、(i)単一レベルのスイッチングを介してメモリ及びアクセラレータの分解をサポートし、(ii)要求に基づいてドメイン間の時分割多重化を可能にする、リソースがドメイン間のオフライン又はオンラインを可能にし、(iii)ダウンストリームポートの仮想化をサポートする。CXLは、一実施形態において、それぞれがLD−ID(論理デバイス識別子)を有する複数の論理デバイスに分割される集合デバイスを用いて、一対多及び多対一のスイッチングを可能にする(例えば、(i)複数のループポートを一つのエンドポイントに接続し、(ii)一つのルートポートを複数のエンドポイントに接続し、(iii)複数のルートポートを複数のエンドポイントに接続することを可能にする)集合メモリを実装するために使用する。このような実施形態において、物理デバイスは、複数の論理デバイスに分割され、複数の論理デバイスそれぞれは、それぞれのイニシエータと認識される。デバイスは、一つの物理的機能(PF)及び複数(例えば、16個)の分離した論理デバイスを有する。一実施形態において、論理デバイスの数(例えば、パーティションの数)は(例えば、16個)に制限され、(デバイスを制御するために使用される物理的機能の)一つの制御パーティションもまた存在する。
一実施形態において、ファブリック(fabric)管理者は、(i)デバイスの発見(discovery)及び仮想CXLソフトウェアの生成を実行し、(ii)仮想ポートを物理ポートにバインドするために使用する。このようなファブリック管理者は、SMBus側波帯(sideband)を介した接続を介して動作する。ファブリック管理者は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせで実装し、例えば、ホスト内、メモリモジュール135の一つの中、強化機能CXLスイッチ130内、又はネットワークの他の場所に存在する。ファブリック管理者は、側波帯バス又はPCIeツリーを介して発生するコマンドを含むコマンドを発生することができる。
図1Aを参照すると、一実施形態において、サーバシステムは、ToR(top of rack)イーサネット(登録商標)スイッチ110によって共に接続された複数のサーバ105を含む。このスイッチは、イーサネットプロトコルを使用することが説明されているが、他の適切なネットワークプロトコルも使用できる。各サーバは、一つ以上の処理回路115を含み、各処理回路115は、(i)システムメモリ120(例えば、ダブルデータレート(バージョン4)(DDR4)メモリ、又は任意の他の適切なメモリ)、(ii)一つ以上のネットワークインターフェース回路125、及び(iii)一つ以上のCXLメモリモジュール135に接続される。処理回路115のそれぞれは、内蔵プログラム処理回路、例えば、CPU(例えば、x86 CPU)、グラフィックス処理装置(GPU)、又はARMプロセッサである。一実施形態において、ネットワークインターフェース回路125は、メモリモジュール135の一つに(同じ半導体チップ、又は同じモジュールに)実装されるか、又は、ネットワークインターフェース回路125は、メモリモジュール135から分離してパッケージされる。
ここでの使用のように、「メモリモジュール」は、一つ以上のメモリダイを含むパッケージ(例えば、プリント回路基板及びプリント回路基板に接続された構成要素を含むパッケージ、又はプリント回路基板を含むエンクロージャ)であり、各メモリダイは、複数のメモリセルを含む。各メモリダイ、又はメモリダイのグループのセットの各々は、メモリモジュールのプリント回路基板にはんだ付けされた(又はコネクタを介してメモリモジュールのプリント回路基板に接続された)パッケージ(例えば、エポキシモールドコンパウンド(EMC)パッケージ)内にある。メモリモジュール135のそれぞれは、CXLインターフェースを有し、CXLパケットとメモリダイのメモリインターフェイスとの間を変換するための、例えば、メモリモジュール135内でメモリのメモリ技術のために適切な信号に変換するためのコントローラ137(例えば、FPGA、ASIC、プロセッサ、及び/又はなど)を含む。ここでの使用のように、メモリダイの「メモリインターフェース」は、例えば、DRAMの場合、メモリダイの技術に固有のインターフェースであり、例えば、メモリインターフェースは、ワードライン及びビットラインである。メモリモジュールはまた、以下でさらに詳細に説明するように、強化機能を提供するコントローラ137を含む。メモリモジュール135のそれぞれのコントローラ137は、キャッシュコヒーレントインターフェースを介して、例えば、CXLインターフェースを介して処理回路115に接続される。コントローラ137はまた、処理回路115をバイパスすることによって、異なるサーバ105間でのデータ送信(例えば、RDMA要求)を容易にする。ToRイーサネットスイッチ110及びネットワークインターフェース回路125は、異なるサーバのCXLメモリデバイス間でのRDMA要求を容易にするために、RDMAインターフェースを含む(例えば、ToRイーサネットスイッチ110及びネットワークインターフェース回路125は、コンバージド(converged)イーサネットを介したRDMA(RoCE)、インフィニバンド(infiniband)、及びiWARPパケットのハードウェアオフロード又はハードウェア加速を提供する)。
システムのCXL相互接続は、CXL1.1標準などのキャッシュコヒーレントプロトコル、又は一実施形態において、CXL2.0標準、CXLの将来バージョン、又は任意の他の適切なプロトコル(例えば、キャッシュコヒーレントプロトコル)に従う。メモリモジュール135は、示したように処理回路115に直接取り付けられ、ToRイーサネットスイッチ110は、システムをより大きなサイズに(例えば、より多くのサーバ105で)拡張するために使用される。
一実施形態において、各サーバは、図1Aに示すように、複数の直接取付けられたCXLメモリモジュール135を装着する。各メモリモジュール135は、メモリ範囲としてホストの基本入力/出力システム(BIOS)にベースアドレスレジスタ(BAR)のセットを露出する。一つ以上のメモリモジュール135は、ホストOSマップの後ろにあるメモリ空間を透明に管理するためにファームウェアを含む。メモリモジュール135のそれぞれは、例えば、DRAM、NANDフラッシュ、高帯域幅メモリ(HBM)、低電力DDR SDRAM(LPDDR SDRAM)技術を含むメモリ技術のいずれか、又はこれらの組み合わせを含むが、これらに限定されず、また、キャッシュコントローラ又は異なる技術のメモリデバイス(異なる技術のいくつかのメモリデバイスを組み合わせたメモリモジュール135)のための分離した各分割コントローラを含む。各メモリモジュール135は、異なるインターフェイス幅(x4〜x16)を含み、様々な関連のフォームファクタ、例えば、U.2、M.2、半分の高さ、半分の長さ(HHHL)、フル高さ、半分の長さ(FHHL)、E1.S、E1.L、E3.S、及びE3.Hのいずれかに従って構成される。
一実施形態において、前述のように、強化機能CXLスイッチ130は、FPGA(又はASIC)のコントローラ137を含み、CXLパケットのスイッチングを超えたさらなる特徴を提供する。強化機能CXLスイッチ130のコントローラ137はまた、メモリモジュール135の管理装置として動作し、ホスト制御プレーン処理を支援し、リッチ制御セマンティック及び統計を可能にする。コントローラ137は、さらなる「バックドア」(例えば、100ギガビット・イーサネット(GbE))ネットワークインターフェース回路125を含む。一実施形態において、コントローラ137は、リモート書き込み要求を受信すると、処理回路115へのキャッシュ無効命令の発生を可能にする、処理回路115にCXL Type2デバイスとして存在する。一実施形態において、DDIO技術が有効になり、リモートデータがまず処理回路の最後のレベルのキャッシュ(LLC)にプールされ、その後(キャッシュから)メモリモジュール135に書き込まれる。ここで使用される「Type2」CXLデバイスは、トランザクションを開始し、オプションのコヒーレントキャッシュ及びホスト管理デバイスメモリを実装し、適用可能なトランザクションタイプには、すべてのCXL.cache及びすべてのCXL.memトランザクションが含まれる。
前述のように、一つ以上のメモリモジュール135は、永続メモリ又は「永続ストレージ」(すなわち、外部電源が切断されたときにデータが失われないストレージ)を含む。メモリモジュール135が永続ストレージとして存在する場合、メモリモジュール135のコントローラ137は、永続ドメインを管理し、例えば、コントローラ137は、永続ストレージを要求することにより、処理回路115によって(例えば、アプリケーションが対応するオペレーティングシステム機能を呼び出した結果として)識別された永続ストレージにデータを格納する。このような実施形態において、ソフトウェアAPIは、キャッシュ及びデータを永続ストレージにフラッシュする。
一実施形態において、ネットワークインターフェース回路125からメモリモジュール135へのダイレクトメモリ転送が可能になる。このような転送は、分散システムにおける高速通信のためのリモートメモリへの一方向転送である。このような実施形態において、メモリモジュール135は、より高速なRDMA転送を可能にするために、システム内のネットワークインターフェース回路125にハードウェアの詳細を露出する。このようなシステムでは、処理回路115のデータダイレクトI/O(DDIO)が有効か無効かに応じて、2つのシナリオが発生する。DDIOは、イーサネットコントローラ又はイーサネットアダプタと処理回路115のキャッシュとの間の直接通信を可能にする。処理回路115のDDIOが有効な場合、転送の目標は、処理回路の最後のレベルのキャッシュであり、このキャッシュからデータは、その後メモリモジュールに自動的にフラッシュされる。処理回路115のDDIOが無効の場合、メモリモジュール135は、(DDIOなしで)宛先メモリモジュール135によってアクセスが直接受信されるようにするために、デバイス−バイアス(device−bias)モードで動作する。ホストチャネルアダプタ(HCA)、バッファ、及び他の処理を備えたRDMA対応のネットワークインターフェース回路125は、RDMA転送の他のモードに存在する目標メモリバッファ転送をバイパスする、このようなRDMA転送を可能にするために採用する。例えば、このような実施形態において、バウンスバッファ(例えば、メモリ内の結果的な宛先がRDMAプロトコルによってサポートされていないアドレスの範囲内にある場合のリモートサーバ内のバッファ)の使用を回避する。一実施形態において、RDMAは、(例えば、他のネットワークプロトコルを扱うために構成されたスイッチの使用のために)イーサネット以外の別の物理媒体オプションを使用する。RDMAを有効にするサーバ間接続の例には、(イーサネットユーザーデータグラムプロトコル(UDP)を使用する)インフィニバンド、RoCE、及び(TCP/IPを使用する)iWARPを含むが、これらに限定されない。
図1Bは、処理回路115がメモリモジュール135を介してネットワークインターフェース回路125に接続されている、図1Aと同様のシステムを示す。メモリモジュール135及びネットワークインターフェース回路125は、拡張ソケットアダプタ140にある。各拡張ソケットアダプタ140は、サーバ105のマザーボード上の拡張ソケット145、例えば、M.2コネクタに差し込む。従って、サーバは、拡張ソケット145に拡張ソケットアダプタ140を設置することによって変更された、任意の適切な(例えば、業界標準の)サーバである。このような実施形態において、(i)各ネットワークインターフェース回路125は、メモリモジュール135の各々一つに統合されるか、又は(ii)各ネットワークインターフェース回路125は、PCIeインターフェースを有する(ネットワークインタフェーイス回路125は、PCIeエンドポイント(すなわち、PCIeスレーブデバイス)である)。これにより、(PCIeマスターデバイス、又は「ループポート」として動作する)ネットワークインターフェース回路125に接続されている処理回路115は、ループポート対エンドポイントPCIe接続を介してネットワークインターフェース回路125と通信し、メモリモジュール135のコントローラ137は、ピアツーピアPCIe接続を介してネットワークインターフェース回路125と通信する。
本発明の実施形態によると、内蔵プログラム処理回路と、第1のネットワークインターフェース回路と、第1のメモリモジュールと、を有する第1のサーバを含むシステムが提供され、前記第1のメモリモジュールは、第1のメモリダイと、コントローラと、を含み、コントローラは、メモリインターフェースを介して第1のメモリダイに、キャッシュコヒーレントインターフェースを介して内蔵プログラム処理回路に、及び第1のネットワークインターフェース回路に接続される。一実施形態において、第1のメモリモジュールは第2のメモリダイをさらに含み、第1のメモリダイは揮発性メモリを含み、第2のメモリダイは永続メモリを含む。一実施形態において、永続メモリは、NANDフラッシュを含む。一実施形態において、コントローラは、永続メモリのためのフラッシュ変換層を提供するように構成される。一実施形態において、キャッシュコヒーレントインターフェースは、コンピュートエクスプレスリンク(Compute Express Link:CXL)インターフェースを含む。一実施形態において、第1のサーバは、第1のサーバの拡張ソケットに接続された拡張ソケットアダプタを含み、拡張ソケットアダプタは、第1のメモリモジュールと、第1のネットワークインターフェース回路と、を含む。一実施形態において、第1のメモリモジュールのコントローラは、拡張ソケットを介して内蔵プログラム処理回路に接続される。一実施形態において、拡張ソケットはM.2ソケットを含む。一実施形態において、第1のメモリモジュールのコントローラは、ピアツーピアPCIe接続によって第1のネットワークインターフェース回路に接続される。一実施形態において、システムは、第2のサーバと、第1のサーバ及び第2のサーバに接続されたネットワークスイッチとをさらに含む。一実施形態において、ネットワークスイッチは、ToRイーサネットスイッチを含む。一実施形態において、第1のメモリモジュールのコントローラは、ネットワークスイッチ及び第1のネットワークインターフェース回路を介してストレート(straight)RDMA要求を受信し、ネットワークスイッチ及び第1のネットワークインターフェース回路を介してストレートRDMA応答を送信するように構成される。一実施形態において、第1のメモリモジュールのコントローラは、ネットワークスイッチ及び第1のネットワークインターフェイス回路を介してストレートRDMA要求を受信し、ネットワークスイッチ及び第1のネットワークを介してストレートRDMA応答を送信するように構成される。一実施形態において、第1のメモリモジュールのコントローラは、第2のサーバからデータを受信し、データを第1のメモリモジュールに格納し、キャッシュラインを無効化するためのコマンドを内蔵プログラム処理回路に送信する。一実施形態において、第1のメモリモジュールのコントローラは、FPGA又はASICを含む。本発明の一実施形態によると、コンピューティングシステムにおいてリモートダイレクトメモリアクセスを実行する方法が提供され、コンピューティングシステムは、第1のサーバ及び第2のサーバを含み、第1のサーバは、内蔵プログラム処理回路と、ネットワークインターフェース回路と、コントローラを有する第1のメモリモジュールと、を含み、前記方法は、第1のメモリモジュールのコントローラによってストレートRDMA要求を受信する段階と、第1のメモリモジュールのコントローラによってストレートRDMA応答を送信する段階と、を含む。一実施形態において、コンピューティングシステムは、第1のサーバ及び第2のサーバに接続されたイーサネットスイッチをさらに含み、ストレートRDMA要求の受信は、イーサネットスイッチを介するストレートRDMA要求の受信を含む。一実施形態において、前記方法は、第1のメモリモジュールのコントローラによって、内蔵プログラム処理回路から第1のメモリアドレスに対する読み取りコマンドを受信する段階と、第1のメモリモジュールのコントローラによって第1のメモリアドレスを第2のメモリアドレスに変換する段階と、第1のメモリモジュールのコントローラによって、第2のメモリアドレスにある第1のメモリモジュールからのデータを検索する段階と、をさらに含む。一実施形態において、前記方法は、第1のメモリモジュールのコントローラによってデータを受信する段階と、第1のメモリモジュールのコントローラによって第1のメモリモジュールにデータを格納する段階と、第1のメモリのコントローラによって内蔵プログラム処理回路へのキャッシュラインを無効化するためのコマンドを送信する段階と、をさらに含む。本発明の一実施形態によると、内蔵プログラム処理回路と、第1のネットワークインターフェース回路と、第1のメモリモジュールと、を有する第1のサーバを含むシステムが提供され、第1のメモリモジュールは、第1のメモリダイ、及びコントローラ手段を含み、コントローラ手段は、メモリインターフェースを介して第1のメモリダイに接続され、キャッシュコヒーレントインターフェースを介して内蔵プログラム処理回路に接続され、第1のネットワークインターフェース回路に接続される。
図1Cに示すように、一実施形態において、サーバシステムは、ToRイーサネットスイッチ110によって共に接続された複数のサーバ105を含む。それぞれのサーバは、一つ以上の処理回路115を含み、(i)システムメモリ120(例えば、DDR4メモリ)、(ii)一つ以上のネットワークインターフェース回路125、及び(iii)強化機能CXLスイッチ130に接続される。強化機能CXLスイッチ130は、複数のメモリモジュール135に接続される。すなわち、図1Cのシステムは、内蔵プログラム処理回路115と、ネットワークインターフェース回路125と、キャッシュコヒーレントスイッチ130と、第1のメモリモジュール135と、を有する第1のサーバ105を含む。図1Cのシステムにおいて、第1のメモリモジュール135は、(強化機能CXLスイッチである)キャッシュコヒーレントスイッチ130に接続され、キャッシュコヒーレントスイッチ130は、ネットワークインターフェース回路125に接続され、内蔵プログラム処理回路115は、キャッシュコヒーレントスイッチ130に接続される。
メモリモジュール135は、タイプ(type)、フォームファクタ(form factor)又は技術タイプ(例えば、DDR4、DRAM、LPDDR、HBM、NANDフラッシュ、又はその他の永続ストレージ(例えば、NANDフラッシュ))によってグループ化される。それぞれのメモリモジュールは、CXLインターフェースを有し、メモリモジュール135内のメモリに適合する信号とCXLパケットとの間を変換するためのインターフェース回路を含む。一実施形態において、このようなインターフェース回路は、代わりに、強化機能CXLスイッチ130内にあり、それぞれのメモリモジュール135は、メモリモジュール135内のメモリの固有のインターフェースであるインターフェースを有する。一実施形態において、強化機能CXLスイッチ130は、メモリモジュール135に統合される(例えば、メモリモジュール135の他の構成要素と共にM.2フォームファクタパッケージに統合されるか、又は単一の集積回路に統合される)。
ToRイーサネットスイッチ110は、異なるサーバの集合メモリデバイス間のRDMA要求を容易にするためのインターフェースハードウェアを含む。強化機能CXLスイッチ130は、(i)ワークロードに基づいてデータを異なるメモリタイプにルーティングし、(ii)ホストアドレスをデバイスアドレスに仮想化し、及び/又は(iii)処理回路115をバイパスして、異なるサーバ間のRDMA要求を容易にするために、一つ以上の回路(例えば、FPGA又はASICを含む)を含む。
メモリモジュール135は、拡張ボックス(例えば、エンクロージャのマザーボードを収容するエンクロージャと同じラック)にあり、これはあらかじめ決定された数(例えば、20以上、又は100以上)のメモリモジュール135を含み、メモリモジュール135のそれぞれは、適切なコネクタに接続される。モジュールはM.2フォームファクタ内にあり、コネクタはM.2コネクタである。一実施形態において、サーバ間の接続は、イーサネット以外の異なるネットワークを介して行われ、例えば、Wi−Fi(登録商標)又は5G接続などの無線接続である。各処理回路は、x86プロセッサ又は別のプロセッサ、例えば、ARMプロセッサ又はGPUである。CXLリンク(link)がインスタンス化されるPCIeリンクは、PCIe5.0又は別のバージョン(例えば、以前のバージョン又はそれ以降の(例えば、将来の)バージョン(例えば、PCIe6.0))である。一実施形態において、異なるキャッシュコヒーレントプロトコルは、CXLの代わりに、又はCXLに加えて、システムで使用され、異なるキャッシュコヒーレントスイッチは、強化機能CXLスイッチ130の代わりに、又はそれに加えて使用される。このようなキャッシュコヒーレントプロトコルは、別の標準プロトコル又は(CXLがPCIe5.0の変形的な方法と同様の方法で)標準プロトコルのキャッシュコヒーレントの変形である。標準プロトコルの例には、不揮発性デュアルインラインメモリモジュール(バージョンP)(NVDIMM−P)、アクセラレータ用キャッシュコヒーレントインターコネクト(CCIX)、及びオープンコヒーレントアクセラレータプロセッサインターフェース(OpenCAPI)が含まれるが、これに限定されない。
システムメモリ120は、例えば、DDR4メモリ、DRAM、HBM、又はLPDDRメモリを含む。メモリモジュール135は、分割されるか、又は多数のメモリタイプを処理するためのキャッシュコントローラを含む。メモリモジュール135は、異なるフォームファクタにあり、その例としては、HHHL、FHHL、M.2、U.2、メザニン(mezzanine)カード、ドーター(daughter)カード、E1.S、E1.L、E3.L、及びE3.Sを含むが、これに限定されない。
一実施形態において、システムは、それぞれのサーバが多数のCXL接続メモリモジュール135に集合する多数のサーバを含む集合構造を実装する。それぞれのメモリモジュール135は、複数の処理回路115にメモリデバイスとして別々に露出する多数のパーティションを含む。強化機能CXLスイッチ130のそれぞれの入力ポートは、強化機能CXLスイッチ130、及びこれに接続されたメモリモジュール135の多数の出力ポートに独立してアクセスする。本明細書で使用するように、強化機能CXLスイッチ130の「入力ポート」又は「アップストリームポート」は、PCIeループポートに接続された(又は接続に適した)ポートであり、強化機能CXLスイッチ130の「出力ポート」又は「ダウンストリームポート」は、PCIeエンドポイントに接続された(又は接続に適した)ポートである。図1Aの実施形態の場合のように、それぞれのメモリモジュール135は、メモリ範囲としてホストBIOSにベースアドレスレジスタ(BAR)の集合を露出する。メモリモジュール135のうちの一つ以上は、ホストOSマップの後ろにあるメモリ空間を透明に管理するためのファームウェアを含む。
一実施形態において、前述のように、強化機能CXLスイッチ130は、FPGA(又はASIC)のコントローラ137を含み、CXLパケットのスイッチング以上のさらなる機能を提供する。例えば、(前述のように)強化機能CXLスイッチ130は、メモリモジュール135を仮想化する。すなわち、変換層として動作し、処理回路側アドレス(又は「プロセッサ側」アドレス、すなわち、処理回路115によって発生したメモリ読み取り及び書き込みコマンドに含まれるアドレス)とメモリ側アドレス(すなわち、強化機能CXLスイッチ130によって使用されたアドレスをメモリモジュール135内のアドレス格納位置に)との間を変換し、それにより、メモリモジュール135の物理アドレスをマスキングし、メモリの仮想集合を提示する。強化機能CXLスイッチ130のコントローラ137はまた、メモリモジュール135のための管理デバイスとして動作し、ホスト制御プレーン処理を容易にする。コントローラ137は、処理回路115の関与なしにデータを透明に移動し、それに応じてメモリマップ(又は「アドレス変換テーブル」)を更新して、後続のアクセスを期待どおりに機能させる。コントローラ137は、(i)ランタイムの間アップストリーム接続及びダウンストリーム接続を適切にバインド及びアンバインドし、(ii)メモリモジュール135の内部及び外部へのデータ転送に関する豊富な制御セマンティック及び統計を可能にするスイッチ管理デバイスを含む。コントローラ137は、他のサーバ105又は他のネットワーク機器に接続するための(ホストへの接続に使用されるネットワークインターフェイスに加えて)追加の「バックドア」100GbE又は他のネットワークインターフェース回路125を含む。一実施形態において、コントローラ137は、タイプ2のデバイスとして処理回路115に提供し、これはリモート書き込み要求を受信した場合、処理回路115のキャッシュ無効化命令の発生を可能にする。一実施形態において、DDIO技術が有効となり、リモートデータは、まず処理回路115の最後のレベルのキャッシュ(LLC)にプールされ、その後(キャッシュから)メモリモジュール135に書き込まれる。
前述のように、一つ以上のメモリモジュール135は、永続ストレージを含む。メモリモジュール135が永続デバイスとして存在する場合、強化機能CXLスイッチ130のコントローラ137は、永続ストレージを要求することにより、処理回路115によって永続ドメインを管理する(例えば、対応するオペレーティングシステム機能の使用によって、識別されたデータを永続ストレージに格納する)。このような実施形態において、ソフトウェアAPIは、キャッシュ及びデータを永続ストレージにフラッシュ(flush)する。
一実施形態において、メモリモジュール135へのダイレクトメモリ転送は、強化機能CXLスイッチ130のコントローラ137によって実行されるメモリモジュール135のコントローラによって実行される動作を有し、図1A及び図1Bの実施形態に関する説明と同様の方法で実行することができる。
前述のように、一実施形態において、メモリモジュール135は、グループ、例えば、メモリを集約的な一つのグループ、HBMが重い別のグループ、制限された密度及び性能を有する別のグループ、並びに密度の高い異なるグループから構成される。このようなグループは、異なるフォームファクタを有するか、又は異なる技術に基づく。強化機能CXLスイッチ130のコントローラ137は、例えば、ワークロード、タグ付け、又はサービス品質(QoS)に基づいて、インテリジェントにデータ及びコマンドをルーティングする。読み取り要求の場合、このようなファクタに基づくルーティングがないことがある。
強化機能CXLスイッチ130のコントローラ137はまた、前述のように、処理回路側アドレス及びメモリ側アドレスを仮想化して、強化機能CXLスイッチ130のコントローラ137のデータがどこに格納されるかを判断することを可能にする。強化機能CXLスイッチ130のコントローラ137は、情報又は命令に基づいてこのような判断を可能にし、処理回路115から受信する。例えば、オペレーティングシステムは、アプリケーションの低いレイテンシーストレージ、高帯域幅ストレージ、又は永続ストレージが割り当てられることを特定できるようにするメモリ割り当て機能を提供し、アプリケーションによって開始されるこのような要求は、メモリを割り当てる位置(メモリモジュール135のいずれか)を判断する際に、強化機能CXLスイッチ130のコントローラ137によって考慮される。例えば、高帯域幅がアプリケーションによって要求されるストレージは、HBMを含むメモリモジュール135に割り当てられ、アプリケーションによってデータの永続性が要求されるストレージは、NANDフラッシュを含むメモリモジュール135に割り当てられ、(アプリケーションによって要求されない)他のストレージは、比較的安価なDRAMを含むメモリモジュール135に格納される。一実施形態において、強化機能CXLスイッチ130のコントローラ137は、ネットワークの利用パターンに基づいて、特定のデータを格納する位置に関する判断を行う。例えば、強化機能CXLスイッチ130のコントローラ137は、物理アドレスの特定の範囲内のデータが他のデータよりも頻繁にアクセスされる利用パターンを監視することによって判断し、強化機能CXLスイッチ130のコントローラ137は、HBMを含むメモリモジュール135にこれらのデータをコピーし、新たな位置内のデータが同じ範囲の仮想アドレスに格納されるように、アドレス変換テーブルを変更する。一実施形態において、一つ以上のメモリモジュール135は、フラッシュメモリ(例えば、NANDフラッシュ)を含み、強化機能CXLスイッチ130のコントローラ137は、このフラッシュメモリのためのフラッシュ変換層を実装する。フラッシュ変換層は、(データを異なる位置に移動し、データの以前の位置を無効にすることにより)プロセッサ側メモリの位置の上書きをサポートし、ガーベジコレクション(例えば、無効と表示されたブロック内のデータの一部が閾値を超えた場合、別のブロックに移動した後、ブロック内の任意の有効なデータを削除すること)を実行する。
一実施形態において、強化機能CXLスイッチ130のコントローラ137は、物理的機能(PF)の転送に対するPFを容易にする。例えば、処理回路115の内の一つが一つの物理アドレスから別の物理アドレスにデータを移動する必要がある場合(同じ仮想アドレスを有し、この事実は処理回路115の動作に影響を与える必要がない)、又は処理回路115が必要とする場合(処理回路115が有する必要がある)2つの仮想アドレス間でデータを移動するために、強化機能CXLスイッチ130のコントローラ137は、処理回路115が関与することなく転送を監視できる。例えば、処理回路115は、CXL要求を送信し、データは処理回路115に行かず、強化機能CXLスイッチ130の後で一つのメモリモジュール135から別のメモリモジュール135に送信される(例えば、データは、一つのメモリモジュール135から別のメモリモジュール135にコピーされる)。この状況では、処理回路115がCXL要求を開始したため、処理回路115は、一貫性を確保するためにキャッシュをフラッシュする必要がある。代わりに、タイプ2のメモリデバイス(例えば、メモリモジュール135の内の一つか、又はCXLスイッチにも接続されるアクセラレータ)がCXL要求を開始し、スイッチが仮想化されていない場合、タイプ2のメモリデバイスは、メッセージを処理回路115に送信してキャッシュを無効にする。
一実施形態において、強化機能CXLスイッチ130のコントローラ137は、サーバ間のRDMA要求を容易にする。リモートサーバ105は、このようなRDMA要求を開始し、RDMA要求はToRイーサネットスイッチ110を介して送信され、RDMA要求に応答するサーバ105(「ローカルサーバ」)の強化機能CXLスイッチ130に到達する。強化機能CXLスイッチ130は、このようなRDMA要求を受信するように構成され、受信サーバ105(すなわち、RDMA要求を受信するサーバ)内のメモリモジュール135のグループを自身のメモリ空間として取り扱う。ローカルサーバにおいて、強化機能CXLスイッチ130は、RDMA要求を直接RDMA要求(すなわち、ローカルサーバの処理回路115を介してルーティングされないRDMA要求)として受信し、RDMA要求に対する直接応答を送信する(すなわち、ローカルサーバの処理回路115を介してルーティングされることなく応答を送信する)。リモートサーバにおいて、応答(例えば、ローカルサーバによって送信されたデータ)は、リモートサーバの強化機能CXLスイッチ130によって受信され、リモートサーバの処理回路115を介してルーティングされることなく、リモートサーバのメモリモジュール135に格納される。
図1Dは、図1Cと同様のシステムを示し、処理回路115は、強化機能CXLスイッチ130を介してネットワークインターフェース回路125に接続される。強化機能CXLスイッチ130、メモリモジュール135、及びネットワークインターフェース回路125は、拡張ソケットアダプタ140にある。拡張ソケットアダプタ140は、サーバ105のマザーボード上の拡張ソケット、例えば、PCIeコネクタ145に差し込む回路基板又はモジュールである。従って、サーバは、PCIeコネクタ145に拡張ソケットアダプタ140を設置することによってのみ変更される任意の適切なサーバであり得る。メモリモジュール135は、拡張ソケットアダプタ140のコネクタ(例えば、M.2コネクタ)に設置される。このような実施形態において、(i)ネットワークインターフェース回路125は、強化機能CXLスイッチ130に統合されるか、又は(ii)各ネットワークインターフェース回路125がPCIeインターフェース(ネットワークインターフェース回路125は、PCIeエンドポイントである)を有するので、ネットワークインターフェース回路125に接続された処理回路115は、ルートポート対エンドポイントPCIe接続を介してネットワークインターフェース回路125と通信する。(処理回路115及びネットワークインターフェース回路125に接続されたPCIe入力ポートを有する)強化機能CXLスイッチ130のコントローラ137は、ピアツーピアPCIe接続を介してネットワークインターフェース回路125と通信する。
本発明の実施形態によると、内蔵プログラム処理回路と、ネットワークインターフェース回路と、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を有する第1のサーバを含み、第1のメモリモジュールはキャッシュコヒーレントスイッチに接続され、キャッシュコヒーレントスイッチはネットワークインターフェース回路に接続され、内蔵プログラム処理回路はキャッシュコヒーレントスイッチに接続される。一実施形態において、システムは、キャッシュコヒーレントスイッチに接続された第2のメモリモジュールをさらに含み、第1のメモリモジュールは揮発性メモリを含み、第2のメモリモジュールは永続メモリを含む。一実施形態において、キャッシュコヒーレントスイッチは、第1のメモリモジュール及び第2のメモリモジュールを仮想化するように構成される。一実施形態において、第1のメモリモジュールはフラッシュメモリを含み、キャッシュコヒーレントスイッチは、フラッシュメモリに対するフラッシュ変換層を提供するように構成される。一実施形態において、キャッシュコヒーレントスイッチは、第1のメモリモジュールで第1のメモリ位置のアクセス頻度を監視し、アクセス頻度が第1の閾値を超えているかを判断し、第1のメモリ位置のコンテンツを第2のメモリモジュール内にある第2のメモリ位置にコピーする。一実施形態において、第2のメモリモジュールはHBMを含む。一実施形態において、キャッシュコヒーレントスイッチは、プロセッサ側アドレスをメモリ側アドレスにマッピングするためのテーブルを維持する。一実施形態において、システムは、第2のサーバと、第1のサーバ及び第2のサーバに接続されたネットワークスイッチとをさらに含む。一実施形態において、ネットワークスイッチは、ToRイーサネットスイッチを含む。一実施形態において、キャッシュコヒーレントスイッチは、ストレートRDMA要求を受信し、ストレートRDMA応答を送信するように構成される。一実施形態において、キャッシュコヒーレントスイッチは、ToRイーサネットスイッチ及びネットワークインターフェイス回路を介してリモートRDMA要求を受信し、ToRイーサネットスイッチ及びネットワークインターフェイス回路を介してストレートRDMA応答を送信するように構成される。一実施形態において、キャッシュコヒーレントスイッチは、CXLプロトコルをサポートするように構成される。一実施形態において、第1のサーバは、第1のサーバの拡張ソケットに接続された拡張ソケットアダプタを含み、拡張ソケットアダプタは、キャッシュコヒーレントスイッチ、及びメモリモジュールソケットを含み、第1のメモリモジュールは、メモリモジュールソケットを介してキャッシュコヒーレントスイッチに接続される。一実施形態において、メモリモジュールソケットはM.2ソケットを含む。一実施形態において、ネットワークインターフェース回路は、拡張ソケットアダプタ上にある。本発明の一実施形態によると、コンピューティングシステムにおいてリモートダイレクトメモリアクセスを実行する方法が提供され、コンピューティングシステムは、第1のサーバ及び第2のサーバを含み、第1のサーバは、内蔵プログラム処理回路と、ネットワークインターフェース回路と、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を有し、前記方法は、キャッシュコヒーレントスイッチによってストレートRDMA要求を受信する段階と、キャッシュコヒーレントスイッチによってストレートRDMA応答を送信する段階と、を含む。一実施形態において、コンピューティングシステムはイーサネットスイッチをさらに含み、ストレートRDMA要求の受信は、イーサネットスイッチを介するストレートRDMA要求の受信を含む。一実施形態において、前記方法は、キャッシュコヒーレントスイッチによって、内蔵プログラム処理回路から第1のメモリアドレスに対する読み取りコマンドを受信する段階と、キャッシュコヒーレントスイッチによって第1のメモリアドレスを第2のメモリアドレスに変換する段階と、キャッシュコヒーレントスイッチによって、第2のメモリアドレスで第1のメモリモジュールからのデータを検索する段階と、をさらに含む。一実施形態において、前記方法は、キャッシュコヒーレントスイッチによってデータを受信する段階と、キャッシュコヒーレントスイッチによって第1のメモリモジュールにデータを格納する段階と、キャッシュコヒーレントスイッチによって内蔵プログラム処理回路へのキャッシュラインを無効化するためのコマンドを送信する段階と、をさらに含む。本発明の実施形態によると、内蔵プログラム処理回路と、ネットワークインターフェース回路と、キャッシュコヒーレントスイッチング手段と、第1のメモリモジュールと、を有する第1のサーバを含むシステムが提供され、第1のメモリモジュールは、キャッシュコヒーレントスイッチング手段に接続され、キャッシュコヒーレントスイッチング手段は、ネットワークインターフェース回路に接続され、内蔵プログラム処理回路は、キャッシュコヒーレントスイッチング手段に接続される。
図1Eは、複数のサーバ105のそれぞれが、図示のように、PCIe機能を有するToR PCIe5 CXLスイッチであるサーバリンクスイッチ112に接続されている実施形態を示している。サーバリンクスイッチ112は、ToRサーバリンクスイッチと呼ばれる。サーバリンクスイッチ112は、FPGA又はASICを含み、イーサネットスイッチよりも(スループット及びレイテンシーの観点から)優れた性能を提供する。それぞれのサーバ105は、強化機能CXLスイッチ130及び複数のPCIeコネクタを介してサーバリンクスイッチ112に接続された複数のメモリモジュール135を含む。サーバ105のそれぞれはまた、図示のように、一つ以上の処理回路115と、システムメモリ120と、を含む。サーバリンクスイッチ112はマスターとして動作し、強化機能CXLスイッチ130のそれぞれは、以下でより詳細に説明するように、スレーブとして動作する。
図1Eの実施形態において、サーバリンクスイッチ112は、異なるサーバ105から受信した多数のキャッシュ要求をグループ化又は一括(batch)し、パケットをグループ化して制御オーバーヘッドを低減する。強化機能CXLスイッチ130は、(i)ワークロードに基づいて異なるメモリタイプにデータをルーティングし、(ii)プロセッサ側アドレスをメモリ側アドレスに仮想化し、及び(iii)処理回路115をバイパスして、異なるサーバ105間のコヒーレント要求を容易にするために、スレーブコントローラ(例えば、スレーブFPGA又はスレーブASIC)を含む。図1Eに示すシステムは、CXL2.0ベースであり、ラック内に分散共有メモリを含み、サーバリンクスイッチ112を使用してリモートノードに自然に接続する。
サーバリンクスイッチ112は、他のサーバ又はクライアントに接続するためのさらなるネットワーク接続(例えば、図示のイーサネット接続、又は別の種類の接続、例えば、Wi−Fi接続又は5G接続などの無線接続)を有する。サーバリンクスイッチ112及び強化機能CXLスイッチ130はそれぞれ、ARMプロセッサなどの処理回路であるか、又はこれを有するコントローラを含む。PCIeインターフェースは、PCIe5.0標準、又は以前のバージョン、若しくは将来のバージョンのPCIe標準に準拠するか、又は別の標準(例えば、NVDIMM−P、CCIX、又はOpenCAPI)に準拠するインターフェイスを、PCIeインターフェースの代わりに使用する。メモリモジュール135は、DDR4 DRAM、HBM、LPDDR、NANDフラッシュ、又はSSD(Soild State Drive)を含む様々なメモリタイプを含む。メモリモジュール135は、分割されるか、又は多数のメモリタイプを処理するためにキャッシュコントローラを含み、HHHL、FHHL、M.2、U.2、メザニンカード、ドーターカード、E1.S、E1.L、E3.L、又はE3.S.などの異なるフォームファクタである。
図1Eの実施形態において、強化機能CXLスイッチ130は、一対多及び多対一のスイッチングを可能にし、フリット(flit)(64バイト)レベルでの微粒子ロード−ストアインターフェースを可能にする。各サーバは、集合したメモリデバイスを有し、各デバイスは、それぞれのLD−IDを有する複数の論理デバイスに分割される。サーバリンクスイッチ112は一対多の機能を可能にし、サーバ105の強化機能CXLスイッチ130は多対一の機能を可能にする。サーバリンクスイッチ112は、PCIeスイッチ、CXLスイッチ、又はその両方である。このようなシステムにおいて、要求者は複数のサーバ105の処理回路115であり、回答者は多数の集合メモリモジュール135である。2つのスイッチ(前述のように、サーバリンクスイッチ112であるマスタースイッチ、及び強化機能CXLスイッチ130であるスレーブスイッチを有する)の層は、すべての通信を可能にする。各メモリモジュール135は、一つの物理的機能(PF)及び最大16の分離した論理デバイスを含む。一実施形態において、論理デバイスの数(例えば、パーティションの数)は(例えば、16に)制限し、(デバイスを制御するために使用される物理的機能である)一つの制御パーティションもまた存在する。それぞれのメモリモジュール135は、処理回路115が保持するキャッシュラインコピーを処理するために、cxl.cache、cxl.mem及びcxl.io、並びにアドレス変換サービス(ATS)の実装を備えたタイプ2のデバイスである。強化機能CXLスイッチ130及びファブリック(fabric)管理者は、メモリモジュール135の発見を制御し、(i)デバイスの発見、及び仮想CXLソフトウェアの作成を実行し、(ii)仮想ポートを物理ポートにバインドする。図1A〜図1Dの実施形態のように、ファブリック管理者は、SMBus側波帯を介する接続を介して動作する。インテリジェントプラットフォーム管理インターフェース(Intelligent Platform Management Interface:IPMI)又はRedfish標準に準拠する(そして、標準で要求されない追加機能を提供する場合もある)インターフェースであるメモリモジュール135へのインターフェースは、構成可能性(composability)を可能にする。
上記のように、一部の実施形態は、サーバリンクスイッチ112の一部であるマスターコントローラ(FPGA又はASICに実装される)、及び強化機能CXLスイッチ130の一部であるスレーブコントローラで階層構造を実装して、ロッド−ストアインターフェース(すなわち、キャッシュライン(例えば、64バイト)の単位を有し、ソフトウェアドライバの関与なしにコヒーレンスドメイン内で動作するインターフェイス)を提供する。このようなロッド−ストアインターフェースは、個々のサーバ、CPU、又はホストを超えてコヒーレンスドメインを拡張し、電気的又は光学的な物理媒体(例えば、両端での電気−光トランシーバの光接続)を含む。動作中に、(サーバリンクスイッチ112にある)マスターコントローラは、ラック上のすべてのサーバ105を起動(又は「再起動」)して構成する。マスターコントローラは、すべてのホストを可視化でき、(i)各サーバを発見し、サーバクラスタに存在するサーバ105及びメモリモジュール135の数を発見し、(ii)各サーバ105を独立して構成し、(iii)ラックの構成に基づいて、異なるサーバでメモリの一部ブロックを有効又は無効にし(例えば、メモリモジュール135の内のいずれかを有効又は無効にし)、(iv)アクセスを制御し(例えば、あるサーバが他のサーバを制御し)、(v)フロー制御を備え(例えば、すべてのホスト及びデバイス要求がマスターを通過するため、一つのサーバから別のサーバにデータを送信し、データに対してフロー制御を実行し)、(vi)要求又はパケット(例えば、マスターによって異なるサーバ105から受信した複数のキャッシュ要求)をグループ化又は一括し、(vii)リモートソフトウェアの更新、放送通信等を受信する。バッチ(batch)モードでは、サーバリンクスイッチ112は、同じサーバ宛ての(例えば、第1のサーバ宛ての)複数のパケットを受信し、これらを共に(すなわち、それらの間で止まることなく)第1のサーバに送信する。例えば、サーバリンクスイッチ112は、第2のサーバから第1のパケットを受信し、第3のサーバから第2のパケットを受信し、第1のパケット及び第2のパケットを共に第1のサーバに送信する。各サーバ105は、マスターコントローラに、(i)IPMIネットワークインターフェース、(ii)システムイベントログ(SEL)、及び(iii)ボード管理コントローラ(BMC)を露出して、マスターコントローラが即座に性能を測定し、信頼性を測定して、サーバ105を再構成することを可能にする。
一実施形態において、高可用性ロッド−ストアインターフェースを容易にするソフトウェア構造が使用される。このようなソフトウェア構造は、信頼性、複製、一貫性(consistency)、システムコヒーレンス(coherence)、ハッシュ(hashing)、キャッシング(caching)、及び持続性を提供する。ソフトウェア構造は、IPMIを介してCXLデバイス構成要素の周期的なハードウェアチェックを実行して(サーバの数が多いシステムで)信頼性を提供する。例えば、サーバリンクスイッチ112は、IPMIインターフェースを介して、メモリサーバ150の状態を照会し、例えば、電源状態(メモリサーバ150の電源が適切に動作しているか否か)、ネットワーク状態(サーバリンクスイッチ112へのインターフェースが適切に動作しているかどうか)、及びエラーチェック状態(エラー状態がメモリサーバ150のいずれかのサブシステムに存在するか否か)を照会する。ソフトウェア構造は、マスターコントローラがメモリモジュール135に格納されたデータを複製し、複製間でデータの一貫性を保つことができるという点で、複製を提供する。
ソフトウェア構造は、マスターコントローラが異なる一貫性レベルで構成されるという点で一貫性を提供し、サーバリンクスイッチ112は、維持する一貫性レベルに従ってパケットフォーマットを調整する。例えば、最終的な一貫性が維持されている場合、サーバリンクスイッチ112は、要求を並べ替える一方、厳密な一貫性を保つために、サーバリンクスイッチ112は、スイッチで正確なタイムスタンプを有するすべての要求のスコアボードを維持する。ソフトウェア構造は、多数の処理回路115が同じメモリアドレスから読み取るか、又は同じメモリアドレスへ書き込むことができるという点でシステムの一貫性を提供し、マスターコントローラは、一貫性を維持するために(ディレクトリルックアップを使用して)アドレスのホームノードに到達するか、又は共通バスで要求をブロードキャストする責任がある。
ソフトウェア構造は、サーバリンクスイッチ112及び強化機能CXLスイッチ130が、起動時にすべてのノードにまたがってすべてのCXLデバイスにデータを均等にマッピングするために(又は一つのサーバがダウン又は動作したときに調整するために)、複数のハッシュ関数と一貫するハッシュ化を使用するアドレスの仮想マッピングを維持するという点で、ハッシュ化を提供する。ソフトウェア構造は、マスターコントローラが(例えば、ライト−スルーキャッシュ又はライト−バックキャッシュを利用して)キャッシュとして動作するために(例えば、HBM又は同様の機能を備えた技術を含むメモリモジュール135で)特定のメモリパーティションを指定するという点で、キャッシュを提供する。ソフトウェア構造は、マスターコントローラとスレーブコントローラとが永続ドメイン及びフラッシュを管理するという点で持続性を提供する。
一実施形態において、CXLスイッチ130の機能は、メモリモジュール135のコントローラに統合される。このような実施形態において、サーバリンクスイッチ112は、それにもかかわらず、マスターとして動作し、本明細書の他の箇所で説明しているように、強化した機能を有する。サーバリンクスイッチ112はまた、システムの他のストレージデバイスを管理することができ、例えば、サーバリンクスイッチ112によって形成されたPCIeネットワークの一部ではないクライアントマシンに接続するためのイーサネット接続(例えば、100GbE接続)を有する。
一実施形態において、サーバリンクスイッチ112は、強化した機能を有し、かつ、統合されたCXLコントローラを含む。他の実施形態において、サーバリンクスイッチ112は、物理的なルーティングデバイスにすぎず、各サーバ105は、マスターCXLコントローラを含む。このような実施形態において、異なるサーバのマスターは、マスター−スレーブ構造を交渉する。(i)強化機能CXLスイッチ130、及び(ii)サーバリンクスイッチ112の知能機能は、一つ以上のFPGA、一つ以上のASIC、一つ以上のARMプロセッサ、又はコンピューティング機能を備えた一つ以上のSSDに実装される。サーバリンクスイッチ112は、例えば、独立した要求を並べ替えることにより、フロー制御を実行する。一実施形態において、インターフェースはロード−ストアであるので、RDMAはオプションであるが、(100GbEの代わりに)PCIe物理媒体を使用する介入RDMA要求が存在する。このような実施形態において、リモートホストは、サーバリンクスイッチ112を介して強化機能CXLスイッチ130に送信されるRDMA要求を開始する。サーバリンクスイッチ112及び強化機能CXLスイッチ130は、RDMA 4KB要求又はCXLのフリット(64バイト)要求を優先する。
図1C及び図1Dに示すように、強化機能CXLスイッチ130は、このようなRDMA要求を受信するように構成され、受信サーバ105(すなわち、RDMA要求を受信するサーバ)のメモリモジュール135のグループを自身のメモリスペースとして取り扱う。また、強化機能CXLスイッチ130は、処理回路115を介して仮想化し、リモート強化機能CXLスイッチ130に対するRDMA要求を開始して、処理回路115が関与することなく、サーバ105間でデータを前後に移動させる。
図1Fは、図1Eのシステムと同様のシステムを示す。ここで、処理回路115は、強化機能CXLスイッチ130を介してネットワークインターフェース回路125に接続される。図1Dの実施形態のように、図1Fにおいて、強化機能CXLスイッチ130、メモリモジュール135、及びネットワークインターフェース回路125は、拡張ソケットアダプタ140上にある。拡張ソケットアダプタ140は、サーバ105のマザーボード上の、例えば、PCIeコネクタ145などの拡張ソケットを差し込む回路基板又はモジュールである。従って、サーバは、PCIeコネクタ145に拡張ソケットアダプタ140を設置することによってのみ変更される、任意の適切なサーバである。メモリモジュール135は、拡張ソケットアダプタ140のコネクタ(例えば、M.2コネクタ)に設置される。このような実施形態において、(i)ネットワークインターフェース回路125は、強化機能CXLスイッチ130に統合されるか、(ii)それぞれのネットワークインターフェース回路125は、PCIeインターフェースを有し(ネットワークインタフェーイス回路125は、PCIeエンドポイントである)、これに接続された処理回路115は、ルートポート対エンドポイントPCIe接続を介してネットワークインターフェース回路125と通信し、(処理回路115及びネットワークインターフェース回路125に接続されたPCIe入力ポートを有する)強化機能CXLスイッチ130のコントローラ137は、ピアツーピアPCIe接続を介してネットワークインタフェーイス回路125と通信する。
本発明の一実施形態によると、内蔵プログラム処理回路と、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を有する第1のサーバと、第2のサーバと、第1のサーバ及び第2のサーバに接続されたサーバリンクスイッチと、を含み、第1のメモリモジュールはキャッシュコヒーレントスイッチに接続され、キャッシュコヒーレントスイッチはサーバリンクスイッチに接続され、内蔵プログラム処理回路はキャッシュコヒーレントスイッチに接続される。一実施形態において、サーバリンクスイッチはPCIeスイッチを含む。一実施形態において、サーバリンクスイッチはCXLスイッチを含む。一実施形態において、サーバリンクスイッチはToR CXLスイッチを含む。一実施形態において、サーバリンクスイッチは、第1のサーバを発見するように構成される。一実施形態において、サーバリンクスイッチは、第1のサーバを再起動させるように構成される。一実施形態において、サーバリンクスイッチは、キャッシュコヒーレントスイッチが第1のメモリモジュールを無効にするように構成される。一実施形態において、サーバリンクスイッチは、第2のサーバから第1のサーバにデータを送信し、データに対してフロー制御を実行するように構成される。一実施形態において、システムは、サーバリンクスイッチに接続された第3のサーバをさらに含み、サーバリンクスイッチは、第2のサーバから第1のパケットを受信し、第3のサーバから第2のパケットを受信し、第1のパケット及び第2のパケットを第1のサーバに送信する。一実施形態において、システムは、キャッシュコヒーレントスイッチに接続された第2のメモリモジュールをさらに含み、第1のメモリモジュールは揮発性メモリを含み、第2のメモリモジュールは永続メモリを含む。一実施形態において、キャッシュコヒーレントスイッチは、第1のメモリモジュール及び第2のメモリモジュールを仮想化するように構成される。一実施形態において、第1のメモリモジュールはフラッシュメモリを含み、キャッシュコヒーレントスイッチは、フラッシュメモリのためのフラッシュ変換層を提供するように構成される。一実施形態において、第1のサーバは、第1のサーバの拡張ソケットに接続された拡張ソケットアダプタを含み、拡張ソケットアダプタは、キャッシュコヒーレントスイッチと、メモリモジュールソケットと、を含み、第1のメモリモジュールは、メモリモジュールソケットを介してキャッシュコヒーレントスイッチに接続される。一実施形態において、メモリモジュールソケットは、M.2ソケットを含む。一実施形態において、キャッシュコヒーレントスイッチは、コネクタを介してサーバリンクスイッチに接続され、コネクタは、拡張ソケットアダプタ上にある。本発明の一実施形態によると、コンピューティングシステムにおいてリモートダイレクトメモリアクセスを実行する方法が提供され、コンピューティングシステムは、第1のサーバと、第2のサーバと、第3のサーバと、第1のサーバ、第2のサーバ、及び第3のサーバに接続されたサーバリンクスイッチと、を含み、第1のサーバは、内蔵プログラム処理回路と、キャッシュコアラントスイッチと、第1のメモリモジュールと、を含み、前記方法は、サーバリンクスイッチによって第2のサーバから第1のパケットを受信する段階と、サーバリンクスイッチによって第3のサーバから第2のパケットを受信する段階と、第1のサーバに第1のパケット及び第2のパケットを送信する段階と、を含む。一実施形態において、前記方法は、キャッシュコヒーレントスイッチによってストレートRDMA要求を受信する段階と、キャッシュコヒーレントスイッチによってストレートRDMA応答を送信する段階と、をさらに含む。一実施形態において、ストレートRDMA要求の受信は、サーバリンクスイッチを介するストレートRDMA要求の受信を含む。一実施形態において、前記方法は、キャッシュコヒーレントスイッチによって内蔵プログラム処理回路から第1のメモリアドレスに対する読み取りコマンドを受信する段階と、キャッシュコヒーレントスイッチによって第1のメモリアドレスを第2のメモリアドレスに変換する段階と、キャッシュコヒーレントスイッチによって第2のメモリアドレスで第1のメモリモジュールからのデータを検索する段階と、をさらに含む。本発明の一実施形態によると、内蔵プログラム処理回路と、キャッシュコヒーレントスイッチング手段と、第1のメモリモジュールと、を含む第1のサーバと、第2のサーバと、第1のサーバ及び第2のサーバに接続されたサーバリンクスイッチと、を含み、第1のメモリモジュールはキャッシュコヒーレントスイッチング手段に接続され、キャッシュコヒーレントスイッチング手段はサーバリンクスイッチに接続され、内蔵プログラム処理回路はキャッシュコヒーレントスイッチング手段に接続される。
図1Gは、図示のように、複数のメモリサーバ150のそれぞれが、PCIe5.0CXLスイッチであるサーバリンクスイッチ112に接続されている実施形態を示している。図1E及び図1Fの実施形態のように、サーバリンクスイッチ112は、FPGA又はASICを含み、イーサネットスイッチよりも(スループット及びレイテンシーの観点から)優れた性能を提供する。図1E及び図1Fの実施形態のように、メモリサーバ150は、複数のPCIeコネクタを介してサーバリンクスイッチ112に接続された複数のメモリモジュール135を含む。図1Gの実施形態において、処理回路115及びシステムメモリ120はなくてもよく、メモリサーバ150の主な目的は、コンピューティングリソースを有する他のサーバ105によって使用するためのメモリを提供することである。
図1Gに示すように、サーバリンクスイッチ112は、異なるメモリサーバ150から受信した多数のキャッシュ要求をグループ化又は一括し、パケットをグループ化して制御オーバーヘッドを減少する。強化機能CXLスイッチ130は、(i)ワークロードに基づいてデータを異なるメモリタイプにルーティングし、(ii)プロセッサ側アドレスを仮想化する(プロセッサ側アドレスをメモリ側アドレスに変換する)ための構成可能なハードウェア・ビルディング・ブロックを含む。図1Gに示すシステムは、CXL2.0ベースであり、ラック内に構成可能なディスアグリゲーテッド(disaggregated)共有メモリを含み、サーバリンクスイッチ112を使用してプールした(すなわち、集合した)メモリをリモートデバイスに提供する。
サーバリンクスイッチ112は、他のサーバ又はクライアントに接続するためのさらなるネットワーク接続(例えば、図示のイーサネット接続、又は別の種類の接続、例えば、Wi−Fi接続又は5G接続などの無線接続)を有する。サーバリンクスイッチ112及び強化機能CXLスイッチ130はそれぞれ、ARMプロセッサなどの処理回路であるか、又はこれを有するコントローラを含む。PCIeインターフェースは、PCIe5.0標準、又はPCIe標準の以前のバージョン、若しくは将来のバージョンに準拠するか、又は別の標準(例えば、NVDIMM−P、CCIX、又はOpenCAPI)をPCIeの代わりに使用する。メモリモジュール135は、DDR4 DRAM、HBM、LPDDR、NANDフラッシュ、及びSSD(Soild State Drive)を含む様々なメモリタイプを含む。メモリモジュール135は、分割されるか、又は多数のメモリタイプを処理するためにキャッシュコントローラを含み、HHHL、FHHL、M.2、U.2、メザニンカード、ドーターカード、E1.S、E1.L、E3.L、又はE3.S.などの異なるフォームファクタである。
図1Gの実施形態において、強化機能CXLスイッチ130は、一対多及び多対一のスイッチングを可能にし、フリット(64バイト)レベルでの微粒子ロッド−ストアインターフェースを可能にする。各メモリサーバ150は、集合したメモリデバイスを有し、各デバイスは、それぞれのLD−IDを有する複数の論理デバイスに分割される。強化機能CXLスイッチ130は、コントローラ137(例えば、ASIC又はFPGA)、及びデバイスの発見、列挙、分割、及び物理アドレスの範囲を提示するための回路(ASIC又はFPGAとは別か、又はその一部である)を含む。各メモリモジュール135は、一つの物理的機能(PF)及び最大16の分離した論理デバイスを有する。一実施形態において、論理デバイスの数(例えば、パーティションの数)は(例えば、16に)制限し、一つの制御パーティション(デバイスを制御するために使用される物理的機能である)もまた存在する。各メモリモジュール135は、処理回路115が保持するキャッシュラインコピーを処理するために、cxl.cache、cxl.mem及びcxl.io、並びにアドレス変換サービス(ATS)の実装を備えたタイプ2のデバイスである。
強化機能CXLスイッチ130及びファブリック管理者は、メモリモジュール135の発見を制御し、(i)デバイスの発見、及び仮想CXLソフトウェアの作成を実行し、(ii)仮想ポートを物理ポートにバインドする。図1A〜図1Dの実施形態のように、ファブリック管理者は、SMBus側波帯を介する接続を介して動作する。IPMI又はRedfish標準に準拠する(そして、標準で要求されない通加機能を提供する場合もある)インターフェースであるメモリモジュール135へのインターフェースは、構成可能性を可能にする。
図1Gの実施形態に対するビルディングブロックは、(前述のように)FPGA又はASICに実装され、メモリデバイス(例えば、メモリモジュール135)、SSD、アクセラレータ(GPU、NIC)、CXL及びPCIe5コネクタ、並びにファームウェアの集合が可能なようにスイッチングするCXLコントローラ137を含み、異種メモリ属性テーブル(HMAT)又は静的リソース・アフィニティ・テーブル(SRAT)などのオペレーティングシステムの高度な構成及び電源インターフェイス(ACPI)テーブルにデバイスの詳細を露出する。
一実施形態において、システムは構成可能性を提供する。システムは、ソフトウェアの構成に基づいて、オンライン及びオフラインのCXLデバイス、並びに他のアクセラレータに対する機能を提供し、アクセラレータ、メモリ、ストレージデバイスリソースをグループ化し、それらをラック内の各メモリサーバ150に割り当てる。システムは、物理アドレス空間を隠し、HBM及びSRAMなどのより高速なデバイスを使用して透明なキャッシュを提供する。
図1Gの実施形態において、強化機能CXLスイッチ130のコントローラ137は、(i)メモリモジュール135を管理し、(ii)NIC、SSD、GPU、DRAMなどの異種デバイスを統合及び制御し、(iii)パワーゲーティングによってメモリデバイスへのストレージの動的再構成を実行する。例えば、サーバリンクスイッチ112は、(強化機能CXLスイッチ130にメモリモジュール135に対する電源を無効にするように指示することによって)メモリモジュール135の一つに対する電源を無効(すなわち、電源の遮断、又は電源の減少)にする。強化機能CXLスイッチ130は、メモリモジュール135に対する電源を無効にするため、サーバリンクスイッチ112によって指示されると、メモリモジュール135に対する電源を無効にする。このような無効化は、電源を保存することができ、メモリサーバ150内の他のメモリモジュール135の性能(例えば、スループット及びレイテンシ)を改善する。各リモートのサーバ105は、交渉に基づいて、メモリモジュール135及びこれらの接続の異なる論理ビューを見る。強化機能CXLスイッチ130のコントローラ137は、各リモートサーバが割り当てられたリソース及び接続を維持するように状態を維持し、(構成可能なチャンクサイズを使用して)メモリ容量を節約するためにメモリの圧縮又は重複排除を実行する。図1Gのディスアグリゲーテッド・ラックは、それ自体のBMCを有する。また、IPMIネットワークインターフェース及びシステムイベントログ(SEL)をリモートデバイスに露出し、マスター(例えば、メモリサーバ150によって提供されるストレージを使用するリモートサーバ)が性能及び信頼性をその場で測定し、ディスアグリゲーテッド・ラックを再構成する。図1Eの実施形態について本明細書に記載のものと同様の方法で、図1Gのディスアグリゲーテッド・ラックは、信頼性、複製、一貫性、システムコヒーレンス、ハッシュ、キャッシング、及び持続性を提供し、例えば、コヒーレンスは、同じメモリアドレスからの読み取り又は同じメモリアドレスへの書き込みを行う複数のリモートサーバに提供され、各リモートサーバは異なる一貫性レベルで構成される。一実施形態において、サーバリンクスイッチは、第1のメモリサーバに格納されたデータと第2のメモリサーバに格納されたデータとの間の最終的な一貫性を維持する。サーバリンクスイッチ112は、異なるサーバ対ごとに異なる一貫性レベルを維持し、例えば、サーバリンクスイッチ112はまた、第1のメモリサーバに格納されたデータと第3のメモリサーバに格納されたデータとの間で厳密な一貫性、逐次一貫性、因果(causal)一貫性、又はプロセッサ一貫性である一貫性レベルを維持する。システムは、「ローカルバンド」(サーバリンクスイッチ112)及び「グローバルバンド」(ディスアグリゲーテッド・サーバ)のドメインにおける通信を使用する。書き込みは、他のサーバからの新たな読み取りで認識するように、「グローバルバンド」にフラッシュされる。強化機能CXLスイッチ130のコントローラ137は、永続ドメインを管理し、それぞれのリモートサーバに個別にフラッシュする。例えば、キャッシュコヒーレントスイッチは、メモリ(キャッシュで動作する揮発性メモリ)の第1の領域の充足度(fullness)を監視することができ、充足度のレベルが閾値を超えると、キャッシュコヒーレントスイッチがメモリの第1の領域からメモリの第2の領域にデータを移動する。メモリの第2の領域は、永続メモリ内にある。フロー制御は、リモートサーバ間で強化機能CXLスイッチ130のコントローラ137によって優先順位が設定されるという点で処理することができ、認知された異なるレイテンシ及び帯域幅を提供する。
本発明の実施形態によると、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を有する第1のメモリサーバと、第2のメモリサーバと、第1のメモリサーバ及び第2のメモリサーバに接続されたサーバリンクスイッチと、を含み、第1のメモリモジュールはキャッシュコヒーレントスイッチに接続され、キャッシュコヒーレントスイッチはサーバリンクスイッチに接続される。一実施形態において、サーバリンクスイッチは、第1のメモリモジュールへの電源を無効にするように構成される。一実施形態において、サーバリンクスイッチは、第1のメモリモジュールへの電源を無効にするように、キャッシュコヒーレントスイッチに指示することによって、第1のメモリモジュールへの電源を無効にするように構成され、キャッシュコヒーレントスイッチは、第1のメモリモジュールへの電源を無効にするようにサーバリンクスイッチによって指示されると、第1のメモリモジュールへの電源を無効にするように構成される。一実施形態において、キャッシュコヒーレントスイッチは、第1メモリモジュール内で重複排除を実行するように構成される。一実施形態において、キャッシュコヒーレントスイッチは、データを圧縮し、圧縮したデータを第1のメモリモジュールに格納するように構成される。一実施形態において、サーバリンクスイッチは、第1のメモリサーバの状態を照会するように構成される。一実施形態において、サーバリンクスイッチは、IPMIを介して第1のメモリサーバの状態を照会するように構成される。一実施形態において、状態の照会は、電源状態、ネットワーク状態、及びエラーチェック状態からなるグループから選択された状態を照会することを含む。一実施形態において、サーバリンクスイッチは、第1のメモリサーバに向かうキャッシュ要求を一括するように構成される。一実施形態において、システムは、サーバリンクスイッチに接続された第3のメモリサーバをさらに含み、サーバリンクスイッチは、第1のメモリサーバに格納されたデータと第3のメモリサーバに格納されたデータとの間で一貫性を維持するように構成され、一貫性レベルは、厳密な一貫性、逐次一貫性、因果一貫性及びプロセッサ一貫性からなるグループから選択される。一実施形態において、キャッシュコヒーレントスイッチは、メモリの第1の領域の充足度を監視し、メモリの第1の領域からメモリの第2の領域にデータを移動するように構成され、メモリの第1の領域は揮発性メモリ内にあり、メモリの第2の領域は永続メモリ内にある。一実施形態において、サーバリンクスイッチはPCIeスイッチを含む。一実施形態において、サーバリンクスイッチはCXLスイッチを含む。一実施形態において、サーバリンクスイッチは、ラック上部(ToR)CXLスイッチを含む。一実施形態において、サーバリンクスイッチは、第2のメモリサーバから第1のメモリサーバにデータを送信し、データに対してフロー制御を実行するように構成される。一実施形態において、システムは、サーバリンクスイッチに接続された第3のメモリサーバをさらに含み、サーバリンクスイッチは、第2のメモリサーバから第1のパケットを受信し、第3のメモリサーバから第2のパケットを受信し、第1のパケット及び第2のパケットを第1のメモリサーバに送信するように構成される。本発明の一実施形態によると、コンピューティングシステムにおいてRDMAを実行するための方法が提供され、コンピューティングシステムは、第1のメモリサーバと、第1のサーバと、第2のサーバと、第1のメモリサーバ、第1のサーバ及び第2のサーバに接続されるサーバリンクスイッチと、を含み、第1のメモリサーバは、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を含み、第1のサーバは内蔵プログラム処理回路を含み、第2のサーバは内蔵プログラム処理回路を含み、前記方法は、サーバリンクスイッチによって第1のサーバから第1のパケットを受信する段階と、サーバリンクスイッチによって第2のサーバから第2のパケットを受信する段階と、第1のパケット及び第2のパケットを第1のメモリサーバに送信する段階と、を含む。一実施形態において、前記方法は、キャッシュコヒーレントスイッチによってデータを圧縮する段階と、データを第1のメモリモジュールに格納する段階と、をさらに含む。一実施形態において、前記方法は、サーバリンクスイッチによって第1のメモリサーバの状態を照会する段階をさらに含む。本発明の一実施形態によると、キャッシュコヒーレントスイッチ及び第1のメモリモジュールを含む第1のメモリサーバと、第2のメモリサーバと、第1のメモリサーバ及び第2のメモリサーバに接続されるサーバリンクスイッチング手段と、を含み、第1のメモリモジュールはキャッシュコヒーレントスイッチに接続され、キャッシュコヒーレントスイッチはサーバリンクスイッチング手段に接続される。
図2A〜図2Dは、様々な実施形態のフローチャートである。これらのフローチャートの実施形態において、処理回路115はCPUであり、他の実施形態において、これらは他の処理回路(例えば、GPU)である。図2Aを参照すると、図1A及び図1Bの任意の実施形態のメモリモジュール135のコントローラ137、又は図1C〜図1Gの任意の実施形態の強化機能CXLスイッチ130が処理回路115を介して仮想化し、別のサーバ105の強化機能CXLスイッチ130でRDMA要求を開始して、(強化機能CXLスイッチ130のコントローラ137によって処理される仮想化と共に)いずれのサーバにも処理回路115を含むことなく、サーバ105間でデータを前後に移動する。例えば、S205において、メモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130は、さらなるリモートメモリ(例えば、CXLメモリ又は集合メモリ)に対するRDMA要求を生成する。S210において、メモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130は、処理回路115をバイパスして(RDMAインターフェースを有する)ToRイーサネットスイッチ110に要求を送信する。S215において、ToRイーサネットスイッチ110は、リモート処理回路115をバイパスして、リモート集合メモリへのRDMAアクセスを介して、メモリモジュール135のコントローラ137又はリモート強化機能CXLスイッチ130による処理のために、RDMA要求をリモートサーバ105にルーティングする。S220において、ToRイーサネットスイッチ110は、処理済みのデータを受信し、RDMAを介してローカル処理回路115をバイパスして、データをローカルメモリモジュール135又はローカル強化機能CXLスイッチ130にルーティングする。S222において、図1A及び図1Bの実施形態のメモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130は、RDMA応答を直接(例えば、処理回路115によって転送されることなく)受信する。
このような実施形態において、リモートメモリモジュール135のコントローラ137、又はリモートサーバ105の強化機能CXLスイッチ130は、ストレートRDMA要求を受信し、ストレートRDMA応答を送信するように構成される。本明細書で使用しているように、リモートメモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130が「ストレートRDMA要求」を受信する(又は、このような要求を「ストレートに」受信する)ことは、リモートサーバ105の処理回路115によって転送又は処理されることなく、リモートメモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130によって、このような要求を受信することを意味し、リモートメモリモジュール135のコントローラ137、又は強化機能CXLスイッチ130によって「ストレートRDMA応答」を送信する(又は、そのような要求を「ストレートに」送信)ことは、リモートサーバ105の処理回路115によって転送又は処理されることなく、そのような応答を送信することを意味する。
図2Bを参照すると、別の実施形態において、RDMAは、データ処理に関与するリモートサーバ105の処理回路115と共に実行される。例えば、S225において、処理回路115がイーサネットを介してデータ又はワークロード要求を送信する。S230において、ToRイーサネットスイッチ110が要求を受信し、これを複数のサーバ105の内の対応するサーバ105にルーティングする。S235において、要求がネットワークインターフェース回路125(例えば、100GbE対応のNIC)のポートを介してサーバ内で受信される。S240において、処理回路115(例えば、x86処理回路)がネットワークインターフェース回路125(例えば、PCIeコネクタ)からの要求を受信する。S245において、処理回路115がメモリ(図1A及び図1Bの実施形態では、集合メモリである)を共有するために、CXL2.0プロトコルを介してDDR及び追加メモリリソースを使用して(例えば、共に)要求を処理する。
図2Cを参照すると、図1E及び図1Fの実施形態において、RDMAは、リモートサーバ105の処理回路115が、データ処理に関与する状態で実行される。例えば、S225において、処理回路115は、イーサネット又はPCIeを介してデータ又はワークロード要求を送信する。S230において、ToR PCIe5 CXLスイッチ3.112(サーバリンクスイッチ)が要求を受信し、これを複数のサーバ105の内の対応するサーバ105にルーティングする。S235において、要求がPCIeコネクタ125のポートを介してサーバ内で受信される。S240において、処理回路115(例えば、x86処理回路)がネットワークインターフェース回路125(例えば、PCIeコネクタ)からの要求を受信する。S245において、処理回路115がメモリ(図1A及び図1Bの実施形態では、集合メモリである)を共有するためにCXL2.0プロトコルを介してDDR及び追加メモリリソースを使用して(例えば、共に)、要求を処理する。S250において、処理回路115が異なるサーバからメモリコンテンツ(例えば、DDR又は集合メモリのコンテンツ)にアクセスするための要件を識別する。S252において、処理回路115がCXLプロトコル(例えば、CXL1.1又はCXL2.0)を介して異なるサーバからメモリコンテンツ(例えば、DDR又は集合メモリのコンテンツ)に対する要求を送信する。S254において、要求がローカルPCIeコネクタを介してToR PCIe5スイッチ112に伝播され、次に要求をラック上の第2のサーバの第2のPCIeコネクタに送信する。S256において、第2の処理回路115(例えば、x86処理回路)が第2のPCIeコネクタからの要求を受信する。S258において、第2の処理回路115が集合メモリを共有するためにCXL2.0プロトコルを介して第2のDDR及び第2の追加メモリリソースを使用して、要求(例えば、メモリコンテンツの検索)を共に処理する。S260において、第2の処理回路(例えば、x86処理回路)が要求の結果をそれぞれのPCIeコネクタ及びToR PCIe5スイッチ112を介して、元の処理回路に再送信する。
図2Dを参照すると、図1Gの実施形態において、RDMAは、データ処理に関与するリモートサーバ105の処理回路115で実行される。例えば、S225において、処理回路115がイーサネットを介してデータ又はワークロード要求を送信する。S230において、ToR PCIe5 CXLスイッチ112(サーバリンクスイッチ)が要求を受信し、これを複数のサーバ105の内の対応するサーバ105にルーティングする。S235において、要求がネットワークインターフェース回路125(例えば、100GbE対応のNIC)のポートを介してサーバ内で受信される。S262において、メモリモジュール135がPCIeコネクタから要求を受信する。S264において、メモリモジュール135のコントローラ137がローカルメモリを使用して要求を処理する。S250において、メモリモジュール135のコントローラ137が異なるサーバからメモリコンテンツ(例えば、集合メモリのコンテンツ)にアクセスするための要件を識別する。S252において、メモリモジュール135のコントローラ137がCXLプロトコルを介して異なるサーバからメモリコンテンツ(例えば、集合メモリのコンテンツ)に対する要求を送信する。S254において、要求がローカルPCIeコネクタを介してToR PCIe5 CXLスイッチ112に伝播され、次に要求をラック上の第2のサーバの第2のPCIeコネクタに送信する。S266において、第2のPCIeコネクタがメモリモジュール135のコントローラ137がメモリコンテンツを検索できるように、集合メモリを共有するためにCXLプロトコルを介するアクセスを提供する。
本明細書で使用している「サーバ」は、少なくとも一つの内蔵プログラム処理回路(例えば、処理回路115)、少なくとも一つのメモリリソース(例えば、システムメモリ120)、及びネットワーク接続を提供するための少なくとも一つの回路(例えば、ネットワークインターフェース回路125)を含むコンピューティングシステムである。本明細書で使用する「一部」は、物の「少なくとも一部」を意味し、従って、物のすべて又はすべてよりも少ないことを意味する。従って、物の「一部」には、特別な場合として物全体を含み、つまり、物全体が物の一部であるという例である。
本明細書の背景セクションに提供する背景は、脈絡を設定するためにのみ含まれ、このセクションの内容は、従来技術と認められない。(例えば、ここに含まれる任意のシステム図において)記載されている任意の構成要素又は構成要素の任意の組み合わせは、ここに含まれる任意のフローチャートの動作の内一つ以上を実行するために使用する。また、(i)動作は例示的な動作であり、明示的に説明していない様々な追加段階を含み、(ii)動作の時間的順序は変更される。
用語「処理回路」又は「コントローラ手段」は、本明細書では、データ又はデジタル信号を処理するために使用するハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するために使用した。処理回路ハードウェアには、例えば、ASIC、汎用又は特殊目的のCPU、デジタル信号プロセッサ(DSP)、GPU及びFPGAなどのプログラム可能な論理装置が含まれる。本明細書で使用する処理回路において、それぞれの機能は、その機能を実行するように構成されたハードウェア、すなわちハードワイヤによって実行されるか、又はCPUのようなより一般的な目的のハードウェアによって実行され、非一時的な記憶媒体に格納された命令を実行するように構成される。処理回路は、単一の印刷回路基板(PCB)上に作製されるか、又は複数の相互接続されたPCBに分散される。処理回路は、他の処理回路を含み得る。例えば、処理回路は、PCB上で相互接続された2つの処理回路、FPGA、及びCPUを含み得る。
本明細書で使用している「コントローラ」は回路を含み、「制御回路」又は「コントローラ回路」と記載することもある。同様に、「メモリモジュール」は、「メモリモジュール回路」又は「メモリ回路」と記載することもある。本明細書で使用している用語「配列」は、格納方法(例えば、連続するメモリ位置に格納されるか、又はリンクリストに格納されるか)に関係なく、順序付けられた一連の数字を意味する。ここで二番目の数が最初の数の「Y%以内」である場合、二番目の数は最初の数の最小(1−Y/100)倍であり、二番目の数は最大(1+Y/100)×最初の数である。本明細書で使用する用語「又は」は、「及び/又は」と解釈すべきであり、例えば、「A又はB」は、「A」又は「B」、又は「A及びB」のいずれかを意味する。
本明細書で使用している方法(例えば、調整)又は第1の数量(例えば、第1の変数)が、第2の数量(例えば、第2の変数)に「基づく」と記載している場合、第2の数量は、方法に対する入力であるか、又は第1の数量に影響を与える。例えば、第2の数量は、第1の数量を計算する関数に対する入力(例えば、唯一の入力、又は複数の入力の内の一つ)であるか、あるいは第1の数量は第2の数量と同じであってもよく、又は第1の数量は、第2の数量と同じであってもよい(例えば、メモリ内の同じ位置に格納される)。
本明細書において、「第1」、「第2」、「第3」などの用語は、さまざまな要素、構成要素、領域、層及び/又はセクションを説明するために使用したが、これらの用語によって制限してはならない。これらの用語は、1つの要素、構成要素、領域、層又はセクションを他の要素、構成要素、領域、層又はセクションと区別するためにのみ使用した。従って、本明細書に記載の第1の要素、構成要素、領域、層又はセクションは、本発明の概念の思想や範囲を逸脱することなく、第2の要素、構成要素、領域、層又はセクションと指すことができる。
「下」を示す様々な空間的に相対的な用語は、一つの要素又は別の要素との特徴の関係を容易にするために使用した。そのような空間的に相対的な用語は、図に示す方向に加えて、使用中又は動作中のデバイスの他の方向を含むことを意図している。例えば、図のデバイスが裏返っている場合、他の要素又は機能の「下」として説明した要素は、他の要素又は機能の「上」に向けられる。従って、例示的な用語「下」は、上及び下の両方を含み得る。デバイスは、他の方向に配置されてもよく(例えば、90度回転又は他の方向に)、ここで使用した空間的に相対的な記述子は、それに応じて解釈すべきである。また、一層が2つの層の間にあると記載する場合、それは2つの層の間の唯一の層であるか、又は一つ以上の中間層が存在し得ることも理解されるであろう。
本明細書で使用した用語は、特定の実施形態を説明することのみを目的としており、本発明の概念を制限することを意図するものではない。本明細書で使用した「実質的に」、「約」、及びこれと同様の用語は、程度の用語ではなく、近似値の用語として使用し、当業者が認識する測定値又は計算値の固有の変動を説明することを意図している。本明細書で使用している単数形は、文脈上明らかに他のことを示さない限り、複数形も含むことを意図している。本明細書において、「含む」という用語は、開示する特徴、数字、段階、動作、要素、及び/又は構成要素の存在を明示するが、一つ以上の他の特徴、数字、段階、動作、要素、構成要素、及び/又はこれらのグループの存在又は追加を排除するものではない。本明細書で使用した用語「及び/又は」は、関連して挙げられた一つ以上の項目の任意且つ全ての組み合わせを含む。「少なくとも一つ」のような表現は、要素のリストに先行する場合、要素全体のリストを修正し、リストの個々の要素を修正しない。また、本発明の実施形態を説明する際に使用される「し得る」という用語は、「本発明の一つ以上の実施形態」を意味する。また、「例示的」という用語は、例又は例示を指すことを意図している。本明細書で使用した用語「使用する」は、「利用する」という用語と同義と見なす。
要素又は層が、別の要素又は層「(上)に」、「接続される」、「結合される」又は「隣接する」と記載した場合、それは直接接続されるか、一つ以上の他の中間要素又は層が存在する。対照的に、要素又は層が別の要素又は層の「すぐ上に」、「直接接続される」、「直接結合される」又は「隣接する」と記載した場合、間にある要素又は層は存在しない。
本明細書で引用する任意の数値範囲は、引用された範囲内に含まれる同じ数値精度のすべてのサブ範囲を含むことを意図している。例えば、「1.0から10.0まで」又は「1.0と10.0との間」の範囲は、引用された最小値1.0と記載されている最大値10.0との間、すなわち、1.0以上の最小値及び10.0以下の最大値、例えば、2.4〜7.6を含むすべてのサブ範囲を含むことを意図している。本明細書で引用する任意の最大の数値制限は、そこに含まれるすべてのより低い数値制限を含むことを意図しており、本明細書で引用する任意の最小の数値制限は、そこに含まれるすべてのより高い数値限定を含むことを意図している。
メモリリソースを管理するためのシステム及び方法の例示的な実施形態を、本明細書で具体的に説明及び示したが、多くの修正及び変形が当業者に明らかであろう。従って、本開示の原理に従って構成されたメモリリソースを管理するためのシステム及び方法は、本明細書に具体的に記載されている以外に具体化され得ることを理解すべきである。本発明はまた、特許請求の範囲、及びその同等物で定義される。
105 サーバ
110 ToRイーサネットスイッチ
112 サーバリンクスイッチ
115 処理回路
120 システムメモリ
125 ネットワークインターフェース回路
130 強化機能CXLスイッチ
135 メモリモジュール
137 コントローラ
140 拡張ソケットアダプタ
145 拡張ソケット(PCIeコネクタ)
150 メモリサーバ

Claims (20)

  1. キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を有する第1のメモリサーバと、
    第2のメモリサーバと、
    前記第1のメモリサーバ及び前記第2のメモリサーバに接続されるサーバリンクスイッチと、を含み、
    前記第1のメモリモジュールは、前記キャッシュコヒーレントスイッチに接続され、
    前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチに接続される、ことを特徴とするシステム。
  2. 前記サーバリンクスイッチは、前記第1のメモリモジュールへの電源を無効にできる、ことを特徴とする請求項1に記載のシステム。
  3. 前記サーバリンクスイッチは、前記第1のメモリモジュールへの電源を無効にするように前記キャッシュコヒーレントスイッチに指示することによって、前記第1のメモリモジュールへの電源を無効にし、
    前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチによって前記第1のメモリモジュールへの電源を無効にするように指示されると、前記第1のメモリモジュールへの電源を無効にする、ことを特徴とする請求項2に記載のシステム。
  4. 前記キャッシュコヒーレントスイッチは、前記第1のメモリモジュール内でメモリの重複排除を実行する、ことを特徴とする請求項1に記載のシステム。
  5. 前記キャッシュコヒーレントスイッチは、データを圧縮し、前記第1のメモリモジュール内に圧縮したデータを格納する、ことを特徴とする請求項1に記載のシステム。
  6. 前記サーバリンクスイッチは、前記第1のメモリモジュールの状態を照会する、ことを特徴とする請求項1に記載のシステム。
  7. 前記サーバリンクスイッチは、インテリジェントプラットホーム管理インターフェース(IPMI)を介して前記第1のメモリモジュールの状態を照会する、ことを特徴とする請求項1に記載のシステム。
  8. 前記状態を照会することは、
    電源状態、ネットワーク状態、及びエラーチェック状態からなるグループから選択された一つの状態を照会することを含む、ことを特徴とする請求項7に記載のシステム。
  9. 前記サーバリンクスイッチは、前記第1のメモリサーバに指示されたキャッシュ要求を一括する、ことを特徴とする請求項1に記載のシステム。
  10. 前記システムは、
    前記サーバリンクスイッチに接続された第3のメモリサーバをさらに含み、
    前記サーバリンクスイッチは、前記第1のメモリサーバに格納されたデータと前記第3のメモリサーバに格納されたデータとの間で厳密な一貫性、逐次一貫性、因果一貫性、及びプロセッサ一貫性からなるグループから選択された一貫性レベルを維持する、ことを特徴とする請求項1に記載のシステム。
  11. 前記キャッシュコヒーレントスイッチは、
    メモリの第1の領域の充足度を監視し、
    前記メモリの前記第1の領域から前記メモリの第2の領域にデータを移動し、
    前記メモリの前記第1の領域は、揮発性メモリ内にあり、
    前記メモリの前記第2の領域は、永続メモリ内にある、ことを特徴とする請求項1に記載のシステム。
  12. 前記サーバリンクスイッチは、PCIeスイッチを含む、ことを特徴とする請求項1に記載のシステム。
  13. 前記サーバリンクスイッチは、CXLスイッチを含む、ことを特徴とする請求項1に記載のシステム。
  14. 前記サーバリンクスイッチは、ToR CXLスイッチを含む、ことを特徴とする請求項13に記載のシステム。
  15. 前記サーバリンクスイッチは、前記第2のメモリサーバから前記第1のメモリサーバにデータを送信し、前記データに対してフロー制御を実行する、ことを特徴とする請求項1に記載のシステム。
  16. 前記システムは、
    前記サーバリンクスイッチに接続された第3のメモリサーバをさらに含み、
    前記サーバリンクスイッチは、
    前記第2のメモリサーバから第1のパケットを受信し、
    前記第3のメモリサーバから第2のパケットを受信し、
    前記第1のパケット及び前記第2のパケットを前記第1のメモリサーバに送信する、ことを特徴とする請求項1に記載のシステム。
  17. 第1のメモリサーバと、
    第1のサーバと、
    第2のサーバと、
    前記第1のメモリサーバ、前記第1のサーバ、及び前記第2のサーバに接続されたサーバリンクスイッチと、を含み、
    前記第1のメモリサーバは、キャッシュコヒーレントスイッチと、第1のメモリモジュールと、を含み、
    前記第1のサーバは、内蔵プログラム処理回路を含み、
    前記第2のサーバは、内蔵プログラム処理回路を含むコンピューティングシステムにおいて、
    前記サーバリンクスイッチによって前記第1のサーバから第1のパケットを受信する段階と、
    前記サーバリンクスイッチによって前記第2のサーバから第2のパケットを受信する段階と、
    前記第1のパケット及び前記第2のパケットを前記第1のメモリサーバに送信する段階と、を含む、コンピューティングシステムでリモートダイレクトメモリアクセスを実行する、ことを特徴とする方法。
  18. 前記方法は、
    前記キャッシュコヒーレントスイッチによってデータを圧縮する段階と、
    前記第1のメモリモジュールに前記データを格納する段階と、をさらに含む、ことを特徴とする請求項17に記載の方法。
  19. 前記方法は、
    前記サーバリンクスイッチによって前記第1のメモリサーバの状態を照会する段階をさらに含む、ことを特徴とする請求項17に記載の方法。
  20. キャッシュコヒーレントスイッチ、及び第1のメモリモジュールを含む第1のメモリサーバと、
    第2のメモリサーバと、
    前記第1のメモリサーバ及び前記第2のメモリサーバに接続されたサーバリンクスイッチング手段と、を含み、
    前記第1のメモリモジュールは、前記キャッシュコヒーレントスイッチに接続され、
    前記キャッシュコヒーレントスイッチは、前記サーバリンクスイッチング手段に接続される、ことを特徴とするシステム。
JP2021089584A 2020-05-28 2021-05-27 メモリリソースを管理するためのシステム及び方法 Pending JP2021190125A (ja)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US202063031508P 2020-05-28 2020-05-28
US202063031509P 2020-05-28 2020-05-28
US63/031508 2020-05-28
US63/031509 2020-05-28
US202063057746P 2020-07-28 2020-07-28
US63/057746 2020-07-28
US202063068054P 2020-08-20 2020-08-20
US63/068054 2020-08-20
US17/026087 2020-09-18
US17/026,087 US11461263B2 (en) 2020-04-06 2020-09-18 Disaggregated memory server

Publications (1)

Publication Number Publication Date
JP2021190125A true JP2021190125A (ja) 2021-12-13

Family

ID=74859383

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2021087728A Pending JP2021190121A (ja) 2020-05-28 2021-05-25 メモリリソースを管理するシステム及びその方法
JP2021089285A Pending JP2021190123A (ja) 2020-05-28 2021-05-27 キャッシュコヒーレントインターコネクトを使用するシステム及び方法
JP2021089584A Pending JP2021190125A (ja) 2020-05-28 2021-05-27 メモリリソースを管理するためのシステム及び方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2021087728A Pending JP2021190121A (ja) 2020-05-28 2021-05-25 メモリリソースを管理するシステム及びその方法
JP2021089285A Pending JP2021190123A (ja) 2020-05-28 2021-05-27 キャッシュコヒーレントインターコネクトを使用するシステム及び方法

Country Status (6)

Country Link
US (1) US20210373951A1 (ja)
EP (4) EP3916563A1 (ja)
JP (3) JP2021190121A (ja)
KR (4) KR20210147865A (ja)
CN (4) CN113810312B (ja)
TW (4) TW202147123A (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US20210311871A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. System and method for aggregating server memory
US20210373951A1 (en) * 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for composable coherent devices
DE102021121105A1 (de) * 2020-09-28 2022-03-31 Samsung Electronics Co., Ltd. Intelligente ablagespeichervorrichtung
US11442858B1 (en) * 2021-03-10 2022-09-13 Micron Technology, Inc. Bias control for a memory device
US20220318065A1 (en) * 2021-04-02 2022-10-06 Red Hat, Inc. Managing computer workloads across distributed computing clusters
US11755251B2 (en) * 2021-06-02 2023-09-12 Samsung Electronics Co., Ltd. Virtual computational storage devices
CN118056191A (zh) * 2021-06-09 2024-05-17 安法布里卡公司 具有可配置传输的多平面、多协议存储器交换机构造
US11782832B2 (en) * 2021-08-25 2023-10-10 Vmware, Inc. Low latency host processor to coherent device interaction
US11632337B1 (en) * 2021-10-11 2023-04-18 Cisco Technology, Inc. Compute express link over ethernet in composable data centers
TWI818385B (zh) * 2021-12-16 2023-10-11 神雲科技股份有限公司 儲存設備
US20230205705A1 (en) * 2021-12-23 2023-06-29 Advanced Micro Devices, Inc. Approach for providing indirect addressing in memory modules
US20230222068A1 (en) * 2022-01-11 2023-07-13 Flipkart Internet Private Limited System and method for optimizing cached memory comprising varying degrees of sla and crg
US11966590B2 (en) 2022-02-25 2024-04-23 Samsung Electronics Co., Ltd. Persistent memory with cache coherent interconnect interface
US20230281128A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. Cache-coherent interconnect based near-data-processing accelerator
CN114896223A (zh) * 2022-04-07 2022-08-12 支付宝(杭州)信息技术有限公司 数据库实现装置、方法、系统、介质以及计算机程序产品
CN115982078A (zh) * 2023-01-19 2023-04-18 北京超弦存储器研究院 一种cxl内存模组及内存存储系统
CN116466879B (zh) * 2023-03-17 2023-12-29 北京超弦存储器研究院 一种cxl内存模组、内存数据的置换方法及计算机系统
CN116886751B (zh) * 2023-09-04 2024-01-19 浪潮(北京)电子信息产业有限公司 一种异构设备的高速通信方法、装置和异构通信系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7079535B2 (en) * 2000-07-28 2006-07-18 The Regents Of The Universtiy Of California Method and apparatus for real-time fault-tolerant multicasts in computer networks
US8725946B2 (en) * 2009-03-23 2014-05-13 Ocz Storage Solutions, Inc. Mass storage system and method of using hard disk, solid-state media, PCIe edge connector, and raid controller
US10877695B2 (en) * 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8937622B2 (en) * 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9009406B2 (en) * 2010-12-10 2015-04-14 International Business Machines Corporation Determining server write activity levels to use to adjust write cache size
US20130318308A1 (en) * 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip
US20140195672A1 (en) * 2013-01-09 2014-07-10 Microsoft Corporation Automated failure handling through isolation
KR102430561B1 (ko) * 2015-09-11 2022-08-09 삼성전자주식회사 듀얼 포트 디램을 포함하는 메모리 모듈
US10944842B2 (en) * 2016-05-27 2021-03-09 Home Box Office, Inc. Cached data repurposing
US20180024964A1 (en) * 2016-07-19 2018-01-25 Pure Storage, Inc. Disaggregated compute resources and storage resources in a storage system
US10503655B2 (en) * 2016-07-21 2019-12-10 Advanced Micro Devices, Inc. Data block sizing for channels in a multi-channel high-bandwidth memory
US10225344B2 (en) * 2016-08-12 2019-03-05 International Business Machines Corporation High-performance key-value store using a coherent attached bus
US10831404B2 (en) * 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
EP3796615B1 (en) * 2018-06-28 2023-06-07 Huawei Technologies Co., Ltd. Fault tolerance processing method, device, and server
US10599548B2 (en) * 2018-06-28 2020-03-24 Intel Corporation Cache monitoring
US10956230B2 (en) * 2018-10-01 2021-03-23 Vmware, Inc. Workload placement with forecast
US11100040B2 (en) * 2018-10-17 2021-08-24 Cisco Technology, Inc. Modular remote direct memory access interfaces
US11379254B1 (en) * 2018-11-18 2022-07-05 Pure Storage, Inc. Dynamic configuration of a cloud-based storage system
US11036658B2 (en) * 2019-01-16 2021-06-15 Advanced Micro Devices, Inc. Light-weight memory expansion in a coherent memory system
US11169854B2 (en) * 2019-01-31 2021-11-09 Hewlett Packard Enterprise Development Lp Node eligibility determinations
US11025544B2 (en) * 2019-06-07 2021-06-01 Intel Corporation Network interface for data transport in heterogeneous computing environments
US11573900B2 (en) * 2019-09-11 2023-02-07 Intel Corporation Proactive data prefetch with applied quality of service
US20200104275A1 (en) * 2019-12-02 2020-04-02 Intel Corporation Shared memory space among devices
US20210373951A1 (en) * 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for composable coherent devices

Also Published As

Publication number Publication date
KR20210147871A (ko) 2021-12-07
EP3916564A1 (en) 2021-12-01
TW202147123A (zh) 2021-12-16
EP3916564B1 (en) 2024-06-05
EP3916565A1 (en) 2021-12-01
CN113746762A (zh) 2021-12-03
CN113742257A (zh) 2021-12-03
CN113742259A (zh) 2021-12-03
TW202145025A (zh) 2021-12-01
JP2021190121A (ja) 2021-12-13
JP2021190123A (ja) 2021-12-13
EP3916566B1 (en) 2024-05-08
KR20210147911A (ko) 2021-12-07
TW202213104A (zh) 2022-04-01
US20210373951A1 (en) 2021-12-02
TW202213105A (zh) 2022-04-01
EP3916563A1 (en) 2021-12-01
CN113810312A (zh) 2021-12-17
CN113810312B (zh) 2023-12-19
KR20210147867A (ko) 2021-12-07
EP3916566A1 (en) 2021-12-01
KR20210147865A (ko) 2021-12-07

Similar Documents

Publication Publication Date Title
US11416431B2 (en) System with cache-coherent memory and server-linking switch
EP3916566B1 (en) System and method for managing memory resources
US11526304B2 (en) Memcached server functionality in a cluster of data processing nodes
US10140245B2 (en) Memcached server functionality in a cluster of data processing nodes
US10135731B2 (en) Remote memory access functionality in a cluster of data processing nodes
US9648102B1 (en) Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) Memcached server functionality in a cluster of data processing nodes
KR20190112626A (ko) 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘
TW202211035A (zh) 用於資源分配的系統、元件以及方法
CN117493237B (zh) 计算设备、服务器、数据处理方法和存储介质
US20240069755A1 (en) Computer system, memory expansion device and method for use in computer system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240401