KR20210147911A - 캐시 일관성 상호 연결을 갖는 메모리 - Google Patents

캐시 일관성 상호 연결을 갖는 메모리 Download PDF

Info

Publication number
KR20210147911A
KR20210147911A KR1020210065587A KR20210065587A KR20210147911A KR 20210147911 A KR20210147911 A KR 20210147911A KR 1020210065587 A KR1020210065587 A KR 1020210065587A KR 20210065587 A KR20210065587 A KR 20210065587A KR 20210147911 A KR20210147911 A KR 20210147911A
Authority
KR
South Korea
Prior art keywords
memory
server
memory module
controller
switch
Prior art date
Application number
KR1020210065587A
Other languages
English (en)
Inventor
크리슈나 테자 말라디
앤드류 창
이산 엠 나자파바디
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/026,071 external-priority patent/US20210311897A1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210147911A publication Critical patent/KR20210147911A/ko

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
    • 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
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • 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
    • 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/38Universal adapter
    • G06F2213/3808Network interface controller
    • 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 네트워크 인터페이스 회로 및 제1 메모리 모듈을 포함하는 제1 서버를 포함한다. 상기 제1 메모리 모듈은 제1 메모리 다이 및 컨트롤러를 포함할 수 있다. 상기 컨트롤러는 메모리 인터페이스를 통해 상기 제1 메모리 다이에 연결되며, 캐시-일관성 인터페이스를 통해 상기 저장된-프로그램 처리 회로에 연결되며 상기 제1 네트워크 인터페이스 회로에 연결될 수 있다.

Description

