KR101849116B1 - 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램 - Google Patents

불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램 Download PDF

Info

Publication number
KR101849116B1
KR101849116B1 KR1020170015068A KR20170015068A KR101849116B1 KR 101849116 B1 KR101849116 B1 KR 101849116B1 KR 1020170015068 A KR1020170015068 A KR 1020170015068A KR 20170015068 A KR20170015068 A KR 20170015068A KR 101849116 B1 KR101849116 B1 KR 101849116B1
Authority
KR
South Korea
Prior art keywords
memory
cluster
local
local memory
bandwidth
Prior art date
Application number
KR1020170015068A
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 KR1020170015068A priority Critical patent/KR101849116B1/ko
Application granted granted Critical
Publication of KR101849116B1 publication Critical patent/KR101849116B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템은, 복수개의 누마 노드를 포함하고, 각 누마 노드는, 하나 이상의 로컬 메모리와, 로컬 메모리에 액세스하는 하나 이상의 프로세서와, 하나의 로컬 메모리에 액세스하기 위한 전용 연결 통로인 하나 이상의 메모리 채널을 각각 포함하며, 동일 누마 노드에 포함된 각 메모리 채널의 대역폭 크기가 서로 동일하되 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경을 가지는 불균일 메모리 접근 시스템으로서, 각 메모리 채널 간의 대역폭 크기의 비율에 비례한 만큼의 메모리 용량을 각 로컬 메모리에 할당하는 메모리 관리 모듈을 포함하는 것을 특징으로 한다.

Description

