KR20230016110A - 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법 - Google Patents

메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법 Download PDF

Info

Publication number
KR20230016110A
KR20230016110A KR1020210096985A KR20210096985A KR20230016110A KR 20230016110 A KR20230016110 A KR 20230016110A KR 1020210096985 A KR1020210096985 A KR 1020210096985A KR 20210096985 A KR20210096985 A KR 20210096985A KR 20230016110 A KR20230016110 A KR 20230016110A
Authority
KR
South Korea
Prior art keywords
memory
memory area
controller
area
data
Prior art date
Application number
KR1020210096985A
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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210096985A priority Critical patent/KR20230016110A/ko
Priority to US17/715,158 priority patent/US20230028071A1/en
Priority to EP22181336.3A priority patent/EP4123649A1/en
Priority to CN202210821174.9A priority patent/CN115687193A/zh
Publication of KR20230016110A publication Critical patent/KR20230016110A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • 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/4063Device-to-bus coupling
    • G06F13/409Mechanical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • 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
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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

Abstract

본 발명의 실시 형태에 따른 메모리 모듈은 복수의 작업 데이터를 저장하며, 제1 메모리 영역과 제2 메모리 영역을 포함하는 장치 메모리와, 가속기 회로를 포함하며, 상기 장치 메모리를 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는 모드 전환 요청에 응답하여 상기 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 호스트 프로세서로 전송하고, 상기 제1 메모리 영역을 메모리 구성 레지스터에서 제외시키며, 상기 모드 전환 요청은 응용 프로그램이 유저 모드에서 커널 모드로 전환하는 이벤트이고, 상기 가속기 회로는 상기 제1 메모리 영역을 가속 연산을 수행하는데 이용한다.

Description

