KR20240090078A - 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치 - Google Patents

연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치 Download PDF

Info

Publication number
KR20240090078A
KR20240090078A KR1020220173904A KR20220173904A KR20240090078A KR 20240090078 A KR20240090078 A KR 20240090078A KR 1020220173904 A KR1020220173904 A KR 1020220173904A KR 20220173904 A KR20220173904 A KR 20220173904A KR 20240090078 A KR20240090078 A KR 20240090078A
Authority
KR
South Korea
Prior art keywords
nic
metadata
memory
cxl
processor
Prior art date
Application number
KR1020220173904A
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 KR1020220173904A priority Critical patent/KR20240090078A/ko
Priority to EP23183791.5A priority patent/EP4386568A1/en
Priority to US18/351,529 priority patent/US20240193091A1/en
Priority to CN202310942857.4A priority patent/CN118193413A/zh
Publication of KR20240090078A publication Critical patent/KR20240090078A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/1012Design facilitation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에 따른 연산가능한 네트워크 인터페이스 카드(computational network interface card)(연산가능한 NIC)은, 메모리 익스펜더(memory expander)와 저장 공간을 공유할 수 있다. 연산가능한 NIC은 인스트럭션들을 포함하는 NIC 메모리; 캐시를 포함하고, 상기 NIC 메모리와 전기적으로 연결된 네트워크 인터페이스 카드 프로세서(NIC 프로세서); 및 상기 NIC 메모리 또는 상기 캐시에 저장된 데이터를 외부로 전달하는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다. 상기 NIC 프로세서에 의해 상기 인스트럭션들이 실행될 때, 상기 NIC 프로세서는 복수의 동작들을 수행하고, 상기 복수의 동작들은 메타 데이터에 대한 작업 권한 요청을 수신하는 동작을 포함할 수 있다. 상기 복수의 동작들은 상기 메타 데이터가 상기 NIC 프로세서의 캐시, 상기 NIC의 캐시, 상기 NIC 메모리, 또는 상기 메모리 익스펜더에 저장되어 있는지를 순차적으로 확인하는 동작을 포함할 수 있다.

Description