불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램{Non-uniform memory access system, and memory management method and program thereof}
본 발명은 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램에 관한 것으로서, 더욱 상세하게는 어느 한 누마 노드에 포함된 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경의 경우에 각 메모리 채널의 대역폭 크기를 고려하여 메모리를 관리하는 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램에 관한 것이다.
불균일 메모리 접근(non-uniform memory access ; NUMA) 시스템은 복수개의 누마 노드(NUMA node)를 포함하는 것으로서, 각 누마 노드는 하나 이상의 프로세서와, 프로세서가 액세스 가능한 로컬 메모리를 포함한다.
종래의 불균일 메모리 접근 시스템은 동일한 하드웨어 성능을 가지는 메모리가 각 누마 노드의 로컬 메모리로써 구비되며, 이에 따라 각 누마 노드에 포함된 메모리 채널의 대역폭 크기가 서로 동일한 대칭 메모리 환경을 가지며, 이러한 대칭 메모리 환경에서 각 누마 노드의 로컬 메모리를 관리한다.
하지만, 서로 다른 하드웨어 성능을 갖는 메모리가 각 누마 노드의 로컬 메모리로써 구비되는 경우, 즉 어느 한 누마 노드에 포함된 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경의 경우, 종래의 불균일 메모리 접근 시스템에 따른 메모리 관리 방법을 그대로 적용하면 메모리 환경 변화로 인해 메모리 관리 효율이 저하되는 문제점이 발생한다.
상기한 바와 같은 종래 기술의 문제점을 해결하기 위하여, 본 발명은 어느 한 누마 노드에 포함된 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경의 경우에 각 메모리 채널의 대역폭 크기를 고려하여 메모리를 관리하는 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램을 제공하는데 그 목적이 있다.
상기와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템은, 복수개의 누마 노드를 포함하고, 각 누마 노드는, 하나 이상의 로컬 메모리와, 로컬 메모리에 액세스하는 하나 이상의 프로세서와, 하나의 로컬 메모리에 액세스하기 위한 전용 연결 통로인 하나 이상의 메모리 채널을 각각 포함하며, 동일 누마 노드에 포함된 각 메모리 채널의 대역폭 크기가 서로 동일하되 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경을 가지는 불균일 메모리 접근 시스템으로서, 각 메모리 채널 간의 대역폭 크기의 비율에 비례한 만큼의 메모리 용량을 각 로컬 메모리에 할당하는 메모리 관리 모듈을 포함한다.
상기 메모리 관리 모듈은 동일 대역폭 크기를 가지는 하나 이상의 메모리 채널을 하나의 클러스터로 분류하고, 분류한 클러스터 중 어느 한 클러스터를 선택하며, 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 선택하여 선택 로컬 메모리에 메모리 할당을 수행할 수 있다.
상기 메모리 관리 모듈은, (1) 전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터의 대역폭 크기(βi)가 갖는 비율(βiA)에 비례한 횟수만큼 각 클러스터를 선택하는 제1과정, (2) 1회 선택 때마다 선택 클러스터에 연결된 로컬 메모리 중 하나의 로컬 메모리를 라운드 로빈(round robin) 방식으로 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당하는 제2과정을 수행할 수 있다. (단, i는 자연수로써 클러스터 번호, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합, βA는 모든 클러스터의 대역폭 크기의 합)
상기 비율(βiA)에 비례한 횟수(Ni)는 하기 수식을 이용하여 도출될 수 있다.
(수식)
Figure 112017011303505-pat00001
(단, Ni는 i 번 클러스터를 선택하는 횟수, A는 Ni를 자연수로 도출하기 위한 계수, PN은 메모리 할당이 요청된 페이지의 개수)
상기 메모리 관리 모듈은 βiA의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 반복 교차하면서 각 클러스터를 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 방식으로 상기 제1과정을 수행할 수 있다.
상기 메모리 관리 모듈은 랜덤(random)한 순서로 각 클러스터를 선택하는 방식으로 상기 제1과정을 수행할 수 있다.
상기 메모리 관리 모듈은 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
상기 메모리 관리 모듈은 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 비례 값(Pi)의 합(PA)으로 나머지 연산(r%PA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
상기 메모리 관리 모듈은 메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 하여 각 클러스터를 교차 반복 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 방식으로 상기 제1과정 수행할 수 있다.
상기 메모리 관리 모듈은 각 로컬 메모리에 할당된 메모리 용량 간의 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션을 수행할 수 있다.
상기 메모리 관리 모듈은 제1 로컬 메모리에 할당된 n개 페이지를 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 할 수 있다.
상기 메모리 관리 모듈은 운영 체제(operating system) 또는 런타임 시스템(runtime system)에 포함된 메모리 관리 정책일 수 있다.
한편, 불균일 메모리 접근 시스템의 메모리 관리 방법은, 복수개의 누마 노드를 포함하고, 각 누마 노드는, 하나 이상의 로컬 메모리와, 로컬 메모리에 액세스하는 하나 이상의 프로세서와, 하나의 로컬 메모리에 액세스하기 위한 전용 연결 통로인 하나 이상의 메모리 채널을 각각 포함하며, 동일 누마 노드에 포함된 각 메모리 채널의 대역폭 크기가 서로 동일하되 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경을 가지는 불균일 메모리 접근 시스템의 메모리 관리 방법으로서, 각 메모리 채널 간의 대역폭 크기의 비율에 비례한 메모리 용량을 각 로컬 메모리에 할당하는 메모리 할당 단계를 포함한다.
상기 메모리 할당 단계는, (1) 동일 대역폭 크기를 가지는 하나 이상의 메모리 채널을 하나의 클러스터로 분류하는 클러스터화 단계, (2) 분류된 클러스터 중 어느 한 클러스터를 선택하는 클러스터 선택 단계, (3) 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 라운드 로빈(round robin) 방식으로 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당하는 페이지 단위 할당 단계, (4) 요청된 할당 메모리 용량이 모두 할당될 때까지 상기 클러스터 선택 단계 및 페이지 단위 할당 단계를 반복 수행하는 반복 단계를 더 포함할 수 있다.
상기 반복 단계는 전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터의 대역폭 크기(βi)가 갖는 비율(βiA)에 비례한 횟수만큼 각 클러스터를 선택하도록 상기 클러스터 선택 단계를 반복 수행할 수 있다. (단, i는 자연수로써 클러스터 번호, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합, βA는 모든 클러스터의 대역폭 크기의 합)
상기 비율(βiA)에 비례한 횟수(Ni)는 하기 수식을 이용하여 도출될 수 있다.
(수식)
Figure 112017011303505-pat00002
(단, Ni는 i 번 클러스터를 선택하는 횟수, A는 Ni를 자연수로 도출하기 위한 계수, PN은 메모리 할당이 요청된 페이지의 개수)
상기 클러스터 선택 단계는 βiA의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 반복 교차하면서 각 클러스터를 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택할 수 있다.
상기 클러스터 선택 단계는 랜덤(random)한 순서로 어느 한 클러스터를 선택할 수 있다.
상기 클러스터 선택 단계는 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
상기 클러스터 선택 단계는 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 비례 값(Pi)의 합(PA)으로 나머지 연산(r%PA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
상기 클러스터 선택 단계는 메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택할 수 있다.
각 로컬 메모리에 할당된 메모리 용량 간의 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션(migration)을 수행하는 마이그레이션 단계를 더 포함할 수 있다.
상기 마이그레이션 단계는, 제1 로컬 메모리에 할당된 n개 페이지를 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 기록된 불균일 메모리 접근 시스템의 메모리 관리 프로그램은 상술한 불균일 메모리 접근 시스템의 메모리 관리 방법에 따라 메모리를 관리하도록 매체에 기록된 것이다.
상기와 같이 구성되는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램은 비대칭 메모리 환경에 따른 각 메모리 채널의 대역폭 크기를 고려하여 메모리를 관리함으로써, 메모리 관리 효율을 향상, 즉 프로그램 및/또는 데이터를 각 로컬 메모리에 쓰는 동작과 각 로컬 메모리로부터 프로그램 및/또는 데이터를 읽는 속도를 향상시킬 수 있는 이점이 있다.
도 1은 본 발명의 일 실시예에 따른 불균일 메모리 (Non-Uniform Memory Access ; NUMA) 시스템에 포함된 어느 한 누마 노드(100)를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 불균일 메모리 (Non-Uniform Memory Access ; NUMA) 시스템에 포함된 누마 노드 3개를 보다 상세하게 나타낸다.
도 3은 각 로컬 메모리(10)가 가지는 대역폭 크기 및 클러스터에 대한 일 예를 나타낸다.
도 4는 메모리 관리 모듈이 메모리 할당 작업을 수행하는 흐름도를 나타낸다.
도 5는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법의 메모리 할당 단계를 나타낸다.
본 발명의 상기 목적과 수단 및 그에 따른 효과는 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
또한, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 경우에 따라 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외의 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 불균일 메모리 (Non-Uniform Memory Access ; NUMA) 시스템에 포함된 어느 한 누마 노드(100)를 나타낸 도면이며, 도 2는 본 발명의 일 실시예에 따른 불균일 메모리 (Non-Uniform Memory Access ; NUMA) 시스템에 포함된 누마 노드 3개를 보다 상세하게 나타낸 도면이다.
본 발명의 일 실시예에 따른 불균일 메모리 시스템은 PC(personal computer), 서버 (server) 또는 휴대용 전자 장치에 포함된 시스템일 수 있다. 이때, 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 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), 모바일 인터넷 장치(mobile internet device(MID), 웨어러블 컴퓨터, 또는 e-북(e-book)일 수 있다.
본 발명의 일 실시예에 따른 불균일 메모리 시스템은 복수개의 누마 노드(NUMA node)(100)를 포함한다. 예를 들어, 본 발명의 일 실시예에 따른 불균일 메모리 시스템은, 도 2에 도시된 바와 같이, A 누마 노드(100a), B 누마 노드(100b), C 누마 노드(100c) 등을 포함할 수 있다.
각 누마 노드(100)는, 하나 이상의 로컬 메모리(10)와, 하나 이상의 로컬 메모리에 액세스(access)하는 프로세서(processer)(20)와, 로컬 메모리(10)와 프로세서(20) 사이에 연결되어 각 로컬 메모리(10)를 제어하는 메모리 컨트롤러(memory controller)(30)와, 하나의 로컬 메모리에 액세스(access)하기 위한 전용 연결 통로인 하나 이상의 메모리 채널(40)을 각각 포함한다. 이때, 메모리 채널(40)은 메모리 컨트롤러(30)와 하나의 로컬 메모리 사이의 전용 연결 통로로 사용될 수 있다.
각 누마 노드(100)에 포함된 로컬 메모리(10)의 개수, 프로세서(20)의 개수 및 메모리 채널(40)의 개수는 서로 동일하거나 다를 수 있다. 이때 로컬 메모리(10)는 시스템의 주기억장치일 수 있다. 각 누마 노드(100)의 프로세서(20)는 자신이 속한 누마 노드의 로컬 메모리(10)에 액세스하는 것이 다른 누마 노드의 로컬 메모리에 액세스하는 것 보다 훨씬 빠르다. 이때, 어느 한 누마 노드 입장에서 볼 때 다른 누마 노드의 로컬 메모리를 “원격 메모리” 또는 “외부 메모리”라고도 한다.
각 프로세서(20)는 하나의 중앙처리장치(cpu)이거나 하나의 중앙처리장치에 포함된 각 코어(core)일 수 있다.
메모리 컨트롤러(30)는 프로그램 및/또는 데이터를 각 로컬 메모리(10)에 쓰는 동작과 각 로컬 메모리(10)로부터 프로그램 및/또는 데이터를 읽는 동작을 제어할 수 있다.
이하, 각 누마 노드(100)에 포함된 로컬 메모리(10)의 개수, 프로세서(20)의 개수 및 메모리 채널(40)의 개수가 서로 동일한 것으로 가정하여 설명하겠으나, 본 발명이 이에 한정되는 것은 아니다.
이하, 도 2를 참조하여, A 누마 노드(100a)에 포함된 각 로컬 메모리(11a, 12a)를 “A 로컬 메모리 0” 및 “A 로컬 메모리 1”이라 하고, B 누마 노드(100b)에 포함된 각 로컬 메모리(11b, 12b)를 “B 로컬 메모리 0” 및 “B 로컬 메모리 1”이라 하며, C 누마 노드(100c)에 포함된 각 로컬 메모리(11c, 12c)를 “C 로컬 메모리 0” 및 ““C 로컬 메모리 1”이라 한다. 또한, A 누마 노드(100a)에 포함된 각 프로세서(21a, 22a)를 “A 프로세서 0” 및 “A 프로세서 1”이라 하고, B 누마 노드(100b)에 포함된 각 프로세서 (21b, 22b)를 “B 프로세서 0” 및 “B 프로세서 1”이라 하며, C 누마 노드 (100c)에 포함된 각 프로세서(21c, 22c)를 “C 프로세서 0” 및 “C 프로세서 1”이라 한다. 또한, A 누마 노드(100a)에 포함된 각 메모리 채널(41a, 42a)을 “A 메모리 채널 0” 및 “A 메모리 채널 1”이라 하고, B 누마 노드(100b)에 포함된 각 메모리 채널(41b, 42b)를 “B 메모리 채널 0” 및 “B 메모리 채널 1”이라 하며, C 누마 노드(100c)에 포함된 각 메모리 채널(41c, 42c)을 “C 메모리 채널 0” 및 “C 메모리 채널 1”이라 한다.
또한, 본 발명의 일 실시예에 따른 불균일 메모리 시스템은 동일 누마 노드(100)에 포함된 각 메모리 채널(40)은 서로 동일한 대역폭(bandwidth) 크기를 가지는 것을 특징으로 한다. 예를 들어, A 메모리 채널 0 및 1(41a, 42a)은 서로 동일한 대역폭 크기를 가지고, B 메모리 채널 0 및 1(41b, 42b)은 서로 동일한 대역폭 크기를 가지며, C 메모리 채널 0 및 1 (41c, 42c)은 서로 동일한 대역폭 크기를 가진다.
즉, 동일 누마 노드에 포함된 각 로컬 메모리(10)에는 동일한 하드웨어 성능을 가지는 메모리가 구비될 수 있다. 예를 들어, A 로컬 메모리 0 및 1(11a, 12a)에는 동일한 하드웨어 성능의 휘발성 메모리(DRAM 등) 또는 비휘발성 메모리(Non-Volatile Memory ; NVM)가 구비될 수 있고, B 로컬 메모리 0 및 1(11b, 12b)에는 동일한 하드웨어 성능의 휘발성 메모리(DRAM 등) 또는 비휘발성 메모리(Non-Volatile Memory ; NVM)가 구비될 수 있으며, C 로컬 메모리 0 및 1(11c, 12c)에는 동일한 하드웨어 성능의 휘발성 메모리(DRAM 등) 또는 비휘발성 메모리(Non-Volatile Memory ; NVM)가 구비될 수 있다.
또한, 본 발명의 일 실시예에 따른 불균일 메모리 시스템은 비대칭 메모리(Asymmetric memory) 환경을 가진다. 이때, 비대칭 메모리 환경은 복수개의 누마 노드(100) 중 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와, 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 것을 의미한다.
예를 들어, 각 A 메모리 채널(41a, 42a)이 가지는 대역폭 크기와, 각 B 메모리 채널(41b, 42b)이 가지는 대역폭 크기는 서로 다를 수 있다. 이때, 각 C 메모리 채널(41c, 42c)이 가지는 대역폭 크기는 각 A 메모리 채널(41a, 42a)이 가지는 대역폭 크기와 동일하거나, 각 B 메모리 채널(41b, 42b)이 가지는 대역폭 크기와 동일할 수 있다. 또한, 각 C 메모리 채널(41c, 42c)이 가지는 대역폭 크기는 각 A 메모리 채널(41a, 42a)가 가지는 대역폭 크기와, 각 B 메모리 채널(41b, 42b)이 가지는 대역폭 크기와 다를 수 있다.
본 발명의 일 실시예에 따른 불균일 메모리 시스템은 각 누마 노드(100)의 로컬 메모리(10)를 비대칭 메모리 환경에 최적화 되도록 관리하는 메모리 관리 모듈(memory management module)(미도시)을 포함한다. 예를 들어, 메모리 관리 모듈은 하드웨어의 구성이거나, 소프트웨어로서 운영 체제(operating system) 또는 런타임 시스템(runtime system)에 포함된 메모리 관리 정책일 수 있다.
구체적으로, 메모리 관리 모듈이 수행하는 메모리 관리 동작으로는, 메모리 할당 요청이 있는 경우에 각 로컬 메모리(40)에 필요한 만큼의 메모리 용량을 할당하는 메모리 할당 동작과, 어느 로컬 메모리에 할당된 메모리 용량을 다른 로컬 메모리로 이동시키는 마이그레이션(migration) 동작이 있다. 이때, 메모리 관리 모듈은 페이징(paging) 기법에 따라 페이지(page) 단위로 메모리 할당 동작과 마이그레이션 동작을 수행할 수 있다.
먼저, 메모리 관리 모듈이 수행하는 메모리 할당 동작에 대하여 설명하도록 한다.
비대칭 메모리 환경을 고려하여, 메모리 관리 모듈은 각 메모리 채널(40) 간의 대역폭 크기의 비율에 비례한 만큼의 메모리 용량, 즉 전체 메모리 채널이 가지는 대역폭 크기의 합 대비 해당 메모리 채널이 가지는 대역폭 크기의 비율에 비례한 만큼을 각 로컬 메모리(10)에 할당한다. 이는 대역폭 크기가 큰 로컬 메모리에 그 대역폭 크기 비율에 비례한 만큼의 더 많은 메모리 용량을 할당함으로써, 메모리 할당 후 해당 메모리 할당을 요청한 어플리케이션의 실행 시간을 단축하기 위함이다.
도 3은 각 로컬 메모리(10)가 가지는 대역폭 크기 및 클러스터에 대한 일 예를 나타낸다.
예를 들어, 도 3를 참조하여, A 메모리 채널 0 및 1(41a, 42a)과, B 메모리 채널 0 및 1(41b, 42b)의 대역폭 크기가 1000(MB/s)이고, C 메모리 채널 0 및 1 (41c, 42c)의 대역폭 크기가 500(MB/s)인 경우, A 메모리 채널 0 및 1(41a, 42a) 중 하나와, B 메모리 채널 0 및 1(41b, 42b) 중 하나와, C 메모리 채널 0 및 1 (41c, 42c) 중 하나 간의 그 대역폭 크기 비율은 2 : 2 : 1이다. 이때, 일정 용량의 메모리 할당 요청이 있는 경우, 메모리 관리 모듈은 [A 메모리 채널 0(41a) : A 메모리 채널 1(42a)] : [B 메모리 채널 0(41b): B 메모리 채널 1(42b)] : [C 메모리 채널 0(41c): C 메모리 채널 1(42c)]의 할당 메모리 용량의 비율이 [2 : 2] : [2 : 2] : [1 : 1]가 되도록 각 메모리 채널(40)에 메모리 할당을 수행함으로써, 각 메모리 채널(40) 간의 대역폭 크기의 비율에 비례한 만큼의 메모리 용량을 각 로컬 메모리(10)에 할당한다. 여기서, 대괄호는 A 메노리 노드, B 메모리 채널 및 C 메모리 채널을 구분하기 위한 표시 부호이다.
특히, 메모리 관리 모듈은 동일 대역폭 크기를 갖는 하나 이상의 메모리 채널을 하나의 클러스터(cluster node)(60) 단위로 분류한다.
예를 들어, 도 3를 참조하면, 메모리 관리 모듈은 1000(MB/s)의 대역폭 크기를 가지는 A 메모리 채널 0 및 1(41a, 42a)와 B 메모리 채널 0 및 1(41b, 42b)을 하나의 클러스터(61)(이하, “클러스터 0”이라 함)로 분류하고, 500(MB/s)의 대역폭 크기를 가지는 C 메모리 채널 0 및 1(41c, 42c)을 다른 하나의 클러스터(62)(이하, “클러스터 1”라 함)로 분류한다.
이후, 메모리 관리 모듈은 분류한 클러스터(60) 중 어느 한 클러스터를 선택하며, 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 선택하여 선택 로컬 메모리에 일정 용량만큼의 메모리 할당을 수행한다. 이때, 메모리 관리 모듈은 요청된 할당 메모리 용량을 모두 할당할 때까지 클러스터 및 로컬 메모리 선택하고 선택 로컬 메모리에 메모리를 할당하는 과정을 반복 수행한다.
도 4는 메모리 관리 모듈이 메모리 할당 작업을 수행하는 흐름도를 나타낸다.
즉, 도 4를 참조하면, 메모리 관리 모듈은 각 클러스터(60)를 특정 횟수만큼 선택하는 제1과정과, 1회 선택 때마다 어느 한 로컬 메모리(10)를 선택하여 페이지 단위의 메모리 용량을 할당하는 제2과정을 각각 수행함으로써, 메모리 할당을 수행한다.
이때, 제1과정은 전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터(60)의 대역폭 크기(βi)가 갖는 비율(βiA)에 비례한 횟수인 Ni회 만큼 각 클러스터(60)를 선택하는 과정이다. 이때, i는 자연수로써 클러스터 번호를 나타내고, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합을 나타내며, βA는 모든 클러스터의 대역폭 크기의 합을 나타낸다.
예를 들어, 각 클러스터(60)의 선택 횟수인 Ni는 아래의 수식으로 표현할 수 있다.
(수식)
Figure 112017011303505-pat00003
이때, Ni는 i 번 클러스터를 선택하는 횟수를 나타내고, A는 Ni를 자연수로 도출하기 위한 계수를 나타내며, PN은 메모리 할당이 요청된 메모리 용량의 페이지 개수로서, 할당 요청 메모리 용량/메모리 페이지 크기로 구해진다.
예를 들어, 도 3를 참조하면, 각 로컬 메모리(10)의 페이지 크기가 4KB이고, 클러스터 0에 포함된 A 메모리 채널 0 및 1(41a, 12a)과, B 메모리 채널 0 및 1(41b, 12b)이 각각 1000(MB/s)의 대역폭 크기를 가지고, 클러스터 1에 포함된 C 메모리 채널 0 및 1(41c, 12c)가 500(MB/s)의 대역폭 크기를 가지며, 10 MB 크기의 메모리 할당이 요청되는 경우에 대해 설명하도록 한다.
이 경우, 메모리 할당이 요청된 페이지의 개수 PN는 10(MB) / 4(KB)에 따라 2500(개)이고, 클러스터 0의 대역폭 크기의 합 β0은 1000(MB/s) + 1000(MB/s) + 1000(MB/s) + 1000(MB/s)에 따라 4000(MB/s)이며, 클러스터 1의 대역폭 크기의 합 β1은 500(MB/s) + 500(MB/s)에 따라 1000(MB/s)이고, 모든 클러스터의 대역폭 크기의 합 βA는 4000(MB/s) + 1000(MB/s)에 따라 5000(MB/s)이다. 이때, 메모리 관리 모듈은 클러스터 0을 N1 = 4000(MB/s) / 5000(MB/s) × 2500(개)에 따라 2000회 선택하고, 클러스터 1를 N2 = 1000(MB/s) / 5000(MB/s) × 2500(개)에 따라 500회 선택한다.
한편, 제2과정은 어느 한 클러스터 1회 선택 때마다 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당한다. 이때, 메모리 관리 모듈은 선택 클러스터에 연결된 모든 로컬 메모리를 선택 회수에 따라 순차적으로 돌아가며 선택하는 라운드 로빈(round robin) 방식을 사용한다.
예를 들어, 클러스터 0(61)을 2000회 선택할 경우, 메모리 관리 모듈은 클러스터 0(61)에 대한 각 선택 회수마다 클러스터 0(61)에 연결된 A 메모리 0(11a), A 메모리 1(12a), B 메모리 0(11b) 및 B 메모리 1(12b)를 순차적으로 선택하여 선택 시마다 4KB의 메모리 용량을 할당한다. 즉, 메모리 관리 모듈은 클러스터 0(61)을, ① 1회째 선택 시에 A 메모리 채널 0(41a)을 선택하여 A 로컬 메모리 0(21a)에 4KB의 메모리 용량을 할당하고, ② 2회째 선택 시(61)에 A 메모리 채널 1(42a)을 선택하여 A 로컬 메모리 1(22a)에 4KB의 메모리 용량을 할당하며, ③ 3회째 선택 시에 B 메모리 채널 0(41b)을 선택하여 B 로컬 메모리 0(21b)에 4KB의 메모리 용량을 할당하고, ④ 4회째 선택 시에 B 메모리 채널 1(42b)을 선택하여 B 로컬 메모리 1(21b)에 4KB의 메모리 용량을 할당하며, ⑤ 5회째 선택 시에 다시 A 메모리 채널 0(41a)을 선택하여 A 로컬 메모리 0(21a)에 4KB의 메모리 용량을 추가 할당하며, 이와 같은 방식으로 클러스터 0(61)을 2000회째까지 선택하여 메모리를 할당한다. 메모리 할당 결과, 클러스터 0(61)에 연결된 A 로컬 메모리 0(21a), A 로컬 메모리 1(22a), B 로컬 메모리 0(21b) 및 B 로컬 메모리 1(22b)에는 각각 500(개)의 페이지 크기인 2(MB)의 메모리 용량이 할당된다. 이때, A 메모리 채널 0(41a), A 메모리 채널 1(42a), B 메모리 채널 0(41b) 및 B 메모리 채널 1(42b)을 순차적으로 선택하는 순서는 상술한 바와 다를 수 있다.
한편, 클러스터 1(62)를 500회 선택할 경우, 메모리 관리 모듈은 클러스터 1(62)에 대한 각 선택 회수마다 클러스터 1(62)에 연결된 C 메모리 0(11c) 및 C 메모리 1(12c)를 순차적으로 선택하여 선택 시마다 4KB의 메모리 용량을 할당한다. 즉, 메모리 관리 모듈은 클러스터 1(62)를, ① 1회째 선택 시에 C 메모리 채널 0(41c)을 선택하여 C 로컬 메모리 0(21c)에 4KB의 메모리 용량을 할당하고, ② 2회째 선택 시에 C 메모리 채널 1(42c)을 선택하여 C 로컬 메모리 1(22c)에 4KB의 메모리 용량을 할당하며, ③ 3회째 선택 시에 다시 C 메모리 채널 0(41c)을 선택하여 C 로컬 메모리 0(21c)에 4KB의 메모리 용량을 추가 할당하고, 이와 같은 방식으로 클러스터 1(62)를 500회째까지 선택하여 메모리를 할당한다. 메모리 할당 결과, 클러스터 1(62)에 연결된 C 로컬 메모리 0(21c) 및 C 로컬 메모리 1(22c)에는 각각 250(개)의 페이지 크기인 1(MB)의 메모리 용량이 할당된다. 이때, C 메모리 채널 0(41c) 및 C 메모리 채널 1(42c)을 순차적으로 선택하는 순서는 상술한 바와 다를 수 있다.
한편, 메모리 관리 모듈은 각 클러스터(60)를 선택하는 순서 방식에 따라 3가지 방식 중 어느 하나의 방식으로 제1과정을 수행할 수 있다.
먼저, 제1방식은 전체 클러스터 대역폭(βA)에 대한 각 클러스터 대역폭(βi)의 비율(βiA)의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 각 클러스터를 선택하되, 선택 클러스터를 그 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 그 βiA에 비례한 횟수만큼 연속으로 선택하는 방식이다.
예를 들어, 도 3을 참조하면, 클러스터 0(61)의 β0A의 값이 4/5이고, 클러스터 1의 β1A의 값이 1/5인 경우, 메모리 관리 모듈은 4/5 : 1/5(β0A : β1A)의 비율에 비례한 횟수(가령, 클러스터 0은 4회, 8회, 12회 등, 클러스터 1은 1회, 2회, 3회 등)만큼 각 클러스터(60)를 연속으로 선택하되, ① 먼저 βiA의 값이 큰 클러스터 0(61)를 4/5에 비례한 횟수(가령, 4회, 8회, 12회 등)만큼 연속 선택하고, ② 그 다음으로 βiA의 값이 작은 클러스터 1(62)를 1/5에 비례한 횟수(가령, 1회 등)만큼 연속 선택하며, 요청된 메모리 용량을 모두 할당할 때까지 ①과 ②를 계속해서 반복한다. 즉, 메모리 관리 모듈은 먼저 클러스터 0(61)을 4회 연속 선택하면 다음으로 클러스터 1(62)을 1회 연속 선택하고, 먼저 클러스터 0(61)을 8회 연속 선택하면 다음으로 클러스터 1(62)을 2회 연속 선택하며, 먼저 클러스터 0(61)을 12회 연속 선택하면 다음으로 클러스터 1(62)을 3회 연속 선택한다.
특히, 각 클러스터(60)의 연속 선택 횟수는 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 값인 것이 바람직할 수 있다. 즉, 4/5 : 1/5를 자연수의 비례 값으로 8 : 2로 만들고, 이들 비례 값의 최대공약수인 2로 나누면 4 : 1이 되며, 이 최종 비례 값이 각 클러스터(60)의 연속 선택 횟수에 해당할 수 있다. 이에 따라, 메모리 관리 모듈은 먼저 클러스터 0(61)을 4회 연속 선택하면, 다음으로 클러스터 1(62)을 1회 연속 선택한다. 이와 같은 연속 횟수 결정 과정은 제3방식에도 동일하게 적용할 수 있다.
하기의 표 1은 메모리 할당 시에 제1방식에 따라 최종 비례 값을 그 연속 선택 횟수로 선택되는 클러스터 및 로컬 메모리의 예를 나타내는 표이다.
선택 횟수 선택 클러스터 선택 메모리 선택 횟수 선택 클러스터 선택 메모리
1 클러스터 0(61) A 메모리 0(11a) 2 클러스터 0(61) A 메모리 1(12a)
3 클러스터 0(61) B 메모리 0(11b) 4 클러스터 0(61) B 메모리 1(12b)
5 클러스터 1(62) C 메모리 0(11c) 6 클러스터 0(61) A 메모리 0(11a)
7 클러스터 0(61) A 메모리 1(12a) 8 클러스터 0(61) B 메모리 0(11b)
9 클러스터 0(61) B 메모리 1(12b) 10 클러스터 1(62) C 메모리 1(12c)
2499 클러스터 0(61) B 메모리 1(12b) 2500 클러스터 1(62) C 메모리 1(12c)
[조건]
1. 페이지 크기 : 4KB
2. 할당 요청 메모리 용량 : 10MB
3. 클러스터 0(61)의 대역폭 크기 : 4000(MB/s)
4. 클러스터 0(61)의 대역폭 크기 : 1000(MB/s)
또한, 제2방식은 랜덤(random)한 순서로 각 클러스터(60)를 선택하는 방식이다. 즉, 메모리 관리 모듈은 전체 클러스터 대역폭(βA)에 대한 각 클러스터 대역폭(βi)의 비율(βiA)을 반영한 랜덤 방식으로 각 클러스터(60)를 선택할 수 있다.
예를 들어, 도 3을 참조하면, 클러스터 0(61)의 대역폭 크기(β0)가 4000(MB/s)이고, 클러스터 1의 대역폭 크기(β1)이 1000(MB/s)경우, 메모리 관리 모듈은 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값(이하, “제1 연산 값”이라 함)의 범위에 따라 각 클러스터(60)를 선택한다. 이때, 각 클러스터(60)를 선택하기 위한 제1 연산 값의 범위 크기는 각 클러스터(60)가 가지는 클러스터 대역폭(βi)의 크기에 비례한다. 가령, 메모리 관리 모듈은 클러스터 0(61)에 대해 4000(β0)만큼을 제1 연산 값의 범위 크기로 배분하여, 그 제1 연산 값이 0 내지 3999(β0-1)이면 클러스터 0(61)을 선택한다. 또한, 메모리 관리 모듈은 클러스터 1(62)에 대해 500(β0)만큼을 제1 연산 값의 범위 크기로 배분하여, 그 제1 연산 값이 4000(β0) 내지 4999(βA-1)이면 클러스터 1(62)를 선택한다.
또한, 메모리 관리 모듈은 각 클러스터(60)의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 값을 이용하여 랜덤 연산을 수행할 수 있다. 즉, 클러스터 0(61)의 β0A의 값이 따라 4/5이고, 클러스터 1의 β1A의 값이 1/5인 경우, 클러스터(60)의 βiA 간의 비례 값은 4/5 : 1/5이며, 이 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 최종 비례 값 P1 : P2는 4 : 1 이다. 이 경우, 메모리 관리 모듈은 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 최종 비례 값의 합 5(PA=P1+P2)로 나머지 연산(r%PA)하여, 그 연산된 값(이하, “제2 연산 값”이라 함)의 범위에 따라 각 클러스터(60)를 선택한다. 이때, 각 클러스터(60)를 선택하기 위한 제2 연산 값의 범위 크기는 각 클러스터(60)가 가지는 최종 비례 값(Pi)에 비례한다. 가령, 메모리 관리 모듈은 클러스터 0(61)에 대해 4(P1)만큼을 제2 연산 값의 범위 크기로 배분하여, 그 제2 연산 값이 0 내지 3(P1-1)이면 클러스터 0(61)을 선택한다. 또한, 메모리 관리 모듈은 클러스터 1(62)에 대해 1(P2)만큼을 제2 연산 값의 범위 크기로 배분하여, 그 제2 연산 값이 1(P1 내지 Pa-1)이면 클러스터 1(62)를 선택한다.
이상과 같이 설명한 제2방식은 랜덤(random)한 순서로 각 클러스터(60)를 무작위로 선택하지만, 전체 클러스터 대역폭(βA)에 대한 각 클러스터 대역폭(βi)의 비율(βiA)을 반영한 랜덤 방식이므로, 선택 횟수가 많아질수록 βiA의 값에 비례하게 각 클러스터를 선택할 수 있다.
또한, 제3방식은 메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 하여 각 클러스터를 교차 반복 선택하되, 선택 클러스터를 그 βiA 횟수만큼 연속으로 선택한 후에 다음 클러스터를 그 βiA 횟수만큼 연속으로 선택하는 방식이다.
예를 들어, 표 2를 참조하면, 메모리 할당을 요청한 태스크 1이 현재 C 누마 노드(100c)에 포함된 C 프로세서 0(21c)에서 처리되고 있고, 클러스터 0(61)의 β0A 값이 4/5이고, 클러스터 1(62)의 β1A 값이 1/5인 경우, 메모리 관리 모듈은 4/5 : 1/5(β0A : β1A)의 비율에 비례한 횟수(가령, 클러스터 0은 4회, 8회, 12회 등, 클러스터 1은 1회, 2회, 3회 등)만큼 각 클러스터(60)를 연속으로 선택하되, ① 먼저 C 프로세서 0(21c)와 연결된 클러스터 1(62)를 1/5에 비례한 횟수(가령, 1회, 2회, 3회 등)만큼 선택하고, ② 그 다음으로 나머지 클러스터 0(61)을 4/5에 비례한 횟수(가령, 4회, 8회, 12회 등)만큼 연속 선택하며, 요청된 메모리 용량을 모두 할당할 때까지 ①과 ②를 계속해서 반복한다. 즉, 메모리 관리 모듈은 먼저 클러스터 1(62)을 1회 연속 선택하면 다음으로 클러스터 0(61)을 4회 연속 선택하고, 먼저 클러스터 1(62)을 2회 연속 선택하면 다음으로 클러스터 0(61)을 8회 연속 선택하며, 먼저 클러스터 1(62)을 3회 연속 선택하면 다음으로 클러스터 0(61)을 12회 연속 선택한다.
특히, 각 클러스터(60)의 연속 선택 횟수는 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 값인 것이 바람직할 수 있다. 즉, 4 : 1의 최종 비례 값이 각 클러스터(60)의 연속 선택 횟수에 해당하므로, 메모리 관리 모듈은 먼저 클러스터 1(62)을 1회 연속 선택하면, 다음으로 클러스터 0(61)을 4회 연속 선택한다.
하기의 표 2는 메모리 할당 시에 제3방식에 따라 최종 비례 값을 그 연속 선택 횟수로 선택되는 클러스터 및 로컬 메모리의 예를 나타내는 표이다.
선택 횟수 선택 클러스터 선택 메모리 선택 횟수 선택 클러스터 선택 메모리
1 클러스터 1(62) C 메모리 0(11c) 2 클러스터 0(61) A 메모리 0(11a)
3 클러스터 0(61) A 메모리 1(12a) 4 클러스터 0(61) B 메모리 0(11b)
5 클러스터 0(61) B 메모리 1(12b) 6 클러스터 1(62) C 메모리 1(12c)
7 클러스터 0(61) A 메모리 0(11a) 8 클러스터 0(61) A 메모리 1(12a)
9 클러스터 0(61) B 메모리 0(11b) 10 클러스터 0(61) B 메모리 1(12b)
2499 클러스터 0(61) B 메모리 0(11b) 2500 클러스터 0(61) B 메모리 1(12b)
[조건]
1. 페이지 크기 : 4KB
2. 할당 요청 메모리 용량 : 10MB
3. 클러스터 0(61)의 대역폭 크기 : 4000(MB/s)
4. 클러스터 0(61)의 대역폭 크기 : 1000(MB/s)
5. C 누마 노드(100c)의 C 프로세서 0(21c)에서 메모리 할당을 요청한 태스크 1을 처리 중
다음으로, 메모리 관리 모듈이 수행하는 마이그레이션 동작에 대하여 설명하도록 한다.
비대칭 메모리 환경을 고려하여, 메모리 관리 모듈은 각 메모리 채널(40)에 할당된 메모리 용량 간의 크기 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션을 수행한다. 이는 각 로컬 메모리(10)에 할당된 메모리 용량이 각 메모리 채널(40)의 대역폭 크기 간의 비율에 비례하게 할당된 것이므로, 이러한 비율이 메모리 마이그레이션을 수행되더라도 계속 유지되게 함으로써, 해당 메모리 할당을 요청한 어플리케이션의 실행 시간을 단축하기 위함이다.
구체적으로, 메모리 관리 모듈은 어느 한 로컬 메모리, 즉 제1 로컬 메모리에 할당된 n개 페이지를 다른 한 로컬 메모리, 즉 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 한다.
예를 들어, 페이지 크기가 4KB이고, A 로컬 메모리 0(21a), A 로컬 메모리 1(22a), B 로컬 메모리 0(21b) 및 B 로컬 메모리 1(22b)에 각각 500개 페이지 수인 2(MB)의 메모리 용량이 할당되어 있으며, C 로컬 메모리 0(21c) 및 C 로컬 메모리 1(22c)에 250개 페이지 수인 1(MB)의 메모리 용량이 할당되어 있고, C 프로세서 0(21c)이 A 로컬 메모리 0(22a)에 할당된 특정 페이지 10개를 자주 사용하는 경우가 발생할 수 있다. 이 경우, 메모리 관리 모듈은 A 로컬 메모리 0(22a)에 할당된 해당 페이지 10개를 C 로컬 메모리 0 또는 1(21c 또는 22c)로 마이그레이션 하며, C 로컬 메모리 0 또는 1(21c 또는 22c)에 할당된 메모리 중에 마이그레이션 된 페이지 수 10개만큼을 선택하여 A 로컬 메모리 0(21a)로 마이그레이션 한다. 이에 따라, A 로컬 메모리 0(21a) 내지 C 로컬 메모리 1(22c)에 할당된 메모리 용량 간의 비율은 계속 일정하게 유지될 수 있다.
이하, 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법에 대하여 설명하도록 한다.
본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법은 도 1 내지 도 4에 따라 상술한 불균일 메모리 접근 시스템의 메모리 관리 방법으로서, 각 메모리 채널 간의 대역폭 크기의 비율에 비례한 메모리 용량을 각 로컬 메모리에 할당하는 메모리 할당 단계를 포함한다. 이때, 불균일 메모리 접근 시스템에 대한 설명은 도 1 내지 도 4에 따라 상술한 설명과 동일하므로, 이에 대한 상세한 설명은 이하 생략하도록 한다.
도 5는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법의 메모리 할당 단계를 나타낸다.
상기 메모리 할당 단계는, 도 5에 도시된 바와 같이, 클러스터화 단계(100S), 클러스터 선택 단계(S200), 페이지 단위 할당 단계(S300) 및 반복 단계(S400)를 포함한다.
클러스터화 단계(100S)는 동일 대역폭 크기를 가지는 하나 이상의 메모리 채널을 하나의 클러스터로 분류하는 단계이다.
클러스터 선택 단계(S200)는 분류된 클러스터 중 어느 한 클러스터를 선택하는 단계이다.
페이지 단위 할당 단계(S300)는 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 라운드 로빈(round robin) 방식으로 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당하는 단계이다.
반복 단계(S400)는 요청된 할당 메모리 용량이 모두 할당될 때까지 상기 클러스터 선택 단계 및 페이지 단위 할당 단계를 반복 수행하는 단계이다.
반복 단계(S400)는 전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터의 대역폭 크기(βi)가 갖는 비율(βiA)에 비례한 횟수만큼 각 클러스터를 선택하도록 상기 클러스터 선택 단계를 반복 수행한다.
이때, i는 자연수로써 클러스터 번호를 나타내고, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합을 나타내며, βA는 모든 클러스터의 대역폭 크기의 합을 나타낸다.
βiA 비율에 비례한 횟수(Ni)는 하기 수식을 이용하여 도출될 수 있다.
(수식)
Figure 112017011303505-pat00004
이때, Ni는 i 번 클러스터를 선택하는 횟수를 나타내고, A는 Ni를 자연수로 도출하기 위한 계수를 나타내며, PN은 PN은 메모리 할당이 요청된 메모리 용량의 페이지 개수로서, 할당 요청 메모리 용량/메모리 페이지 크기로 구해진다.
클러스터 선택 단계(S200)는 상기 제1방식을 수행하는 것으로서, βiA의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 반복 교차하면서 각 클러스터를 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택할 수 있다.
제1방식에 대해서는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템에서 상술한 내용과 동일하므로, 이에 대한 상세한 설명은 생략하도록 한다.
클러스터 선택 단계(S200)는 상기 제2방식을 수행하는 것으로서, 랜덤(random)한 순서로 어느 한 클러스터를 선택할 수 있다. 이때, 클러스터 선택 단계(S200)는 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
또한, 클러스터 선택 단계(S200)는, 랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 비례 값(Pi)의 합(PA)으로 나머지 연산(r%PA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택할 수 있다.
제2방식에 대해서는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템에서 상술한 내용과 동일하므로, 이에 대한 상세한 설명은 이하 생략하도록 한다.
클러스터 선택 단계(S200)는 상기 제3방식을 수행하는 것으로서, 메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택할 수 있다.
제3방식에 대해서는 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템에서 상술한 내용과 동일하므로, 이에 대한 상세한 설명은 이하 생략하도록 한다.
또한, 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법은, 각 로컬 메모리에 할당된 메모리 용량 간의 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션(migration)을 수행하는 마이그레이션 단계를 더 포함할 수 있다.
마이그레이션 단계는 제1 로컬 메모리에 할당된 n개 페이지를 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 하는 단계를 더 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 프로그램은 상술한 본 발명의 일 실시예에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법에 따라 메모리 관리를 수행하기 위해 매체에 저장된 프로그램이다. 예를 들어, 불균일 메모리 접근 시스템의 메모리 관리 프로그램은 컴퓨터 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에 기록될 수 있다.
예를 들어, 기록 매체는 하드디스크 타입(hard disk type), 마그네틱 매체 타입(magnetic media type), CD-ROM(compact disc read only memory), 광기록 매체 타입(Optical Media type), 자기-광 매체 타입(magneto-optical media type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 플래시 메모리 타입(flash memory type), 롬(read only memory; ROM), 램(random access memory; RAM), 또는 이들의 조합으로 구성된 메모리로 이루어지는 버퍼, 주기억장치, 또는 보조기억장치일 수 있으나, 이에 한정되는 것은 아니다.
또한, 불균일 메모리 접근 시스템의 메모리 관리 프로그램은, 입력장치에 인터넷(Internet), 인트라넷(Intranet), LAN(Local Area Network), WLAN(Wide LAN), 또는 SAN(Storage Area Network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되지 않으며, 후술되는 특허청구의 범위 및 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
10 : 로컬 메모리 20 : 프로세서
30 : 메모리 컨트롤러 40 : 메모리 채널
100 : 누마 노드

Claims (23)

  1. 복수개의 누마 노드를 포함하고, 각 누마 노드는, 하나 이상의 로컬 메모리와, 로컬 메모리에 액세스하는 하나 이상의 프로세서와, 하나의 로컬 메모리에 액세스하기 위한 전용 연결 통로인 하나 이상의 메모리 채널을 각각 포함하며, 동일 누마 노드에 포함된 각 메모리 채널의 대역폭 크기가 서로 동일하되 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경을 가지는 불균일 메모리 접근 시스템으로서,
    각 메모리 채널 간의 대역폭 크기의 비율에 비례한 만큼의 메모리 용량을 각 로컬 메모리에 할당하는 메모리 관리 모듈을 포함하며,
    상기 메모리 관리 모듈은,
    동일 대역폭 크기를 가지는 하나 이상의 메모리 채널을 하나의 클러스터로 분류하고, 분류한 클러스터 중 어느 한 클러스터를 선택하며, 선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 선택하여 선택 로컬 메모리에 메모리 할당을 수행하고,
    전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터의 대역폭 크기(βi)가 갖는 비율(βi/βA)에 비례한 횟수만큼 각 클러스터를 선택하는 제1과정; 및
    1회 선택 때마다 선택 클러스터에 연결된 로컬 메모리 중 하나의 로컬 메모리를 라운드 로빈(round robin) 방식으로 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당하는 제2과정;을 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
    (단, i는 자연수로써 클러스터 번호, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합, βA는 모든 클러스터의 대역폭 크기의 합)
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 비율(βiA)에 비례한 횟수(Ni)는,
    하기 수식을 이용하여 도출되는 것을 특징으로 하는 불균일 메모리 접근 시스템.
    (수식)
    Figure 112017129927248-pat00005

    (단, Ni는 i 번 클러스터를 선택하는 횟수, A는 Ni를 자연수로 도출하기 위한 계수, PN은 메모리 할당이 요청된 페이지의 개수)
  5. 제1항에 있어서,
    상기 메모리 관리 모듈은,
    βiA의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 반복 교차하면서 각 클러스터를 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 방식으로 상기 제1과정을 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  6. 제1항에 있어서,
    상기 메모리 관리 모듈은,
    랜덤(random)한 순서로 각 클러스터를 선택하는 방식으로 상기 제1과정을 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  7. 제6항에 있어서,
    상기 메모리 관리 모듈은,
    랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  8. 제6항에 있어서,
    상기 메모리 관리 모듈은,
    랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 비례 값(Pi)의 합(PA)으로 나머지 연산(r%PA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  9. 제1항에 있어서,
    상기 메모리 관리 모듈은,
    메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 하여 각 클러스터를 교차 반복 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 방식으로 상기 제1과정을 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  10. 제1항에 있어서,
    상기 메모리 관리 모듈은,
    각 로컬 메모리에 할당된 메모리 용량 간의 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션을 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  11. 제10항에 있어서,
    상기 메모리 관리 모듈은,
    제1 로컬 메모리에 할당된 n개 페이지를 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 하는 것을 특징으로 하는 불균일 메모리 접근 시스템.
  12. 제1항, 제4항 내지 제11항 중 어느 한 항에 있어서,
    상기 메모리 관리 모듈은,
    운영 체제(operating system) 또는 런타임 시스템(runtime system)에 포함된 메모리 관리 정책인 것을 특징으로 하는 불균일 메모리 접근 시스템.
  13. 복수개의 누마 노드를 포함하고, 각 누마 노드는, 하나 이상의 로컬 메모리와, 로컬 메모리에 액세스하는 하나 이상의 프로세서와, 하나의 로컬 메모리에 액세스하기 위한 전용 연결 통로인 하나 이상의 메모리 채널을 각각 포함하며, 동일 누마 노드에 포함된 각 메모리 채널의 대역폭 크기가 서로 동일하되 어느 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기와 다른 한 누마 노드에 포함된 한 메모리 채널의 대역폭 크기가 서로 다른 비대칭 메모리 환경을 가지는 불균일 메모리 접근 시스템의 메모리 관리 방법으로서,
    각 메모리 채널 간의 대역폭 크기의 비율에 비례한 메모리 용량을 각 로컬 메모리에 할당하는 메모리 할당 단계를 포함하며,
    상기 메모리 할당 단계는,
    동일 대역폭 크기를 가지는 하나 이상의 메모리 채널을 하나의 클러스터로 분류하는 클러스터화 단계;
    분류된 클러스터 중 어느 한 클러스터를 선택하는 클러스터 선택 단계;
    선택 클러스터에 연결된 로컬 메모리 중 어느 한 로컬 메모리를 라운드 로빈(round robin) 방식으로 선택하여 선택 로컬 메모리에 페이지 단위의 메모리 용량을 할당하는 페이지 단위 할당 단계; 및
    요청된 할당 메모리 용량이 모두 할당될 때까지 상기 클러스터 선택 단계 및 페이지 단위 할당 단계를 반복 수행하는 반복 단계;를 포함하고,
    상기 반복 단계는,
    전체 클러스터의 대역폭 크기(βA)에 대한 각 클러스터의 대역폭 크기(βi)가 갖는 비율(βi/βA)에 비례한 횟수만큼 각 클러스터를 선택하도록 상기 클러스터 선택 단계를 반복 수행하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
    (단, i는 자연수로써 클러스터 번호, βi는 i 번 클러스터의 대역폭 크기로서, i 번 클러스터에 포함된 각 메모리 채널이 가지는 대역폭 크기의 합, βA는 모든 클러스터의 대역폭 크기의 합)
  14. 삭제
  15. 삭제
  16. 제13항에 있어서,
    상기 클러스터 선택 단계는,
    βiA의 값이 큰 클러스터에서부터 작은 클러스터까지의 순서로 반복 교차하면서 각 클러스터를 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  17. 제13항에 있어서,
    상기 클러스터 선택 단계는,
    랜덤(random)한 순서로 어느 한 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  18. 제17항에 있어서,
    상기 클러스터 선택 단계는,
    랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 전체 클러스터의 대역폭 크기(βA)로 나머지 연산(r%βA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  19. 제18항에 있어서,
    상기 클러스터 선택 단계는,
    랜덤 함수를 실행시킨 후, 추출된 랜덤 값(r)을 각 클러스터의 βiA 간의 비례 값을 자연수로 만들면서 동시에 최대공약수로 나눈 비례 값(Pi)의 합(PA)으로 나머지 연산(r%PA)하여, 그 연산된 값의 범위에 따라 각 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  20. 제13항에 있어서,
    상기 클러스터 선택 단계는,
    메모리 할당을 요청한 태스크(task)를 처리하는 프로세서가 포함된 누마 노드의 로컬 메모리와 연결된 클러스터를 우선순위로 선택하되, 선택 클러스터를 βiA에 비례한 횟수만큼 연속으로 선택한 후에 다음 클러스터를 선택하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  21. 제13항에 있어서,
    각 로컬 메모리에 할당된 메모리 용량 간의 비율을 일정하게 유지하면서 페이지 단위로 마이그레이션(migration)을 수행하는 마이그레이션 단계를 더 포함하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  22. 제21항에 있어서,
    상기 마이그레이션 단계는,
    제1 로컬 메모리에 할당된 n개 페이지를 제2 로컬 메모리로 마이그레이션 하는 경우, 제2 로컬 메모리에 할당된 n개 페이지를 제1 로컬 메모리로 마이그레이션 하는 단계를 더 포함하는 것을 특징으로 하는 불균일 메모리 접근 시스템의 메모리 관리 방법.
  23. 제13항, 제16항 내지 제22항 중 어느 한 항에 따른 불균일 메모리 접근 시스템의 메모리 관리 방법에 따라 메모리를 관리하도록 매체에 기록된 컴퓨터 판독 가능한 불균일 메모리 접근 시스템의 메모리 관리 프로그램.
KR1020170015068A 2017-02-02 2017-02-02 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램 KR101849116B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170015068A KR101849116B1 (ko) 2017-02-02 2017-02-02 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170015068A KR101849116B1 (ko) 2017-02-02 2017-02-02 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램

Publications (1)

Publication Number Publication Date
KR101849116B1 true KR101849116B1 (ko) 2018-05-31

Family

ID=62454177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170015068A KR101849116B1 (ko) 2017-02-02 2017-02-02 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램

Country Status (1)

Country Link
KR (1) KR101849116B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116707934A (zh) * 2023-06-20 2023-09-05 甘肃省地震局(中国地震局兰州地震研究所) 一种基于无线传感网络的数据加密传送方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김해천 외 1명. 'NUMA 환경에서 리눅스의 스케줄링, 메모리 할당 및 메모리 인터리빙 효과 분석'. 한국정보과학회 2015년 동계학술발표회 논문집, 2015.12, pp.66-68.
윤대석 외 2명. 'NUMA 환경에서 메모리 친화력을 고려한 부하 균등 모델'. 한국정보과학회 2008 종합학술대회 논문집 제35권 제1호(B), 2008.6, pp.346-350.

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116707934A (zh) * 2023-06-20 2023-09-05 甘肃省地震局(中国地震局兰州地震研究所) 一种基于无线传感网络的数据加密传送方法
CN116707934B (zh) * 2023-06-20 2023-10-24 甘肃省地震局(中国地震局兰州地震研究所) 一种基于无线传感网络的数据加密传送方法

Similar Documents

Publication Publication Date Title
US10152501B2 (en) Rollover strategies in a n-bit dictionary compressed column store
US7865520B2 (en) Program and method for file access control in a storage system
US10387038B1 (en) Storage space allocation for logical disk creation
US9189389B2 (en) Memory controller and memory system
JP2009238114A (ja) ストレージ管理方法、ストレージ管理プログラム、ストレージ管理装置およびストレージ管理システム
JP2001350665A (ja) ブロックアラインメント機能付き半導体記憶装置
US11151155B2 (en) Memory use in a distributed index and query system
US11210022B2 (en) Method, electronic device and computer readable storage medium of storage management
CN111079917A (zh) 张量数据分块存取的方法及装置
WO2017090071A1 (en) Method and computer system for managing blocks
US10929025B2 (en) Data storage system with I/O determinism latency optimization
WO2018032519A1 (zh) 一种资源分配方法、装置及numa系统
CN111857572B (zh) Tlc固态硬盘的数据写入方法、装置、设备及存储介质
US11287996B2 (en) Method, device and computer program product for storing data
JP7307311B2 (ja) 情報処理装置およびタスク管理プログラム
KR101849116B1 (ko) 불균일 메모리 접근 시스템과 그 메모리 관리 방법 및 프로그램
TWI534704B (zh) 時間序列資料處理方法及其系統
CN110618872B (zh) 混合内存动态调度方法及系统
JP5966404B2 (ja) 分散ファイルアクセス装置、分散ファイルアクセスシステム、分散ファイルアクセス方法、及び、分散ファイルアクセスプログラム
JPWO2015087651A1 (ja) メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
US20230222058A1 (en) Zoned namespaces for computing device main memory
US20120079188A1 (en) Method and apparatus to allocate area to virtual volume based on object access type
KR101734160B1 (ko) 작업부하 편중을 완화하는 저장 장치
CN107608914B (zh) 一种多路存储设备的访问方法、装置及移动终端
JP7412397B2 (ja) ストレージシステム

Legal Events

Date Code Title Description
GRNT Written decision to grant