JP2021190123A - キャッシュコヒーレントインターコネクトを使用するシステム及び方法 - Google Patents

キャッシュコヒーレントインターコネクトを使用するシステム及び方法 Download PDF

Info

Publication number
JP2021190123A
JP2021190123A JP2021089285A JP2021089285A JP2021190123A JP 2021190123 A JP2021190123 A JP 2021190123A JP 2021089285 A JP2021089285 A JP 2021089285A JP 2021089285 A JP2021089285 A JP 2021089285A JP 2021190123 A JP2021190123 A JP 2021190123A
Authority
JP
Japan
Prior art keywords
memory
server
memory module
controller
switch
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
JP2021089285A
Other languages
English (en)
Inventor
テジャ マラディ,クリシュナ
Teja Malladi Krishna
チャン,アンドリュー
Chang Andrew
エム ナジャファバディ,エフサン
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,071 external-priority patent/US20210311897A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021190123A publication Critical patent/JP2021190123A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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]
    • 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
    • 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
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (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つ以上のサーバーを含むシステムにおいてメモリリソースを管理する改善されたシステム及び方法を提供する。【解決手段】メモリ資源(リソース)を管理するシステムは、格納されたプログラム処理回路、ネットワークインターフェース回路125及びメモリモジュール135を含むサーバー105を有する。メモリモジュールは、第1メモリダイ及びコントローラ137を含む。コントローラは、メモリインターフェースを介して第1メモリダイに連結され、キャッシュコヒーレントインターフェースを介して格納されたプログラム処理回路に連結され、ネットワークインターフェース回路に連結される。【選択図】図1A

Description

本開示による実施形態の1つ以上の態様は、コンピューティングシステムに関し、さらに詳しくは1つ以上のサーバーを含むシステムでメモリ資源(リソース)を管理するシステム及び方法に関する。
本背景の説明は、コンテキストだけを提供するためのものであり、前記背景の説明のいかなる実施形態又は概念の開示も前記実施形態又は前記概念が従来技術であることを認めるものではない。
一部のサーバーシステムは、ネットワークプロトコルによって連結されたサーバーの集合(collections)を含み得る。そのようなシステムのサーバーの各々は、処理リソース(例えば、プロセッサ)及びメモリリソース(例えば、システムメモリ)を含み得る。ある環境では、1つのサーバーの処理リソースが他のサーバーのメモリリソースにアクセスすることが有利であり、このアクセスは、これらのサーバーのどちらか一方の処理リソースを最小限に抑えながら発生することが有利であり得る。
したがって、1つ以上のサーバーを含むシステムにおいて、メモリリソースを管理するための改善されたシステム及び方法が必要である。
米国特許第9619389号明細書 米国特許出願公開第2015/0258437号明細書 米国特許出願公開第2016/0299767号明細書 米国特許出願公開第2019/0179805号明細書 米国特許出願公開第2019/0235777号明細書 米国特許出願公開第2019/0384733号明細書 米国特許出願公開第2019/0391936号明細書 米国特許出願公開第2020/0021540号明細書 米国特許出願公開第2020/0050403号明細書 米国特許出願公開第2020/0050570号明細書 米国特許出願公開第2020/0104275号明細書 米国特許出願公開第2020/0125503号明細書
AWS Summit, Seoul, Korea, 2017, 36 pages, https://www.slideshare.net/awskorea/awscloud-game-architecture?from_action=save), Amazon Web Services, Inc. 米国非公開特許出願第17/026082号(Unpublished U.S. application no. 17/026082, filed September 18, 2020). 米国非公開特許出願第17/026082号(Unpublished U.S. application no. 17/026074, filed September 18, 2020). 米国非公開特許出願第17/026082号(Unpublished U.S. application no. 17/026087, filed September 18, 2020).
本発明は、上記従来技術に鑑みてなされたものであって、本開示の目的は、1つ以上のサーバーを含むシステムにおいてメモリリソースを管理する改善されたシステム及び方法を提供することにある。
いくつかの実施形態において、サーバーは1つ以上の処理回路、システムメモリ、及びキャッシュコヒーレントインターフェースを介して前記処理回路に連結された1つ以上のメモリモジュールを含む。前記メモリモジュールがまた1つ以上のネットワークインターフェース回路に連結される。各メモリモジュールは、改善された機能を、前記メモリモジュールに提供するコントローラ(例えば、FPGA又はASIC)を含み得る。これらの機能は、中央処理装置(CPU)のようなプロセッサにアクセスしなくても、サーバーは(例えば、リモートダイレクトメモリアクセス(RDMA)を遂行することにより、)他のサーバーのメモリと相互作用することができるようにする機能を含み得る。
本発明の一実施形態によると、システムが提供されるが、前記システムは第1サーバーを含み、前記第1サーバーは、格納されたプログラムの処理回路、第1ネットワークインターフェース回路及び第1メモリモジュールを含み、前記第1メモリモジュールは第1メモリダイ及びコントローラを含み、前記コントローラはメモリインターフェースを介して前記第1メモリダイに連結され、キャッシュコヒーレントインターフェースを介して前記格納されたプログラムの処理回路に連結され、前記第1ネットワークインターフェース回路に連結される。
いくつかの実施形態では、第1メモリモジュールは第2メモリダイをさらに含み、第1メモリダイは揮発性メモリを含み、第2メモリダイは永続性メモリを含む。
いくつかの実施形態では、前記永続性メモリはNANDフラッシュを含む。いくつかの実施形態では、前記コントローラは、前記永続性メモリのためのフラッシュ変換レイヤー(flash translation layer)を提供するように構成される。
いくつかの実施形態では、キャッシュコヒーレントインターフェースは、CXL(Compute Express Link)インターフェースを含む。
いくつかの実施形態では、前記第1サーバーは、前記第1サーバーの拡張ソケットに連結された拡張ソケットアダプタを含み、前記拡張ソケットアダプタは、前記第1メモリモジュールと前記第1ネットワークインターフェース回路を含む。
いくつかの実施形態では、前記第1メモリモジュールのコントローラは、前記拡張ソケットを介して格納されたプログラムの処理回路に連結される。
いくつかの実施形態では、前記拡張ソケットはM.2ソケットを含む。
いくつかの実施形態では、前記第1メモリモジュールのコントローラは、ピア・ツー・ピアPCIe(Peripheral Component Interconnect Express)連結により、前記第1ネットワークインターフェース回路に連結される。
いくつかの実施形態では、前記システムは、第2サーバー、及び前記第1サーバーと前記第2サーバーに連結されたネットワークスイッチをさらに含む。
いくつかの実施形態では、前記ネットワークスイッチは、ToR(top of rack)イーサネットスイッチを含む。
いくつかの実施形態では、前記第1メモリモジュールのコントローラは、RDMA(remote direct memory access)リクエストを受信し、RDMA応答を送信するように構成される。
いくつかの実施形態では、第1メモリモジュールのコントローラは、前記ネットワークスイッチを介して、そして第1ネットワークインターフェース回路を介してRDMAリクエストを受信し、前記ネットワークスイッチを介して、そして前記第1ネットワークインターフェース回路を介してRDMA応答を送信するように構成される。
いくつかの実施形態では、前記第1メモリモジュールのコントローラは、前記第2サーバーからデータを受信し、データを前記第1メモリモジュールに格納し、キャッシュラインを無効化するためのコマンドを格納されたプログラム処理回路に送信するように構成される。
いくつかの実施形態では、前記第1メモリモジュールのコントローラは、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)を含む。
本発明の一実施形態によると、コンピューティングシステムでは、リモートダイレクトメモリアクセス(RDMA)を遂行する方法であって、前記コンピューティングシステムは第1サーバー及び第2サーバーを含み、前記第1サーバーは格納されたプログラム処理回路、ネットワークインターフェース回路及びコントローラを含む第1メモリモジュールを含む、前記方法は、前記第1メモリモジュールのコントローラによってリモートダイレクトメモリアクセス(RDMA)リクエストを受信する段階と、前記第1メモリモジュールのコントローラによってRDMA応答を送信する段階と、を備える。
実施形態では、前記コンピューティングシステムは、前記第1サーバー及び前記第2サーバーに連結されたイーサネットスイッチと、をさらに備え、RDMAリクエストを受信する段階は、前記イーサネットスイッチを介して前記RDMAリクエストを受信する段階を含む。
いくつかの実施形態では、前記方法は、前記第1メモリモジュールのコントローラによって、前記格納されたプログラム処理回路から第1メモリアドレスに対するリード(read)コマンドを受信する段階と、前記第1メモリモジュールのコントローラによって、前記第1メモリアドレスを第2メモリアドレスに変換する段階と、前記第1メモリモジュールのコントローラによって、前記第2メモリアドレスにおいて第1メモリモジュールからデータを検索する段階と、を備える。
いくつかの実施形態では、前記方法は、前記第1メモリモジュールのコントローラによってデータを受信する段階と、前記第1メモリモジュールのコントローラによって前記第1メモリモジュールにデータを格納する段階と、前記第1メモリモジュールのコントローラによってキャッシュラインを無効化するためのコマンドを前記格納されたプログラム処理回路に伝送する段階と、を備える。
本発明の一実施形態によると、システムが提供されるが、前記システムは第1サーバーを含み、前記第1サーバーは格納されたプログラムの処理回路、第1ネットワークインターフェース回路及び第1メモリモジュールを含み、前記第1メモリモジュールは第1メモリダイ及びコントローラ手段を含み、前記コントローラ手段はメモリインターフェースを介して前記第1メモリダイに連結され、キャッシュコヒーレントインターフェースを介して前記格納されたプログラムの処理回路に連結され、前記第1ネットワークインターフェース回路に連結される。
本開示の実施形態によると、1つ以上のサーバーを含むシステムにおいて、メモリリソースを管理するための改善されたシステム及び方法が提供される。
本明細書で提供される図面は、実施形態を説明するためのものであり、明示的に開示していない他の実施形態は、本開示の範囲から排除されない。
本開示のこれら、他の特徴及び利点は、明細書、請求の範囲及び添付された図面を参照して認知・理解されるだろう。
本開示の一実施形態による、キャッシュコヒーレントの連結を使用して、メモリリソースをコンピューティングリソースに添付するシステムのブロック図である。 本開示の一実施形態による、キャッシュコヒーレントの連結を使用してメモリリソースをコンピューティングリソースに添付する、拡張ソケットアダプタを採用したシステムのブロック図である。 本開示の一実施形態による、イーサネットToRスイッチを採用したメモリを集めるシステムのブロック図である。 本開示の一実施形態による、イーサネットToRスイッチと拡張ソケットアダプタを採用したメモリを集めるシステムのブロック図である。 本開示の一実施形態による、メモリを集めるシステムのブロック図である。 本開示の一実施形態による、拡張ソケットアダプタを採用したメモリを集めるシステムのブロック図である。 本開示の一実施形態による、サーバーを集めない(disaggregating)システムのブロック図である。 本開示の一実施形態による、図1A〜図1Gに図示された実施形態に対し処理回路をバイパスすることにより、RDMA(remote direct memory access)への移転を遂行する例としての方法に対するフローチャートである。 本開示の一実施形態による、図1A〜図1Dに図示された実施形態に対する、処理回路の参加によりRDMAへの移転を遂行する例としての方法に対するフローチャートである。 本開示の一実施形態による、図1E〜図1Fに図示された実施形態に対しCXL(Compute Express Link)スイッチを介してRDMAへの移転を遂行する例としての方法に対するフローチャートである。 本開示の一実施形態による、図1Gに図示された実施形態に対するCXLスイッチを介してRDMA移転を遂行する例としての方法に対するフローチャートである。
添付された図面に関連して以下での詳細な説明は、本開示に基づいて提供されるメモリリソース管理システム及び方法に対する例としての実施形態を説明するためのものとして、本開示が構成・活用される唯一の形態を表すものではない。以下の説明は、図示された実施形態と関連して本開示の特徴を提示する。しかし、同一又は同等の機能と構造がまた、本開示の範囲内に含まれるように意図された異なる実施形態によって達成されることは、理解されるべきである。本明細書で類似の図面符号は、類似のエレメント又は特徴を示す。
PCIe(Peripheral Component Interconnect Express)は、メモリへの連結を生成するにあたって、その有用性を限定することができる比較的高く可変のレイテンシ(latency)を有し得るコンピュータインターフェースのことをいう。CXLはPCIe5.0に基づいて通信のためのオープンな産業標準であり、固定的かつ比較的短いパケットサイズを提供することができ、その結果として、比較的高い帯域幅と、比較的低い固定レイテンシを提供することができる。このように、CXLは、キャッシュコヒーレントをサポートし、メモリへの連結を生成するのに非常に適合している。CXLはまた、サーバー上でホストとアクセラレータ、メモリ装置及びネットワークインターフェース回路(又は「ネットワークインターフェースコントローラ」若しくはネットワークインターフェースカード(NIC))との間の連結を提供するために使用される。
CXLのようなキャッシュコヒーレントプロトコルは、例えば、スカラー、ベクトル、及びバッファリングされたメモリシステムにおいて異機種処理(heterogeneous processing)のために採用されることもある。CXLはチャンネル、リタイマ(retimer)、システムのPHYレイヤーは、インターフェースの論理的側面とプロトコルをPCIe5.0から活用して、キャッシュコヒーレントインターフェースを提供するために使用される。CXLトランザクションレイヤーは、単一のリンク上で同時に作動する3つの多重化された下位プロトコルを含むことができ、CXL.io、CXL.cache及びCXL.memoryと称される。CXL.ioはPCIeと類似であり得るI/Oのセマンティックを含み得る。CXL.cacheはキャッシングセマンティック(caching semantic)を含むことができ、CXL.memoryはメモリセマンティック(memory samantic)を含むことができ、キャッシュセマンティックとメモリセマンティックはすべてオプションであり得る。PCIeと同様に、CXLは、(i)分割可能なx16、x8、及びx4の基本的な幅、(ii)8GT/s及び16GT/s、128b/130bに分解可能な32GT/sのデータレート、(iii)300W(x16コネクタで75W)、及び(iv)プラグアンドプレイ(plug and play)をサポートすることができる。プラグアンドプレイをサポートするためにPCIe又はCXL装置のリンクはGen1のPCIeでトレーニングを開始し、CXLを交渉(処理)し、Gen1−5トレーニングを完了した後、CXLトランザクションを開始することができる。
いくつかの実施形態では、メモリ(例えば、共に連結された1つ以上のメモリセルを含むメモリ量)の集合又は「プール」に対するCXL連結の使用は、以下で詳細に説明されているように、ネットワークによって共に連結された1つ以上のサーバーを含むシステムで、多様な利点を提供することができる。たとえば、CXLパケットに対するパケットスイッチング機能を提供することに加えて追加の機能を有するCXLスイッチ(本明細書で「向上された機能のCXLスイッチ」と称される)は、メモリの集合を1つ以上の中央処理装置(CPU)(又は「中央処理回路」)と1つ以上のネットワークインターフェース回路(改善された機能を有し得る)に連結するために使用される。このような構成は、(i)メモリの集合が異なる特性を有する多様なタイプのメモリを含み得るようにし、(ii)改善された機能のCXLスイッチがメモリの集合を仮想化して、異なる特性(例えば、アクセス周波数)のデータを適切なタイプのメモリに格納することができようにし、(iii)改善された機能のCXLスイッチがRDMA(remote direct memory access)をサポートしてRDMAがサーバーの処理回路からほとんど、あるいはまったく関与せず遂行されるようにする。本明細書で使用されているように、メモリを「仮想化」するということは、処理回路とメモリとの間でメモリアドレス変換を遂行することを意味する。
CXLスイッチは、(i)単一のレベルのスイッチングを介して、メモリとアクセラレータ分離をサポートし、(ii)リソース(資源)がドメイン間でオフライン及びオンラインされるようにし、これにより、リクエストに応じて、ドメインにわたって時間多重化が可能になり、(iii)ダウンストリームポートの仮想化をサポートすることができる。CXLは、集合された装置がいくつかの実施形態では、LD−ID(論理装置識別子)を各々有する1つ以上の論理装置に分割された状態で、一対多(one-to-many)と多対一(many-to-one)のスイッチングを可能にする一連のメモリを実施するために使用される(例えば、(i)CXLは多数のルートポートを一つのエンドポイントに連結し、(ii)1つのルートポートを多数のエンドポイントに連結し、又は(iii)多数のルートポートを多数のエンドポイントに連結することができる)。このような実施形態では、物理的装置は、各々の開始者(initiator)に可視的な複数の論理装置に分割される。装置は、1つの物理的な機能(PF)と、複数(例えば、16)の分離された論理装置を有し得る。いくつかの実施形態では、論理装置の数(例えば、パーティションの数)は限定されることがあり(たとえば、16個まで)、1つの制御パーティション(前記装置を制御するために使用される物理的機能の可能性あり)がまた存在することができる。
いくつかの実施形態では、ファブリックの管理装置(fabric manager)は、(i)装置の検出と仮想CXLソフトウェアの生成を遂行し、(ii)仮想ポートを物理ポートにバインドするために採用される。これらのファブリック管理装置は、SMBusサイドバンド(sideband)による連結を介して動作することができる。ファブリックの管理装置は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせで実施され、例えば、ホストに、メモリモジュール135のいずれか1つに、拡張機能のCXLスイッチ130に、又はネットワーク上のその他の場所に常駐することができる。ファブリックの管理装置は、サイドバンドのバス又はPCIeツリーを介して発行されたコマンドを含むコマンドを発行することができる。
図1Aを参照すると、いくつかの実施形態では、サーバーシステムは、ToR(Top of Rack)イーサネットスイッチ110によって共に連結された複数のサーバー105を含む。このスイッチは、イーサネットプロトコルを使用するものとして説明されるが、他の適切なネットワークプロトコルが使用される。各サーバーは、(i)システムメモリ120(例えば、DDR4(Double Data Rate)(version 4)メモリ又は任意の他の適切なメモリ)、(ii)1つ以上のネットワークインターフェース回路125、及び(iii)1つ以上CXLメモリモジュール135に個別に連結された1つ以上の処理回路115を含む。各々の処理回路115は、格納されたプログラムの処理回路、例えば、中央処理装置(CPU(例えば、x86 CPU))、グラフィックス処理装置(GPU)、又はARMプロセッサであり得る。いくつかの実施形態では、ネットワークインターフェース回路125は、メモリモジュール135のうち、いずれか1つに(例えば、同一の半導体チップ上に、又は同一のモジュール内に)エンベデッドされるか、又はネットワークインターフェース回路125がメモリモジュール135とは別個にパッケージングされる。
本明細書で使用されているように、「メモリモジュール」は、1つ以上のメモリダイを含むパッケージ(例えば、プリント回路基板、及びこれに連結されたコンポーネントを含むパッケージ又はプリント回路基板を含むエンクロージャ(enclosure))であり、ここでは、各メモリダイは、複数のメモリセルを含む。各メモリダイ又は一連のメモリダイグループの各々は、メモリモジュールのプリント回路基板にはんだ付けされた(コネクタを介して、メモリモジュールのプリント回路基板に連結される)パッケージ(例えば、エポキシモールディングコンパウンド(EMC:epoxy mold compound)パッケージ)内に位置することができる。メモリモジュール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は、RoCE(Converged Ethernet)上でのRDMA、インフィニバンド(Infiniband)及びiWARPパケットのハードウェアオフロード又はハードウェアアクセラレーションを提供することができる)。
前記システムでのCXL相互連結は、CXL1.1標準のようなキャッシュコヒーレントプロトコルにしたがい、又はいくつかの実施形態では、CXL2.0標準、将来のバージョンのCXL又は任意の他の適切なプロトコル(例えば、キャッシュコヒーレントプロトコル)に従うことができる。メモリモジュール135は、図示されているように、処理回路115にダイレクト付着されることもあり、ラックイーサネットスイッチ110の上部は、システムをより大きなサイズに(例えば、より多くの数のサーバー105に)拡張するために使用される。
いくつかの実施形態では、各々のサーバーは、図1Aに示すように、多数のダイレクト付着のCXL付着メモリモジュール135で満たされる。各メモリモジュール135は、メモリ範囲としてホストのBIOS(BASIC Input/Output System)にベースアドレスレジスタの(BAR)のセットを露出することができる。メモリモジュール135のうち、いずれか1つ以上は、ホストOSマップを支えるのメモリ空間を透明に管理するファームウェアを含み得る。各々のメモリモジュール135は、例えば、DRAM(Dynamic Random Access Memory)、NAND(Not-AND)フラッシュ、HBM(High Bandwidth Memory)、及びLPDDR SDRAM(Low-Power Double Data Rate Synchronous Dynamic Random Access Memory)テクノロジーを含む(しかし、これらに限定されない)メモリテクノロジーのうち、いずれか1つ又はこれらの組み合わせを含むことができ、キャッシュコントローラを含むか、又は異なるテクノロジーのメモリ装置(異なるテクノロジーの多様なメモリ装置を結合するメモリモジュール135の場合)のための分離された各々のスプリット(split)コントローラを含むこともできる。各メモリモジュール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は、CXLタイプ2装置として処理回路115に存在し、これはリモートライト(write)リクエストを受信するとき、処理回路115に対するキャッシュの無効化コマンドの発行を可能にする。いくつかの実施形態では、DDIOテクノロジーがイネーブルされ、リモートデータは、先に処理回路の最後のレベルのキャッシュ(LLC)にプル(pull)され、後でメモリモジュール135(キャッシュから)に記録される。ここで使用される「タイプ2」のCXL装置は、トランザクションを開始することができ、オプションの一コヒーレントキャッシュとホスト管理装置のメモリを具現化し、これに対して適用可能なトランザクションタイプは、すべてのCXL.cache及びすべてのCXL.memトランザクションを含む。
前述したように、メモリモジュール135のうち、1つ以上は永続性メモリー又は「永続性ストレージ」(つまり、外部電源が遮断されるとき、データが失われないストレージ)を含み得る。メモリモジュール135が永続性装置として提供されている場合には、メモリモジュール135のコントローラ137は、永続性ドメインを管理することができ、例えば、永続性ストレージを必要とするとき(例えば、対応するオペレーティングシステムの機能を呼び出すアプリケーションの結果として)処理回路115によって識別されるデータを永続性ストレージに格納することができる。このような実施形態では、ソフトウェアAPIは、キャッシュ及びデータを永続性ストレージにフラッシュ(flush)することができる。
いくつかの実施形態では、ネットワークインターフェース回路125からメモリモジュール135へのダイレクトメモリ移転がイネーブルされる。このような移転は、分散システムにおいて、高速通信のためのリモートメモリへの単方向移転であり得る。このような実施形態では、メモリモジュール135は、より高速なRDMA転送を可能にするために、システムでのネットワークインターフェース回路125にハードウェアの詳細を露出することができる。このようなシステムでは、処理回路115のデータダイレクトI/O(DDIO)がイネーブル又はディセーブルされるか否かに応じて、2つのシナリオが発生することができる。DDIOは、イーサネットコントローラ又はイーサネットアダプタと、処理回路115のキャッシュとの間のダイレクト通信を可能にすることができる。処理回路115のDDIOがイネーブルされると、移転(transfer)のターゲットは、処理回路の最後のレベルのキャッシュであり、そこからのデータは、向後のメモリモジュール135に自動的にフラッシュされることがある。処理回路115のDDIOがディセーブルされると、メモリモジュール135は、装置バイアスモードで動作してデスティネーションメモリモジュール135によって(DDIOなしに)ダイレクト受信されるように、アクセスを強制的に行うことができる。ホストチャネルアダプタ(HCA)、バッファ及びその他の処理を有するRDMA可能なネットワークインターフェース回路125は、このようなRDMA移転を可能にするために採用されることがあり、これは、他のモードのRDMA移転に存在することもできるターゲットメモリバッファ移転をバイパスすることができる。例えば、このような実施形態では、バウンスバッファ(例えば、メモリでの最終的なデスティネーションがRDMAプロトコルによってサポートされていないアドレスの範囲にある場合、リモートサーバーのバッファ)の使用が回避される。いくつかの実施形態では、RDMAは、イーサネット以外の他の物理的媒体のオプションを使用する(例えば、他のネットワークプロトコルを扱うように構成されるスイッチと共に使用するため)。RDMAをイネーブルすることができるサーバー間の連結の例としては、インフィニバンド(Infiniband)、RoCE(RDMA over Converged Ethernet)(イーサネットUDP(User Datagram Protocol)を使用すること)及びiWARP(TCP/IP(transmission control protocol/Internet protocol)を使用すること)がある。
図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は、P2P(peer-to-peer)PCIe連結を介してネットワークインターフェース回路125と通信することができる。
本発明の一実施形態によると、システムが提供されるが、前記システムは、第1サーバーを含み、前記第1サーバーは、格納されたプログラムの処理回路、第1ネットワークインターフェース回路及び第1メモリモジュールを含み、前記第1メモリモジュールは第1メモリダイ及びコントローラを含み、前記コントローラは、メモリインターフェースを介して前記第1メモリダイに連結され、キャッシュコヒーレントインターフェースを介して前記格納されたプログラムの処理回路に連結され、前記第1ネットワークインターフェース回路に連結される。いくつかの実施形態では、前記第1メモリモジュールは第2メモリダイをさらに含み、前記第1メモリダイは揮発性メモリを含み、前記第2メモリダイは、永続性メモリを含む。いくつかの実施形態では、前記永続性メモリはNANDフラッシュを含む。いくつかの実施形態では、前記コントローラは、前記永続性メモリのためのフラッシュ変換レイヤー(flash translation layer)を提供するように構成される。いくつかの実施形態では、前記キャッシュコヒーレントインターフェースは、CXL(Compute Express Link)インターフェースを含む。いくつかの実施形態では、前記第1サーバーは、前記第1サーバーの拡張ソケットに連結される拡張ソケットアダプタを含み、前記拡張ソケットアダプタは、前記第1メモリモジュール及び前記第1ネットワークインターフェース回路を含む。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、前記拡張ソケットを介して格納されたプログラムの処理回路に連結される。いくつかの実施形態では、前記拡張ソケットはM.2ソケットを含む。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、ピア・ツー・ピアPCIe(Peripheral Component Interconnect Express)連結により、前記第1ネットワークインターフェース回路に連結される。いくつかの実施形態では、前記システムは、第2サーバー、及び前記第1サーバーと前記第2サーバーに連結されるネットワークスイッチをさらに含む。いくつかの実施形態では、前記ネットワークスイッチは、ToR(top of rack)イーサネットスイッチを含む。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、ストレート(straight)RDMA(remote direct memory access)リクエストを受信し、ストレートRDMA応答を送信するように構成される。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、前記ネットワークスイッチを介して、そして第1ネットワークインターフェース回路を介してストレートRDMAリクエストを受信し、前記ネットワークスイッチを介して、そして前記第1ネットワークインターフェース回路を介して連続するRDMA応答を送信するように構成される。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、前記第2サーバーからデータを受信し、データを前記第1メモリモジュールに格納し、キャッシュラインを無効化するためのコマンドを、格納されたプログラム処理回路に送信するように構成される。いくつかの実施形態では、前記第1メモリモジュールのコントローラは、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)を含む。本発明の一実施形態によると、コンピューティングシステムで、リモートダイレクトメモリアクセスを遂行する方法であって、前記コンピューティングシステムは、第1サーバー及び第2サーバーを含み、前記第1サーバーは、格納されたプログラムの処理回路、ネットワークインターフェース回路、及びコントローラを含む第1メモリモジュールを有する前記方法は、前記第1メモリモジュールのコントローラによってストレートリモートダイレクトメモリアクセス(RDMA)リクエストを受信する段階と、前記第1メモリモジュールのコントローラによってストレートRDMA応答を送信する段階と、を備える。いくつかの実施形態では、前記コンピューティングシステムは、前記第1サーバー及び前記第2サーバーに連結されるイーサネットスイッチをさらに含み、ストレートRDMAリクエストを受信する段階は、前記イーサネットスイッチを介して前記ストレートRDMAリクエストを受信する段階を含む。いくつかの実施形態では、前記方法は、前記第1メモリモジュールのコントローラによって、前記格納されたプログラム処理回路から第1メモリアドレスのリード(read)コマンドを受信する段階と、前記第1メモリモジュールのコントローラによって前記第1メモリアドレスを第2メモリアドレスに変換する段階と、前記第1メモリモジュールのコントローラによって前記第2メモリアドレスにおいて第1メモリモジュールからデータを検索する段階と、を備える。いくつかの実施形態では、前記方法は、前記第1メモリモジュールのコントローラによってデータを受信する段階と、前記第1メモリモジュールのコントローラによって前記第1メモリモジュールにデータを格納する段階と、前記第1メモリモジュールのコントローラによってキャッシュラインを無効化するためのコマンドを、前記格納されたプログラム処理回路に送信する段階と、を備える。本発明の一実施形態によると、システムが提供されるが、前記システムは、第1サーバーを含み、前記第1サーバーは、格納されたプログラムの処理回路、第1ネットワークインターフェース回路及び第1メモリモジュールを含み、前記第1メモリモジュールは、第1メモリダイとコントローラ手段を含み、前記コントローラ手段は、メモリインターフェースを介して前記第1メモリダイに連結され、キャッシュコヒーレントインターフェースを介して前記格納されたプログラム処理回路に連結され、前記第1ネットワークインターフェース回路に連結される。
図1Cを参照すると、いくつかの実施形態では、サーバーシステムは、ラックイーサネットスイッチ110ToR(Top of Rack)のイーサネットスイッチ110によって共に連結された1つ以上のサーバー105を含む。各サーバーは、(i)システムメモリ120(例えば、DDR4メモリ)、(ii)1つ以上のネットワークインターフェース回路125、及び(iii)改善された機能のCXLスイッチ130に個別に連結される1つ以上の処理回路115を含む。改善された機能のCXLスイッチ130は、複数のメモリモジュール135に連結される。すなわち、図1Cのシステムは、格納されたプログラム処理回路115、ネットワークインターフェース回路125、キャッシュコヒーレントスイッチ130及び第1メモリモジュール135を含む第1サーバー105を含む。図1Cのシステムでは、第1メモリモジュール135は、キャッシュコヒーレントスイッチ130に連結され、キャッシュコヒーレントスイッチ130は、ネットワークインターフェース回路125に連結され、格納されたプログラム処理回路115は、キャッシュコヒーレントスイッチ130に連結される。
メモリモジュール135は、タイプ、フォームファクタ(form factor)又はテクノロジータイプ(例えば、DDR4、DRAM、LDPPR、高帯域幅のメモリ(HBM)、NAND、フラッシュ、又はその他の永続性ストレージ(例えば、NANDフラッシュを統合するSSD(solid state drives))によりグループ化される。各メモリモジュールは、CXLインターフェースを有することができ、CKLパケットとメモリモジュール135のメモリに適した信号との間を変換するためのインターフェース回路を含み得る。いくつかの実施形態では、これらインターフェース回路は、改善された機能のCXLスイッチ130の代わりに存在し、メモリモジュール135の各々は、インターフェース、すなわち、メモリモジュール135のメモリの固有インターフェースを有する。いくつかの実施形態では、改善された機能のCXLスイッチ130は、メモリモジュール135(例えば、メモリモジュール135の他の構成要素を有するM.2フォームファクタパッケージ、又は前記メモリモジュール135の他の構成要素を有する単一の集積回路)に統合される。
ToRイーサネットスイッチ110は、異なるサーバー上に集合するメモリ装置間のRDMAリクエストを容易にするためのインターフェースのハードウェアを含み得る。改善された機能のCXLスイッチ130は、処理回路115をバイパスすることにより、(i)ワークロードに基づいて、データを異なるメモリタイプにルーティングし、(ii)ホストアドレスを装置アドレスに仮想化し、そして/又は(iii)異なるサーバー間のRDMAリクエストを容易にする1つ以上の回路(例えば、FPGA又はASICを含むこともある)を含み得る。
メモリモジュール135は、拡張ボックス(たとえば、エンクロージャのマザーボードを収容するエンクロージャと同じラックにある)に存在でき、前記拡張ボックスは、適切なコネクタに各々連結される予め所定の数(例えば、20個以上又は100個以上)のメモリモジュール135を含み得る。前記モジュールは、M.2フォームファクタ内に存在でき、前記コネクタは、M.2コネクタであり得る。いくつかの実施形態では、サーバー間の連結は、イーサネットではなく、異なるネットワーク上で行われ、例えば、WiFi又は5G連結のようなワイヤレス連結であり得る。各処理回路は、x86プロセッサ又は他のプロセッサ、例えば、ARMプロセッサ又はGPUであり得る。CXLリンクがインスタンス化されるPCIeリンクは、PCIe5.0又は他のバージョン(例えば、以前のバージョン又は向後(例えば、将来の)バージョン(例えば、PCIe 6.0))であり得る。いくつかの実施形態では、異なるキャッシュコヒーレントプロトコルが、システムでCXLに代わって、又はCXLに追加して使用され、異なるキャッシュコヒーレントスイッチが向上された機能のCXLスイッチ130の代わりに、又はこれに追加して使用される。このようなキャッシュコヒーレントプロトコルは、他の標準プロトコル又は標準プロトコルのキャッシュコヒーレントの変形であり得る(CXLがPCIe5.0の変形的な方法と類似した方法で)。標準プロトコルの例は、不揮発性デュアルインラインメモリモジュール(バージョンP)(NVDIMM−P)、アクセラレータ用のキャッシュコヒーレントインターコネクト(相互連結)(CCIX)及びOpenCAPI(Open Coherent Accelerator Processor Interface)を含み、これに限定されない。
システムメモリ120は、例えば、DDR4メモリ、DRAM、HBM又はLDPPRメモリを含み得る。メモリモジュール135は、分割されるか、又は多数のメモリタイプを扱うために、キャッシュコントローラを含み得る。メモリモジュール135は、異なるフォームファクタにすることができ、その例としてはHHHL、FHHL、M.2、U.2、メザニーン(mezzanine)カード、ドーター(daughter)カード、E1.S、E1.L、E3.L、及びE3.Sを含み、これに限定されない。
いくつかの実施形態では、前記システムは、1つ以上のサーバーを含む集合アーキテクチャを具現化し、各サーバーは、多数のCXL付着のメモリモジュール135の集合体からなる。各々のメモリモジュール135は、メモリ装置として多数の処理回路115に個別に露出される多数のパーティションを含み得る。改善された機能のCXLスイッチ130の各入力ポートは、改善された機能のCXLスイッチ130と、これに連結されたメモリモジュール135の多数の出力ポートに独立的にアクセスすることができる。本明細書で使用されるように、改善された機能のCXLスイッチ130の「入力ポート」又は「アップストリームポート」は、PCIeルートポートに連結される(又は連結するのに適した)ポートであり、改善された機能のCXLスイッチ130の「出力ポート」又は「ダウンストリームポート」は、PCIeエンドポイントに連結される(又は連結するのに適した)ポートである。図1Aの実施形態の場合のように、各メモリモジュール135は、メモリ範囲としてホストのBIOSにベースアドレスレジスタ(BARs)のセットを露出することができる。メモリモジュール135のうち、いずれか1つ以上は、ホストOSマップを支えるメモリ空間を透明に管理するファームウェアを含み得る。
いくつかの実施形態では、前述したように、改善された機能のCXLスイッチ130は、FPGA(又はASIC)コントローラ137を含み、CXLパケットのスイッチング以上の付加的な特徴を提供する。たとえば、拡張機能のCXLスイッチ130は、(前述したように、)メモリモジュール135を仮想化し、すなわち、処理回路側のアドレス(又は「プロセッサ側のアドレス、すなわち、処理回路115によって発行されるリード(read)及びライト(write)コマンドに含まれるアドレス)と、メモリ側のアドレス(つまり、向上された機能のCXLスイッチ130によって採用された、メモリモジュール135でのストレージ位置をアドレス化するアドレス)との間で変換する変換レイヤーとして動作し、それに応じてメモリモジュール135の物理アドレスをマスキングしてメモリの仮想集合(virtual aggregation)を提供する。改善された機能のCXLスイッチ130のコントローラ137はまた、メモリモジュール135に対する管理装置として動作し、ホスト制御のプレーン処理を容易にする。コントローラ137は、処理回路115の参加なしにデータを透明に移動させることができ、したがって後続のアクセスが、期待どおりに機能するようにメモリマップ(又は「アドレス変換テーブル」)をアップデートすることができる。コントローラ137は、(i)ランタイムのうち、アップストリーム及びダウンストリーム連結を適切にバインド(binding)及びアンバインド(unbinding、バインド解除)することができ、(ii)メモリモジュール135内外へのデータの移転に関連する豊富な制御セマンティック(semantics)と統計を可能にすることができるスイッチの管理装置を含み得る。コントローラ137は、他のサーバー105又は他のネットワーク装置に連結するための追加の「バックドア」100 GbE又は他のネットワークインターフェース回路125(ホストに連結するために使用されるネットワークインターフェースに追加して)を含み得る。いくつかの実施形態では、コントローラ137は、タイプ2装置として処理回路115に提供し、これはリモートライト(write)リクエストを受信したとき、処理回路115に対するキャッシュの無効化コマンドの発行を可能にする。いくつかの実施形態では、DDIOテクノロジーこのイネーブルされ、リモートデータは、先に処理回路の最後レベルのキャッシュ(LLC)にプル(pull)され、後でメモリモジュール135(キャッシュから)に記録される。
前述したように、メモリモジュール135のうち、いずれか1つ以上は、永続性ストレージ装置を含み得る。メモリモジュール135が永続性装置に提供される場合には、改善された機能のCXLスイッチ130のコントローラ137は、永続性ドメインを管理することができ、例えば、永続性ストレージ装置を必要とするとき(例えば、対応するオペレーティングシステム機能の使用により)、処理回路115によって識別されるデータを永続性ストレージ装置に格納することができる。このような実施形態では、ソフトウェアAPIは、キャッシュとデータを永続性ストレージ装置にフラッシュ(flush)することができる。
いくつかの実施形態では、メモリモジュール135へのダイレクトメモリ移転(direct memory transfer)は、メモリモジュール135のコントローラによって遂行される動作は、改善された機能のCXLスイッチ130のコントローラ137によって行われながら、図1A及び図1Bの実施形態について前述したような、類似の方法で行われる。
前述したように、いくつかの実施形態では、メモリモジュール135は、グループに組織化され、例えば、メモリを集約的一つのグループ、HBM重みのもう一つのグループは、限られ密度及び性能を有するもう一つのグループと、密度が高いもう一つのグループに組織化される。このようなグループは、異なるフォームファクタを有するか、又は異なるテクノロジーに基づくことができる。改善された機能のCXLスイッチ130のコントローラ137は、例えば、ワークロード、タギング又はサービスの品質(QoS)に基づいて、知能的にデータ及びコマンドをルーティングすることができる。リード(read)リクエストに対して、このような因子に基づいたルーティングがない可能性がある。
改善された機能の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のうち、いずれか1つ以上はフラッシュメモリ(例えば、NANDフラッシュ)を含み、改善された機能のCXLスイッチ130のコントローラ137は、このフラッシュメモリに対するフラッシュ変換レイヤーを具現化する。フラッシュ変換レイヤーは、プロセッサ側のメモリ位置のオーバーライト(overwriting)(前記データを異なる位置に移動し、前記データの以前の位置を無効なものとマークすることにより、)をサポートすることができ、フラッシュ変換レイヤーは、ガベージコレクション(無効なものとマークされるブロックのデータの割合がしきい値を超えると、前記ブロック内のすべての有効なデータを他のブロックに移転した後ブロックを消去する)を行うことができる。
いくつかの実施形態において、向上された機能のCXLスイッチ130のコントローラ137は、物理的な機能移転(PF transfer)に対するPFを容易にすることができる。例えば、処理回路115のうち、1つが一つの物理アドレスから他の物理アドレスにデータを移動する必要がある場合(同一の仮想アドレスを有することができ、この事実は処理回路115の動作に影響を与える必要がない)又は処理回路115が(処理回路115が必要とする)、2つの仮想アドレス間でデータを移動させる必要があれば、改善された機能のCXLスイッチ130のコントローラ137は、処理回路115の介入なしに、移転(transfer)を管理することができる。例えば、処理回路115は、CXLリクエストを送信することができ、データは処理回路115に行かずに一つのメモリモジュール135から改善された機能のCXLスイッチ130背後の他のメモリモジュール135に送信されることがある(例えば、データは、1つのメモリモジュール135から他のメモリモジュール135にコピーされる)。このような状況で、処理回路115がCXLリクエストを開始したため、処理回路115は、一貫性を保障するために処理回路115のキャッシュをフラッシュする必要があり得る。代わりに、Type2のメモリ装置(例えば、メモリモジュール135のうちのいずれか1つ、又はCXLスイッチに連結されることもあるアクセラレータ)がCXLリクエストを開始し、スイッチが仮想化されていない場合には、Type2のメモリ装置は、メッセージを処理回路に送ってキャッシュを無効化する
いくつかの実施形態では、向上された機能のCXLスイッチ130のコントローラ137は、サーバー間のRDMAリクエストを容易にすることができる。リモートサーバー105は、このようなRDMAリクエストを開始することができ、前記リクエストはToRイーサネットスイッチ110を介して送信されることがあり、RDMAリクエストに応答するサーバー(「ローカルサーバー」)105の向上された機能のCXLスイッチ130に到着することができる。改善された機能のCXLスイッチ130は、このようなRDMAリクエストを受信するように構成されることがあり、受信サーバー105(すなわち、RDMAリクエストを受信するサーバー)のメモリモジュール135のグループをそれ自身のメモリ空間として扱うすることができる。ローカルサーバーで、向上された機能のCXLスイッチ130は、ダイレクトRDMAリクエスト(つまり、ローカルサーバーで処理回路115を介してルーティングされないRDMAリクエスト)としてRDMAリクエストを受信することができ、ダイレクトレスポンスを前記RDMAリクエストに転送することができる(つまり、ローカルサーバーの処理回路115を介してルーティングされず、前記応答を送信することができる)。リモートサーバーで前記応答(例えば、ローカルサーバーによって送信されるデータ)は、リモートサーバーの向上された機能のCXLスイッチ130によって受信されることがあり、リモートサーバーの処理回路115を介してルーティングされずに、リモートサーバーのメモリモジュール135に格納される。
図1Dは、処理回路115が向上された機能のCXLスイッチ130を介してネットワークインターフェース回路125に連結される図1Cのシステムと類似したシステムを示す。改善された機能の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は、ルートポート・ツー・エンドポイント(root port to end point)PCIe連結を介してネットワークインターフェース回路125と通信することができている。改善された機能のCXLスイッチ130のコントローラ137(処理回路115及びネットワークインターフェース回路125に連結されるPCIe入力ポートを有し得る)は、ピア・ツー・ピアPCIe連結を介してネットワークインターフェース回路125と通信することができる。
本発明の一実施形態によると、第1サーバーを含むシステムが提供され、格納されたプログラムの処理回路、ネットワークインターフェース回路、キャッシュコヒーレントスイッチ、及び第1メモリモジュールを含み、前記第1メモリモジュールは、前記キャッシュコヒーレントスイッチに連結され、前記キャッシュコヒーレントスイッチは、前記ネットワークインターフェース回路に連結され、前記格納されたプログラム処理回路は、前記キャッシュコヒーレントスイッチに連結される。いくつかの実施形態では、前記システムは、前記キャッシュコヒーレントスイッチに連結される第2メモリモジュールをさらに含み、前記第1メモリモジュールは揮発性メモリを含み、前記第2メモリモジュールは永続性メモリを含む。いくつかの実施形態では、前記キャッシュコヒーレントスイッチは、前記第1メモリモジュール及び前記第2メモリモジュールを仮想化するように構成される。いくつかの実施形態では、前記第1メモリモジュールはフラッシュメモリを含み、前記キャッシュコヒーレントスイッチは、フラッシュメモリに対するフラッシュ変換レイヤーを提供するように構成される。いくつかの実施形態では、前記キャッシュコヒーレントスイッチは、前記第1メモリモジュールで第1メモリ位置のアクセス周波数をモニタリングし、前記アクセス頻度が第1しきい値を超えると決定し、前記第1メモリ位置の内容を第2メモリの位置にコピーし、前記第2メモリ位置は第2メモリモジュールに存在する。いくつかの実施形態で、前記第2メモリモジュールは、高帯域幅のメモリ(HBM)を含む。いくつかの実施形態では、前記キャッシュコヒーレントスイッチは、プロセッサ側のアドレスをメモリ側アドレスにマッピングするためのテーブルを維持するように構成される。いくつかの実施形態で、前記システムは、第2サーバーと、前記第1サーバー及び前記第2サーバーに連結されるネットワークスイッチと、をさらに含む。いくつかの実施形態で、前記ネットワークスイッチは、ToR(top of rack)イーサネットスイッチを含む。いくつかの実施形態で、前記キャッシュコヒーレントスイッチは、ストレート(straight)RDMA(remote direct memory access)リクエストを受信し、ストレートRDMA応答を送信するように構成される。いくつかの実施形態で、前記キャッシュコヒーレントスイッチは、前記ToRイーサネットスイッチを介して、ネットワークインターフェース回路を介して前記RDMAリクエストを受信し、前記ToRイーサネットスイッチを介して、そして前記ネットワークインターフェース回路を介してストレートRDMA応答を送信するように構成される。いくつかの実施形態では、キャッシュコヒーレントインターフェースは、CXL(Compute Express Link)プロトコルをサポートするように含む。いくつかの実施形態で、前記第1サーバーは、前記第1サーバーの拡張ソケットに連結される拡張ソケットアダプタを含み、前記拡張ソケットアダプタは、キャッシュコヒーレントスイッチ及びメモリモジュールソケットを含み、前記第1メモリモジュールは、前記メモリモジュールソケットを介して前記キャッシュコヒーレントスイッチに連結される。いくつかの実施形態で、前記メモリモジュールソケットは、M.2ソケットを含む。いくつかの実施形態で、前記ネットワークインターフェース回路は、拡張ソケットアダプタ上に位置する。本発明の一実施形態によると、コンピューティングシステムで、リモートダイレクトメモリアクセスを遂行する方法であって、前記コンピューティングシステムは第1サーバー及び第2サーバーを含み、前記第1サーバーは、格納されたプログラムの処理回路、ネットワークインターフェース回路、及びコントローラを含む第1メモリモジュールを含む、前記方法は、前記キャッシュコヒーレントスイッチによってストレートRDMAリクエストを受信する段階と、前記キャッシュコヒーレントスイッチによってストレートRDMA応答を送信する段階と、を備える。いくつかの実施形態で、前記コンピューティングシステムはイーサネットスイッチをさらに含み、前記ストレートRDMAリクエストを受信する段階は、前記イーサネットスイッチを介して前記ストレートRDMAリクエストを受信する段階を含む。いくつかの実施形態では、前記方法は、前記キャッシュコヒーレントスイッチによって格納されたプログラム処理回路から第1メモリアドレスに対するリード(read)コマンドを受信する段階と、前記キャッシュコヒーレントスイッチによって前記第1メモリアドレスを第2メモリアドレスに変換する段階と、前記キャッシュコヒーレントスイッチによって前記第2メモリアドレスで第1メモリモジュールからデータを検索する段階と、を備える。いくつかの実施形態で、前記方法は、キャッシュコヒーレントスイッチによってデータを受信する段階と、前記キャッシュコヒーレントスイッチによって前記第1メモリモジュールにデータを格納する段階と、前記キャッシュコヒーレントスイッチによってキャッシュラインを無効化するためのコマンドを前記格納されたプログラム処理回路に送信する段階と、備える。本発明の一実施形態によると、第1サーバーを含むシステムが提供され、格納されたプログラムの処理回路と、ネットワークインターフェース回路と、キャッシュコヒーレントスイッチング手段と、第1メモリモジュールと、を備え、前記第1メモリモジュールは前記キャッシュコヒーレントスイッチング手段に連結され、前記キャッシュコヒーレントスイッチは前記ネットワークインターフェース回路に連結され、前記格納されたプログラム処理回路は前記キャッシュコヒーレントスイッチング手段に連結される。
図1Eは、複数のサーバー105の各々が示されているように、PCIe機能を有するPCIe5.0のCXLスイッチの可能性がるToRサーバーリンクスイッチ(server-linking switch)112に連結される実施形態を図示する。サーバーリンクスイッチ112は、FPGAやASICを含むことができ、イーサネットスイッチより優れた性能(スループット(throughput)とレイテンシ(latency)の側面から)を提供することができる。サーバー105の各々は、改善された機能のCXLスイッチ130と、1つ以上のPCIeコネクタを介してサーバーリンクスイッチ112に連結される複数のメモリモジュール135を含み得る。サーバー105の各々は、また図示されたように、1つ以上の処理回路115及びシステムメモリ120を含み得る。サーバーリンクスイッチ112は、マスターとして動作することができ、改善された機能のCXLのスイッチ130の各々は、以下でより詳細に記述されているように、スレーブとして動作することができる。
図1Eの実施形態では、サーバーリンクスイッチ112は、異なるサーバー105から受信される多数のキャッシュリクエストをグループ化するか、又はバッチ(batch)することができ、パケットをグループ化して制御オーバーヘッドを減少させることができる。改善された機能のCXLスイッチ130は、(i)のワークロードに基づいた異なるメモリタイプのデータをルーティングし、(ii)プロセッサ側アドレスをメモリ側アドレスに仮想化し、(iii)処理回路115をバイパスすることにより、異なるサーバー105間のコヒーレントリクエスト(coherent requests)を容易にするために、スレーブコントローラ(例えば、スレーブFPGA又はスレーブASIC)を含み得る。図1Eに図示されたシステムは、CXL2.0ベースであり得、ラック(rack)内に分散される共有メモリを含むことができ、リモートノードと基本的に(natively)連結するためにToRサーバーリンクスイッチ112を使用することができる。
ToRサーバーリンクスイッチ112は、他のサーバー又はクライアントに連結するための追加のネットワーク連結(例えば、図示されたイーサネット連結又は他の種類の連結、例えば、WiFi連結又は5G連結などの無線(ワイヤレス)連結)を有し得る。サーバーリンクスイッチ112及び向上された機能のCXLスイッチ130は、各々、ARMプロセッサのような処理回路であるか、又はこれを含むコントローラを備え得る。PCIeインターフェースは、PCIe5.0の標準又は前記PCIe標準の以前のバージョン若しくは将来のバージョンに従うか、他の標準(例えば、NVDIMM-P、CCIX又はOpenCAPI)に従うインターフェースが、PCIeインターフェースの代わりに採用されることがある。メモリモジュール135は、DDR4 DRAM、HBM、LDPPR、NANDフラッシュ又はSSD(Solid State Drives)を含む多様なメモリタイプを含み得る。メモリモジュール135は分割されるか、又は多数のメモリタイプを扱うためにキャッシュコントローラを含むことができ、HHHL、FHHL、M.2、U.2、メザニーン(mezzanine)カード、ドーターカード、E1.S、 E1.L、E3.L又はE3.Sのような異なるフォームファクタ内に有り得る。
図1Eの実施形態では、改善された機能のCXLスイッチ130は、一対多及び多対一のスイッチングを可能にすることができ、フリート(flit)(64byte)レベルでファイングレインロードストア(fine grain load-store)インターフェースを可能にすることができる。各サーバーは、集合したメモリ装置を有することができ、各装置は、各LD-IDを有する多数の論理装置に分割される。ToRスイッチ112(「サーバーリンクスイッチ」と呼ばれることがある)は、一対多の機能を可能にし、サーバー105の向上された機能のCXLスイッチ130は、多対一の機能を可能にする。サーバーリンクスイッチ112は、PCIeスイッチ、CXLスイッチ又は両方である可能性もある。このようなシステムで、リクエスタ(requester)は、多数のサーバー105の処理回路115であり、レスポンダー(responder)は多くの集合したメモリモジュール135であり得る。2つのスイッチのレイヤー(前述したように、マスタースイッチはサーバーリンクスイッチ112であり、スレーブスイッチは拡張機能のCXLスイッチ130である)は、任意のもの間(any-any)の通信を可能にする。メモリモジュール135の各々は、一つの物理的な機能(PF)と最大16個の独立した論理装置を有し得る。いくつかの実施形態では、論理装置の数(例えば、パーティションの数)は、限定されることがあり(例えば、16個)、1つの制御パーティション(装置を制御するために使用される物理的な機能の可能性あり)がまた、存在することができる。各々のメモリモジュール135は、処理回路115が保有することができるキャッシュラインコピーを処理するためにCXL.cache、CXL.mem、CXL.io及びアドレス変換サービス(ATS)実施を有するタイプ2装置であり得る。改善された機能のCXLスイッチ130とファブリックマネージャーは、メモリモジュール135の発見を制御し、(i)装置の検出、仮想CXLソフトウェアの生成を遂行し、(ii)仮想化を物理ポートにバインドすることができる。図1A〜図1Dの実施形態のように、ファブリックマネージャーは、SMBusサイドバンド上で連結を介して動作することができる。IPMI(Intelligent Platform Management Interface)又はレッドフィッシュ(Redfish)標準に準拠する(そして標準から要請していない追加機能を提供することもできる)インターフェースであり得るメモリモジュール135に対するインターフェースは、構成可能性をイネーブルすることができる。
前述したように、いくつかの実施形態は、サーバーリンクスイッチ112の一部であるマスターコントローラ(FPGA又はASICで実施されることがある)及び向上された機能のCXLスイッチ130の一部スレーブコントローラを有する階層構造を実装してロードストアインターフェース(つまり、ソフトウェアドライバの介入なしにコヒーレントドメイン内で動作するキャッシュライン(例えば、64バイト)粒度(granularity)を有するインターフェース)を提供する。このようなロードストアインターフェースは、個々のサーバー、CPU、又はホストを越えてコヒーレントドメインを拡張することができ、電気的又は光学的である物理的媒体を含み得る(例えば、両端部で電気・光トランシーバとの光学連結)。動作時に、マスタコントローラ(サーバー・リンクスイッチ112)は、ラック上のすべてのサーバー105を起動(又は「再起動」)して構成する。前記マスタコントローラは、すべてのホストに対する可視性を有することができ、(i)各サーバーを発見し、どのくらいの多くのサーバー105とメモリモジュール135が、サーバークラスタに存在するかを発見し、(ii)サーバー105の各々を独立して構成し、(iii)例えば、ラックの構成に基づいて、異なるサーバー上のメモリの一部のブロックをイネーブル又はディセーブルし(例えば、メモリモジュール135のうち、いずれか一つのイネーブル又はディセーブルし)、(iv)アクセスを制御し(例えば、あるサーバーがもう他のサーバーを制御することができる)、(v)フロー制御を実現し(例えば、すべてのホスト及び装置のリクエストが前記マスターを通過するため、一つのサーバーから他のサーバーにデータを送信し、前記データに対するフロー制御を遂行する)、(vi)リクエスト又はパケットをグループ化又はバッチし(例えば、多数のキャッシュリクエストは、異なるサーバー105からマスターによって受信される)、及び(vii)リモートソフトウェアのアップデート、放送通信などを受信することができる。バッチモードで、サーバーリンクスイッチ112は、同じサーバーに向かう(例えば、第1サーバーに向かう)複数のパケットを受信して、パケットを共に(つまり、パケット間の中止なしに)第1サーバーに送信することができる。たとえば、サーバーリンクスイッチ112は、第2サーバーから第1パケットを受信し、第3サーバーから第2パケットを受信し、前記第1パケット及び第2パケットを共に第1サーバーに転送することができる。サーバー105の各々は、マスタコントローラに、(i)IPMIネットワークインターフェース、(ii)システムイベントログ(SEL)及び(iii)ボード管理コントローラ(BMC)を露出してマスターコントローラが性能を測定し、信頼性を状況に応じて(on the fly)測定し、サーバー105を再構成することができるようにする。
いくつかの実施形態では、高い利用可能性のロードストアインターフェースを容易にするソフトウェアアーキテクチャが使用される。このようなソフトウェアアーキテクチャは、信頼性、複製、一貫性、システムコヒーレンス、ハッシュ、キャッシュ、及び持続性を提供することができる。前記ソフトウェアアーキテクチャは、IPMIを介してCXL装置の構成要素に対する周期的なハードウェアチェックを遂行することにより、(多くのサーバーの数を有するシステムにおいて)信頼性を提供することができる。たとえば、サーバーリンクスイッチ112は、IPMIインターフェースを介してメモリサーバー150の状態をクエリ(query)するために、例えば、電源の状態(メモリサーバー150の電源供給装置が適切に機能しているか否か)、ネットワーク状態(サーバーリンクスイッチ112へのインターフェースが適切に動作しているか否かの可否)、及びエラーチェック状態(エラーコンディションがメモリサーバー150のサブシステムのいずれかに存在するか否かの可否)をクエリ(query)する。前記ソフトウェアアーキテクチャは、複製を提供することができるかに応じて、マスターコントローラがメモリモジュール135に格納されたデータを複製し、レプリカ間のデータ一貫性を維持することができる。
ソフトウェアアーキテクチャは、一貫性を提供することから、マスターコントローラが異なる一貫性のレベルで構成されることがあり、サーバーリンクスイッチ112は、維持される一貫性のレベルに応じてパケットフォーマットを調整することができる。たとえば、最終の一貫性が維持される場合には、サーバーリンクスイッチ112は、リクエストを再配置することができる一方で、厳格な一貫性を維持するためには、サーバーリンクスイッチ112は、スイッチにおいて、正確なタイムスタンプを有してすべてのリクエストのスコアボードを維持することができる。ソフトウェアアーキテクチャは、システムコヒーレンスを提供することから、多数の処理回路115は、同じメモリアドレスからリード(read)又はライト(write)することができ、マスターコントローラは、コヒーレンスを維持するために(ディレクトリルックアップを使用して)アドレスのホームノードに到達するか、又は共通のバス上でリクエストをブロードキャストする責任を有する。
ソフトウェアアーキテクチャは、ハッシュ(hashing)を提供することができ、サーバーリンクスイッチ112と及び向上された機能のCXLスイッチが、起動時にすべてのノードにわたってすべてのCXL装置にデータを均等にマッピングするために(又は1つのサーバーがダウンされたり、動作したりするときに調整するために)多数のハッシュ機能と一貫性のあるハッシュを使用できるアドレスの仮想マッピング(mapping)を維持することができる。ソフトウェアアーキテクチャは、キャッシュを提供することができ、マスターコントローラ(例えば、HBM又は類似の能力を有するテクノロジーを含むメモリモジュール135から)は、任意のメモリパーティションを指定してキャッシュ(ライトスルー(write-through)キャッシュ又はライトバック(write-back)キャッシュを使用すること)として作動することができる。ソフトウェアアーキテクチャは、持続性を提供することから、それに応じてマスターコントローラとスレーブコントローラが、永続性ドメインとフラッシュを管理することができる。
いくつかの実施形態では、CXLスイッチの能力は、メモリモジュール135のコントローラに統合される。このような実施形態では、サーバーリンクスイッチ112は、それにもかかわらず、マスターとして動作することができ、ここでの他の所でも、前述したように、改善された特徴を有し得る。サーバーリンクスイッチ112は、またシステムの他のストレージ装置を管理することができ、例えば、サーバーリンクスイッチ112によって形成されたPCIeネットワークの一部ではないクライアントマシンに連結するためのイーサネット連結(例えば、100GbE連結)を有し得る。
いくつかの実施形態では、サーバーリンクスイッチ112は、改善された機能を有してまた統合されたCXLコントローラを含む。他の実施形態では、サーバーリンクスイッチ112は、物理的ルーティング装置であるだけであり、各サーバー105は、マスターCXLコントローラを含む。このような実施形態では、異なるサーバーにまたがるマスタは、マスタ・スレーブのアーキテクチャについて交渉することができる。(i)改善された機能のCXLスイッチ130、及び(ii)サーバーリンクスイッチ112のインテリジェント(知能型)機能は、1つ以上のFPGA、1つ以上のASIC、1つ以上のARMプロセッサ、又はコンピューティング機能を有する1つ以上のSSD装置で具現化されことがある。サーバーリンクスイッチ112は、例えば、独立したリクエストを並べ替えることにより、フロー制御を行うことができる。いくつかの実施形態では、インターフェースがロードストアであるため、RDMAはオプションであるが、PCIe物理的媒体(メディア)(100GbEの代わりに)を使用する介在のRDMAリクエストがあり得る。このような実施形態では、リモートホストはRDMAリクエストを開始することができ、前記RDMAリクエストは、サーバーリンクスイッチ112を介して向上された機能のCXLスイッチ130に転送されることがある。前記サーバーリンクスイッチ112及び向上された機能のCXLスイッチ130は、RDMA 4KBリクエスト又はCXLのフリート(64バイト)のリクエストに優先順位をつけることができる。
図1C及び図1Dの実施形態のように、改善された機能のCXLスイッチ130は、このようなRDMAリクエストを受信するように構成することがあり、受信サーバー105(すなわち、RDMAリクエストを受信するサーバー)のメモリモジュール135のグループをそれ自身のメモリ空間として扱うことができる。なお、向上された機能のCXLスイッチ130は、処理回路115にわたって仮想化し、リモートの向上された機能CXLのスイッチ130に対するRDMAリクエストを開始し、処理回路115が関与する必要なしに、サーバー105間でデータを前後に移動することができる。
図1Fは、処理回路115が、向上された機能のCXLスイッチ130を介してネットワークインターフェース回路125に連結される図1Eのシステムと類似したシステムを示す。図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エンドポイントの可能性あり)、ネットワークインターフェース回路125に連結される処理回路115は、ルートポート・ツー・エンドポイントPCIe連結を介してネットワークインターフェース回路125と通信することができ、前記向上された機能のCXLスイッチ130のコントローラ137(処理回路115及びネットワークインターフェース回路125に連結されたPCIe入力ポートを有し得る)は、ピア・ツー・ピアPCIe連結を介してネットワークインターフェース回路125と通信することができる。
本発明の一実施形態によると、第1サーバー、第2サーバー、及び前記第1サーバーと前記第2サーバーに連結されたサーバーリンクスイッチを含むシステムが提供され、前記第1サーバーは格納されたプログラムの処理回路、キャッシュコヒーレントスイッチ及び第1メモリモジュールを含み、前記第1メモリモジュールは前記キャッシュコヒーレントスイッチに連結され、前記キャッシュコヒーレントスイッチは前記サーバーリンクスイッチに連結され、前記格納されたプログラム処理回路は前記キャッシュコヒーレントスイッチに連結される。いくつかの実施形態では、サーバーリンクスイッチは、PCIe(Peripheral Component Interconnect Express)スイッチを含む。いくつかの実施形態では、サーバーリンクスイッチはCXL(Compute Express Link)スイッチを含む。いくつかの実施形態で、サーバーリンクスイッチはToR(Top of rack)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パケット及び前記第2パケットを前記第1サーバーに送信する段階と、を備える。いくつかの実施形態で、前記方法は、前記キャッシュコヒーレントスイッチによってストレートRDMAリクエストを受信する段階と、前記キャッシュコヒーレントスイッチによってストレートRDMA応答を送信する段階と、をさらに備える。いくつかの実施形態で、前記ストレートRDMAリクエストを受信する段階は、前記サーバーリンクスイッチを介して前記ストレートRDMAリクエストを受信する段階を含む。いくつかの実施形態では、前記方法は、前記キャッシュコヒーレントスイッチによって格納されたプログラム処理回路から第1メモリアドレスに対するリード(read)コマンドを受信する段階と、前記キャッシュコヒーレントスイッチにより前記第1メモリアドレスを第2メモリアドレスに変換する段階と、前記キャッシュコヒーレントスイッチにより前記第2メモリアドレスで第1メモリモジュールからデータを検索する段階と、を備える。本発明の一実施形態によると、第1サーバー、第2サーバー、並びに前記第1サーバー及び前記第2サーバーに連結されたサーバーリンクスイッチを含み、前記第1サーバーは、格納されたプログラムの処理回路、キャッシュコヒーレントスイッチング手段及び第1メモリモジュールを含み、前記第1メモリモジュールは前記キャッシュコヒーレントスイッチング手段に連結され、前記キャッシュコヒーレントスイッチング手段は前記サーバーリンクスイッチングに連結され、前記格納されたプログラムの処理回路は、前記キャッシュコヒーレントスイッチング手段に連結される。
図1Gは、複数のメモリサーバー150の各々が示されているように、PCIe5.0 CXLスイッチであり得るToRサーバーリンクスイッチ112に連結される実施形態を示している。図1E及び図1Fの実施形態では、サーバーリンクスイッチ112は、FPGAやASICを含むことができ、イーサネットスイッチより優れている性能(スループット(throughput)とレイテンシ(latency)の側面から)を提供することができている。図1E及び図1Fの実施形態のように、メモリサーバー150は、複数のPCIeコネクタを介してサーバーリンクスイッチ112に連結された複数のメモリモジュール135を含み得る。図1Gの実施形態で、処理回路115及びシステムメモリ120は、不在であり得る、メモリサーバー150の主な目的は、コンピューティングリソースを有する他のサーバー105による使用のためにメモリを提供することであり得る。
図1Gの実施形態では、サーバーリンクスイッチ112は、異なるメモリサーバー150から受信される多数のキャッシュリクエストをグループ化又はバッチすることができ、パケットをグループ化して制御オーバーヘッドを減少させることができる。改善された機能のCXLスイッチ130は、(i)ワークロードに基づいて、データを異なるメモリタイプにルーティングし、(ii)プロセッサ側のアドレスを仮想化するために(このようなアドレスをメモリ側のアドレスに変換するために)構成可能なハードウェアビルディングブロックを含み得る。図1Gに図示されたシステムは、CXL 2.0ベースである可能性があり、ラック(rack)内に構成可能でありながら、集合していない共有メモリを含むことができ、リモート装置にプールされた(pooled)(すなわち、集合した)メモリを提供するために、ToRサーバーリンクスイッチ112を使用することができる。
ToRサーバーリンクスイッチ112は、他のサーバー又はクライアントに連結するための追加のネットワーク連結(例えば、図示されたイーサネット連結又は他の種類の連結、例えば、WiFi連結又は5G連結などのようなワイヤレス(無線)連結)を有し得る。サーバーリンクスイッチ112及び向上された機能のCXLスイッチ130は、各々、ARMプロセッサのような処理回路、又はこれを含むコントローラを含み得る。PCIeインターフェースは、PCIe5.0の標準、前記PCIe標準の以前のバージョン、将来のバージョンに従うか、又は他の標準(例えば、NVDIMM-P、CCIX又はOpenCAPI)がPCIeの代わりに採用されることがある。メモリモジュール135は、DDR4 DRAM、HBM、LDPPR、NANDフラッシュとSSD(Solid State Drives)を含む多様なメモリタイプを含み得る。メモリモジュール135は、分割されたり、多数のメモリタイプを扱うために、キャッシュコントローラを含んだりすることができ、HHHL、FHHL、M.2、U.2、メザニーン(mezzanine)カード、ドーターカード、E1.S、 E1.L、E3.L又はE3.Sのような、異なるフォームファクタ内に有り得る。
図1Gの実施形態で、改善された機能のCXLスイッチ130は、一対多と多対一のスイッチングを可能にすることができ、フリート(flit)(64-byte)レベルで微細粒子ロードストア(load- sToRe)インターフェースを可能にすることができる。各メモリサーバー150は、一連のされたメモリ装置を有することができ、各装置は、各LD-IDを有する1つ以上の論理装置に分割される。改善された機能のCXLスイッチ130は、コントローラ137(例えば、ASIC又はFPGA)、装置発見のための回路、エニュメレーション(enumeration)、分割(partitioning)及び物理アドレスの範囲の提供のための回路(このようなASIC又はFPGAから又はその一部から分離されることがある)を含み得る。メモリモジュール135の各々は、一つの物理的な機能(PF)と最大16個の分離された(isolated)論理装置を有し得る。いくつかの実施形態で、論理装置の数(例えば、パーティションの数)は、限られることがあり(例えば、16個まで)、1つの制御パーティション(前記装置を制御するために使用される物理的な機能の可能性あり)がまた存在することができる。メモリモジュール135の各々は、処理回路115が保有することができるキャッシュラインコピーを処理するためにCXL.cache、CXL.mem、CXL.io及びアドレス変換サービス(ATS)の実現を有するタイプ2装置であり得る。
改善された機能のCXLスイッチ130とファブリックマネージャーは、メモリモジュール135の発見を制御して、(i)装置の発見と仮想CXLソフトウェアの生成を行い、(ii)仮想的なことを物理ポートにバインドすることができる。図1A〜図1Dの実施形態のように、ファブリックマネージャーは、SMBusサイドバンド(sideband)上での連結を介して動作することができる。IPMI(Intelligent Platform Management Interface)又はレッドフィッシュ(Redfish)標準に準拠し(そして標準から要請していない追加機能を提供することもできる)インターフェースであり得るメモリモジュール135へのインターフェースは、構成可能性をイネーブルすることができる。
図1Gの実施形態のビルディングブロックは、(前述したように)、FPGAやASIC上に実装されたCXLコントローラ137を含むことができ、メモリ装置(例えば、メモリモジュール135)、SSD、アクセラレータ(GPUs、NICs)、CXL及びPCIe5コネクタ、並びにファームウェアの集合を可能にして、装置の詳細をHMAT(heterogeneous memory attribute table)又はSRAT(static resource affinity table)のような、運用システムのACPI(advanced configuration and power interface)テーブルに露出させる。
いくつかの実施形態では、前記システムは、構成可能性(composability)を提供する。前記システムは、ソフトウェアの構成に基づいてオンライン及びオフラインと、CXL装置及びその他アクセラレータに能力(ability)を提供することができ、アクセラレータ、メモリ、ストレージ装置のリソースをグループ化し、それらをラックの各メモリサーバー150に割り当てることができる。前記システムは、物理アドレス空間を隠してHBM及びSRAMのような、より高速な装置を使用して透明なキャッシュを提供することができる。
図1Gの実施形態で、改善された機能のCXLスイッチ130のコントローラ137は、(i)メモリモジュール135を管理し、(ii)NICs、SSDs、GPUs、DRAMのような異種の装置を統合及び制御し、(iii)パワーゲーティングによりメモリ装置に対するストレージの動的再構成をもたらすことができる。たとえば、ToRサーバーリンクスイッチ112(機能拡張CXLスイッチ130にメモリモジュール135に対する電力をディセーブルするように指示することにより)は、メモリモジュール135のうち、いずれか1つに対する電力をディセーブル(つまり、電力遮断又は電力減少)する。それから、向上された機能のCXLスイッチ130は指示を受けたとき、メモリモジュールに対する電力をディセーブルするために、サーバーリンクスイッチ112によってメモリモジュール135に対する電力をディセーブルすることができる。このようなディセーブルは、電力を保存することができ、メモリサーバー150において他のメモリモジュール135の性能(例えば、スループット及びレイテンシ)を向上させることができる。各リモートサーバー105は、交渉に基づくメモリモジュール135とこれらの連結の異なる論理的な観点を見ることができる。改善された機能のCXLスイッチ130のコントローラ137は、各リモートサーバーが、割り当てられたリソースと連結を維持するように状態を維持することができ、メモリ容量を(設定可能なチャンク(chunk)サイズを使用して)節約するために、メモリの圧縮又は重複排除(deduplication)を遂行することができる。図1Gの集合していないラックは、独自のBMCを有し得る。また、図1Gのセットされていないラックは、IPMIネットワークインターフェースと、システムイベントログ(SEL)をリモート装置に露出して、マスター(例えば、メモリサーバー150によって提供されるストレージを使用するリモートサーバー)が性能及び信頼性を状況に応じて測定し、集合していないラップを再構成することができるようにする。図1Gの集合していないラックは、例えば、コヒーレンスは、同じメモリアドレスに対してリード(read)又はライト(write)する1つ以上のリモートサーバーで提供され、各リモートサーバーが異なる一貫性のレベルで構成され、図1Eの実施形態について本明細書で説明されたものと類似した方法で信頼性、複製、一貫性、システムコヒーレンス、ハッシング、キャッシング、及び持続性を提供することができる。いくつかの実施形態で、サーバーリンクスイッチは、第1メモリサーバーに格納されたデータと第2メモリサーバーに格納されたデータとの間の最終的な一貫性を維持する。サーバーリンクスイッチ112は、異なるペアのサーバーに対して異なる一貫性のレベルを維持することができ、例えば、サーバーリンクスイッチはまた、第1メモリサーバーに格納されたデータと第3のメモリサーバーに格納されたデータとの間で厳しい一貫性、順次的一貫性、因果的一貫性又はプロセッサの一貫性である一貫性のレベルを維持することができる。前記システムは、「ローカルバンド」(サーバーリンクスイッチ112)と「グローバルバンド」(集合していないサーバー)のドメインにおいて通信を採用することができる。ライト(write)は、他のサーバーから新しいリード(read)に対して可視的になるように、「グローバルバンド」にフラッシュ(flush)することができる。改善された機能の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メモリサーバーの状態をクエリ(query)するように構成される。いくつかの実施形態では、サーバーリンクスイッチは、インテリジェントなプラットフォーム管理インターフェース(IPMI)を介して第1メモリサーバーの状態をクエリ(query)するように構成される。いくつかの実施形態では、状態のクエリは、電力状態、ネットワークの状態及びエラーチェックの状態で構成されたグループから選択された状態をクエリすることを含む。いくつかの実施形態では、サーバーリンクスイッチは、第1メモリサーバーに向かうキャッシュリクエストをバッチするように構成される。いくつかの実施形態では、システムはサーバーリンクスイッチに連結された第3のメモリサーバーをさらに含み、前記サーバーリンクスイッチは、第1メモリサーバーに格納されたデータと第3のメモリサーバーに格納されたデータとの間で、厳格な一貫性、順次的一貫性、因果的一貫性とプロセッサの一貫性で構成されたグループから選択された一貫性のレベルを維持するように構成される。いくつかの実施形態では、前記キャッシュコヒーレントスイッチは、メモリの第1領域のフルネスをモニタリングし、データをメモリの第1領域からメモリの第2領域に移動するように構成され、前記メモリの第1領域は揮発性メモリに位置し、前記メモリの第2領域は、永続性メモリに位置する。いくつかの実施形態で、サーバーリンクスイッチはPCIe(Peripheral Component Interconnect Express)スイッチを含む。いくつかの実施形態で、サーバーリンクスイッチはCXL(Compute Express Link)スイッチを含む。いくつかの実施形態で、サーバーリンクスイッチはToR(Top of rack)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メモリサーバーの状態をクエリ(query)する段階と、をさらに備える。本発明の一実施形態によると、キャッシュコヒーレントスイッチ及び第1メモリモジュールを含む第1メモリサーバー、第2メモリサーバー、並びに前記第1メモリサーバー及び第2メモリサーバーに連結されたサーバーリンクスイッチング手段を含み、前記第1メモリモジュールは前記キャッシュコヒーレントスイッチに連結され、前記キャッシュコヒーレントスイッチは前記サーバーリンクスイッチング手段に連結される。
図2A〜図2Dは、多様な実施形態に対するフローチャートである。これらのフローチャートの実施形態で、処理回路115はCPUであり、他の実施形態で、処理回路115は他の処理回路(例えば、GPU)であり得る。図2Aを参照すると、図1A及び図1Bの実施形態のメモリモジュール135のコントローラ137、又は図1C〜図1Gの実施形態のうち、いずれか1つの向上された機能のCXLスイッチ130は処理回路115にわたって仮想化し、他のサーバー105の向上された機能のCXLスイッチ130に対するRDMAリクエストを開始し、どのサーバー(仮想化は、改善された機能のCXLのスイッチ130のコントローラ137によって扱われる)においても処理回路115を関与させずにサーバー105間でデータを前後に移動させる。例えば、205で、メモリモジュール135のコントローラ137又は向上された機能のCXLスイッチ130は、追加のリモートメモリ(例えば、CXLメモリ又は集合したメモリ)に対するRDMAリクエストを生成する。210で、ネットワークインターフェース回路125は、処理回路をバイパスすることにより(RDMAインターフェースを有し得る)ToRイーサネットスイッチ110にリクエストを送信する。215で、ToRイーサネットスイッチ110は、リモート処理回路115をバイパスすることにより、リモートの集合したメモリへのRDMAアクセスを介して、メモリモジュール135のコントローラ137又はリモートの向上された機能のCXLスイッチ130による処理のためにRDMAリクエストをリモートサーバー105にルーティングする。220で、ToRイーサネットスイッチ110は処理されたデータを受信し、前記データをRDMAを介してローカル処理回路115をバイパスして、ローカルメモリモジュール135又はローカル向上された機能のCXLスイッチ130にルーティングする。222で、図1A及び図1Bの実施形態のメモリモジュール135のコントローラ137又は向上された機能のCXLスイッチ130は、RDMA応答を直接に受信する(例えば、処理回路115によって転送されずに)。
このような実施形態では、リモートメモリモジュール135のコントローラ137又はリモートサーバー105の向上された機能のCXLスイッチ130は、ストレートリモートダイレクトメモリアクセス(RDMA)リクエストを受信し、ストレートRDMA応答を送信するように構成される。本明細書で使用されているように、「ストレートRDMAリクエスト」を受信するリモートメモリモジュール135のコントローラ137又は「ストレートRDMAリクエスト」を受信する(又は、このようなリクエストを「ストレートに「受信する)のは、リモートメモリモジュールのコントローラ137によって、又は改善された機能のCXLスイッチ130によってリモートサーバーの処理回路115によって伝達されるか、又はそうでなければ処理されず、このようなリクエストを受信するのを意味し、リモートメモリモジュールのコントローラ137によって、又は改善された機能のCXLスイッチ130によって「ストレートRDMA応答」を送信するのは(又は、そのようなリクエストを「ストレートに」転送するのは)リモートサーバーの処理回路115によって伝達されるか、又はそうではない場合には処理されず、このような応答を送信するのを意味する。
図2Bを参照すると、他の実施形態で、RDMAは、リモートサーバーの処理回路がデータの取り扱いに関与しながら遂行される。例えば、225で、処理回路115はイーサネット上でのデータやワークロードのリクエストを送信する。230で、ToRイーサネットスイッチ110はリクエストを受信し、前記リクエストを複数のサーバー105のうち、対応するサーバー105にルーティングすることができる。235において、前記リクエストは、ネットワークインターフェース回路125(例えば、100GbEイネーブルされたNIC)のポート上でサーバー内で受信されることがある。240で、処理回路115(例えば、x86処理回路)は、ネットワークインターフェース回路125からリクエストを受信することができる。245で、処理回路115は、メモリ(図1A及び図1Bの実施形態では集合したメモリの可能性あり)を共有するためにCXL 2.0プロトコルを通じてDDR及び追加のメモリリソースを使用してリクエストを(例えば、共に)処理することができる。
図2Cを参照すると、図1Eの実施形態で、RDMAは、リモートサーバーの処理回路がデータの取り扱いに関与しながら行われる。例えば、225で、処理回路115は、イーサネット又はPCIe上でデータやワークロードリクエストを送信する。230で、ToRイーサネットスイッチ110はリクエストを受信し、前記リクエストを複数のサーバー105のうち、対応するサーバー105にルーティングすることができる。235において、前記リクエストはPCIeコネクタのポートを介してサーバー内で受信されることがある。240で、処理回路115(例えば、x86処理回路)は、ネットワークインターフェース回路125からのリクエストを受信することができる。245で、処理回路115はメモリ(図1A及び図1Bの実施形態では集合したメモリの可能性あり)を共有するために、CXL 2.0プロトコルを通じてDDR及び追加のメモリのリソースを使用してリクエストを(例えば、共に)処理することができる。250で、処理回路115は、他のサーバーからのメモリの内容(例えば、DDR又はされたメモリの内容)にアクセスするための要件を識別することができる。252で、処理回路115は、CXLプロトコル(例えば、CXL 1.1又はCXL 2.0)を通じて他のサーバーから前記メモリの内容(例えば、DDR又は集合したメモリの内容)に対するリクエストを送信することができる。254で、前記リクエストは、ローカルPCIeコネクタを介してサーバーリンクスイッチ112に転送され、それから、前記サーバーリンクスイッチ112は、リクエストをラック上で第2サーバーの第2PCIeコネクタに送信する。256で、第2処理回路115(例えば、x86処理回路)は、第2PCIeコネクタからリクエストを受信する。258で、第2処理回路115は、集合したメモリを共有するために、CXL2.0プロトコルを通じて第2DDR及び第2追加のメモリリソースを使用して、前記リクエスト(例えば、メモリの内容の検索)を共に処理することができる。260で、第2処理回路(例えば、x86処理回路)は、リクエストの結果を各々のPCIeコネクタ及びサーバーリンクスイッチ112を介して、元の処理回路に再び送信する。
図2Dを参照すると、図1Gの実施形態で、RDMAは、例えば、データの取り扱いに関与するリモートサーバーの処理回路で遂行されることがある。225で、処理回路115は、イーサネット上でデータやワークロードのリクエストを送信する。230で、ToRイーサネットスイッチ110は、前記リクエストを受信して前記リクエストを複数のサーバー105のうち、対応するサーバー105にルーティングすることができる。235において、前記リクエストは、ネットワークインターフェース回路125(例えば、100GbEイネーブルされたNIC)のポートを介してサーバー内で受信されることがある。262で、メモリモジュール135は、PCIeコネクタから前記リクエストを受信する。264で、メモリモジュール135のコントローラは、ローカルメモリを使用してリクエストを処理する。250で、メモリモジュール135のコントローラは、他のサーバーからメモリの内容(例えば、集合したメモリの内容)にアクセスするための要件を識別する。252で、メモリモジュール135のコントローラは、CXLプロトコルを通じて他のサーバーから前記メモリの内容(例えば、集合したメモリの内容)に対するリクエストを送信する。254で、前記リクエストは、ローカルPCIeコネクタを介してサーバーリンクスイッチ112に転送され、その次のサーバーリンクスイッチ112が前記リクエストをラック上の第2サーバーの第2PCIeコネクタに転送する。266で、第2PCIeコネクタは、メモリモジュール135のコントローラがメモリの内容を検索することができるように集合したメモリを共有するために、CXLプロトコルを通じてアクセスを提供する。
本明細書で使用されているように、「サーバー」は、少なくとも一つの格納されたプログラム処理回路(例えば、処理回路115)、少なくとも一つのメモリリソース(資源)(例えば、システムメモリ120)、及びネットワーク連結(例えば、ネットワークインターフェース回路125)を提供するための少なくとも一つの回路を含むコンピューティングシステムである。本明細書で使用されているように、「〜の一部」は、事物の「少なくとも一部」を意味し、したがって事物の全部又は全部より少ないことを意味することができる。このように、事物の「一部」は、事物全体を特別な場合として含んでおり、すなわち、事物全体が事物の一部に対する一例である。
明細書の背景のセクションで提供されている背景テクノロジーは、コンテキストを設定するためにだけ含まれており、この背景のセクションの内容は、従来のテクノロジーであることを認めていない。説明された任意の構成要素又は構成要素の任意の組み合わせ(例えば、ここに含まれている任意のシステムダイヤグラムで)は、ここに含まれている任意のフローチャートの動作のうち、いずれか1つ以上を遂行するために使用される。なお、(i)前記動作は、例としての動作であり、明示的にカバーされていない多様な追加の段階を含むことができ、そして(ii)前記動作の時間的順序は変更されることがある。
本明細書では、用語の「処理回路」又は「コントローラ手段」は、データ又はデジタル信号を処理するために採用されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するのに使用される。処理回路のハードウェアには、例えば、特定用途向け集積回路(ASIC)、汎用又は特殊目的の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)及びフィールドプログラマブルゲートアレイ(FPGA)のようなプログラマブルロジック装置を含み得る。処理回路では、本明細書で使用されるように、各機能は、その機能を遂行するように構成された、すなわち、ハードワイヤされた(hard-wired)ハードウェアによって、又は非一時的記憶媒体に格納されたコマンドを遂行するように構成されたCPUのような、より汎用のハードウェアによって遂行される。処理回路は、単一のプリント回路基板(PCB)上で製作されるか、又は多数の相互連結されたPCBの上で分散されることがある。処理回路は、他の処理回路を含み、例えば、処理回路は、PCB上の相互連結された二つの処理回路、すなわち、FPGA及びCPUを含み得る。
本明細書で使用されているように、「コントローラ」は回路を含み、コントローラはまた「制御回路」又は「コントローラ回路」と称されることがある。同様に、「メモリモジュール」は、「メモリモジュールの回路」又は「メモリ回路」と称されることがある。本明細書で使用されているように、用語の「アレイ」は、格納方法(例えば、連続したメモリ位置に格納されているか、又はリンクされたリストに格納されているかの可否)に関係なく、順序が指定された一連の数字を意味する。ここでは、第2数字が第1数字の「Y%以内」である場合、前記第2数字は、前記第1数の最小(1−Y/100)倍で、前記第2数字は、前記第1数字の最大(1+Y/100)倍である。ここで使用される用語の「又は」は「及び/又は」として解釈されるべきであり、例えば、「A又はB」は、「A」、「B」又は「A及びB」のいずれか1つを意味する。
本明細書で使用されているように、方法(例えば、調整)又は第1数量(例えば、第1変数)が第2数量(例えば、第2変数)に「基づく」と言及されるとき、これは、第2数量が入力又は第1数量に影響を与えるようになり、例えば、第2数量は、第1数量を計算する関数への入力(例えば、唯一の入力又は1つ以上の入力のいずれか1つ)であるか、第1数量は第2数量と同じ値を有するか、又は第2数量と同じであり得る(例えば、メモリ内の同じ位置又は位置に格納される)。
たとえ用語の「第1」、「第2」、「第3」などが、本明細書で、多様な素子、構成要素、領域、レイヤー及び/又はセクションを説明するために使用されることがあり、これらの素子、構成要素、領域、レイヤー及び/又はセクションはこれらの用語に限定されないことが理解されるだろう。これらの用語は一つの素子、構成要素、領域、レイヤー又はセクションを他の素子、構成要素、領域、レイヤー又はセクションと区別するためにのみ使用される。したがって、本明細書に記載された第1素子、構成要素、領域、レイヤー又はセクションは、本発明の概念の技術的思想と範囲を逸脱することなく、第2素子、構成要素、領域、レイヤー又はセクションと称される。
「すぐ下(beneath)」、「下(below)」、「下部(lower)」、「下に(under)」、「上に(above)」、「上部(upper)」などのような空間的に相対的な用語は、説明の便宜のために、図面に示されたような一つの素子又は特徴が他の素子又は特徴に対して有する関係を説明するために使用される。そのような空間的に相対的な用語は、図面に示された方向に加えて、使用又は動作中の装置の異なる方向を含むように意図されたものであることを理解するだろう。たとえば、図面の装置がひっくり返された場合は、他の素子又は特徴の「すぐ下」、「下」又は「真下に」として説明された素子は、前記他の素子又は特徴の「上部」に向かうことになる。したがって、例としての用語の「下」と「下部」は、上部と下部の方向の両方を含み得る。装置は、他の方向に配置されることがあり、(例えば、90度回転するか、又は他の方向に)ここで使用された空間的に相対的な記述用語は、それに応じて解釈されなければならない。なお、あるレイヤーが2つのレイヤーの間に存在すると述べたときに、これは、2つのレイヤーの間の唯一のレイヤーであり得るか、又は1つ以上の介在するレイヤー(intervening layers)が存在することもできると、また理解するだろう。
本明細書で使用される用語は、特定の実施形態を説明するためのものであり、本発明を限定しようとする意図ではない。本明細書で使用される用語の「実質的に」、「約」及びこれと類似した用語は、程度(degree)の用語ではなく、近似の用語として使用され、当業者によって認知される測定又は計算される値の固有の偏差を考慮するように意図されたものである。本明細書で使用されているように、単数形「a」及び「an」は、文脈上明らか別の意味を示していると判定されない限り、複数形も含むように意図される。本明細書で使用されるとき、「含む(comprises)」及び/又は「含んでいる(comprising)」という用語は、言及された特徴、整数、段階、動作(演算)、素子、及び/又は構成要素の存在を特定するが、1つ以上の他の特徴、整数、段階、動作(演算)、素子、構成要素、及び/又はそのグループの存在若しくは追加を排除しないということも、また理解されるだろう。本明細書で使用される用語の「及び/又は」は、1つ以上の関連付けて列挙された項目の1つ以上の任意かつすべての組み合わせを含む。「少なくとも一つの」のような表現は、素子のリストの前に記載されるときに、リスト全体の素子を変更し、リストの個々の素子を変更しない。なお、本発明の実施形態を説明するとき、「〜することができる(may)」という用語は、「本開示の1つ以上の実施形態」を表す。また、「例としての」という用語は、例又は例示を示すものとして意図される。本明細書で使用される「使用する(use)」、「使用している(using)」、「使用された(used)」という用語は、各々「活用する(utilize)」、「活用している(utilizing)」、「活用された(utilized)」という用語と同義語であると考えてよい。
素子又はレイヤーが、他の素子又はレイヤー」に「位置する」、「連結される」、「結合される」又は「隣接する」と述べられるとき、前記素子又はレイヤーが他の素子又はレイヤーに直接に位置するか、 連結されるか、結合されるか、隣接するか、又は1つ以上の介在する素子又はレイヤーが存在することができる。逆に、素子又はレイヤーが他の素子又はレイヤーに「すぐ上に」、「直接連結される」、「直接結合される」又は「すぐ隣接する」と述べられるとき、介在する素子又はレイヤーが存在しない。
本明細書で引用された任意の数値範囲は、引用された範囲内に含まれている同じ数値精度のすべての下位範囲を含むように意図される。たとえば、「1.0〜10.0」の範囲又は「1.0と10.0との間」の範囲は、記載された最小値1.0と記載された最大値10.0との間の(これらを含む)、すなわち1.0以上の最小値及び10.0以下の最大値を有するすべての下位範囲、例えば、2.4〜7.6の範囲を含む。本明細書に記載された任意の最大の数値限定は、その中に含まれているすべてのより低い数値限定を含むように意図され、本明細書に記載された任意の最小の数値限定は、その中に含まれているすべてのより高い数値限定を含むように意図される。
メモリ資源(リソース)を管理するシステム及び方法に対する例としての実施形態が本明細書で具体的に説明及び例示されたが、多くの修正及び変形が当業者に明らかになるだろう。したがって、本開示の原理に基づいて構成されたメモリリソースを管理するシステム及び方法は、本明細書で具体的に説明されたものとは異なるように具現化されることがあることを理解しなければならない。本発明は、また、特許請求の範囲及びその同等物で定義される。
105:サーバー
110:ToRイーサネットスイッチ
115:処理回路
120:システムメモリ
125:ネットワークインターフェース回路
135:メモリモジュール