메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법{MEMORY MODULE, SYSTEM INCLUDING THE SAME, AND OPERATION METHOD OF MEMORY MODULE}
본 발명은 메모리 모듈 및 이를 포함하는 시스템에 관한 것이다.
최근 인공지능 및 빅데이터를 활용하는 응용분야가 늘어나면서 처리해야 되는 데이터의 양이 폭발적으로 증가하고 있다. 컴퓨팅 시스템의 메모리 용량의 물리적 한계를 극복하기 위하여 다양한 기술들이 개발되고 있다. 특히, CXL(Compute Express Link)은 고성능 컴퓨팅 시스템에서 CPU와 함께 사용되는 가속기, 메모리, 저장장치 등을 보다 효율적으로 활용하기 위해 새롭게 제안된 인터페이스이다.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, 시스템 메모리 용도로 사용하던 메모리 영역의 일부를 가속 연산 전용으로 가변적으로 변경할 수 있는 메모리 모듈을 제공하는 데에 있다.
본 발명의 일 실시 예에 따른 메모리 모듈은, 복수의 작업 데이터를 저장하며, 제1 메모리 영역과 제2 메모리 영역을 포함하는 장치 메모리와, 가속기 회로를 포함하며, 상기 장치 메모리를 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는 모드 전환 요청에 응답하여 상기 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 호스트 프로세서로 전송하고, 상기 제1 메모리 영역을 메모리 구성 레지스터에서 제외시키며, 상기 가속기 회로는 상기 제1 메모리 영역을 가속 연산을 수행하는데 이용한다.
본 발명의 일 실시 예에 따른 시스템은, 제1 메모리와, 상기 제1 메모리와 직접 통신하는 컨트롤러와, 제2 메모리와, 상기 제2 메모리와 직접 통신하며, 상기 컨트롤러와 이종 컴퓨팅 인터페이스를 통해 통신하는 프로세서를 포함하고, 상기 프로세서는 상기 제1 메모리의 제1 메모리 영역을 시스템 메모리 맵에서 제외시키며, 상기 컨트롤러는 상기 제1 메모리 영역을 메모리 구성 레지스터에서 제외시키고, 상기 제1 메모리 영역의 용도는 시스템 메모리 용에서 가속 연산 전용으로 변경된다.
본 발명의 일 실시예에 따른 메모리 모듈의 동작 방법은, 컨트롤러가 장치 메모리의 제1 메모리 영역의 용도를 가속 연산 전용으로 설정하기 위한 제1 모드 전환 요청을 수신하는 단계와, 상기 제1 모드 전환 요청에 응답하여, 상기 컨트롤러는 상기 장치 메모리를 확인하고, 상기 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송하는 단계와, 상기 명령에 응답하여 상기 제1 메모리 영역이 핫 플러그-아웃되어 시스템 메모리 맵에서 제외되면, 상기 컨트롤러는 메모리 구성 레지스터에서 상기 제1 메모리 영역을 제외시키는 단계를 포함한다.
본 발명의 일 실시 예에 따르면, 시스템 메모리 용도로 사용하던 메모리 영역의 일부를 가속 연산 전용으로 가변적으로 변경할 수 있으므로, 저비용으로 시스템의 효율을 극대화시킬 수 있다.
또한, 메모리 모듈이 가속 연산을 수행하고 결과값만 호스트 프로세서로 전송하면 되므로, 호스트 프로세서의 대역폭을 확보할 수 있다.
본 발명의 다양하면서도 유익한 장점과 효과는 상술한 내용에 한정되지 않으며, 본 발명이 구체적인 실시 형태를 설명하는 과정에서 보다 쉽게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시 예에 따른 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 시스템을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 5a와 도 5b 본 발명의 일 실시예에 따른 메모리 모듈을 나타낸 도면들이다.
도 6은 본 발명의 일 실시예에 따른 시스템 메모리 맵을 설명하기 위한 도면이다.
도 7은 본 발명의 다른 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 8 내지 10은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 11은 본 발명의 다른 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 12 내지 도 14는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 15는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 16은 본 발명의 일 실시예에 따른 메모리 맵을 설명하기 위한 도면이다.
도 17은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 18과 도 19는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 20과 도 21은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 22는 본 발명의 실시 예에 따른 서버 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다.
도 23은 본 발명의 실시 예에 적용된 이종 컴퓨팅 인터페이스의 예시를 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 형태들을 다음과 같이 설명한다.
도 1은 본 발명의 일 실시 예에 따른 시스템을 나타내는 블록도이다.
도 1을 참조하면, 시스템(100)은 상호 통신하는 장치(110) 및 호스트 프로세서(120)를 포함하는 임의의 컴퓨팅 시스템(또는 컴퓨팅 시스템에 포함된 구성요소)일 수 있다. 예를 들면, 시스템(100)은, 데스크탑 컴퓨터, 서버, 키오스크(Kiosk) 등과 같은 고정형(Stationary) 컴퓨팅 시스템에 포함될 수도 있고, 랩탑 컴퓨터, 모바일 폰, 웨어러블 장치 등과 같은 휴대형(Portable) 컴퓨팅 시스템에 포함될 수도 있다. 또한, 일부 실시예들에서, 시스템(100)은, 장치(110) 및 호스트 프로세서(120)가 하나의 칩 또는 패키지에 구현된, 시스템-온-칩(System-on-chip; SoC) 또는 시스템-인-패키지(System-in-package; SiP)에 포함될 수도 있다. 도 1에 도시된 바와 같이, 시스템(100)은, 장치(110), 호스트 프로세서(120), 장치-부착 메모리(130) 및 호스트 메모리(140)를 포함할 수 있다. 다양한 실시예들에 따라, 시스템(100)은 장치-부착 메모리(130)를 포함하지 않을 수도 있다. 도 1을 참조하면, 장치(110) 및 호스트 프로세서(120)는 링크(150)를 통해서 상호 통신할 수 있고, 링크(150) 상으로 메시지 및/또는 데이터를 상호 송신하거나 수신할 수 있다.
본 개시의 예시적 실시예들은, CXL(Compute Express Link) 프로토콜들을 지원하는 CXL 사양에 기초한 링크(150)를 참조하여 설명될 것이나, 장치(110) 및 호스트 프로세서(120)는, 비 제한적인 예시로서 XBus 프로토콜, NVLink 프로토콜, Infinity Fabric 프로토콜, CCIX(Cache Coherent Interconnect for Accelerators) 프로토콜, CAPI(Coherent Accelerator Processor Interface) 등과 같은 일관적 상호연결(Coherent Interconnect) 기술들에 기초하여 상호 통신할 수도 있다.
일부 실시예들에서, 링크(150)는 다수의(Multiple) 프로토콜들을 지원할 수 있고, 다수의 프로토콜들을 통해서 메시지 및/또는 데이터가 전달될 수 있다. 예를 들면, 링크(150)는, 비일관적(Non-coherent) 프로토콜(예를 들어, CXL.io), 일관적 프로토콜(예를 들어, CXL.cache) 및 메모리 액세스 프로토콜(또는 메모리 프로토콜)(예를 들어, CXL.mem)을 포함하는 CXL 프로토콜들을 지원할 수 있다. 일부 실시예들에서, 링크(150)는, 비 제한적인 예시로서 PCI(Peripheral Component Interconnect), PCIe(PCI express), USB(Universal Serial Bus), SATA(Serial Advanced Technology Attachment) 등과 같은 프로토콜을 지원할 수도 있다. 본 명세서에서, 링크(150)에 의해서 지원되는 프로토콜은 상호연결 프로토콜로서 지칭될 수도 있다.
장치(110)는 호스트 프로세서(120)에 유용한 기능을 제공하는 임의의 장치를 지칭할 수 있다. 일부 실시예들에서, CXL 사양 2.0을 참조하면, 장치(110)는 CXL 사양을 지원하는 가속기(accelerator) 또는 메모리 확장(memory expander)을 위한 메모리 버퍼에 대응될 수 있다.
장치(110)가 가속기로서 동작하는 경우, 호스트 프로세서(120) 상에서 실행되는 소프트웨어는, 연산(computing) 및/또는 입출력(I/O) 작업의 적어도 일부를 장치(110)에 일임(offload)할 수 있다. 일부 실시예들에서, 장치(110)는, GPU(Graphic Processing Unit), NPU(Neural Processing Unit) 등과 같은 프로그램가능한(Programmable) 구성요소(Component), IP(Intellectual Property) 코어 등과 같은 고정된 기능을 제공하는 구성요소 및 FPGA(Field Programmable Gate Array) 등과 같은 재구성가능한(Reconfigurable) 구성요소 중 적어도 하나를 포함할 수 있다. 도 1에 도시된 바와 같이, 장치(110)는 물리 계층(111), 다중-프로토콜 멀티플렉서(112), 인터페이스 회로(113) 및 가속기 회로(114)를 포함할 수 있고, 장치-부착 메모리(130)와 통신할 수 있다.
가속기 회로(114)는, 장치(110)가 호스트 프로세서(120)에 제공하는 유용한 기능을 수행할 수 있고, 가속기 로직(logic)으로 지칭될 수도 있다. 도 1에 도시된 바와 같이 장치-부착 메모리(130)가 시스템(100)에 포함되는 경우, 가속기 회로(114)는 장치-부착 메모리(130)와 통신할 수 있고, 링크(150)에 독립적인 프로토콜, 즉 장치-고유의(Device-specific) 프로토콜에 기초하여 장치-부착 메모리(130)와 통신할 수 있다. 또한, 도 1에 도시된 바와 같이, 가속기 회로(114)는 다수의 프로토콜들을 사용하여 인터페이스 회로(113)를 통해서 호스트 프로세서(120)와 통신할 수 있다.
인터페이스 회로(113)는, 가속기 회로(114) 및 호스트 프로세서(120) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다. 인터페이스 회로(113)는, 다중-프로토콜 멀티플렉서(112)에 포함된 적어도 하나의 프로토콜 큐(Queue)에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 호스트 프로세서(120)와 메시지 및/또는 데이터를 주고 받을 수 있다. 일부 실시예들에서, 인터페이스 회로(113) 및 다중-프로토콜 멀티플렉서(112)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 상이한 프로토콜들에 의한 통신들 사이를 중재(Arbitration)할 수 있고, 선택된 통신들을 물리 계층(111)에 제공할 수 있다. 일부 실시예들에서, 물리 계층(111)은, 호스트 프로세서(120)의 물리 계층(121)과 단일 상호연결, 버스, 트레이스(Trace) 등을 통해서 연결될 수 있다.
장치(110)가 메모리 버퍼로서 동작하는 경우, 호스트 프로세서(120)는 장치(110)를 식별하고 연결할 수 있으며, 장치(110)의 메모리 풀(memory pool)에 액세스할 수 있다. 일부 실시예들에서, 장치 메모리(130)는 다양한 타입의 메모리로 구현될 수 있으며, 한 예로서 스토리지 클래스 메모리(Storage Class Memory, SCM)로 구현될 수 있다. 스토리지 클래스 메모리는 비휘발성 특징과 휘발성 메모리의 특징을 동시에 갖고, 바이트 단위의 접근할 수 있다. 예를 들어 스토리지 클래스 메모리는 PCM(phase-change RAM), FeRAM(ferroelectric RAM), MRAM(magnetic RAM), RRAM(resistive RAM), STT-MRAM 등을 포함할 수 있다.
호스트 프로세서(120)는 시스템(100)의 메인 프로세서, 예컨대 CPU(Central Processing Unit)일 수 있고, 일부 실시예들에서 CXL 사양의 호스트 프로세서(또는 호스트)에 대응할 수 있다. 도 1에 도시된 바와 같이, 호스트 프로세서(120)는 호스트 메모리(140)에 연결될 수 있고, 물리 계층(121), 다중-프로토콜 멀티플렉서(122), 인터페이스 회로(123), 일관성/캐시 회로(124), 버스 회로(125), 적어도 하나의 코어(126) 및 입출력 장치(127)를 포함할 수 있다.
적어도 하나의 코어(126)는 명령어(Instruction)를 실행할 수 있고, 일관성/캐시 회로(124)와 연결될 수 있다. 일관성/캐시 회로(124)는 캐시 계층(Cache Hierarchy)을 포함할 수 있고, 일관성/캐시 로직으로 지칭될 수도 있다. 도 1에 도시된 바와 같이, 일관성/캐시 회로(124)는 적어도 하나의 코어(126) 및 인터페이스 회로(123)와 통신할 수 있다. 예를 들면, 일관성/캐시 회로(124)는 일관적 프로토콜 및 메모리 액세스 프로토콜을 포함하는 2 이상의 프로토콜들을 통한 통신을 가능하게 할 수 있다. 일부 실시예들에서, 일관성/캐시 회로(124)는 DMA(Direct Memory Access) 회로를 포함할 수도 있다. 입출력 장치(127)는 버스 회로(125)와 통신하기 위하여 사용될 수 있다. 예를 들면, 버스 회로(125)는 PCIe 로직일 수 있고, 입출력 장치(127)는 PCIe 입출력 장치일 수 있다.
인터페이스 회로(123)는, 호스트 프로세서(120)의 구성요소들, 예컨대 일관성/캐시 회로(124) 및 버스 회로(125)와 장치(110) 사이 통신을 가능하게 할 수 있다. 일부 실시예들에서, 인터페이스 회로(123)는 다수의 프로토콜들, 예컨대 비일관적 프로토콜(CXL.io), 일관적 프로토콜(CXL.cache) 및 메모리 프로토콜(CXL.memory)에 따라 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 메시지 및/또는 데이터의 통신을 가능하게 할 수 있다. 예를 들면, 인터페이스 회로(123)는, 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다.
다중-프로토콜 멀티플렉서(122)는 적어도 하나의 프로토콜 큐를 포함할 수 있다. 인터페이스 회로(123)는 적어도 하나의 프로토콜 큐에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 장치(110)와 메시지 및/데이터를 주고 받을 수 있다. 일부 실시예들에서, 인터페이스 회로(123) 및 다중-프로토콜 멀티플렉서(122)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 상이한 프로토콜들에 의한 통신들 사이를 중재할 수 있고, 선택된 통신들을 물리 계층(121)에 제공할 수 있다.
CXL은 비일관적 프로토콜(CXL.io), 일관적 프로토콜(CXL.cache) 및 메모리 프로토콜(CXL.memory) 간의 동적 멀티플렉싱을 지원할 수 있다. 비일관적 프로토콜(CXL.io)은 비일관적(non-coherent) 로드 저장소, 생산자(producer)-소비자(consumer) 의미 체계(semantics)를 사용하는 장치 탐색(device discovery), 구성(configuration), 초기화(initialization), I/O 가상화, 및 직접 메모리 접근(direct memory access(DMA))과 같은 기능에 사용될 수 있다.
일관적 프로토콜(CXL.cache)은 간단한 요청 및 응답 프로토콜을 사용하여 장치가 호스트 메모리로부터 데이터를 캐시하는 것을 가능하게 한다. 호스트 프로세서는 스눕 메시지를 사용하여 장치에 캐시된 데이터의 일관성을 관리할 수 있다.
메모리 프로토콜(CXL.memory)은 호스트 프로세서가 공유 장치 메모리에 접근하는 것을 가능하게 한다. 메모리 프로토콜(CXL.memory) 트랜잭션은 간단한 메모리 로드이며 호스트 프로세서로부터 다운스트림으로 실행되는 트랜잭션을 저장할 수 있다. CXL은 호스트 프로세서(CPU)와 CXL 장치에 부착된 메모리 사이의 일관된 통합 메모리 공간을 유지하여, CPU와 장치 모두 리소스를 공유하여 성능을 높이고 소프트웨어 스택 복잡성을 줄일 수 있다.
본 발명의 일 실시예에 따르면, 메모리 확장을 위한 메모리 버퍼로 동작하는 장치의 일부 메모리 영역을 가속 연산에 필요한 데이터를 저장하기 위한 영역으로 용도를 변경할 수 있다. 필요에 따라 상기 메모리 영역에 저장된 데이터는 다른 메모리 영역으로 이동시킬 수 있다. 데이터를 이동시킨 후, 상기 메모리 영역을 시스템 메모리 맵에서 제외시키고, 장치에 포함된 메모리 구성 레지스터의 정보를 변경할 수 있다. 따라서, 시스템 메모리 용도로 사용하던 메모리 영역의 일부를 가속 연산 전용(exclusive)으로 변경할 수 있다. 또한, 가속 연산 전용으로 사용하던 메모리 영역을 다시 시스템 메모리 영역으로 용도를 변경할 수 있다. 데이터를 이동시킨 경우에는 기존의 데이터를 상기 메모리 영역으로 복구할 수 있다. 따라서, 장치의 메모리 영역의 용도를 가변적으로(adaptive) 변경할 수 있고, 이로 인해 시스템의 효율을 극대화시킬 수 있다.
도 2는 본 발명의 일 실시 예에 따른 시스템을 나타내는 블록도이다.
도 2를 참조하면, 시스템(200)은 장치(210), 호스트 프로세서(220), 장치 메모리(230) 및 호스트 메모리(240)를 포함할 수 있다. 일부 실시예들에서, 장치 메모리(230)는 도 1의 장치-부착 메모리(130)에 대응할 수 있다.
도 1을 참조하여 전술된 바와 같이, 장치(210) 및 호스트 프로세서(220)는 다수의 프로토콜들에 기초하여 상호 통신할 수 있다. 다수의 프로토콜들은 메모리 프로토콜(MEM), 일관적 프로토콜(COH) 및 비일관적 프로토콜(IO)을 포함할 수 있다. 일부 실시예들에서, CXL 사양 2.0을 참조하면, 메모리 프로토콜(MEM), 일관적 프로토콜(COH) 및 비일관적 프로토콜(IO) 각각은 CXL.mem, CXL.cache 및 CXL.io에 대응할 수 있다. 비일관적 프로토콜(IO)은 PCIe 트랜잭션 계층에 상응하고, 시스템(200)의 장치 검색, 인터럽트 관리, 레지스터에 대한 액세스 제공, 신호 오류에 대한 처리에 사용될 수 있다.
메모리 프로토콜(MEM)은 호스트 프로세서(220)가 가속기(예를 들어, 도 1의 가속기 회로(114))의 메모리(예를 들어, 도 1의 장치-부착 메모리(130))에 액세스할 때 사용되는 프로토콜일 수 있다. 메모리 프로토콜(MEM)은, 지배자(Master)와 종속자(Subordinate) 사이 트랜잭션들(Transactions)을 정의할 수 있다.
상기 지배자는 CXL.mem 프로토콜에서 리퀘스트(request)를 트리거(trigger)하는 에이전트를 지칭할 수 있다. 예를 들어, MemRd 커맨드를 위한 트랜잭션의 경우, 상기 지배자는 상기 MemRd 커맨드를 트리거하는 호스트 프로세서(220)에 상응할 수 있다.
상기 종속자는, CXL.mem 프로토콜에서 상기 지배자에 의해 트리거된 리퀘스트에 응답할 의무가 있는(responsible for respond) 에이전트를 지칭할 수 있다. 예를 들어, MemRd 커맨드를 위한 트랜잭션의 경우, 종속자는 메모리 장치에 상응할 수 있다. 메모리 장치는 도 1에서 도시된 호스트 메모리(140)일 수도 있고, 장치-부착 메모리(130)일 수도 있다.
메모리 프로토콜(MEM)은 지배자로부터 종속자에게 향하는 트랜잭션 및 종속자로부터 지배자를 향하는 트랜잭션을 정의할 수 있다. 예를 들어, CXL 사양 2.0을 참조하면, 지배자로부터 종속자를 향하는 트랜잭션은, M2S(Master to Subordinate) 트랜잭션으로 지칭될 수 있고, 종속자로부터 지배자에게 향하는 트랜잭션은 S2M(Subordinate to Master) 트랜잭션으로 지칭될 수 있다.
다양한 실시예들에 따라, 장치(210)는 적어도 3개의 유형 중 어느 하나에 상응할 수 있다. 장치(210)는 PGAS(partitioned global address space) NIC(network interface card) 또는 원자(atomic) NIC일 경우, 장치(210)는 CXL 사양에서 정의된 제1 유형(Type 1)에 상응할 수 있다. 시스템(100)은 장치 메모리(230)를 포함하지 않을 수 있다. 제1 유형의 장치(210)를 포함하는 시스템(200)에서 다수의 프로토콜들은, 일관적 프로토콜(COH) 및 비일관적 프로토콜(IO)만을 포함할 수 있다. 장치(210)가 상기 제1 유형에 상응하는 경우, 일관적 프로토콜(COH)을 통해 장치(210)가 호스트 프로세서(220)의 메모리를 사용하도록 할 수 있다. 장치(210)가 상기 제1 유형에 상응하는 경우, 시스템(200)은 D2H(Device to Host) 캐시 일관성과 H2D(Host to Device) 스누프(snoop) 트랜잭션을 지원할 수 있다.
장치(210)가 메모리를 포함하며 가속기로서 동작하는 경우(장치(210)가 도 1의 가속기 회로(114)를 포함하는 경우), 장치(210)는 CXL 사양에서 정의된 제2 유형(Type 2)에 상응할 수 있다. 제2 유형의 장치(210)를 포함하는 시스템(200)에서 다수의 프로토콜들은, 일관적 프로토콜(COH), 비일관적 프로토콜(IO), 및 메모리 프로토콜(MEM)을 모두 포함할 수 있다. 예를 들어, 호스트 프로세서(220)는 비일관적 프로토콜(IO)을 이용하여 장치(210)를 검색하고, 메모리 프로토콜(MEM)을 이용하여 검색된 장치(210)에 상응하는 장치 메모리(230)에 액세스할 수 있으며, 일관적 프로토콜(COH)을 통해 장치(210)가 호스트 프로세서(220)의 메모리를 사용하도록 할 수 있다.
장치(210)가 메모리 확장(memory expander)을 위한 장치로 동작하는 경우, 장치(210)는 CXL 사양에서 정의된 제3 유형(Type 3)에 상응할 수 있다. 제3 유형의 장치(210)를 포함하는 시스템(200)에서 다수의 프로토콜들은, 메모리 프로토콜(MEM) 및 비일관적 프로토콜(IO)을 포함할 수 있다. 예를 들어, 호스트 프로세서(220)는 비일관적 프로토콜(IO)을 통해 장치(210)를 식별하고 연결할 수 있으며, 메모리 프로토콜(MEM)을 통해 장치(210)의 메모리 풀(memory pool)에 액세스할 수 있다. 장치(210)는 장치 메모리(230)와 통신할 수 있고, 장치 메모리(230)에 액세스하기 위한 메모리 컨트롤러(211)를 포함할 수 있다. 일부 실시예들에서, 도 2에 도시된 바와 상이하게, 메모리 컨트롤러(211)는 장치(210)의 외부에 있을 수 있고, 장치 메모리(230)와 통합될 수도 있다. 또한, 호스트 프로세서(220)는 호스트 메모리(240)와 통신할 수 있고, 호스트 메모리(240)에 액세스하기 위한 메모리 컨트롤러(221)를 포함할 수 있다. 일부 실시예들에서, 도 2에 도시된 바와 상이하게, 메모리 컨트롤러(221)는 호스트 프로세서(220)의 외부에 있을 수 있고, 호스트 메모리(240)와 통합될 수 있다.
다양한 실시예들에 따르면, 장치 메모리(230)는 다양한 타입의 메모리로 구현될 수 있으며, 한 예로서 스토리지 클래스 메모리(Storage Class Memory, SCM)로 구현될 수 있다. 스토리지 클래스 메모리는 비휘발성 특징과 휘발성 메모리의 특징을 동시에 갖고, 바이트 단위의 접근할 수 있다. 예를 들어 스토리지 클래스 메모리는 PCM(phase-change RAM), FeRAM(ferroelectric RAM), MRAM(magnetic RAM), RRAM(resistive RAM), STT-MRAM 등을 포함할 수 있다. 장치(210)는 상기 스토리지 클래스 메모리를 이용하여 메모리 대역폭 확장 또는 메모리 용량(capacity) 확장을 위한 장치로 동작할 수 있다.
본 발명의 일 실시예에 따르면, 제3 유형의 장치(210)의 메모리 컨트롤러(211)는 가속기 회로를 포함할 수 있다. 따라서, 장치(210)는 호스트 메모리의 메모리 확장기로 사용될 뿐만 아니라, 장치 메모리(230)의 일부 메모리 영역을 가속 연산을 수행하는데 사용할 수 있다. 가속 연산 전용의 메모리 영역을 핫 플러그-아웃하여 시스템 메모리 맵에서 제외시키고, 장치(210)에 포함된 메모리 구성 레지스터의 정보를 변경함으로써 메모리(230)의 일부 메모리 영역을 가속 연산 전용으로 사용할 수 있다. 또한, 가속 연산을 완료한 후, 가속 연산 전용으로 사용하던 메모리 영역을 다시 시스템 메모리 영역으로 복구할 수 있다.
도 3은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.
도 3을 참조하면, 시스템(300)은 호스트 프로세서(310), 호스트 메모리(320), 및 메모리 모듈(330)을 포함할 수 있다. 예시적인 실시예에서, 시스템(300)은 이종 컴퓨팅 시스템(heterogenous computing system)일 수 있다. 이종 컴퓨팅 시스템은 서로 다른 타입의 연산 장치들이 서로 유기적으로 연결되어 다양한 기능을 수행하도록 구성된 시스템일 수 있다.
호스트 프로세서(310)는 시스템(300)의 제반 동작을 제어하도록 구성된 프로세서 코어일 수 있다. 예를 들어, 호스트 프로세서(310)는 시스템(300) 상에서 구동되는 운영체제 또는 다양한 프로그램의 명령어를 해석하여 데이터를 처리하도록 구성될 수 있다. 호스트 프로세서(310)는 호스트 메모리(320)와 통신할 수 있다. 호스트 프로세서(310)에 의해 처리된 데이터 또는 호스트 프로세서(310)의 동작 중 필요한 데이터는 호스트 메모리(320)에 저장될 수 있다. 예시적인 실시 예에서, 호스트 메모리(320)는 DIMM(dual in-line memory module) 기반의 메모리일 수 있으며, 호스트 프로세서(310)와 직접 통신할 수 있다. 호스트 메모리(320)는 호스트 프로세서(310)에 대한 버퍼 메모리, 캐시 메모리, 또는 시스템 메모리로서 사용될 수 있다.
메모리 모듈(330)은 호스트 프로세서(310)의 제어에 따라 동작할 수 있다. 예를 들어, 메모리 모듈(330)은 호스트 프로세서(310)와 이종 컴퓨팅 인터페이스를 통해 통신할 수 있다. 예시적인 실시 예에서, 이종 컴퓨팅 인터페이스는 CXL(Compute eXpress Link) 프로토콜에 기반된 인터페이스를 포함할 수 있다. 이하에서 설명의 편의를 위하여, 이종 컴퓨팅 인터페이스는 CXL 프로토콜이 기반된 인터페이스, 즉, CXL 인터페이스인 것으로 가정하나, 본 발명의 범위가 이에 한정되는 것은 아니며, 이종 컴퓨팅 인터페이스는, Gen-Z 프로토콜, NVLink 프로토콜, CCIX(Cache Coherent Interconnect for Accelerators) 프로토콜, Open CAPI(Coherent Accelerator Processor Interface) 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
메모리 모듈(330)은 CXL 인터페이스를 통한 호스트 프로세서(310)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 즉, 호스트 프로세서(310)는 메모리 모듈(330)을 호스트 메모리(320)와 유사한 기능을 갖는 메모리 영역으로 사용할 수 있다. 예시적인 실시 예에서, 메모리 모듈(330)은 CXL 표준에 의해 정의된 제3 유형(Type 3)의 메모리 장치와 대응될 수 있다.
메모리 모듈(330)은 컨트롤러(340) 및 장치 메모리(350)를 포함할 수 있다. 장치 메모리(350)는 DIMM(dual in-line memory module) 기반의 메모리일 수 있으며, 컨트롤러(340)와 직접 통신할 수 있다. 컨트롤러(340)는 장치 메모리(350)에 데이터를 저장하거나 또는 장치 메모리(350)에 저장된 데이터를 읽을 수 있다. 컨트롤러(340)는 제1 인터페이스 회로(341)와 제2 인터페이스 회로(342)를 포함할 수 있다. 제1 인터페이스 회로(341)는 호스트 프로세서(310)와 통신할 수 있으며, 일례로, CXL 프로토콜에 따라 데이터를 교환할 수 있으나, 이에 한정되는 것은 아니다. 제2 인터페이스 회로(342)는 장치 메모리(350)와 통신할 수 있으며, 일례로, DDR1, DDR2, DDR3, DDR4, DDR5, 또는 DDR6 프로토콜에 따라 데이터를 교환할 수 있으나, 이에 한정되는 것은 아니다. 또한, 장치 메모리(350)는 플래시 메모리일 수도 있다.
가속기 회로(343)는 특정 연산을 수행하도록 구성된 프로세서 코어 또는 연산기일 수 있다. 예를 가속기 회로(343)는 GPU, NPU, NPU 등과 같이 인공 지능(AI) 연산을 수행하도록 구성된 연산기 또는 처리기일 수 있다. 예시적인 실시 예에서, 가속기 회로(343)는 호스트 프로세서(310)의 제어에 따라 연산 동작을 수행할 수 있다.
예시적인 실시 예에서, 가속기 회로(343)는 CXL 인터페이스(341)와 연결될 수 있다. 가속기 회로(343)는 CXL 인터페이스(341)를 통해 호스트 프로세서(310)로부터 작업 명령을 수신하고, 수신된 작업 명령에 응답하여, 스토리지 장치(360)로부터 수신된 데이터에 대한 연산 동작을 수행할 수 있다. 스토리지 장치(360)로부터 수신된 데이터는 장치 메모리(350)에 저장될 수 있다. 스토리지 장치(360)에는 가속 연산에 필요한 데이터가 저장될 수 있으며, 일례로 상기 데이터는 DLRM(deep learning recommendation model) 테이블 등을 의미할 수 있으나, 이에 한정되는 것은 아니다.
메모리 구성 레지스터(memory configuration register; 344)는 장치 메모리(350)의 메모리 구조에 관한 정보를 포함할 있다. 일례로, 메모리 구성 레지스터(344)는 상위(upper) 메모리 영역의 주소(이하, '상위 메모리 주소'라 함)와 하위(lower) 메모리 영역(이하, '하위 메모리 주소'라 함)의 주소에 대한 정보를 포함하고 있다.
호스트 메모리(320)와 장치 메모리(350)는 호스트 프로세서(310)의 제어에 따라 복수의 작업 데이터를 저장하거나 저장된 작업 데이터를 출력하는 시스템 메모리일 수 있다.
실시 예들에 따라, 시스템(300)은 하나 이상의 메모리 모듈(370)과, 낸드 플래시 기반의 SSD(solid state drive)를 더 포함할 수 있다. 하나 이상의 메모리 모듈(370)은 앞서 설명한 호스트 프로세서(310)와 이종 컴퓨팅 인터페이스를 통해 통신할 수 있는 메모리 모듈일 수 있다.
각 구성 요소(310, 330, 360, 370, 380)는 시스템 버스(BUS)를 통해 서로 통신할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 모듈(330)은 호스트 프로세서(310)의 제어에 따라 데이터를 저장하거나 저장된 데이터를 출력하는 메모리 확장기로 사용되거나, 스토리지 장치(360)로부터 수신된 데이터에 대한 가속 연산 동작을 수행할 수 있다. 모드 전환 요청에 응답하여, 메모리 모듈(330)은 장치 메모리(350)의 일부 메모리 영역의 용도를 시스템 메모리 용도 및 가속 연산 용도 중에서 어느 하나로 가변적으로 변경할 수 있다. 가속기 회로는 상기 메모리 영역을 가속 연산을 수행하는데 이용할 수 있다.
도 4는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 3과 도 4를 함께 참조하면, 컨트롤러(340)의 가속기 회로(343)는 호스트 프로세서(310)로부터 할당 받은 작업에 대한 가속 연산을 수행할 수 있다. 스토리지 장치(360)에 저장된 데이터의 적어도 일부는 가속기 회로(343)에 의한 가속 연산에 사용될 수 있다. 운영 체제(OS)는 시스템(300)의 소프트웨어 또는 하드웨어 자원(resource)을 제어할 수 있고, 호스트 프로세서(310)에 의한 프로그램 실행을 제어할 수 있다. 호스트 프로세서(310)는 운영 체제(OS) 및 응용프로그램을 실행할 수 있다. 운영 체제(OS) 및 응용프로그램은 저장부에 저장될 수 있으며, 상기 저장부는 비휘발성 저장장치일 수 있다. 상기 비휘발성 저장장치는 플래시 메모리일 수 있으나, 이에 한정되는 것은 아니다. 응용프로그램이 실행된 상태에서 태스크로부터 시스템 콜(system call) 또는 인터럽트(interrupt)가 발생하면 운영체제는 상기 시스템 콜 또는 인터럽트를 상기 응용프로그램이 유저모드에서 커널모드로 전환하는 이벤트로 인지할 수 있다. 일례로, 응용 프로그램은 시스템 콜 인터페이스를 이용하여 운영체제에게 장치 메모리(350)의 일부 메모리 영역의 용도를 가속 연산 용도로 설정하기 위한 모드 전환 요청을 전송하거나 또는 상기 메모리 영역을 다시 시스템 메모리 용도로 복구하기 위한 모드 전환 요청을 전송할 수 있다. 모드 전환 요청은 응용 프로그램이 유저 모드에서 커널 모드로 전환하는 이벤트를 의미할 수 있다. 일례로, 상기 모드 전환 요청은 호스트 프로세서(310)로부터 메모리 모듈(330)의 컨트롤러(340)로 전달되거나, 운영체제가 메모리 모듈(330)의 컨트롤러(340)로 상기 모드 전환 요청을 전송할 수 있다. 컨트롤러(340)는 상기 모드 전환 요청을 수신할 수 있다. 컨트롤러(340)는 운영체제로부터 데이터 수를 수신할 수 있다. 일례로, 컨트롤러(340)는 운영체제로부터 배치 사이즈(batch size) 등을 수신할 수 있으며, 배치 사이즈란 전체 트레이닝 데이터 셋을 복수의 그룹으로 나누었을 때 하나의 그룹에 속하는 데이터 수를 의미할 수 있다.
모드 전환 요청에 응답하여(S110), 컨트롤러(340)는 장치 메모리(350)의 메모리 영역을 확인하고(S120), 장치 메모리(350)의 메모리 영역 일부를 가속 연산 영역으로 설정하기 위하여, 호스트 프로세서(310)에게 상기 가속 연산 영역으로 설정될 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송할 수 있다. 따라서, 상기 가속 연산 영역으로 설정될 메모리 영역을 시스템 메모리 맵에서 제외시킬 수 있다(S130). 또한, 컨트롤러(340)는 메모리 구성 레지스터(344)를 수정하여 상기 가속 연산 영역으로 설정될 메모리 영역을 메모리 구성 레지스터(344)에서 제외시킬 수 있다(S140). 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 가속 연산 영역으로 설정된 메모리 영역으로 이동시키고(S150), 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다(S160). 일례로, 가속 연산에 필요한 데이터는 DLRM(deep learning recommendation model) 테이블 등을 의미할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 모듈(330)이 가속 연산을 수행하고, 계산된 결과값만 호스트 프로세서(310)로 전송하면 되므로, 호스트 프로세서(310)의 대역폭을 확보할 수 있다. 따라서, 시스템(300)의 효율을 극대화시킬 수 있다.
도 5a와 도 5b 본 발명의 일 실시예에 따른 메모리 모듈을 나타낸 도면들이다. 메모리 모듈(300A)은 도 5a에 도시된 바와 같이 랭크 단위(RANK0, RANK1)로 가속 연산 전용의 메모리 영역(AR1, AR2)을 설정할 수 있다. 또한, 메모리 모듈(300B)은 도 5b에 도시된 바와 같이 채널 단위(CH0, CH1)로 가속 연산 전용의 메모리 영역(AR1, AR2)을 설정할 수도 있다. 실시 예들에 따라, 각 채널(CH0, CH1)은 복수의 서브 채널들(SCH0, SCH1)을 포함할 수 있다. 서브 채널들(SCH0, SCH1)은 컨트롤러(340)와 장치 메모리 사이에 존재하는 독립적인 데이터 패스를 의미할 수 있다. 서브 채널들(SCH0, SCH1) 사이에 적어도 하나의 딜레이 소자(DE)가 배치될 수 있다. 딜레이 소자(DE)는 인버터들을 병렬로 연결한 소자일 수 있다. 메모리 영역(AR1, AR2)은 서브 채널들(SCH0, SCH1)에 접속될 수 있다. 그러나, 본 발명의 기술적 사상이 이에 한정되는 것은 아니고, 메모리 모듈(300A, 300B)은 서브채널, 뱅크 그룹, 뱅크 단위로 가속 연산 전용의 메모리 영역을 설정할 수 있다.
도 6은 본 발명의 일 실시예에 따른 시스템 메모리 맵을 설명하기 위한 도면이다.
일반적으로, 컴퓨터를 부팅할 때 펌웨어는 시스템에 설치된 장치들에 대해 공간을 할당하는 시스템 메모리 맵을 생성한다. 핫플러그(hot plug)란 시스템 동작 중에 새로운 장치를 연결했을 때 바로 인식되어 사용될 수 있는 기능을 의미한다. 따라서, 시스템 리부트 없이 시스템 메모리 맵에서 핫플러그된(hot plugged) 장치가 이용할 수 있는 공간을 제외시키거나 포함시킬 수 있다.
핫플러그(hotplug)(또는 핫플러깅(hotplugging))은 컴퓨팅 시스템에서 리소스들을 컴퓨팅 시스템의 동작 중에 제거하거나 추가하는 기능을 지칭할 수 있다. 예를 들면, 컴퓨팅 시스템의 리소스가 컴퓨팅 시스템의 동작 중에 제거되는 경우 그 리소스는 핫플러그 아웃(hotplug out)된 것으로 지칭될 수 있고, 컴퓨팅 시스템의 리소스가 컴퓨팅 시스템의 동작 중에 추가되는 경우 그 리소스는 핫플러그 인(hotplug in)된 것으로 지칭될 수 있다. 리소스의 핫플러그 인/아웃은 리소스가 컴퓨팅 시스템에서 물리적으로 결합되거나 제거되는 것을 지칭할 수도 있 고, 리소스를 턴 온(on)하거나 턴 오프(off)하는 것을 지칭할 수도 있다.
핫플러그의 대상이 되는 컴퓨팅 시스템의 리소스는 다양할 수 있다. 예를 들면, 컴퓨팅 시스템에 포함된 복수의 프로세서들 중 적어도 일부가 핫플러그 인/아웃 될 수도 있고, 컴퓨팅 시스템에 포함된 메모리 장치들 중 적어도 일부가 핫플러그 인/아웃 될 수도 있으며, 멀티-코어 프로세서에 포함된 복수의 코어들 중 적어 도 일부가 핫플러그 인/아웃 될 수도 있고, 메모리 장치의 메모리 영역들 중 적어도 일부가 핫플러그 인/아웃 될 수도 있다.
시스템 메모리 맵은 CXL 메모리 영역으로도 지칭될 수 있는 장치 메모리 영역(a), 호스트 메모리 영역(b), 및 메모리 영역이 아닌 홀(hole) 영역(c)을 포함할 수 있다. 시스템 메모리 맵은 각 영역마다 상위 메모리 주소와 하위 메모리 주소를 포함할 수 있다.
호스트 프로세서는 핫플러그 기능을 이용하여 가속 연산 영역에 해당하는 메모리 영역(AR1)을 시스템 메모리 맵에서 제외시킬 수 있다. 따라서, 장치 메모리 영역(a)은 장치 메모리 영역(a-2)으로 변경될 수 있다. 가속 연산 영역(AR1)을 메모리 맵에서 제외시킴으로써, 가속 연산 영역(AR1)에 대한 호스트 프로세서의 액세스는 제한될 수 있다.
도 7은 본 발명의 다른 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 3과 도 7을 함께 참조하면, 컨트롤러(340)는 장치 메모리(350)의 일부 메모리 영역의 용도를 가속 연산 용도로 설정하기 위한 모드 전환 요청을 수신할 수 있다. 컨트롤러(340)는 운영체제로부터 데이터 수를 수신할 수 있다. 컨트롤러(340)는 운영체제로부터 수신한 데이터 수에 기초하여 가속 연산을 수행하는데 필요한 메모리 용량을 계산할 수 있다.
모드 전환 요청에 응답하여(S210), 컨트롤러(340)는 장치 메모리(350)의 메모리 영역을 확인하고(S220), 장치 메모리(350)의 제1 메모리 영역(AR1)을 가속 연산 영역으로 설정하기 위하여, 제1 메모리 영역(AR1)의 데이터를 제1 메모리 영역(AR1)과 다른 제2 메모리 영역(AR2)으로 이동시킬 수 있다(S230). 컨트롤러(340)는 가속 연산에 필요한 데이터를 장치 메모리(350)의 연속된 위치에 저장하기 위하여, 제1 메모리 영역(AR1)에 분산되어 저장되어 있는 데이터를 제2 메모리 영역(AR2)으로 이동시킬 수 있다. 따라서, 장치 메모리(350)에서 가속 연산에 필요한 데이터를 위한 연속적인 공간을 확보할 수 있다.
컨트롤러(340)는 호스트 프로세서(310)에게 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송할 수 있다. 따라서, 제1 메모리 영역을 시스템 메모리 맵에서 제외시킬 수 있다(S240). 또한, 컨트롤러(340)는 메모리 구성 레지스터(344)를 수정하여 제1 메모리 영역을 메모리 구성 레지스터(344)에서 제외시킬 수 있다(S250). 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 제1 메모리 영역(AR1)으로 이동시키고(S260), 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다(S270).
도 8 내지 10은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 8을 참조하면, 컨트롤러(340)는 가속 연산에 필요한 데이터를 장치 메모리(350)의 연속된 위치에 저장하기 위하여, 제1 메모리 영역(AR1)에 분산되어 저장되어 있는 데이터를 제2 메모리 영역(AR2)으로 이동시킬 수 있다(PA1). 제2 메모리 영역(AR2)은 제1 메모리 영역(AR1)이 포함된 장치 메모리와 동일한 장치 메모리 내의 다른 메모리 영역일 수 있다.
도 9를 참조하면, 제1 메모리 영역(AR1)에 분산되어 저장되어 있는 데이터를 제2 메모리 영역(AR2)으로 이동시킨 후(PA1), 호스트 프로세서는 제1 메모리 영역(AR1)을 시스템 메모리 맵에서 제외시킬 수 있다. 따라서, 장치 메모리 영역(a-2)은 장치 메모리 영역(a-2)으로 변경될 수 있다. 제1 메모리 영역(AR1)을 메모리 맵에서 제외시킴으로써, 제1 메모리 영역(AR1)에 대한 호스트 프로세서의 액세스는 제한될 수 있다.
도 10을 참조하면, 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 제1 메모리 영역(AR1)으로 이동시킬 수 있다(PA2). 상기 데이터는 제1 메모리 영역(AR1)의 연속된 위치에 저장될 수 있다. 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다.
도 11은 본 발명의 다른 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 3과 도 11을 함께 참조하면, 컨트롤러(340)는 장치 메모리(350)의 일부 메모리 영역의 용도를 가속 연산 용도로 설정하기 위한 모드 전환 요청을 수신할 수 있다. 컨트롤러(340)는 운영체제로부터 데이터 수를 수신할 수 있다. 컨트롤러(340)는 운영체제로부터 수신한 데이터 수에 기초하여 가속 연산을 수행하는데 필요한 메모리 용량을 계산할 수 있다.
모드 전환 요청에 응답하여(S310), 컨트롤러(340)는 장치 메모리(350)의 메모리 영역을 확인하고(S320), 장치 메모리(350)의 잔여 용량이 가속 연산을 수행하기에 충분한지 여부를 판단할 수 있다(S330).
메모리 장치의 잔여 용량이 충분하다고 판단되면(S330의 충분), 장치 메모리(350)의 제1 메모리 영역을 가속 연산 영역으로 설정하기 위하여, 호스트 프로세서(310)에게 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송할 수 있다. 따라서, 제1 메모리 영역을 시스템 메모리 맵에서 제외시킬 수 있다(S350). 또한, 컨트롤러(340)는 메모리 구성 레지스터(344)를 수정하여 제1 메모리 영역을 메모리 구성 레지스터(344)에서 제외시킬 수 있다(S360). 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 제1 메모리 영역으로 이동시키고(S370), 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다(S380).
메모리 장치의 잔여 용량이 불충분하다고 판단되면(S330의 불충분), 장치 메모리(350)의 제1 메모리 영역을 가속 연산 영역으로 확보하기 위하여, 제1 메모리 영역에 저장되어 있는 데이터를 다른 메모리 장치의 제2 메모리 영역으로 이동시킬 수 있다(S340). 제2 메모리 영역은 제1 메모리 영역이 포함된 장치 메모리(350)와 다른 장치 메모리에 포함될 수 있다. 실시 예에 따라 제2 메모리 영역은 호스트 메모리(320)와 파 메모리(far memory) 중 어느 하나에 포함될 수 있다. 파 메모리는 호스트 프로세서(310)와 상대적으로 멀리 있는 메모리를 의미할 수 있으며, 예컨대, 낸드 플래시 기반의 SSD일 수 있으나, 이에 한정되는 것은 아니다. 호스트 메모리(320)는 호스트 프로세서(301)와 상대적으로 가까운 니어 메모리(near memory)일 수 있다. 따라서, 장치 메모리(350)에서 가속 연산에 필요한 데이터를 저장하기 위한 공간을 확보할 수 있다.
컨트롤러(340)는 호스트 프로세서(310)에게 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송할 수 있다. 따라서, 제1 메모리 영역을 시스템 메모리 맵에서 제외시킬 수 있다(S350). 또한, 컨트롤러(340)는 메모리 구성 레지스터(344)를 수정하여 제1 메모리 영역을 메모리 구성 레지스터(344)에서 제외시킬 수 있다(S360). 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 제1 메모리 영역으로 이동시키고(S370), 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다(S380).
도 12 내지 도 14는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 12를 참조하면, 컨트롤러(340)는 장치 메모리(350)에서 가속 연산에 필요한 데이터를 저장하기 위한 공간을 확보하기 위하여, 제1 메모리 영역(AR1)의 데이터를 다른 메모리 장치의 제2 메모리 영역으로 이동시킬 수 있다(PA3). 일례로, 컨트롤러(340)는 호스트 메모리(320)의 제2 메모리 영역(AR2)으로 이동시킬 수 있다.
도 13을 참조하면, 제1 메모리 영역(AR1)의 데이터를 호스트 메모리(320)의 제2 메모리 영역(AR2)으로 이동시킨 후(PA3), 호스트 프로세서는 제1 메모리 영역(AR1)을 시스템 메모리 맵에서 제외시킬 수 있다. 따라서, 장치 메모리 영역(a)은 장치 메모리 영역(a-2)으로 변경될 수 있다. 제1 메모리 영역(AR1)을 메모리 맵에서 제외시킴으로써, 제1 메모리 영역(AR1)에 대한 호스트 프로세서의 액세스는 제한될 수 있다.
도 14를 참조하면, 컨트롤러(340)는 가속 연산에 필요한 데이터를 스토리지 장치(360)로부터 제1 메모리 영역(AR1)으로 이동시킬 수 있다(PA4). 상기 데이터는 제1 메모리 영역(AR1)에 저장될 수 있다. 가속기 회로(343)는 상기 데이터를 이용하여 가속 연산을 수행할 수 있다.
도 15는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 나타낸 플로우차트이다.
도 3과 도 15를 참조하면, 가속 연산이 완료된 후, 가속 연산 영역으로 설정된 메모리 영역을 다시 시스템 메모리 용도로 복구하기 위한 모드 전환 요청에 응답하여(S410), 호스트 프로세서(310)는 상기 가속 연산 영역을 시스템 메모리 맵에 포함시킬 수 있다(S420). 컨트롤러(340)는 모드 전환 요청 또는 호스트 프로세서(310)의 명령에 응답하여 메모리 구성 레지스터(344)를 수정할 수 있고, 상기 가속 연산 영역을 메모리 구성 레지스터(344)에 포함시킬 수 있다(S430).
도 16은 본 발명의 일 실시예에 따른 메모리 맵을 설명하기 위한 도면이다.
도 16을 참조하면, 호스트 프로세서는 가속 연산 영역(a-1)을 시스템 메모리 맵에 포함시킬 수 있다. 예컨대, 호스트 프로세서는 핫플러그 기능을 이용하여 가속 연산 영역(a-1)을 시스템 메모리 맵에 포함시킬 수 있다. 따라서, 장치 메모리 영역(a-2)은 장치 메모리 영역(a)으로 변경될 수 있다. 가속 연산 영역(a-1)을 시스템 메모리 맵에 포함시킴으로써, 가속 연산 영역(a-1)에 대응하는 메모리 영역(AR1)에 대한 호스트 프로세서의 액세스는 허용될 수 있다.
도 17은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
상술한 바와 같이, 모드 전환 요청에 응답하여 컨트롤러(340)는 제1 메모리 영역(AR1)에 분산되어 저장되어 있는 데이터를 제2 메모리 영역(AR2)으로 이동시킬 수 있다. 따라서, 컨트롤러(340)는 가속 연산에 필요한 데이터를 장치 메모리(350)의 연속된 위치에 저장할 수 있다. 또한, 메모리 장치의 잔여 용량이 불충분하다고 판단되면, 컨트롤러(340)는 제1 메모리 영역(AR1)에 저장되어 있는 데이터를 다른 메모리 장치의 제2 메모리 영역(AR2)으로 이동시킬 수 있다. 따라서, 컨트롤러(340)는 장치 메모리(350)의 제1 메모리 영역(AR1)을 가속 연산 영역으로 확보할 수 있다.
도 3과 도 17을 참조하면, 장치 메모리(350)에서 가속 연산 영역으로 설정된 메모리 영역을 다시 시스템 메모리 용도로 복구하기 위한 모드 전환 요청에 응답하여(S510), 호스트 프로세서(310)는 제1 메모리 영역을 시스템 메모리 맵에 포함시킬 수 있다(S420). 컨트롤러(340)는 모드 전환 요청 또는 호스트 프로세서(310)의 명령에 응답하여 제2 메모리 영역에 저장된 기존 데이터를 제1 메모리 영역으로 복구할 수 있다. 컨트롤러(340)는 제1 메모리 영역을 메모리 구성 레지스터(344)에 포함시킬 수 있다(S430).
도 18과 도 19는 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 18을 참조하면, 호스트 프로세서는 장치 메모리의 제1 메모리 영역(a-1)을 시스템 메모리 맵에 포함시킬 수 있다. 따라서, 장치 메모리 영역(a-2)은 장치 메모리 영역(a)으로 변경될 수 있다. 제1 메모리 영역(a-1)을 시스템 메모리 맵에 포함시킴으로써, 제1 메모리 영역(AR1)에 대한 호스트 프로세서의 액세스는 허용될 수 있다.
도 19를 참조하면, 호스트 프로세서가 제1 메모리 영역(AR1)을 시스템 메모리 맵에 포함시킨 후 제2 메모리 영역에 저장된 기존 데이터를 제1 메모리 영역으로 복구할 수 있다.
도 20과 도 21은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 도면들이다.
도 20을 참조하면, 호스트 프로세서는 호스트 메모리의 제1 메모리 영역(a-1)을 시스템 메모리 맵에 포함시킬 수 있다. 따라서, 장치 메모리 영역(a-2)은 장치 메모리 영역(a)으로 변경될 수 있다. 제1 메모리 영역(a-1)을 시스템 메모리 맵에 포함시킴으로써, 제1 메모리 영역(AR1)에 대한 호스트 프로세서의 액세스는 허용될 수 있다.
도 21을 참조하면, 호스트 프로세서가 제1 메모리 영역(AR1)을 시스템 메모리 맵에 포함시킨 후 제2 메모리 영역(AR2)에 저장된 기존 데이터를 제1 메모리 영역(AR1)으로 복구할 수 있다.
도 22는 본 발명의 실시 예에 따른 서버 시스템이 적용된 데이터 센터를 예시적으로 보여주는 블록도이다. 도 22를 참조하면, 데이터 센터(3000)는 다양한 데이터를 유지 관리하고, 다양한 데이터에 대한 다양한 서비스를 제공하는 시설로서, 데이터 스토리지 센터로 불릴 수 있다. 데이터 센터(3000)는 검색 엔진 또는 데이터 베이스 운용을 위한 시스템일 수 있으며, 다양한 기관에서 사용된 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 복수의 애플리케이션 서버들(3100_1~3100_n) 및 복수의 스토리지 서버들(3200_1~3200_m)을 포함할 수 있다. 복수의 애플리케이션 서버들(3100_1~3100_n)의 개수 및 복수의 스토리지 서버들(3200_1~3200_m)의 개수는 다양하게 변형될 수 있다.
이하에서, 설명의 편의를 위해, 제1 스토리지 서버(3200_1)의 예시가 설명된다. 나머지 스토리지 서버들(3200_2~3200_m) 및 복수의 애플리케이션 서버들(3100_1~3100_n) 각각은 제1 스토리지 서버(3200_1)와 유사한 구조를 가질 수 있다.
제1 스토리지 서버(3200_1)는 프로세서(3210_1), 메모리(3220_1), 스위치(3230_1), 네트워크 인터페이스 커넥터(NIC; network interface connector)(2240_1), 스토리지 장치(3250_1), 및 CXL 인터페이스 제어기(Compute eXpress Link interface controller)(3260_1)를 포함할 수 있다. 프로세서(3210_1)는 제1 스토리지 서버(3200_1)의 전반적인 동작을 제어할 수 있다. 메모리(3220_1)는 프로세서(3210_1)의 제어에 따라 다양한 명령어 또는 데이터를 저장할 수 있다. 프로세서(3210_1)는 메모리(3220_1)를 액세스하여 다양한 명령어를 실행하거나 또는 데이터를 처리하도록 구성될 수 있다. 예시적인 실시 예에서, 메모리(3220_1)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVDIMM(Non-Volatile DIMM)과 같은 다양한 종류의 메모리 장치들 중 적어도 하나를 포함할 수 있다.
예시적인 실시 예에서, 제1 스토리지 서버(3200_1)에 포함된 프로세서(3210_1)의 개수 및 메모리(3220_1)의 개수는 다양하게 변형될 수 있다. 예시적인 실시 예에서, 제1 스토리지 서버(3200_1)에 포함된 프로세서(3210_1) 및 메모리(3220_1)는 프로세서-메모리 페어를 구성할 수 있으며, 제1 스토리지 서버(3200_1)에 포함된 프로세서-메모리 페어의 개수는 다양하게 변형될 수 있다. 예시적인 실시 예에서, 제1 스토리지 서버(3200_1)에 포함된 프로세서(3210_1)의 개수 및 메모리(3220_1)의 개수는 서로 다를 수 있다. 프로세서(3210_1)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
스위치(3230_1)는 프로세서(3210_1)의 제어에 따라 프로세서(3210_1) 및 스토리지 장치(3250_1) 사이를 선택적으로 연결시키거나 또는 NIC(3240_1), 스토리지 장치(3250_1), 및 CXL(3260_1) 사이를 선택적으로 연결시킬 수 있다.
NIC(3240_1)는 제1 스토리지 서버(3200_1)를 네트워크(NT)와 연결시키도록 구성될 수 있다. NIC(3240_1)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240_1)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(3240_1)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210_1) 또는 스위치(3230_1) 등과 연결될 수 있다. 호스트 버스 인터페이스는, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. 예시적인 실시 예에서, NIC(3240_1)는 프로세서(3210_1), 스위치(3230_1), 및 스토리지 장치(3250_1) 중 적어도 하나와 통합될 수도 있다.
스토리지 장치(3250_1)는 프로세서(3210_1)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 스토리지 장치(3250_1)는 컨트롤러(3251_1), 불휘발성 메모리(3252_1), DRAM(3253_1), 및 인터페이스(3254_1)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 장치(3250_1)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 더 포함할 수 있다.
컨트롤러(3251_1)는 스토리지 장치(3250_1)의 제반 동작을 제어할 수 있다. 예시적인 실시 예에서, 컨트롤러(3251_1)는 SRAM을 포함할 수 있다. 컨트롤러(3251_1)는 인터페이스(3254_1)를 통해 수신된 신호들에 응답하여 불휘발성 메모리(3252_1)에 데이터를 저장하거나 또는 불휘발성 메모리(3252_1)에 저장된 데이터를 출력할 수 있다. 예시적인 실시 예에서, 컨트롤러(3251_1)는 토글 인터페이스 또는 ONFI 인터페이스를 기반으로 불휘발성 메모리(3252_1)를 제어하도록 구성될 수 있다.
DRAM(3253_1)은 불휘발성 메모리(3252_1)에 저장될 데이터 또는 불휘발성 메모리(3252_1)로부터 읽어진 데이터를 임시 저장하도록 구성될 수 있다. DRAM(3253_1)은 컨트롤러(3251_1)가 동작하는데 필요한 다양한 데이터(예를 들어, 메타 데이터, 매핑 데이터 등)를 저장하도록 구성될 수 있다. 인터페이스(3254_1)는 프로세서(3210_1), 스위치(3230_1), 또는 NIC(3240_1)와 컨트롤러(3251_1) 사이의 물리적 연결을 제공할 수 있다. 예시적인 실시 예에서, 인터페이스(3254_1)는 스토리지 장치(3250_1)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 예시적인 실시 예에서, 인터페이스(3254_1)는 앞서 호스트 인터페이스 버스를 통해 설명된 다양한 인터페이스들 중 적어도 하나를 기반으로 구성될 수 있다.
상술된 제1 스토리지 서버(3200_1)의 구성들은 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 상술된 제1 스토리지 서버(3200_1)의 구성들은 다른 스토리지 서버들 또는 복수의 애플리케이션 서버들 각각에 적용될 수 있다. 예시적인 실시 예에서, 복수의 애플리케이션 서버들(3100_1~3100_n) 각각에서, 스토리지 장치(3150_1)는 선택적으로 생략될 수 있다.
복수의 애플리케이션 서버들(3100_1~3100_n) 및 복수의 스토리지 서버들(3200_1~3200_m)은 네트워크(NT)를 통해 서로 통신할 수 있다. 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들(3200_1~3200_m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
예시적인 실시 예에서, 네트워크(NT)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 또는, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 예시적인 실시 예에서, 네트워크(NT)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(NT)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
예시적인 실시 예에서, 복수의 애플리케이션 서버들(3100_1~3100_n) 중 적어도 하나는 네트워크(NT)를 통해 복수의 애플리케이션 서버들(3100_1~3100_n) 중 적어도 다른 하나 또는 복수의 스토리지 서버들(3200_1~3200_m) 중 적어도 하나를 액세스하도록 구성될 수 있다.
예를 들어, 제1 애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(3200_1~3200_m) 중 적어도 하나에 저장할 수 있다. 또는 제1 애플리케이션 서버(3100_1)는 사용자 또는 클라이언트가 요청한 데이터를 네트워크(NT)를 통해 복수의 스토리지 서버들(3200_1~3200_m) 중 적어도 하나로부터 획득할 수 있다. 이 경우, 제1 애플리케이션 서버(3100_1)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
즉, 제1 애플리케이션 서버(3100_1)의 프로세서(3110_1)는 네트워크(NT)를 통해, 다른 애플리케이션 서버(예를 들어, 3100_n)의 메모리(3120_n) 또는 스토리지 장치(3150_n)를 액세스할 수 있다. 또는 제1 애플리케이션 서버(3100_1)의 프로세서(3110_1)는 네트워크(NT)를 통해, 제1 스토리지 서버(3200_1)의 메모리(3220_1) 또는 스토리지 장치(3250_1)를 액세스할 수 있다. 이를 통해, 제1 애플리케이션 서버(3100_1)는 다른 애플리케이션 서버들(3100_2~3100_n) 또는 복수의 스토리지 서버들(3200_1~3200_m)에 저장된 데이터에 대한 다양한 동작들을 수행할 수 있다. 예를 들어, 제1 애플리케이션 서버(3100_1)는 다른 애플리케이션 서버들(3100_2~3100_n) 또는 복수의 스토리지 서버들(3200_1~3200_m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행하거나 또는 발행할 수 있다. 이 경우, 이동 또는 카피되는 데이터는 스토리지 서버들(3200_1~3200_m)의 스토리지 장치들(3250_1~3250_m)로부터 스토리지 서버들(3200_1~3200_m)의 메모리들(3220_1~3220_m)을 거치거나 또는 직접 애플리케이션 서버들(3100_1~3100_n)의 메모리들(3120_1~3120_n)로 이동될 수 있다. 네트워크(NT)를 통해 전달되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
예시적인 실시 예에서, 복수의 스토리지 서버들(3200_1~3200_m) 및 복수의 애플리케이션 서버들(3100_1~3100_n)은 CXL 인터페이스를 통해 메모리 확장기(3300)와 연결될 수 있다. 메모리 확장기(3300)는 복수의 스토리지 서버들(3200_1~3200_m) 및 복수의 애플리케이션 서버들(3100_1~3100_n) 각각에 대하여 확장된 메모리로서 사용될 수 있다. 복수의 스토리지 서버들(3200_1~3200_m) 및 복수의 애플리케이션 서버들(3100_1~3100_n) 각각은 도 1 내지 도 21을 참조하여 설명된 방식을 기반으로, CXL 인터페이스 및 메모리 확장기(3300)를 통해 통신할 수 있다.
도 23은 본 발명의 실시 예에 적용된 이종 컴퓨팅 인터페이스의 예시(예를 들어, CXL 인터페이스)를 설명하기 위한 도면이다. 도 23을 참조하여, 본 발명의 실시 예에 따른 메모리 확장기와 연결된 이종 컴퓨팅 인터페이스의 일 실시 예가 CXL 인터페이스를 기준으로 설명되나 본 발명의 범위가 이에 한정되는 것은 아니며, 이종 컴퓨팅 인터페이스는 Gen-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로코톨 등과 같은 다양한 컴퓨팅 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
도 23을 참조하면, 이종 컴퓨팅 시스템(4000)은 복수의 CPU들(4100, 4200), 복수의 메모리들(4110, 4210), 가속기들(4120, 4220), 추가 메모리들(4130, 4230), 및 메모리 확장기(4300)를 포함할 수 있다. 복수의 CPU들(4100, 4200) 각각은 다양한 연산을 처리하도록 구성된 프로세서일 수 있다. 복수의 CPU들(4100, 4200)은 별도의 링크를 통해 서로 통신할 수 있다. 예시적인 실시 예에서, 별도의 링크는 CPU 사이의 일관성 링크(CPU to CPU Coherent Link)를 포함할 수 있다.
복수의 CPU들(4100, 4200)은 각각 복수의 메모리들(4110, 4210)과 통신할 수 있다. 예를 들어, 제1 CPU(4100)는 제1 메모리(4110)와 직접 통신할 수 있고, 제2 CPU(4200)는 제2 메모리(4210)와 직접 통신할 수 있다. 제1 및 제2 메모리들(4110, 4210)은 DDR 메모리일 수 있다. 예시적인 실시 예에서, 본 발명의 실시 예에 다른 가상 머신들에 할당된 가상 메모리는 DDR 메모리들(4110, 4210)로부터 할당된 메모리일 수 있다.
복수의 CPU들(4100, 4200)은 플렉스 버스(Flex Bus)를 통해 가속기들(4120, 4220)와 통신할 수 있다. 가속기들(4120, 4220)은 복수의 CPU들(4100, 4200)과 독립적인 연산을 수행하는 연산기 또는 프로세서일 수 있다. 가속기들(4120, 4220)은 대응하는 CPU(4100, 4200)의 제어에 따라 동작할 수 있다. 가속기들(4120, 4220)은 각각 추가 메모리들(4130, 4230)과 연결될 수 있다. 예시적인 실시 예에서, 복수의 CPU들(4100, 4200)은 플렉스 버스(Flex Bus) 및 가속기들(4120, 4220)을 통해 추가 메모리들(4130, 4230)을 액세스하도록 구성될 수 있다.
복수의 CPU들(4100, 4200)은 플렉스 버스(Flex Bus)를 통해 메모리 확장기(4300)와 통신할 수 있다. 복수의 CPU들(4100, 4200)은 메모리 확장기(4300)의 메모리 공간을 사용할 수 있다.
예시적인 실시 예에서, 플렉스 버스(Flex Bus)는 PCIe 프로토콜 또는 CXL 프로토콜을 선택하도록 구성된 버스 또는 포트일 수 있다. 즉, 플렉스 버스(Flex Bus)는 연결된 장치의 특성 또는 통신 타입에 따라 PCIe 프로토콜 또는 CXL 프로토콜을 선택하도록 구성될 수 있다. 예시적인 실시 예에서, 메모리 확장기(4300)는 도 1 내지 도 21을 참조하여 설명된 메모리 모듈과 같이 동작할 수 있으며, 복수의 CPU들(4100, 4200)과 CXL 프로토콜을 기반으로 통신할 수 있다.
예시적인 실시 예에서, 도 23에서 플렉스 버스(Flex Bus)를 통한 통신 구조가 각 구성 요소들 사이에서 구분된 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 도 23에 도시된 다양한 구성 요소들 사이의 CXL 통신은 동일한 버스 또는 동일한 링크를 통해 수행될 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
300; 시스템
310; 호스트 프로세서
320; 호스트 메모리
330; 메모리 모듈
340; 컨트롤러
350; 장치 메모리

Claims (20)

  1. 복수의 작업 데이터를 저장하며, 제1 메모리 영역과 제2 메모리 영역을 포함하는 장치 메모리; 및
    가속기 회로를 포함하며, 상기 장치 메모리를 제어하는 컨트롤러를 포함하고,
    상기 컨트롤러는 모드 전환 요청에 응답하여 상기 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 호스트 프로세서로 전송하고, 상기 제1 메모리 영역을 메모리 구성 레지스터에서 제외시키며,
    상기 가속기 회로는 상기 제1 메모리 영역을 가속 연산을 수행하는데 이용하는 메모리 모듈.
  2. 제1항에 있어서,
    상기 모드 전환 요청은 응용 프로그램이 유저 모드에서 커널 모드로 전환하는 이벤트인 메모리 모듈.
  3. 제1항에 있어서,
    상기 제1 메모리 영역은 핫 플러그-아웃되어 시스템 메모리 맵에서 제외되는 메모리 모듈.
  4. 제1항에 있어서,
    상기 컨트롤러는 상기 장치 메모리의 상위 메모리 주소와 하위 메모리 주소에 대한 정보를 포함하는 상기 메모리 구성 레지스터를 포함하는 메모리 모듈.
  5. 제4항에 있어서,
    상기 컨트롤러는 상기 제1 메모리 영역에 상기 가속 연산에 필요한 데이터를 저장하고, 상기 데이터를 이용하여 상기 가속 연산을 수행하는 메모리 모듈.
  6. 제1항에 있어서,
    상기 제1 메모리 영역의 용도는 시스템 메모리 용에서 가속 연산 전용으로 변경되고, 상기 제2 메모리 영역의 용도는 시스템 메모리 용인 메모리 모듈.
  7. 제1항에 있어서,
    상기 제1 메모리 영역의 단위는 채널, 랭크, 뱅크 그룹, 뱅크 중 하나인 메모리 모듈.
  8. 제7항에 있어서,
    상기 채널은 복수의 서브 채널들을 포함하고,
    상기 서브 채널들 사이에 적어도 하나의 딜레이 소자가 배치되는 메모리 모듈.
  9. 제1 메모리;
    상기 제1 메모리와 직접 통신하는 컨트롤러;
    제2 메모리; 및
    상기 제2 메모리와 직접 통신하며, 상기 컨트롤러와 이종 컴퓨팅 인터페이스를 통해 통신하는 프로세서를 포함하고,
    상기 프로세서는 상기 제1 메모리의 제1 메모리 영역을 시스템 메모리 맵에서 제외시키며,
    상기 컨트롤러는 상기 제1 메모리 영역을 메모리 구성 레지스터에서 제외시키고,
    상기 제1 메모리 영역의 용도는 시스템 메모리 용에서 가속 연산 전용으로 변경되는 시스템.
  10. 제9항에 있어서,
    상기 컨트롤러는 상기 제1 메모리 영역에 저장된 데이터를 상기 제1 메모리 영역과 다른 제2 메모리 영역으로 이동시키는 시스템.
  11. 제10항에 있어서,
    상기 제2 메모리 영역은 상기 제1 메모리에 포함되는 시스템.
  12. 제10항에 있어서,
    상기 제2 메모리 영역은 상기 제2 메모리에 포함되는 시스템.
  13. 제12항에 있어서,
    상기 컨트롤러는 상기 제1 메모리의 잔여 용량이 가속 연산을 수행하기에 충분한지 여부를 판단하고, 상기 제1 메모리의 잔여 용량이 불충분하다고 판단되면, 상기 제1 메모리 영역에 저장된 데이터를 상기 제2 메모리 영역으로 이동시키는 시스템.
  14. 제10항에 있어서,
    상기 제1 메모리 영역에 저장된 데이터가 상기 제2 메모리 영역으로 이동된 후, 상기 프로세서는 상기 컨트롤러의 요청에 응답하여 상기 제1 메모리 영역을 상기 시스템 메모리 맵에서 제외시키는 시스템.
  15. 제10항에 있어서,
    상기 컨트롤러는 상기 제1 메모리의 상위 메모리 주소와 하위 메모리 주소에 대한 정보를 포함하는 상기 메모리 구성 레지스터를 포함하는 시스템.
  16. 제9항에 있어서,
    상기 컨트롤러와 상기 프로세서는 CXL(compute express link) 인터페이스를 통하여 통신하는 시스템.
  17. 제9항에 있어서,
    상기 컨트롤러와 상기 제1 메모리는 듀얼 데이터 레이트(dual data rate; DDR) 인터페이스를 통하여 통신하는 시스템.
  18. 컨트롤러가 장치 메모리의 제1 메모리 영역의 용도를 가속 연산 전용으로 설정하기 위한 제1 모드 전환 요청을 수신하는 단계;
    상기 제1 모드 전환 요청에 응답하여, 상기 컨트롤러는 상기 장치 메모리를 확인하고, 상기 제1 메모리 영역을 시스템 메모리 맵에서 제외하라는 명령을 전송하는 단계;
    상기 명령에 응답하여 상기 제1 메모리 영역이 핫 플러그-아웃되어 시스템 메모리 맵에서 제외되면, 상기 컨트롤러는 메모리 구성 레지스터에서 상기 제1 메모리 영역을 제외시키는 단계를 포함하는 메모리 모듈의 동작 방법.
  19. 제18항에 있어서,
    상기 컨트롤러는 상기 제1 메모리 영역으로 가속 연산에 필요한 데이터를 저장하는 단계; 및
    상기 컨트롤러는 상기 데이터를 이용하여 가속 연산을 수행하는 단계를 더 포함하는 메모리 모듈의 동작 방법.
  20. 제19항에 있어서,
    상기 가속 연산이 완료된 후, 상기 컨트롤러가 상기 제1 메모리 영역의 용도를 시스템 메모리 용으로 설정하기 위한 제2 모드 전환 요청을 수신하는 단계;
    상기 제2 모드 전환 요청에 응답하여 상기 제1 메모리 영역이 상기 시스템 메모리 맵에 포함되면, 상기 컨트롤러는 상기 메모리 구성 레지스터에 상기 제1 메모리 영역을 포함시키는 단계를 더 포함하는 메모리 모듈의 동작 방법.
KR1020210096985A 2021-07-23 2021-07-23 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법 KR20230016110A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210096985A KR20230016110A (ko) 2021-07-23 2021-07-23 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법
US17/715,158 US20230028071A1 (en) 2021-07-23 2022-04-07 Memory module, system including the same, and operation method of memory module
EP22181336.3A EP4123649A1 (en) 2021-07-23 2022-06-27 Memory module, system including the same, and operation method of memory module
CN202210821174.9A CN115687193A (zh) 2021-07-23 2022-07-12 存储模块、包括其的系统以及存储模块的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210096985A KR20230016110A (ko) 2021-07-23 2021-07-23 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230016110A true KR20230016110A (ko) 2023-02-01

Family

ID=82321470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210096985A KR20230016110A (ko) 2021-07-23 2021-07-23 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법

Country Status (4)

Country Link
US (1) US20230028071A1 (ko)
EP (1) EP4123649A1 (ko)
KR (1) KR20230016110A (ko)
CN (1) CN115687193A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560109B1 (ko) * 2023-03-20 2023-07-27 메티스엑스 주식회사 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785758A (zh) * 2024-02-27 2024-03-29 北京超弦存储器研究院 Cxl模组、控制器、任务处理方法、介质和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US20210011864A1 (en) * 2020-09-25 2021-01-14 Francesc Guim Bernat System, apparatus and methods for dynamically providing coherent memory domains

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102560109B1 (ko) * 2023-03-20 2023-07-27 메티스엑스 주식회사 바이트 어드레서블 장치 및 이를 포함하는 컴퓨팅 시스템
US11940910B1 (en) 2023-03-20 2024-03-26 Metisx Co., Ltd. Byte-addressable device and computing system including same

Also Published As

Publication number Publication date
CN115687193A (zh) 2023-02-03
EP4123649A1 (en) 2023-01-25
US20230028071A1 (en) 2023-01-26

Similar Documents

Publication Publication Date Title
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
EP4123649A1 (en) Memory module, system including the same, and operation method of memory module
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US11157191B2 (en) Intra-device notational data movement system
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
EP3982269A1 (en) Systems, methods, and devices for accelerators with virtualization and tiered memory
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
WO2022109770A1 (en) Multi-port memory link expander to share data among hosts
US11809341B2 (en) System, device and method for indirect addressing
US20230222062A1 (en) Apparatus and method for cache-coherence
US11983115B2 (en) System, device and method for accessing device-attached memory
US20230222067A1 (en) Apparatus and method for cache-coherence
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
US20220147458A1 (en) Semiconductor device
KR20230107086A (ko) 캐시-일관성을 위한 장치 및 방법
KR20220070951A (ko) 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작 방법
KR20230169885A (ko) 영구 메모리 장치 및 컴퓨팅 시스템
Bougioukou et al. A Hybrid Device Driver for Next-Generation Solid-State Drives
CN114372011A (zh) 用于访问设备附加存储器的系统、设备和方法
CN113704165A (zh) 一种超融合服务器、数据处理方法及装置