캐시 일관성 상호 연결을 갖는 메모리{MEMORY WITH CACHE-COHERENT INTERCONNECT}
본 개시에 따른 실시 예들의 하나 이상의 양태들은 컴퓨팅 시스템에 관한 것으로, 특히 하나 이상의 서버를 포함하는 시스템에서 메모리 자원을 관리하는 시스템 및 방법에 관한 것이다.
본 배경 설명은 문맥만을 제공하기 위한 것이며, 상기 배경 설명의 어떠한 실시예 또는 개념의 개시도 상기 실시예 또는 상기 개념이 종래 기술이라는 것을 인정하는 것은 아니다.
일부 서버 시스템은 네트워크 프로토콜에 의해 연결된 서버들의 집합들(collections)을 포함할 수 있다. 이러한 시스템의 서버들 각각은 처리 자원(예를 들어, 프로세서) 및 메모리 자원(예를 들어, 시스템 메모리)를 포함할 수 있다. 어떤 환경에서는 한 서버의 처리 자원이 다른 서버의 메모리 자원에 액세스하는 것이 유리할 수 있으며, 이러한 액세스는 이들 서버의 어느 하나의 처리 자원을 최소화하면서 발생하는 것이 유리할 수 있다.
따라서, 하나 이상의 서버들을 포함하는 시스템에서 메모리 자원을 관리하기 위한 개선된 시스템 및 방법이 필요하다.
따라서, 본 개시의 목적은 하나 이상의 서버들을 포함하는 시스템에서 메모리 자원을 관리하는 개선된 시스템 및 방법을 제공하는데 있다.
일부 실시예에서, 서버는 하나 이상의 처리 회로, 시스템 메모리, 및 캐시-일관성 인터페이스를 통해 상기 처리 회로에 연결된 하나 이상의 메모리 모듈들을 포함한다. 상기 메모리 모듈들이 또한 하나 이상의 네트워크 인터페이스 회로들에 연결될 수 있다. 각 메모리 모듈은 향상된 기능을 상기 메모리 모듈에 제공하는 컨트롤러(예컨대, 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)을 포함한다.
본 발명의 일 실시예에 따르면, 컴퓨팅 시스템에서 원격 직접 메모리 액세스를 수행하는 방법으로서, 상기 컴퓨팅 시스템은 제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 메모리 다이에 연결되고, 캐시-일관성 인터페이스를 통해 상기 저장된-프로그램 처리 회로에 연결되고, 상기 제1 네트워크 인터페이스 회로에 연결된다.
본 개시의 실시 예들에 따르면, 하나 이상의 서버들을 포함하는 시스템에서 메모리 자원을 관리하기 위한 개선된 시스템 및 방법이 제공된다.
본 명세서에서 제공된 도면들은 실시예를 설명하기 위한 것으로서, 명시적으로 개시하지 않은 다른 실시예는 본 개시의 범위에서 배제되지 않는다.
본 개시의 이들 및 다른 특징들 및 이점들은 명세서, 청구범위 및 첨부된 도면들을 참조하여 인지되고 이해될 것이다.
도 1a는 본 개시의 일 실시예에 따른, 캐시-일관성 연결을 사용하여 메모리 자원을 컴퓨팅 자원에 첨부하는 시스템의 블록도이다.
도 1b는 본 개시의 일 실시예에 따른, 캐시-일관성 연결을 사용하여 메모리 자원을 컴퓨팅 자원에 첨부하는, 확장 소켓 어댑터를 채용한 시스템의 블록도이다.
도 1c는 본 개시의 일 실시예에 따른, 이더넷 ToR 스위치를 채용한 메모리를 집합하는 시스템의 블록도이다.
도 1d는 본 개시의 일 실시예에 따른, 이더넷 ToR 스위치 및 확장 소켓 어댑터를 채용한 메모리를 집합하는 시스템의 블록도이다.
도 1e는 본 개시의 일 실시예에 따른, 메모리를 집합하는 시스템의 블록도이다.
도 1f는 본 개시의 일 실시예에 따른, 확장 소켓 어댑터를 채용한 메모리를 집합하는 시스템의 블록도이다.
도 1g는 본 개시의 일 실시예에 따른, 서버들을 집합하지 않은(disaggregating) 시스템의 블록도이다.
도 2a는 본 개시의 일 실시예에 따른, 도 1a 내지 1g에 도시된 실시예들에 대해, 처리 회로들을 우회함으로써 RDMA(remote direct memory access) 이전을 수행하는 예시적인 방법에 대한 흐름도이다.
도 2b는 본 개시의 일 실시예에 따른, 도 1a 내지 1d에 도시된 실시예들에 대한, 처리 회로들의 참여로 RDMA 이전을 수행하는 예시적인 방법에 대한 흐름도이다.
도 2c는 본 개시의 일 실시예에 따른, 도 1e 및 1f에 도시된 실시예들에 대해, CXL(Compute Express Link) 스위치를 통해 RDMA 이전을 수행하는 예시적인 방법에 대한 흐름도이다.
도 2d는 본 개시의 일 실시예에 따른, 도 1g에 도시된 실시예에 대한 CXL 스위치를 통해 RDMA 이전을 수행하는 예시적인 방법에 대한 흐름도이다.
첨부된 도면과 관련하여 이하 설명하는 상세한 설명은 본 개시에 따라 제공되는 메모리 자원 관리 시스템 및 방법의 예시적인 실시예들을 설명하기 위한 것이며, 본 개시가 구성되고 활용되는 유일한 형태들을 나타내는 것은 아니다. 이하 설명은 도시된 실시예들와 관련하여 본 개시의 특징을 제시한다. 그러나, 동일하거나 동등한 기능들 및 구조들이 또한 본 개시의 범위 내에 포함되도록 의도된 다른 실시예들에 의해 달성될 수 있음은 이해되어야 한다. 본 명세서에서 유사한 도면 번호는 유사한 소자 또는 특징을 나타낸다.
PCIe(Peripheral Component Interconnect Express)는 메모리에 대한 연결들을 생성하는 데 있어서 그의 유용성을 제한할 수 있는 상대적으로 높고 가변적인 대기시간(latency)을 가질 수 있는 컴퓨터 인터페이스를 말한다. CXL은 PCIe 5.0에 기반한 통신을 위한 개방형 산업 표준으로, 고정적인, 비교적 짧은 패킷 크기를 제공할 수 있으며, 그 결과 비교적 높은 대역폭과 비교적 낮은 고정 대기시간을 제공할 수 있다. 이와 같이, CXL은 캐시 일관성을 지원할 수 있으며 CXL은 메모리에 대한 연결들을 생성하는 데에 매우 적합할 수 있다. CXL은 또한 서버에서 호스트와 가속기, 메모리 장치들 및 네트워크 인터페이스 회로들(또는 "네트워크 인터페이스 컨트롤러" 또는 네트워크 인터페이스 카드(NIC)) 간의 연결을 제공하기 위해 또한 사용될 수 있다.
CXL과 같은 캐시 일관성 프로토콜은 예컨대, 스칼라, 벡터 및 버퍼링된 메모리 시스템에서 이기종 처리(heterogeneous processing)를 위해 채용될 수도 있다. CXL은 채널, 리타이머(retimer), 시스템의 PHY 계층, 인터페이스의 논리적 측면 및 프로토콜을 PCIe 5.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을 협상하고 Gen 1-5 트레이닝을 완료한 후 CXL 트랜잭션을 시작할 수 있다.
일부 실시예에서, 메모리(예를 들어, 함께 연결된 복수의 메모리 셀을 포함하는 메모리량)의 집합 또는 "풀"에 대한 CXL 연결들의 사용은 이하 상세히 설명되는 바와 같이, 네트워크에 의해 함께 연결된 복수개의 서버를 포함하는 시스템에서 다양한 이점을 제공할 수 있다. 예를 들어, CXL 패킷에 대한 패킷-스위칭 기능을 제공하는 것 외에 추가 기능을 갖는 CXL 스위치(본 명세서에서 "향상된 기능 CXL 스위치"라고 지칭함)는 메모리의 집합을 하나 이상의 중앙 처리 장치(CPU)(또는 "중앙 처리 회로") 및 하나 이상의 네트워크 인터페이스 회로(향상된 기능을 가질 수 있음)에 연결하는데 사용될 수 있다. 이러한 구성은 (i) 메모리의 집합이 서로 다른 특성들을 갖는 다양한 타입의 메모리를 포함할 수 있도록 하며, (ii) 향상된 기능 CXL 스위치가 메모리 집합을 가상화하고 다른 특성(예컨대, 액세스 주파수)의 데이터를 적절한 타입의 메모리에 저장할 수 있도록 하며, (iii) 향상된 기능 CXL 스위치가 RDMA(remote direct memory access)를 지원하여 RDMA가 서버의 처리 회로에서 거의 또는 전혀 관여하지 않고 수행될 수 있도록 한다. 본 명세서에서 사용된 바와 같이, 메모리를 "가상화"한다는 것은 처리 회로와 메모리 사이에서 메모리 주소 변환을 수행하는 것을 의미한다.
CXL 스위치는 (i) 단일 레벨 스위칭을 통해 메모리 및 가속기 분리를 지원하고, (ii) 자원이 도메인들 사이에서에서 오프-라인되고 온-라인되도록 하고, 이에 의해 요구에 따라 도메인들에 걸쳐 시간 다중화가 가능하게 하며 (iii) 다운스트림 포트의 가상화를 지원할 수 있다. CXL은 집합된 장치들이 일부 실시예에서는 LD-ID(논리 장치 식별자)를 각각 갖는 다수의 논리 장치들로 분할된 상태에서(일대다(one-to-many) 및 다대일(many-to-one) 스위칭을 가능하게 하는 집합 메모리를 구현하는 데 사용될 수 있다(예컨대, (i) CXL은 다수의 루트 포트들을 하나의 엔드포인트에 연결하고 (ii) 하나의 루트 포트를 다수의 엔드포인트들에 연결하고 또는 (iii) 다수의 루트 포트들을 다수의 엔트포인트들에 연결할 수 있다). 이러한 실시예에서, 물리적 장치는 각각의 개시자(initiator)에게 가시적인 복수의 논리적 장치로 분할될 수 있다. 장치는 하나의 물리적 기능(PF)과 복수(예를 들어, 16)의 분리된 논리적 장치들을 가질 수 있다. 일부 실시예에서 논리 장치들의 개수(예를 들어, 파티션들의 개수)는 제한될 수 있고(예를 들어, 16 개까지), 하나의 제어 파티션(상기 장치를 제어하기 위해 사용되는 물리적 기능일 수 있음)이 또한 존재할 수 있다.
일부 실시예에서, 패브릭 관리장치(fabric manager)는 (i) 장치 발견 및 가상 CXL 소프트웨어 생성을 수행하고 (ii) 가상 포트를 물리적 포트에 바인딩하기 위해 채용될 수 있다. 이러한 패브릭 관리장치는 SMBus 측파대(sideband)를 통한 연결을 통해 동작할 수 있다. 패브릭 관리장치는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현될 수 있으며, 예를 들어 호스트에, 메모리 모듈들(135)중 하나에, 향상된 기능 CXL 스위치(130)에 또는 네트워크에서 그 외 장소에 상주할 수 있다. 패브릭 관리장치는 측파대 버스 또는 PCIe 트리를 통해 발행된 커맨드들을 포함한 커맨드들을 발행할 수 있다.
도 1a를 참조하면, 일부 실시예에서, 서버 시스템은 ToR(Top of Rack) 이더넷 스위치(110)에 의해 함께 연결된 복수의 서버(105)를 포함한다. 이 스위치는 이더넷 프로토콜을 사용하는 것으로 설명되지만 다른 적절한 네트워크 프로토콜이 사용될 수 있다. 각 서버는 (i) 시스템 메모리(120)(예컨대, DDR4(Double Data Rate)(version 4) 메모리 또는 어떤 다른 적절한 메모리), (ii) 하나 이상의 네트워크 인터페이스 회로(125), 및 (iii) 하나 이상의 CXL 메모리 모듈(135)에 개별적으로 연결된 하나 이상의 처리 회로(115)를 포함한다. 각각의 처리 회로(115)는 저장된-프로그램 처리 회로, 예를 들어, 중앙 처리 장치(CPU(예를 들어, x86 CPU)), 그래픽 처리 장치(GPU), 또는 ARM 프로세서일 수 있다. 일부 실시예에서, 네트워크 인터페이스 회로(125)는 메모리 모듈들(135) 중 하나에(예를 들어, 동일한 반도체 칩 상에, 또는 동일한 모듈 내에) 내장 될 수 있거나, 네트워크 인터페이스 회로(125)가 메모리 모듈들(135)과는 별개로 패키징될 수 있다.
본 명세서에서 사용 된 바와 같이, "메모리 모듈"은 하나 이상의 메모리 다이를 포함하는 패키지(예를 들어, 인쇄 회로 기판 및 이에 연결된 구성 요소를 포함하는 패키지 또는 인쇄 회로 기판을 포함하는 인클로저)이며, 여기에서 각 메모리 다이는 복수의 메모리 셀을 포함한다. 각 메모리 다이 또는 일련의 메모리 다이 그룹들 각각은 메모리 모듈의 인쇄 회로 기판에 납땜된(커넥터를 통해 메모리 모듈의 인쇄 회로 기판의 인쇄 회로 기판에 연결되는) 패키지(예 : 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 상호 연결은 CXL 1.1 표준과 같은 캐시 일관성 프로토콜을 따르며, 또는 일부 실시예에서는 CXL 2.0 표준, 향후 버전의 CXL 또는 임의의 다른 적절한 프로토콜(예: 캐시 일관성 프로토콜)을 따를 수 있다. 메모리 모듈(135)은 도시된 바와 같이 처리 회로(115)에 직접 부착될 수도 있고, 랙 이더넷 스위치(110)의 상부는 시스템을 더 큰 크기로(예를 들어, 더 많은 수의 서버(105)로) 확장하기 위해 사용될 수 있다.
일부 실시예에서, 각각의 서버는 도 1a에 도시된 바와 같이 다수의 직접-부착 CXL 부착 메모리 모듈들(135)로 채워질 수 있다. 각 메모리 모듈(135)은 메모리 범위로서 호스트의 BIOS(Basic Input/Output System)로 베이스 주소 레지스터들의(BAR) 세트를 노출할 수 있다. 메모리 모듈들(135) 중 하나 이상은 호스트 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) 기술들을 포함하는(그러나 이에 제한되지 않는) 메모리 기술들 중 하나 또는 이들의 조합을 포함할 수 있으며, 캐시 컨트롤러를 포함하거나 서로 다른 기술 메모리 장치들(다른 기술의 여러 메모리 장치를 결합하는 메모리 모듈 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)에 존재하며, 이는 원격 쓰기 요청을 수신할 때 처리 회로들(115)에 대한 캐시 무효화 명령의 발행을 가능하게 한다. 일부 실시예에서, DDIO 기술이 인에이블되고, 원격 데이터는 먼저 처리 회로의 마지막 레벨 캐시(LLC)로 풀링되고 나중에 메모리 모듈(135)(캐시로부터)에 기록된다. 여기에서 사용된 "타입 2" CXL 장치는 트랜잭션을 시작할 수 있고 선택적 일관성 캐시 및 호스트-관리된 장치 메모리를 구현하며, 이에 대해 적용 가능한 트랜잭션 타입들은 모든 CXL.cache 및 모든 CXL.mem 트랜잭션들을 포함한다.
전술한 바와 같이, 메모리 모듈(135) 중 하나 이상은 영구 메모리 또는 "영구 저장소"(즉, 외부 전원이 차단될 때 데이터가 손실되지 않는 저장소)를 포함할 수 있다. 메모리 모듈(135)이 영구 장치로 제공되는 경우, 메모리 모듈(135)의 컨트롤러(137)는 영구 도메인을 관리할 수 있는데, 예컨대, 영구 저장소를 필요로 할 때(예컨대, 대응하는 운영 체제 기능을 호출하는 어플리케이션의 결과로서) 처리 회로(115)에 의해 식별된 데이터를 영구 저장소에 저장할 수 있다. 이러한 실시예에서, 소프트웨어 API는 캐시들 및 데이터를 영구 저장소로 플러시(flush)할 수 있다.
일부 실시예에서, 네트워크 인터페이스 회로(125)로부터 메모리 모듈(135)로의 직접 메모리 이전이 인에이블된다. 이러한 이전은 분산 시스템에서 빠른 통신을 위한 원격 메모리로의 단방향 이전일 수 있다. 이러한 실시예에서, 메모리 모듈(135)은 더 빠른 RDMA 전송을 가능하게 하기 위해 시스템에서의 네트워크 인터페이스 회로(125)에 하드웨어 세부 사항들을 노출할 수 있다. 이러한 시스템에서, 처리 회로(115)의 데이터 다이렉트 I/O(DDIO)가 인에이블 또는 디스에이블되는지 여부에 따라 두 가지 시나리오가 발생할 수 있다. 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 메모리 모듈의 컨트롤러는 RDMA 스트레이트(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 메모리 주소에 대한 판독 커맨드를 수신하는 단계, 상기 제1 메모리 모듈의 컨트롤러에 의해 상기 제1 메모리 주소를 제2 메모리 주소로 변환하는 단계, 상기 제1 메모리 모듈의 컨트롤러에 의해 상기 제2 메모리 주소에서 제1 메모리 모듈로부터 데이터를 검색하는 단계를 포함한다. 일부 실시예에서, 상기 방법은 상기 제1 메모리 모듈의 컨트롤러에 의해 데이터를 수신하는 단계, 상기 제1 메모리 모듈의 컨트롤러에 의해 상기 제1 메모리 모듈에 데이터를 저장하는 단계, 및 상기 상기 제1 메모리 모듈의 컨트롤러에 의해 캐시 라인을 무효화하기 위한 커맨드를 상기 저장된-프로그램 처리 회로로 전송하는 단계를 포함한다. 본 발명의 일 실시예에 따르면, 시스템이 제공되는데, 상기 시스템은 제1 서버를 포함하고, 상기 제1 서버는 저장된-프로그램 처리 회로, 제1 네트워크 인터페이스 회로 및 제1 메모리 모듈을 포함하며, 상기 제1 메모리 모듈은 제1 메모리 다이 및 컨트롤러 수단을 포함하고, 상기 컨트롤러 수단은 메모리 인터페이스를 통해 상기 제1 메모리 다이에 연결되고, 캐시-일관성 인터페이스를 통해 상기 저장된-프로그램 처리 회로에 연결되고, 상기 제1 네트워크 인터페이스 회로에 연결된다.
도 1c를 참조하면, 일부 실시예에서, 서버 시스템은 랙 이더넷 스위치(110) ToR(Top of Rack) 이더넷 스위치(110)에 의해 함께 연결된 복수의 서버(105)를 포함한다. 각 서버는(i) 시스템 메모리(120)(예를 들어, DDR4 메모리),(ii) 하나 이상의 네트워크 인터페이스 회로(125), 및 (iii) 향상된 기능 CXL 스위치(130)에 개별적으로 연결된 하나 이상의 처리 회로(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 인터페이스를 가질 수 있고, 신호들과 메모리 모듈(135)의 메모리에 적합한 CXL 패킷들 사이를 변환하기 위한 인터페이스 회로를 포함할 수 있다. 일부 실시예에서, 이들 인터페이스 회로들은 향상된 기능 CXL 스위치(130)에 대신 존재하고, 메모리 모듈(135) 각각은 인터페이스 즉, 메모리 모듈(135)의 메모리의 고유 인터페이스를 갖는다. 일부 실시예에서, 향상된 기능 CXL 스위치(130)는 메모리 모듈(135)(예를 들어, 메모리 모듈(135)의 다른 구성요소들과 함께 M.2 폼 팩터 패키지에서 또는 상기 메모리 모듈(135)의 다른 구성요소들과 단일의 직접 회로로 통합됨)에 통합된다.
ToR 이더넷 스위치(110)는 서로 다른 서버들 상의 집합된 메모리 장치들 사이의 RDMA 요청을 용이하게 하기 위한 인터페이스 하드웨어를 포함할 수 있다. 향상된 기능 CXL 스위치(130)는 처리 회로들(115)을 우회함으로써(i) 워크로드를 기반으로 데이터를 서로 다른 메모리 타입들로 라우팅하고(ii) 호스트 주소들을 디바이스 주소들로 가상화하며 및/또는(iii) 서로 다른 서버들 간의 RDMA 요청들을 용이하게 하는 하나 이상의 회로들(예컨대, FPGA 또는 ASIC를 포함할 수도 있음)을 포함할 수 있다.
메모리 모듈(135)은 확장 박스(예를 들어, 인클로저의 마더보드를 수용하는 인클로저와 동일한 랙에 있음)에 있을 수 있으며, 상기 확장 박스는 적합한 커넥터에 각각 연결된 미리 정해진 개수(예컨대, 20개 이상 또는 100개 이상)의 메모리 모듈들(135)을 포함할 수 있다. 상기 모듈들은 M.2 폼 팩터 내에 있을 수 있으며 상기 커넥터들은 M.2 커넥터들일 수 있다. 일부 실시예에서, 서버들 사이의 연결들은 이더넷이 아닌 다른 네트워크 상에서 이루어지며, 예를 들어 WiFi 또는 5G 연결들과 같은 무선 연결들일 수 있다. 각 처리 회로는 x86 프로세서 또는 다른 프로세서, 예컨대, ARM 프로세서 또는 GPU 일 수 있다. CXL 링크들이 인스턴스화되는 PCIe 링크들은 PCIe 5.0 또는 다른 버전(예컨대, 이전 버전 또는 향후(예컨대, 미래) 버전(예컨대, PCIe 6.0))일 수 있다. 일부 실시예에서, 상이한 캐시-일관성 프로토콜이 시스템에서 CXL을 대신하여 또는 CXL에 추가하여 사용되며, 상이한 캐시-일관성 스위치가 향상된 기능 CXL 스위치(130) 대신에 또는 이에 추가하여 사용될 수 있다. 이러한 캐시-일관성 프로토콜은 다른 표준 프로토콜 또는 표준 프로토콜의 캐시-일관성 변형일 수 있다(CXL이 PCIe 5.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를 포함하며, 이에 한정되지 않는다.
일부 실시예에서, 상기 시스템은 다수의 서버들을 포함하는 집합 아키텍처를 구현하고, 각 서버는 다수의 CXL-부착 메모리 모듈들(135)로 집합된다. 각각의 메모리 모듈(135)은 메모리 장치들로서 다수의 처리 회로들(115)에 개별적으로 노출될 수 있는 다수의 파티션들을 포함할 수 있다. 향상된 기능 CXL 스위치(130)의 각 입력 포트는 향상된 기능 CXL 스위치(130) 및 이에 연결된 메모리 모듈들(135)의 다수의 출력 포트에 독립적으로 액세스할 수 있다. 본 명세서에서 사용된 바와 같이, 향상된 기능 CXL 스위치(130)의 "입력 포트"또는 "업스트림 포트"는 PCIe 루트 포트에 연결된(또는 연결하기에 적합한) 포트이고, 향상된 기능 CXL 스위치(130)의 "출력 포트" 또는 "다운 스트림 포트"는 PCIe 엔드포인트에 연결되는(또는 연결하기에 적합한) 포트이다. 도 1a의 실시예의 경우와 같이, 각 메모리 모듈(135)은 메모리 범위로서 호스트 BIOS에 베이스 주소 레지스터들(BARs)의 세트를 노출할 수 있다. 메모리 모듈들(135) 중 하나 이상은 호스트 OS 맵 뒤의 메모리 공간을 투명하게 관리하는 펌웨어를 포함할 수 있다.
일부 실시예에서, 전술한 바와 같이, 향상된 기능 CXL 스위치(130)는 FPGA(또는 ASIC) 컨트롤러(137)를 포함하고 CXL 패킷들의 스위칭 이상의 추가 특징들을 제공한다. 예를 들어, 향상된 기능 CXL 스위치(130)는(전술한 바와 같이) 메모리 모듈(135)를 가상화하는데 즉, 회로-측 주소들(또는 "프로세서-측 주소들 즉, 처리 회로(115)에 의해 발행된 판독 및 기록 커맨드들에 포함된 주소들)과 메모리-측 주소들(즉, 향상된 기능 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)에 제공하고, 이는 원격 쓰기 요청을 수신할 때 처리 회로들(115)에 대한 캐시 무효화 명령의 발행을 가능하게 한다. 일부 실시예에서, DDIO 기술이 인에이블되고, 원격 데이터는 먼저 처리 회로의 마지막 레벨 캐시(LLC)로 풀링되고 나중에 메모리 모듈(135)(캐시로부터)에 기록된다.
전술한 바와 같이, 메모리 모듈들(135) 중 하나 이상은 영구 저장 장치를 포함할 수 있다. 메모리 모듈(135)이 영구 장치로 제공되는 경우, 향상된 기능 CXL 스위치(130)의 컨트롤러(137)는 영구 도메인을 관리할 수 있는데, 예컨대, 영구 저장소를 필요로 할 때(예컨대, 대응하는 운영 체제 기능의 사용에 의해) 처리 회로(115)에 의해 식별된 데이터를 영구 저장소에 저장할 수 있다. 이러한 실시예에서, 소프트웨어 API는 캐시 및 데이터를 영구 저장장치로 플러시(flush)할 수 있다.
일부 실시예에서, 메모리 모듈들(135)로의 직접 메모리 이전(direct memory transfer)은 메모리 모듈(135)의 컨트롤러들에 의해 수행되는 동작들은 향상된 기능 CXL 스위치(130)의 컨트롤러(137)에 의해 수행되면서, 도 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)는 이 플래시 메모리에 대한 플래시 변환 계층을 구현한다. 플래시 변환 계층은 프로세서-측 메모리 위치들의 덮어쓰기(overwriting)(상기 데이터를 다른 위치로 이동하고 상기 데이터의 이전 위치를 유효하지 않은 것으로 표시함으로써)를 지원할 수 있으며, 플래시 변환 계층은 가비지 수집(유효하지 않은 것으로 표시된 블록의 데이터의 비율이 임계값을 초과하면 상기 블록에서 모든 유효한 데이터를 다른 블록으로 이동한 후 블록을 지움)을 수행할 수 있다.
일부 실시에들에서, 향상된 기능 CXL 스위치(130)의 컨트롤러(137)는 물리적 기능 이전(PF transfer)에 대한 PF를 용이하게 할 수 있다. 예컨대, 처리 회로들(115)중 하나가 하나의 물리적 주소에서 다른 물리적 주소로 데이터를 이동할 필요가 있는 경우(동일한 가상 주소를 가질 수 있으며, 이 사실은 처리 회로(115)의 동작에 영향을 미칠 필요가 없음) 또는 처리 회로(115)가(처리 회로(115)가 가질 필요가 있는) 2개의 가상 주소들 사이에서 데이터를 이동시킬 필요가 있으면, 향상된 기능 CXL 스위치(130)의 컨트롤러(137)는 처리 회로(115)의 개입 없이 이전(transfer)을 감독할 수 있다. 예를 들어, 처리 회로(115)는 CXL 요청을 전송할 수 있고, 데이터는 처리 회로(115)로 가지 않고 하나의 메모리 모듈(135)로부터 향상된 기능 CXL 스위치(130) 후위의 다른 메모리 모듈(135)로 전송될 수 있다(예를 들어, 데이터는 하나의 메모리 모듈(135)에서 다른 메모리 모듈(135)로 데이터가 복사될 수 있음). 이 상황에서, 처리 회로(115)가 CXL 요청을 개시했기 때문에, 처리 회로(115)는 일관성을 보장하기 위해 처리 회로(115)의 캐시를 플러시할 필요가 있을 수 있다. 대신 Type 2 메모리 장치(예컨대, 메모리 모듈들(135)중 하나 또는 CXL 스위치에 연결될 수도 있는 가속기)가 CXL 요청을 개시하고, 스위치가 가상화되지 않은 경우, Type 2 메모리 장치는 메시지를 처리 회로(115)로 보내 캐시를 무효화한다.
일부 실시예에서, 향상된 기능 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)는 루트 포트-투-엔드포인트 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 메모리 주소에 대한 판독 커맨드를 수신하는 단계, 상기 캐시-일관성 스위치에 의해 상기 제1 메모리 주소를 제2 메모리 주소로 변환하는 단계, 상기 캐시-일관성 스위치에 의해 상기 제2 메모리 주소에서 제1 메모리 모듈로부터 데이터를 검색하는 단계를 포함한다. 일부 실시예에서, 상기 방법은 캐시-일관성 스위치에 의해 데이터를 수신하는 단계, 상기 캐시-일관성 스위치에 의해 상기 제1 메모리 모듈에 데이터를 저장하는 단계, 및 상기 캐시-일관성 스위치에 의해 캐시 라인을 무효화하기 위한 커맨드를 상기 저장된-프로그램 처리 회로로 전송하는 단계를 포함한다. 본 발명의 일 실시예에 따르면, 제1 서버를 포함하는 시스템이 제공되며, 저장된-프로그램 처리 회로, 네트워크 인터페이스 회로, 캐시-일관성 스위칭 수단, 및 제1 메모리 모듈을 포함하며, 상기 제1 메모리 모듈은 상기 캐시-일관성 스위칭 수단에 연결되고, 상기 캐시-일관성 스위치는 상기 네트워크 인터페이스 회로에 연결되며, 상기 저장된-프로그램 처리 회로는 상기 캐시-일관성 스위칭 수단에 연결된다.
도 1e는 복수의 서버(105) 각각이 도시된 바와 같이, PCIe 기능들을 갖는 PCIe 5.0 CXL 스위치일 수 있는 ToR 서버-링크 스위치(server-linking switch)(112)에 연결되는 실시예를 도시한다. 서버-링크 스위치(112)는 FPGA 또는 ASIC를 포함할 수 있으며, 이더넷 스위치보다 우수한 성능(처리량(throughput) 및 지연시간(latency)의 측면에서)을 제공할 수 있다. 서버들(105) 각각은 향상된 기능 CXL 스위치(130) 및 복수의 PCIe 커넥터를 통해 서버-링크 스위치(112)에 연결된 복수의 메모리 모듈(135)을 포함할 수 있다. 서버들(105) 각각은 또한 도시된 바와 같이, 하나 이상의 처리 회로들(115) 및 시스템 메모리(120)를 포함할 수 있다. 서버-링크 스위치(112)는 마스터로서 동작할 수 있고, 향상된 기능 CXL 스위치들(130) 각각은 이하 더 상세히 기술되는 바와 같이 슬레이브로서 동작할 수 있다.
도 1e의 실시예에서, 서버-링크 스위치(112)는 서로 다른 서버들(105)로부터 수신된 다수의 캐시 요청들을 그룹화하거나 묶을 수 있고, 패킷들을 그룹화하여 제어 오버헤드를 감소시킬 수 있다. 향상된 기능 CXL 스위치(130)는 (i) 워크로드에 기반한 서로 다른 메모리 타입들로 데이터를 라우팅하고, (ii) 프로세서-측 주소들을 메모리-측 주소들로 가상화하고 (iii) 처리 회로들(115)을 우회함으로써 서로 다른 서버들(105) 사이의 일관성 있는 요청들(coherent requests)을 용이하게 하기 위해 슬레이브 컨트롤러(예컨대, 슬레이브 FPGA 또는 슬레이브 ASIC)를 포함할 수 있다. 도 1e에 도시된 시스템은 CXL 2.0 기반일 수 있고, 랙(rack) 내에 분산된 공유 메모리를 포함할 수 있으며, 원격 노드들과 기본적으로(natively) 연결하기 위해 ToR 서버-링크 스위치(112)를 사용할 수 있다.
ToR 서버-링크 스위치(112)는 다른 서버 또는 클라이언트에 연결하기 위한 추가 네트워크 연결(예컨대, 도시된 이더넷 연결들 또는 다른 종류의 연결, 예컨대, WiFi 연결 또는 5G 연결과 같은 무선 연결)을 가질 수 있다. 서버-링크 스위치(112) 및 향상된 기능 CXL 스위치(130)는 각각 ARM 프로세서와 같은 처리 회로이거나 이를 포함할 수있는 컨트롤러를 포함할 수 있다. PCIe 인터페이스는 PCIe 5.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)(64-byte) 레벨에서 미세 입자 로드-스토어(load-store) 인터페이스를 가능하게 할 수 있다. 각 서버는 집합된 메모리 장치들을 가질 수 있으며, 각 장치는 각 LD-ID를 갖는 다수의 논리 장치들로 분할된다. ToR 스위치(112)("서버-링크 스위치"로 지칭될 수 있음)는 일대다 기능을 가능하게 하고, 서버(105)의 향상된 기능 CXL 스위치(130)는 다대일 기능을 가능하게 한다. 서버-링크 스위치(112)는 PCIe 스위치, CXL 스위치 또는 둘 다일 수 있다. 이러한 시스템에서, 요청자들은 다수의 서버들(105)의 처리 회로들(115)일 수 있고, 응답자들은 많은 집합된 메모리 모듈들(135)일 수 있다. 2개의 스위치들의 계층구조(전술한 바와 같이, 마스터 스위치는 서버-링크 스위치(112)이고, 슬레이브 스위치는 향상된 기능 CXL 스위치(130)임)는 아무-아무(any-any) 통신을 가능하게 한다. 메모리 모듈들(135) 각각은 하나의 물리적 기능(PF)과 최대 16 개의 분리된 논리적 장치를 가질 수 있다. 일부 실시예에서 논리 장치의 수(예를 들어, 파티션의 수)는 제한 될 수 있고(예를 들어, 16 개로), 하나의 제어 파티션(장치를 제어하기 위해 사용되는 물리적 기능 일 수 있음)이 또한 존재할 수있다. 각각의 메모리 모듈(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)의 상태를 조회하는데, 예를 들어, 전원 상태(메모리 서버(150)의 전원 공급 장치가 적절하게 작동하는지 여부), 네트워크 상태(서버-링크 스위치(112)에 대한 인터페이스가 적절하게 동작하는지 여부) 및 에러 검사 상태(에러 조건이 메모리 서버(150)의 서브 시스템중 하나에 존재하는지 여부)를 조회한다. 상기 소프트웨어 아키텍처는 복제를 제공할 수 에 따라 마스터 컨트롤러가 메모리 모듈들(135)에 저장된 데이터를 복제하고 복제본의 데이터 일관성을 유지할 수 있다.
소프트웨어 아키텍처는 일관성을 제공할 수 있는데, 마스터 컨트롤러가 서로 다른 일관성 레벨로 구성될 수 있고, 서버-링크 스위치(112)는 유지될 일관성 레벨에 따라 패킷 포맷을 조정할 수 있다. 예를 들어, 최종 일관성이 유지되는 경우, 서버-링크 스위치(112)는 요청들을 재정렬할 수 있는 반면, 엄격한 일관성을 유지하기 위해서는 서버-링크 스위치(112)는 스위치들에서 정확한 타임스탬프들을 가지고 모든 요청들의 스코어보드를 유지할 수 있다. 소프트웨어 아키텍처는 시스템 일관성을 제공할 수 있는데, 다수의 처리 회로(115)는 동일한 메모리 주소로부터 판독하거나 기록할 수 있으며, 마스터 컨트롤러는 일관성을 유지하기 위해(디렉토리 룩업을 사용하여) 주소의 홈 노드에 도달하거나 공통 버스 상에서 요청을 브로드캐스팅할 책임을 가진다.
소프트웨어 아키텍처는 해싱(hashing)을 제공할 수 있는데, 서버-링크 스위치(112) 및 향상된 기능 CXL 스위치가 부팅시 모든 노드들에 걸쳐 모든 CXL 장치들에 데이터를 균등하게 맵핑하기 위해(또는 한 서버가 다운되거나 작동할 때 조정하기 위해) 다수의 해시 기능들과 함께 일관된 해싱을 사용할 수 있는 주소의 가상 맵핑(mapping)을 유지할 수 있다. 소프트웨어 아키텍처는 캐싱을 제공할 수 있는데, 마스터 컨트롤러(예를 들어, HBM 또는 유사한 능력들을 가진 기술을 포함하는 메모리 모듈(135)에서)가 어떤 메모리 파티션을 지정하여 캐시(동시 기록(write-through) 캐싱 또는 후기 기록(write-back) 캐싱을 사용함)로서 작동할 수 있다. 소프트웨어 아키텍처는 지속성을 제공하는데, 그에 따라 마스터 컨트롤러와 슬레이브 컨트롤러가 영구 도메인 및 플러시를 관리할 수 있다.
일부 실시예에서, CXL 스위치의 능력들은 메모리 모듈(135)의 컨트롤러에 통합된다. 이러한 실시예에서, 서버-링크 스위치(112)는 그럼에도 불구하고 마스터로서 작동할 수 있고 이외의 다른 곳에서도 전술한 바와 같이 향상된 특징들을 가질 수 있다. 서버-링크 스위치(112)는 또한 시스템의 다른 저장 장치를 관리할 수 있으며, 예를 들어 서버-링크 스위치(112)에 의해 형성된 PCIe 네트워크의 일부가 아닌 클라이언트 머신에 연결하기 위한 이더넷 연결(예: 100 GbE 연결)을 가질 수 있다.
일부 실시예에서, 서버-링크 스위치(112)는 향상된 기능들을 갖고 또한 통합된 CXL 컨트롤러를 포함한다. 다른 실시예에서, 서버-링크 스위치(112)는 물리적 라우팅 장치일 뿐이며, 각 서버(105)는 마스터 CXL 컨트롤러를 포함한다. 이러한 실시예에서, 서로 다른 서버들에 걸쳐 있는 마스터들은 마스터-슬레이브 아키텍처를 협상할 수 있다. (i) 향상된 기능 CXL 스위치(130) 및 (ii) 서버-링크 스위치(112)의 지능형 기능들은 하나 이상의 FPGA, 하나 이상의 ASIC, 하나 이상의 ARM 프로세서, 또는 컴퓨팅 기능들을 갖는 하나 이상의 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 메모리 주소에 대한 판독 커맨드를 수신하는 단계, 상기 캐시-일관성 스위치에 의해 상기 제1 메모리 주소를 제2 메모리 주소로 변환하는 단계, 상기 캐시-일관성 스위치에 의해 상기 제2 메모리 주소에서 제1 메모리 모듈로부터 데이터를 검색하는 단계를 포함한다. 본 발명의 일실시예에 따르면, 제1 서버, 제2 서버, 및 상기 제1 서버 및 상기 제2 서버에 연결된 서버-링크 스위치를 포함하고, 상기 제1 서버는 저장된-프로그램 처리 회로, 캐시-일관성 스위칭 수단 및 제1 메모리 모듈을 포함하며, 상기 제1 메모리 모듈은 상기 캐시-일관성 스위칭 수단에 연결되고, 상기 캐시-일관성 스위칭 수단은 상기 캐시-일관성 스위칭 수단에 연결되고, 상기 저장된- 프로그램 처리 회로는 상기 캐시-일관성 스위칭 수단에 연결된다.
도 1g는 복수의 메모리 서버들(150) 각각이 도시된 바와 같이, PCIe 5.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 인터페이스는 PCIe 5.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를 갖는 다수의 논리 장치들로 분할된다. 향상된 기능 CXL 스위치(130)는 컨트롤러(137)(예컨대, ASIC 또는 FPGA), 및 장치 발견, 계산(enumeration), 분할(partitioning) 및 물리적 주소 범위들의 제공을 위한 회로(이러한 ASIC 또는 FPGA로부터 또는 그 일부로부터 분리될 수 있음)를 포함할 수 있다. 메모리 모듈들(135) 각각은 하나의 물리적 기능(PF)과 최대 16 개의 분리된(isolated) 논리적 장치들을 가질 수 있다. 일부 실시예에서 논리 장치들의 개수(예를 들어, 파티션들의 개수)는 제한될 수 있고(예를 들어, 16 개까지), 하나의 제어 파티션(상기 장치를 제어하기 위해 사용되는 물리적 기능일 수 있음)이 또한 존재할 수 있다. 메모리 모듈들(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) 중 하나에 대한 전력을 디스에이블(즉, 전력 차단 또는 전력 감소)한다. 그런 다음, 향상된 기능 CXL 스위치(130)는지시를 받았을 때, 메모리 모듈에 대한 전력을 디스에이블하기 위해 서버-링크 스위치(112)에 의해 메모리 모듈(135)에 대한 전력을 디스에이블할 수 있다. 이러한 디스에이블은 전력을 보존할 수 있고, 메모리 서버(150)에서 다른 메모리 모듈들(135)의 성능(예컨대, 처리량 및 대기시간)을 개선할 수 있다. 각 원격 서버(105)는 협상에 기초한 메모리 모듈(135) 및 이들의 연결들의 상이한 논리적 관점을 볼 수 있다. 향상된 기능 CXL 스위치(130)의 컨트롤러(137)는 각 원격 서버가 할당된 자원 및 연결을 유지하도록 상태를 유지할 수 있으며, 메모리 용량을(구성가능한 청크(chunk) 크기를 사용하여) 절약하기 위해 메모리의 압축 또는 중복제거(deduplication)를 수행할 수 있다. 도 1g의 집합되지 않은 랙은 자체 BMC를 가질 수 있다. 또한, 도 1g의 집합되지 않은 랙은 IPMI 네트워크 인터페이스 및 시스템 이벤트 로그(SEL)를 원격 장치들에 노출하여, 마스터(예컨대, 메모리 서버들(150)에 의해 제공된 스토리지를 사용하는 원격 서버)가 성능 및 신뢰성을 상황에 따라 측정하고 집합되지 않은 랩을 재구성할 수 있도록 한다. 도 1g의 집합되지 않은 랙은 예를 들어, 일관성은 동일한 메모리 주소에 대해 판독하거나 또는 기록하는 다수의 원격 서버들에서 제공되고 각 원격 서버가 서로 다른 일관성 레벨들로 구성되면서, 도 1e의 실시예에 대해 본 명세서에서 설명된 것과 유사한 방식으로 신뢰성, 복제, 일관성, 시스템 일관성, 해싱, 캐싱 및 지속성을 제공할 수 있다. 일부 실시예에서, 서버-링크 스위치는 제1 메모리 서버에 저장된 데이터와 제2 메모리 서버에 저장된 데이터 사이의 최종 일관성을 유지한다. 서버-링크 스위치(112)는 서로 다른 서버 쌍들에 대해 서로 다른 일관성 레벨들을 유지할 수 있는데, 예들어, 서버-링크 스위치는 또한 제1 메모리 서버에 저장된 데이터와 제3 메모리 서버에 저장된 데이터 사이에서 엄격한 일관성, 순차적 일관성, 인과적 일관성 또는 프로세서 일관성인 일관성 레벨을 유지할 수 있다. 상기 시스템은 "로컬-밴드"(서버-링크 스위치(112)) 및 "글로벌-밴드"(집합되지 않은 서버) 도메인들에서 통신을 채용할 수 있다. 쓰기들은 다른 서버들로부터 새로운 읽기들에 대해 가시적이도록 "글로벌 밴드"로 플러시(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 메모리 서버의 상태를 질의하도록 구성된다. 일부 실시예에서, 서버-링크 스위치는 지능형 플랫폼 관리 인터페이스(IPMI)를 통해 제1 메모리 서버의 상태를 질의하도록 구성된다. 일부 실시예에서, 상태의 질의는 전력 상태, 네트워크 상태 및 에러 검사 상태로 구성된 그룹으로부터 선택된 상태를 질의하는 것을 포함한다. 일부 실시예에서, 서버-링크 스위치는 제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 메모리 서버의 상태를 질의하는 단계를 더 포함한다. 본 발명의 일실시예에 따르면, 캐시-일관성 스위치 및 제1 메모리 모듈을 포함하는 제1 메모리 서버, 제2 메모리 서버, 및 상기 제1 메모리 서버 및 제2 메모리 서버에 연결된 서버-링크 스위칭 수단을 포함하고, 상기 제1 메모리 모듈은 상기 캐시-일관성 스위치에 연결되며, 상기 캐시-일관성 스위치는 상기 서버-링크 스위칭 수단에 연결된다.
도 2A-2D는 다양한 실시예들에 대한 흐름도들이다. 이들 흐름도의 실시예에서, 처리 회로(115)는 CPU이고; 다른 실시예에서, 처리 회로(115)는 다른 처리 회로(예를 들어, GPU)일 수 있다. 도 2a를 참조하면, 도 1a 및 1b의 실시예의 메모리 모듈(135)의 컨트롤러(137), 또는도 1c 내지 1g의 실시예들 중 하나의 향상된 기능 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)(예를 들어, 100 GbE-인에이블된 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 서버의 제2 PCIe 커넥터로 전송하며, 256에서, 제 2 처리 회로(115)(예컨대, x86 처리 회로)는 제2 PCIe 커넥터로부터 요청을 수신하고, 258에서, 제2 처리 회로(115)는 집합된 메모리를 공유하기 위해 CXL 2.0 프로토콜을 통해 제2 DDR 및 제2 추가 메모리 자원을 사용하여 상기 요청(예를 들어, 메모리 내용의 검색)을 함께 처리할 수 있고; 260에서, 제2 처리 회로(예를 들어, x86 처리 회로)는 요청의 결과를 각각의 PCIe 커넥터 및 서버-링크 스위치(112)를 통해 원래의 처리 회로로 다시 전송한다.
도 2d를 참조하면, 도 1g의 실시예에서, RDMA는 예컨대, 데이터의 취급에 관여하는 원격 서버의 처리 회로로 수행될 수 있으며, 225에서, 처리 회로(115)는 이더넷 상에서 데이터 또는 워크로드 요청을 전송하고, 230에서, ToR 이더넷 스위치(110)는 상기 요청을 수신하고 상기 요청을 복수의 서버(105)중 대응하는 서버(105)로 라우팅할 수 있으며, 235에서, 상기 요청은 네트워크 인터페이스 회로(125)(예를 들어, 100 GbE-인에이블된 NIC)의 포트(들)를 통해 서버 내에서 수신될 수 있다. 262에서, 메모리 모듈(135)은 PCIe 커넥터로부터 상기 요청을 수신하고, 264에서, 메모리 모듈(135)의 컨트롤러는 로컬 메모리를 사용하여 요청을 처리하고; 250에서, 메모리 모듈(135)의 컨트롤러는 다른 서버로부터 메모리 내용(예를 들어, 집합된 메모리 내용)을 액세스하기 위한 요구사항을 식별하고, 252에서, 메모리 모듈(135)의 컨트롤러는 CXL 프로토콜을 통해 다른 서버로부터 상기 메모리 내용(예를 들어, 집합된 메모리 내용)에 대한 요청을 전송하고, 254에서 상기 요청은 로컬 PCIe 커넥터를 통해 서버-링크 스위치(112)로 전파되고, 그 다음 서버-링크 스위치(112)가 상기 요청을 랙 상의 제2 서버의 제2 PCIe 커넥터로 전송하고, 266에서, 제2 PCIe 커넥터는 메모리 모듈(135)의 컨트롤러가 메모리 내용을 검색할 수 있도록 집합된 메모리를 공유하기 위해 CXL 프로토콜을 통해 액세스를 제공한다.
본 명세서에서 사용된 바와 같이, "서버"는 적어도 하나의 저장된-프로그램 처리 회로(예컨대, 처리 회로(115)), 적어도 하나의 메모리 자원(예컨대, 시스템 메모리(120)), 및 네트워크 연결(예를 들어, 네트워크 인터페이스 회로(125))을 제공하기 위한 적어도 하나의 회로를 포함하는 컴퓨팅 시스템이다. 본 명세서에서 사용된 바와 같이, "~의 일부"는 사물의 "적어도 일부"를 의미하고, 따라서 사물의 전부 또는 전부보다 적음을 의미할 수 있다. 이와 같이, 사물의 "일부"는 사물 전체를 특별한 경우로 포함하는데, 즉, 사물 전체가 사물의 일부에 대한 일 예이다.
명세서의 배경 항목에서 제공되는 배경은 맥락을 설정하기 위해서만 포함되며, 이 배경의 내용은 종래 기술인 것으로 인정하지 않는다. 설명된 임의의 구성요소 또는 구성요소들의 임의의 조합(예를 들어, 여기에 포함된 임의의 시스템 다이어그램에서)은 여기에 포함된 임의의 흐름도의 동작들 중 하나 이상을 수행하는데 사용될 수 있다. 또한, (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 변수)이 제2 수량(예 : 제2 변수)에 "기반"되는 것으로 언급될 때, 이는 제2 수량이 방법에 대한 입력 또는 제1 수량에 영향을 주는데, 예를 들어, 제2 수량은 제1 수량을 계산하는 함수에 대한 입력(예 : 유일한 입력 또는 여러 입력 중 하나)이거나, 제1 수량은 제2 수량과 동일한 값을 가지거나 제 2 수량과 동일할 수 있다(예를 들어, 메모리 내의 동일한 위치 또는 위치들에 저장됨).
비록 용어 "제1", "제2", "제3" 등이 본 명세서에서 다양한 소자들, 구성요소들, 영역들, 계층들 및/또는 섹션들을 설명하기 위해 사용될 수 있으며, 이러한 소자들, 구성요소들, 영역들, 계층들 및/또는 섹션들은 이들 용어로 제한되지 않음이 이해될 것이다. 이러한 용어들은 하나의 소자, 구성요소, 영역, 계층 또는 섹션을 다른 소자, 구성요소, 영역, 레이어 또는 섹션과 구별하는 데만 사용된다. 따라서, 본 명세서에서 언급된 제1 소자, 구성요소, 영역, 계층 또는 섹션은 본 발명의 개념의 사상 및 범위를 벗어나지 않고 제2 소자, 구성요소, 영역, 계층 또는 섹션으로 지칭될 수 있다.
"바로 아래(beneath)", "아래(below)", "하위(lower)", "하부(under)", "상부(above)", "상위(upper)"등과 같은 공간적으로 상대적인 용어들은 설명의 편의를 위해 도면에 도시된 바와 같은 하나의 소자 또는 특징이 다른 소자(들) 또는 특징(들)에 대해 갖는 관계를 설명하기 위해 사용될 수 있다. 그러한 공간적으로 상대적인 용어는 도면에 도시된 방향 이외에도, 사용 또는 동작중인 장치의 다른 방향들을 포함하도록 의도된 것임을 이해할 것이다. 예를 들어, 도면의 장치가 뒤집힌 경우, 다른 소자 또는 특징의 "아래" 또는 "아래" 또는 "바로 아래"로 설명된 소자는 상기 다른 소자 또는 특징의 "상부"로 향하게 된다. 따라서, 예시적인 용어 "아래" 및 "하부"는 상부와 하부의 방향을 모두 포함할 수 있다. 장치는 다른 방향으로 배치될 수 있으며(예를 들어, 90도 회전하거나 다른 방향으로) 여기에 사용된 공간적으로 상대적인 설명용어는 그에 따라 해석되어야 한다. 또한, 한 계층이 두 계층 사이에 있는 것으로 언급될 때, 이는 두 계층 사이의 유일한 계층일 수 있거나 하나 이상의 중간층(intervening layers)이 존재할 수도 있음을 또한 이해할 것이다.
본 명세서에서 사용 된 용어는 특정 실시예를 설명하기위한 것이며 본 발명을 제한하려는 의도가 아니다. 본 명세서에서 사용되는 용어 "실질적으로", "약" 및 이와 유사한 용어는 정도(degree)의 용어가 아니라 근사값의 용어로 사용되며, 당업자에 의해 인지될 수 있는 측정된 또는 계산된 값의 고유한 편차를 고려하도록 의도된 것이다. 본 명세서에서 사용 된 바와 같이, 단수 형태 "a"및 "an"은 문맥상 명백하게 달리 나타내지 않는 한 복수 형태도 포함하도록 의도된다. 본 명세서에서 사용될 때 "포함한다" 및/또는 "포함하는"이라는 용어는 언급된 특징, 정수, 단계, 동작, 소자 및/또는 구성요소의 존재를 특정하지만 하나 이상의 다른 특징, 정수, 단계, 동작, 소자, 구성요소 및/또는 그 그룹의 존재 또는 추가를 배제하지는 않는다는 것이 또한 이해될 것이다. 본 명세서에서 사용되는 용어 "및/또는"은 하나 이상의 연관되어 열거된 항목들의 하나 이상의 임의의 및 모든 조합을 포함한다. "적어도 하나의"와 같은 표현은 소자들의 목록 앞에 올 때 목록 전체 소자들을 변경하며, 목록의 개별 소자를 변경하지 않는다. 또한, 본 발명의 실시예를 설명할 때 "할 수 있다(may)"라는 용어는 "본 개시의 하나 이상의 실시예들"을 나타낸다. 또한, "예시적인"이라는 용어는 예 또는 예시를 나타내는 것으로 의도된다. 본 명세서에서 사용되는 "사용하다", "사용하여", "사용된"이라는 용어는 각각 "활용하다", "활용하여"및 "활용된"라는 용어와 동의어로 간주될 수 있다.
소자 또는 계층이 다른 소자 또는 계층 "에 위치함", "에 연결됨", "에 결합됨" 또는 "에 인접한"것으로 언급될 때, 상기 소자 또는 계층이 다른 소자 또는 계층에 직접 위치하거나, 연결되거나 결합되거나, 인접한 것이거나, 하나 이상의 개재 소자 또는 계층이 존재할 수 있다. 반대로, 소자 또는 계층이 다른 소자 또는 계층에 "바로 위에", "에 직접 연결됨", "에 직접 결합됨" 또는 "에 바로 인접함"이라고 언급될 때, 개재하는 소자 또는 계층이 존재하지 않는다.
본 명세서에서 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정확성의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "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 항에 있어서,
    상기 제1 메모리 모듈은 제2 메모리 다이를 더 포함하고,
    상기 제1 메모리 다이는 휘발성 메모리를 포함하며,
    상기 제2 메모리 다이는 영구 메모리를 포함하는 시스템.
  3. 제2항에 있어서,
    상기 영구 메모리는 NAND 플래시를 포함하는 시스템.
  4. 제3항에 있어서,
    상기 컨트롤러는 상기 영구 메모리를 위한 플래시 변환 계층(flash translation layer)을 제공하도록 구성되는 시스템.
  5. 제1항에 있어서,
    상기 캐시-일관성 인터페이스는 CXL(Compute Express Link) 인터페이스를 포함하는 시스템.
  6. 제1항에 있어서,
    상기 제1 서버는 상기 제1 서버의 확장 소켓에 연결된 확장 소켓 어댑터를 포함하고,
    상기 확장 소켓 어댑터는 상기 제1 메모리 모듈; 및
    상기 제1 네트워크 인터페이스 회로를 포함하는 시스템.
  7. 제6항에 있어서,
    상기 제1 메모리 모듈의 컨트롤러는 상기 확장 소켓을 통해 상기 저장된-프로그램 처리 회로에 연결되는 시스템.
  8. 제6항에 있어서,
    상기 확장 소켓은 M.2 소켓을 포함하는 시스템.
  9. 제6항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러는 피어-투-피어 PCIe(Peripheral Component Interconnect Express) 연결에 의해 상기 제1 네트워크 인터페이스 회로에 연결되는 시스템.
  10. 제1항에 있어서,
    제2 서버, 및
    상기 제1 서버 및 상기 제2 서버에 연결된 네트워크 스위치를 더 포함하는 시스템.
  11. 제10항에 있어서,
    상기 네트워크 스위치는 ToR(top of rack) 이더넷 스위치를 포함하는 시스템.
  12. 제10항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러는 RDMA(remote direct memory access) 요청들을 수신하고 RDMA 응답들을 전송하도록 구성되는 시스템
  13. 제10항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러는 상기 네트워크 스위치를 통해 그리고 상기 제1 네트워크 인터페이스 회로를 통해 RDMA 요청들을 수신하고, 상기 네트워크 스위치를 통해 그리고 상기 제1 네트워크 인터페이스 회로를 통해 RDMA 응답들을 전송하도록 구성되는 시스템.
  14. 제13항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러는
    상기 제2 서버로부터 데이터를 수신하고,
    상기 데이터를 상기 제1 메모리 모듈에 저장하고,
    캐시 라인을 무효화하는 커맨드를 상기 저장된-프로그램 처리 회로에 전송하는 시스템.
  15. 제1항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러는 FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)을 포함하는 시스템.
  16. 컴퓨팅 시스템에서 원격 다이렉트 메모리 액세스를 실행하는 방법으로서, 상기 컴퓨팅 시스템은
    제1 서버 및 제2 서버,
    상기 제1 서버는
    저장된-프로그램 처리 회로,
    네트워크 인터페이스 회로, 및
    컨트롤러를 포함하는 제1 메모리 모듈을 포함하고,
    상기 방법은
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 RDMA(remote direct memory access) 요청을 수신하는 단계; 및
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 RDMA 응답을 전송하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 컴퓨팅 시스템은 상기 제1 서버 및 상기 제2 서버에 연결된 이더넷 스위치를 더 포함하고,
    상기 RDMA 요청을 수신하는 단계는 상기 이더넷 스위치를 통해 상기 RDMA 요청을 수신하는 단계를 포함하는 방법.
  18. 제16항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 제1 메모리 주소에 대한 판독 커맨드를 상기 저장된-프로그램 처리 회로로부터 수신하는 단계,
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 상기 제1 메모리 주소를 제2 메모리 주소로 변환하는 단계, 및
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 상기 제2 메모리 주소에서 상기 제1 메모리 모듈로부터 데이터를 검색하는 단계를 포함하는 방법.
  19. 제16항에 있어서,
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 데이터를 수신하는 단계,
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 상기 데이터를 상기 제1 메모리 모듈에 저장하는 단계, 및
    상기 제1 메모리 모듈의 상기 컨트롤러에 의해 캐시 라인을 무효화하기 위한 커맨드를 상기 저장된-프로그램 처리 회로로 전송하는 단계를 포함하는 방법.
  20. 시스템에 있어서,
    저장된-프로그램 처리 회로, 제1 네트워크 인터페이스 회로, 및 제1 메모리 모듈을 포함하는 제1 서버를 포함하고,
    상기 제1 메모리 모듈은
    제1 메모리 다이, 및
    컨트롤러 수단을 포함하고,
    상기 컨트롤러 수단은
    메모리 인터페이스를 통해 상기 제1 메모리 다이에 연결되며
    상기 저장된-프로그램 처리 회로에 캐시-일관성 인터페이스를 통해 연결되며,
    상기 제1 네트워크 인터페이스 회로에 연결되는 시스템.
KR1020210065587A 2020-05-28 2021-05-21 캐시 일관성 상호 연결을 갖는 메모리 KR20210147911A (ko)

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/031,509 2020-05-28
US63/031,508 2020-05-28
US202063057746P 2020-07-28 2020-07-28
US63/057,746 2020-07-28
US202063068054P 2020-08-20 2020-08-20
US63/068,054 2020-08-20
US17/026,071 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
KR20210147911A true KR20210147911A (ko) 2021-12-07

Family

ID=74859383

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020210026299A KR20210147865A (ko) 2020-05-28 2021-02-26 메모리 리소스들을 관리하기 위한 시스템 및 방법
KR1020210027533A KR20210147867A (ko) 2020-05-28 2021-03-02 서버 메모리를 집계하는 시스템 및 방법
KR1020210038306A KR20210147871A (ko) 2020-05-28 2021-03-24 서버-링크 스위치 및 캐시-일관 메모리를 갖는 시스템
KR1020210065587A KR20210147911A (ko) 2020-05-28 2021-05-21 캐시 일관성 상호 연결을 갖는 메모리

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020210026299A KR20210147865A (ko) 2020-05-28 2021-02-26 메모리 리소스들을 관리하기 위한 시스템 및 방법
KR1020210027533A KR20210147867A (ko) 2020-05-28 2021-03-02 서버 메모리를 집계하는 시스템 및 방법
KR1020210038306A KR20210147871A (ko) 2020-05-28 2021-03-24 서버-링크 스위치 및 캐시-일관 메모리를 갖는 시스템

Country Status (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024117572A1 (ko) * 2022-11-29 2024-06-06 한국전자통신연구원 대용량 온칩 메모리를 갖는 인공지능 프로세서를 위한 가상주소 기반의 캐시 코헤런시 지원 방법 및 이를 위한 장치

Families Citing this family (20)

* 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
US11995017B2 (en) * 2021-06-09 2024-05-28 Enfabrica Corporation Multi-plane, multi-protocol memory switch fabric with configurable transport
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
CA3238860A1 (en) 2021-11-24 2023-06-01 Norihisa MIKAMI Pharmaceutical composition for treating or preventing t cell-related disorders
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 (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
EP2748705A4 (en) * 2011-08-25 2015-05-20 Virtustream Inc SYSTEMS AND METHODS FOR HOST-RELATED RESOURCE MANAGEMENT WITH 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
US10599548B2 (en) * 2018-06-28 2020-03-24 Intel Corporation Cache monitoring
EP3796615B1 (en) * 2018-06-28 2023-06-07 Huawei Technologies Co., Ltd. Fault tolerance processing method, device, and server
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
US11023179B2 (en) * 2018-11-18 2021-06-01 Pure Storage, Inc. Cloud-based storage system storage management
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024117572A1 (ko) * 2022-11-29 2024-06-06 한국전자통신연구원 대용량 온칩 메모리를 갖는 인공지능 프로세서를 위한 가상주소 기반의 캐시 코헤런시 지원 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
EP3916564B1 (en) 2024-06-05
TW202213105A (zh) 2022-04-01
JP2021190123A (ja) 2021-12-13
CN113742259A (zh) 2021-12-03
US20210373951A1 (en) 2021-12-02
EP3916565A1 (en) 2021-12-01
KR20210147867A (ko) 2021-12-07
CN113742257A (zh) 2021-12-03
EP3916566B1 (en) 2024-05-08
KR20210147871A (ko) 2021-12-07
CN113746762A (zh) 2021-12-03
TW202145025A (zh) 2021-12-01
JP2021190125A (ja) 2021-12-13
EP3916563A1 (en) 2021-12-01
CN113810312A (zh) 2021-12-17
JP2021190121A (ja) 2021-12-13
EP3916566A1 (en) 2021-12-01
EP3916564A1 (en) 2021-12-01
TW202147123A (zh) 2021-12-16
TW202213104A (zh) 2022-04-01
CN113810312B (zh) 2023-12-19
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
EP3920034B1 (en) Systems and methods for scalable and coherent memory devices
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) 어레이 내에서 솔리드 스테이트 드라이브들을 자율적으로 관리하는 메커니즘
Radi et al. OmniXtend: Direct to Caches Over Commodity Fabric

Legal Events

Date Code Title Description
A201 Request for examination