Claims (20)

  1. システムであって、
    格納されたプログラム処理回路、第1ネットワークインターフェース回路、及び第1メモリモジュールを含む第1サーバーを有し、
    前記第1メモリモジュールは、
    第1メモリダイと、
    コントローラと、を備え、
    前記コントローラは、
    前記第1メモリダイにメモリインターフェースを介して連結され、
    前記格納されたプログラム処理回路にキャッシュコヒーレントインターフェースを介して連結され、
    前記第1ネットワークインターフェース回路に連結される、
    システム。
  2. 前記第1メモリモジュールは、第2メモリダイと、をさらに備え、
    前記第1メモリダイは、揮発性メモリを含み、
    前記第2メモリダイは永続性メモリを含む、
    請求項1に記載のシステム。
  3. 前記永続性メモリは、NANDフラッシュを含む、
    請求項2に記載のシステム。
  4. 前記コントローラは、前記永続性メモリのためのフラッシュ変換レイヤーを提供するように構成される、
    請求項3に記載のシステム。
  5. 前記キャッシュコヒーレントインターフェースは、CXL(Compute Express Link)インターフェースを含む、
    請求項1−4のうちの何れか1項に記載のシステム。
  6. 前記第1サーバーは、前記第1サーバーの拡張ソケットに連結される拡張ソケットアダプタを含み、
    前記拡張ソケットアダプタは、前記第1メモリモジュール、及び前記第1ネットワークインターフェース回路を含む、
    請求項1−5のうちの何れか1項に記載のシステム。
  7. 前記第1メモリモジュールのコントローラは、前記拡張ソケットを介して前記格納されたプログラム処理回路に連結される、
    請求項6に記載のシステム。
  8. 前記拡張ソケットは、M.2ソケットを含む、
    請求項6に記載のシステム。
  9. 前記第1メモリモジュールの前記コントローラは、ピア・ツー・ピアPCIe 連結により、前記第1ネットワークインターフェース回路に連結される、
    請求項6に記載のシステム。
  10. 第2サーバーと、
    前記第1サーバー及び前記第2サーバーに連結されるネットワークスイッチと、をさらに備える、
    請求項1−9のうちの何れか1項に記載のシステム。
  11. 前記ネットワークスイッチは、ToR(top of rack)イーサネットスイッチを含む、
    請求項10に記載のシステム。
  12. 前記第1メモリモジュールの前記コントローラは、RDMAリクエストを受信し、RDMA応答を転送するように構成される、
    請求項10に記載のシステム。
  13. 前記第1メモリモジュールの前記コントローラは、前記ネットワークスイッチを介して、そして前記第1ネットワークインターフェース回路を介してRDMAリクエストを受信し、前記ネットワークスイッチを介して、そして前記第1ネットワークインターフェース回路を介してRDMA応答を転送するように構成される、
    請求項10に記載のシステム。
  14. 前記第1メモリモジュールの前記コントローラは、
    前記第2サーバーからデータを受信し、
    前記データを前記第1メモリモジュールに格納し、
    キャッシュラインを無効化するコマンドを、前記格納されたプログラム処理回路に転送する、
    請求項13に記載のシステム。
  15. 前記第1メモリモジュールの前記コントローラは、FPGA又はASICを含む、
    請求項1−14のうちの何れか1項に記載のシステム。
  16. コンピューティングシステムで、リモートダイレクトメモリアクセスを遂行する方法であって、前記コンピューティングシステムは、
    第1サーバーと、第2サーバーと、を備え、
    前記第1サーバーは
    格納されたプログラムの処理回路、ネットワークインターフェース回路、及び
    コントローラを含む第1メモリモジュールを含み、
    前記方法は、
    前記第1メモリモジュールの前記コントローラによってRDMAリクエストを受信する段階と、
    前記第1メモリモジュールの前記コントローラによってRDMA応答を転送する段階と、を備える、
    方法。
  17. 前記コンピューティングシステムは、前記第1サーバーと前記第2サーバーに連結されるイーサネットスイッチと、をさらに備え、
    前記RDMAリクエストを受信する段階は、前記イーサネットスイッチを介して前記RDMAリクエストを受信する段階を含む、
    請求項16に記載の方法。
  18. 前記第1メモリモジュールの前記コントローラによって、第1メモリアドレスに対するリード(read)コマンドを前記格納されたプログラム処理回路から受信する段階と、
    前記第1メモリモジュールの前記コントローラによって前記第1メモリアドレスを第2メモリアドレスに変換する段階と、
    前記第1メモリモジュールの前記コントローラによって前記第2メモリアドレスにおいて前記第1メモリモジュールからデータを検索する段階と、を備える、
    請求項16に記載の方法。
  19. 前記第1メモリモジュールの前記コントローラによってデータを受信する段階と、
    前記第1メモリモジュールの前記コントローラにより前記データを前記第1メモリモジュールに格納する段階と、
    前記第1メモリモジュールの前記コントローラによってキャッシュラインを無効化するためのコマンドを前記格納されたプログラム処理回路に転送する段階と、を備える、
    請求項16に記載の方法。
  20. システムであって、
    格納されたプログラムの処理回路、第1ネットワークインターフェース回路、及び第1メモリモジュールを含む第1サーバーを有し、
    前記第1メモリモジュールは、
    第1メモリダイと、
    コントローラ手段と、を備え、
    前記コントローラ手段は
    メモリインターフェースを介して前記第1メモリダイに連結され、
    前記格納されたプログラム処理回路にキャッシュコヒーレントインターフェースを介して連結され、
    前記第1ネットワークインターフェース回路に連結されるシステム。