연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치{COMPUTABLE NETWORK INTERFACE CARD AND ELECTRONIC APPARATUS INCLUDING THE SAME}
아래 개시는 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치에 관한 것이다.
네트워크 인터페이스 카드(network interface card, NIC)는 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치이다. 네트워크 인터페이스 카드는 네트워크 인터페이스 컨트롤러(network interface controller), 랜 카드(LAN card), 물리 네트워크 인터페이스(physical network interface), 네트워크 어댑터, 네트워크 카드, 이더넷 카드라고 지칭되기도 한다.
네트워크 인터페이스 카드(NIC)는 메모리 또는 캐시에 저장된 데이터를 외부로 전달하는 네트워크 장치이다. 네트워크 인터페이스 카드는 데이터를 송/수신하는 과정에서 발생하는 정보(예: 신호 변환 과정에서 발생하는 정보)를 저장하기 위한 목적으로 버퍼(buffer) 역할을 수행하는 캐시(cache)를 포함한다.
일 실시예에 따른 연산가능한 네트워크 인터페이스 카드(computational network interface card)(연산가능한 NIC)은, 메모리 익스펜더(memory expander)와 저장 공간을 공유할 수 있다. 연산가능한 NIC은 인스트럭션들을 포함하는 NIC메모리; 캐시를 포함하고, 상기 NIC 메모리와 전기적으로 연결된 네트워크 인터페이스 카드 프로세서(NIC 프로세서); 및 상기 NIC 메모리 또는 상기 캐시에 저장된 데이터를 외부로 전달하는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다. 상기 NIC 프로세서에 의해 상기 인스트럭션들이 실행될 때, 상기 NIC 프로세서는 복수의 동작들을 수행하고, 상기 복수의 동작들은 메타 데이터에 대한 작업 권한 요청을 수신하는 동작을 포함할 수 있다. 상기 복수의 동작들은 상기 메타 데이터가 상기 NIC 프로세서의 캐시, 상기 NIC의 캐시, 상기 NIC 메모리, 또는 상기 메모리 익스펜더에 저장되어 있는지를 순차적으로 확인하는 동작을 포함할 수 있다.
상기 메타 데이터는, 분산 파일 시스템에서 활용되는 메타 데이터일 수 있다.
상기 NIC는, CXL(compute express link) 프로토콜에서 정의되는 CXL.cache를 지원하는 CXL-NIC일 수 있다.
상기 메모리 익스펜더는, CXL 프로토콜에서 정의되는 CXL.mem를 지원하는 CXL 메모리 익스펜더인 것일 수 있다.
상기 연산가능한 NIC은, CXL 프로토콜에서 정의되는 type 1, type 2, 또는 type3의 장치일 수 있다.
상기 NIC과 상기 NIC 프로세서는 직렬 연결된 것이고, 상기 연산가능한 NIC을 포함하는 클라이언트 장치는 상기 NIC 프로세서를 경유하여 메타 데이터에 접근할 수 있다.
상기 NIC과 상기 NIC 프로세서는 병렬 연결된 것이고, 상기 연산가능한 NIC을 포함하는 클라이언트 장치는 상기 NIC 프로세서의 경유 없이 메타 데이터에 접근할 수 있다.
상기 복수의 동작은, 상기 메타 데이터가 저장되어 있는 경우, 저장된 메타 데이터의 유효성을 검증하는 동작을 더 포함할 수 있다. 상기 복수의 동작은 상기 메타 데이터가 저장되어 있지 않은 경우, 메타 데이터 서버에 상기 메타 데이터에 대한 관리 권한을 요청하는 동작을 더 포함할 수 있다.
상기 유효성을 검증하는 동작은, 상기 저장된 메타 데이터의 유효 기간을 검증하는 동작을 더 포함할 수 있다. 상기 유효성을 검증하는 동작은, 상기 작업 권한에 대응되는 권한이 상기 NIC 프로세서에 할당되어 있는지를 검증하는 동작을 포함할 수 있다.
일 실시예에 따른 전자 장치는 인스트럭션들을 포함하는 메모리; 상기 메모리와 전기적으로 연결되고, 상기 인스트럭션들을 실행하기 위한 프로세서; 및 메타 데이터에 대한 작업 권한을 관리하는 연산가능한 네트워크 인터페이스 카드(computational network interface card)(연산가능한 NIC)를 포함할 수 있다. 상기 프로세서 또는 상기 연산가능한 NIC은 복수의 동작을 수행할 수 있다. 상기 복수의 동작들은, 상기 프로세서가, 제1 프로세스에 요구되는 메타 데이터에 대한 작업 권한을 상기 연산가능한 NIC에 요청하는 동작을 포함할 수 있다. 상기 복수의 동작들은, 상기 연산가능한 NIC에게 상기 메타 데이터에 대한 관리 권한이 없는 경우, 상기 연산가능한 NIC이 메타 데이터 서버에게 상기 관리 권한을 요청하는 동작을 포함할 수 있다. 상기 복수의 동작들은, 상기 연산가능한 NIC이 상기 메타 데이터 서버로부터 상기 관리 권한을 획득하여, 상기 제1 프로세스에 상기 작업 권한을 할당하는 동작을 포함할 수 있다.
상기 작업 권한은, 상기 메타 데이터에 대한 읽기 권한 또는 쓰기 권한일 수 있다. 상기 관리 권한은, 상기 읽기 권한 또는 상기 쓰기 권한 중 적어도 하나를 상기 전자 장치가 수행하는 프로세스에 할당할 수 있는 권한일 수 있다.
상기 메타 데이터 서버는 글로벌 영역에서 메타 데이터 전체의 작업 권한을 총괄하여 관리하는 것일 수 있다. 상기 연산가능한 NIC은 로컬 영역에서 일부 메타 데이터 대한 관리 권한을 상기 메타 데이터 서버로부터 위임받은 것일 수 있다.
상기 연산가능한 NIC은, 상기 메타 데이터의 읽기 작업을 수행하는 제2 프로세스에 대하여, 상기 메타 데이터에 대한 읽기 권한을 상기 제1 프로세스 및 상기 제2 프로세스 모두에 할당할 수 있다.
상기 전자 장치는, 상기 전자 장치와는 다른 전자 장치가 상기 메타 데이터에 대한 쓰기 권한을 획득한 경우, 상기 메타 데이터에 대한 작업 권한을 상실할 수 있다.
상기 연산가능한 NIC은, 인스트럭션들을 포함하는 NIC 메모리; 캐시를 포함하고, 상기 NIC 메모리와 전기적으로 연결된 네트워크 인터페이스 카드 프로세서(NIC 프로세서); 및 상기 NIC 메모리 또는 상기 캐시에 저장된 데이터를 외부로 전달하는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다.
일 실시예에 따른, CXL 프로토콜에서 정의되는 CXL.mem을 지원하는 메모리 익스펜더는 복수의 메타 데이터가 저장된 메모리 장치; 및 상기 메모리 장치를 제어하는 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 연산가능한 NIC을 포함하는 전자 장치로부터, 상기 복수의 메타 데이터 중 어느 하나에 대한 작업 요청을 수신하고, 상기 작업 요청에 응답하여, 상기 어느 하나에 대한 작업을 수행할 수 있다.
상기 컨트롤러는, CXL 인터페이스릍 통해, 상기 연산가능한 NIC 또는 상기 전자 장치와 통신할 수 있다.
상기 연산가능한 NIC은, CXL 프로토콜에서 정의되는 type 2 또는 type 3의 장치이고, 상기 CXL 프로토콜에서 정의되는 CXL.mem을 지원하는 NIC 메모리를 포함할 수 있다.
상기 연산가능한 NIC은, 메타 데이터에 대한 작업 권한을 상기 전자 장치가 수행하는 프로세스에 할당할 수 있다. 상기 메모리 익스펜더는, 상기 프로세스를 수행하는 상기 전자 장치로부터 상기 작업 요청을 수신할 수 있다.
상기 컨트롤러는, 상기 전자 장치로부터 상기 어느 하나에 대한 읽기 요청을 수신하고, 상기 읽기 요청에 응답하여, 상기 어느 하나를 상기 전자 장치로 전송할 수 있다.
상기 컨트롤러는, 상기 전자 장치로부터 상기 어느 하나에 대한 쓰기 요청 및 결과 데이터를 수신하고, 상기 쓰기 요청에 응답하여, 상기 어느 하나를 상기 결과 데이터로 변경하여 저장할 수 있다.
상기 메타 데이터는, 분산 파일 시스템에서 활용되는 메타 데이터 일 수 있다.
도 1a 및 도 1b는 분산 파일 시스템의 구조 및 동작을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 전자 장치(예: 클라이언트 장치)의 개략적인 블록도를 나타낸다.
도 3는 일 실시예에 따른 연산가능한 NIC의 개략적인 블록도를 나타낸다.
도 4는 일 실시예에 따른 전자 장치에 포함된 CXL 장치를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른, 도 4에 개시된 CXL 장치를 포함하는 전자 장치를 설명하기 위한 도면이다.
도 6a 내지 도 6c는 일 실시예에 따른, 연산가능한 NIC의 타입 별 연결 구조를 설명하기 위한 도면이다.
도 7a 및 도 7b는 일 실시예에 따른, type 2 장치인 연산가능한 NIC의 구조를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른, 메타 데이터 서버와 전자 장치의 동작을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른, 전자 장치가 수행하는 동작의 흐름도를 나타낸다.
도 10 은 일 실시예에 따른, 연산가능한 NIC이 수행하는 동작의 흐름도를 나타낸다
도 11은 일 실시예에 따른, 연산가능한 NIC이 수행하는 동작의 흐름도를 나타낸다
도 12는 분산 파일 시스템에서 수행된 지연 시간 관련 시뮬레이션 결과를 나타낸다.
도 13은 단일 클라이언트를 포함하는 Lustre 분산 파일 시스템의 성능을 나타내는 그래프일 수 있다
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 예를 들어, '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 또한, '~부'는 하나 이상의 프로세서를 포함할 수 있다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1a 및 도 1b는 분산 파일 시스템의 구조 및 동작을 설명하기 위한 도면이다.
고성능 컴퓨팅 시스템은, 초당 수십억 회의 계산을 수행하기 위해 다수의 컴퓨터 시스템 노드가 병렬로 연결된 시스템일 수 있다. 고성능 컴퓨팅 시스템에서는, 복수의 컴퓨터 시스템 노드가 병렬 I/O 경로를 통해 연결되는 분산 파일 시스템(10)이 이용될 수 있다. 분산 파일 시스템(10)은 기상 모델링 및 지진파 탐사와 같은 고성능 컴퓨팅을 지원하기 위해, 매우 큰 크기의 파일 데이터 및/또는 매우 많은 개수의 파일 데이터에 대하여 빠른 속도의 액세스를 제공할 수 있다.
도 1a를 참조하면, 분산 파일 시스템(10)은, 메타 데이터를 관리하는 메타 데이터 서버(11) 및 파일 데이터를 관리하는 객체 스토리지 서버(12)를 분리한 시스템일 수 있다. 메타 데이터는 다른 데이터(예: 파일 데이터)를 설명하는 데이터일 수 있다. 분산 파일 시스템(10)은 파일 데이터의 입출력 경로와 메타 데이터(예: 파일 데이터를 설명하는 메타 데이터)의 입출력 경로를 분리시킴으로써, 시스템의 확장성과 성능을 향상시킨 것일 수 있다. 분산 파일 시스템(10)에서 클라이언트 장치들(예: 클라이언트 1 내지 클라이언트 N), 메타 데이터 서버(11), 및/또는 객체 스토리지 서버(12)는 네트워크를 통해 교신하면서 데이터(예: 파일 데이터, 메타 데이터)를 송수신할 수 있다.
메타 데이터 서버(11)는 메타 데이터가 저장된 적어도 하나의 메타 데이터 타겟(Metadata Target)을 포함할 수 있다. 객체 스토리지 서버(12)는 파일 데이터가 저장된 적어도 하나의 객체 스토리지 타겟(Object Storage Target)을 포함할 수 있다. 관리 서버(13)는 메타 데이터 서버들(11) 및 객체 스토리지 서버들(12)을 관리할 수 있다. 관리 서버(13)는 메타 데이터 서버(11) 및 객체 스토리지 서버(12)의 관리와 연관된 데이터를 저장한 관리 타겟을 포함할 수 있다.
도 1b를 참조하면, 분산 파일 시스템(10)에서 각각의 클라이언트 장치들은 파일 데이터를 활용하기 위해서, 메타 데이터 서버(11)에 메타 데이터(예: 활용하고자 하는 파일 데이터를 설명하는 메타 데이터)를 요청할 수 있다. 이후 클라이언트 장치는 메타 데이터 서버(11)로부터 파일 데이터가 저장된 위치 정보(예: 블록 정보)(예: 메타 데이터)를 획득할 수 있다. 클라이언트 장치는 블록이 위치한 객체 스토리지 서버(12)에 접근하여, 블록에 저장된 데이터(예: 파일 데이터)를 활용할 수 있다.
분산 파일 시스템(10)은 파일 데이터를 관리하는 객체 스토리지 서버(12)의 성능을 향상시킴으로써 발전되어 왔다. 그러나 전술한 바와 같이, 파일 데이터에 대한 임의의 작업은 메타 데이터 서버(11)의 접근(예: 클라이언트 장치의 메타 데이터 서버 접근)을 항상 수반한다. 향상된 객체 스토리지 서버(12)가 이용되더라도, 메타 데이터 서버(11)에서 병목 현상이 발생할 수 있다. 다수의 클라이언트 장치가 분산 파일 시스템(10)으로 과부하(burst)를 가하더라도, 분산 파일 시스템(10)이 각각의 클라이언트 장치들에게 최소 성능(SLA)을 보장하기 위해서는 메타 데이터 서버(11)의 성능을 향상시킬 필요가 있다. 메타 데이터 서버(11)의 성능 향상은 서버의 증설을 통해 간접적으로 해결될 수 있지만, 서버의 증설은 서버 설치 비용 및 유지 보수 비용을 추가로 요구한다.
도 2는 일 실시예에 따른 전자 장치(예: 클라이언트 장치)의 개략적인 블록도를 나타낸다.
전자 장치(100)(예: 클라이언트 장치)는 저장된 메타 데이터(예: 캐싱된 메타 데이터(cached meta data))를 활용할 수 있다. 전자 장치(100)는 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용함으로써 지연 시간(예: 메타 데이터 서버 접근에 따른 지연 시간)을 단축할 수 있다. 전자 장치(100)는 메타 데이터 접근 경로를 단축할 수 있고, 메타 데이터 서버의 처리 시간을 절감할 수 있다.
전자 장치(100)는 연산가능한 네트워트 인터페이스 카드(computational network interface card)(200) 및 CXL 메모리 익스펜더(CXL memory expander)(300)에 기반하여, 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용할 수 있다. 연산가능한 네트워트 인터페이스 카드(200)는 연산가능한 네트워트 인터페이스 컨트롤러(computational network interface controller)로 지칭되는 것일 수 있다. 전자 장치(100)는 CXL 메모리 익스펜더(300) 및/또는 연산가능한 NIC(200)을 활용함으로써, 메타 데이터의 저장 용량을 증대시킬 수 있다.
전자 장치(100)는 네트워크 연결을 통해 메타 데이터 서버(20)와 연결된 것일 수 있다. 전자 장치(100)에서, 연산가능한 NIC(200)이 메타 데이터에 대한 작업 권한을 관리할 수 있다. 메타 데이터 서버(20)가 글로벌 영역에서 메타 데이터의 작업 권한을 관리하고 연산가능한 NIC(200)이 로컬 영역에서 메타 데이터의 작업 권한을 관리함으로써, 데이터의 일관성(coherency)(무결성(integrity))이 효율적으로 유지될 수 있다.
전자 장치(100)는 분산 파일 시스템의 클라이언트 장치로 기능하는 것일 수 있다. 전자 장치(100)는 개인용 컴퓨터(PC), 휴대용 장치, 어플리케이션 서버, 또는 저장 서버일 수 있다. 휴대용 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 스마트 디바이스(smart device)로 구현될 수 있다. 스마트 디바이스는 스마트 와치(smart watch), 스마트 밴드(smart band), 또는 스마트 링(smart ring)으로 구현될 수 있다.
도 2를 참조하면, 전자 장치(100)는 프로세서(110), 메모리(120), 및 연산가능한 NIC(200)를 포함할 수 있다. 전자 장치(100)는 CXL 메모리 익스펜더(300)를 더 포함할 수 있다.
프로세서(110)는 메모리(120)에 저장된 데이터를 처리할 수 있다. 프로세서(110)는 메모리(120)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(110)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
프로세서(110)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다. 예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
메모리(120)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다. 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다. 비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
연산가능한 NIC(200)은 Smart NIC 또는 Data Processing Unit로 지칭되는 것일 수 있다. 연산가능한 NIC(200)은 프로세서(예: 도 3의 NIC 프로세서(210))를 통해 작업(예: 메타 데이터 관리)을 수행할 수 있다. 연산가능한 NIC(200)은 메타 데이터를 저장(예: 캐싱)할 수 있다. 연산가능한 NIC(200)은 저장된 메타 데이터(예: 캐싱된 메타 데이터(cached meta data))를 관리할 수 있다.
CXL 메모리 익스펜더(300)는 외장형 저장 장치인 SSD(Solid State Drive)와 유사한 형태로 구성된 것일 수 있다. CXL 메모리 익스팬더(300)는 SSD의 장착 위치에 장착될 수 있고, DRAM 용량 확장에 기여할 수 있다. CXL 메모리 익스펜더(300)는 메타 데이터를 저장할 수 있다. 연산가능한 NIC(200) 및 CXL 메모리 익스펜더(300)에 대해서는 도 3을 통해 자세히 설명하도록 한다.
도 3는 일 실시예에 따른 연산가능한 NIC의 개략적인 블록도를 나타낸다.
연산가능한 NIC(200)은 전자 장치(예: 도 2의 전자 장치(100))의 네트워크(예: local area network(LAN))를 통한 연결(예: 다른 클라이언트 장치 및/또는 서버와의 연결)에 기여할 수 있다. 연산가능한 NIC(200)은 전자 장치(100)에 의해 요청된 메타 데이터에 접근하기 위해 CXL 메모리 익스펜더(300)에 접근할 수 있다.
도 3을 참조하면, 연산가능한 NIC(200)은 NIC 프로세서(210), NIC 메모리(220), 및 CXL-NIC(230)를 포함할 수 있다.
NIC 프로세서(210)는 저전력을 소모하는 CPU(예: FPGA(field programmable gate arrays, RISC(reduced instruction set computer) 마이크로프로세서)로 구성된 것일 수 있다. NIC 프로세서(210)는 NIC 메모리(220), CXL-NIC(230), 캐시(240), 및/또는 CXL 메모리 익스펜더(300)에 저장된 메타 데이터를 관리할 수 있다. 적은 비용만으로도 지연 시간(예: 메타 데이터 서버 접근에 따른 지연 시간)을 단축하기 위해, NIC 프로세서(210)는 메타 데이터 관리 작업만을 수행하도록 구성된 것일 수 있다.
NIC 메모리(220), CXL-NIC(230), 캐시(240), 및/또는 CXL 메모리 익스펜더(300)는 메타 데이터를 저장할 수 있다.
CXL-NIC(230)은 CXL(compute epress link) 프로토콜에서 정의되는 CXL.cache를 지원할 수 있다. CXL-NIC(230)은 CXL 프로토콜에서 정의되는type 1의 장치일 수 있다. CXL-NIC(230)은 캐시(예: 도 5의 캐시(250))를 포함할 수 있다. CXL-NIC(230)의 캐시(250)에는 메타 데이터가 저장될 수 있다.
캐시(240)는 NIC 메모리(220)와 NIC 프로세서(210) 간의 통신 속도 향상을 위해 중간 버퍼 역할을 수행하는 메모리일 수 있다. 캐시(240)는 NIC 메모리(220)에 비해 데이터 처리 속도가 빠른 것일 수 있다. NIC 프로세서(210)는 NIC 메모리(220)에 저장된 일부 데이터(예: 메타 데이터)를 캐시(240)에 저장해 둠으로써, 빠른 정보처리를 수행할 수 있다. 캐싱(caching)은 캐시(240)에 데이터를 저장해두는 방식을 지칭하는 것일 수 있다.
CXL 메모리 익스펜더(300)는 CXL 프로토콜에서 정의되는 CXL.mem을 지원할 수 있다. CXL 메모리 익스펜더(300)는 CXL 프로토콜에서 정의되는type 3의 장치일 수 있다. CXL 메모리 익스펜더(300)는 CXL 인터페이스를 통해, 전자 장치(100) 및 연산가능한 NIC(200)과 직접 연결된 것일 수 있다.
CXL 메모리 익스펜더(300)는 메모리 장치(310) 및 컨트롤러(320)를 포함할 수 있다.
메모리 장치(310)는 데이터(예: 메타 데이터)를 저장할 수 있다. 컨트롤러(320)는 메모리 장치(310)에 데이터(예: 메타 데이터)를 저장하거나 또는 메모리 장치(310)에 저장된 데이터(예: 메타 데이터)를 읽을 수 있다.
컨트롤러(320)는 연산가능한 NIC(200)을 포함하는 전자 장치(예: 도 2의 전자 장치(100))로부터, 메타 데이터에 대한 작업 요청을 수신할 수 있다. 연산가능한 NIC(200)은 메타 데이터에 대한 작업 권한을 전자 장치(100)가 수행하는 프로세스에 할당할 수 있다. 컨트롤러(320)는, 프로세스를 수행하는 전자 장치(100)로부터 메타 데이터에 대한 작업 요청을 수신할 수 있다. 메타 데이터는 분산 파일 시스템에서 활용되는 메타 데이터일 수 있다. 작업 요청은 읽기 요청 또는 쓰기 요청일 수 있다.
컨트롤러(320)는 수신한 작업 요청에 응답하여, 메타 데이터에 대한 작업을 수행할 수 있다. 컨트롤러(320)는 메타 데이터에 대한 읽기 요청에 응답하여, 읽기 요청에 대응되는 메타 데이터를 전자 장치(100)(예: 메타 데이터에 대해 읽기 권한을 갖고 있는 전자 장치)로 전송할 수 있다. 컨트롤러(320)는 메타 데이터에 대한 쓰기 요청에 응답하여, 쓰기 요청에 대응되는 메타 데이터를 결과 데이터(예: 쓰기 요청과 함께 수신한 결과 데이터)로 변경하여 저장할 수 있다. CXL 메모리 익스펜더(300)에 저장된 메타 데이터의 일관성 유지를 위한 동작은 도 8을 통해 자세히 설명하도록 한다.
CXL 메모리 익스펜더(300)는 전자 장치(100)의 저장 공간을 확장할 수 있다. CXL 메모리 익스펜더(300)가 장착된 전자 장치(100)는 메모리(예: 도 2의 메모리(120))의 저장 공간과 CXL 메모리 익스펜더(300)의 저장 공간을 동시에 사용할 수 있다. CXL 메모리 익스펜더(300)를 활용함으로써, 전자 장치(100)는 데이터(예: 메타 데이터) 처리량의 증가로 심화된 지연 현상을 최소화할 수 있다.
CXL 메모리 익스펜더(300)에 메타 데이터를 저장함으로써, CXL 메모리 익스펜더(300)를 활용하는 전자 장치(100)는 메타 데이터의 접근이 용이할 수 있다. CXL 메모리 익스펜더(300)에 저장된 메타 데이터를 활용함으로써, 메타 데이터 서버의 부하가 절감될 수 있다.
대기(polling) 중인 연산가능한 NIC(200)은 전자 장치(100)의 요청(예: 메타 데이터와 연관된 요청)에 대해 즉각적인 응답을 제공할 수 있다. 연산가능한 NIC(200)은 메타 데이터와 연관된 요청(예: 작업 요청)을 수신한 경우, 메타 데이터가 캐시(240), CXL-NIC(230)의 캐시(예: 도 4의 캐시(250)), NIC 메모리(220) 또는 CXL 메모리 익스펜더(300)에 저장되어 있는지 순차적으로 확인할 수 있다. 메타 데이터가 캐시(240), CXL-NIC(230)의 캐시(250), NIC 메모리(220), 또는 CXL 메모리 익스펜더(300)에 저장되어 있는 경우, 연산가능한 NIC(200)은 메타 데이터 서버(20)와의 통신 없이 전자 장치(100)에게 즉각적인 응답을 제공할 수 있다.
전자 장치(100)가 요청한 메타 데이터가 캐시(240), CXL-NIC(230)의 캐시(250), NIC 메모리(220), 또는 CXL 메모리 익스펜더(300)에 저장되어 있는 경우는 캐시 적중(cache hit)이라고 지칭될 수 있다. 전자 장치(100)가 요청한 메타 데이터가 캐시(240), CXL-NIC(230)의 캐시(250), NIC 메모리(220), 또는 CXL 메모리 익스펜더(300)에 저장되어 있지 않은 경우는 캐시 비적중(cache miss)라고 지칭될 수 있다.
연산가능한 NIC(200)의 캐시 적중 확률을 높이기 위해, 메타 데이터의 저장 용량이 증대될 필요가 있다. 캐시 적중 확률을 높이기 위해 연산 가능한 NIC(200)은 CXL 프로토콜을 지원하는 CXL 장치(예: CXL-NIC(230), CXL 메모리 익스펜더(300))를 활용할 수 있다. 이하에서는 CXL 장치에 대해 자세히 설명하도록 한다.
도 4는 일 실시예에 따른 전자 장치에 포함된 CXL 장치를 설명하기 위한 도면이다. 도 5는 일 실시예에 따른, 도 4에 개시된 CXL 장치를 포함하는 전자 장치를 설명하기 위한 도면이다.
CXL 프로토콜(CXL.cache, CXL.mem, CXL,io)을 지원하는 CXL 장치는, 지원하는 CXL 프로토콜 종류에 따라 type 1, type 2, 또는 type 3으로 구분될 수 있다. CXL 인터페이스를 통해 CXL.cache를 지원하는 CXL 장치는 type 1의 장치일 수 있다. CXL 인터페이스를 통해 CXL.mem을 지원하는 CXL 장치는 type 3의 장치일 수 있다. CXL 인터페이스를 통해 CXL.cache 및 CXL.mem을 모두 지원하는 CXL 장치는 type 2의 장치일 수 있다.
도 4의 410을 참조하면, 연산가능한 NIC(200)은 CXL-NIC(230)을 활용할 수 있다. CXL-NIC(230)은 CXL(compute express link) 프로토콜에서 정의되는 CXL.cache를 지원할 수 있다. 연산가능한 NIC(200) 또한 CXL.cache를 지원할 수 있다. 연산가능한 NIC(200)은 동일한 CXL 프로토콜을 지원하는 CXL-NIC(230)의 캐시(250)를 공유할 수 있다. 연산가능한 NIC(200)은 캐시(240)와 캐시(250)(예: CXL-NIC(230)의 캐시(250))를 동시에 사용할 수 있다. 연산가능한 NIC(200)의 캐시 용량은 증대된 것일 수 있다. 연산가능한 NIC(200)은 CXL 프로토콜에서 정의되는 type 1 또는 type 2의 장치일 수 있다.
도 4의 420을 참조하면, 연산가능한 NIC(200)은 CXL 메모리 익스펜더(300)를 활용할 수 있다. CXL 메모리 익스펜더(300)는 CXL 프로토콜에서 정의되는 CXL.mem을 지원할 수 있다. 연산가능한 NIC(200) 또한 CXL.mem을 지원할 수 있다. 연산가능한 NIC(200)은 동일한 CXL 프로토콜을 지원하는 CXL 메모리 익스펜더(300)를 사용할 수 있다. 연산가능한 NIC(200)의 메모리 용량은 증대된 것일 수 있다. 도 4에서 NIC 메모리(220)가 DRAM를 포함하고 있지만, 메모리의 구현 예가 DRAM으로 한정되는 것은 아니다. 연산가능한 NIC(200)은 CXL 프로토콜에서 정의되는 type 2 또는 type 3의 장치일 수 있다.
도 5를 참조하면, 연산가능한 NIC(200)은 CXL-NIC(230) 및 CXL 메모리 익스펜더(300)를 동시에 활용할 수 있다. 연산가능한 NIC(200)은 CXL-NIC(230)을 포함할 수 있다. 연산가능한 NIC(200)은 CXL 메모리 익스펜더(CXL memory expander)와 저장 공간을 공유할 수 있다.
연산가능한 NIC(200)은 CXL 프로토콜에서 정의되는 CXL.mem 및 CXL.cache를 동시에 지원할 수 있다. 연산가능한 NIC(200)은 CXL 프로토콜에서 정의되는 type 2의 장치일 수 있다.
연산가능한 NIC(200)은 CXL 인터페이스를 통해 프로세서(110)의 메타 데이터에 대한 요청을 수신할 수 있다. 연산가능한 NIC(200)은 메타 데이터가 저장(예: 캐싱)되어 있는지를 확인할 수 있다.
메타 데이터가 저장되어 있는 경우, 연산가능한 NIC(200)은 메타 데이터 서버(20)에 대한 접근 없이도 프로세서(110)의 요청에 빠르게 응답할 수 있다. 연산가능한 NIC(200)은 메타 데이터가 캐시(예: 캐시(240), 캐시(250))에 저장(예: 캐싱)되어 있는지를 확인할 수 있다. 캐시(240, 250)는 메모리(예: NIC 메모리(220), CXL 메모리 익스펜더(300))에 비해 데이터 처리 속도가 빠른 것일 수 있다. 연산가능한 NIC(200)은 메타 데이터가 캐시(240, 250)에 저장되어 있지 않은 경우, 메모리(예: NIC 메모리(220), CXL 메모리 익스펜더(300))에 저장되어 있는지를 확인할 수 있다.
메타 데이터가 저장되어 있지 않은 경우, 연산가능한 NIC(200)은 메타 데이터 서버(20)에 접근한 후에 프로세서(110)의 요청에 응답할 수 있다. 연산가능한 NIC(200)이 수행하는 동작에 대해서는 도 10 및 도 11을 통해 자세히 설명하도록 한다.
도 6a 내지 도 6c는 일 실시예에 따른, 연산가능한 NIC의 타입 별 연결 구조를 설명하기 위한 도면이고, 도 7a 및 도 7b는 일 실시예에 따른, type 2 장치인 연산가능한 NIC의 구조를 설명하기 위한 도면이다.
연산가능한 NIC(200)은 NIC 프로세서(210)와 NIC(예: CXL-NIC(230) 또는 NIC(260))의 연결 방식에 따라 직렬 구조 또는 병렬 구조로 구분될 수 있다. NIC 프로세서(210)와 NIC(예: CXL-NIC(230) 또는 NIC(260))의 연결 방식에 따라 클라이언트 장치(예: 도 2의 전자 장치(100))가 메타 데이터를 접근하는 경로가 상이할 수 있다.
후술하는 것과 같이 총 6가지 방식으로 연산가능한 NIC(200)의 구조가 구분될 수 있다. NIC 프로세서(210)에 포함된 캐시와 NIC(예: CXL-NIC(230) 또는 NIC(260))에 포함된 캐시 간의 특성(예: private owned, coherence)에 따라 연산가능한 NIC(200)의 구조는 더 세분화될 수 있지만, 이를 고려하지 않고 단순화하여 표현하였다. 따라서 연산가능한 NIC(200)의 구조는 도 6a 내지 도 6c의 예시에 제한되지 않는다.
도 6a의 610을 참조하면, CXL 프로토콜에서 정의되는 type 1의 연산가능한 NIC(200)의 직렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache를 지원하고, CXL.mem을 지원하지 않을 수 있다. CXL-NIC(230)과 NIC 프로세서(210)는 직렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)를 경유하여 메타 데이터에 접근할 수 있다.
도 6a의 620을 참조하면, CXL 프로토콜에서 정의되는 type 1의 연산가능한 NIC(200)의 병렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache를 지원하고, CXL.mem을 지원하지 않을 수 있다. CXL-NIC(230)과 NIC 프로세서(210)는 병렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)의 경유 없이 메타 데이터에 접근할 수 있다.
도 6b의 630을 참조하면, CXL 프로토콜에서 정의되는 type 3의 연산가능한 NIC(200)의 직렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache를 지원하지 않고, CXL.mem을 지원할 수 있다. NIC(260)과 NIC 프로세서(210)는 직렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)를 경유하여 메타 데이터에 접근할 수 있다.
도 6b의 640을 참조하면, CXL 프로토콜에서 정의되는 type 3의 연산가능한 NIC(200)의 병렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache를 지원하지 않고, CXL.mem을 지원할 수 있다. NIC(260)과 NIC 프로세서(210)는 병렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)의 경유 없이 메타 데이터에 접근할 수 있다.
도 6C의 650 및 도 7a를 참조하면, CXL 프로토콜에서 정의되는 type 2의 연산가능한 NIC(200)의 직렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache 및 CXL.mem을 모두 지원할 수 있다. CXL-NIC(230)과 NIC 프로세서(210)는 직렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)를 경유하여 메타 데이터에 접근할 수 있다.
도 6c의 660 및 도 7b를 참조하면, CXL 프로토콜에서 정의되는 type 3의 연산가능한 NIC(200)의 병렬 구조를 확인할 수 있다. 연산가능한 NIC(200)은 CXL.cache 및 CXL.mem을 모두 지원할 수 있다. CXL-NIC(230)과 NIC 프로세서(210)는 병렬 연결된 것이고, 연산가능한 NIC(200)을 포함하는 클라이언트 장치는 NIC 프로세서(210)의 경유 없이 메타 데이터에 접근할 수 있다.
장치(예: 도 2의 전자 장치(100), 도 2의 메타 데이터 서버(20)) 또는 시스템(예: 분산 파일 시스템)이 CXL.cache 프로토콜을 지원하게 되면, 캐시 영역이 보다 용이하게 활용될 수 있다. 장치(예: 전자 장치(100), 메타 데이터 서버(20)) 또는 시스템(예: 분산 파일 시스템)이 CXL.mem 프로토콜을 지원하게 되면, 메모리 공유가 용이해질 수 있다. CXL.cache 프로토콜을 통해서 캐시 일관성(cache coherency)이 보장될 수 있으므로, 캐시 일관성이 보장된 상황에서 공유된 메모리 접근을 수행하면 캐시 일관성과 연관된 소프트웨어 오버헤드가 절감될 수 있다. 장치(예: 전자 장치(100), 메타 데이터 서버(20)) 또는 시스템(예: 분산 파일 시스템)이 CXL.cache와 CXL.mem을 모두 지원하는 경우, 공유된 메모리 접근(shared memory access)이 용이해질 수 있다. 이하에서는 메타 데이터 서버(20)와 전자 장치(100)의 동작을 설명하도록 한다.
도 8은 일 실시예에 따른, 메타 데이터 서버와 전자 장치의 동작을 설명하기 위한 도면이고, 도 9는 일 실시예에 따른, 전자 장치가 수행하는 동작의 흐름도를 나타낸다.
도 8을 참조하면, 일 실시예에 따르면, 연산가능한 NIC(예: 제1 연산가능한 NIC, 제2 연산가능한 NIC)(예: 도 2의 연산가능한 NIC(200))은 메타 데이터(예: 메타 데이터 A)에 대한 작업 권한을 관리할 수 있다. 메타 데이터 서버(예: 도 2의 메타 데이터 서버(20))는 글로벌 영역에서 메타 데이터의 작업 권한을 관리할 수 있다. 연산가능한 NIC은 로컬 영역에서 메타 데이터의 작업 권한을 관리할 수 있다. 메타 데이터 서버와 연산가능한 NIC이 메타 데이터의 작업 권한을 나누어 관리함으로써, 데이터의 일관성(coherency)(무결성(integrity))이 효율적으로 유지될 수 있다.
메타 데이터 서버는 메타 데이터(예: 메타 데이터 A)에 대한 관리 권한을 연산가능한 NIC(예: NIC 프로세서 1, NIC 프로세서 2)에 양도하는 메커니즘이 도입된 것일 수 있다. 메타 데이터 서버에 저장되어 있던 메타 데이터(예: 메타 데이터 A)가 제1 연산가능한 NIC에 저장(예: 캐시)될 때, 메타 데이터 서버는 메타 데이터에 대한 관리 권한을 제1 연산가능한 NIC에 양도(예: 할당)할 수 있다. 제1 연산가능한 NIC이 획득한 관리 권한이 유효한 동안, 제1 연산가능한 NIC을 포함하는 전자 장치(801)(예: 클라이언트 장치)는 메타 데이터 서버에 접근할 필요 없이 저장된 메타 데이터 A(예: 캐싱된 메타 데이터 A, cached meta data A)를 빠르게 이용할 수 있다.
만약 다른 전자 장치(802)(예: 클라이언트 장치)가 메타 데이터 A(에: 제1 연산가능한 NIC이 작업 권한을 관리하는 메타 데이터 A)에 대한 작업을 수행하고자 하는 경우, 메타 데이터 서버는 제1 연산가능한 NIC에 할당된 권리 권한을 회수(예: 비활성화)할 수 있다. 이후 메타 데이터 서버는 제2 연산가능한 NIC에 메타 데이터 A에 대한 관리 권한을 양도(예: 할당)할 수 있다. 전술한 메커니즘을 통해, 복수의 전자 장치(801, 802)가 동일한 데이터(예: 메타 데이터 A)에 접근하는 상황에서 데이터의 일관성(무결성)이 보장될 수 있다. 메타 데이터 서버는 글로벌 영역에서 메타 데이터 전체의 작업 권한을 총괄하여 관리할 수 있다. 연산가능한 NIC은 로컬 영역에서 일부 메타 데이터에 대한 관리 권한을 위임받은 것일 수 있다.
메타 데이터에 대한 작업은 읽기 작업 및 쓰기 작업을 포함할 수 있다. 읽기 작업은 하나의 메타 데이터에 대해 복수의 전자 장치(예: 복수의 프로세스)가 수행할 수 있다. 쓰기 작업은 하나의 메타 데이터에 대해 하나의 전자 장치(예: 하나의 프로세스)만이 수행할 수 있다.
전자 장치(801)는 프로세스1-1에 요구되는 메타 데이터 A에 대한 읽기 권한을 제1 연산가능한 NIC에게 요청할 수 있다. 메타 데이터 A에 대한 관리 권한(예: 읽기 권한을 할당할 수 있는 권한)이 제1 연산가능한 NIC에게 없는 경우, 제1 연산가능한 NIC은 메타 데이터 서버에게 메타 데이터 A에 대한 관리 권한을 요청하여 관리 권한을 획득할 수 있다. 제1 연산가능한 NIC은 메타 데이터 A에 대한 읽기 권한을 프로세스1-1(예: 프로세스 1-1을 수행하는 전자 장치(801))에 할당할 수 있다.
전자 장치(801)가 프로세스 1-2를 수행할 때(예: 프로세스 1-1과 프로세스 1-2를 동시에 수행할 때) 동일한 메타 데이터(예: 메타 데이터 A)가 요구되는 경우, 전자 장치(801)는 프로세스 1-2에 요구되는 메타 데이터 A에 대한 읽기 권한을 제1 연산가능한 NIC에게 요청할 수 있다. 제1 연산가능한 NIC은 메타 데이터 A에 대한 관리 권한(예: 읽기 권한을 할당할 수 있는 권한)을 가지고 있으므로, 메타 데이터 서버와 통신할 필요 없이 메타 데이터 A에 대한 읽기 권한을 프로세스1-2(예: 프로세스 1-2을 수행하는 전자 장치(801))에 할당할 수 있다. 전자 장치(801)는 프로세스 1-1 및 프로세스 1-2를 동시에 수행할 수 있고, 이 때 메타 데이터 서버와의 통신이 요구되지 않으므로 locking 오버헤드가 절감될 수 있다.
전자 장치(802)가 프로세스 2-1을 수행할 때(예: 전자 장치(801)의 프로세스(예: 프로세스 1-1, 프로세스 1-2) 및 전자 장치(802)의 프로세스(예: 프로세스 2-1)이 동시에 수행될 때) 동일한 메타 데이터(예: 메타 데이터 A)가 요구되는 경우, 전자 장치(802)는 프로세스 2-1에 요구되는 메타 데이터 A에 대한 읽기 권한을 제2 연산가능한 NIC에게 요청할 수 있다. 메타 데이터 A에 대한 관리 권한(예: 읽기 권한을 할당할 수 있는 권한)이 제2 연산가능한 NIC에게 없으므로, 제2 연산가능한 NIC은 메타 데이터 서버에게 메타 데이터 A에 대한 관리 권한을 요청하여 관리 권한을 획득할 수 있다. 제2 연산가능한 NIC은 메타 데이터 A에 대한 읽기 권한을 프로세스2-1(예: 프로세스 2-1을 수행하는 전자 장치(802))에 할당할 수 있다. 전술한 바와 같이 읽기 작업은 복수의 프로세스(예: 복수의 전자 장치)에 의해 동시에 수행될 수 있다. 그러나 쓰기 작업은 단일 프로세스(예: 단일 프로세스)에 의해서만 수행될 수 있다.
전자 장치(802)가 프로세스 2-2를 수행할 때(예: 전자 장치(801)의 프로세스(예: 프로세스 1-1, 프로세스 1-2) 및 전자 장치(802)의 프로세스(예: 프로세스 2-1)가 이미 수행되고 있을 때) 동일한 메타 데이터(예: 메타 데이터 A)에 대한 쓰기 작업이 요구되는 경우, 전자 장치(802)는 프로세스 2-2에 요구되는 메타 데이터 A에 대한 쓰기 권한을 제2 연산가능한 NIC에게 요청할 수 있다. 제2 연산가능한 NIC은 제한된 관리 권한(예: 읽기 권한만을 할당할 수 있는 권한)을 갖고 있으므로, 제2 연산가능한 NIC은 메타 데이터 A에 대한 온전한 관리 권한(예: 읽기 권한 및/또는 쓰기 권한을 할당할 수 있는 권한)을 메타 데이터 서버에 요청할 수 있다. 메타 데이터 서버는 그동안 위임한 관리 권한(예: 제1 연산가능한 NIC에게 위임한 읽기 권한, 제2 연산가능한 NIC에게 위임한 읽기 권한)을 회수할 수 있다. 메타 데이터 서버는 메타 데이터 A에 대한 온전한 관리 권한(예: 읽기 권한 및/또는 쓰기 권한을 할당할 수 있는 권한)을 제2 연산가능한 NIC에 할당할 수 있다. 제2 연산가능한 NIC은 메타 데이터 A에 대한 쓰기 권한을 프로세스2-2(예: 프로세스 2-2를 수행하는 전자 장치(802))에 할당할 수 있다.
전자 장치(802)가 프로세스 2-1를 다시 수행할 때(예: 전자 장치(802)의 프로세스(예: 프로세스 2-2)가 이미 수행되고 있을 때) 동일한 메타 데이터(예: 메타 데이터 A)에 대한 쓰기 작업이 요구되는 경우, 전자 장치(802)는 프로세스 2-1에 요구되는 메타 데이터 A에 대한 쓰기 권한을 제2 연산가능한 NIC에게 요청할 수 있다. 제2 연산가능한 NIC은 프로세스 2-2에 할당된 쓰기 권한을 회수할 수 있다. 제2 연산가능한 NIC은 메타 데이터 A에 대한 쓰기 권한을 프로세스 2-1(예: 프로세스 2-1를 수행하는 전자 장치(802))에 할당할 수 있다. 전술한 바와 같이 메타 데이터 A에 대한 작업 권한(예: 쓰기 권한)이 내부에서만 이동되었으므로, 메타 데이터 서버와의 통신이 요구되지 않고 locking 오버헤드가 절감될 수 있다.
도 9를 참조하면, 동작 910 내지 동작 930은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.
동작 910에서, 프로세서(예: 도 2의 프로세서(110))는, 제1 프로세스에 요구되는 메타 데이터에 대한 작업 권한을 연산가능한 NIC(예: 도 2의 연산가능한 NIC(200))에 요청할 수 있다. 작업 권한은 메타 데이터에 대한 읽기 권한 또는 쓰기 권한일 수 있다.
동작 920에서, 연산가능한 NIC(200)에게 메타 데이터(예: 제1 프로세스에 요구되는 메타 데이터)에 대한 관리 권한이 없는 경우, 연산가능한 NIC(200)이 메타 데이터 서버(예: 도 2의 메타 데이터 서버(20))에게 관리 권한을 요청할 수 있다. 관리 권한은 읽기 권한 및/또는 쓰기 권한을 프로세서(110)가 수행하는 프로세스(예: 제1 프로세스)에 할당할 수 있는 권한일 수 있다.
동작 930에서, 연산가능한 NIC(200)이 메타 데이터 서버(20)로부터 관리 권한(예: 메타 데이터에 대한 읽기 권한 및/또는 쓰기 권한을 할당할 수 있는 권한)을 획득하여, 제1 프로세스(예: 제1 프로세스를 수행하는 프로세서(110))에 작업 권한(예: 메타 데이터에 대한 읽기 권한 및/또는 쓰기 권한)을 할당할 수 있다.
메타 데이터 서버(20)는 글로벌 영역에서 메타 데이터 전체의 작업 권한을 총괄하여 관리할 수 있다. 연산가능한 NIC(200)은 로컬 영역에서 일부 메타 데이터 대한 관리 권한을 메타 데이터 서버(20)로부터 위임받은 것일 수 있다. 메타 데이터 서버(20)와 연산가능한 NIC(200)이 메타 데이터의 작업 권한을 나누어 관리함으로써, 데이터(예: 메타 데이터)의 일관성(coherency)(무결성(integrity))이 효율적으로 유지될 수 있다. 이하에서는 연산가능한 NIC(200) 내부에서 수행되는 동작에 대해서 설명하도록 한다.
도 10 은 일 실시예에 따른, 연산가능한 NIC이 수행하는 동작의 흐름도를 나타내고, 도 11은 일 실시예에 따른, 연산가능한 NIC이 수행하는 동작의 흐름도를 나타낸다.
도 10를 참조하면, 동작 1010 내지 동작 1020은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.
동작 1010에서, NIC 프로세서(예: 도 3의 NIC 프로세서(210))는, 메타 데이터에 대한 작업 권한 요청을 수신할 수 있다. 메타 데이터는 분산 파일 시스템(예: lustre 분산 파일 시스템)에서 활용되는 메타 데이터일 수 있다. 메타 데이터에 대한 작업 권한 요청은 NIC 프로세서(210)를 포함하는 전자 장치(예: 도 2의 전자 장치(100))로부터 수신된 것일 수 있다.
동작 1020에서, NIC 프로세서(210)는 메타 데이터가 NIC 프로세서(210)의 캐시(예: 도 5의 캐시(240)), NIC(예: 도 5의 NIC(230))의 캐시(예: 도 5의 캐시(250)), 메모리(예: 도 5의 NIC 메모리(220)), 또는 메모리 익스펜더(예: 도 5의 CXL 메모리 익스펜더(300))에 저장되어 있는지를 순차적으로 확인할 수 있다.
NIC(230)은 CXL(compute express link) 프로토콜에서 정의되는 CXL.cache를 지원하는 CXL-NIC일 수 있다. 메모리 익스펜더(300)는 CXL 프로토콜에서 정의되는 CXL.mem를 지원하는 CXL 메모리 익스펜더일 수 있다. 연산가능한 NIC(200)은, CXL 프로토콜에서 정의되는 type 1, type 2, 또는 type3의 장치일 수 있다.
도 11을 참조하면, 순차적인 확인 동작(예: 메타 데이터의 저장 여부를 확인하는 동작)을 확인할 수 있다. 동작 1110 내지 동작 1155은 순차적으로 수행될 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 둘 이상의 동작들이 병렬적으로 수행될 수 있다.
동작 1110에서, NIC 프로세서(210)는 메타 데이터에 대한 작업 권한 요청을 수신할 수 있다. 작업 권한은 메타 데이터에 대하여, 쓰기 작업을 수행할 수 있는 권한 및/또는 읽기 작업을 수행할 수 있는 권한을 의미하는 것일 수 있다.
동작 1115에서, NIC 프로세서(210)는 메타 데이터가 NIC 프로세서(210)의 캐시(240)에 저장(예: 캐싱)되어 있는지를 확인할 수 있다. 동작 1120에서, 메타 데이터가 NIC 프로세서(210)의 캐시(240)에 저장(예: 캐싱)되어 있는 경우, NIC 프로세서(210)는 저장된 데이터(예: 캐싱된 데이터)가 유효한지를 검증할 수 있다. NIC 프로세서(210)는 저장된 메타 데이터의 유효 기간을 검증할 수 있다. NIC 프로세서(210)는 작업 권한에 대응되는 권한이 NIC 프로세서에 할당되어 있는지를 검증할 수 있다. 메타 데이터가 NIC 프로세서(210)의 캐시(240)에 저장되어 있지 않거나 저장된 메타 데이터가 유효하지 않은 경우, NIC 프로세서(210)는 다음 저장 공간을 확인할 수 있다. NIC 프로세서(210)의 캐시(240)에 저장된(예: 캐싱된) 메타 데이터가 유효한 경우, CXL 인터페이스를 통해 전자 장치(100)(예: 클라이언트 장치)에게 응답을 제공할 수 있다.
동작 1125에서, NIC 프로세서(210)는 메타 데이터가 NIC(230)의 캐시(250)에 저장(예: 캐싱)되어 있는지를 확인할 수 있다. 동작 1130에서, 메타 데이터가 NIC(230)의 캐시(250)에 저장(예: 캐싱)되어 있는 경우, NIC 프로세서(210)는 저장된 데이터(예: 캐싱된 데이터)가 유효한지를 검증할 수 있다. 메타 데이터가 NIC(230)의 캐시(250)에 저장되어 있지 않거나 저장된 메타 데이터가 유효하지 않은 경우, NIC 프로세서(210)는 다음 저장 공간을 확인할 수 있다.
동작 1135에서, NIC 프로세서(210)는 메타 데이터가 NIC 메모리(220)에 저장(예: 캐싱)되어 있는지를 확인할 수 있다. 동작 1140에서, 메타 데이터가 NIC 메모리(220)에 저장(예: 캐싱)되어 있는 경우, NIC 프로세서(210)는 저장된 데이터(예: 캐싱된 데이터)가 유효한지를 검증할 수 있다. 메타 데이터가 NIC 메모리(220)에 저장되어 있지 않거나 저장된 메타 데이터가 유효하지 않은 경우, NIC 프로세서(210)는 다음 저장 공간을 확인할 수 있다.
동작 1145에서, NIC 프로세서(210)는 메타 데이터가 메모리 익스펜더(300)에 저장(예: 캐싱)되어 있는지를 확인할 수 있다. 동작 1150에서, 메타 데이터가 메모리 익스펜더(300)에 저장(예: 캐싱)되어 있는 경우, NIC 프로세서(210)는 저장된 데이터(예: 캐싱된 데이터)가 유효한지를 검증할 수 있다.
동작 1155에서, 메타 데이터가 메모리 익스펜더(300)에 저장되어 있지 않거나 저장된 메타 데이터가 유효하지 않은 경우, NIC 프로세서(210)는 메타 데이터 서버에 메타 데이터의 관리 권한을 요청할 수 있다.
저장된 메타 데이터(예: 캐싱된 메타 데이터(cached meta data))는 연산가능한 NIC(200)에 포함된 저전력 CPU(예: NIC 프로세서(210))에서 관리될 수 있다. 적은 비용만으로도 지연 시간(예: 메타 데이터 서버 접근에 따른 지연 시간)을 단축하기 위해, NIC 프로세서(210)는 메타 데이터 관리 작업만을 수행하도록 구성된 것일 수 있다.
도 12는 분산 파일 시스템에서 수행된 지연 시간 관련 시뮬레이션 결과를 나타낸다.
전자 장치(예: 도 2의 전자 장치(100))는 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용할 수 있다. 전자 장치(100)는 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용함으로써 분산 파일 시스템에서의 지연 시간을 단축할 수 있다. 전자 장치(100))는 분산 파일 시스템에서, 메타 데이터 접근을 위한 네트워크 경로를 단축할 수 있고 메타 데이터 서버의 처리 시간을 절감할 수 있다. 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용함으로써 얻을 수 있는 효과를 검증하기 위해, IO-500의 Mdtest에 대해 meta data easy read가 수행되었다.
도 12 및 표 1을 참조하면, 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용하지 않는 장치(baseline)의 지연 시간은 총 630ms일 수 있다. 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용하는 장치(mdcache)(예: 전자 장치(100))의 지연 시간은 총 48ms일 수 있다. 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용하지 않는 장치(baseline)의 지연 시간에 비해 저장된 메타 데이터(예: 캐싱된 메타 데이터)를 활용하는 장치(mdcache)의 지연 시간은 13분의 1로 단축될 수 있다.
도 13은 단일 클라이언트를 포함하는 Lustre 분산 파일 시스템의 성능을 나타내는 그래프일 수 있다
도 13을 참조하면, 복수의 시스템(예: 종래 시스템(Lustre) 및 전자 장치(예: 도 2의 전자 장치(100))를 포함하는 시스템(Tiered MDS))에 대해서, mdtest-easy-read 벤치마크가 단일 클라이언트 환경에서 수행된 결과를 확인할 수 있다.
그래프의 x축은 시스템 내에서 수행되는 프로세스의 개수일 수 있다. 그래프의 왼쪽 Y축은 KIOPS(Kilo Input/Output Operations Per Second)는 분산 시스템의 점수(예: 작업 처리 속도)를 나타내고, 꺾인선 그래프(Lustre, Tiered MDS)는 시스템 별 KIOPS 점수를 나타내는 것일 수 있다. 그래프의 오른쪽 Y축은 성능 향상 정도를 나타내고, 막대 그래프(Gain)는 종래 시스템(Lustre) 대비 전자 장치(100)를 포함하는 시스템(Tiered MDS)의 성능 향상 정도를 나타내는 것일 수 있다.
적은 개수의 프로세스가 수행될 때, 전자 장치(100)를 포함하는 시스템(Tiered MDS)이 종래 시스템(Lustre) 대비 높은 성능을 가질 수 있다. 1개 내지 40개의 프로세스가 수행될 때, 종래 시스템(Lustre) 대비 시스템(Tiered MDS)의 성능 향상은 평균적으로 약 242%일 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (22)

  1. 메모리 익스펜더(memory expander)와 저장 공간을 공유하는 연산가능한 네트워크 인터페이스 카드(computational network interface card)(연산가능한 NIC)에 있어서,
    인스트럭션들을 포함하는 NIC 메모리;
    캐시를 포함하고, 상기 NIC 메모리와 전기적으로 연결된 네트워크 인터페이스 카드 프로세서(NIC 프로세서); 및
    상기 NIC 메모리 또는 상기 캐시에 저장된 데이터를 외부로 전달하는 네트워크 인터페이스 카드(NIC)
    를 포함하고,
    상기 NIC 프로세서에 의해 상기 인스트럭션들이 실행될 때, 상기 NIC 프로세서는 복수의 동작들을 수행하고,
    상기 복수의 동작들은,
    메타 데이터에 대한 작업 권한 요청을 수신하는 동작; 및
    상기 메타 데이터가 상기 NIC 프로세서의 상기 캐시, 상기 NIC의 캐시, 상기 NIC 메모리, 또는 상기 메모리 익스펜더에 저장되어 있는지를 순차적으로 확인하는 동작
    을 포함하는, 연산가능한 NIC.
  2. 제1항에 있어서,
    상기 메타 데이터는,
    분산 파일 시스템에서 활용되는 메타 데이터인, 연산가능한 NIC.
  3. 제1항에 있어서,
    상기 NIC는,
    CXL(compute express link) 프로토콜에서 정의되는 CXL.cache를 지원하는 CXL-NIC인 것인, 연산가능한 NIC.
  4. 제1항에 있어서,
    상기 메모리 익스펜더는,
    CXL 프로토콜에서 정의되는 CXL.mem를 지원하는 CXL 메모리 익스펜더인 것인, 연산가능한 NIC.
  5. 제1항에 있어서,
    상기 연산가능한 NIC은,
    CXL 프로토콜에서 정의되는 type 1, type 2, 또는 type3의 장치인, 연산가능한 NIC.
  6. 제1항에 있어서,
    상기 NIC과 상기 NIC 프로세서는 직렬 연결된 것이고, 상기 연산가능한 NIC을 포함하는 클라이언트 장치는 상기 NIC 프로세서를 경유하여 메타 데이터에 접근하는,
    연산가능한 NIC.
  7. 제1항에 있어서,
    상기 NIC과 상기 NIC 프로세서는 병렬 연결된 것이고, 상기 연산가능한 NIC을 포함하는 클라이언트 장치는 상기 NIC 프로세서의 경유 없이 메타 데이터에 접근할 수 있는 것인,
    연산가능한 NIC.
  8. 제1항에 있어서,
    상기 복수의 동작은,
    상기 메타 데이터가 저장되어 있는 경우, 저장된 메타 데이터의 유효성을 검증하는 동작; 또는
    상기 메타 데이터가 저장되어 있지 않은 경우, 메타 데이터 서버에 상기 메타 데이터에 대한 관리 권한을 요청하는 동작
    을 더 포함하는, 연산가능한 NIC.
  9. 제8항에 있어서,
    상기 유효성을 검증하는 동작은,
    상기 저장된 메타 데이터의 유효 기간을 검증하는 동작; 및
    상기 작업 권한에 대응되는 권한이 상기 NIC 프로세서에 할당되어 있는지를 검증하는 동작
    을 포함하는, 연산가능한 NIC.
  10. 인스트럭션들을 포함하는 메모리;
    상기 메모리와 전기적으로 연결되고, 상기 인스트럭션들을 실행하기 위한 프로세서; 및
    메타 데이터에 대한 작업 권한을 관리하는 연산가능한 네트워크 인터페이스 카드(computational network interface card)(연산가능한 NIC)
    를 포함하고,
    상기 프로세서 또는 상기 연산가능한 NIC은 복수의 동작을 수행하고,
    상기 복수의 동작들은,
    상기 프로세서가, 제1 프로세스에 요구되는 메타 데이터에 대한 작업 권한을 상기 연산가능한 NIC에 요청하는 동작;
    상기 연산가능한 NIC에게 상기 메타 데이터에 대한 관리 권한이 없는 경우, 상기 연산가능한 NIC이 메타 데이터 서버에게 상기 관리 권한을 요청하는 동작; 및
    상기 연산가능한 NIC이 상기 메타 데이터 서버로부터 상기 관리 권한을 획득하여, 상기 제1 프로세스에 상기 작업 권한을 할당하는 동작
    을 포함하는, 전자 장치.
  11. 제10항에 있어서,
    상기 작업 권한은,
    상기 메타 데이터에 대한 읽기 권한 또는 쓰기 권한이고,
    상기 관리 권한은,
    상기 읽기 권한 또는 상기 쓰기 권한 중 적어도 하나를 상기 전자 장치가 수행하는 프로세스에 할당할 수 있는 권한인,
    전자 장치.
  12. 제10항에 있어서,
    상기 메타 데이터 서버는 글로벌 영역에서 메타 데이터 전체의 작업 권한을 총괄하여 관리하는 것이고,
    상기 연산가능한 NIC은 로컬 영역에서 일부 메타 데이터에 대한 관리 권한을 상기 메타 데이터 서버로부터 위임받은 것인,
    전자 장치.
  13. 제10항에 있어서,
    상기 연산가능한 NIC은,
    상기 메타 데이터의 읽기 작업을 수행하는 제2 프로세스에 대하여, 상기 메타 데이터에 대한 읽기 권한을 상기 제1 프로세스 및 상기 제2 프로세스 모두에 할당할 수 있는 것인,
    전자 장치.
  14. 제10항에 있어서,
    상기 전자 장치는,
    상기 전자 장치와는 다른 전자 장치가 상기 메타 데이터에 대한 쓰기 권한을 획득한 경우, 상기 메타 데이터에 대한 작업 권한을 상실하는 것인,
    전자 장치.
  15. 제10항에 있어서,
    상기 연산가능한 NIC은,
    인스트럭션들을 포함하는 NIC 메모리;
    캐시를 포함하고, 상기 NIC 메모리와 전기적으로 연결된 네트워크 인터페이스 카드 프로세서(NIC 프로세서); 및
    상기 NIC 메모리 또는 상기 캐시에 저장된 데이터를 외부로 전달하는 네트워크 인터페이스 카드(NIC)
    를 포함하는, 전자 장치.
  16. CXL 프로토콜에서 정의되는 CXL.mem을 지원하는 메모리 익스펜더에 있어서,
    복수의 메타 데이터가 저장된 메모리 장치; 및
    상기 메모리 장치를 제어하는 컨트롤러
    를 포함하고
    상기 컨트롤러는,
    연산가능한 NIC을 포함하는 전자 장치로부터, 상기 복수의 메타 데이터 중 어느 하나에 대한 작업 요청을 수신하고,
    상기 작업 요청에 응답하여, 상기 어느 하나에 대한 작업을 수행하는,
    메모리 익스펜더.
  17. 제16항에 있어서,
    상기 컨트롤러는,
    CXL 인터페이스릍 통해, 상기 연산가능한 NIC 또는 상기 전자 장치와 직접 통신하는,
    메모리 익스펜더.
  18. 제16항에 있어서,
    상기 연산가능한 NIC은,
    CXL 프로토콜에서 정의되는 type 2 또는 type 3의 장치이고, 상기 CXL 프로토콜에서 정의되는 CXL.mem을 지원하는 NIC 메모리를 포함하는,
    메모리 익스펜더.
  19. 제16항에 있어서,
    상기 연산가능한 NIC은,
    메타 데이터에 대한 작업 권한을 상기 전자 장치가 수행하는 프로세스에 할당할 수 있는 것이고,
    상기 메모리 익스펜더는,
    상기 프로세스를 수행하는 상기 전자 장치로부터 상기 작업 요청을 수신하는,
    메모리 익스펜더.
  20. 제16항에 있어서,
    상기 컨트롤러는,
    상기 전자 장치로부터 상기 어느 하나에 대한 읽기 요청을 수신하고,
    상기 읽기 요청에 응답하여, 상기 어느 하나를 상기 전자 장치로 전송하는,
    메모리 익스펜더.
  21. 제16항에 있어서,
    상기 컨트롤러는,
    상기 전자 장치로부터 상기 어느 하나에 대한 쓰기 요청 및 결과 데이터를 수신하고,
    상기 쓰기 요청에 응답하여, 상기 어느 하나를 상기 결과 데이터로 변경하여 저장하는,
    메모리 익스펜더.
  22. 제16항에 있어서,
    상기 메타 데이터는,
    분산 파일 시스템에서 활용되는 메타 데이터인, 메모리 익스펜더.
