KR20230157187A - Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법 - Google Patents

Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR20230157187A
KR20230157187A KR1020220056898A KR20220056898A KR20230157187A KR 20230157187 A KR20230157187 A KR 20230157187A KR 1020220056898 A KR1020220056898 A KR 1020220056898A KR 20220056898 A KR20220056898 A KR 20220056898A KR 20230157187 A KR20230157187 A KR 20230157187A
Authority
KR
South Korea
Prior art keywords
cxl
memory
storage
interface
memory device
Prior art date
Application number
KR1020220056898A
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 KR1020220056898A priority Critical patent/KR20230157187A/ko
Priority to CN202310305148.5A priority patent/CN117033266A/zh
Priority to US18/131,185 priority patent/US20230359578A1/en
Priority to EP23172195.2A priority patent/EP4276642A1/en
Publication of KR20230157187A publication Critical patent/KR20230157187A/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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
    • 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
    • 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
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/112Switch control, e.g. arbitration
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage 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/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control 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/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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시의 실시 예에 따른 컴퓨팅 시스템은 제1 및 제2 스토리지 장치들, 제1 스토리지 장치의 제1 맵 데이터 및 제2 스토리지 장치의 제2 맵 데이터를 저장하는 메모리 장치, 및 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 제1 및 제2 스토리지 장치들 및 외부 호스트 사이의 통신을 중재하는 CXL 스위치를 포함하고, 제1 스토리지 장치는 메모리 장치와 제2 인터페이스를 통해 연결되고, 제2 스토리지 장치는 메모리 장치와 제3 인터페이스를 통해 연결되고, 제1 내지 제3 인터페이스들은 물리적으로 서로 분리된다.

Description