JP2021089285A 2020-05-28 2021-05-27 キャッシュコヒーレントインターコネクトを使用するシステム及び方法 Pending JP2021190123A (ja)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US202063031509P 2020-05-28 2020-05-28
US202063031508P 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/026071 2020-09-18
US17/026,071 US20210311897A1 (en) 2020-04-06 2020-09-18 Memory with cache-coherent interconnect

Publications (1)

Publication Number Publication Date
JP2021190123A true JP2021190123A (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 メモリリソースを管理するシステム及びその方法
JP2021089584A Pending JP2021190125A (ja) 2020-05-28 2021-05-27 メモリリソースを管理するためのシステム及び方法
JP2021089285A Pending JP2021190123A (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 メモリリソースを管理するシステム及びその方法
JP2021089584A Pending JP2021190125A (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 (21)

* 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
US20210311897A1 (en) 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
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
US12020070B2 (en) * 2021-04-02 2024-06-25 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
WO2023095802A1 (ja) 2021-11-24 2023-06-01 レグセル株式会社 T細胞関連疾患を治療または予防するための医薬組成物
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 支付宝(杭州)信息技术有限公司 数据库实现装置、方法、系统、介质以及计算机程序产品
WO2024117572A1 (ko) * 2022-11-29 2024-06-06 한국전자통신연구원 대용량 온칩 메모리를 갖는 인공지능 프로세서를 위한 가상주소 기반의 캐시 코헤런시 지원 방법 및 이를 위한 장치
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 (26)

* 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
US9645866B2 (en) * 2010-09-20 2017-05-09 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
WO2013029051A2 (en) * 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
US20130318308A1 (en) * 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip
US10025626B2 (en) * 2012-09-28 2018-07-17 Cycle Computing, Llc Routing job submissions between disparate compute environments
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
WO2020000316A1 (zh) * 2018-06-28 2020-01-02 华为技术有限公司 容错处理的方法、装置和服务器
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
EP3916563A1 (en) 2021-12-01
KR20210147871A (ko) 2021-12-07
TW202147123A (zh) 2021-12-16
CN113810312B (zh) 2023-12-19
EP3916564A1 (en) 2021-12-01
KR20210147911A (ko) 2021-12-07
CN113810312A (zh) 2021-12-17
EP3916565A1 (en) 2021-12-01
KR20210147865A (ko) 2021-12-07
TW202145025A (zh) 2021-12-01
KR20210147867A (ko) 2021-12-07
CN113742257A (zh) 2021-12-03
EP3916566B1 (en) 2024-05-08
CN113742259A (zh) 2021-12-03
JP2021190125A (ja) 2021-12-13
JP2021190121A (ja) 2021-12-13
EP3916566A1 (en) 2021-12-01
TW202213104A (zh) 2022-04-01
US20210373951A1 (en) 2021-12-02
TW202213105A (zh) 2022-04-01
EP3916564B1 (en) 2024-06-05
CN113746762A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
JP2021190123A (ja) キャッシュコヒーレントインターコネクトを使用するシステム及び方法
US11416431B2 (en) System with cache-coherent memory and server-linking switch
EP3748510A1 (en) Network interface for data transport in heterogeneous computing environments
US9952975B2 (en) Memory network to route memory traffic and I/O traffic
US20210326270A1 (en) Address translation at a target network interface device
US11210240B2 (en) Memory appliance couplings and operations
TW202215251A (zh) 用於合併及分層資料架構的適應性路由
KR20190112626A (ko) 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘
EP4123649A1 (en) Memory module, system including the same, and operation method of memory module
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240329