KR1020220173904A 2022-12-13 2022-12-13 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치 KR20240090078A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220173904A KR20240090078A (ko) 2022-12-13 2022-12-13 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치
EP23183791.5A EP4386568A1 (en) 2022-12-13 2023-07-06 Computational network interface card with metadata caching
US18/351,529 US20240193091A1 (en) 2022-12-13 2023-07-13 Computational network interface card with metadata caching
CN202310942857.4A CN118193413A (zh) 2022-12-13 2023-07-28 计算网络接口卡、电子装置和存储器扩展器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220173904A KR20240090078A (ko) 2022-12-13 2022-12-13 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치

Publications (1)

Publication Number Publication Date
KR20240090078A true KR20240090078A (ko) 2024-06-21

Family

ID=87158107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220173904A KR20240090078A (ko) 2022-12-13 2022-12-13 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치

Country Status (4)

Country Link
US (1) US20240193091A1 (ko)
EP (1) EP4386568A1 (ko)
KR (1) KR20240090078A (ko)
CN (1) CN118193413A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561915B2 (en) * 2020-09-30 2023-01-24 EMC IP Holding Company LLC Remote sharing of directly connected storage
KR20220056986A (ko) * 2020-10-29 2022-05-09 삼성전자주식회사 메모리 확장기, 이종 컴퓨팅 장치, 및 이종 컴퓨팅 장치의 동작 방법

