KR20240059347A - 메모리 공간 할당 방법, 장치 및 시스템 - Google Patents

메모리 공간 할당 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR20240059347A
KR20240059347A KR1020220140508A KR20220140508A KR20240059347A KR 20240059347 A KR20240059347 A KR 20240059347A KR 1020220140508 A KR1020220140508 A KR 1020220140508A KR 20220140508 A KR20220140508 A KR 20220140508A KR 20240059347 A KR20240059347 A KR 20240059347A
Authority
KR
South Korea
Prior art keywords
memory
arena
memory space
memories
allocation method
Prior art date
Application number
KR1020220140508A
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 KR1020220140508A priority Critical patent/KR20240059347A/ko
Priority to US18/125,218 priority patent/US20240143498A1/en
Publication of KR20240059347A publication Critical patent/KR20240059347A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

메모리 공간 할당 방법이 개시된다. 본 개시의 예시적 실시예에 따른 메모리 확장기에 의해 수행되는 메모리 공간 할당 방법은, 제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계 및 생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며, 상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 상기 아레나 풀은 상기 아레나들의 집합을 나타낸다.

Description

메모리 공간 할당 방법, 장치 및 시스템{METHOD, DEVICE AND SYSTEM FOR ALLOCATING MEMORY SPACE}
본 개시의 기술적 사상은 메모리 공간 할당 방법, 장치 및 시스템에 관한 것이다.
데이터를 처리하도록 구성된 기기(apparatus)는 메모리에 액세스함으로써 다양한 동작을 수행할 수 있다. 예를 들면, 기기는 메모리로부터 독출한 데이터를 처리할 수도 있고, 처리된 데이터를 메모리에 기입할 수도 있다. 시스템에 요구되는 성능 및 기능들에 기인하여, 높은 대역폭 및 낮은 레이턴시를 제공하는 링크를 통해서 상호 통신하는 다양한 기기들이 시스템에 포함될 수 있다. 시스템에 포함된 메모리는 2이상의 기기들에 의해서 공유될 수 있고 액세스될 수 있다. 이에 따라, 시스템의 성능은, 기기들 각각의 동작 속도뿐만 아니라, 기기들 사이 통신 효율성 및 메모리 액세스에 소요되는 시간에 의존할 수 있다.
한편, CPU 관련 기술은 멀티-코어(multi-core), 멀티-소켓(multi-socket)의 방향으로 발전해 왔고, 이에 따라 단일 시스템 내에서 필요한 연산 용량이 높아져왔다.
연산 용량을 높이기 위해서, 상이한 물리적 특성을 가지는 이종 메모리 어레이들로 시스템을 구성할 필요성이 대두되고 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 복수의 이종 메모리들을 각각의 물리적 특성에 기초하여 그룹화함으로써, 물리적 특성이 다른 메모리들이 하나의 논리적 메모리 영역 내에서 혼재되어 사용되지 않도록 이종 메모리들간 격리(isolation, 예를 들어 지연시간 변동(latency fluctuation) 방지) 및 동일한 물리적 특성을 집약(예를 들어, 대역폭 응집(bandwidth aggregation))하기 위한 메모리 공간 할당 방법, 장치 및 시스템을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상에 따른 컴퓨팅 장치에 의해 수행되는 메모리 공간 할당 방법은, 제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계 및 생성된 상기 메모리 사용 시나리오에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며,상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 상기 아레나 풀은 상기 아레나들의 집합을 나타낼 수 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상에 따른 메모리 확장기에 의해 수행되는 메모리 공간 할당 방법은, 제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계 및 생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며, 상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 상기 아레나 풀은 상기 아레나들의 집합을 나타낼 수 있다.
또한, 상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상에 따른 메모리 확장기는, 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서에 의해서 실행 시, 상기 적어도 하나의 프로세서로 하여금 메모리 공간 할당 방법을 수행하도록 명령어들을 저장하는 메모리를 포함하고, 상기 메모리 공간 할당 방법은, 제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계, 생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며, 상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 상기 아레나 풀은 상기 아레나들의 집합을 나타낼 수 있다.
또한, 상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상에 따른 시스템은, 버스에 연결되고, 제1 메모리와 통신하도록 구성된 장치, 상기 제1 메모리에 기입하거나 상기 제1 메모리로부터 독출할 제1 데이터의 크기에 기초하여, 제1 프로토콜 또는 제2 프로토콜을 선택하고, 선택된 프로토콜에 기초하여 상기 버스를 통해 상기 제1 메모리에 액세스하도록 구성된 호스트 프로세서, 상기 제1 메모리와 상이한 제2 메모리를 포함하고, 상기 제1 프로토콜은, 메모리 액세스를 위한 전용의 프로토콜이고, 상기 제2 프로토콜은, 비일관적(non-coherent) 입출력을 위한 프로토콜이며, 상기 호스트 프로세서는, 상기 제1 메모리 및 상기 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하고, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하고, 생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하며, 상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 상기 아레나 풀은 상기 아레나들의 집합을 나타낼 수 있다.
본 개시의 기술적 사상에 따른 메모리 공간 할당 방법은, 복수의 이종 메모리들을 각각의 물리적 특성에 기초하여 그룹화함으로써, 물리적 특성이 다른 메모리들이 하나의 논리적 메모리 영역 내에서 혼재되어 사용되지 않도록 이종 메모리들간 격리(isolation, 예를 들어 지연시간 변동(latency fluctuation) 방지) 및 동일한 물리적 특성을 집약(예를 들어, 대역폭 응집(bandwidth aggregation))하는 효과가 있다.
도 1은 본 개시의 예시적 실시예에 따른 시스템을 나타내는 블록도이다.
도 2a 및 도2b는 본 개시의 예시적 실시예에 따른 메모리 확장기를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 컨텍스트를 나타내는 블록도이다.
도 4은 본 개시의 예시적 실시예에 따른 최대 메모리 정책을 설명하기 위한 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 메모리 확장기를 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 장치의 블록도이다.
도 13은 본 개시의 예시적 실시예에 따른 집적 회로 및 이를 포함하는 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 시스템(100)을 나타내는 블록도이다.
도 1을 참조하면, 시스템(100)은 상호 통신하는 장치(110), 호스트 프로세서(120), 메모리 확장기(160) 및 메모리(170)을 포함하는 임의의 컴퓨팅 시스템(또는 컴퓨팅 시스템에 포함된 구성요소)일 수 있다. 예를 들면, 시스템(100)은, 데스크탑 컴퓨터, 서버, 키오스크(kiosk) 등과 같은 고정형(stationary) 컴퓨팅 시스템에 포함될 수도 있고, 랩탑 컴퓨터, 모바일 폰, 웨어러블 장치 등과 같은 휴대형(portable) 컴퓨팅 시스템에 포함될 수도 있다. 또한, 일부 실시예들에서, 시스템(100)은, 장치(110), 호스트 프로세서(120) 및 메모리 확장기(160)가 하나의 칩 또는 패키지에 구현된, 시스템-온-칩(system-on-chip; SoC) 또는 시스템-인-패키지(system-in-package; SiP)에 포함될 수도 있다. 도 1에 도시된 바와 같이, 시스템(100)은, 장치(110), 호스트 프로세서(120), 장치 메모리(130), 호스트 메모리(140), 메모리 확장기(160), 메모리(170)를 포함할 수 있다.
실시예에 있어서, 장치 메모리(130)와 메모리(170)는 물리적 특성이 상이할 수 있다. 이때, 메모리 확장기(160)는 장치 메모리(130) 및 메모리(170)를 포함하는 이종 메모리들과 연결되어 메모리 할당 요청에 대응하여 최적으로 메모리를 할당할 수 있다. 예를 들어, 장치 메모리(130)는 CXL DRAM일 수 있고, 메모리(170)는 DDR 메모리일 수 있다.
도 1을 참조하면, 장치(110) 및 호스트 프로세서(120)는 링크(150)를 통해서 상호 통신할 수 있고, 링크(150) 상으로 메시지 및/또는 데이터를 상호 송신하거나 수신할 수 있다. 본 개시의 예시적 실시예들은, CXL(compute express link) 프로토콜들을 지원하는 CXL 사양에 기초한 링크(150)를 참조하여 설명될 것이나, 장치(110) 및 호스트 프로세서(120)는, 비제한적인 예시로서 XBus 프로토콜, NVLink 프로토콜, Infinity Fabric 프로토콜, CCIX(cache coherent interconnect for accelerators) 프로토콜, CAPI(coherent accelerator processor interface) 등과 같은 일관적 상호연결(coherent interconnect) 기술들에 기초하여 상호 통신할 수도 있다.
일부 실시예들에서, 링크(150)는 다수의(multiple) 프로토콜들을 지원할 수 있고, 다수의 프로토콜들을 통해서 메시지 및/또는 데이터가 전달될 수 있다. 예를 들면, 링크(150)는, 비일관적(non-coherent) 프로토콜(예컨대, CXL.io), 일관적 프로토콜(예컨대, CXL.cache) 및 메모리 액세스 프로토콜(또는 메모리 프로토콜)(예컨대, CXL.mem)을 포함하는 CXL 프로토콜들을 지원할 수 있다. 일부 실시예들에서, 링크(150)는, 비제한적인 예시로서 PCI(peripheral component interconnect), PCIe(PCI express), USB(universal serial bus), SATA(serial advanced technology attachment) 등과 같은 프로토콜을 지원할 수도 있다. 본 명세서에서, 링크(150)에 의해서 지원되는 프로토콜은 상호연결 프로토콜로서 지칭될 수도 있다.
장치(110)는 호스트 프로세서(120)에 유용한 기능을 제공하는 임의의 장치를 지칭할 수 있고, 일부 실시예들에서 CXL 사양의 가속기(accelerator)에 대응할 수 있다. 예를 들면, 호스트 프로세서(120) 상에서 실행되는 소프트웨어는 연산(computing) 및/또는 입출력(I/O) 작업의 적어도 일부를 장치(110)에 일임(offload)할 수 있다. 일부 실시예들에서, 장치(110)는, GPU(graphic processing unit), NPU(neural processing unit) 등과 같은 프로그램가능한(programmable) 구성요소(component), IP(intellectual property) 코어 등과 같은 고정된 기능을 제공하는 구성요소 및 FPGA(field programmable gate array) 등과 같은 재구성가능한(reconfigurable) 구성요소 중 적어도 하나를 포함할 수 있다. 도 1에 도시된 바와 같이, 장치(110)는 물리 계층(111), 다중-프로토콜 멀티플렉서(112), 인터페이스 회로들(113) 및 가속기 회로(114)를 포함할 수 있고, 장치 메모리(130)와 통신할 수 있다.
가속기 회로(114)는, 장치(110)가 호스트 프로세서(120)에 제공하는 유용한 기능을 수행할 수 있고, 가속기 로직으로 지칭될 수도 있다. 도 1에 도시된 바와 같이, 가속기 회로(114)는 다수의 프로토콜들을 사용하여 인터페이스 회로들(113)을 통해서 호스트 프로세서(120)와 통신할 수 있다.
인터페이스 회로(113)는, 가속기 회로(114) 및 호스트 프로세서(120) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다. 인터페이스 회로(113)는, 다중-프로토콜 멀티플렉서(112)에 포함된 적어도 하나의 프로토콜 큐(queue)에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 호스트 프로세서(120)와 메시지 및/또는 데이터를 주고받을 수 있다. 일부 실시예들에서, 인터페이스 회로(113) 및 다중-프로토콜 멀티플렉서(112)는 하나의 구성요소로 통합될 수도 있다.
일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(112)는 상이한 프로토콜들에 의한 통신들 사이를 중재(arbitration)할 수 있고, 선택된 통신들을 물리 계층(111)에 제공할 수 있다. 일부 실시예들에서, 물리 계층(111)은, 호스트 프로세서(120)의 물리 계층(121)과 단일 상호연결, 버스, 트레이스(trace) 등을 통해서 연결될 수 있다.
장치 메모리(130)는, 도 1에 도시된 바와 같이, 장치(110)에 연결될 수 있고, 장치-부착 메모리(device-attached memory)로서 지칭될 수 있다. 도 1에 도시된 바와 같이 장치 메모리(130)가 시스템(100)에 포함되는 경우, 가속기 회로(114)는 장치 메모리(130)와 통신할 수 있고, 링크(150)에 독립적인 프로토콜, 즉 장치-고유의(device-specific) 프로토콜에 기초하여 장치 메모리(130)와 통신할 수 있다.
실시예에 있어서, 장치(110)는 장치 메모리(130)에 액세스하기 위한 구성요소로서 메모리 인터페이스를 포함할 수 있고, 가속기 회로(114) 및/또는 인터페이스 회로들(113)은 메모리 인터페이스를 통해서 장치 메모리(130)에 액세스할 수 있다. 메모리 인터페이스는, 장치(110), 즉 가속기 회로(114)의 장치 메모리(130)에 대한 액세스뿐만 아니라 링크(150) 및 인터페이스 회로들(113)을 통한 호스트 프로세서(120)의 장치 메모리(130)에 대한 액세스를 제공할 수 있다.
실시예에 있어서, 장치(110)는 장치 메모리(130)에 액세스하기 위한 구성요소로서 컨트롤러를 포함할 수 있고, 가속기 회로(114)는 컨트롤러를 통해서 장치 메모리(130)에 액세스할 수 있다. 컨트롤러는, 장치(110), 즉 가속기 회로(114)의 장치 메모리(130)에 대한 액세스뿐만 아니라 링크(150)를 통한 호스트 프로세서(120)의 장치 메모리(1300)에 대한 액세스를 제공할 수 있다.
실시예에 있어서, 장치 메모리(130)는 CXL 사양의 장치 부착 메모리에 대응할 수 있다.
호스트 프로세서(120)는 시스템(100)의 메인 프로세서, 예컨대 CPU(central processing unit)일 수 있고, 일부 실시예들에서 CXL 사양의 호스트 프로세서(또는 호스트)에 대응할 수 있다. 도 1에 도시된 바와 같이, 호스트 프로세서(120)는 호스트 메모리(140) 및 메모리 확장기(160)에 연결될 수 있고, 물리 계층(121), 다중-프로토콜 멀티플렉서(122), 인터페이스 회로들(123), 일관성/캐시 회로(124), 버스 회로(125), 적어도 하나의 코어(126) 및 입출력 장치(127)를 포함할 수 있다.
적어도 하나의 코어(126)는 명령어(instruction)를 실행할 수 있고, 일관성/캐시 회로(124)와 연결될 수 있다. 일관성/캐시 회로(124)는 캐시 계층(cache hierarchy)을 포함할 수 있고, 일관성/캐시 로직으로 지칭될 수도 있다. 도 1에 도시된 바와 같이, 일관성/캐시 회로(124)는 적어도 하나의 코어(126) 및 인터페이스 회로들(123)와 통신할 수 있다. 예를 들면, 일관성/캐시 회로(124)는 일관적 프로토콜 및 메모리 액세스 프로토콜을 포함하는 2이상의 프로토콜들을 통한 통신을 가능하게 할 수 있다. 일부 실시예들에서, 일관성/캐시 회로(124)는 DMA(direct memory access) 회로를 포함할 수도 있다. 입출력 장치(127)는 버스 회로(125)와 통신하기 위하여 사용될 수 있다. 예를 들면, 버스 회로(125)는 PCIe 로직일 수 있고, 입출력 장치(127)는 PCIe 입출력 장치일 수 있다.
인터페이스 회로들(123)은, 호스트 프로세서(120)의 구성요소들, 예컨대 일관성/캐시 회로(124) 및 버스 회로(125)와 장치(110) 사이 통신을 가능하게 할 수 있다. 일부 실시예들에서, 인터페이스 회로들(123)은 다수의 프로토콜들, 예컨대 비일관적 프로토콜, 일관적 프로토콜 및 메모리 프로토콜에 따라 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 메시지 및/또는 데이터의 통신을 가능하게 할 수 있다.
다중-프로토콜 멀티플렉서(122)는 적어도 하나의 프로토콜 큐를 포함할 수 있다. 인터페이스 회로들(123)는 다중-프로토콜 멀티플렉서(122)에 포함된 적어도 하나의 프로토콜 큐에 연결될 수 있고, 적어도 하나의 프로토콜 큐를 통해서 장치(110)와 메시지 및/데이터를 주고받을 수 있다.
실시예에 있어서, 다중-프로토콜 멀티플렉서(122)는, 호스트 프로세서(120)의 구성요소들 및 장치(110) 사이 통신을 위한 메시지 및/또는 데이터에 기초하여 다수의 프로토콜들 중 하나의 프로토콜을 판정할 수 있다.
실시예에 있어서, 인터페이스 회로들(123) 및 다중-프로토콜 멀티플렉서(122)는 하나의 구성요소로 통합될 수도 있다. 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 링크(150)에 의해서 지원되는 다수의 프로토콜들 각각에 대응하는 다수의 프로토콜 큐들을 포함할 수 있다. 또한, 일부 실시예들에서, 다중-프로토콜 멀티플렉서(122)는 상이한 프로토콜들에 의한 통신들 사이를 중재할 수 있고, 선택된 통신들을 물리 계층(121)에 제공할 수 있다.
메모리 확장기(160)는 장치 메모리(130) 및 메모리(170)를 포함하는 이종 메모리들과 연결되어 메모리 할당 요청에 대응하여 최적으로 메모리 공간을 할당할 수 있다.
메모리 확장기(160)가 이종 메모리들과 연결되어 메모리 할당 요청에 대응하여 최적으로 메모리 공간을 할당하는 방법에 대해서는 다른 도면을 참조하여 자세히 설명하도록 한다.
한편, 전술된 메모리 확장기(160)는 소프트웨어로 구현되거나, 하드웨어로 구현되거나 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 실시예에 있어서, 전술된 메모리 확장기(160)는 운영 체제(OS)나 그 하위 단에 소프트웨어 형태로 구현될 수 있으며, 또한 전자 시스템에 구비되는 메모리에 로딩 가능한 프로그램들로 구현될 수 있으며, 전자 시스템의 적어도 하나의 프로세서에 의해 실행될 수 있다.
도 2a 및 도2b는 본 개시의 예시적 실시예에 따른 메모리 확장기(200)를 나타내는 블록도이다.
자세하게는, 도 2a는 본 개시의 예시적 실시예에 따른 메모리 확장기(200)에 포함된 구성요소를 도시하고, 도 2b는 본 개시의 예시적 실시예에 따른 메모리 확장기(200)의 데이터 흐름을 도시한다. 여기서, 도 2a 및 도 2b에 도시된 메모리 확장기(200)는 도 1에서 설명된 메모리 확장기(160)와 대응될 수 있다.
도 2a를 참조하면, 메모리 확장기(200)는 아레나 그룹화 모듈(210), 아레나 풀 관리 모듈(220), 메모리 사용 시나리오 제공 모듈(230), 호환가능 API 모듈(241) 및 최적화 API 모듈(243)을 포함할 수 있다.
먼저, 아레나(arena)는 메모리 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 아레나 풀(arena pool)은 아레나들의 집합을 나타낸다. 예를 들어, 상기 아레나 풀 및 상기 아레나는 논리적 블록주소 지정(Logical Block Addressing, LBA)에 기반할 수 있다. 복수의 아레나 풀들과 아레나 풀들 각각에 포함되는 아레나는 LUT(Look Up Table)의 형태로 저장될 수 있다
하나의 아레나 풀에 포함된 아레나들은 서로 같은 물리적 특성을 가질 수 있다. 예를 들어, 메모리의 물리적 특성은 메모리의 크기, 메모리의 속도, 메모리의 암호화 가능 여부, 메모리의 소모 전력일 수 있다. 이때, 아레나 그룹화 모듈(210)은 아레나 간에는 잠금 경합(lock contention)이 발생하지 않도록 복수의 이종 메모리들을 그룹화하여 아레나를 생성할 수 있다. 여기서, 잠금 경합(lock contention)은 한 프로세스 또는 한 스레드가 다른 프로세스 또는 다른 스레드가 보유한 잠금(lock)을 획득하려는 것을 나타낸다.
아레나 그룹화 모듈(210)은 복수의 이종 메모리들을 각각의 물리적 특성에 기초하여 그룹화하여 복수의 아레나 풀을 생성할 수 있다. 즉, 아레나 그룹화 모듈(210)은 이종 메모리들을 메모리의 물리적 특성에 따라 아레나로 재구성할 수 있다.
복수의 이종 메모리들을 각각의 물리적 특성에 기초하여 그룹화함으로써, 물리적 특성이 다른 메모리들이 하나의 아레나 내에서 혼재되어 사용되지 않도록 이종 메모리들간 격리(isolation, 예를 들어 지연시간 변동(latency fluctuation) 방지) 및 동일한 물리적 특성을 집약(예를 들어, 대역폭 응집(bandwidth aggregation))하는 효과가 있다.
도 2b를 참조하면, 아레나 그룹화 모듈(210)은 메모리 1(201), 메모리 2(203), ??, 메모리 N(205)을 포함하여 총 N개의 메모리들을 각각의 물리적 특성에 기초하여 그룹화하여 페스트 아레나 풀(fast arena pool, 211), 슬로우 아레나 풀(slow arena pool, 212), 라지 아레나 풀(large arena pool, 213), 스몰 아레나 풀(small arena pool, 214), 플레인 아레나 풀(plain arena pool, 215) 및 인크립티드 아레나 풀(encrypted arena pool, 216)을 포함하는 복수의 아레나 풀을 생성할 수 있다.
여기서, 페스트 아레나 풀(211) 및 로우 아레나 풀(212)은 메모리의 속도에 따라 복수의 메모리들을 그룹화한 것이고, 라지 아레나 풀(213) 및 스몰 아레나 풀(214)은 메모리의 크기에 따라 복수의 메모리들을 그룹화한 것이고, 플레인 아레나 풀(215) 및 인크립티드 아레나 풀(216)은 메모리의 암호화 가능 여부에 따라 복수의 메모리들을 그룹화한 것이다. 실시예에 있어서, 그룹화의 기준이 되는 메모리의 크기 및 속도 등을 포함하는 메모리의 물리적 특성은 사용자에 의해 미리 설정될 수 있으며, 그룹화하는 기준이 되는 메모리의 물리적 특성은 속도, 크기, 암호화 여부에 제한되지 않는다.
실시예에 있어서, 아레나 그룹화 모듈(210)은 아레나 풀의 수를 시스템 내 코어의 수(예를 들어, Per CPU)에 기초하여 결정할 수 있다. 다른 실시예에 있어서, 아레나 풀의 수는 사용자에 의해 미리 설정될 수 있다.
아레나 풀 관리 모듈(220)은 아레나 및 아레나 풀을 관리하는 모듈이다. 또한, 아레나 풀 관리 모듈(220)은 후술할 메모리 사용 시나리오 제공 모듈(230)이 생성한 메모리 사용 시나리오(usecase)에 기초하여 아레나 및 아레나 풀을 관리할 수 있다. 예를 들어, 아레나 풀 관리 모듈(220)은 상위 응용 계층(application layer)의 메모리 요청 패턴(예를 들어, 요구하는 청크 크기), 시스템 내 가용 연산 리소스(예를 들어 사용 가능한 CPU 수 등), 메모리의 물리적 특성(BW/Density 등)을 고려하여 최적으로 메모리 공간을 할당할 수 있도록 아레나 및 아레나 풀을 관리할 수 있다.
실시예에 있어서, 아레나 풀 관리 모듈(220)은 메모리 사용 시나리오에 기초하여 메모리 공간을 반환(return)할 수 있다. 아레나 풀 관리 모듈(220)이 메모리 사용 시나리오에 기초하여 메모리 공간을 반환하는 방법에 대해서는 다른 도면을 참조하여 자세히 설명하도록 한다.
또한, 아레나 풀 관리 모듈(220)은 아레나 그룹화 모듈에 의해 그룹화된 아레나 풀들을 저장할 수 있으며, 사용자가 이종 메모리들을 다양한 아레나 풀(Zone, Node 등)로 재구성할 수 있도록 아레나 풀들을 관리할 수 있다.
메모리 사용 시나리오 제공 모듈(230)은 다양한 메모리 사용 시나리오(usecase)를 생성할 수 있다.
실시예에 있어서, 메모리 사용 시나리오 제공 모듈(230)은 메모리 할당 요청에 포함된 컨텍스트(context)에 기초하여 아레나를 선택할 수 있다.
여기서, 컨텍스트(context)는 요청하고자 하는 메모리 공간의 특성에 대한 정보를 나타내며, 예를 들어, 컨텍스트에는 메모리의 종류에 대한 우선순위(priority), 필요한 메모리의 공간, 메모리의 속도, 최대 메모리 정책 및 필요한 메모리의 기능이 포함될 수 있다. 또한, 메모리의 기능은 데이터의 암호화 가능 여부, 전력 소모량의 고저 여부가 포함될 수 있다. 도 3을 참조하여, 컨텍스트의 예시에 대해 자세히 설명하도록 한다.
메모리 확장기(200)는 호환가능(Compatible) API 모듈(241) 및 최적화(Optimization) API 모듈(243)을 포함할 수 있다.
호환가능 API 모듈(241)은 응용 계층을 수정하지 않으며 이종 메모리들에 대한 메모리 공간을 할당하기위한 API를 지원하는 모듈을 나타낸다. 즉, 호환가능 API는 기존의 응용 및 서비스를 수정 및 변경하지 않고 이종 메모리들을 사용할 수 있도록 하는 패스(path)이다. 메모리 확장기(200)는 호환가능 API 모듈(241)을 통하여 응용(application) 계층과 간접 메모리 공간 요청(in-direct memory request, 245) 및 이에 대한 응답을 주고받을 수 있다.
최적화 API 모듈(243)은 응용 계층을 직접 수정하여 이종 메모리들에 대한 메모리 공간의 할당을 최적화하기 위한 API를 지원하는 모듈을 나타낸다. 즉, 최적화 API는 기존의 응용 및 서비스를 직접 수정 및 변경하여 이종 메모리들의 사용에 대해 더 높은 수준의 최적화를 달성할 수 있도록 하는 패스(path)이다. 메모리 확장기(200)는 최적화 API 모듈(243)을 통하여 응용(application) 계층과 직접 메모리 공간 요청(direct memory request, 247) 및 이에 대한 응답을 주고받을 수 있다.
호환가능(Compatible) API 모듈(241) 및 최적화(Optimization) API 모듈(243)에 대해서는 다른 도면을 참조하여 자세히 설명하도록 한다.
도 3은 본 개시의 예시적 실시예에 따른 컨텍스트(300)를 나타내는 블록도이다.
여기서, 아레나는 CXL 아레나와 노말 아레나로 그룹화된 경우를 가정하고 설명하도록 한다. 이때, 노말 아레나는 CXL 메모리와 물리적 특성이 다른 메모리의 메모리 공간을 관리하는 논리적 단위와 대응된다.
도 3을 참조하면, 컨텍스트(300)는 메모리 존 우선순위(memory zone priority, 301), 요청한 CXL 메모리 공간(303), 요청한 노말 존 메모리 공간(305), 최대 메모리 정책(max memory policy, 307)에 대한 정보가 포함됨을 알 수 있다.
메모리 존 우선순위(301)는 CXL 아레나와 노말 아레나 중 메모리 공간을 먼저 할당할 아레나에 대한 우선순위를 의미하며, 도 3을 참조하면, 메모리 확장기(200)는 CXL 아레나를 디폴트로 하여 CXL 아레나에 먼저 메모리 공간을 할당하도록 함을 알 수 있다. 즉, 메모리 확장기(200)은 논리적 단위인 아레나를 통하여 메모리 존 우선순위의 순서대로 메모리 공간 할당 요청에 대응되는 메모리 공간을 할당할 수 있다.
요청한 CXL 메모리 공간(303) 및 요청한 노말 존 메모리 공간(305)은 CXL 아레나 및 노말 아레나에 각각 필요한 메모리 공간을 의미하며, 도 3을 참조하면, CXL 아레나에 무제한(unlimited)하게 메모리 공간을 요청함을 알 수 있다.
최대 메모리 정책(max memory policy, 307)은 하나의 아레나에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 메모리 공간을 어떻게 할당할 지에 대한 정책을 의미한다. 도 3을 참조하면, 최대 메모리 정책(307)은 후술할 인터리브로 설정되어 있음을 알 수 있다. 도 4를 참조하여, 최대 메모리 정책에 대해 자세히 설명하도록 한다.
도 4은 본 개시의 예시적 실시예에 따른 최대 메모리 정책을 설명하기 위한 블록도이다.
도 4를 참조하면, 높은 우선순위를 갖는 아레나(410)와 낮은 우선순위를 갖는 아레나(420)가 도시되어 있음을 알 수 있다. 여기서 최대 메모리 정책(400)은 인터리브(interleave, 401), 리메인(remain, 402), 아웃 오브 메모리(out of memory, oom, 403)를 포함할 수 있다.
인터리브(interleave, 401)는 낮은 우선순위를 갖는 아레나(420)에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 높은 우선순위를 갖는 아레나(410)에서 이미 사용되고 있는 메모리 공간을 메모리 공간 할당 요청에 대응하는 메모리 공간으로 할당하는 정책을 의미한다.
리메인(remain, 402)은 낮은 우선순위를 갖는 아레나(420)에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 낮은 우선순위를 갖는 아레나(420)에서 이미 사용되고 있는 메모리 공간을 메모리 공간 할당 요청에 대응하는 메모리 공간으로 할당하는 정책을 의미한다.
아웃 오브 메모리(oom, 403)은 낮은 우선순위를 갖는 아레나(420)에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 아레나의 가용 메모리 공간만 할당하고 요청한 메모리 공간 중에서 초과된 메모리 공간은 할당하지 않는 정책을 의미한다.
다시 도 2a 및 도 2b로 돌아가서, 메모리 사용 시나리오 제공 모듈(230)은 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 아레나를 선택할 수 있다.
여기서, 데이터에 대한 지역성(locality)은 시간적 지역성(time locality) 및 공간적 지역성(spatial locality)을 포함할 수 있으며, 시간적 지역성은 액세스(access)된 메모리 공간이 가까운 미래에 다시 액세스될 가능성이 높은 성질을 나타내며, 공간적 지역성은 액세스된 메모리 공간과 인접한 메모리 공간이 액세스될 가능성이 높은 성질을 나타낸다. 메모리 사용 시나리오 제공 모듈(230)이 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 아레나를 선택하는 방법에 대해서는 도 5를 참조하여 자세히 설명하도록 한다.
도 5는 본 개시의 예시적 실시예에 따른 메모리 확장기(500)를 나타내는 블록도이다.
여기서, 도 5에 도시된 메모리 확장기(500)는 도 1에서 설명된 메모리 확장기(160) 및 도 2a 및 도 2b에 도시된 메모리 확장기(200)와 대응될 수 있다.
도 5를 참조하면, 니어 메모리 아레나(near memory arena, 501) 및 파 메모리 아레나(far memory arena, 505)가 도시되어 있음을 알 수 있다. 여기서, 니어 메모리 아레나(501) 및 파 메모리 아레나(505)는 아레나 그룹화 모듈(210)이 메모리의 속도에 따라서 이종 메모리들을 그룹화한 것일 수 있으며, 니어 메모리 아레나(501)는 작고 빠른 메모리 특성을 갖고, 파 메모리 아레나(505)는 크고 느린 메모리 특성을 갖을 수 있다.
또한, 도 5를 참조하면, 핫 데이터(hot data, 503) 및 콜드 데이터(cold data, 507)이 도시되어 있음을 알 수 있다. 여기서, 핫 데이터(503)은 시간적 지역성 또는 공간적 지역성이 미리 설정된 값보다 높은 데이터를 의미하며, 콜드 데이터(507)는 시간적 지역성 또는 공간적 지역성이 미리 설정된 값보다 낮은 데이터를 의미한다.
메모리 확장기(500)(또는 메모리 사용 시나리오 제공 모듈(230))은 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 아레나에 대한 메모리 사용 시나리오를 생성할 수 있다.
도 5를 참조하면, 메모리 확장기(500)(또는 메모리 사용 시나리오 제공 모듈(230))는 핫 데이터(503)에 대응하는 메모리 할당 요청에 대응하는 메모리 공간은 니어 메모리 아레나(501)를 통하여 메모리 공간을 할당할 수 있도록 메모리 사용 시나리오를 생성할 수 있으며, 콜드 데이터(507)에 대응하는 메모리 할당 요청에 대응하는 메모리 공간은 파 메모리 아레나(505)을 통하여 메모리 공간을 할당할 수 있도록 메모리 사용 시나리오를 생성할 수 있다.
한편 실시예에 있어서, 메모리 확장기(160, 200, 500)은 메모리 할당 요청에 포함된 컨텍스트(context) 및 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 아레나를 선택할 수 있다. 예를 들어, 메모리 사용 시나리오를 생성하기 위해서, 메모리 사용 시나리오 생성 모듈(230)은 컨텍스트 및 데이터에 대한 지역성 모두를 고려할 수 있다. 즉, 메모리 확장기(160, 200, 500)는 메모리 할당 요청에 포함된 컨텍스트(context) 및 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성할 수 있다.
다시 도 2a 및 도 2b로 돌아가서, 메모리 확장기(200)는 호환가능(Compatible) API 모듈(241) 및 최적화(Optimization) API 모듈(243)을 포함할 수 있다.
호환가능 API 모듈(241)은 응용 계층을 수정하지 않으며 이종 메모리들에 대한 메모리 공간을 할당하기위한 API를 지원하는 모듈을 나타낸다. 즉, 호환가능 API는 기존의 응용 및 서비스를 수정 및 변경하지 않고 이종 메모리들을 사용할 수 있도록 하는 패스(path)이다.
최적화 API 모듈(243)은 응용 계층을 직접 수정하여 이종 메모리들에 대한 메모리 공간의 할당을 최적화하기 위한 API를 지원하는 모듈을 나타낸다. 즉, 최적화 API는 기존의 응용 및 서비스를 직접 수정 및 변경하여 이종 메모리들의 사용에 대해 더 높은 수준의 최적화를 달성할 수 있도록 하는 패스(path)이다.
실시예에 있어서, 메모리 확장기(200)는 응용 계층(application layer)과 연결되도록 호환가능한 API 모듈(241) 및 최적화 API 모듈(243) 중 하나를 사용할 수 있다.
도 2b를 참조하면, 메모리 확장기(200)는 호환가능 API 모듈(241)을 통하여 응용(application) 계층과 간접 메모리 공간 요청(in-direct memory request, 245) 및 이에 대한 응답을 주고받음을 알 수 있다. 이때, 간접 메모리 공간 요청(in-direct memory request)은, 응용 계층 관점에서 기존의 응용 및 서비스를 수정 또는 변경하지 않으며 이종 메모리들에 대한 메모리 공간을 할당하기 위한 요청을 나타낸다. 예를 들어, 호환가능 API 모듈(241)은 응용(application) 실행 중 메모리를 접근하는 표준 콜스택(standard callstack)을 선점(preemption) 및 전처리(preprocessing)하여 타겟 메모리(target memory)를 조정하는 방식으로 동작할 수 있다.
도 2b를 참조하면, 메모리 확장기(200)는 최적화 API 모듈(243)을 통하여 응용(application) 계층과 직접 메모리 공간 요청(direct memory request, 247) 및 이에 대한 응답을 주고받음을 알 수 있다. 이때, 직접 메모리 공간 요청(direct memory request)은 응용 계층 관점에서 기존의 응용 및 서비스를 수정 또는 변경하여 이종 메모리들에 대한 메모리 공간을 할당하기 위한 요청을 나타낸다. 예를 들어, 최적화 API 모듈(243)은 물리적인 메모리에 기반한 독점(proprietary) 기능에 기초하여 동작할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 6을 참조하면, 단계 S610에서 제1 메모리 및 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 특성에 기초하여 복수의 메모리들을 그룹화하여 복수의 아레나 풀들을 생성하는 동작이 수행될 수 있다. 복수의 메모리들 각각의 특성을 획득하기 위하여, 메모리 공간 할당 방법은 메모리들에 대한 각각의 특성에 대한 정보를 수신하는 단계를 포함할 수 있다.
실시예에 있어서, 메모리의 물리적 특성은 메모리의 크기, 메모리의 속도, 메모리의 암호화 가능 여부, 메모리의 소모 전력 중 하나일 수 있다.
실시예에 있어서, 복수의 메모리들을 그룹화하여 복수의 아레나 풀을 생성하는 단계는, 코어의 수에 기초하여 아레나 풀의 수를 결정하는 단계를 포함할 수 있다.
도 6을 참조하면, 단계 S620에서 메모리 할당 요청에 기초하여 아레나 풀에포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 동작이 수행될 수 있다.
실시예에 있어서, 도 2a 및 도 2b에서 설명된 메모리 확장기(200)(또는 메모리 사용 시나리오 생성 모듈(230))는 메모리 할당 요청에 포함된 컨텍스트(context) 및 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성할 수 있다.
실시예에 있어서, 컨텍스트는, 메모리의 종류에 대한 우선수위, 필요한 메모리의 공간, 최대 메모리 정책을 포함할 수 있다.
실시예에 있어서, 메모리 사용 시나리오를 생성하는 단계는, 최대 메모리 정책에 기초하여, 2개의 아레나 중에서 낮은 우선순위를 갖는 아레나에서 가용 메모리 공간과 요청한 메모리 공간을 비교하여 메모리 공간 할당 요청에 대응하는 메모리 공간을 할당하도록 상기 메모리 사용 시나리오를 생성하는 단계를 포함할 수 있다.
실시예에 있어서, 메모리 사용 시나리오를 생성하는 단계는, 콜러(caller)의 메모리 할당 요청에 대응되는 메모리 공간이 콜러(call)에 기존 할당된 메모리 공간(예를 들어, 쓰레드 캐쉬(thread cache))에 할당할 수 있는 경우, 기존 할당된 메모리 공간 중 일부를 메모리 할당 요청에 대응되는 메모리 공간으로 할당할 수 있다. 이때, 콜러(caller)는 메모리 공간을 요청하는 주체(예를 들어, 장치 등)를 나타낸다.
도 6을 참조하면, 단계 S630에서 생성된 메모리 사용 시나리오에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환하는 동작이 수행될 수 있다.
실시예에 있어서, 메모리 공간 할당 방법은 메모리 할당 요청을 수신하는 단계, 상기 아레나 풀에 포함된 아레나에 미리 할당된 프리 메모리 청크(free memory chunk) 여부에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 할당하는 단계, 및 할당된 상기 메모리 공간을 반환(return)하는 단계를 포함할 수 있다. 또한, 상기 메모리 공간을 할당하는 단계는, 선택된 아레나 풀에 포함된 제1 아레나에 미리 할당된 프리 메모리 청크가 있는 경우, 상기 메모리 할당 요청에 대응하는 메모리 공간을 상기 제1 아레나에서 할당하고, 선택된 아레나 풀에 포함된 제1 아레나에 내 미리 할당된 프리 메모리 청크가 없는 경우, 상기 메모리 할당 요청에 대응하는 메모리 공간을 선택된 아레나 풀에 포함된 제2 아레나에서 할당하는 단계를 포함할 수 있다.
실시예에 있어서, 메모리 공간 할당 방법은 응용 계층(application layer)과 연결되도록 호환가능한 API 모듈(241) 및 최적화 API 모듈(243) 중 하나를 사용할 수 있으며, 호환가능한 API 모듈(241)은 응용 계층을 수정하지 않으며 이종 메모리들에 대한 메모리 공간을 할당하기 위한 모듈이며, 최적화 API 모듈(243)은 응용 계층을 직접 수정하여 이종 메모리들에 대한 메모리 공간의 할당을 최적화하기 위한 모듈일 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 7을 참조하면, 단계 S630 이후 단계 S640에서 반환된 메모리 공간의 크기 및 반환 횟수에 기초하여 텔레미트리(telemetry)를 업데이트하는 동작을 수행할 수 있다. 여기서, 텔레미트리(telemetry)는 반환된 메모리 공간의 크기 및 반환 횟수를 카운팅하는 통계적인 파라미터이다.
도 7을 참조하면, 단계 S650에서 업데이트된 텔레미트리 및 컨텍스트에 포함된 최대 메모리 정책에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하기 위한 아레나를 선택하는 동작을 수행할 수 있다.
관련하여, 하나의 아레나에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 업데이트된 텔레미트리 및 컨텍스트에 포함된 최대 메모리 정책에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하기 위한 아레나를 추가적으로 선택하는 동작을 수행할 수 있다. 실시예에 있어서, 추가적으로 선택되는 아레나는 단계 S620에서 메모리 사용 시나리오를 생성할 때 미리 결정될 수 있다.
즉, 하나의 아레나에서 가용 메모리 공간보다 요청한 메모리 공간이 많은 경우, 추가적으로 선택된 아레나에서 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 동작을 수행할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법을 나타내는 순서도이다.
도 8을 참조하면, 전술한 바와 같이, 단계 S630 이후 단계 S640에서 반환된 메모리 공간의 크기 및 반환 횟수에 기초하여 텔레미트리(telemetry)를 업데이트하는 동작을 수행할 수 있다. 여기서, 텔레미트리(telemetry)는 반환된 메모리 공간의 크기 및 반환 횟수를 카운팅하는 통계적인 파라미터이다.
단계 S660에서 업데이트된 텔레미터에 기초하여 복수의 메모리들을 재그룹화하여 복수의 아레나 풀들을 재생성하는 동작을 수행할 수 있다. 실시예에 있어서, 메모리 확장기(160, 200, 500)는 사용자의 입력에 기초하여 복수의 메모리들을 재그룹화하여 복수의 아레나 풀들을 재생성하는 동작을 수행할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 9를 참조하면, 자세하게는, 지연시간(latency) 특성이 다른 물리적 메모리 DDR5 및 CXL 메모리를 하나의 논리적 메모리 영역(싱글 존(single zone))으로 구성하여 메모리 엑세스의 수 대비 지연시간을 측정한 결과(910)와 각각 분리된 논리적 메모리 영역(분리된 존(separated zone)으로 구성하여 메모리 엑세스의 수 대비 지연시간을 측정한 결과(920)가 도시되어 있음을 알 수 있다.
지연시간 특성이 다른 물리적 메모리 DDR5 및 CXL 메모리를 하나의 논리적 메모리 영역(싱글 존(single zone))으로 구성하여 메모리 엑세스의 수 대비 지연시간을 측정한 결과(910)에서, 지연시간은 메모리 엑세스의 수 대비 균일하지 못하게 측정됨을 보여주고 있다. 즉, 지연시간의 편차가 0.2 ms 이상인 것으로 보여 진다.
반면, 지연시간(latency) 특성이 다른 물리적 메모리 DDR5 및 CXL 메모리를 각각 분리된 논리적 메모리 영역(분리된 존(separated zone)으로 구성하여 메모리 엑세스의 수 대비 지연시간을 측정한 결과(920)에서, 지연시간이 균일하게 측정됨을 보여주고 있다. 즉, 응용 계층이 접근하는 아레나의 선형 어드레스 공간(linear address space)에 대한 DDR/CXl 메모리가 쓰레드(thread) 별 고립(isolation)됨으로써, 지연시간이 균일해질 수 있다. 이는, 지연시간 별로 아레나가 분리되어 있으며, 응용 계층에게 더 높은 수준의 지연시간 QoS(quality of service)를 보장할 수 있음을 의미한다. 만약, CXL 메모리 및 DRAM을 메모리 특성(예를 들어, 물리적 특성)에 따라 그룹화하지 않을 경우, 일관적인 지연시간의 보장이 불가할 수 있다(latency fluctuation).
도 10은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 10을 참조하면, 자세하게는 사용사례를 4가지로 기획(UX1, UX2, UX3, UX4)하여, 응용 A, 응용 B는 각각 네트워크 서버-클라이언트 모델로 동작하며, 클라이언트-서버 간의 키-밸류(key-value) 데이터에 대해 저장(set) 및 조회(get) 동작을 수행 시, 이득(IMDB throughput)을 측정한 결과를 나타낸다.
UX1은 응용 서버에서 DRAM이 아닌 CXL 메모리를 사용하는 경우이며, 성능 차이를 확인하기 위한 사용 사례이다. CXL 메모리가 DRAM보다 저 비용으로 개발 가능한 경우를 가정하여, CXL 메모리가 DRAM을 대치하는 경우에도 이상적으로 동등한 응용 성능을 보인다면 DRAM 대신 저비용의 CXL 메모리를 사용함으로써 전체비용을 낮출 수 있다.
UX2는 응용 서버에서 DRAM에 CXL 메모리를 추가하여 더 많은 메모리를 사용하도록 설정된 경우이며, 성능 이득을 확인하기 위한 사용 사례이다. DRAM과 CXL 메모리를 혼용할 경우 사용자 응용/서비스에서의 성능 이득을 제공할 수 있다.
UX3는 응용 서버에서 데이터를 스토리지에 저장하지 않고, CXL 메모리에 저장하는 경우이며, 성능 이득을 확인하기 위한 사용 사례이다. 데이터를 영구 목적이 아닌 메모리 부족(shortage)으로 인해 스토리지에 저장하는 경우에, CXL 메모리 사용 시 더 나은 응용 성능을 보여줄 수 있다.
UX4는 응용 서버를 스케일-아웃(scale-out)하지 않고 스케일-업(scale-up)하는 경우이며, 성능 이득을 확인하기 위한 사용 사례이다. 메모리 부족으로 인해 서버시스템을 스케일-아웃하는 일반적인 비집약 구조(disaggreagation architecture)의 경우, 실제 필요한 메모리 외에도 cpu, 스토리지, 네트워크, 파워, 공간 등을 포함하는 추가적인 비용이 요구되어 비효율적이다. 따라서, CXL 메모리 사용으로 스케일-업하여 더 나은 응용 성능을 보여줄 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 공간 할당 방법의 성능에 대한 평가 결과를 나타낸다.
도 11은, 자세하게는, 본 개시의 예시적 실시에에 따른 메모리 공간 할당 방법을 기반으로 머신러닝(ML) 또는 인공지능(AI) 응용(이하 'ML/AI'라 지칭함)을 수행하여 이득을 측정 결과이다.
도 11의 윗 도면을 참조하면, DDR 노드만을 포함하는 시스템의 경우, N개의 ML/AI 프로세스에서 전체 응용의 성능(IPM, inferences per Minute)이 포화된다. 여기서, CXL 노드를 추가함으로써 전체 시스템에서의 응용 성능을 측정한 결과이다.
도 11의 아랫 도면을 참조하면, 추가되는 CXL 노드의 수에 따라서 ML/AI 프로세스에서 전체 응용의 성능이 향상됨을 알 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 컴퓨팅 장치의 블록도이다.
도 12를 참조하면, 컴퓨팅 장치(1000)는 프로세서(1100) 및 메모리(1200)를 포함할 수 있다. 도 8는 하나의 프로세서(1100)가 도시되었으나, 이에 제한되는 것은 아니며 컴퓨팅 장치(1000)는 복수의 프로세서를 포함할 수도 있다.
프로세서(1100)는 하나 이상의 코어(core, 미도시) 및 그래픽 처리부(미도시) 및/또는 다른 구성 요소와 신호를 송수신하는 연결 통로(예를 들어, 버스(bus) 등)를 포함할 수 있다.
프로세서(1100)는 도 1 내지 도 12를 참고하여 전술한 메모리 공간 할당 방법을 수행할 수 있다. 예컨대, 프로세서(1100)는 제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하고, 메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하고, 생성된 상기 메모리 사용 시나리오에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)할 수 있다. 여기서, 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며, 아레나 풀은 상기 아레나들의 집합을 나타낼 수 있다.
한편, 프로세서(1100)는 프로세서(1100) 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시)을 더 포함할 수 있다. 또한, 프로세서(1100)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템 온 칩(SoC: system on chip) 형태로 구현될 수 있다.
메모리(1200)는 프로세서(1100)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 예를 들어, 메모리(1200)는 도 6 내지 도 8을 참조하여 설명한 메모리 공간 할당 방법이 구현된 복수의 모듈을 포함할 수 있다. 또한, 메모리는 적어도 하나의 프로세서에 의해서 실행 시, 적어도 하나의 프로세서로 하여금 메모리 공간 할당 방법을 수행하도록 명령어들을 저장할 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 집적 회로 및 이를 포함하는 장치를 나타내는 블록도이다.
장치(2000)는 집적 회로(2100) 및, 집적 회로(2100)에 연결되는 구성들, 예컨대 센서(2200), 디스플레이 장치(2230), 메모리(2400)를 포함할 수 있다. 예를 들어, 장치(2000)는 스마트 폰, 게임 장치, ADAS, 웨어러블 장치 등과 같은 모바일 장치 또는 데이터 서버일 수 있다.
본 개시의 예시적 실시예에 따른 집적 회로(2100)는 CPU(2110), RAM(2120), GPU(2130), 컴퓨팅 장치(2140), 센서 인터페이스(2150), 디스플레이 인터페이스(2160) 및 메모리 인터페이스(2170)를 포함할 수 있다. 이 외에도 집적 회로(2100)는 통신 모듈, DSP, 비디오 모듈 등 다른 범용적인 구성요소들을 더 포함할 수 있으며, 집적 회로(2100)의 각 구성(CPU(2110), RAM(2120), GPU(2130), 컴퓨팅 장치(2140), 센서 인터페이스(2150), 디스플레이 인터페이스(2160) 및 메모리 인터페이스(2170))은 버스(2180)를 통해 서로 데이터를 송수신할 수 있다. 실시예에 있어서, 집적 회로(2100)는 애플리케이션 프로세서일 수 있다. 실시예에 있어서, 집적 회로(2100)는 시스템 온 칩(SoC)로서 구현될 수 있다.
CPU(2110)는 집적 회로(2100)의 전반적인 동작을 제어할 수 있다. CPU(2110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(2110)는 메모리(2170)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 실시예에 있어서, CPU(2110)는 메모리(2170)에 저장된 프로그램들을 실행함으로써, 본 개시의 실시예들에 따른 메모리 공간 할당 방법을 수행할 수 있다.
RAM(2120)은 프로그램들, 데이터, 및/또는 명령들(instructions)을 일시적으로 저장할 수 있다. 실시 예에 따라, RAM(2120)은 DRAM 또는 SRAM으로 구현될 수 있다. RAM(2120)은 인터페이스들(2150, 2160)을 통해 입출력되거나, GPU(2130) 또는 CPU(2110)에서 생성되는 데이터, 예컨대 이미지 데이터를 일시적으로 저장할 수 있다.
실시예에 있어서, 집적 회로(2100)는 ROM(Read Only Memory)을 더 구비할 수 있다. ROM은 지속적으로 사용되는 프로그램들 및/또는 데이터를 저장할 수 있다. ROM은 EPROM(erasable programmable ROM) 또는 EEPROM(electrically erasable programmable ROM) 등으로 구현될 수 있다.
GPU(2130)는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. 예컨대 GPU(2130)는 센서 인터페이스(2150)를 통해 수신되는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. GPU(2130)에서 처리된 영상 데이터는 메모리(2170)에 저장되거나 또는 디스플레이 인터페이스(2160)를 통해 디스플레이 장치(2160)로 제공될 수 있다.
센서 인터페이스(2150)는 집적 회로(2100)에 연결되는 센서(2200)로부터 입력되는 데이터(예컨대, 영상 데이터, 음성 데이터 등)를 수신할 수 있다.
디스플레이 인터페이스(2160)는 디스플레이 장치(2160)로 데이터(예컨대, 이미지)를 출력할 수 있다. 디스플레이 장치(2230)는 이미지 데이터 또는 영상 데이터를 LCD(Liquid-crystal display), AMOLED(active matrix organic light emitting diodes) 등의 디스플레이를 통해 출력할 수 있다.
메모리 인터페이스(2170)는 집적 회로(2100)의 외부에 있는 메모리(240)로부터 입력되는 데이터 또는 메모리(2400)로 출력되는 데이터를 인터페이싱할 수 있다. 실시예에 따라, 메모리(2400)는 DRAM이나 SRAM 등의 휘발성 메모리 또는 ReRAM, PRAM 또는 NAND flash 등의 비휘발성 메모리로 구현될 수 있다. 메모리(2400)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 구현될 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 메모리 확장기에 의해 수행되는 메모리 공간 할당 방법에 있어서,
    제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계;
    메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계; 및
    생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며,
    상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며,
    상기 아레나 풀은 상기 아레나들의 집합을 나타내는 메모리 공간 할당 방법.
  2. 제1 항에 있어서,
    상기 물리적 특성은 메모리의 크기, 메모리의 속도, 메모리의 암호화 가능 여부, 메모리의 소모 전력 중 하나인 메모리 공간 할당 방법.
  3. 제1 항에 있어서,
    상기 메모리 사용 시나리오를 생성하는 단계는,
    메모리 할당 요청에 포함된 컨텍스트(context) 및 메모리 할당 요청에 대응되는 데이터에 대한 지역성(locality)에 기초하여 아레나를 선택하는 단계를 포함하며,
    상기 지역성(locality)은 시간적 지역성(time locality) 또는 공간적 지역성(time locality)인, 메모리 공간 할당 방법.
  4. 제1 항에 있어서,
    상기 메모리 공간 할당 방법은,
    응용 계층(application layer)과 연결되도록 호환가능한 API(Compatible API) 및 최적화 API(Optimization API) 중 하나를 사용하며,
    상기 호환가능한 API는 응용 계층을 수정하지 않으며 이종 메모리들에 대한 메모리 공간을 할당하기위한 API이며,
    상기 최적화 API는 응용 계층을 직접 수정하여 이종 메모리들에 대한 메모리 공간의 할당을 최적화하기 위한 API인, 메모리 공간 할당 방법.
  5. 제3 항에 있어서,
    상기 컨텍스트는,
    메모리의 종류에 대한 우선순위(priority), 필요한 메모리의 공간, 최대 메모리 정책(max memory policy)을 포함하는 메모리 공간 할당 방법.
  6. 제1 항에 있어서,
    상기 복수의 메모리들을 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계는,
    코어의 수에 기초하여 상기 아레나 풀의 수를 결정하는 단계를 포함하는 메모리 공간 할당 방법.
  7. 제5 항에 있어서,
    반환된 메모리 공간의 크기 및 반환 횟수에 기초하여 텔레미트리(telemetry)를 업데이트하는 단계;
    업데이트된 상기 텔레미트리 및 컨텍스트에 포함된 상기 최대 메모리 정책에 기초하여 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하기 위한 아레나를 선택하는 단계를 더 포함하며,
    상기 텔레미트리(telemetry)는 반환된 메모리 공간의 크기 및 반환 횟수를 카운팅하는 통계적인 파라미터인 메모리 공간 할당 방법.
  8. 제5 항에 있어서,
    반환된 메모리 공간의 크기 및 횟수에 기초하여 텔레미트리(telemetry)를 업데이트하는 단계;
    업데이트된 상기 텔레미터에 기초하여 상기 우선순위를 변경하는 단계; 및
    변경된 상기 우선순위에 기초하여 복수의 메모리들을 재그룹화하여 복수의 아레나 풀들을 재생성하는 단계를 더 포함하며,
    상기 텔레미트리(telemetry)는 반환된 메모리 공간의 크기 및 반환 횟수를 카운팅하는 통계적인 파라미터인 메모리 공간 할당 방법.
  9. 적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해서 실행 시, 상기 적어도 하나의 프로세서로 하여금 메모리 공간 할당 방법을 수행하도록 명령어들을 저장하는 메모리를 포함하고,
    상기 메모리 공간 할당 방법은,
    제1 메모리 및 상기 제1 메모리와 상이한 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하는 단계;
    메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하는 단계; 및
    생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하는 단계를 포함하며,
    상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며,
    상기 아레나 풀은 상기 아레나들의 집합을 나타내는 메모리 확장기.
  10. 버스에 연결되고, 제1 메모리와 통신하도록 구성된 장치;
    상기 제1 메모리에 기입하거나 상기 제1 메모리로부터 독출할 제1 데이터의 크기에 기초하여, 제1 프로토콜 또는 제2 프로토콜을 선택하고, 선택된 프로토콜에 기초하여 상기 버스를 통해 상기 제1 메모리에 액세스하도록 구성된 호스트 프로세서; 및 상기 제1 메모리와 상이한 제2 메모리를 포함하고,
    상기 제1 프로토콜은, 메모리 액세스를 위한 전용의 프로토콜이고,
    상기 제2 프로토콜은, 비일관적(non-coherent) 입출력을 위한 프로토콜이며,
    상기 호스트 프로세서는,
    상기 제1 메모리 및 상기 제2 메모리를 포함하는 복수의 메모리들 각각의 물리적 특성에 기초하여 상기 복수의 메모리들을 논리적으로 그룹화하여 복수의 아레나 풀(arena pool)들을 생성하고,
    메모리 할당 요청에 기초하여 상기 아레나 풀에 포함된 적어도 하나의 아레나에 대한 메모리 사용 시나리오를 생성하고,
    생성된 상기 메모리 사용 시나리오에 기초하여 상기 메모리 할당 요청에 대응하는 메모리 공간을 반환(return)하며,
    상기 아레나는 메모리의 물리적 특성에 따라 그룹화된 적어도 하나의 메모리에 대응되는 메모리 공간을 관리하는 논리적 단위를 나타내며,
    상기 아레나 풀은 상기 아레나들의 집합을 나타내는 시스템.
KR1020220140508A 2022-10-27 2022-10-27 메모리 공간 할당 방법, 장치 및 시스템 KR20240059347A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220140508A KR20240059347A (ko) 2022-10-27 2022-10-27 메모리 공간 할당 방법, 장치 및 시스템
US18/125,218 US20240143498A1 (en) 2022-10-27 2023-03-23 Methods, devices, and systems for allocating memory space

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220140508A KR20240059347A (ko) 2022-10-27 2022-10-27 메모리 공간 할당 방법, 장치 및 시스템

Publications (1)

Publication Number Publication Date
KR20240059347A true KR20240059347A (ko) 2024-05-07

Family

ID=90835048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220140508A KR20240059347A (ko) 2022-10-27 2022-10-27 메모리 공간 할당 방법, 장치 및 시스템

Country Status (2)

Country Link
US (1) US20240143498A1 (ko)
KR (1) KR20240059347A (ko)

Also Published As

Publication number Publication date
US20240143498A1 (en) 2024-05-02

Similar Documents

Publication Publication Date Title
US20210081312A1 (en) Shared memory
KR102268722B1 (ko) 데이터 액세스 장치 및 그것의 동작 방법
US10469252B2 (en) Technologies for efficiently managing allocation of memory in a shared memory pool
US6289424B1 (en) Method, system and computer program product for managing memory in a non-uniform memory access system
US7921261B2 (en) Reserving a global address space
US10394604B2 (en) Method for using local BMC to allocate shared GPU resources inside NVMe over fabrics system
EP3688596B1 (en) Computer program product, system, and method to manage access to storage resources from multiple applications
KR20160096279A (ko) 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
KR20180007374A (ko) 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
KR102655094B1 (ko) 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
JP7205033B2 (ja) キャッシュの割当方法と装置、記憶媒体、電子装置
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
JP2022539010A (ja) 高帯域クロスリンクを使用したgpuチップレット
EP3353664A1 (en) Method and apparatus for pinning memory pages in a multi-level system memory
KR20240059347A (ko) 메모리 공간 할당 방법, 장치 및 시스템
US11431648B2 (en) Technologies for providing adaptive utilization of different interconnects for workloads
WO2022063273A1 (zh) 一种基于numa属性的资源分配方法及装置
US11451435B2 (en) Technologies for providing multi-tenant support using one or more edge channels
CN116483553A (zh) 计算设备、数据处理方法、系统及相关设备
Ha et al. Dynamic capacity service for improving CXL pooled memory efficiency
TW202418089A (zh) 分配記憶體空間的方法、記憶體擴充器和系統
KR102592330B1 (ko) OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치
CN116455849B (zh) 一种面向众核处理器的并发通信方法、装置、设备和介质
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20230305881A1 (en) Configurable Access to a Multi-Die Reconfigurable Processor by a Virtual Function