CXL 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법{COMPUTING SYSTEM INCLUDING CXL SWTICH, MEMORY DEVICE AND STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 기재는 컴퓨팅 장치에 관한 것으로, 더 상세하게는 CXL 스위치, 메모리 장치, 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
솔리드 스테이트 드라이브와 같은 스토리지 장치는 낸드 플래시 메모리를 포함할 수 있다. 스토리지 장치의 호스트에서 사용되는 논리 블록 어드레스와 낸드 플래시 메모리의 물리 블록 어드레스는 서로 다른 체계를 갖는다. 따라서, 스토리지 장치는 논리 블록 어드레스와 물리 블록 어드레스를 매핑하는 맵 데이터를 이용하여 호스트 장치의 논리 블록 어드레스와 낸드 플래시 메모리의 물리 블록 어드레스의 사이를 중재할 수 있다.
낸드 플래시 메모리의 용량이 증가함에 따라, 맵 데이터의 용량 또한 증가하고 있다. 따라서, 스토리지 장치에서 사용하기 위한 대용량의 버퍼 메모리에 대한 요구가 발생하고 있으며, 이는 새로운 연구 및 개발을 위한 비용을 유발할 수 있다.
본 기재의 목적은 CXL 스위치, 메모리 장치, 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법을 제공하는데 있다.
본 개시의 실시 예에 따른 컴퓨팅 시스템은 제1 및 제2 스토리지 장치들, 제1 스토리지 장치의 제1 맵 데이터 및 제2 스토리지 장치의 제2 맵 데이터를 저장하는 메모리 장치, 및 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 제1 및 제2 스토리지 장치들 및 외부 호스트 사이의 통신을 중재하는 CXL 스위치를 포함하고, 제1 스토리지 장치는 메모리 장치와 제2 인터페이스를 통해 연결되고, 제2 스토리지 장치는 메모리 장치와 제3 인터페이스를 통해 연결되고, 제1 내지 제3 인터페이스들은 물리적으로 서로 분리된다.
본 개시의 실시 예에 따르면, 제1 및 제2 스토리지 장치들, CXL 스위치, 및 메모리 장치를 포함하고, 제1 스토리지 장치 및 메모리 장치는 제2 인터페이스를 통해 연결되고, 제2 스토리지 장치 및 메모리 장치는 제3 인터페이스를 통해 연결되는 컴퓨팅 시스템의 동작 방법에 있어서, 제1 스토리지 장치에 의해, 외부 호스트로부터 제1 읽기 요청을 수신하는 단계, 제1 스토리지 장치에 의해, 제1 읽기 요청에 응답하여 제2 인터페이스를 통해 제2 읽기 요청을 메모리 장치로 전송하는 단계, 및 메모리 장치에 의해, 제2 읽기 요청에 응답하여 제2 인터페이스를 통해 제1 부분 맵 데이터를 포함하는 제2 읽기 응답을 제1 스토리지 장치로 전송하는 단계, 제1 스토리지 장치에 의해, 제1 부분 맵 데이터를 기반으로 제1 스토리지 장치의 불휘발성 메모리로부터 제1 사용자 데이터를 읽는 단계, 및 제1 스토리지 장치에 의해, 제1 인터페이스를 통해 제1 사용자 데이터를 포함하는 제1 읽기 응답을 외부 호스트로 전송하는 단계를 포함하고, 스위치는 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 제1 및 제2 스토리지 장치들 및 외부 호스트 사이의 통신을 중재하고, 제1 내지 제3 인터페이스들은 CXL(Compute Express Link) 프로토콜을 기반으로 하고, 물리적으로 서로 분리된다.
본 개시의 실시 예에 따른 컴퓨팅 시스템은 제1 및 제2 스토리지 장치들, 제1 스토리지 장치의 제1 맵 데이터 및 제2 스토리지 장치의 제2 맵 데이터를 저장하는 메모리 장치, 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 제1 및 제2 스토리지 장치들 및 외부 호스트 사이의 통신을 중재하는 제1 CXL 스위치, 및 제1 및 제2 스토리지 장치들 및 메모리 장치 각각과 제2 인터페이스를 통해 연결되고, 제1 및 제2 스토리지 장치들 및 메모리 장치 사이의 통신을 중재하는 제2 CXL 스위치를 포함한다.
본 기재의 실시 예에 따르면, 호스트 및 제1 및 제2 스토리지 장치는 제1 인터페이스를 통해 통신하고, 제1 스토리지 장치 및 메모리 장치는 제2 인터페이스를 통해 통신하고, 제2 스토리지 장치 및 메모리 장치는 제3 인터페이스를 통해 통신할 수 있다. 이에 따라, 향상된 성능을 갖는 컴퓨팅 시스템이 제공된다.
도 1은 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 2a는 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다.
도 2b은 도 2a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다.
도 3a는 본 개시의 실시 예에 따른 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다.
도 3b는 도 3a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다.
도 4는 도 3b의 컴퓨팅 시스템의 초기화 동작 또는 파워-업 동작을 보여주는 순서도이다.
도 5는 도 3b의 컴퓨팅 시스템의 맵 데이터 저장 동작을 설명하기 위한 도면이다.
도 6은 맵 데이터가 CXL 메모리에 저장되는 동작을 설명하기 위한 도면이다.
도 7은 도 3a의 제1 CXL 스토리지에 대한 읽기 동작을 보여주는 순서도이다.
도 8은 도 3a의 제1 CXL 스토리지에 대한 쓰기 동작을 보여주는 순서도이다.
도 9a 내지 도 9c는 도 3a의 CXL 메모리의 요청 처리 순서를 설명하기 위한 도면들이다.
도 9는 도 3a의 컴퓨팅 시스템의 파워 오프 동작을 보여주는 순서도이다.
도 10은 도 3a의 CXL 메모리의 요청 처리 순서를 설명하기 위한 순서도이다.
도 11은 도 3a의 컴퓨팅 시스템의 파워 오프 동작을 보여주는 순서도이다.
도 12a는 본 개시의 실시 예에 따른 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다.
도 12b는 도 12a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다.
도 13은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 14는 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 15는 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 16은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 17은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 18은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 19는 본 개시에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(11), 복수의 메모리 장치들(12a, 12b), 및 스토리지 장치(13)를 포함할 수 있다. 호스트(11)는 컴퓨팅 시스템(10)의 제반 동작을 제어할 수 있다. 복수의 메모리 장치들(12a, 12b)은 호스트(11)의 동작 메모리 또는 시스템 메모리로서 사용될 수 있다.
스토리지 장치(13)는 스토리지 컨트롤러(13a), 버퍼 메모리(13b), 및 불휘발성 메모리(13c)를 포함할 수 있다. 스토리지 컨트롤러(13a)는 호스트(11)의 제어에 따라, 불휘발성 메모리(13c)에 데이터를 저장하거나 또는 불휘발성 메모리(13c)에 저장된 데이터를 호스트(11)로 전송할 수 있다.
버퍼 메모리(13b)는 스토리지 장치(13)가 동작하는데 필요한 다양한 정보를 저장할 수 있다. 예를 들어, 스토리지 컨트롤러(13a)는 맵 데이터를 사용하여 불휘발성 메모리(13c)에 저장된 데이터를 관리할 수 있다. 맵 데이터는 호스트(11)에 의해 관리되는 논리 블록 어드레스 및 불휘발성 메모리(13c)의 물리 블록 어드레스 사이의 관계에 대한 정보를 포함할 수 있다.
일 실시 예에서, 버퍼 메모리(13b)는 DRAM과 같은 고속 메모리일 수 있다. 불휘발성 메모리(13c)의 용량이 증가함에 따라, 요구되는 맵 데이터의 크기가 증가할 수 있다. 그러나 단일 스토리지 장치(13)에 포함된 버퍼 메모리(13b)의 용량은 제한적이기 때문에, 불휘발성 메모리(13c)의 용량 증가에 따른 맵 데이터의 크기 증가에 대응할 수 없는 문제점이 있다.
도 2a는 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다. 도 2a를 참조하면, 컴퓨팅 시스템(100)은 호스트(101), 복수의 메모리 장치들(102a, 102b), CXL 스토리지(110), 및 CXL 메모리(120)를 포함할 수 있다.
호스트(101)는 컴퓨팅 시스템(100)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 호스트(101)는 CPU(central processing unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DPU(Data Processing Unit) 등과 같은 다양한 프로세서들 중 하나일 수 있다. 일 실시 예에서, 호스트(101)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
복수의 메모리 장치들(102a, 102b)은 컴퓨팅 시스템(100)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 일 실시 예에서, 복수의 메모리 장치들(102a, 102b) 각각은 DRAM(dynamic random access memory) 장치일 수 있으며, DIMM(dual in-line memory module)의 폼 팩터를 가질 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 복수의 메모리 장치들(102a, 102b)은 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
복수의 메모리 장치들(102a, 102b)은 DDR 인터페이스를 통해 호스트(101)와 직접 통신할 수 있다. 일 실시 예에서, 호스트(101)는 복수의 메모리 장치들(102a, 102b)을 제어하도록 구성된 메모리 컨트롤러를 포함할 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 복수의 메모리 장치들(102a, 102b)은 다양한 인터페이스를 통해 호스트(101)와 통신할 수 있다.
CXL 스토리지(110)는 CXL 스토리지 컨트롤러(111) 및 불휘발성 메모리(NVM)를 포함할 수 있다. CXL 스토리지 컨트롤러(111)는 호스트(101)의 제어에 따라, 불휘발성 메모리(NVM)에 데이터를 저장하거나 또는 불휘발성 메모리(NVM)에 저장된 데이터를 호스트(101)로 전송할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
CXL 메모리(120)는 CXL 메모리 컨트롤러(121) 및 버퍼 메모리(BFM)를 포함할 수 있다. CXL 메모리 컨트롤러(121)는 호스트(101)의 제어에 따라 버퍼 메모리(BFM)에 데이터를 저장하거나 또는 버퍼 메모리(BFM)에 저장된 데이터를 호스트(101)로 전송할 수 있다. 일 실시 예에서, 버퍼 메모리(BFM)는 DRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, 호스트(101), CXL 스토리지(110), 및 CXL 메모리(120)는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(101), CXL 스토리지(110), 및 CXL 메모리(120)는 CXL 인터페이스(IF_CXL)를 통해 서로 통신할 수 있다. 이에 따라, CXL 스토리지(110) 및 CXL 메모리(120) 간의 통신이 증가하는 경우, CXL 스토리지(110) 및 호스트(101) 간의 통신에 영향을 줄 수 있다. CXL 스토리지(110) 및 CXL 메모리(120) 간의 통신으로 인하여, CXL 스토리지(110) 및 호스트(101) 간의 통신의 성능이 감소하거나 레이턴시가 증가할 수 있다.
일 실시 예에서, CXL 스토리지(110)는 도 1의 스토리지 장치(13)와 달리, 맵 데이터를 저장 또는 관리하기 위한 별도의 버퍼 메모리를 포함하지 않을 수 있다. 이 경우, CXL 스토리지(110)는 맵 데이터를 저장 또는 관리하기 위한 버퍼 메모리를 필요로 할 수 있다. 일 실시 예에서, CXL 메모리(120)의 적어도 일부 영역은 CXL 스토리지(110)의 버퍼 메모리로서 사용될 수 있다. 이 경우, CXL 스토리지(110)의 CXL 스토리지 컨트롤러(111)에 의해 관리되는 매핑 테이블이 CXL 메모리(120)에 저장될 수 있다. 예를 들어, CXL 메모리(120)의 적어도 일부 영역은 CXL 스토리지(110)의 버퍼 메모리(즉, CXL 스토리지(110)에 대한 전용 영역)으로 호스트(101)에 의해 할당될 수 있다.
일 실시 예에서, CXL 스토리지(110)는 CXL 인터페이스(IF_CXL)를 통해 CXL 메모리(120)를 액세스(또는, 접근)할 수 있다. 예를 들어, CXL 스토리지(110)는 CXL 메모리(120)의 영역 중 할당된 영역에 매핑 테이블을 저장하거나 또는 저장된 매핑 테이블을 독출할 수 있다. CXL 메모리(120)는 CXL 스토리지(110)의 제어에 따라, 버퍼 메모리(BFM)에 데이터(예를 들어, 맵 데이터)를 저장하거나 또는 버퍼 메모리(BFM)에 저장된 데이터(예를 들어, 맵 데이터)를 CXL 스토리지(110)로 전송할 수 있다.
일 실시 예에서, 종래의 스토리지 장치(13)의 스토리지 컨트롤러(13a)는 호스트(11)와 PCIe 또는 NVMe와 같은 호스트 인터페이스를 통해 통신하고, 버퍼 메모리(13b)와 DDR 또는 LPDDR 인터페이스와 같은 메모리 인터페이스를 통해 통신한다. 즉, 종래의 스토리지 장치(13)의 스토리지 컨트롤러(13a)는 외부에 위치한 호스트(11) 및 내부에 포함된 버퍼 메모리(13b)와 서로 다른 인터페이스(즉, 이종의 인터페이스)를 통해 각각 통신한다.
반면에, 본 개시의 실시 예에 따르면, CXL 스토리지(110)의 CXL 스토리지 컨트롤러(111)는 CXL 인터페이스(IF_CXL)를 통해, 호스트(101) 및 CXL 메모리(120)(즉, 버퍼 메모리)와 통신할 수 있다. 다시 말해서, CXL 스토리지(110)의 CXL 스토리지 컨트롤러(111)는 동종의 인터페이스 또는 공통의 인터페이스를 통해, 호스트(101) 및 CXL 메모리(120)와 서로 통신할 수 있고, CXL 메모리(120)의 일부 영역을 버퍼 메모리로서 사용할 수 있다.
도 2b은 도 2a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다. 도 2a 및 도 2b를 참조하면, 컴퓨팅 시스템(100)은 CXL 스위치(SW_CXL), 호스트(101), CXL 스토리지(110), 및 CXL 메모리(120)를 포함할 수 있다.
CXL 스위치(SW_CXL)는 CXL 인터페이스(IF_CXL)에 포함된 구성 요소일 수 있다. CXL 스위치(SW_CXL)는 호스트(101), CXL 스토리지(110), 및 CXL 메모리(120) 사이의 통신을 중재하도록 구성될 수 있다. 예를 들어, 호스트(101) 및 CXL 스토리지(110)가 서로 통신하는 경우, CXL 스위치(SW_CXL)는 호스트(101) 또는 CXL 스토리지(110)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 CXL 스토리지(110) 또는 호스트(101)로 전달하도록 구성될 수 있다. 호스트(101) 및 CXL 메모리(120)가 서로 통신하는 경우, CXL 스위치(SW_CXL)는 호스트(101) 또는 CXL 메모리(120)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 CXL 메모리(120) 또는 호스트(101)로 전달하도록 구성될 수 있다. CXL 스토리지(110) 및 CXL 메모리(120)가 서로 통신하는 경우, CXL 스위치(SW_CXL)는 CXL 스토리지(110) 및 CXL 메모리(120)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 CXL 메모리(120) 또는 CXL 스토리지(110)로 전달하도록 구성될 수 있다.
호스트(101)는 CXL 호스트 인터페이스 회로(101a)를 포함할 수 있다. CXL 호스트 인터페이스 회로(101a)는 CXL 스위치(SW_CXL)를 통해, CXL 스토리지(110) 또는 CXL 메모리(120)와 통신할 수 있다.
CXL 스토리지(110)는 CXL 스토리지 컨트롤러(111) 및 불휘발성 메모리(NVM)를 포함할 수 있다. CXL 스토리지 컨트롤러(111)는 CXL 스토리지 인터페이스 회로(111a), 프로세서(111b), RAM(111c), 플래시 변환 계층(FTL; flash translation layer)(111d), 에러 정정 코드(ECC; error correction code) 엔진(111e), 및 낸드 인터페이스 회로(111f)를 포함할 수 있다.
CXL 스토리지 인터페이스 회로(111a)는 CXL 스위치(SW_CXL)와 연결될 수 있다. CXL 스토리지 인터페이스 회로(111a)는 CXL 스위치(SW_CXL)를 통해, 호스트(101) 또는 CXL 메모리(120)와 통신할 수 있다.
프로세서(111b)는 CXL 스토리지 컨트롤러(111)의 제반 동작을 제어하도록 구성될 수 있다. RAM(111c)은 CXL 스토리지 컨트롤러(111)의 동작 메모리 또는 버퍼 메모리로서 사용될 수 있다. 일 실시 예에서, RAM(111c)은 SRAM일 수 있으며, CXL 스토리지(110)에 대한 읽기 버퍼, 쓰기 버퍼 등으로 사용될 수 있다. 일 실시 예에서, 이하에서 설명되는 바와 같이, RAM(111c)은 CXL 메모리(120)로부터 읽어진 맵 데이터(MD) 또는 맵 데이터(MD)의 일부를 임시 저장하도록 구성될 수 있다.
FTL(111d)은 불휘발성 메모리(NVM)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다. 예를 들어, FTL(111d)은 맵 데이터(또는 매핑 테이블)을 기반으로, 호스트(101)에 의해 관리되는 논리 블록 어드레스 및 불휘발성 메모리(NVM)에서 사용되는 물리 블록 어드레스 사이의 어드레스 변환을 수행할 수 있다. FTL(111d)은 불휘발성 메모리(NVM)에 대한 배드 블록 관리 동작을 수행할 수 있다. FTL(111d)은 불휘발성 메모리(NVM)에 대한 마모도 관리 동작(wear leveling operation)을 수행할 수 있다. FTL(111d)은 불휘발성 메모리(NVM)에 대한 가비지 콜렉션 동작을 수행할 수 있다.
ECC 엔진(111e)은 불휘발성 메모리(NVM)에 저장된 데이터에 대한 오류 검출 및 정정을 수행할 수 있다. 예를 들어, ECC 엔진(111e)은 불휘발성 메모리(NVM)에 저장될 사용자 데이터(UD)에 대한 패리티 비트를 생성할 수 잇고, 생성된 패리티 비트들은 사용자 데이터(UD)와 함께, 불휘발성 메모리(NVM)에 저장될 수 있다. 불휘발성 메모리(NVM)로부터 사용자 데이터(UD)가 독출되는 경우, ECC 엔진(111e)은 독출된 사용자 데이터(UD)와 함께 불휘발성 메모리(NVM)로부터 독출되는 패리티 비트들을 사용하여, 사용자 데이터(UD)의 에러를 검출하고 정정할 수 있다.
낸드 인터페이스 회로(111f)는 불휘발성 메모리(NVM)에 데이터가 저장되거나 또는 불휘발성 메모리(NVM)로부터 데이터가 독출되도록, 불휘발성 메모리(NVM)를 제어할 수 있다. 일 실시 예에서, 낸드 인터페이스 회로(111f)는 토글 인터페이스(Toggle Interface) 또는 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다. 예를 들어, 불휘발성 메모리(NVM)는 복수의 낸드 플래시 장치들을 포함할 수 있고, 낸드 인터페이스 회로(111f)가 토글 인터페이스를 기반으로 구현된 경우, 낸드 인터페이스 회로(111f)는 복수의 채널들을 통해, 복수의 낸드 플래시 장치들과 통신한다. 복수의 낸드 플래시 장치들은 다채널-다웨이 구조를 통해, 복수의 채널들과 연결될 수 있다.
불휘발성 메모리(NVM)는 CXL 스토리지 컨트롤러(111)의 제어에 따라, 사용자 데이터(UD)를 저장 또는 출력할 수 있다. 불휘발성 메모리(NVM)는 CXL 스토리지 컨트롤러(111)의 제어에 따라, 맵 데이터(MD)를 저장 또는 출력할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM)에 저장된 맵 데이터(MD)는 불휘발성 메모리(NVM)에 저장된 사용자 데이터(UD) 전체에 대응하는 매핑 정보를 포함할 수 있다. 불휘발성 메모리(NVM)에 저장된 맵 데이터(MD)는 CXL 스토리지(110)의 초기화 동작 시, CXL 메모리(120)에 저장될 수 있다.
CXL 메모리(120)는 CXL 메모리 컨트롤러(121) 및 버퍼 메모리(BFM)를 포함할 수 있다. CXL 메모리 컨트롤러(121)는 CXL 메모리 인터페이스 회로(121a), 프로세서(121b), 메모리 관리자(121c), 및 버퍼 메모리 인터페이스 회로(121d)를 포함할 수 있다.
CXL 메모리 인터페이스 회로(121a)는 CXL 스위치(SW_CXL)와 연결될 수 있다. CXL 메모리 인터페이스 회로(121a)는 CXL 스위치(SW_CXL)를 통해, 호스트(101a) 또는 CXL 스토리지(110)와 통신할 수 있다.
프로세서(121b)는 CXL 메모리 컨트롤러(121)의 제반 동작을 제어하도록 구성될 수 있다. 메모리 관리자(121c)는 버퍼 메모리(BFM)를 관리하도록 구성될 수 있다. 예를 들어, 메모리 관리자(121c)는 호스트(101) 또는 CXL 스토리지(110)로부터 액세스되는 메모리 어드레스(예를 들어, 논리 어드레스 또는 가상 어드레스)를 버퍼 메모리(BFM)에 대한 물리 어드레스로 변환하도록 구성될 수 있다. 일 실시 예에서, 메모리 어드레스는 CXL 메모리(120)의 저장 영역을 관리하기 위한 어드레스일 수 있으며, 호스트(101)에 의해 지정되고 관리되는 논리 어드레스 또는 가상 어드레스일 수 있다.
버퍼 메모리 인터페이스(121d)는 버퍼 메모리(BFM)에 데이터가 저장되거나 또는 버퍼 메모리(BFM)로부터 데이터가 독출되도록, 버퍼 메모리(BFM)를 제어할 수 있다. 일 실시 예에서, 버퍼 메모리 인터페이스 회로(121d)는 DDR 인터페이스, LPDDR 인터페이스 등과 같은 표준 규약을 준수하도록 구현될 수 있다.
버퍼 메모리(BFM)는 CXL 메모리 컨트롤러(121)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 버퍼 메모리(BFM)는 CXL 스토리지(110)에서 사용되는 맵 데이터(MD)를 저장하도록 구성될 수 있다. 맵 데이터(MD)는 컴퓨팅 시스템(100)의 초기화 또는 CXL 스토리지(110)의 초기화 동작에서, CXL 스토리지(110)로부터 CXL 메모리(120)로 전달될 수 있다.
상술된 바와 같이, 본 개시의 실시 예에 따른 CXL 스토리지(110)는 불휘발성 메모리(NVM)를 관리하는데 필요한 맵 데이터(MD)를 CXL 스위치(SW_CXL)(또는 CXL 인터페이스(IF_CXL))를 통해 연결된 CXL 메모리(120)에 저장할 수 있다. 이후에, CXL 스토리지(110)가 호스트(101)의 요청에 따라 읽기 동작을 수행할 경우, CXL 스토리지(110)는 CXL 스위치(SW_CXL)(또는 CXL 인터페이스(IF_CXL))를 통해 CXL 메모리(120)로부터 맵 데이터(MD)의 적어도 일부를 읽고, 읽은 맵 데이터(MD)를 기반으로 읽기 동작을 수행할 수 있다. 또는 CXL 스토리지(110)가 호스트(101)의 요청에 따라 쓰기 동작을 수행할 경우, CXL 스토리지(110)는 불휘발성 메모리(NVM)에 대한 쓰기 동작을 수행하고, 맵 데이터(MD)를 갱신할 수 있다. 이 때, 갱신된 맵 데이터(MD)는 CXL 스토리지 컨트롤러(111)의 RAM(111c)에 우선 저장될 수 있고, RAM(111c)에 저장된 맵 데이터(MD)는 CXL 스위치(SW_CXL)(또는 CXL 인터페이스(IF_CXL))를 통해, CXL 메모리(120)의 버퍼 메모리(BFM)로 전달되고, 갱신될 수 있다.
일 실시 예에서, CXL 메모리(120)의 버퍼 메모리(BFM)의 영역 중 적어도 일부는 CXL 스토리지(110)를 위한 전용 영역(dedicated area)으로 할당될 수 있고, 나머지 영역은 호스트(101)에 의해 액세스 가능한 영역으로 사용될 수 있다.
일 실시 예에서, 호스트(101) 및 CXL 스토리지(110)는 입출력 프로토콜인 CXL.io를 사용하여 서로 통신할 수 있다. CXL.io는 PCIe-기반의 비-일관성 입출력 프로토콜을 가질 수 있다. 호스트(101) 및 CXL 스토리지(110)는 CXL.io를 사용하여, 서로 사용자 데이터 또는 다양한 정보를 주고 받을 수 있다.
일 실시 예에서, CXL 스토리지(110) 및 CXL 메모리(120)는 메모리 액세스 프로토콜(memory access protocol)인 CXL.mem을 사용하여 서로 통신할 수 있다. CXL.mem은 메모리를 액세스를 지원하는 메모리 액세스 프로토콜일 수 있다. CXL 스토리지(110)는 CXL.mem을 사용하여 CXL 메모리(120)의 일부 영역(예를 들어, 맵 데이터(MD)가 저장된 영역 또는, CXL 스토리지 전용 영역)을 액세스할 수 있다.
일 실시 예에서, 호스트(101) 및 CXL 메모리(120)는 메모리 액세스 프로토콜(memory access protocol)인 CXL.mem을 사용하여 서로 통신할 수 있다. 호스트(101)는 CXL.mem을 사용하여 CXL 메모리(120)의 나머지 영역(예를 들어, 맵 데이터(MD)가 저장된 영역 이외의 나머지 영역 또는, CXL 스토리지 전용 영역 이외의 나머지 영역)을 시스템 메모리로서 액세스할 수 있다. 상술된 액세스 타입(CXL.io, CXL.mem 등)은 일부 예시이며, 본 개시의 범위가 이에 한정되는 것은 아니다.
도 3a는 본 개시의 실시 예에 따른 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다. 도 3a를 참조하면, 컴퓨팅 시스템(200)은 호스트(201), 복수의 메모리 장치들(202a, 202b), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)를 포함할 수 있다. 일 실시 예에서, 컴퓨팅 시스템(200)은 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기, 디지털 카메라 등과 같은 사용자 장치들, 또는 내비게이션(navigation), 블랙 박스, 차량용 전장 장치 등과 같은 차량용 장비(automotive device)에 포함될 수 있다. 또는, 컴퓨팅 시스템(200)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다.
호스트(201)는 컴퓨팅 시스템(200)의 제반 동작을 제어할 수 있다. 일 실시 예에서, 호스트(201)는 CPU(central processing unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DPU(Data Processing Unit) 등과 같은 다양한 프로세서들 중 하나일 수 있다. 일 실시 예에서, 호스트(201)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다.
복수의 메모리 장치들(202a, 202b)은 컴퓨팅 시스템(200)의 메인 메모리 또는 시스템 메모리로서 사용될 수 있다. 일 실시 예에서, 복수의 메모리 장치들(202a, 202b) 각각은 DRAM(dynamic random access memory) 장치일 수 있으며, DIMM(dual in-line memory module)의 폼 팩터를 가질 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 복수의 메모리 장치들(202a, 202b)은 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
복수의 메모리 장치들(202a, 202b)은 DDR 인터페이스를 통해 호스트(201)와 직접 통신할 수 있다. 일 실시 예에서, 호스트(201)는 복수의 메모리 장치들(202a, 202b)을 제어하도록 구성된 메모리 컨트롤러를 포함할 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 복수의 메모리 장치들(202a, 202b)은 다양한 인터페이스를 통해 호스트(201)와 통신할 수 있다.
제1 CXL 스토리지(210_1)는 CXL 스토리지 컨트롤러(211_1) 및 불휘발성 메모리(NVM1)를 포함할 수 있다. CXL 스토리지 컨트롤러(211_1)는 호스트(201)의 제어에 따라, 불휘발성 메모리(NVM1)에 데이터를 저장하거나 또는 불휘발성 메모리(NVM1)에 저장된 데이터를 호스트(201)로 전송할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM1)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
제2 CXL 스토리지(210_2)는 CXL 스토리지 컨트롤러(211_2) 및 불휘발성 메모리(NVM2)를 포함할 수 있다. CXL 스토리지 컨트롤러(211_2)는 호스트(201)의 제어에 따라, 불휘발성 메모리(NVM2)에 데이터를 저장하거나 또는 불휘발성 메모리(NVM2)에 저장된 데이터를 호스트(201)로 전송할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM2)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
CXL 메모리(220)는 CXL 메모리 컨트롤러(221) 및 버퍼 메모리(BFM)를 포함할 수 있다. CXL 메모리 컨트롤러(221)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 제어에 따라 버퍼 메모리(BFM)에 데이터를 저장하거나 또는 버퍼 메모리(BFM)에 저장된 데이터를 제1 및 제2 CXL 스토리지들(210_1, 210_2)로 전송할 수 있다. 일 실시 예에서, 버퍼 메모리(BFM)는 DRAM일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, CXL 메모리(220)는 복수의 스토리지들(210_1, 210_2)에 대한 우선 순위를 결정할 수 있다. 복수의 스토리지들(210_1, 210_2)에 대한 우선 순위는 미리 결정될 수 있다. 또는 CXL 메모리(220)는 초기화 동작 시 복수의 스토리지들(210_1, 210_2)로부터 수신된 특징 정보(예를 들어, 복수의 스토리지들(210_1, 210_2) 각각에 저장되는 데이터의 종류, 데이터의 중요도 등)를 기반으로 우선 순위를 결정할 수 있다. 예를 들어, 복수의 스토리지들(210_1, 210_2)로부터 수신된 메모리 할당 요청은 특징 정보를 포함할 수 있다.
일 실시 예에서, CXL 메모리(220)는 복수의 스토리지들(210_1, 210_2)에 대한 제1 우선 순위를 결정하고, 제1 우선 순위는 초기화 동작에서 영역 할당 시, 입출력 요청에 대한 스케줄링 시, 파워 오프 동작에서 스케줄링 시 모두 사용될 수 있다.
일 실시 예에서, CXL 메모리(220)는 초기화 동작에서 영역 할당 시 사용되는 복수의 스토리지들(210_1, 210_2)에 대한 제1 우선 순위를 결정하고, 입출력 요청에 대한 스케줄링 시 사용되는 복수의 스토리지들(210_1, 210_2)에 대한 제2 우선 순위를 결정하고, 파워 오프 동작에서 스케줄링 시 사용되는 복수의 스토리지들(210_1, 210_2)에 대한 제3 우선 순위를 결정할 수 있다. 제1 내지 제3 우선 순위들 각각은 서로 다를 수 있다.
일 실시 예에서, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 도 1의 스토리지 장치(13)와 달리, 맵 데이터를 저장 또는 관리하기 위한 별도의 버퍼 메모리를 포함하지 않을 수 있다. 이 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 맵 데이터를 저장 또는 관리하기 위한 버퍼 메모리를 필요로 할 수 있다. 일 실시 예에서, CXL 메모리(220)의 적어도 일부 영역 또는 전체 영역은 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 버퍼 메모리로서 사용될 수 있다. 이 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 CXL 스토리지 컨트롤러(211_1, 211_2)에 의해 관리되는 매핑 테이블이 CXL 메모리(220)에 저장될 수 있다. 예를 들어, CXL 메모리(220)의 적어도 일부 영역 또는 전체 영역은 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 버퍼 메모리(즉, 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 대한 전용 영역)으로 할당될 수 있다.
일 실시 예에서, 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220) 모두는 동일한 인터페이스를 서로 공유하지 않도록 구성될 수 있다. 호스트(201), 제1 CXL 스토리지(210_1), 및 제2 CXL 스토리지(210_2)는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(101), 제1 CXL 스토리지(210_1), 및 제2 CXL 스토리지(210_2)는 제1 인터페이스(IF1)를 통해 서로 통신할 수 있다. 그러나, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 제1 인터페이스(IF1)를 통해 CXL 메모리(220)를 액세스할 수 없다.
일 실시 예에서, 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 CXL 메모리(220)와 서로 통신하고, 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 CXL 메모리(220)와 서로 통신할 수 있다. 즉, 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 호스트(201) 사이의 통신과 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220) 사이의 통신은 서로 분리될 수 있다. 이에 따라, 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2). 및 CXL 메모리(220) 사이의 통신은 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 호스트(201) 사이의 통신에 영향을 주지 않을 수 있다. 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220) 사이의 통신은 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 호스트(201) 사이의 통신과 독립적으로 동작할 수 있다. 제1 CXL 스토리지(210_1) 및 CXL 메모리(220)가 독립적인 링크를 사용하고, 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)가 독점적인 링크를 사용함으로써, 향상된 성능을 갖는 컴퓨팅 시스템이 제공된다.
제1 내지 제3 인터페이스들(IF1~IF3) 모두는 물리적으로 서로 분리될 수 있다. 예를 들어, 제1 및 제2 인터페이스들(IF1, IF2)은 물리적으로 분리되고, 제2 및 제3 인터페이스들(IF2, IF3)은 물리적으로 분리되고, 제3 및 제1 인터페이스들(IF3, IF1)은 물리적으로 분리될 수 있다. 제1 내지 제3 인터페이스들(IF1~IF3) 모두 CXL 인터페이스일 수 있다. 일 실시 예에서, CXL 인터페이스(Compute Express Link interface)는 일관성(coherency), 메모리 액세스(memory access), 및 입출력 프로토콜(IO protocol)의 동적 프로토콜 다중화(dynamic protocol muxing)를 지원하여 가속기들, 메모리 장치들, 또는 다양한 전자 장치들 사이의 다양한 연결을 가능하게 하는 저지연(low-latency) 및 고대역폭(high-bandwidth) 링크를 가리킬 수 있다.
일 실시 예에서, 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 CXL 메모리(220)를 액세스할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 CXL 메모리(220)를 액세스할 수 있다. 예를 들어, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)의 영역 중 할당된 영역에 매핑 테이블을 저장하거나 또는 저장된 매핑 테이블을 독출할 수 있다. CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 제어에 따라, 버퍼 메모리(BFM)에 데이터(예를 들어, 맵 데이터)를 저장하거나 또는 버퍼 메모리(BFM)에 저장된 데이터(예를 들어, 맵 데이터)를 제1 또는 제2 CXL 스토리지들(210_1, 210_2)로 전송할 수 있다.
도 1을 참조하여 설명된 바와 같이, 종래의 스토리지 장치(13)는 내부에 포함된 버퍼 메모리(13b)를 사용하여 맵 데이터를 저장 및 관리한다. 스토리지 장치(13)의 용량이 증가함에 따라, 맵 데이터의 크기가 증가하고, 이에 따라, 스토리지 장치(13)에 포함된 버퍼 메모리(13b)의 용량 증가가 필요하다. 그러나, 스토리지 장치(13)에 포함된 버퍼 메모리(13b)의 구조 및 물리적 특성으로 인한 용량 증가의 한계가 있으며, 이 경우, 버퍼 메모리의 설계 변경 또는 추가적인 집적화가 필요하다.
반면에, 본 개시의 실시 예에 따르면, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 외부에 위치한 CXL 메모리(220)의 적어도 일부 영역을 버퍼 메모리로서 사용할 수 있다. 이 경우, CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)과 별도로 구현되기 때문에, 대용량으로 구현될 수 있다. 이에 따라, 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 용량 증가에 따라 맵 데이터의 용량이 증가하더라도, CXL 메모리(220)에 의해 맵 데이터가 정상적으로 관리될 수 있다.
일 실시 예에서, 종래의 스토리지 장치(13)의 스토리지 컨트롤러(13a)는 호스트(11)와 PCIe 또는 NVMe와 같은 호스트 인터페이스를 통해 통신하고, 버퍼 메모리(13b)와 DDR 또는 LPDDR 인터페이스와 같은 메모리 인터페이스를 통해 통신한다. 즉, 종래의 스토리지 장치(13)의 스토리지 컨트롤러(13a)는 외부에 위치한 호스트(11) 및 내부에 포함된 버퍼 메모리(13b)와 서로 다른 인터페이스(즉, 이종의 인터페이스)를 통해 각각 통신한다.
반면에, 본 개시의 실시 예에 따르면, 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 CXL 스토리지 컨트롤러(211_1, 211_2)는 제1 인터페이스(IF1)를 통해 호스트(201)와 통신하고, 제2 또는 제3 인터페이스(IF2, IF3)를 통해 CXL 메모리(220)(즉, 버퍼 메모리)와 통신할 수 있다. 다시 말해서, 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 CXL 스토리지 컨트롤러(211_1, 211_2)는 동종의 또는 공통의 CXL 프로토콜을 기반으로 호스트(201) 및 CXL 메모리(220)와 서로 통신할 수 있고, CXL 메모리(220)의 일부 영역 또는 전체 영역을 버퍼 메모리로서 사용할 수 있다.
다만, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 호스트(201) 사이의 통신과 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 CXL 메모리(220) 사이의 통신이 섞이지 않도록, 서로 다른 인터페이스(또는 링크)를 사용할 수 있다. 이에 따라, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 CXL 메모리(220) 사이의 통신은 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 호스트(201) 사이의 통신에 영향을 미치지 않을 수 있다.
상술된 바와 같이, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 CXL 메모리(220)는 직접 연결될 수 있다. 이에 따라, 호스트(201)는 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각과 CXL 메모리(220)의 통신으로 인한 오버헤드가 발생하지 않을 수 있다. 호스트(201)는 CXL 메모리(220)를 직접 인식할 수 없다. 호스트(201)는 CXL 메모리(220)에 액세스할 수 없다. 호스트(201)는 CXL 메모리(220)를 제어 또는 관리할 수 없다. 대신에, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)를 제어 또는 관리할 수 있다. 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)에 대한 제반 동작을 제어하도록 구성될 수 있다. 예를 들어, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)에 초기화 동작 또는 파워-오프 동작을 지시할 수 있다.
이하에서, 설명의 편의를 위해, 호스트(201), 제1 CXL 스토리지(210_1), 및 제2 CXL 스토리지(210_2)는 제1 인터페이스(IF1)를 통해 서로 통신하고, 제1 CXL 스토리지(210_1) 및 CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 서로 통신하고, 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 서로 통신하는 것으로 가정한다. 제1 내지 제3 인터페이스들(IF1~IF3)은 모두 CXL 인터페이스인 것으로 가정한다. 그러나 본 범위가 이에 한정되는 것은 아니며, 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 GEN-Z 프로토콜, NVLink 프로토콜, CCIX 프로토콜, Open CAPI 프로토콜 등과 같은 다양한 컴퓨팅 인터페이스를 기반으로 서로 통신할 수 있다.
도 3b는 도 3a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다. 도 3a 및 도 3b을 참조하면, 컴퓨팅 시스템(200)은 CXL 스위치(SW_CXL), 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)를 포함할 수 있다.
CXL 스위치(SW_CXL)는 제1 인터페이스(IF1)에 포함된 구성 요소일 수 있다. CXL 스위치(SW_CXL)는 호스트(201), 제1 CXL 스토리지(210_1), 및 제2 CXL 스토리지(210_2) 사이의 통신을 중재하도록 구성될 수 있다. 예를 들어, 호스트(201), 제1 CXL 스토리지(210_1), 및 제2 CXL 스토리지(210_2)가 서로 통신하는 경우, CXL 스위치(SW_CXL)는 호스트(201), 제1 CXL 스토리지(210_1), 또는 제2 CXL 스토리지(210_2)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 또는 호스트(201)로 전달하도록 구성될 수 있다.
호스트(201)는 CXL 호스트 인터페이스 회로(201a)를 포함할 수 있다. CXL 호스트 인터페이스 회로(201a)는 포트(PT4)를 포함할 수 있다. 호스트 인터페이스 회로(201a)는 포트(PT4)를 통해 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 포트(PT4)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다. CXL 호스트 인터페이스 회로(201a)는 제1 인터페이스(IF1)를 통해, 제1 및 제2 CXL 스토리지들(210_1, 210_2)과 통신할 수 있다. CXL 호스트 인터페이스 회로(201a)는 CXL 스위치(SW_CXL)를 통해, 제1 및 제2 CXL 스토리지들(210_1, 210_2)과 통신할 수 있다. CXL 메모리(220)는 CXL 스위치(SW_CXL)에 연결되어 있지 않으므로, 호스트(201)는 CXL 메모리(220)와 통신할 수 없다.
일 실시 예에서, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 종래의 스토리지들과 상이한 구성을 가질 수 있다. 예를 들어, 종래의 스토리지 장치(예를 들어, DRAM 버퍼를 포함하는 SSD)는 스토리지 장치에 포함된 DRAM 버퍼에 맵 데이터를 저장하고 관리한다. 이 경우, 맵 데이터를 저장하기 위한 대용량의 DRAM 버퍼가 스토리지 장치 내에 포함되어야 한다. 또는 종래의 다른 스토리지 장치(예를 들어, DRAMLESS SSD 또는 DRAMLESS 메모리 카드 등)는 스토리지 장치에 포함된 불휘발성 메모리(예를 들어, NAND 플래시 메모리)에 전체 맵 데이터를 저장하고, 일부 맵 데이터를 SRAM 버퍼로 로드(load)하여 사용한다. 이 경우, 맵 데이터를 로드하기 위해, DRAM 버퍼보다 상대적으로 느린 동작 속도를 갖는 불휘발성 메모리에 대한 액세스가 빈번하기 수행되기 때문에, 동작 성능이 저하된다.
반면에, 본 개시에 따른 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 맵 데이터를 저장하도록 구성된 별도의 DRAM 버퍼를 포함하지 않을 수 있다. 이 때, 제1 CXL 스토리지(210_1)의 제1 맵 데이터(MD1) 및 제2 CXL 스토리지(130)의 제2 맵 데이터(MD2) 각각은 제1 및 제2 CXL 스토리지들(210_1, 210_2) 외부에 위치한 CXL 메모리(220)에 저장되고 관리될 수 있다. 이하에서 설명되는 바와 같이, CXL 메모리(220)는 빠른 동작 속도를 지원하기 때문에, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 종래의 스토리지 장치(예를 들어, DRAM을 포함하는 스토리지 장치)와 동일한 성능을 가질 수 있다. 뿐만 아니라, CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2) 외부에 위치하기 때문에, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각의 맵 데이터에 대한 대용량화가 용이하게 대응될 수 있다. 이에 따라, 컴퓨팅 시스템(200)의 스토리지 영역이 대용량화 될 수 있다.
제1 CXL 스토리지(210_1)는 CXL 스토리지 컨트롤러(211_1) 및 불휘발성 메모리(NVM1)를 포함할 수 있다. CXL 스토리지 컨트롤러(211_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a), 프로세서(211_1b), RAM(211_1c), 플래시 변환 계층(FTL; flash translation layer)(211_1d), 에러 정정 코드(ECC; error correction code) 엔진(211_1e), 낸드 인터페이스 회로(211_1f), 및 제2 CXL 스토리지 인터페이스 회로(211_1g)를 포함할 수 있다.
제1 CXL 스토리지 인터페이스 회로(211_1a)는 호스트(201)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_1a)는 제1 포트(PT11)를 포함할 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_1a)는 제1 포트(PT11)를 통해 호스트(201)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제1 포트(PT11)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_1a)는 제1 인터페이스(IF1)를 통해 호스트(201)와 통신할 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_1a)는 CXL 스위치(SW_CXL)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_1a)는 CXL 스위치(SW_CXL)를 통해, 호스트(201)와 통신할 수 있다.
제2 CXL 스토리지 인터페이스 회로(211_1g)는 CXL 메모리(220)와 연결될 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_1g)는 제2 포트(PT12)를 포함할 수 있다. 제2 포트(PT12)는 CXL 메모리(220)와 통신을 위한 전용 포트일 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_1g)는 제2 포트(PT12)를 통해 CXL 메모리(220)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제2 포트(PT12)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_1g)는 제2 인터페이스(IF2)를 통해 CXL 메모리(220)와 통신할 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_1g)는 CXL 스위치(SW_CXL)와 연결될 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_1g)는 CXL 스위치(SW_CXL)를 통해, 호스트(201)와 통신할 수 있다.
프로세서(211_1b)는 CXL 스토리지 컨트롤러(211_1)의 제반 동작을 제어하도록 구성될 수 있다. RAM(211_1c)은 CXL 스토리지 컨트롤러(211_1)의 동작 메모리 또는 버퍼 메모리로서 사용될 수 있다. 일 실시 예에서, RAM(211_1c)은 SRAM일 수 있으며, 제1 CXL 스토리지(210_1)에 대한 읽기 버퍼, 쓰기 버퍼 등으로 사용될 수 있다. 일 실시 예에서, 이하에서 설명되는 바와 같이, RAM(211_1c)은 CXL 메모리(220)로부터 읽어진 맵 데이터(MD1) 또는 맵 데이터(MD1)의 일부를 임시 저장하도록 구성될 수 있다.
FTL(211_1d)은 불휘발성 메모리(NVM1)를 효율적으로 사용하기 위한 다양한 관리 동작을 수행할 수 있다. 예를 들어, FTL(211_1d)은 맵 데이터(또는 매핑 테이블)을 기반으로, 호스트(201)에 의해 관리되는 논리 블록 어드레스 및 불휘발성 메모리(NVM1)에서 사용되는 물리 블록 어드레스 사이의 어드레스 변환을 수행할 수 있다. FTL(211_1d)은 불휘발성 메모리(NVM1)에 대한 배드 블록 관리 동작을 수행할 수 있다. FTL(211_1d)은 불휘발성 메모리(NVM1)에 대한 마모도 관리 동작(wear leveling operation)을 수행할 수 있다. FTL(211_1d)은 불휘발성 메모리(NVM1)에 대한 가비지 콜렉션 동작을 수행할 수 있다.
일 실시 예에서, FTL(211_1d)은 소프트웨어, 하드웨어, 펌웨어, 또는 그것들의 조합을 기반으로 구현될 수 있다. FTL(211_1d)이 소프트웨어 또는 펌웨어 형태로 구현되는 경우, FTL(211_1d)과 관련된 프로그램 코드들은 RAM(211_1c)에 저장될 수 있고, 프로세서(211_1b)에 의해 구동될 수 있다. FTL(211_1d)이 하드웨어로 구현된 경우, 상술된 다양한 관리 동작을 수행하도록 구성된 하드웨어 구성들이 CXL 스토리지 컨트롤러(211_1) 내에 구현될 수 있다.
ECC 엔진(211_1e)은 불휘발성 메모리(NVM1)에 저장된 데이터에 대한 오류 검출 및 정정을 수행할 수 있다. 예를 들어, ECC 엔진(211_1e)은 불휘발성 메모리(NVM1)에 저장될 사용자 데이터(UD1)에 대한 패리티 비트를 생성할 수 있고, 생성된 패리티 비트들은 사용자 데이터(UD1)와 함께, 불휘발성 메모리(NVM1)에 저장될 수 있다. 불휘발성 메모리(NVM1)로부터 사용자 데이터(UD1)가 독출되는 경우, ECC 엔진(211_1e)은 독출된 사용자 데이터(UD1)와 함께 불휘발성 메모리(NVM1)로부터 독출되는 패리티 비트들을 사용하여, 사용자 데이터(UD1)의 에러를 검출하고 정정할 수 있다.
낸드 인터페이스 회로(211_1f)는 불휘발성 메모리(NVM1)에 데이터가 저장되거나 또는 불휘발성 메모리(NVM1)로부터 데이터가 독출되도록, 불휘발성 메모리(NVM1)를 제어할 수 있다. 일 실시 예에서, 낸드 인터페이스 회로(211_1f)는 토글 인터페이스(Toggle Interface) 또는 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다. 예를 들어, 불휘발성 메모리(NVM1)는 복수의 낸드 플래시 장치들을 포함할 수 있고, 낸드 인터페이스 회로(211_1f)가 토글 인터페이스를 기반으로 구현된 경우, 낸드 인터페이스 회로(211_1f)는 복수의 채널들을 통해, 복수의 낸드 플래시 장치들과 통신한다. 복수의 낸드 플래시 장치들은 다채널-다웨이 구조를 통해, 복수의 채널들과 연결될 수 있다.
낸드 인터페이스 회로(211_1f)는 복수의 채널들 각각을 통해, 칩 인에이블 신호(/CE), 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 읽기 인에이블 신호(/RE), 및 쓰기 인에이블 신호(/WE)를 복수의 낸드 플래시 장치들 각각으로 전송할 수 있다. 낸드 인터페이스 회로(211_1f) 및 복수의 낸드 플래시 장치들 각각은 복수의 채널들 각각을 통해, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 주고 받을 수 있다.
/CE CLE ALE /WE /RE DQS DQx MODE
L H L H X CMD Command Input
L L H H X ADDR Address Input
L L L H H ↑↓ DATA_in Data Input
L L L H ↑↓ ↑↓ DATA_out Data Output
표 1은 각 신호의 상태에 따른 낸드 플래시 장치의 동작 모드를 예시적으로 보여준다. 표 1을 참조하면, 낸드 플래시 장치가 커맨드(CMD) 또는 어드레스(ADDR)를 수신하거나 또는 데이터(DATA)를 입출력하는 동안, 칩 인에이블 신호(/CE)는 로우 상태(L)를 유지한다. 커맨드 입력 모드(Command Input) 동안, 낸드 인터페이스 회로(211_1f)는, 클럭 래치 인에이블 신호(CLE)가 하이 레벨(H)을 갖고, 어드레스 래치 인에이블 신호(ALE)가 로우 레벨(L)을 갖고, 쓰기 인에이블 신호(H)가 하이 레벨(H) 및 로우 레벨(L) 사이를 토글하고, 읽기 인에이블 신호(/RE)가 하이 레벨(H)을 갖도록, 신호 라인들을 제어할 수 있다. 커맨드 입력 모드(Command Input) 동안, 낸드 인터페이스 회로(211_1f)는 쓰기 인에이블 신호(/WE)의 상승 에지(↑)에 동기하여, 데이터 신호들(DQx)을 통해 커맨드(CMD)를 낸드 플래시 장치로 전송할 수 있다. 낸드 플래시 장치는 쓰기 인에이블 신호(/WE)의 상승 에지(↑)에 응답하여, 데이터 신호(DQx)로부터 커맨드(CMD)를 식별할 수 있다. 어드레스 입력 모드(Address Input) 동안, 낸드 인터페이스 회로(211_1f)는, 클럭 래치 인에이블 신호(CLE)가 로우 레벨(L)을 갖고, 어드레스 래치 인에이블 신호(ALE)가 하이 레벨(H)을 갖고, 쓰기 인에이블 신호(H)가 하이 레벨(H) 및 로우 레벨(L) 사이를 토글하고, 읽기 인에이블 신호(/RE)가 하이 레벨(H)을 갖도록, 신호 라인들을 제어할 수 있다. 어드레스 입력 모드(Address Input) 동안, 낸드 인터페이스 회로(211_1f)는 쓰기 인에이블 신호(/WE)의 상승 에지(↑)에 동기하여, 데이터 신호들(DQx)을 통해 어드레스(ADDR)를 낸드 플래시 장치로 전송할 수 있다. 낸드 플래시 장치는 쓰기 인에이블 신호(/WE)의 상승 에지(↑)에 응답하여, 데이터 신호(DQx)로부터 어드레스(ADDR)를 식별할 수 있다. 일 실시 예에서, 어드레스(ADDR)는 낸드 플래시 장치의 물리 블록 어드레스에 대응하는 값일 수 있다.
데이터 입력(Data Input) 모드동안, 낸드 인터페이스 회로(211_1f)는, 클럭 래치 인에이블 신호(CLE)가 로우 레벨(L)을 갖고, 어드레스 래치 인에이블 신호(ALE)가 로우 레벨(L)을 갖고, 쓰기 인에이블 신호(H)가 하이 레벨(H)을 갖고, 읽기 인에이블 신호(/RE)가 하이 레벨(H)을 갖고, 데이터 스트로브 신호(DQS)가 하이 레벨(H) 및 로우 레벨(L) 사이를 토글하도록 신호 라인들을 제어할 수 있다. 데이터 입력(Data Input) 모드동안, 낸드 인터페이스 회로(211_1f)는 데이터 스트로브 신호(DQS)의 상승 에지(↑) 및 하강 에지(↓)에 동기하여, 데이터 신호(DQx)를 통해 데이터(DATA)를 낸드 플래시 장치로 전송할 수 있다. 낸드 플래시 장치는 데이터 스트로브 신호(DQS)의 상승 에지(↑) 및 하강 에지(↓)에 응답하여, 데이터 신호(DQx)로부터 데이터(DATA)를 식별할 수 있다.
데이터 출력(Data Output) 모드 동안, 낸드 인터페이스 회로(211_1f)는, 클럭 래치 인에이블 신호(CLE)가 로우 레벨(L)을 갖고, 어드레스 래치 인에이블 신호(ALE)가 로우 레벨(L)을 갖고, 쓰기 인에이블 신호(H)가 하이 레벨(H)을 갖고, 읽기 인에이블 신호(/RE)가 하이 레벨(H) 및 로우 레벨(L) 사이를 토글하도록 신호 라인들을 제어할 수 있다. 데이터 출력(Data Output) 모드동안, 낸드 플래시 장치는 읽기 인에이블 신호(/RE)에 응답하여, 하이 레벨(H) 및 로우 레벨(L) 사이를 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 낸드 플래시 장치는 데이터 스트로브 신호(DQS)의 상승 에지(↑) 및 하강 에지(↓)에 동기하여, 데이터 신호(DQx)를 통해 데이터(DATA)를 낸드 인터페이스 회로(211_1f)로 전송할 수 있다. 낸드 인터페이스 회로(211_1f)는 데이터 스트로브 신호(DQS)의 상승 에지(↑) 및 하강 에지(↓)에 응답하여, 데이터 신호(DQx)로부터 데이터(DATA)를 식별할 수 있다.
상술된 토글 인터페이스는 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다.
불휘발성 메모리(NVM1)는 CXL 스토리지 컨트롤러(211_1)의 제어에 따라, 사용자 데이터(UD1)를 저장 또는 출력할 수 있다. 불휘발성 메모리(NVM1)는 CXL 스토리지 컨트롤러(211_1)의 제어에 따라, 맵 데이터(MD1)를 저장 또는 출력할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM1)에 저장된 맵 데이터(MD1)는 불휘발성 메모리(NVM1)에 저장된 사용자 데이터(UD1) 전체에 대응하는 매핑 정보를 포함할 수 있다. 불휘발성 메모리(NVM1)에 저장된 맵 데이터(MD1)는 제1 CXL 스토리지(210_1)의 초기화 동작 시, CXL 메모리(220)에 저장될 수 있다.
제1 CXL 스토리지(210_1)는 CXL 메모리(220)와 직접(direct) 통신할 수 있다. 제1 CXL 스토리지(210_1)는 제2 포트(PT12)를 통해 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 예를 들어 제1 CXL 스토리지(210_1) 및 CXL 메모리(220)는 스위치, 라우터 등과 같은 중간 장치를 사용하지 않고, 직접적으로 연결될 수 있다.
제2 CXL 스토리지(210_2)는 CXL 스토리지 컨트롤러(211_2) 및 불휘발성 메모리(NVM2)를 포함할 수 있다. CXL 스토리지 컨트롤러(211_2)는 제1 CXL 스토리지 인터페이스 회로(211_2a), 프로세서(211_2b), RAM(211_2c), 플래시 변환 계층(FTL; flash translation layer)(211_2d), 에러 정정 코드(ECC; error correction code) 엔진(211_2e), 낸드 인터페이스 회로(211_2f), 및 제2 CXL 스토리지 인터페이스 회로(211_2g)를 포함할 수 있다.
제1 CXL 스토리지 인터페이스 회로(211_2a)는 호스트(201)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_2a)는 제1 포트(PT21)를 포함할 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_2a)는 제1 포트(PT21)를 통해 호스트(201)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제1 포트(PT21)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_2a)는 제1 인터페이스(IF1)를 통해 호스트(201a)와 통신할 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_2a)는 CXL 스위치(SW_CXL)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(211_2a)는 CXL 스위치(SW_CXL)를 통해, 호스트(201)와 통신할 수 있다.
제2 CXL 스토리지 인터페이스 회로(211_2g)는 CXL 메모리(220)와 연결될 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_2g)는 제2 포트(PT22)를 포함할 수 있다. 제2 포트(PT22)는 CXL 메모리(220)와 통신을 위한 전용 포트일 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_2g)는 제2 포트(PT22)를 통해 CXL 메모리(220)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제2 포트(PT22)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다. 제2 CXL 스토리지 인터페이스 회로(211_2g)는 제3 인터페이스(IF3)를 통해 CXL 메모리(220)와 통신할 수 있다.
RAM(211_2c)은 CXL 메모리(220)로부터 읽어진 맵 데이터(MD2) 또는 맵 데이터(MD2)의 일부를 임시 저장하도록 구성될 수 있다. ECC 엔진(211_2e)은 불휘발성 메모리(NVM2)에 저장될 사용자 데이터(UD2)에 대한 패리티 비트를 생성할 수 있고, 생성된 패리티 비트들은 사용자 데이터(UD2)와 함께, 불휘발성 메모리(NVM2)에 저장될 수 있다. 불휘발성 메모리(NVM2)로부터 사용자 데이터(UD2)가 독출되는 경우, ECC 엔진(211_2e)은 독출된 사용자 데이터(UD2)와 함께 불휘발성 메모리(NVM2)로부터 독출되는 패리티 비트들을 사용하여, 사용자 데이터(UD2)의 에러를 검출하고 정정할 수 있다.
불휘발성 메모리(NVM2)는 CXL 스토리지 컨트롤러(211_2)의 제어에 따라, 사용자 데이터(UD2)를 저장 또는 출력할 수 있다. 불휘발성 메모리(NVM2)는 CXL 스토리지 컨트롤러(211_2)의 제어에 따라, 맵 데이터(MD2)를 저장 또는 출력할 수 있다. 일 실시 예에서, 불휘발성 메모리(NVM2)에 저장된 맵 데이터(MD2)는 불휘발성 메모리(NVM2)에 저장된 사용자 데이터(UD2) 전체에 대응하는 매핑 정보를 포함할 수 있다. 불휘발성 메모리(NVM2)에 저장된 맵 데이터(MD2)는 제2 CXL 스토리지(210_2)의 초기화 동작 시, CXL 메모리(220)에 저장될 수 있다.
제2 CXL 스토리지(210_2)는 CXL 메모리(220)와 직접(direct) 통신할 수 있다. 제2 CXL 스토리지(210_2)는 제2 포트(PT22)를 통해 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 예를 들어 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 스위치, 라우터 등과 같은 중간 장치를 사용하지 않고, 직접적으로 연결될 수 있다.
도 3b에 도시된 프로세서(211_2b), RAM(211_2c), FTL(211_2d), ECC 엔진(211_2e), 낸드 인터페이스 회로(211_2f)는 각각 도 3b에 도시된 프로세서(211_1b), RAM(211_1c), FTL(211_1d), ECC 엔진(211_1e), 낸드 인터페이스 회로(211_1f)와 유사 또는 동일하므로, 자세한 설명은 생략된다.
CXL 메모리(220)는 CXL 메모리 컨트롤러(221) 및 버퍼 메모리(BFM)를 포함할 수 있다. CXL 메모리 컨트롤러(221)는 제1 CXL 메모리 인터페이스 회로(221a), 프로세서(221b), 메모리 관리자(221c), 버퍼 메모리 인터페이스 회로(221d), 및 제2 CXL 메모리 인터페이스 회로(221e)를 포함할 수 있다.
제1 CXL 메모리 인터페이스 회로(221a)는 제1 CXL 스토리지(210_1)와 연결될 수 있다. 제1 CXL 메모리 인터페이스 회로(221a)는 제1 포트(PT31)를 포함할 수 있다. 제1 포트(PT31)는 제1 CXL 스토리지(210_1)와 통신을 위한 전용 포트일 수 있다. 제1 CXL 메모리 인터페이스 회로(221a)는 제1 포트(PT31)를 통해 제1 CXL 스토리지(210_1)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제1 포트(PT31)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다.
제1 CXL 메모리 인터페이스 회로(221a)는 제1 CXL 스토리지(210_1)와 직접 통신할 수 있다. 제1 CXL 메모리 인터페이스 회로(221a)는 제2 인터페이스(IF2)를 통해 제1 CXL 스토리지(210_1)와 통신 수 있다. 제1 CXL 메모리 인터페이스 회로(221a)는 제1 CXL 스토리지(210_1) 이외의 컴퓨팅 시스템(200)의 장치들과 통신할 수 없다. 예를 들어, 제1 CXL 메모리 인터페이스 회로(221a)는 호스트(201)와 통신할 수 없다.
제2 CXL 메모리 인터페이스 회로(221e)는 제2 CXL 스토리지(210_2)와 연결될 수 있다. 제2 CXL 메모리 인터페이스 회로(221e)는 제2 포트(PT32)를 포함할 수 있다. 제2 포트(PT32)는 제2 CXL 스토리지(210_2)와 통신을 위한 전용 포트일 수 있다. 제2 CXL 메모리 인터페이스 회로(221e)는 제2 포트(PT32)를 통해 제2 CXL 스토리지(210_2)와 요청, 데이터, 응답 또는 신호 등과 같은 정보를 송수신할 수 있다. 제2 포트(PT32)는 CXL 또는 PCIe 규약에 따른 물리 신호를 송수신하도록 구성된 회로 또는 물리 계층일 수 있다.
제2 CXL 메모리 인터페이스 회로(221e)는 제2 CXL 스토리지(210_2)와 직접 통신할 수 있다. 제2 CXL 메모리 인터페이스 회로(221e)는 제3 인터페이스(IF3)를 통해 제2 CXL 스토리지(210_2)와 통신 수 있다. 제2 CXL 메모리 인터페이스 회로(221e)는 제2 CXL 스토리지(210_2) 이외의 컴퓨팅 시스템(200)의 장치들과 통신할 수 없다. 예를 들어, 제2 CXL 메모리 인터페이스 회로(221e)는 호스트(201)와 통신할 수 없다.
프로세서(221b)는 CXL 메모리 컨트롤러(221)의 제반 동작을 제어하도록 구성될 수 있다. 메모리 관리자(221c)는 버퍼 메모리(BFM)를 관리하도록 구성될 수 있다. 예를 들어, 메모리 관리자(221c)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)로부터 액세스되는 메모리 어드레스(예를 들어, 논리 어드레스 또는 가상 어드레스)를 버퍼 메모리(BFM)에 대한 물리 어드레스로 변환하도록 구성될 수 있다. 일 실시 예에서, 메모리 어드레스는 CXL 메모리(220)의 저장 영역을 관리하기 위한 어드레스일 수 있으며, 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 의해 지정되고 관리되는 논리 어드레스 또는 가상 어드레스일 수 있다.
버퍼 메모리 인터페이스 회로(221d)는 버퍼 메모리(BFM)에 데이터가 저장되거나 또는 버퍼 메모리(BFM)로부터 데이터가 독출되도록, 버퍼 메모리(BFM)를 제어할 수 있다. 일 실시 예에서, 버퍼 메모리 인터페이스 회로(221d)는 DDR 인터페이스, LPDDR 인터페이스 등과 같은 표준 규약을 준수하도록 구현될 수 있다.
버퍼 메모리(BFM)는 CXL 메모리 컨트롤러(221)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 버퍼 메모리(BFM)는 제1 CXL 스토리지(210_1)에서 사용되는 맵 데이터(MD1) 또는 제2 CXL 스토리지(210_2)에서 사용되는 맵 데이터(MD2)를 저장하도록 구성될 수 있다. 맵 데이터(MD1, MD2)는 컴퓨팅 시스템(200)의 초기화 또는 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 초기화 동작에서, 제1 및 제2 CXL 스토리지들(210_1, 210_2)로부터 CXL 메모리(220)로 전달될 수 있다.
CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 의해 제어 또는 관리될 수 있다. 예를 들어, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)에 대한 마스터(master) 장치로서 동작하고, CXL 메모리(220)는 슬레이브(slave) 장치로서 동작할 수 있다.
상술된 바와 같이, 본 개시의 실시 예에 따른 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 불휘발성 메모리(NVM1, NVM2)를 관리하는데 필요한 맵 데이터(MD1, MD2)를 직접 연결된 CXL 메모리(220)에 저장할 수 있다. 이후에, 제1 및 제2 CXL 스토리지들(210_1, 210_2)이 호스트(201)의 요청에 따라 읽기 동작을 수행할 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 제2 또는 제3 인터페이스(IF2, IF3)를 통해 CXL 메모리(220)로부터 맵 데이터(MD1, MD2)의 적어도 일부를 읽고, 읽은 맵 데이터(MD1, MD2)를 기반으로 읽기 동작을 수행할 수 있다. 또는 제1 및 제2 CXL 스토리지들(210_1, 210_2)이 호스트(201)의 요청에 따라 쓰기 동작을 수행할 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 불휘발성 메모리(NVM1, NVM2)에 대한 쓰기 동작을 수행하고, 맵 데이터(MD1, MD2)를 갱신할 수 있다. 이 때, 갱신된 맵 데이터(MD1, MD2)는 CXL 스토리지 컨트롤러(211_1, 211_2)의 RAM(211_1c, 211_2c)에 우선 저장될 수 있고, RAM(211_1c, 211_2c)에 저장된 맵 데이터(MD1, MD2)는 제2 또는 제3 인터페이스(IF2, IF3)를 통해, CXL 메모리(220)의 버퍼 메모리(BFM)로 전달되고, 갱신될 수 있다.
일 실시 예에서, CXL 메모리(220)의 버퍼 메모리(BFM)의 영역 중 적어도 일부 또는 전체 영역은 제1 및 제2 CXL 스토리지들(210_1, 210_2)을 위한 전용 영역(dedicated area)으로 할당될 수 있다. CXL 메모리(220)의 전체 영역은 호스트(201)에 의해 액세스 불가능한 영역일 수 있다.
일 실시 예에서, 호스트(201) 및 제1 CXL 스토리지(210_1)는 입출력 프로토콜인 CXL.io를 사용하여 서로 통신할 수 있다. 호스트(201) 및 제2 CXL 스토리지(210_2)는 입출력 프로토콜인 CXL.io를 사용하여 서로 통신할 수 있다. CXL.io는 PCIe-기반의 비-일관성 입출력 프로토콜을 가질 수 있다. 호스트(201) 및 제1 CXL 스토리지(210_1)는 CXL.io를 사용하여, 서로 사용자 데이터 또는 다양한 정보를 주고 받을 수 있다. 호스트(201) 및 제2 CXL 스토리지(210_2)는 CXL.io를 사용하여, 서로 사용자 데이터 또는 다양한 정보를 주고 받을 수 있다.
일 실시 예에서, 제1 CXL 스토리지(210_1) 및 CXL 메모리(220)는 메모리 액세스 프로토콜(memory access protocol)인 CXL.mem를 사용하여 서로 통신할 수 있다. 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 CXL.mem를 사용하여 서로 통신할 수 있다. CXL.mem은 메모리를 액세스를 지원하는 메모리 액세스 프로토콜일 수 있다. 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 CXL.mem를 사용하여 CXL 메모리(220)의 일부 영역(예를 들어, 맵 데이터(MD1, MD2)가 저장된 영역 또는, CXL 스토리지 전용 영역)을 액세스할 수 있다. 즉, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 CXL.mem를 사용하여 블록 단위 또는 페이지 단위보다 작은 단위(예를 들어, 바이트 단위 또는 캐시 라인 단위)로 CXL 메모리(220)에 저장된 데이터를 액세스할 수 있다. 이에 따라, CXL 메모리(220)에 대한 읽기 성능이 향상될 수 있다. 상술된 액세스 타입(CXL.io, CXL.mem 등)은 일부 예시이며, 본 개시의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 CXL 인터페이스에 기반된 물리 포트(예를 들어, PCIe 물리 포트)에 장착될 수 있다. 일 실시 예에서, 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 E1.S, E1.L, E3.S, E3.L, PCIe AIC (CEM) 폼팩터를 기반으로 구현될 수 있다. 또는 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 U.2 폼팩터, M.2 폼팩터 또는 다른 다양한 형태의 PCIe 기반의 폼팩터, 또는 다른 다양한 형태의 소형 폼팩터를 기반으로 구현될 수 있다. 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 다양한 형태의 폼팩터로 구현될 수 있으며, 물리 포트에 장착 또는 제거 가능한 핫 플러그(hot-plug) 기능을 지원할 수 있다.
상술된 바와 같이, 제1 CXL 스토리지(210_1)는 제1 포트(PT11) 및 제2 포트(PT12)를 포함하고, 제2 CXL 스토리지(210_2)는 제1 포트(PT21) 및 제2 포트(PT22)를 포함할 수 있다. CXL 메모리(220)는 제1 포트(PT31) 및 제2 포트(PT32)를 포함할 수 있다. 즉, 제1, CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220) 각각은 멀티 포트를 가질 수 있다. 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 제2 포트(PT12, PT22)를 통해 CXL 메모리(220)와 통신할 수 있다. 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 CXL Direct로 연결될 수 있다. 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 CXL 전용 레인(Lane)(또는, 독점적인 링크(Link))을 사용함으로써, 성능을 향상시킬 수 있다.
도 4는 도 3b의 컴퓨팅 시스템의 초기화 동작 또는 파워-업 동작을 보여주는 순서도이다. 도 3b 및 도 4를 참조하면, PUP-S10 단계에서, 컴퓨팅 시스템(200)이 파워-업될 수 있다. 컴퓨팅 시스템(200)이 파워-업된 경우, 호스트(201)는 파워-업 또는 초기화 개시에 대한 정보를 제1 및 제2 CXL 스토리지들(210_1, 210_2)로 전송할 수 있다. 파워-업 또는 초기화 개시에 대한 정보에 응답하여, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 초기화 동작을 수행할 수 있다. 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 파워-업 또는 초기화 개시에 대한 정보를 CXL 메모리(220)로 전송할 수 있다. 파워-업 또는 초기화 개시 정보에 응답하여, CXL 메모리(220)는 초기화 동작을 수행할 수 있다.
PUP-S11 단계에서, 제1 CXL 스토리지(210_1)는 스토리지 용량(즉, 불휘발성 메모리(NVM1)의 용량)을 확인할 수 있다. 예를 들어, 제1 CXL 스토리지(210_1)는 PUP-S10 단계의 파워-업 또는 초기화 개시에 대한 정보에 응답하여, 불휘발성 메모리(NVM1)의 저장 용량을 확인할 수 있다.
일 실시 예에서, 제1 CXL 스토리지(210_1)는 물리 포트의 연결 상태를 확인할 수 있다. 예를 들어, 제1 CXL 스토리지(210_1)는 제2 포트(PT12)가 외부 장치와 연결되었는지 여부를 확인할 수 있다. 제1 CXL 스토리지(210_1)는 제2 포트(PT12)의 연결 상태(예를 들어, CXL 메모리(220)와 연결 상태)를 확인할 수 있다.
PUP-S12 단계에서, 제2 CXL 스토리지(210_2)는 스토리지 용량(즉, 불휘발성 메모리(NVM2)의 용량)을 확인할 수 있다. 예를 들어, 제2 CXL 스토리지(210_2)는 PUP-S10 단계의 파워-업 또는 초기화 개시에 대한 정보에 응답하여, 불휘발성 메모리(NVM2)의 저장 용량을 확인할 수 있다.
일 실시 예에서, 제2 CXL 스토리지(210_2)는 물리 포트의 연결 상태를 확인할 수 있다. 예를 들어, 제2 CXL 스토리지(210_2)는 제2 포트(PT22)가 외부 장치와 연결되었는지 여부를 확인할 수 있다. 제2 CXL 스토리지(210_2)는 제2 포트(PT22)의 연결 상태(예를 들어, CXL 메모리(220)와 연결 상태)를 확인할 수 있다.
PUP-S13 단계에서, CXL 메모리(220)는 메모리 용량(즉, 버퍼 메모리(BFM)의 용량)을 확인할 수 있다. 예를 들어, CXL 메모리(220)는 PUP-S10 단계의 파워-업 또는 초기화 개시에 대한 정보에 응답하여, 버퍼 메모리(BFM)의 용량을 확인할 수 있다.
일 실시 예에서, CXL 메모리(220)는 지원 가능한 CXL 인터페이스의 포트에 관한 정보를 확인할 수 있다. 예를 들어, CXL 메모리(220)는 지원 가능한 CXL 인터페이스에 기반된 물리 포트, 물리 포트들의 개수 등을 확인할 수 있다. CXL 메모리(220)는 제1 및 제2 포트들(PT31, PT32)을 확인할 수 있다.
일 실시 예에서, CXL 메모리(220)는 복수의 물리 포트들의 연결 상태를 확인할 수 있다. 예를 들어, CXL 메모리(220)는 물리 포트들 각각에 외부 장치들이 연결되었는지 여부를 확인할 수 있다. CXL 메모리(220)는 제1 포트(PT31)의 연결 상태(예를 들어, 제1 CXL 스토리지(210_1)와 연결 상태), 및 제2 포트(PT32)의 연결 상태(예를 들어, 제2 CXL 스토리지(210_2)와 연결 상태)를 확인할 수 있다.
호스트(201)는 PUP-S21 단계 및 PUP-S22 단계의 동작들을 통해, 제1 CXL 스토리지(210_1)의 정보를 인식할 수 있다. 예를 들어, PUP-S21 단계에서, 호스트(201)는 제1 CXL 스토리지(210_1)의 장치 정보를 인식하기 위한 제1 장치 정보 요청(REQ_id1)을 CXL 호스트 인터페이스 회로(101a)(또는, 포트(PT4))를 통해 발행할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제1 장치 정보 요청(REQ_id1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 장치 정보 요청(REQ_id1)은 CXL 스위치(SW_CXL)로 전달될 수 있다. CXL 스위치(SW_CXL)는 제1 장치 정보 요청(REQ_id1)의 목표인 제1 CXL 스토리지(210_1)로 제1 장치 정보 요청(REQ_id1)을 전달할 수 있다. 제1 CXL 스토리지(210_1)는 제1 포트(PT11)(또는, 제1 CXL 스토리지 인터페이스 회로(211_1a))를 통해 제1 장치 정보 요청(REQ_id1)을 수신할 수 있다.
PUP-S22 단계에서, 제1 CXL 스토리지(210_1)는 수신된 제1 장치 정보 요청(REQ_id1)에 응답하여, 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제1 장치 정보 응답(REP_id1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제1 인터페이스(IF1)를 통해 호스트(201)로 제1 장치 정보 응답(REP_id1)을 전송할 수 있다. 제1 장치 정보 응답(REP_id1)은 CXL 스위치(SW_CXL)로 전달될 수 있다. CXL 스위치(SW_CXL)는 제1 장치 정보 응답(REP_id1)의 목표인 호스트(201)로 제1 장치 정보 응답(REP_id1)을 전달할 수 있다.
호스트(201)는 수신된 제1 장치 정보 응답(REP_id1)에 응답하여, 제1 CXL 스토리지(210_1)의 장치 정보를 식별할 수 있다. 일 실시 예에서, 제1 장치 정보 응답(REP_id1)은 제1 CXL 스토리지(210_1)의 장치 타입, 저장 용량 등에 대한 정보를 포함할 수 있다.
호스트(201)는 PUP-S31 단계 및 PUP-S32 단계의 동작들을 통해, 제2 CXL 스토리지(210_2)의 정보를 인식할 수 있다. 예를 들어, PUP-S31 단계에서, 호스트(201)는 제2 CXL 스토리지(210_2)의 장치 정보를 인식하기 위한 제2 장치 정보 요청(REQ_id2)을 CXL 호스트 인터페이스 회로(101a)(또는, 포트(PT4))를 통해 발행할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제2 장치 정보 요청(REQ_id2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 장치 정보 요청(REQ_id2)은 CXL 스위치(SW_CXL)로 전달될 수 있다. CXL 스위치(SW_CXL)는 제2 장치 정보 요청(REQ_id2)의 목표인 제2 CXL 스토리지(210_2)로 제2 장치 정보 요청(REQ_id2)을 전달할 수 있다. 제2 CXL 스토리지(210_2)는 제1 포트(PT21)(또는, 제1 CXL 스토리지 인터페이스 회로(211_2a))를 통해 제2 장치 정보 요청(REQ_id2)을 수신할 수 있다.
PUP-S32 단계에서, 제2 CXL 스토리지(210_2)는 수신된 제2 장치 정보 요청(REQ_id2)에 응답하여, 제1 CXL 스토리지 인터페이스 회로(211_2a)(또는, 제1 포트(PT21))를 통해 제2 장치 정보 응답(REP_id2)을 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제1 인터페이스(IF1)를 통해 호스트(201)로 제2 장치 정보 응답(REP_id2)을 전송할 수 있다. 제2 장치 정보 응답(REP_id2)은 CXL 스위치(SW_CXL)로 전달될 수 있다. CXL 스위치(SW_CXL)는 제2 장치 정보 응답(REP_id2)의 목표인 호스트(201)로 제2 장치 정보 응답(REP_id2)을 전달할 수 있다.
호스트(201)는 수신된 제2 장치 정보 응답(REP_id2)에 응답하여, 제2 CXL 스토리지(210_2)의 장치 정보를 식별할 수 있다. 일 실시 예에서, 제2 장치 정보 응답(REP_id2)은 제2 CXL 스토리지(210_2)의 장치 타입, 저장 용량 등에 대한 정보를 포함할 수 있다.
제1 및 제2 CXL 스토리지들(210_1, 210_2)는 PUP-S41 단계 내지 PUP-S44 단계의 동작들을 통해, CXL 메모리(220)의 정보를 인식할 수 있다. 예를 들어, PUP-S41 단계에서, 제1 CXL 스토리지(210_1)는 CXL 메모리(220)의 장치 정보를 인식하기 위한 제3 장치 정보 요청(REQ_id3)을 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해 발행할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제3 장치 정보 요청(REQ_id3)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제1 포트(PT31)(또는, 제1 CXL 메모리 인터페이스 회로(221a))를 통해 제3 장치 정보 요청(REQ_id3)을 수신할 수 있다.
PUP-S42 단계에서, CXL 메모리(220)는 수신된 제3 장치 정보 요청(REQ_id3)에 응답하여, CXL 메모리 인터페이스 회로(221a)를 통해 제3 장치 정보 응답(REP_id3)을 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제3 장치 정보 응답(REP_id3)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해 제3 장치 정보 응답(REP_id3)을 수신할 수 있다.
제1 CXL 스토리지(210_1)는 수신된 제3 장치 정보 응답(REP_id3)에 응답하여, CXL 메모리(220)의 장치 정보를 식별할 수 있다. 일 실시 예에서, 제3 장치 정보 응답(REP_id3)은 CXL 메모리(220)의 장치 타입, 저장 용량 등에 대한 정보를 포함할 수 있다.
예를 들어, PUP-S43 단계에서, 제2 CXL 스토리지(210_2)는 CXL 메모리(220)의 장치 정보를 인식하기 위한 제4 장치 정보 요청(REQ_id4)을 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는, 제2 포트(PT22))를 통해 발행할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제4 장치 정보 요청(REQ_id4)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제2 포트(PT32)(또는, 제2 CXL 메모리 인터페이스 회로(221e))를 통해 제4 장치 정보 요청(REQ_id4)을 수신할 수 있다.
PUP-S44 단계에서, CXL 메모리(220)는 수신된 제4 장치 정보 요청(REQ_id4)에 응답하여, 제2 CXL 메모리 인터페이스 회로(221e)를 통해 제4 장치 정보 응답(REP_id4)을 출력할 수 있다. CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 제4 장치 정보 응답(REP_id4)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 CXL 스토리지(210_2)는 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는, 제2 포트(PT22))를 통해 제4 장치 정보 응답(REP_id4)을 수신할 수 있다.
제2 CXL 스토리지(210_2)는 수신된 제4 장치 정보 응답(REP_id4)에 응답하여, CXL 메모리(220)의 장치 정보를 식별할 수 있다. 일 실시 예에서, 제4 장치 정보 응답(REP_id4)은 CXL 메모리(220)의 장치 타입, 저장 용량 등에 대한 정보를 포함할 수 있다.
상술된 바와 같이, 호스트(201)는 PUP-S21 및 PUP-S22 단계의 동작들을 통해 제1 CXL 스토리지(210_1)의 장치 타입(예를 들어, 스토리지인지), 용량 등에 대한 정보를 식별할 수 있다. 호스트(201)는 PUP-S31 및 PUP-S32 단계의 동작들을 통해 제2 CXL 스토리지(210_2)의 장치 타입(예를 들어, 스토리지인지), 용량 등에 대한 정보를 식별할 수 있다. 제1 CXL 스토리지(210_1)는 PUP-S41 및 PUP-S42 단계의 동작들을 통해 CXL 메모리(220)의 장치 타입(예를 들어, 메모리인지), 용량 등에 대한 정보를 식별할 수 있다. 제2 CXL 스토리지(210_2)는 PUP-S43 및 PUP-S44 단계의 동작들을 통해 CXL 메모리(220)의 장치 타입(예를 들어, 메모리인지), 용량 등에 대한 정보를 식별할 수 있다. 즉, 호스트(201)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)만 인식할 뿐, CXL 메모리(220)를 인식할 수 없다. CXL 메모리(220)는 호스트(201)와 직접 통신할 수 없다. CXL 메모리(220)는 호스트(201)와 독립적인 장치일 수 있다.
제1 및 제2 CXL 스토리지들(210_1, 210_2)은 PUP-S51 단계 내지 PUP-S61 단계의 동작들을 통해, CXL 메모리(220)의 적어도 일부 영역을 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 대한 전용 영역으로 할당할 수 있다. 또는 CXL 메모리(220)의 전체 영역을 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 대한 전용 영역으로 할당할 수 있다.
예를 들어, PUP-S51 단계에서, 제1 CXL 스토리지(210_1)는 제1 메모리 할당 요청(REQ_mem_alc1)을 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는 제2 포트(PT12))를 통해 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제1 메모리 할당 요청(REQ_mem_alc1)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제1 CXL 메모리 인터페이스 회로(221a)(또는 제1 포트(PT31))를 통해 제1 메모리 할당 요청(REQ_mem_alc1)을 수신할 수 있다. 일 실시 예에서, 제1 메모리 할당 요청(REQ_mem_alc1)은 CXL 메모리(220)의 영역들 중 제1 CXL 스토리지(210_1)의 전용 영역으로 사용될 영역에 대한 할당 요청을 가리킬 수 있다.
PUP-S52 단계에서, 제2 CXL 스토리지(210_2)는 제2 메모리 할당 요청(REQ_mem_alc2)을 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는 제2 포트(PT22))를 통해 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제2 메모리 할당 요청(REQ_mem_alc2)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제2 CXL 메모리 인터페이스 회로(221e)(또는 제2 포트(PT32))를 통해 제2 메모리 할당 요청(REQ_mem_alc2)을 수신할 수 있다. 일 실시 예에서, 제2 메모리 할당 요청(REQ_mem_alc2)은 CXL 메모리(220)의 영역들 중 제2 CXL 스토리지(210_2)의 전용 영역으로 사용될 영역에 대한 할당 요청을 가리킬 수 있다.
PUP-S53 단계에서, CXL 메모리(220)는 제1 및 제2 메모리 할당 요청들(REQ_mem_alc1, REQ_mem_alc2)에 응답하여, CXL 메모리(220)의 영역 중 적어도 일부를 제1 및 제2 CXL 스토리지들(210_1, 210_2)을 위한 전용 영역으로 할당할 수 있다. 예를 들어, CXL 메모리(220)는 미리 결정된 우선 순위를 기반으로 CXL 메모리(220)의 적어도 일부 영역을 복수의 CXL 스토리지들(210_1, 210_2)의 전용 영역으로 할당할 수 있다.
일 실시 예에서, CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 저장 용량을 기반으로 제1 및 제2 CXL 스토리지들(210_1, 210_2)에서 요구되는 버퍼 용량을 결정할 수 있다. CXL 메모리(220)는 CXL 메모리(220)의 영역 중, 결정된 버퍼 용량에 대응하는 영역을 제1 및 제2 CXL 스토리지들(210_1, 210_2)을 위한 전용 영역으로 할당할 수 있다.
일 실시 예에서, CXL 메모리(220)는 결정된 버퍼 용량을 기반으로 물리 포트 별 어드레스 정보를 설정할 수 있다. 예를 들어, CXL 메모리(220)는 제1 CXL 스토리지(210_1)에 대한 전용 영역으로 제1 버퍼 용량으로 결정하고, 제2 CXL 스토리지(210_2)에 대한 전용 영역으로 제2 버퍼 용량으로 결정할 수 있다. CXL 메모리(220)는 제1 버퍼 용량에 대응하는 제1 어드레스 범위를 제1 포트(PT31)에 할당하고, 제2 버퍼 용량에 대응하는 제2 어드레스 범위를 제2 포트(PT32)에 할당할 수 있다.
PUP-S54 단계에서, CXL 메모리(220)는 제1 메모리 할당 응답(REP_mem_alc1)을 제1 CXL 메모리 인터페이스 회로(221a)(또는 제1 포트(PT31))를 통해 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제1 메모리 할당 응답(REP_mem_alc1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는 제2 포트(PT12))를 통해 수신할 수 있다. 일 실시 예에서, 제1 메모리 할당 응답(REP_mem_alc1)은 CXL 메모리(220)의 장치 식별자, CXL 메모리(220)의 영역 중 제1 CXL 스토리지(210_1)를 위한 전용 영역으로 할당된 영역의 메모리 어드레스 정보(예를 들어, 논리 어드레스 범위, 가상 어드레스 범위 등) 등에 대한 정보를 포함할 수 있다. 예를 들어, 제1 CXL 스토리지(210_1)는 CXL 메모리(220)의 영역 중 제1 CXL 스토리지(210_1)를 위한 전용 영역을 독점할 수 있다. 즉, 제1 CXL 스토리지(210_1)만 CXL 메모리(220)의 영역 중 제1 CXL 스토리지(210_1)를 위한 전용 영역을 액세스할 수 있다.
제1 CXL 스토리지(210_1)는 제1 메모리 할당 응답(REP_mem_alc1)을 기반으로, CXL 메모리(220)의 영역 중 제1 CXL 스토리지(210_1)에 대한 전용 영역을 식별할 수 있다.
PUP-S55 단계에서, CXL 메모리(220)는 제2 메모리 할당 응답(REP_mem_alc2)을 제2 CXL 메모리 인터페이스 회로(221e)(또는 제2 포트(PT32))를 통해 출력할 수 있다. CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 제2 메모리 할당 응답(REP_mem_alc2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 CXL 스토리지(210_2)는 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는 제2 포트(PT22))를 통해 수신할 수 있다. 일 실시 예에서, 제2 메모리 할당 응답(REP_mem_alc2)은 CXL 메모리(220)의 장치 식별자, CXL 메모리(220)의 영역 중 제2 CXL 스토리지(210_2)를 위한 전용 영역으로 할당된 영역의 메모리 어드레스 정보(예를 들어, 논리 어드레스 범위, 가상 어드레스 범위 등) 등에 대한 정보를 포함할 수 있다. 예를 들어, 제2 CXL 스토리지(210_2)는 CXL 메모리(220)의 영역 중 제2 CXL 스토리지(210_2)를 위한 전용 영역을 독점할 수 있다. 즉, 제2 CXL 스토리지(210_2)만 CXL 메모리(220)의 영역 중 제2 CXL 스토리지(210_2)를 위한 전용 영역을 액세스할 수 있다.
제2 CXL 스토리지(210_2)는 제2 메모리 할당 응답(REP_mem_alc2)을 기반으로, CXL 메모리(220)의 영역 중 제2 CXL 스토리지(210_2)에 대한 전용 영역을 식별할 수 있다.
PUP-S56 단계에서, 제1 CXL 스토리지(210_1)는 제1 쓰기 요청(REQ_WR1)을 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는 제2 포트(PT12))를 통해 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제1 쓰기 요청(REQ_WR1)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제1 CXL 메모리 인터페이스 회로(221a)(또는 제1 포트(PT31))를 통해 제1 쓰기 요청(REQ_WR1)을 수신할 수 있다. CXL 메모리(220)는 제1 쓰기 요청(REQ_WR1)에 응답하여, 쓰기 동작을 수행할 수 있다.
PUP-S57 단계에서, 제2 CXL 스토리지(210_2)는 제2 쓰기 요청(REQ_WR2)을 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는 제2 포트(PT22))를 통해 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제2 쓰기 요청(REQ_WR2)을 CXL 메모리(220)로 전송할 수 있다. CXL 메모리(220)는 제2 CXL 메모리 인터페이스 회로(221e)(또는 제2 포트(PT32))를 통해 제2 쓰기 요청(REQ_WR2)을 수신할 수 있다. CXL 메모리(220)는 제2 쓰기 요청(REQ_WR2)에 응답하여, 쓰기 동작을 수행할 수 있다.
PUP-S58 단계에서, CXL 메모리(220)는 쓰기 요청이 완료되었음을 알리는 제1 쓰기 응답(REP_WR1)을 제1 CXL 메모리 인터페이스 회로(221a)(또는 제1 포트(PT31))를 통해 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제1 쓰기 응답(REP_WR1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는 제2 포트(PT12))를 통해 제1 쓰기 응답(REP_WR1)을 수신할 수 있다. 제1 CXL 스토리지(210_1)는 제1 쓰기 응답(REP_WR1)에 응답하여, CXL 메모리(220)에 대한 쓰기 동작이 완료되었음을 인지할 수 있다.
일 실시 예에서, 제1 쓰기 요청(REQ_WR1)은 제1 CXL 스토리지(210_1)의 불휘발성 메모리(NVM1)에 저장된 맵 데이터(MD1)를 CXL 메모리(220)의 전용 영역에 저장하기 위한 요청일 수 있다. 즉, 제1 쓰기 요청(REQ_WR1)은 맵 데이터(MD1) 및 전용 영역에 대한 어드레스 정보를 포함할 수 있다. PUP-S56 단계 및 PUP-S58 단계의 동작들을 통해, 제1 CXL 스토리지(210_1)에 저장된 맵 데이터(MD1)가 CXL 메모리(220)의 전용 영역에 저장될 수 있다.
PUP-S59 단계에서, CXL 메모리(220)는 쓰기 요청이 완료되었음을 알리는 제2 쓰기 응답(REP_WR2)을 제2 CXL 메모리 인터페이스 회로(221e)(또는 제2 포트(PT32))를 통해 출력할 수 있다. CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 제2 쓰기 응답(REP_WR2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 CXL 스토리지(210_2)는 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는 제2 포트(PT22))를 통해 제2 쓰기 응답(REP_WR2)을 수신할 수 있다. 제2 CXL 스토리지(210_2)는 제2 쓰기 응답(REP_WR2)에 응답하여, CXL 메모리(220)에 대한 쓰기 동작이 완료되었음을 인지할 수 있다.
일 실시 예에서, 제2 쓰기 요청(REQ_WR2)은 제2 CXL 스토리지(210_2)의 불휘발성 메모리(NVM2)에 저장된 맵 데이터(MD2)를 CXL 메모리(220)의 전용 영역에 저장하기 위한 요청일 수 있다. 즉, 제2 쓰기 요청(REQ_WR2)은 맵 데이터(MD2) 및 전용 영역에 대한 어드레스 정보를 포함할 수 있다. PUP-S57 단계 및 PUP-S59 단계의 동작들을 통해, 제2 CXL 스토리지(210_2)에 저장된 맵 데이터(MD2)가 CXL 메모리(220)의 전용 영역에 저장될 수 있다.
PUP-S60 단계에서, 제1 CXL 스토리지(210_1)는 제1 알림 정보(ACK_md1)를 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는 제1 포트(PT11))를 통해 출력할 수 있다. CXL 스위치(SW_CXL)는 제1 알림 정보(ACK_md1)를 호스트(201)로 전달할 수 있다. 호스트(201)는 제1 알림 정보(ACK_md1)에 응답하여, 제1 CXL 스토리지(210_1)가 맵 데이터(MD1)를 CXL 메모리(220)로 모두 저장했음을 인지할 수 있다.
PUP-S61 단계에서, 제2 CXL 스토리지(210_2)는 제2 알림 정보(ACK_md2)를 제1 CXL 스토리지 인터페이스 회로(211_2a)(또는 제1 포트(PT21))를 통해 출력할 수 있다. CXL 스위치(SW_CXL)는 제2 알림 정보(ACK_md2)를 호스트(201)로 전달할 수 있다. 호스트(201)는 제2 알림 정보(ACK_md2)에 응답하여, 제2 CXL 스토리지(210_2)가 맵 데이터(MD2)를 CXL 메모리(220)로 모두 저장했음을 인지할 수 있다. 이후에, 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 CXL 메모리(120)는 노멀 동작(예를 들어, 읽기 동작, 쓰기 동작 등)을 수행할 수 있다.
상술된 바와 같이, CXL 메모리(220)는 CXL 메모리(220)의 적어도 일부 영역을 제1 및 제2 CXL 스토리지들(210_1, 210_2)을 위한 전용 영역으로 할당할 수 있다. 일 실시 예에서, CXL 메모리(220)는 미리 결정된 우선 순위를 기반으로 버퍼 용량을 할당할 수 있다. CXL 메모리(220)는 복수의 CXL 스토리지들(210_1, 210_2)에 대하여 우선 순위를 설정할 수 있다. 예를 들어, CXL 메모리(220)는 제1 CXL 스토리지(210_1)에 높은 우선 순위를 할당하고, 제2 CXL 스토리지(210_2)에 중간 우선 순위를 할당할 수 있다.
제1 메모리 할당 요청(REQ_mem_alc1)은 제1 CXL 스토리지(210_1)에서 요구되는 제1 버퍼 용량 정보를 포함할 수 있다. 제2 메모리 할당 요청(REQ_mem_alc2)은 제2 CXL 스토리지(210_2)에서 요구되는 제2 버퍼 용량 정보를 포함할 수 있다.
예를 들어, CXL 메모리(220)는 제1 CXL 스토리지(210_1)가 높은 우선 순위를 가지므로, 제1 버퍼 용량 정보에 대응하는 영역을 제1 CXL 스토리지(210_1)를 위한 제1 전용 영역으로 우선 할당할 수 있다. 이후에 CXL 메모리(220)는 전체 영역 중 제1 전용 영역을 제외한 나머지 영역 중에서 제2 버퍼 용량 정보에 대응하는 영역을 제2 CXL 스토리지(210_2)를 위한 제2 전용 영역으로 할당할 수 있다.
제1 버퍼 용량 정보 및 제2 버퍼 용량 정보의 합 보다 CXL 메모리(220)의 용량이 큰 경우, CXL 메모리(220)는 제1 CXL 스토리지(210_1) 및 제2 CXL 스토리지(210_2)에서 요구되는 버퍼 용량에 대응하는 영역을 제1 및 제2 전용 영역들로 할당할 수 있다. 그러나, 제1 버퍼 용량 정보 및 제2 버퍼 용량 정보의 합 보다 CXL 메모리(220)의 용량이 작은 경우, 제1 CXL 스토리지(210_1)는 우선 순위가 높으므로, CXL 메모리(220)는 제1 버퍼 용량 정보에 대응하는 영역을 제1 전용 영역으로 할당하고, CXL 메모리(220)는 제2 버퍼 용량 정보보다 작은 영역을 제2 전용 영역으로 할당할 수 있다.
도 5는 도 3b의 컴퓨팅 시스템의 맵 데이터 저장 동작을 설명하기 위한 도면이다. 설명의 편의 및 도면의 간결성을 위해, 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)의 구성 요소들은 개념적으로 도시되며, 일부 불필요한 구성 요소들은 생략된다.
도 3b 내지 도 5를 참조하면, CXL 메모리(220)는 CXL 메모리(220)의 적어도 일부 영역을 제1 CXL 스토리지(210_1) 및 제2 CXL 스토리지(210_2)를 위한 전용 영역으로 할당할 수 있다. 이 경우, CXL 메모리(220)의 제1 전용 영역(DA1)은 제1 CXL 스토리지(210_1)에 의해 액세스될 수 있으며, 제1 CXL 스토리지(210_1)의 맵 데이터(MD1)를 저장하도록 사용된다. CXL 메모리(220)의 제2 전용 영역(DA2)은 제2 CXL 스토리지(210_2)에 의해 액세스될 수 있으며, 제2 CXL 스토리지(210_2)의 맵 데이터(MD2)를 저장하도록 사용된다.
예를 들어, 도 5에 도시된 바와 같이, 제1 CXL 스토리지(210_1)의 불휘발성 메모리(NVM1)는 사용자 데이터(UD1) 및 맵 데이터(MD1)를 저장하고, 제2 CXL 스토리지(210_2)의 불휘발성 메모리(NVM2)는 사용자 데이터(UD2) 및 맵 데이터(MD2)를 저장할 수 있다. 앞서 설명된 바와 같이, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 별도의 버퍼 메모리를 포함하지 않기 때문에, 맵 데이터(MD1, MD2)가 저장될 버퍼 영역을 필요로 할 수 있으며, 본 개시의 실시 예에 따라, 제1 CXL 스토리지(210_1)의 맵 데이터(MD1)는 CXL 메모리(220)의 제1 전용 영역(DA1)에 저장되고, 제2 CXL 스토리지(210_2)의 맵 데이터(MD2)는 CXL 메모리(220)의 제2 전용 영역(DA2)에 저장될 수 있다. 이 경우, CXL 메모리(220)의 제1 전용 영역(DA1)은 제2 인터페이스(IF2)를 통해, 제1 CXL 스토리지(210_1)에 의해 액세스될 수 있다. CXL 메모리(220)의 제2 전용 영역(DA2)은 제3 인터페이스(IF3)를 통해, 제2 CXL 스토리지(210_2)에 의해 액세스될 수 있다.
일 실시 예에서, CXL 메모리(220)의 저장 공간은 CXL 메모리 영역(CMA)으로 도시된다. 제1 전용 영역(DA1)은 제1 버퍼 용량을 가지며, 제2 전용 영역(DA2)은 제2 버퍼 용량을 가질 수 있다. CXL 메모리(220)는 제1 전용 영역(DA1)에 대하여 제1 버퍼 용량에 대응하는 제1 어드레스 범위(AR1)를 할당하고, 제2 전용 영역(DA2)에 대하여 제2 버퍼 용량에 대응하는 제2 어드레스 범위(AR2)를 할당할 수 있다. CXL 메모리(220)는 제1 포트(PT31)에 제1 어드레스 범위(AR1)를 할당하고, 제2 포트(PT32)에 제2 어드레스 범위(AR2)를 할당할 수 있다.
CXL 메모리(220)는 제1 어드레스 범위(AR1)를 포함하는 제1 메모리 할당 응답(REP_mem_alc1)을 제1 CXL 스토리지(210_1)로 전송하고, 제2 어드레스 범위(AR2)를 포함하는 제2 메모리 할당 응답(REP_mem_alc2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제1 메모리 할당 응답(REP_mem_alc1)을 기반으로, 제2 인터페이스(IF2)를 통해 제1 어드레스 범위(AR1)를 사용하여 제1 전용 영역(DA1)에 액세스하고, 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제2 어드레스 범위(AR2)를 사용하여 제2 전용 영역(DA2)에 액세스할 수 있다.
일 실시 예에서, CXL 메모리(220)의 적어도 일부 영역은 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 의해 액세스 가능한 영역 또는 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 의해 관리되는 영역일 수 있다. CXL 메모리(220)의 전체 영역은 호스트(201)에 의해 액세스 불가능한 영역 또는 호스트(201)에 의해 관리되지 않는 영역일 수 있다. 이 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2) 각각은 제2 포트(PT12, PT22)를 통해 CXL 메모리(220)의 영역을 액세스할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 CXL 메모리(220)의 영역을 액세스하고, 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 CXL 메모리(220)의 영역을 액세스할 수 있다.
CXL 메모리(220)는 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 직접 연결되고, CXL 메모리(220)는 CXL 스위치(SW_CXL)에 연결되지 않으므로, 호스트(201)는 제1 인터페이스(IF1)를 통해 CXL 메모리(220)의 영역을 액세스할 수 없다. 즉, 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 CXL 메모리(220)에 액세스 가능하고, 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 CXL 메모리(220)에 액세스 가능할 뿐, 호스트(201)는 CXL 메모리(220)에 액세스 불가능하다.
상술된 바와 같이, CXL 메모리(220)의 적어도 일부 영역은 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 대한 전용 영역으로 할당될 수 있다. 이 경우, 제1 및 제2 CXL 스토리지들(210_1, 210_2)은 CXL 메모리(220)의 영역에 대한 액세스를 수행할 수 있고, 호스트(201)는 CXL 메모리(220)의 전체 영역에 대한 액세스를 수행할 수 없다. 일 실시 예에서, CXL 메모리(220)에 대한 제1 CXL 스토리지(210_1)의 액세스는 제2 인터페이스(IF2)를 통해 수행되고, CXL 메모리(220)에 대한 제2 CXL 스토리지(210_2)의 액세스는 제3 인터페이스(IF3)를 통해 수행될 수 있다.
도 6은 맵 데이터가 CXL 메모리에 저장되는 동작을 설명하기 위한 도면이다. 일 실시 예에서, 제1 및 제2 CXL 스토리지들(210_1, 210_2)에 저장된 맵 데이터(MD1, MD2)는 다양한 방식들을 통해, 제1 및 제2 CXL 스토리지들(210_1, 210_2)로부터 CXL 메모리(220)로 전달 및 저장될 수 있다.
일 예로서, 제1 CXL 스토리지(210_1) 및 CXL 메모리(220)는 피어-투-피어(P2P; peer-to-peer) 방식을 기반으로 맵 데이터(MD1)를 교환하고, 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)는 피어-투-피어(P2P; peer-to-peer) 방식을 기반으로 맵 데이터(MD2)를 교환할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 제1 및 제2 CXL 스토리지들(210_1, 210_2)의 CXL 스토리지 컨트롤러(211_1, 211_2)는 직접 메모리 액세스(DMA; Direct Memory Access) 엔진을 포함할 수 있다. CXL 스토리지 컨트롤러(211_1, 211_2)에 포함된 DMA 엔진은 호스트(201)의 간섭 또는 제어 없이, 불휘발성 메모리(MVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)를 CXL 메모리(220)로 전달할 수 있다. 즉, 맵 데이터(MD1, MD2)는 P2P 방식을 기반으로, 제1 및 제2 CXL 스토리지들(210_1, 210_2)로부터 CXL 메모리(220)로 전달될 수 있다.
상술된 복수의 CXL 스토리지들(210_1, 210_2)로부터 CXL 메모리(220)로의 맵 데이터 전송 방식은 단순 예시들이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 제1 CXL 스토리지(210_1)로부터 CXL 메모리(220)로의 맵 데이터 전송은 제2 인터페이스(IF2)를 통한 다양한 방식으로 구현되고, 제2 CXL 스토리지(210_2)로부터 CXL 메모리(220)로의 맵 데이터 전송은 제3 인터페이스(IF3)를 통한 다양한 방식으로 구현될 수 있음이 이해될 것이다. 일 실시 예에서, CXL 메모리(220)로부터 제1 및 제2 CXL 스토리지들(210_1, 210_2)로의 맵 데이터 전송(즉, 맵 데이터 백업 또는 플러쉬) 또한 상술된 바와 유사한 방식으로 구현될 수 있다.
도 7은 도 3a의 제1 CXL 스토리지에 대한 읽기 동작을 보여주는 순서도이다. 일 실시 예에서, 도 7의 순서도에 따른 제1 CXL 스토리지(210_1)에 대한 읽기 동작은 도 4의 초기화 동작이 수행된 이후에(즉, 제1 CXL 스토리지(210_1)의 맵 데이터(MD1)가 CXL 메모리(220)의 영역에 저장된 이후에), 수행될 수 있다. 이하에서, 도면의 간결성 및 설명의 편의를 위하여, 제1 CXL 스토리지(210_1)의 동작을 설명하는데 불필요한 구성 요소들(예를 들어, 제2 CXL 스토리지(210_2))은 생략된다.
도 3a, 도 3b, 및 도 7을 참조하면, RD-S10 단계에서, 호스트(201)는 CXL 호스트 인터페이스 회로(201a)를 통해, 제1 읽기 요청(REQ_RD1)을 출력할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제1 CXL 스토리지(210_1)로 제1 읽기 요청(REQ_RD1)을 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 읽기 요청(REQ_RD1)의 목표인 제1 CXL 스토리지(210_1)로 제1 읽기 요청(REQ_RD1)을 전달할 수 있다. 일 실시 예에서, 제1 읽기 요청(REQ_RD1)은 제1 CXL 스토리지(210_1)에 저장된 제1 사용자 데이터(UD11)를 읽기 위한 요청일 수 있으며, 제1 사용자 데이터(UD11)에 대응하는 제1 논리 블록 어드레스(LBA1)를 포함할 수 있다. 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제1 읽기 요청(REQ_RD1)을 수신할 수 있다.
RD-S21 단계에서, 제1 CXL 스토리지(210_1)는, 제1 읽기 요청(RQ_RD1)에 응답하여, 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해, 제2 읽기 요청(REQ_RD2)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제2 읽기 요청(REQ_RD2)을 CXL 메모리(220)로 전송할 수 있다. 일 실시 예에서, 제2 읽기 요청(REQ_RD2)은 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 맵 데이터(MD11)를 읽기 위한 요청일 수 있다. 즉, 제2 읽기 요청(REQ_RD2)은 제1 맵 데이터(MD11)를 CXL 메모리(220)로부터 읽기 위한 요청일 수 있다. 제2 읽기 요청(REQ_RD2)은 제1 맵 데이터(MD11)가 저장된 영역을 가리키는 CXL 메모리(220)의 메모리 어드레스(예를 들어, 논리 어드레스 또는 가상 어드레스)에 대한 정보를 포함할 수 있다.
RD-S22 단계에서, CXL 메모리(220)는 제2 읽기 요청(REQ_RD2)에 응답하여, 제1 맵 데이터(MD11)를 읽을 수 있다. 예를 들어, CXL 메모리(220)의 CXL 메모리 컨트롤러(221)는 제2 읽기 요청(REQ_RD2)에 포함된 메모리 어드레스(예를 들어, 논리 어드레스 또는 가상 어드레스)에 대응하는 영역으로부터 제1 맵 데이터(MD11)를 읽을 수 있다. 일 실시 예에서, CXL 메모리 컨트롤러(221)는 버퍼 메모리 인터페이스 회로(221d)를 사용하여, 버퍼 메모리(BFM)로부터 제1 맵 데이터(MD11)를 읽을 수 있다.
일 실시 예에서, RD-S22 단계에서 읽어지는 제1 맵 데이터(MD11)는 전체 맵 데이터(MD)의 일부일 수 있고, 제1 논리 블록 어드레스(LBA1)에 대응하는 맵 데이터일 수 있다. 즉, 제1 맵 데이터(MD11)는 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 물리 블록 어드레스(PBA1)에 대한 정보를 포함할 수 있다.
RD-S23 단계에서, CXL 메모리(220)는, 제1 CXL 메모리 인터페이스 회로(221a)(또는, 제1 포트(PT31))를 통해, 제1 맵 데이터(MD11)를 포함하는 제2 읽기 응답(REP_RD2)을 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제2 읽기 응답(REP_RD2)을 제1 CXL 스토리지(210_1)로 전송할 수 있다.
일 실시 예에서, CXL 스토리지 컨트롤러(211_1)의 RAM(211_1c)에 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 맵 데이터(MD11)가 이미 저장되어 있는 경우, RD-S21 단계 내지 RD-S23 단계의 동작들(즉, 제1 맵 데이터(MD11)를 CXL 메모리(220)로부터 로드하기 위한 동작들)은 생략될 수 있다.
RD-S31 단계에서, 제1 CXL 스토리지(210_1)는 제1 맵 데이터(MD11)를 기반으로 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 물리 블록 어드레스(PBA1)를 검색할 수 있다. 예를 들어, CXL 스토리지 컨트롤러(211_1)의 FTL(211_1d)은 제1 맵 데이터(MD11)를 기반으로 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 물리 블록 어드레스(PBA1)를 검색할 수 있다.
RD-S32 단계에서, 제1 CXL 스토리지(210_1)는 제1 물리 블록 어드레스(PBA1)에 대응하는 영역에 저장된 제1 사용자 데이터(UD11)를 불휘발성 메모리(NVM1)로부터 읽을 수 있다. 예를 들어, CXL 스토리지 컨트롤러(211_1)는 불휘발성 메모리(NVM1)의 영역 중 제1 물리 블록 어드레스(PBA1)에 대응하는 영역으로부터 제1 사용자 데이터(UD11)를 읽을 수 있다. 일 실시 예에서, CXL 스토리지 컨트롤러(211_1)는 낸드 인터페이스 회로(211_1f)를 사용하여, 불휘발성 메모리(NVM1)로부터 제1 사용자 데이터(UD11)를 읽을 수 있다.
RD-S33 단계에서, 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해, 제1 읽기 요청(REQ_RD1)에 대한 제1 읽기 응답(REP_RD1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제1 인터페이스(IF1)를 통해 제1 읽기 응답(REP_RD1)을 호스트(201)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 읽기 응답(REP_RD1)을 호스트(201)로 전달할 수 있다. 일 실시 예에서, 제1 읽기 응답(REP_RD1)은 제1 읽기 요청(REQ_RD1)을 통해 요청된 제1 사용자 데이터(UD11)를 포함할 수 있다. 호스트(201)는 제1 읽기 응답(REP_RD1)을 통해, 제1 사용자 데이터(UD11)를 획득할 수 있다.
일 실시 예에서, 호스트(201) 및 제1 CXL 스토리지(210_1) 사이의 통신인 RD-S10 단계 및 RD-S33 단계의 동작들은 CXL.io 기반으로 수행될 수 있고, 제1 CXL 스토리지(210_1) 및 CXL 메모리(220) 사이의 통신인 RD-S21 단계 및 RD-S23 단계의 동작들은 CXL.mem 기반으로 수행될 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 제1 CXL 스토리지(210_1), 및 CXL 메모리(220) 사이의 통신은 호스트(201), 및 제1 CXL 스토리지(210_1) 사이의 통신과 별개로 수행될 수 있다. 즉, 호스트(201), 제1 CXL 스토리지(210_1), 및 CXL 메모리(220)는 공통의 인터페이스를 통해(또는, 공통의 링크, 공통의 스위치 등을 통해) 수행되지 않을 수 있다.
상술된 실시 예들은 제1 CXL 스토리지(210_1)를 기준으로 설명되었으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 제2 CXL 스토리지(210_2)는 도 7을 참조하여 설명된 방식과 동일 또는 유사하게 읽기 동작을 수행할 수 있다.
도 8은 도 3a의 제1 CXL 스토리지에 대한 쓰기 동작을 보여주는 순서도이다. 일 실시 예에서, 도 8의 순서도에 따른 제1 CXL 스토리지(210_1)에 대한 쓰기 동작은 도 4의 초기화 동작이 수행된 이후에(즉, 제1 CXL 스토리지(210_1)의 맵 데이터(MD1)가 CXL 메모리(220)의 전용 영역에 저장된 이후에), 수행될 수 있다. 이하에서, 도면의 간결성 및 설명의 편의를 위하여, 제1 CXL 스토리지(210_1)의 동작을 설명하는데 불필요한 구성 요소들(예를 들어, 제2 CXL 스토리지(210_2))은 생략된다.
도 3a, 도 3b, 및 도 8를 참조하면, WR-S10 단계에서, 호스트(201)는 CXL 호스트 인터페이스 회로(201a)를 통해, 제1 쓰기 요청(REQ_WR1)을 출력할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제1 쓰기 요청(REQ_WR1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 쓰기 요청(REQ_WR1)을 제1 CXL 스토리지(210_1)로 전달할 수 있다. 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제1 쓰기 요청(REQ_WR1)을 수신할 수 있다. 일 실시 예에서, 제1 쓰기 요청(REQ_WR1)은 제1 사용자 데이터(UD11)를 제1 CXL 스토리지(210_1)에 저장하기 위한 요청일 수 있다.
WR-S21 단계에서, 제1 CXL 스토리지(210_1)는, 제1 쓰기 요청(REQ_WR1)에 응답하여, 제1 사용자 데이터(UD11)가 기입될 메모리 블록을 판별할 수 있다. 예를 들어, CXL 스토리지 컨트롤러(211_1)의 FTL(211_1d)은 불휘발성 메모리(NVM1)에 포함된 메모리 블록들 중 자유 메모리 블록 또는 쓰기 가능한 메모리 블록 또는 할당 가능한 메모리 블록에 대한 블록 정보를 관리할 수 있다. FTL(211_1d)은 블록 정보를 기반으로 제1 사용자 데이터(UD11)가 기입될 메모리 블록을 선택할 수 있다.
WR-S22 단계에서, 제1 CXL 스토리지(210_1)는, 선택된 메모리 블록에 제1 사용자 데이터(UD11)를 기입할 수 있다. 예를 들어, CXL 스토리지 컨트롤러(211_1)는 선택된 메모리 블록에 제1 사용자 데이터(UD11)가 기입되도록, 불휘발성 메모리(NVM1)를 제어할 수 있다. 일 실시 예에서, CXL 스토리지 컨트롤러(211_1)는 낸드 인터페이스 회로(211f)를 사용하여, 불휘발성 메모리(NVM1)에 제1 사용자 데이터(UD11)를 기입할 수 있다.
제1 사용자 데이터(UD11)를 불휘발성 메모리(NVM1)에 기입하는 것이 완료된 경우(즉, 불휘발성 메모리(NVM1)에 대한 프로그램 동작이 성공(pass)인 경우), WR-S23 단계에서, 제1 CXL 스토리지(210_1)는 제1 맵 데이터(MD11)를 갱신하거나 또는 제1 맵 데이터(MD11)를 생성할 수 있다. 예를 들어, 제1 맵 데이터(MD11)는 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 사용자 데이터(UD11)가, 불휘발성 메모리(NVM1)의 영역 중 제1 물리 블록 어드레스(PBA1)에 대응하는 영역에 저장되었음을 가리키는 정보를 포함할 수 있다. 즉, 제1 CXL 스토리지(210_1)는 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 사용자 데이터(UD11)가 제1 물리 블록 어드레스(PBA1)에 대응하는 영역에 저장되었음을 가리키는 제1 맵 데이터(MD11)를 생성할 수 있다.
WR-S24 단계에서, 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해, 제1 쓰기 요청(REQ_WR1)에 대한 제1 쓰기 응답(REP_WR1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제1 인터페이스(IF1)를 통해 제1 쓰기 응답(REP_WR1)을 호스트(201)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 쓰기 응답(REP_WR1)을 호스트(201)로 전달할 수 있다. 호스트(201)는 제1 쓰기 응답(REP_WR1)에 응답하여, 제1 쓰기 요청(REQ_WR1)에 대응하는 제1 사용자 데이터(UD11)가 제1 CXL 스토리지(210_1)에 정상적으로 저장되었음을 식별할 수 있다.
호스트(201)에 의한 제1 CXL 스토리지(210_1)에 대한 쓰기 동작이 모두 완료된 이후에, 제1 CXL 스토리지(210_1)는 맵 데이터 갱신 동작을 수행할 수 있다. 예를 들어, WR-S31 단계에서, 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해, 제2 쓰기 요청(REQ_WR2)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제2 쓰기 요청(REQ_WR2)을 CXL 메모리(220)로 전달할 수 있다.
일 실시 예에서, 제2 쓰기 요청(REQ_WR2)은, 제1 사용자 데이터(UD11)의 저장에 따라 갱신 또는 생성된 제1 맵 데이터(MD11)를 CXL 메모리(220)에 저장하기 위한 요청일 수 있다. 제2 쓰기 요청(REQ_WR2)은 제1 맵 데이터(MD11)가 저장될 메모리 어드레스를 포함할 수 있다. 제2 쓰기 요청(REQ_WR2)에 포함된 메모리 어드레스는 CXL 메모리(220)의 영역 중 제1 CXL 스토리지(210_1)에 대한 전용 영역에 포함될 수 있다.
WR-S32 단계에서, CXL 메모리(220)는, 제2 쓰기 요청(REQ_WR2)에 응답하여, 제1 맵 데이터(MD11)를 대응하는 영역에 저장할 수 있다. 예를 들어, CXL 메모리(220)는 제2 쓰기 요청(REQ_WR2)에 포함된 메모리 어드레스에 대응하는 영역에 제1 맵 데이터(MD11)를 기입할 수 있다.
WR-S33 단계에서, CXL 메모리(220)는, CXL 메모리 인터페이스 회로(221a)(또는 제1 포트(PT31))를 통해, 제2 쓰기 요청(REQ_WR2)에 대한 제2 쓰기 응답(REP_WR2)을 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제2 쓰기 응답(REP_WR2)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제2 쓰기 응답(REP_WR2)을 수신할 수 있다.
일 실시 예에서, WR-S31 단계 내지 WR-S33 단계의 동작들(즉, CXL 메모리(220)에 맵 데이터를 저장하거나 또는 맵 데이터를 갱신하는 동작)은 제1 CXL 스토리지(210_1)에 대한 쓰기 동작이 완료될 때마다, 수행될 수 있다. 또는 WR-S31 단계 내지 WR-S33 단계의 동작들은 갱신되거나 또는 새로 생성된 맵 데이터의 크기가 일정 크기에 도달한 경우, 수행될 수 있다. 또는, WR-S31 단계 내지 WR-S33 단계의 동작들은 미리 정해진 주기에 따라 수행될 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 제1 CXL 스토리지(210_1)의 동작 중 생성 또는 갱신되는 맵 데이터에 대한 CXL 메모리(220)로의 저장은 다양한 동작 정책에 따라 수행될 수 있다.
상술된 실시 예들은 제1 CXL 스토리지(210_1)를 기준으로 설명되었으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 제2 CXL 스토리지(210_2)는 도 8을 참조하여 설명된 방식과 동일 또는 유사하게 쓰기 동작을 수행할 수 있다.
도 9a 내지 도 9c는 도 3a의 CXL 메모리의 요청 처리 순서를 설명하기 위한 도면들이다. 도 3a 및 도 9a를 참조하면, CXL 메모리(220)는 제1 큐(Q1) 및 제2 큐(Q2)를 관리할 수 있다. 예를 들어, 제1 큐(Q1) 및 제2 큐(Q2)는 버퍼 메모리(BFM)에 저장될 수 있다. 제1 큐(Q1)는 제1 CXL 스토리지(210_1)의 요청들이 큐잉될 수 있다. 제2 큐(Q2)는 제2 CXL 스토리지(210_2)의 요청들이 큐잉될 수 있다.
CXL 메모리 컨트롤러(221)는 라운드 로빈(RR; round robin) 방식을 기반으로 복수의 큐들(Q1, Q2)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다.
도 9b를 참조하면, CXL 메모리(220) 제1 큐(Q1) 및 제2 큐(Q2)를 관리할 수 있다 CXL 메모리 컨트롤러(221)는 가중된 라운드 로빈(WRR; weighted round robin) 방식을 기반으로 복수의 큐들(Q1, Q2)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다. 일 실시 예에서, 복수의 큐들(Q1, Q2) 각각은 가중치를 가질 수 있다. 가중치는 긴급(Urgent), 높은 가중치(High Weight), 중간 가중치(Medium Weight), 및 낮은 가중치(Low Weight)를 포함할 수 있다. 예를 들어, 제1 큐(Q1)는 낮은 가증치(Low Weight)를 갖도록 설정되고, 제2 큐(Q2)는 중간 가중치(Medium Weight)를 갖도록 설정될 수 있다. 복수의 큐들(Q1, Q2) 각각의 가중치는 미리 결정될 수 있다. 또는 복수의 큐들(Q1, Q2) 각각의 가중치는 CXL 메모리(220)에 의해 결정되거나 또는 관리(예를 들어, 동작 중에 가중치 값들이 변경됨)될 수 있다.
도 9c를 참조하면, CXL 메모리(220)는 제1 큐(Q1)와 제2 큐(Q2)를 관리할 수 있다 CXL 메모리 컨트롤러(221)는 우선 순위(Priority) 방식을 기반으로 복수의 큐들(Q1, Q2)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리할 수 있다. 예를 들어, CXL 메모리 컨트롤러(221)는 제2 큐(Q2)에 포함된 요청들을 제1 큐(Q1)에 포함된 요청들 보다 우선 처리할 수 있다.
도 10은 도 3a의 CXL 메모리의 요청 처리 순서를 설명하기 위한 순서도이다. 도 3a, 도 9c 및 도 10을 참조하면, 이하에서, CXL 메모리(220)는 우선 순위 방식을 기반으로 복수의 큐들(Q1, Q2)에 포함된 요청들 중 하나를 선택하고, 선택된 요청(RQ_sel)을 처리하는 것으로 가정한다. 제2 큐(Q2)는 높은 우선 순위를 갖고, 제1 큐(Q1)는 낮은 우선 순위 갖는 것으로 가정한다. 즉, CXL 메모리 컨트롤러(221)는 제2 CXL 스토리지(210_2)로부터 수신된 요청들을 제1 CXL 스토리지(210_1)로부터 수신된 요청들 보다 우선 처리할 수 있다.
AR-S11 단계에서, 제1 CXL 스토리지(210_1)는 제1 읽기 요청(REQ_RD1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제1 읽기 요청(REQ_RD1)을 CXL 메모리(220)로 전송할 수 있다. 일 실시 예에서, 제1 읽기 요청(REQ_RD1)은 제1 논리 블록 어드레스(LBA1)에 대응하는 제1 맵 데이터(MD11)를 읽기 위한 요청일 수 있다.
AR-S12 단계에서, 제2 CXL 스토리지(210_2)는 제2 읽기 요청(REQ_RD2)을 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제2 읽기 요청(REQ_RD2)을 CXL 메모리(220)로 전송할 수 있다. 일 실시 예에서, 제2 읽기 요청(REQ_RD2)은 제2 논리 블록 어드레스(LBA2)에 대응하는 제2 맵 데이터(MD21)를 읽기 위한 요청일 수 있다.
AR-S13 단계에서, CXL 메모리(220)는 우선 순위를 기반으로 요청들을 스케줄링 할 수 있다. 예를 들어, 제1 큐(Q1)는 중간 우선 순위를 갖고, 제2 큐(Q2)는 높은 우선 순위를 가지므로, CXL 메모리 컨트롤러(221)는 제2 읽기 요청(REQ_RD2)을 제1 읽기 요청(REQ_RD1) 보다 먼저 처리 가능하도록 스케줄링 할 수 있다.
AR-S14 단계에서, CXL 메모리(220)는 제2 읽기 요청(REQ_RD2)에 응답하여, 제2 맵 데이터(MD21)를 읽을 수 있다. 예를 들어, CXL 메모리(220)는 스케줄링 한 결과를 기반으로 요청들을 처리할 수 있다. CXL 메모리(220)는 제2 큐(Q2)가 높은 우선 순위를 가지므로, 제1 읽기 요청(REQ_RD1)을 수신한 이후에 제2 읽기 요청(REQ_RD2)을 수신한 경우에도, 제2 읽기 요청(REQ_RD2)을 먼저 처리할 수 있다.
AR-S15 단계에서, CXL 메모리(220)는, 제2 CXL 메모리 인터페이스 회로(221e)(또는, 제2 포트(PT32))를 통해, 제2 맵 데이터(MD21)를 포함하는 제2 읽기 응답(REP_RD2)을 출력할 수 있다. CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 제2 읽기 응답(REP_RD2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 CXL 스토리지(210_2)는 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는, 제2 포트(PT22))를 통해 제2 읽기 응답(REP_RD2)을 수신할 수 있다.
AR-S16 단계에서, CXL 메모리(220)는 제1 읽기 요청(REQ_RD1)에 응답하여, 제1 맵 데이터(MD11)를 읽을 수 있다. AR-S17 단계에서, CXL 메모리(220)는, 제1 CXL 메모리 인터페이스 회로(221a)(또는, 제1 포트(PT31))를 통해, 제1 맵 데이터(MD11)를 포함하는 제1 읽기 응답(REP_RD1)을 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제1 읽기 응답(REP_RD1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해 제1 읽기 응답(REP_RD1)을 수신할 수 있다.
상술된 실시 예들은 CXL 메모리(220)로 수신된 읽기 요청을 기준으로 설명되었으나, 본 개시의 범위가 이에 한정되는 것은 아니며, CXL 메모리(220)는 우선 순위 방식을 기반으로 쓰기 요청을 처리할 수 있다.
도 11은 도 3a의 컴퓨팅 시스템의 파워 오프 동작을 보여주는 순서도이다. 일 실시 예에서, 도 11을 참조하여, 컴퓨팅 시스템의 파워 오프 동작이 설명되나, 본 개시의 범위가 이에 한정되는 것은 아니며, 컴퓨팅 시스템에 포함된 다양한 구성 요소들(예를 들어, 호스트, 제1 및 제2 CXL 스토리지들, CXL 메모리, CXL 스위치 등) 각각의 파워 오프 동작, 또는 리셋 동작에서 도 11의 동작 방법이 적용될 수 있음이 이해될 것이다. 파워 오프 동작에서, 요청들의 처리 순서와 관련하여, 제2 CXL 스토리지(210_2)가 높은 우선 순위를 갖고, 제1 CXL 스토리지(210_1)가 중간 우선 순위를 갖는 것으로 가정한다.
도 3a 및 도 11을 참조하면, POF-S11 단계에서, 호스트(201)는 CXL 호스트 인터페이스(201a)를 통해, 제1 파워 오프 정보(IFM_off1)를 출력할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제1 파워 오프 정보(IFM_off1)를 제1 CXL 스토리지(210_1)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 파워 오프 정보(IFM_off1)를 제1 CXL 스토리지(210_1)로 전달할 수 있다. 예를 들어, 호스트(201)는 컴퓨팅 시스템(200)의 파워-오프에 대한 정보를 인식하거나 또는 감지할 수 있다. 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제1 CXL 스토리지(210_1)가 파워 오프 동작을 수행하기 위한 제1 파워 오프 정보(IFM_off1)를 수신할 수 있다.
POF-S12 단계에서, 호스트(201)는 CXL 호스트 인터페이스 회로(201a)를 통해, 제2 파워 오프 정보(IFM_off2)를 출력할 수 있다. 호스트(201)는 제1 인터페이스(IF1)를 통해 제2 파워 오프 정보(IFM_off2)를 제2 CXL 스토리지(210_2)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제2 파워 오프 정보(IFM_off2)를 제2 CXL 스토리지(210_2)로 전달할 수 있다. 제2 CXL 스토리지(210_2)는 제1 CXL 스토리지 인터페이스 회로(211_2a)(또는, 제1 포트(PT21))를 통해 제2 CXL 스토리지(210_2)가 파워 오프 동작을 수행하기 위한 제2 파워 오프 정보(IFM_off2)를 수신할 수 있다.
POF-S21 단계에서, 제1 CXL 스토리지(210_1)는 제1 파워 오프 정보(IFM_off1)에 응답하여, 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해, 제1 읽기 요청(REQ_RD1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제2 인터페이스(IF2)를 통해 제1 읽기 요청(REQ_RD1)을 CXL 메모리(220)로 전송할 수 있다. 일 실시 예에서, POF-S21 단계의 제1 읽기 요청(REQ_RD1)은 CXL 메모리(220)에 저장된 전체 맵 데이터(MD1)를 읽기 위한 요청일 수 있다. 제1 읽기 요청(REQ_RD1)은 맵 데이터(MD1)가 저장된 영역에 대한 메모리 어드레스를 포함할 수 있다.
POF-S22 단계에서, 제2 CXL 스토리지(210_2)는 제2 파워 오프 정보(IFM_off2)에 응답하여, 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는, 제2 포트(PT22))를 통해, 제2 읽기 요청(REQ_RD2)을 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제3 인터페이스(IF3)를 통해 제2 읽기 요청(REQ_RD2)을 CXL 메모리(220)로 전송할 수 있다. 일 실시 예에서, POF-S22 단계의 제2 읽기 요청(REQ_RD2)은 CXL 메모리(220)에 저장된 전체 맵 데이터(MD2)를 읽기 위한 요청일 수 있다. 제2 읽기 요청(REQ_RD2)은 맵 데이터(MD2)가 저장된 영역에 대한 메모리 어드레스를 포함할 수 있다.
POF-S23 단계에서, CXL 메모리(220)는 우선 순위를 기반으로 요청들을 스케줄링 할 수 있다. 예를 들어, 제1 CXL 스토리지(210_1)는 중간 우선 순위를 갖고, 제2 CXL 스토리지(210_2)는 높은 우선 순위를 가지므로, CXL 메모리 컨트롤러(221)는 제2 읽기 요청(REQ_RD2)을 제1 읽기 요청(REQ_RD1) 보다 먼저 처리 가능하도록 스케줄링 할 수 있다.
일 실시 예에서, CXL 메모리(220)는 파워 오프 동작의 읽기 요청에 대한 우선 순위가 미리 결정되어 있지 않는 경우, CXL 메모리(220)는 파워 오프 동작의 읽기 요청에 대한 우선 순위를 결정할 수 있다. CXL 메모리(220)는 결정된 우선 순위를 기반으로 읽기 요청들을 스케줄링 할 수 있다.
POF-S24 단계에서, CXL 메모리(220)는 제2 읽기 요청(REQ_RD2)에 응답하여, 맵 데이터(MD2)를 읽을 수 있다. 예를 들어, CXL 메모리(220)는 스케줄링 한 결과를 기반으로, 제2 읽기 요청(REQ_RD2)을 제1 읽기 요청(REQ_RD1) 보다 먼저 처리할 수 있다. CXL 메모리(220)는 제2 읽기 요청(REQ_RD2)에 포함된 메모리 어드레스를 기반으로, 버퍼 메모리(BFM)로부터 맵 데이터(MD2)를 읽을 수 있다.
POF-S25 단계에서, CXL 메모리(220)는 제2 CXL 메모리 인터페이스 회로(221e)(또는, 제2 포트(PT32))를 통해, 제2 읽기 요청(REQ_RD2)에 대한 제2 읽기 응답(REP_RD2)을 출력할 수 있다. CXL 메모리(220)는 제3 인터페이스(IF3)를 통해 제2 읽기 응답(REP_RD2)을 제2 CXL 스토리지(210_2)로 전송할 수 있다. 제2 CXL 스토리지(210_2)는 제2 CXL 스토리지 인터페이스 회로(211_2g)(또는, 제2 포트(PT22))를 통해, 제2 읽기 응답(REP_RD2)을 수신할 수 있다.
POF-S26 단계에서, 제2 CXL 스토리지(210_2)는 제2 읽기 응답(REP_RD2)에 포함된 맵 데이터(MD2)를 불휘발성 메모리(NVM2)에 기입할 수 있다. 일 실시 예에서, 제2 CXL 스토리지(210_2)는 불휘발성 메모리(NVM2)의 미리 정해진 영역에 맵 데이터(MD2)를 저장할 수 있다.
POF-S27 단계에서, CXL 메모리(220)는 제1 읽기 요청(REQ_RD1)에 응답하여, 맵 데이터(MD1)를 읽을 수 있다. 예를 들어, CXL 메모리(220)는 제1 읽기 요청(REQ_RD1)에 포함된 메모리 어드레스를 기반으로, 버퍼 메모리(BFM)로부터 맵 데이터(MD1)를 읽을 수 있다.
POF-S28 단계에서, CXL 메모리(220)는 제1 CXL 메모리 인터페이스 회로(221a)(또는, 제1 포트(PT31))를 통해, 제1 읽기 요청(REQ_RD1)에 대한 제1 읽기 응답(REP_RD1)을 출력할 수 있다. CXL 메모리(220)는 제2 인터페이스(IF2)를 통해 제1 읽기 응답(REP_RD1)을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제2 CXL 스토리지 인터페이스 회로(211_1g)(또는, 제2 포트(PT12))를 통해, 제1 읽기 응답(REP_RD1)을 수신할 수 있다.
POF-S29 단계에서, 제1 CXL 스토리지(210_1)는 제1 읽기 응답(REP_RD1)에 포함된 맵 데이터(MD1)를 불휘발성 메모리(NVM1)에 기입할 수 있다. 일 실시 예에서, 제1 CXL 스토리지(210_1)는 불휘발성 메모리(NVM1)의 미리 정해진 영역에 맵 데이터(MD1)를 저장할 수 있다.
제1 CXL 스토리지(210_1)에 대한 모든 맵 데이터(MD1)가 불휘발성 메모리(NVM1)에 저장된 이후에, POF-S31 단계에서, 제1 CXL 스토리지(210_1)는 제1 CXL 스토리지 인터페이스 회로(211_1a)(또는, 제1 포트(PT11))를 통해 제1 파워 오프 정보(IFM_off1)에 대한 제1 응답(ACK_off1)을 출력할 수 있다. 제1 CXL 스토리지(210_1)는 제1 인터페이스(IF1)를 통해 제1 응답(ACK_off1)을 호스트(201)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제1 응답(ACK_off1)을 호스트(201)로 전달할 수 있다. 호스트(201)는 제1 응답(ACK_off1)을 기반으로, CXL 메모리(220)에 저장된 맵 데이터(MD1)가 제1 CXL 스토리지(210_1)에 정상적으로 저장되었음을 인지할 수 있다.
제2 CXL 스토리지(210_2)에 대한 모든 맵 데이터(MD2)가 불휘발성 메모리(NVM2)에 저장된 이후에, POF-S32 단계에서, 제2 CXL 스토리지(210_2)는 제1 CXL 스토리지 인터페이스 회로(211_2a)(또는, 제1 포트(PT21))를 통해 제2 파워 오프 정보(IFM_off2)에 대한 제2 응답(ACK_off2)을 출력할 수 있다. 제2 CXL 스토리지(210_2)는 제1 인터페이스(IF1)를 통해 제2 응답(ACK_off2)을 호스트(201)로 전송할 수 있다. CXL 스위치(SW_CXL)는 제2 응답(ACK_off2)을 호스트(201)로 전달할 수 있다. 호스트(201)는 제2 응답(ACK_off2)을 기반으로, CXL 메모리(220)에 저장된 맵 데이터(MD2)가 제2 CXL 스토리지(210_2)에 정상적으로 저장되었음을 인지할 수 있다.
이후에, POF-S33 단계에서, 호스트(201), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2), 및 CXL 메모리(220)는 파워-오프될 수 있다. 예를 들어, 호스트(201)는 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)로 제공되는 전원을 차단할 수 있다.
상술된 바와 같이, 컴퓨팅 시스템(200)은 파워 오프 동작 전에 CXL 메모리(220)에 저장된 맵 데이터(MD1, MD2)를 복수의 CXL 스토리지들(210_1, 210_2)의 불휘발성 메모리(NVM1, NVM2)에 저장(또는 백업(back-up))할 수 있다. CXL 메모리(220)는 미리 결정된 우선 순위를 기반으로 파워 오프 동작의 읽기 요청을 처리할 수 있다.
도면의 간결성 및 설명의 편의를 위하여, POF-S11 단계가 POF-S12 단계보다 먼저 수행되고, POF-S21 단계가 POF-S22단계 보다 먼저 수행되고, POF-S31 단계가 POF-S32 단계보다 먼저 수행되는 것으로 도시되었으나, 본 개시의 범위가 이에 한정되지 아니하며, 상기 단계의 동작을 동시에 수행될 수 있고, 서로 순서가 바뀌어 수행될 수 있다.
도 11을 참조하여 설명된 파워 오프 동작은 일부 예시이며, 본 개시의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 11의 실시 예에서, 제1 CXL 스토리지(210_1)가 CXL 메모리(220)에 저장된 맵 데이터(MD1)를 불휘발성 메모리(NVM1)에 저장한 이후에, 제1 CXL 스토리지(210_1)는 제1 응답(ACK_off1)을 호스트(201)로 전송함으로써, 맵 데이터(MD1)의 백업 완료를 알릴 수 있다(즉, 인터럽트 방식). 또는 제1 CXL 스토리지(210_1)는 CXL 메모리(220)에 저장된 맵 데이터(MD1)를 불휘발성 메모리(NVM1)에 저장한 이후에, 특정 레지스터의 값을 미리 정해진 값으로 설정할 수 있다. 호스트(201)는 제1 CXL 스토리지(210_1)의 특정 레지스터 값을 주기적으로 확인함으로써, 맵 데이터(MD1)의 백업 완료 여부를 확인할 수 있다(폴링 방식). 또는 제1 CXL 스토리지(210_1)는 호스트(201)로부터 파워 오프 정보(INF_off1)를 수신한 시점으로부터 미리 정해진 시간 내에 맵 데이터(MD1)에 대한 백업 동작을 완료하도로 구성될 수 있다(타임 아웃 방식). 상술된 바와 같이, 제1 CXL 스토리지(210_1)는 다양한 방식들 중 적어도 하나를 통해, 맵 데이터(MD1)의 백업 완료에 대한 정보를 호스트(201)로 전달할 수 있다. 또한, 상술된 바와 동일 또는 유사하게, 제2 CXL 스토리지(210_2)는 다양한 방식들 중 적어도 하나를 통해, 맵 데이터(MD2)의 백업 완료에 대한 정보를 호스트(201)로 전달할 수 있다.
상술된 실시 예들은 복수의 CXL 스토리지들(210_1, 210_2) 모두에 대한 파워 오프 동작을 기준으로 설명되었으나, 본 개시의 범위가 이에 한정되는 것은 아니다. 예를 들어, 호스트(201)는 복수의 스토리지들(210_1, 210_2) 중 제1 CXL 스토리지(210_1)로만 리셋 동작을 수행하기 위한 리셋 정보를 전송할 수 있다. 이 경우, 제1 CXL 스토리지(210_1)는 리셋 정보에 응답하여 CXL 메모리(220)에 저장된 전체 맵 데이터(MD1)를 읽기 위한 읽기 요청을 CXL 메모리(220)에 전송할 수 있다. CXL 메모리(220)는 읽기 요청에 응답하여, 맵 데이터(MD1)를 포함하는 읽기 응답을 제1 CXL 스토리지(210_1)로 전송할 수 있다. 제1 CXL 스토리지(210_1)는 제1 읽기 응답에 포함된 맵 데이터(MD1)는 불휘발성 메모리(NVM1)에 저장한 후 리셋 응답을 호스트(201)로 전송할 수 있다. 이후에 제1 CXL 스토리지(210_1)는 리셋 동작을 수행할 수 있다.
일 실시 예에서, 복수의 CXL 스토리지들(210_1, 210_2)의 동작 방식에 따라, 파워 오프 동작이 변경될 수 있다. 예를 들어, 복수의 CXL 스토리지들(210_1, 210_2)의 쓰기 동작에서, 복수의 CXL 스토리지들(210_1, 210_2)은 불휘발성 메모리(NVM1, NVM2)에 대한 프로그램 동작을 수행하고, 이에 따라, 맵 데이터(MD1, MD2)를 갱신할 수 있다.
일 실시 예에서, 맵 데이터(MD1, MD2) 갱신 동작은, CXL 메모리(220)에 대해서만 수행될 수 있다. 이 경우, CXL 메모리(220)에 저장된 맵 데이터(MD1, MD2)가 최신 정보이고, 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)는 최신 정보가 아닐 수 있다. 즉, 맵 데이터(MD1, MD2)에 대한 갱신 동작이, CXL 메모리(220)에 대해서만 수행되는 경우, 맵 데이터(MD1, MD2)에 대한 최신 정보는 CXL 메모리(220)에서만 유지되므로, 복수의 CXL 스토리지들(210_1, 210_2), CXL 메모리(220), 또는 컴퓨팅 시스템(200)의 파워-오프시, CXL 메모리(220)로부터 맵 데이터(MD1, MD2)를 플러쉬, 백업, 또는 덤프하는 동작이 필요하다. 일 실시 예에서, 맵 데이터(MD1, MD2)의 갱신 동작은 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)에 대하여 우선적으로 수행될 수 있고, 이후에, 백그라운드 동작을 통해, CXL 메모리(220)에 저장된 맵 데이터(MD1, MD2)에 대하여 수행될 수 있다. 이 경우, 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)가 최신 정보임이 보장되기 때문에, 복수의 CXL 스토리지들(210_1, 210_2), CXL 메모리(220), 또는 컴퓨팅 시스템(200)의 파워-오프시, CXL 메모리(220)로부터 맵 데이터(MD1, MD2)를 플러쉬, 덤프, 또는 백업하는 동작이 불필요할 수 있다.
일 실시 예에서, 맵 데이터(MD1, MD2)의 갱신 동작은 CXL 메모리(220)에 저장된 맵 데이터(MD1, MD2)에 대하여 우선적으로 수행될 수 있고, 백그라운드 동작을 통해, 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)에 대하여 수행될 수 있다. 이 경우, CXL 메모리(220)에 저장된 맵 데이터(MD1, MD2)가 최신 정보이며, 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)는 최신 정보가 아닐 수 있다. 이에 따라, 복수의 CXL 스토리지들(210_1, 210_2), CXL 메모리(220), 또는 컴퓨팅 시스템(200)의 파워-오프시, CXL 메모리(220)의 맵 데이터(MD1, MD2) 중 적어도 일부가 복수의 CXL 스토리지들(210_1, 210_2)의 불휘발성 메모리(NVM1, NVM2)로 백업되어야 한다. 일 실시 예에서, 불휘발성 메모리(NVM1, NVM2)로 백업되는 맵 데이터(MD1, MD2)의 적어도 일부는 불휘발성 메모리(NVM1, NVM2)에 저장되지 않은 최신 정보의 맵 데이터(MD1, MD2)일 수 있다. 일 실시 예에서, 복수의 CXL 스토리지들(210_1, 210_2)은 불휘발성 메모리(NVM1, NVM2)에 저장된 맵 데이터(MD1, MD2)가 최신 정보인지를 가리키는 플래그 정보 또는 테이블 정보를 관리 또는 저장할 수 있다.
상술된 바와 같이, 복수의 CXL 스토리지들(210_1, 210_2), CXL 메모리(220), 또는 컴퓨팅 시스템(200)의 파워 오프시, 맵 데이터(MD1, MD2)의 관리 방안(예를 들어, 최신 정보가 어디에서 관리되는지)에 따라, CXL 메모리(220)로부터 복수의 CXL 스토리지들(210_1, 210_2)로의 맵 데이터(MD1, MD2)에 대한 플러쉬, 백업, 또는 덤프하는 동작이 선택적으로 수행될 수 있다.
도 12a는 본 개시의 실시 예에 따른 스토리지 시스템이 적용된 컴퓨팅 시스템을 보여주는 블록도이다. 도 12a를 참조하면, 컴퓨팅 시스템(300)은 호스트(301), 복수의 메모리들(302a, 302b), 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320)를 포함할 수 있다. 도 12a에 도시된 호스트(301), 복수의 메모리들(302a, 302b), 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2) 및 CXL 메모리(320)는 각각 도 3a에 도시된 호스트(301), 복수의 메모리 장치들(202a, 202b), 제1 CXL 스토리지(210_1), 제2 CXL 스토리지(210_2) 및 CXL 메모리(220)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
제1 CXL 스토리지(310_1)는 CXL 스토리지 컨트롤러(311_1) 및 불휘발성 메모리(NVM1)를 포함할 수 있다. 도 12a에 도시된 CXL 스토리지 컨트롤러(311_1) 및 불휘발성 메모리(NVM1)는 각각 도 3a에 도시된 CXL 스토리지 컨트롤러(211_1) 및 불휘발성 메모리(NVM1)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
제2 CXL 스토리지(310_2)는 CXL 스토리지 컨트롤러(311_2) 및 불휘발성 메모리(NVM2)를 포함할 수 있다. 도 12a에 도시된 CXL 스토리지 컨트롤러(311_2) 및 불휘발성 메모리(NVM2)는 각각 도 3a에 도시된 CXL 스토리지 컨트롤러(211_2) 및 불휘발성 메모리(NVM2)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
CXL 메모리(320)는 CXL 메모리 컨트롤러(321) 및 버퍼 메모리(BFM)를 포함할 수 있다. 도 12a에 도시된 CXL 메모리 컨트롤러(321) 및 버퍼 메모리(BFM)는 도 3a와 도시된 CXL 메모리 컨트롤러(221) 및 버퍼 메모리(BFM)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
일 실시 예에서, 호스트(301), 제1 CXL 스토리지(310_1) 제2 CXL 스토리지(310_2), 및 CXL 메모리(320) 모두는 동일한 인터페이스를 서로 공유하지 않도록 구성될 수 있다. 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 제1 인터페이스(IF1)를 통해 서로 통신할 수 있다. 그러나, 제1 및 제2 CXL 스토리지들(310_1, 310_2)은 제1 인터페이스(IF1)를 통해 CXL 메모리(320)를 액세스할 수 없다.
일 실시 예에서, CXL 메모리(320), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 동일한 인터페이스를 서로 공유하도록 구성될 수 있다. 예를 들어, CXL 메모리(320), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 제2 인터페이스(IF2)를 통해 서로 통신할 수 있다. 그러나, 제1 및 제2 CXL 스토리지들(310_1, 310_2)은 제2 인터페이스(IF2)를 통해 호스트(301)를 액세스할 수 없다.
제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각과 호스트(301) 사이의 통신과 제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각과 CXL 메모리(320) 사이의 통신은 서로 분리될 수 있다. 제1 CXL 스토리지(310_1) 및 호스트(301) 사이의 통신과 제2 CXL 스토리지(310_2) 및 호스트(301) 사이의 통신은 분리되지 않을 수 있다. 제1 CXL 스토리지(310_1) 및 CXL 메모리(320) 사이의 통신과 제2 CXL 스토리지(310_2) 및 CXL 메모리(320) 사이의 통신은 분리되지 않을 수 있다. 그러나, 제1 CXL 스토리지(310_1) 및 호스트(301) 사이의 통신과 제1 CXL 스토리지(310_1) 및 CXL 메모리(320) 사이의 통신은 분리될 수 있다. 제2 CXL 스토리지(310_2) 및 호스트(301) 사이의 통신과 제2 CXL 스토리지(310_2) 및 CXL 메모리(320) 사이의 통신은 분리될 수 있다. 제1 CXL 스토리지(310_1) 및 호스트(301) 사이의 통신과 제2 CXL 스토리지(310_2) 및 CXL 메모리(320) 사이의 통신은 분리될 수 있다. 제2 CXL 스토리지(310_2) 및 호스트(301) 사이의 통신과 제1 CXL 스토리지(310_1) 및 CXL 메모리(320) 사이의 통신은 분리될 수 있다.
이에 따라, 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2) 및 CXL 메모리(320) 사이의 통신은 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2) 및 호스트(301) 사이의 통신에 영향을 주지 않을 수 있다. 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2) 및 CXL 메모리(320) 사이의 통신은 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 호스트(301) 사이의 통신과 독립적으로 동작할 수 있다. 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320)가 독점적인 링크를 사용함으로써, 향상된 성능을 갖는 컴퓨팅 시스템이 제공된다.
제1 및 제2 인터페이스들(IF1, IF2)은 물리적으로 서로 분리될 수 있다. 제1 및 제2 인터페이스들(IF1, IF2) 모두 CXL 인터페이스일 수 있다. 제1 CXL 스토리지(310_1)는 제2 인터페이스(IF2)를 통해 CXL 메모리(320)를 액세스할 수 있다. 제2 CXL 스토리지(310_2)는 제2 인터페이스(IF2)를 통해 CXL 메모리(320)를 액세스할 수 있다.
본 개시의 실시 예에 따르면, 제1 및 제2 CXL 스토리지들(310_1, 310_2)의 CXL 스토리지 컨트롤러(311_1, 311_2)는 제1 인터페이스(IF1)를 통해 호스트(301)와 통신하고 제2 인터페이스(IF2)를 통해 CXL 메모리(320)(즉, 버퍼 메모리)와 통신할 수 있다. 다시 말해서, 제1 및 제2 CXL 스토리지들(310_1, 310_2)의 CXL 스토리지 컨트롤러(311_1, 311_2)는 동종의 또는 공통의 CXL 프로토콜을 기반으로 호스트(301) 및 CXL 메모리(320)와 서로 통신할 수 있고, CXL 메모리(320)의 일부 영역 또는 전체 영역을 버퍼 메모리로서 사용할 수 있다. 다만, 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 호스트(301) 사이의 통신과 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320) 사이의 통신이 섞이지 않도록, 서로 다른 인터페이스(또는 링크)를 사용할 수 있다. 이에 따라, 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320) 사이의 통신은 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 호스트(301) 사이의 통신에 영향을 미치지 않을 수 있다.
상술된 바와 같이, 호스트(301)는 CXL 메모리(320)를 직접 인식할 수 없다. 호스트(301)는 CXL 메모리(320)에 액세스할 수 없다. 호스트(301)는 CXL 메모리(320)를 제어 또는 관리할 수 없다. 대신에, 제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각은 CXL 메모리(320)를 제어 또는 관리할 수 있다. 제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각은 CXL 메모리(320)에 대한 제반 동작을 제어하도록 구성될 수 있다. 예를 들어, 제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각은 CXL 메모리(320)에 초기화 동작 또는 파워-오프 동작을 지시할 수 있다.
도 12b는 도 12a의 컴퓨팅 시스템의 구성 요소들을 좀 더 상세하게 보여주는 블록도이다. 도 12a 및 도 12b를 참조하면, 컴퓨팅 시스템(300)은 제1 CXL 스위치(SW_CXL1), 제2 CXL 스위치(SW_CXL2), 호스트(301), 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320)를 포함할 수 있다.
일 실시 예에서, 도 3b와 마찬가지로, 호스트(301), 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320) 모두는 동일한 인터페이스를 서로 공유하지 않도록 구성될 수 있다. 예를 들어, 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 제1 인터페이스(IF1)를 통해 서로 통신하고, 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 및 CXL 메모리(320)는 제2 인터페이스(IF2)를 통해 서로 통신할 수 있다. 제1 인터페이스(IF1) 및 제2 인터페이스(IF2)는 물리적으로 분리될 수 있다. 제1 인터페이스(IF1) 및 제2 인터페이스(IF2)는 모두 CXL 인터페이스일 수 있다.
제1 CXL 스위치(SW_CXL1)는 제1 인터페이스(IF1)에 포함된 구성 요소일 수 있다. 제1 CXL 스위치(SW_CXL1)는 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2) 사이의 통신을 중재하도록 구성될 수 있다. 예를 들어, 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)가 서로 통신하는 경우, 제1 CXL 스위치(SW_CXL1)는 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 또는 호스트(301)로 전달하도록 구성될 수 있다.
제2 CXL 스위치(SW_CXL2)는 제2 인터페이스(IF2)에 포함된 구성 요소일 수 있다. 제2 CXL 스위치(SW_CXL2)는 CXL 메모리(320), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2) 사이의 통신을 중재하도록 구성될 수 있다. 예를 들어, CXL 메모리(320), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)가 서로 통신하는 경우, 제1 CXL 스위치(SW_CXL1)는 CXL 메모리(320), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)로부터 전달된 요청, 데이터, 응답, 또는 신호 등과 같은 정보를 제1 CXL 스토리지(310_1), 제2 CXL 스토리지(310_2), 또는 CXL 메모리(320)로 전달하도록 구성될 수 있다.
호스트(301)는 CXL 호스트 인터페이스 회로(301a)를 포함할 수 있다. CXL 호스트 인터페이스 회로(301a)는 포트(PT4)를 포함할 수 있다. CXL 호스트 인터페이스 회로(301a)는 제1 CXL 스위치(SW_CXL1)를 통해, 제1 및 제2 CXL 스토리지들(310_1, 310_2)과 통신할 수 있다.
제1 CXL 스토리지(310_1)는 CXL 스토리지 컨트롤러(311_1) 및 불휘발성 메모리(NVM1)를 포함할 수 있다. CXL 스토리지 컨트롤러(311_1)는 제1 CXL 스토리지 인터페이스 회로(311_1a), 프로세서(311_1b), RAM(311_1c), FTL(311_1d), ECC 엔진(311_1e), 낸드 인터페이스 회로(311_1f), 및 제2 CXL 스토리지 인터페이스 회로(311_1g)를 포함할 수 있다. 제1 CXL 스토리지 인터페이스 회로(311_1a)는 제1 포트(PT11)를 포함할 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_1g)는 제2 포트(PT12)를 포함할 수 있다. 도 12b에 도시된 제1 CXL 스토리지 인터페이스 회로(311_1a), 프로세서(311_1b), RAM(311_1c), FTL(311_1d), ECC 엔진(311_1e), 낸드 인터페이스 회로(311_1f), 및 제2 CXL 스토리지 인터페이스 회로(311_1g)는 각각 도 3b에 도시된 제1 CXL 스토리지 인터페이스 회로(211_1a), 프로세서(211_1b), RAM(211_1c), FTL(211_1d), ECC 엔진(211_1e), 낸드 인터페이스 회로(211_1f), 및 제2 CXL 스토리지 인터페이스 회로(211_1g)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
제1 CXL 스토리지 인터페이스 회로(311_1a)는 제1 CXL 스위치(SW_CXL1)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(311_1a)는 제1 CXL 스위치(SW_CXL1)를 통해, 호스트(301)와 통신할 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_1g)는 제2 CXL 스위치(SW_CXL2)와 연결될 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_1g)는 제2 CXL 스위치(SW_CXL2)를 통해, CXL 메모리(320)와 통신할 수 있다.
제2 CXL 스토리지(310_2)는 CXL 스토리지 컨트롤러(311_2) 및 불휘발성 메모리(NVM2)를 포함할 수 있다. CXL 스토리지 컨트롤러(311_2)는 제1 CXL 스토리지 인터페이스 회로(311_2a), 프로세서(311_2b), RAM(311_2c), FTL(311_2d), ECC 엔진(311_2e), 낸드 인터페이스 회로(311_2f), 및 제2 CXL 스토리지 인터페이스 회로(311_2g)를 포함할 수 있다. 제1 CXL 스토리지 인터페이스 회로(311_2a)는 제1 포트(PT21)를 포함할 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_2g)는 제2 포트(PT22)를 포함할 수 있다. 도 12b에 도시된 제1 CXL 스토리지 인터페이스 회로(311_2a), 프로세서(311_2b), RAM(311_2c), FTL(311_2d), ECC 엔진(311_2e), 낸드 인터페이스 회로(311_2f), 및 제2 CXL 스토리지 인터페이스 회로(311_2g)는 각각 도 3b에 도시된 제1 CXL 스토리지 인터페이스 회로(211_2a), 프로세서(211_2b), RAM(211_2c), FTL(211_2d), ECC 엔진(211_2e), 낸드 인터페이스 회로(211_2f), 및 제2 CXL 스토리지 인터페이스 회로(211_2g)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
제1 CXL 스토리지 인터페이스 회로(311_2a)는 제1 CXL 스위치(SW_CXL1)와 연결될 수 있다. 제1 CXL 스토리지 인터페이스 회로(311_2a)는 제1 CXL 스위치(SW_CXL1)를 통해, 호스트(301)와 통신할 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_2g)는 제2 CXL 스위치(SW_CXL2)와 연결될 수 있다. 제2 CXL 스토리지 인터페이스 회로(311_2g)는 제2 CXL 스위치(SW_CXL2)를 통해, CXL 메모리(320)와 통신할 수 있다.
CXL 메모리(320)는 CXL 메모리 컨트롤러(321) 및 버퍼 메모리(BFM)를 포함할 수 있다. CXL 메모리 컨트롤러(321)는 CXL 메모리 인터페이스 회로(321a), 프로세서(321b), 메모리 관리자(321c), 및 버퍼 메모리 인터페이스 회로(321d)를 포함할 수 있다. CXL 메모리 인터페이스 회로(321a)는 포트(PT3)를 포함할 수 있다. 도 12b에 도시된 프로세서(321b), 메모리 관리자(321c), 및 버퍼 메모리 인터페이스 회로(321d)는 각각 도 3b에 도시된 프로세서(221b), 메모리 관리자(221c), 및 버퍼 메모리 인터페이스 회로(221d)와 유사 또는 동일하므로, 자세한 설명은 생략될 수 있다.
CXL 메모리 인터페이스 회로(321a)는 제2 CXL 스위치(SW_CXL2)와 연결될 수 있다. CXL 메모리 인터페이스 회로(321a)는 제2 CXL 스위치(SW_CXL2)를 통해, 제1 및 제2 CXL 스토리지들(310_1, 310_2) 각각과 통신할 수 있다. CXL 메모리 인터페이스 회로(321a)는 포트(PT3)를 포함할 수 있다. 포트(PT3)는 제2 CXL 스위치(SW_CXL2)와 통신을 위한 전용 포트일 수 있다.
일 실시 예에서, 호스트(301) 및 제1 CXL 스토리지(310_1)는 CXL.io를 사용하여 서로 통신하고, 호스트(301) 및 제2 CXL 스토리지(310_2)는 입출력 프로토콜인 CXL.io를 사용하여 서로 통신할 수 있다. 호스트(301), 제1 CXL 스토리지(310_1), 및 제2 CXL 스토리지(310_2)는 CXL.io를 사용하여, 서로 사용자 데이터 또는 다양한 정보를 주고 받을 수 있다.
일 실시 예에서, 제1 CXL 스토리지(310_1) 및 CXL 메모리(320)는 CXL.mem을 사용하여 서로 통신하고, 제2 CXL 스토리지(310_2) 및 CXL 메모리(320)는 CXL.mem을 사용하여 서로 통신할 수 있다. 제1 및 제2 CXL 스토리지들(310_1, 310_2)은 CXL.mem을 사용하여 CXL 메모리(320)의 일부 영역(예를 들어, 맵 데이터(MD1, MD2)가 저장된 영역 또는, CXL 스토리지 전용 영역)을 액세스할 수 있다. 예를 들어, 제1 및 제2 CXL 스토리지들(310_1, 310_2)은 도 7의 읽기 동작 또는 도 8의 쓰기 동작에서 CXL.mem을 사용하여 맵 데이터(MD1, MD2)를 CXL 메모리(320)에 송수신할 수 있다. 단, 본 개시의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, 제1 및 제2 CXL 스토리지들(310_1, 310_2)은 도 4의 초기화 동작 또는 도 9의 파워 오프 동작에서 CXL.io를 사용하여 맵 데이터(MD1, MD2)를 CXL 메모리(320)로 송수신할 수 있다. 단, 본 개시의 범위가 이에 한정되는 것은 아니다.
일 실시 예에서, CXL 메모리(320)는 제1 CXL 스위치(SW_CXL1)에 연결되지 않고 제2 CXL 스위치(SW_CXL2)에 연결되므로, 호스트(301) 및 CXL 메모리(320)는 서로 통신할 수 없다. 호스트(301)는 CXL 메모리(320)의 전체 영역을 액세스할 수 없다.
상술된 바와 같이, 도 3b의 컴퓨팅 시스템(200)과 비교하여, 도 12b의 컴퓨팅 시스템(300)은 제2 CXL 스위치(SW_CXL2)를 더 포함할 수 있다. 컴퓨팅 시스템(300)은 도 4 내지 도 11을 참조하여 설명된 방식을 기반으로, 초기화 동작, 읽기 동작, 쓰기 동작, 및 파워-오프 동작 등을 수행할 수 있다.
도 13은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다. 도 13을 참조하면, 컴퓨팅 시스템(400)은 호스트(401), 복수의 메모리 장치들(402a, 402b), 제1 CXL 스위치(SW_CXL1), 제2 CXL 스위치(SW_CXL2), 제1 CXL 스토리지(410_1), 제2 CXL 스토리지(410_2), 및 복수의 CXL 메모리들(420_1~420_n)을 포함할 수 있다.
호스트(401)는 복수의 메모리 장치들(402a, 402b)과 직접 연결될 수 있다. 호스트(401), 제1 CXL 스토리지(410_1), 및 제2 CXL 스토리지(410_2)는 제1 CXL 스위치(SW_CXL1)와 연결될 수 있다. 호스트(401) 및 제1 CXL 스토리지(410_1)는 제1 CXL 스위치(SW_CXL1)를 통해 서로 통신하고, 호스트(401) 및 제2 CXL 스토리지(410_2)는 제1 CXL 스위치(SW_CXL1)를 통해 서로 통신할 수 있다.
제1 CXL 스토리지(410_1), 제2 CXL 스토리지(410_2), 및 복수의 CXL 메모리들(420_1~420_n)은 제2 CXL 스위치(SW_CXL2)와 연결될 수 있다. 제1 CXL 스토리지(410_1) 및 복수의 CXL 메모리들(420_1~420_n)은 제2 CXL 스위치(SW_CXL2)를 통해 서로 통신하고, 제2 CXL 스토리지(410_2) 및 복수의 CXL 메모리들(420_1~420_n)은 제2 CXL 스위치(SW_CXL2)를 통해 서로 통신 할 수 있다.
일 실시 예에서, 복수의 CXL 메모리들(420_1~420_n) 각각은 도 3a 내지 도 12b를 참조하여 설명된 CXL 메모리(220, 320)와 유사한 구조를 가질 수 있다. 즉, 복수의 CXL 메모리들(420_1~420_n) 각각은 개별적인 메모리 장치 또는 메모리 모듈로 구현될 수 있으며, 서로 다른 물리 포트들을 통해 제2 CXL 스위치(SW_CXL2)와 연결될 수 있다. 즉, 복수의 CXL 메모리들(420_1~420_n)이 제2 CXL 스위치(SW_CXL2)와 연결됨으로써, 제1 및 제2 CXL 스토리지들(410_1, 410_2)에 의해 관리되는 메모리 영역이 고용량화될 수 있다
일 실시 예에서, 제1 및 제2 CXL 스토리지들(410_1, 410_2)은 복수의 CXL 메모리들(420_1~420_n)을 하나의 메모리 클러스터로서 관리할 수 있다. 일 실시 예에서, 제1 및 제2 CXL 스토리지들(410_1, 410_2)은 복수의 CXL 메모리들(420_1~420_n) 중 적어도 일부를 제1 및 제2 CXL 스토리지들(410_1, 410_2)에 대한 전용 메모리로서 할당할 수 있다. 또는 제1 및 제2 CXL 스토리지들(410_1, 410_2)은 복수의 CXL 메모리들(420_1~420_n) 각각의 적어도 일부 영역을 제1 및 제2 CXL 스토리지들(410_1, 410_2)에 대한 전용 메모리로서 할당할 수 있다.
일 실시 예에서, 제2 CXL 스위치(SW_CXL2)에 연결된 복수의 CXL 메모리들(420_1~420_n)은 다양한 용량을 가질 수 있다. 예를 들어, 1TB의 메모리 클러스터를 구성하기 위해, 2개의 512GB의 CXL 메모리들이 제2 CXL 스위치(SW_CXL2)에 연결되거나, 4개의 256GB의 CXL 메모리들이 제2 CXL 스위치(SW_CXL2)에 연결될 수 있다. 복수의 CXL 메모리들(420_1~420_n)로 메모리 클러스터를 구성함으로써, 비용 절감을 위해 CXL 메모리들의 용량을 선택적으로 결정할 수 있다.
일 실시 예에서, 복수의 CXL 메모리들(420_1~420_n) 각각의 용량은 서로 다르거나 같을 수 있다. 예를 들어, 제1 CXL 메모리(420_1)의 용량은 제2 CXL 메모리(420_2)의 용량과 동일하고, 제1 CXL 메모리(420_1)의 용량은 제3 CXL 메모리(420_3)의 용량보다 클 수 있다.
도 14는 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다. 도 14를 참조하면, 컴퓨팅 시스템(500)은 호스트(501), 복수의 메모리 장치들(502a, 502b), CXL 스위치(SW_CXL), 복수의 CXL 스토리지들(510_1~510_m), 및 CXL 메모리(520)를 포함할 수 있다.
호스트(501)는 복수의 메모리 장치들(502a, 502b)과 직접 연결될 수 있다. 호스트(501), 및 복수의 CXL 스토리지들(510_1~510_m)은 CXL 스위치(SW_CXL)와 연결될 수 있고, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다. 복수의 CXL 스토리지들(510_1~510_m) 각각은 CXL 메모리(520)와 직접 연결될 수 있다. 일 실시 예에서, CXL 메모리(520)는 복수의 CXL 스토리지들(510_1~510_m)의 개수만큼 물리 포트를 포함할 수 있다.
일 실시 예에서, 복수의 CXL 스토리지들(510_1~510_m) 각각은 도 3a 내지 도 12b를 참조하여 설명된 CXL 스토리지(210_1, 210_2, 310_1, 310_2)와 유사한 구조를 가질 수 있다. 즉, 복수의 CXL 스토리지들(510_1~510_m) 각각은 개별적인 스토리지 장치 또는 스토리지 모듈로 구현될 수 있으며, 서로 다른 물리 포트들을 통해 CXL 스위치(SW_CXL)와 연결되고, 서로 다른 물리 포트들을 통해 CXL 메모리(520)와 연결될 수 있다. 즉, 복수의 CXL 스토리지들(510_1~510_m)이 CXL 스위치(SW_CXL)와 연결됨으로써, 호스트(501)에 의해 사용 가능한 스토리지 영역이 대용량화 될 수 있다.
일 실시 예에서, CXL 메모리(520)의 적어도 일부 영역은 복수의 CXL 스토리지들(510_1~510_m)에 대한 전용 영역으로 할당될 수 있다. 예를 들어, 호스트(501)는 복수의 CXL 스토리지들(510_1~510_m)을 하나의 스토리지 클러스터로 관리할 수 있다. 하나의 스토리지 클러스터에 대하여, CXL 메모리(520)의 일부 영역은 스토리지 클러스터에 대한 전용 영역으로 할당될 수 있다. 또는 CXL 메모리(520)의 일부 영역들 각각은 복수의 CXL 스토리지들(510_1~510_m) 각각에 대한 전용 영역으로서 할당될 수 있다.
도 15는 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다. 도 15를 참조하면, 컴퓨팅 시스템(600)은 호스트(601), 복수의 메모리 장치들(602a, 602b), 제1 CXL 스위치(SW_CXL1), 제2 CXL 스위치(SW_CXL2), 복수의 CXL 스토리지들(610_1~610_m), 및 복수의 CXL 메모리들(620_1~620_n)을 포함할 수 있다.
호스트(601)는 복수의 메모리 장치들(602a, 602b)과 직접 연결될 수 있다. 호스트(601), 및 복수의 CXL 스토리지들(610_1~610_m)은 제1 CXL 스위치(SW_CXL1)와 연결될 수 있고, 각각은 제1 CXL 스위치(SW_CXL1)를 통해 서로 통신할 수 있다. 복수의 CXL 메모리들(620_1~620_n), 및 복수의 CXL 스토리지들(610_1~610_m)은 제2 CXL 스위치(SW_CXL2)와 연결될 수 있고, 각각은 제2 CXL 스위치(SW_CXL2)를 통해 서로 통신할 수 있다.
일 실시 예에서, 호스트(601)는 복수의 CXL 스토리지들(610_1~610_m)을 하나의 스토리지 클러스터로 관리하고, 복수의 CXL 메모리들(620_1~620_n)을 하나의 메모리 클러스터로 관리할 수 있다. 메모리 클러스터의 일부 영역은 하나의 스토리지 클러스터에 대한 전용 영역(즉, 스토리지 클러스터의 맵 데이터를 저장하기 위한 영역)으로 할당될 수 있다. 또는, 복수의 CXL 메모리들(620_1~620_n)의 영역들 각각은 복수의 CXL 스토리지들(610_1~610_m)에 대한 전용 영역으로서 할당할 수 있다.
도 16은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다. 도 15를 참조하면, 컴퓨팅 시스템(700)은 호스트(701), 복수의 메모리 장치들(702a, 702b), CXL 스위치(SW_CXL), 복수의 CXL 스토리지들(710_1~710_m), 및 복수의 CXL 메모리들(720_1~720_n)을 포함할 수 있다.
호스트(701)는 복수의 메모리 장치들(702a, 702b)과 직접 연결될 수 있다. 호스트(701), 및 복수의 CXL 스토리지들(710_1~710_m)은 CXL 스위치(SW_CXL)와 연결될 수 있고, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다. 복수의 CXL 메모리들(720_1~720_n), 및 복수의 CXL 스토리지들(710_1~710_m)은 직접 연결될 수 있고, 각각은 직접 통신할 수 있다. 예를 들어, 제1 CXL 스토리지(710_1)는 제1 CXL 메모리(720_1)와 직접 연결되고, 제m CXL 스토리지(710_m)는 제n CXL 메모리(720_n)와 직접 연결될 수 있다.
일 실시 예에서, 스토리지 클러스터 및 메모리 클러스터의 구성에 따라, 복수의 CXL 메모리들(720_1~720_n)의 물리 포트들의 개수는 변경될 수 있다. 예를 들어, m이 '8'이고, n이 '4'인 경우를 가정한다. 제1 및 제2 CXL 스토리지들(710_1, 710_2) 각각은 제1 CXL 메모리(720_1)와 직접 연결되고, 제3 및 제4 CXL 스토리지들(710_3, 710_4) 각각은 제2 CXL 메모리(720_2)와 직접 연결되고, 제5 및 제6 CXL 스토리지들(710_5, 710_6) 각각은 제3 CXL 메모리(720_3)와 직접 연결되고, 제7 및 제8 CXL 스토리지들(710_7, 710_8) 각각은 제4 CXL 메모리(720_4)와 직접 연결될 수 있다. 이 경우, 복수의 CXL 메모리들(720_1~720_4) 각각은 2개의 물리 포트들을 포함할 수 있다. 예를 들어, 제1 CXL 메모리(720_1)의 제1 포트는 제1 CXL 스토리지(710_1)와 연결되고, 제1 CXL 메모리(720_1)의 제2 포트는 제2 CXL 스토리지(710_2)와 연결될 수 있다.
예를 들어, m이 '8'이고, n이 '2'인 경우를 가정한다. 제1 내지 제4 CXL 스토리지들(710_1~710_4) 각각은 제1 CXL 메모리(720_1)와 직접 연결되고, 제5 내지 제8 CXL 스토리지들(710_5~710_8) 각각은 제2 CXL 메모리(720_2)와 직접 연결될 수 있다. 이 경우, 복수의 CXL 메모리들(720_1~720_2) 각각은 4개의 물리 포트들을 포함할 수 있다. 예를 들어, 제1 CXL 메모리(720_1)의 제1 포트는 제1 CXL 스토리지(710_1)와 연결되고, 제1 CXL 메모리(720_1)의 제2 포트는 제2 CXL 스토리지(710_2)와 연결되고, 제1 CXL 메모리(720_1)의 제3 포트는 제3 CXL 스토리지(710_3)와 연결되고, 제1 CXL 메모리(720_1)의 제4 포트는 제4 CXL 스토리지(710_4)와 연결될 수 있다.
일 실시 예에서, 호스트(701)는 복수의 CXL 스토리지들(710_1~710_m)을 하나의 스토리지 클러스터로 관리하고, 복수의 CXL 메모리들(720_1~720_n)을 하나의 메모리 클러스터로 관리할 수 있다. 메모리 클러스터의 일부 영역은 하나의 스토리지 클러스터에 대한 전용 영역(즉, 스토리지 클러스터의 맵 데이터를 저장하기 위한 영역)으로 할당될 수 있다. 또는, 복수의 CXL 메모리들(720_1~720_n)의 영역들 각각은 복수의 CXL 스토리지들(710_1~710_m)에 대한 전용 영역으로서 할당할 수 있다.
도 17은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 이하에서, 설명의 편의를 위해, 중복되는 구성 요소들에 대한 상세한 설명은 생략된다. 도 17을 참조하면, 컴퓨팅 시스템(800)은 호스트(801), 복수의 메모리 장치들(802a, 802b), 제1 CXL 스위치(SW_CXL1), 제2 CXL 스위치(SW_CXL2), 복수의 CXL 스토리지들(810_1, 810_2, 810_3), 및 복수의 CXL 메모리들(820_1, 820_2, 820_3)을 포함할 수 있다.
호스트(801)는 복수의 메모리 장치들(802a, 802b)과 직접 연결될 수 있다. 호스트(801), 및 복수의 CXL 스토리지들(810_1, 810_2)은 제1 CXL 스위치(SW_CXL1)와 연결될 수 있고, 각각은 제1 CXL 스위치(SW_CXL1)를 통해 서로 통신할 수 있다. 복수의 CXL 스토리지들(810_1, 810_2), 및 복수의 CXL 메모리들(820_1, 820_2)는 제2 CXL 스위치(SW_CXL2)와 연결될 수 있고, 각각은 제2 CXL 스위치(SW_CXL2)를 통해 서로 통신할 수 있다. 앞서 설명된 바와 유사하게, CXL 메모리들(820_1, 820_2)의 적어도 일부 영역은 CXL 스토리지들(810_1, 810_2)을 위한 전용 영역으로서 할당될 수 있다.
일 실시 예에서, 컴퓨팅 시스템(800)이 구동하는 도중에, CXL 스토리지들(810_1, 810_2) 중 일부 또는 CXL 메모리들(820_1, 820_2) 중 일부가 제1 및 제2 CXL 스위치들(SW_CXL1, SW_CXL2)로부터 연결 해제 또는 제거(hot-remove)될 수 있다. 또는, 컴퓨팅 시스템(800)이 구동하는 도중에, 일부 CXL 스토리지(810_3) 또는 일부 CXL 메모리(820_3)가 제1 및 제2 CXL 스위치들(SW_CXL1, SW_CXL2)로 연결 또는 추가(hot-add)될 수 있다. 이 경우, 호스트(801)는 리셋 동작 또는 핫 플러그 동작을 통해, 제1 및 제2 CXL 스위치들(SW_CXL1, SW_CXL2)과 연결된 장치들에 대한 초기화 동작을 다시 수행함으로써, 메모리 할당을 재수행할 수 있다. 즉, 본 개시의 실시 예에 따른 CXL 스토리지 및 CXL 메모리는 핫-플러그 기능을 지원할 수 있으며, 다양한 연결을 통해, 컴퓨팅 시스템의 저장 용량 및 메모리 용량을 확장시킬 수 있다.
도 18은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 설명의 편의를 위해, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 18을 참조하면, 컴퓨팅 시스템(1000)은 제1 CPU(1110), 제2 CPU(1120), GPU(1130), NPU(1140), CXL 스위치(SW_CXL), 제1 CXL 스토리지(1210_1), 제2 CXL 스토리지(1210_2), CXL 메모리(1220), PCIe 장치(1310), 및 가속기(CXL 장치)(1320)를 포함할 수 있다.
제1 CPU(1110), 제2 CPU(1120), GPU(1130), NPU(1140), 제1 CXL 스토리지(1210_1), 제2 CXL 스토리지(1210_2), PCIe 장치(1310), 및 가속기(CXL 장치)(1320)는 CXL 스위치(SW_CXL)에 공통으로 연결될 수 있으며, 각각은 CXL 스위치(SW_CXL)를 통해 서로 통신할 수 있다. 제1 CXL 스토리지(1210_1)는 CXL 메모리(1220)와 직접 연결될 수 있다. 제2 CXL 스토리지(1210_2)는 CXL 메모리(1220)와 직접 연결될 수 있다.
일 실시 예에서, 제1 CPU(1110), 제2 CPU(1120), GPU(1130), 및 NPU(1140) 각각은 도 1 내지 도 17을 참조하여 설명된 호스트일 수 있으며, 각각은 개별적인 메모리 장치들과 직접 연결될 수 있다.
일 실시 예에서, 제1 CXL 스토리지(1210_1), 제2 CXL 스토리지(1210_2), 및 CXL 메모리(1220)는 도 3a 내지 도 17을 참조하여 설명된 제1 CXL 스토리지, 제2 CXL 스토리지, 및 CXL 메모리일 수 있다. CXL 메모리(1220)의 적어도 일부 영역은 CXL 스토리지(1210)를 위한 전용 영역으로 할당될 수 있다. 즉, 제1 CXL 스토리지(1210_1), 제2 CXL 스토리지(1210_2), 및 CXL 메모리(1220)는 컴퓨팅 시스템(1000)의 스토리지 공간(STR)으로서 사용될 수 있다.
일 실시 예에서, CXL 스위치(SW_CXL)는 다양한 기능을 지원하도록 구성된 PCIe 장치(1310) 또는 가속기(1320)와 연결될 수 있으며, PCIe 장치(1310) 또는 가속기(1320)는 CXL 스위치(SW_CXL)를 통해 제1 CPU(1110), 제2 CPU(1120), GPU(1130), 및 NPU(1140) 각각과 통신하거나 또는, CXL 스토리지(1210)를 액세스할 수 있다.
일 실시 예에서, CXL 스위치(SW_CXL)는 외부 네트워크(network) 또는 패브릭(Fabric)과 연결될 수 있으며, 외부 네트워크(network) 또는 패브릭(Fabric)을 통해 외부 서버와 통신하도록 구성될 수 있다.
도 19는 본 개시에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다. 도 19를 참조하면, 데이터 센터(2000)는 다양한 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(2000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(2000)는 애플리케이션 서버들(2110 내지 21m0) 및 스토리지 서버들(2210 내지 22n0)을 포함할 수 있다. 애플리케이션 서버들의 개수 및 스토리지 서버들의 개수는 실시 예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들의 개수 및 스토리지 서버들의 개수는 서로 다를 수 있다.
이하에서, 제1 스토리지 서버(2210)의 구성이 중점으로 설명된다. 애플리케이션 서버들(2110 내지 21m0) 및 스토리지 서버들(2210 내지 22n0) 각각은 서로 유사한 구조를 가질 수 있으며, 애플리케이션 서버들(2110 내지 21m0) 및 스토리지 서버들(2210 내지 22n0)은 네트워크(NT)를 통해, 서로 통신할 수 있다.
제1 스토리지 서버(2210)는 프로세서(2211), 메모리(2212), 스위치(2213), 제1 스토리지(2215_1), 제2 스토리지(2215_2) CXL 메모리(2214), 및 네트워크 인터페이스 카드(NIC; 2216)를 포함할 수 있다. 프로세서(2211)는 제1 스토리지 서버(2210)의 전반적인 동작을 제어할 수 있고, 메모리(2212)를 액세스하여, 메모리(2212)에 로딩된 명령어를 실행하거나 또는 데이터를 처리할 수 있다. 메모리(2212)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 프로세서(2211) 및 메모리(2212)는 직접 연결될 수 있으며, 하나의 스토리지 서버(2210)에 포함된 프로세서(2211)의 개수 및 메모리(2212)의 개수는 다양하게 선택될 수 있다.
일 실시 예에서, 프로세서(2211)와 메모리(2212)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시 예에서, 프로세서(2211)와 메모리(2212)의 개수는 서로 다를 수도 있다. 프로세서(2211)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(2210)에 대한 상술된 설명은, 애플리케이션 서버들(2110~21m0) 각각에도 유사하게 적용될 수 있다.
스위치(2213)는 제1 스토리지 서버(2210)에 포함된 다양한 구성 요소들 사이의 통신을 중재 또는 라우팅하도록 구성될 수 있다. 일 실시 예에서, 스위치(2213)는 도 3a 내지 도 18을 참조하여 설명된 CXL 스위치(SW_CXL)일 수 있다. 즉, 스위치(2213)는 CXL 프로토콜을 기반으로 구현된 스위치일 수 있다.
CXL 메모리(2214)는 제1 및 제2 스토리지 장치들(2215_1, 2215_2)과 직접 연결될 수 있다. 일 실시 예에서, 제1 및 제2 스토리지 장치들(2215_1, 2215_2)만 CXL 메모리(2214)에 액세스할 뿐, 프로세서(2211)는 CXL 메모리(2214)를 액세스 할 수 없다. CXL 메모리(2214)는 도 3a 내지 도 18을 참조하여 설명된 바와 같이, 제1 및 제2 스토리지 장치들(2215_1, 2215_2)에 대한 전용 메모리 또는 버퍼 메모리로서 할당될 수 있다.
제1 및 제2 스토리지 장치들(2215_1, 2215_2) 각각은 CXL 인터페이스 회로(CXL_IF), 컨트롤러(CTRL), 및 낸드 플래시(NAND)를 포함할 수 있다. 제1 및 제2 스토리지 장치들(2215_1, 2215_2) 각각은 프로세서(2211)의 요청에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 일 실시 예에서, 제1 및 제2 스토리지 장치들(2215_1, 2215_2) 각각은 도 3a 내지 도 18을 참조하여 설명된 제1 및 제2 CXL 스토리지들일 수 있다. 일 실시 예에서, 제1 및 제2 스토리지 장치들(2215_1, 2215_2) 각각은 도 3a 내지 도 18을 참조하여 설명된 바와 유사하게, CXL 메모리(2214)의 적어도 일부 영역 또는 전체 영역을 전용 영역으로 할당 받을 수 있고, 전용 영역을 버퍼 메모리로서 사용(즉, 맵 데이터가 CXL 메모리(2214)에 저장됨)할 수 있다.
실시 예에 따라, 애플리케이션 서버들(2110~21m0)은 제1 및 제2 스토리지 장치들(2215_1, 2215_2)을 포함하지 않을 수도 있다. 스토리지 서버(2210)는 적어도 두개 이상의 스토리지 장치들(2215_1, 2215_2)을 포함할 수 있다. 스토리지 서버(2210)에 포함되는 스토리지 장치들(2215_1, 2215_2)의 개수는 실시 예에 따라 다양하게 선택될 수 있다.
네트워크 인터페이스 카드(NIC; network interface card)(2216)는 CXL 스위치(SW_CXL)와 연결될 수 있다. NIC(2216)는 네트워크(NT)를 통해, 다른 스토리지 서버들(2220~22n0) 또는 다른 애플리케이션 서버들(2110~21m0)과 통신할 수 있다.
일 실시 예에서 NIC(2216)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(2216)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(NT)에 연결될 수 있다. NIC(2216)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(2211) 및/또는 스위치(2213) 등과 연결될 수 있다. 일 실시예에서, NIC(2216)는 프로세서(2211), 스위치(2213), 스토리지 장치(2215) 중 적어도 하나와 통합될 수도 있다.
일 실시 예에서, 네트워크(NT)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(NT)의 액세스 방식에 따라 스토리지 서버들은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(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) 등의 프로토콜에 따라 구현될 수 있다.
일 실시 예에서, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(NT)를 통해 스토리지 서버들(2210~22n0) 중 하나에 저장할 수 있다. 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(2210~22n0) 중 하나로부터 네트워크(NT)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
일 실시 예에서, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 네트워크(NT)를 통해 다른 애플리케이션 서버에 포함된 메모리, CXL 메모리, 또는 스토리지 장치에 액세스할 수 있고, 또는 네트워크(NT)를 통해 스토리지 서버들(2210~22n0)에 포함된 메모리들, CXL 메모리, 또는 스토리지 장치들에 액세스할 수 있다. 단, CXL 메모리(2214)는 스위치(2213)에 직접 연결되어 있지 않으므로, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 네트워크(NT)를 통해 제1 스토리지 서버(2210)에 포함된 CXL 메모리(2214)에 액세스할 수 없다.
이로써, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 다른 애플리케이션 서버들 및/또는 스토리지 서버들에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버들(2110~21m0) 중 적어도 하나는 다른 애플리케이션 서버들 및/또는 스토리지 서버들 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들의 스토리지 장치로부터 스토리지 서버들의 메모리들 또는 CXL 메모리들을 거쳐서, 또는 바로 애플리케이션 서버들의 메모리 또는 CXL 메모리로 이동될 수 있다. 네트워크를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
상술된 실시 예들에서, 제1, 제2, 제3 등의 용어들을 사용하여 본 개시의 기술적 사상에 따른 구성 요소들이 설명되었다. 그러나 제1, 제2, 제3 등과 같은 용어들은 구성 요소들을 서로 구별하기 위해 사용되며, 본 개시를 한정하지 않는다. 예를 들어, 제1, 제2, 제3 등과 같은 용어들은 순서 또는 임의의 형태의 수치적 의미를 내포하지 않는다.
상술된 실시 예들에서, 블록들을 사용하여 본 개시의 실시 예들에 따른 구성 요소들이 참조되었다. 블록들은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, 블록들은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP(Intellectual Property)로 등록된 회로들을 포함할 수 있다.
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
200: 컴퓨팅 시스템
201: 호스트
202a, 202b: 메모리들
210_1: 제1 CXL 스토리지
210_2: 제2 CXL 스토리지
211_1: CXL 스토리지 컨트롤러
211_2: CXL 스토리지 컨트롤러
NVM1: 불휘발성 메모리
NVM2: 불휘발성 메모리
220: CXL 메모리
221: CXL 메모리 컨트롤러
BFM: 버퍼 메모리

Claims (20)

  1. 제1 및 제2 스토리지 장치들;
    상기 제1 스토리지 장치의 제1 맵 데이터 및 상기 제2 스토리지 장치의 제2 맵 데이터를 저장하는 메모리 장치; 및
    상기 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 상기 제1 및 제2 스토리지 장치들 및 상기 외부 호스트 사이의 통신을 중재하는 CXL 스위치를 포함하고,
    상기 제1 스토리지 장치는 상기 메모리 장치와 제2 인터페이스를 통해 연결되고,
    상기 제2 스토리지 장치는 상기 메모리 장치와 제3 인터페이스를 통해 연결되고,
    상기 제1 내지 제3 인터페이스들은 물리적으로 서로 분리된 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 제1 내지 제3 인터페이스들 각각은 CXL(Compute Express Link) 프로토콜을 기반으로 하는 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 메모리 장치는 상기 제1 및 제2 스토리지 장치들만 액세스 가능한 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 제1 스토리지 장치는:
    상기 CXL 스위치와 물리 신호를 송수신 하도록 구성된 제1 포트; 및
    상기 메모리 장치와 물리 신호를 송수신 하도록 구성된 제2 포트를 포함하고,
    상기 제2 스토리지 장치는:
    상기 CXL 스위치와 물리 신호를 송수신 하도록 구성된 제3 포트; 및
    상기 메모리 장치와 물리 신호를 송수신 하도록 구성된 제4 포트를 포함하고,
    상시 메모리 장치는:
    상기 제1 스토리지 장치와 물리 신호를 송수신 하도록 구성된 제5 포트; 및
    상기 제2 스토리지 장치와 물리 신호를 송수신 하도록 구성된 제6 포트를 포함하는 컴퓨팅 시스템.
  5. 제 1 항에 있어서,
    초기화 동작 시, 상기 메모리 장치는 상기 메모리 장치의 적어도 일부 영역을 상기 제1 스토리지 장치의 제1 맵 데이터를 저장하기 위한 제1 전용 영역으로 할당하고,
    상기 초기화 동작 시, 상기 메모리 장치는 상기 메모리 장치의 적어도 일부 영역을 상기 제2 스토리지 장치의 제2 맵 데이터를 저장하기 위한 제2 전용 영역으로 할당하는 컴퓨팅 시스템.
  6. 제 5 항에 있어서,
    상기 제1 전용 영역은 상기 제1 스토리지 장치만 액세스 가능하고, 상기 제2 전용 영역은 상기 제2 스토리지 장치만 액세스 가능한 컴퓨팅 시스템.
  7. 제 5 항에 있어서,
    상기 메모리 장치는:
    상기 제1 스토리지 장치와 물리 신호를 송수신 하도록 구성된 제1 포트; 및
    상기 제2 스토리지 장치와 물리 신호를 송수신 하도록 구성된 제2 포트를 포함하고,
    상기 메모리 장치는 상기 제1 포트에 상기 제1 전용 영역에 대응하는 제1 어드레스 범위를 할당하고, 상기 제2 포트에 상기 제2 전용 영역에 대응하는 제2 어드레스 범위를 할당하는 컴퓨팅 시스템.
  8. 제 5 항에 있어서,
    상기 메모리 장치는 미리 결정된 우선 순위를 기반으로 상기 제1 전용 영역을 우선 할당하고, 이후에 상기 제2 전용 영역을 할당하는 컴퓨팅 시스템.
  9. 제 1 항에 있어서,
    상기 메모리 장치는 상기 제1 및 제2 스토리지 장치들에 대한 우선 순위를 결정하고, 상기 결정된 우선 순위를 기반으로 상기 제1 및 제2 스토리지 장치들로부터 수신된 요청들을 처리하는 컴퓨팅 시스템.
  10. 제 1 항에 있어서,
    파워-오프 동작 시, 상기 메모리 장치는 미리 결정된 우선 순위를 기반으로 상기 제1 및 제2 스토리지 장치들로부터 수신된 읽기 요청들을 스케줄링하는 컴퓨팅 시스템.
  11. 제1 및 제2 스토리지 장치들, CXL 스위치, 및 메모리 장치를 포함하고, 상기 제1 스토리지 장치 및 상기 메모리 장치는 제2 인터페이스를 통해 연결되고, 상기 제2 스토리지 장치 및 상기 메모리 장치는 제3 인터페이스를 통해 연결되는 컴퓨팅 시스템의 동작 방법에 있어서,
    상기 제1 스토리지 장치에 의해, 외부 호스트로부터 제1 읽기 요청을 수신하는 단계;
    상기 제1 스토리지 장치에 의해, 상기 제1 읽기 요청에 응답하여 상기 제2 인터페이스를 통해 제2 읽기 요청을 상기 메모리 장치로 전송하는 단계; 및
    상기 메모리 장치에 의해, 상기 제2 읽기 요청에 응답하여 상기 제2 인터페이스를 통해 제1 부분 맵 데이터를 포함하는 제2 읽기 응답을 상기 제1 스토리지 장치로 전송하는 단계;
    상기 제1 스토리지 장치에 의해, 상기 제1 부분 맵 데이터를 기반으로 상기 제1 스토리지 장치의 불휘발성 메모리로부터 제1 사용자 데이터를 읽는 단계; 및
    상기 제1 스토리지 장치에 의해, 제1 인터페이스를 통해 상기 제1 사용자 데이터를 포함하는 제1 읽기 응답을 상기 외부 호스트로 전송하는 단계를 포함하고,
    상기 스위치는 상기 제1 및 제2 스토리지 장치들 및 상기 외부 호스트 각각과 상기 제1 인터페이스를 통해 연결되고, 상기 제1 및 제2 스토리지 장치들 및 상기 외부 호스트 사이의 통신을 중재하고,
    상기 제1 내지 제3 인터페이스들은 CXL(Compute Express Link) 프로토콜을 기반으로 하고, 물리적으로 서로 분리된 동작 방법.
  12. 제 11 항에 있어서,
    상기 제2 스토리지 장치에 의해, 상기 외부 호스트로부터 제3 읽기 요청은 수신하는 단계;
    상기 제2 스토리지 장치에 의해, 상기 제3 읽기 요청에 응답하여 상기 제3 인터페이스를 통해 제4 읽기 요청을 상기 메모리 장치로 전송하는 단계; 및
    상기 메모리 장치에 의해, 상기 제4 읽기 요청에 응답하여 상기 제3 인터페이스를 통해 제2 부분 맵 데이터를 포함하는 제4 읽기 응답을 상기 제2 스토리지 장치로 전송하는 단계;
    상기 제2 스토리지 장치에 의해, 상기 제2 부분 맵 데이터를 기반으로 상기 제2 스토리지 장치의 불휘발성 메모리로부터 제2 사용자 데이터를 읽는 단계; 및
    상기 제2 스토리지 장치에 의해, 상기 제1 인터페이스를 통해 상기 제2 사용자 데이터를 포함하는 제3 읽기 응답을 상기 외부 호스트로 전송하는 단계를 더 포함하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 메모리 장치에 의해, 상기 제2 읽기 요청 및 상기 제4 읽기 요청을 수신한 후에, 미리 결정된 우선 순위를 기반으로 제4 읽기 요청을 제2 읽기 요청보다 먼저 처리하도록 스케줄링 하는 단계를 더 포함하는 동작 방법.
  14. 제 11 항에 있어서,
    초기화 동작 시, 상기 제1 스토리지 장치에 의해, 상기 메모리 장치의 영역 중 상기 제1 스토리지 장치의 제1 전용 영역에 대한 할당 요청을 가리키는 제1 메모리 할당 요청을 상기 제2 인터페이스를 통해 상기 메모리 장치로 전송하는 단계;
    상기 초기화 동작 시, 상기 제2 스토리지 장치에 의해, 상기 메모리 장치의 영역 중 상기 제2 스토리지 장치의 제2 전용 영역에 대한 할당 요청을 가리키는 제2 메모리 할당 요청을 상기 제3 인터페이스를 통해 상기 메모리 장치로 전송하는 단계; 및
    상기 메모리 장치에 의해, 상기 제1 및 제2 메모리 할당 요청들에 응답하여, 미리 결정된 우선 순위를 기반으로 상기 메모리 장치의 영역을 할당하는 단계를 포함하는 동작 방법.
  15. 제 14 항에 있어서,
    상기 미리 결정된 우선 순위를 기반으로 상기 메모리 장치의 영역을 할당하는 단계는:
    상기 메모리 장치에 의해, 상기 제1 메모리 할당 요청에 응답하여, 상기 메모리 장치의 영역 중 적어도 일부를 상기 제1 스토리지 장치의 제1 전용 영역으로 할당하는 단계; 및
    상기 메모리 장치에 의해, 상기 제2 메모리 할당 요청에 응답하여, 상기 메모리 장치의 영역 중 상기 제1 전용 영역을 제외한 나머지 영역 중에서 적어도 일부를 상기 제2 스토리지 장치의 제2 전용 영역으로 할당하는 단계를 포함하고,
    상기 제1 스토리지 장치는 높은 우선 순위를 갖고, 상기 제2 스토리지 장치는 중간 우선 순위를 갖는 동작 방법.
  16. 제 11 항에 있어서,
    상기 제1 스토리지 장치에 의해, 상기 제1 인터페이스를 통해 수신된 제1 파워 오프 정보에 응답하여, 상기 제2 인터페이스를 통해 제1 읽기 요청을 상기 메모리 장치로 전송하는 단계;
    상기 제2 스토리지 장치에 의해, 상기 제1 인터페이스를 통해 수신된 제2 파워 오프 정보에 응답하여, 상기 제3 인터페이스를 통해 제2 읽기 요청을 상기 메모리 장치로 전송하는 단계;
    상기 메모리 장치에 의해, 미리 결정된 우선 순위를 기반으로 상기 제1 및 제2 읽기 요청들을 스케줄링하는 단계;
    상기 메모리 장치에 의해, 스케줄링한 결과를 기반으로 상기 요청들을 처리하는 단계를 포함하는 동작 방법.
  17. 제 11 항에 있어서,
    초기화 동작 시, 상기 제1 스토리지 장치에 의해, 상기 제1 스토리지 장치에 저장되는 데이터의 종류 또는 데이터의 중요도를 가리키는 제1 특징 정보를 포함하는 제1 메모리 할당 요청을 상기 메모리 장치로 전송하는 단계;
    상기 초기화 동작 시, 상기 제2 스토리지 장치에 의해, 상기 제2 스토리지 장치에 저장되는 데이터의 종류 또는 데이터의 중요도를 가리키는 제2 특징 정보를 포함하는 제2 메모리 할당 요청을 상기 메모리 장치로 전송하는 단계; 및
    상기 메모리 장치에 의해, 상기 제1 특징 정보 및 상기 제2 특징 정보를 기반으로 상기 제1 및 제2 스토리지 장치들의 우선 순위를 결정하는 단계를 포함하는 동작 방법.
  18. 제1 및 제2 스토리지 장치들;
    상기 제1 스토리지 장치의 제1 맵 데이터 및 상기 제2 스토리지 장치의 제2 맵 데이터를 저장하는 메모리 장치;
    상기 제1 및 제2 스토리지 장치들 및 외부 호스트 각각과 제1 인터페이스를 통해 연결되고, 상기 제1 및 제2 스토리지 장치들 및 상기 외부 호스트 사이의 통신을 중재하는 제1 CXL 스위치; 및
    상기 제1 및 제2 스토리지 장치들 및 상기 메모리 장치 각각과 제2 인터페이스를 통해 연결되고, 상기 제1 및 제2 스토리지 장치들 및 상기 메모리 장치 사이의 통신을 중재하는 제2 CXL 스위치를 포함하는 컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 호스트 및 상기 제1 및 제2 스토리지 장치들은 CXL.io 프로토콜을 기반으로 서로 통신하고,
    상기 제1 및 제2 스토리지 장치들 및 상기 메모리 장치는 CXL.mem 프로토콜을 기반으로 서로 통신하는 컴퓨팅 시스템.
  20. 제 18 항에 있어서,
    상기 제1 및 제2 스토리지 장치들은 상기 제1 CXL 스위치 및 상기 제2 CXL 스위치에 장착 또는 제거 가능한 핫 플러그(hot-plug) 기능을 지원하고, 상기 메모리 장치는 상기 제2 CXL 스위치에 장착 또는 제거 가능한 핫-플러그 기능을 지원하는 컴퓨팅 시스템.
KR1020220056898A 2022-05-09 2022-05-09 Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법 KR20230157187A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220056898A KR20230157187A (ko) 2022-05-09 2022-05-09 Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법
CN202310305148.5A CN117033266A (zh) 2022-05-09 2023-03-24 计算系统及其操作方法
US18/131,185 US20230359578A1 (en) 2022-05-09 2023-04-05 Computing system including cxl switch, memory device and storage device and operating method thereof
EP23172195.2A EP4276642A1 (en) 2022-05-09 2023-05-09 Computing system including cxl switch, memory device and storage device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220056898A KR20230157187A (ko) 2022-05-09 2022-05-09 Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230157187A true KR20230157187A (ko) 2023-11-16

Family

ID=88623218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220056898A KR20230157187A (ko) 2022-05-09 2022-05-09 Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법

Country Status (3)

Country Link
US (1) US20230359578A1 (ko)
KR (1) KR20230157187A (ko)
CN (1) CN117033266A (ko)

Also Published As

Publication number Publication date
US20230359578A1 (en) 2023-11-09
CN117033266A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
KR102044023B1 (ko) 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US20230376216A1 (en) Memory device, storage device, and computing system including memory device and storage device
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
EP4276642A1 (en) Computing system including cxl switch, memory device and storage device and operating method thereof
KR20230157187A (ko) Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법
EP4273703A1 (en) Computing system generating map data, and method of operating the same
EP4273708A1 (en) Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices
KR20230156524A (ko) 스토리지 장치들 및 메모리 장치들과 통신하도록 구성된 호스트의 동작 방법, 및 스토리지 장치들 및 메모리 장치들을 포함하는 시스템
EP4273706A1 (en) Storage device, memory device, and system including storage device and memory device
US20230350832A1 (en) Storage device, memory device, and system including storage device and memory device
EP4273702A1 (en) Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system
EP4276639A1 (en) Computing system including memory device and storage device and operating method thereof
KR20230156527A (ko) 맵 데이터를 생성하는 컴퓨팅 시스템, 및 그것의 동작하는 방법
EP4283457A2 (en) Computing system for managing distributed storage devices, and method of operating the same
EP4276634A1 (en) Storage device, computing device including storage device and memory device, and operating method of computing device
US20230359394A1 (en) Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system
KR20230157151A (ko) 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법
KR20230163238A (ko) 분산된 스토리지 장치들을 관리하는 컴퓨팅 시스템, 및 그것의 동작하는 방법
KR20230157080A (ko) 스토리지 장치, 스토리지 장치 및 메모리 장치를 포함하는 컴퓨팅 장치, 그리고 컴퓨팅 장치의 동작 방법
EP4283474A1 (en) Storage device, memory device, and computing system including the same
US20230376217A1 (en) Storage device, memory device, and computing system including the same
EP4283456A1 (en) Memory device, storage device, and computing system including memory device and storage device
US20230084539A1 (en) Computational storage device and storage system including the computational storage device