Also Published As

Publication number Publication date
CN118193413A (zh) 2024-06-14
US20240193091A1 (en) 2024-06-13
EP4386568A1 (en) 2024-06-19

Similar Documents

Publication Publication Date Title
EP3140749B1 (en) In-memory lightweight coherency
KR102683696B1 (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US9648081B2 (en) Network-attached memory
TWI804466B (zh) 擷取記憶體中儲存的資料的方法與去重複模組
US20210200667A1 (en) Memory thin provisioning using memory pools
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US11681553B2 (en) Storage devices including heterogeneous processors which share memory and methods of operating the same
EP3977297B1 (en) Hybrid hardware-software coherent framework
US20150312366A1 (en) Unified caching of storage blocks and memory pages in a compute-node cluster
US12056066B2 (en) System, device, and method for accessing memory based on multi-protocol
Son et al. An empirical evaluation and analysis of the performance of NVM express solid state drive
Liu et al. Initial experience with 3D XPoint main memory
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
TWI785320B (zh) 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
Amaro et al. Logical Memory Pools: Flexible and Local Disaggregated Memory
KR20240090078A (ko) 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치
US11809341B2 (en) System, device and method for indirect addressing
US20240045588A1 (en) Hybrid memory system and accelerator including the same
US20240201858A1 (en) Memory device and scheduling method thereof
US20240248609A1 (en) Accelerator module and computing system including the same
Velusamy et al. Exploring the behavior of coherent accelerator processor interface (capi) on ibm power8+ architecture and flashsystem 900
KR20220064105A (ko) 반도체 장치
KR20240029419A (ko) z스왑 가속을 위한 데이터 처리 장치 및 방법
Li et al. High-Performance Storage for DSM System Using Global Cache