KR20230081585A - 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치 - Google Patents

연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치 Download PDF

Info

Publication number
KR20230081585A
KR20230081585A KR1020220091314A KR20220091314A KR20230081585A KR 20230081585 A KR20230081585 A KR 20230081585A KR 1020220091314 A KR1020220091314 A KR 1020220091314A KR 20220091314 A KR20220091314 A KR 20220091314A KR 20230081585 A KR20230081585 A KR 20230081585A
Authority
KR
South Korea
Prior art keywords
cma
area
size
memory allocation
contiguous memory
Prior art date
Application number
KR1020220091314A
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 CN202211489596.7A priority Critical patent/CN116204113A/zh
Priority to US18/071,052 priority patent/US20230168822A1/en
Publication of KR20230081585A publication Critical patent/KR20230081585A/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/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
    • 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

Landscapes

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

Abstract

본 개시의 기술적 사상에 따른 메모리 관리 방법은, 부팅 시 메모리의 일부 영역을 전용 영역으로 할당하는 단계, 프로세스의 연속 메모리 할당 요청에 응답하여 전용 영역 내 연속 메모리 할당 영역을 식별하는 단계, 연속 메모리 할당 영역의 크기를 기초로 연속 메모리 할당 영역의 크기를 조정하는 단계 및 조정된 연속 메모리 할당 영역 중 연속 메모리 할당 요청에 의해 요청된 메모리 크기에 대응되는 영역을 프로세스에 할당하는 단계를 포함한다.

Description

연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치{MEMORY MANAGEMENT METHOD AND SEMICONDUCTOR DEVICE ADJUSTING SIZE OF CONTIGUOUS MEMORY ALLOCATION AREA}
본 개시의 기술적 사상은 반도체 장치에 관한 것으로서, 자세하게는 연속 메모리를 할당하는 메모리를 포함하는 반도체 장치에 관한 것이다.
멀티미디어 데이터와 같이 출판자 및 저작권자가 배포한 데이터에 대해 사용자의 접근과 재생을 제한하기 위하여, 해당 데이터는 연속 메모리 할당자(Contiguous Memory Allocator, CMA) 기법을 사용하여 할당된 메모리 영역에 저장될 수 있다.
연속 메모리 할당자 기법 상 메모리의 일부 영역이 연속 메모리 할당을 위해 전용되도록 메모리 부팅 시 설정될 수 있다. 데이터를 저장할 연속 메모리 영역이 충분하지 않은 경우 CMA 할당 실패가 발생할 수 있다. CMA 할당 실패 시 멀티미디어 데이터를 저장할 공간이 부족하게 되므로 디지털 컨텐츠 서비스의 품질이 떨어질 수 있다.
본 개시의 기술적 사상은 CMA 영역의 크기를 적응적으로 조정함으로써 CMA 할당 성능을 향상시킨 반도체 장치 및 메모리 관리 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일 측면에 따른 메모리 관리 방법은, 부팅 시 메모리의 일부 영역을 전용 영역으로 할당하는 단계, 프로세스의 연속 메모리 할당 요청에 응답하여 전용 영역 내 연속 메모리 할당 영역을 식별하는 단계, 연속 메모리 할당 영역의 크기를 기초로 연속 메모리 할당 영역의 크기를 조정하는 단계 및 조정된 연속 메모리 할당 영역 중 연속 메모리 할당 요청에 의해 요청된 메모리 크기에 대응되는 영역을 프로세스에 할당하는 단계를 포함한다.
본 개시의 다른 측면에 따른 메모리 관리 방법은, 메모리 내의 연속 메모리 할당(Contiguous Memory Allocation, CMA) 유형의 프리 페이지를 식별하는 단계, CMA 유형의 프리 페이지의 개수와 기준 개수를 비교하는 단계, 비교 결과를 기초로 CMA 유형의 프리 페이지의 개수를 조정하는 단계 및 프로세스의 연속 메모리 할당 요청에 응답하여, 조정된 CMA 유형의 프리 페이지를 프로세스에 할당하는 단계를 포함한다.
본 개시의 다른 측면에 따른 반도체 장치는, 노멀 영역 및 전용 영역을 포함하는 메모리 및 전용 영역에 포함된 연속 메모리 할당 영역의 크기를 식별하고, 연속 메모리 할당 요청에 의해 요구되는 연속 메모리 할당 영역의 크기와, 식별된 연속 메모리 할당 영역의 크기를 비교하고, 비교 결과를 기초로 전용 영역에 포함된 연속 메모리 할당 영역의 크기를 조정하는 프로세서를 포함한다.
본 개시의 예시적 실시예에 따라, CMA 영역의 크기를 적응적으로 조정함으로써 CMA 할당 성능을 향상시킨 반도체 장치 및 메모리 관리 방법이 제공될 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 반도체 장치를 설명하기 위한 도면이다.
도 2는 도 1에 도시된 프로세서의 블록도를 나타낸다.
도 3은 가상 어드레스와 물리 어드레스 사이의 맵핑을 나타내는 다이어그램이다.
도 4는 본 개시의 예시적 실시예에 따른 메모리 할당 방법을 설명하는 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 메모리의 전용 영역을 설명하는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 운영 시스템(OS)의 동작을 설명하는 블록도이다.
도 7은 CMA 확장 및 CMA 확장 롤백을 설명하는 도면이다.
도 8은 CMA 영역 확장 및 CMA 영역 확장 롤백의 기준을 설명하는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 반도체 장치의 메모리 관리 방법을 설명하는 흐름도이다.
도 10은 본 개시의 예시적 실시예에 따른 반도체 장치의 메모리 관리 방법을 설명하는 흐름도이다.
도 11은 본 개시의 예시적 실시예에 따라 CMA 요청을 기초로 수행되는 메모리 관리 방법을 설명하는 도면이다.
도 12는 본 개시의 예시적 실시예에 따라 CMA 블록의 개수를 조절하는 메모리 관리 방법을 설명하는 도면이다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다.
도 1은 본 개시의 예시적 실시 예에 따른 반도체 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 반도체 장치(10)는 PC(personal computer), 태블릿 PC(tablet PC), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있다. 반도체 장치(10)는 반도체 장치(10)의 전반적인 동작을 제어하는 프로세서(100)를 포함할 수 있다. 프로세서(100)는 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다.
프로세서(100)는 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 예컨대, 프로세서(100)는 프로그램 명령들(예컨대, 입력 장치(50)를 통하여 입력된 입력 신호에 의해 생성된 프로그램 명령들)을 실행하고 메모리(30)에 저장된 데이터를 독출하고 독출된 데이터를 디스플레이(20)를 통하여 디스플레이하도록 제어할 수 있다.
메모리(30)는, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 메모리(30)는 프로그램(program)(40)을 저장할 수 있다. 프로그램(40)은 소프트웨어라고 지칭될 수도 있다. 프로그램(40)은, 예를 들면, 커널(kernel)(41), 미들웨어(middleware)(42), 어플리케이션 프로그래밍 인터페이스(application programming interface(API))(43), 및 적어도 하나의 어플리케이션(44) 등을 포함할 수 있다. 커널(41), 미들웨어(42), 또는 API(43)의 적어도 일부는, 운영 시스템(operating system(OS))으로 지칭될 수 있다.
커널(41)은, 예를 들면, 다른 프로그램들(예: 미들웨어(42), API(43), 또는 적어도 하나의 어플리케이션(44)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예를 들어, 프로세서(100) 또는 메모리(30) 등)을 제어 또는 관리할 수 있다. 또한, 커널(41)은 미들웨어(42), API(43), 또는 적어도 하나의 어플리케이션(44)에서 반도체 장치(10)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(42)는, 예를 들면, API(43) 또는 적어도 하나의 어플리케이션(44)이 커널(41)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한, 미들웨어(42)는 적어도 하나의 어플리케이션(44)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(42)는 적어도 하나의 어플리케이션(44)에, 반도체 장치(10)의 시스템 리소스(예를 들어, 프로세서(100), 또는 메모리(30) 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어(42)은 적어도 하나의 어플리케이션(44)에 부여된 우선 순위에 따라 하나 이상의 작업 요청들을 처리함으로써, 하나 이상의 작업 요청들에 대한 스케쥴링(scheduling) 또는 로드 밸런싱(load balancing) 등을 수행할 수 있다.
API(43)는, 예를 들면, 적어도 하나의 어플리케이션(44)이 커널(41) 또는 미들웨어(42)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어(file control), 창 제어(window control), 영상 처리(image processing), 또는 문자 제어(character control) 등을 위한 적어도 하나의 인터페이스 또는 함수(function)(예: 명령어)를 포함할 수 있다.
입력 장치(50)는 터치 패드(touch pad) 또는 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(key pad), 또는 키보드로 구현될 수 있다.
프로세서(100)는 운영 시스템(OS)을 실행함으로써 적어도 하나의 어플리케이션(44)의 연속 메모리 할당(Contiguous Memory Allocation, CMA) 요청에 따라 메모리(30)의 일부 영역을 연속 메모리 할당(CMA) 영역으로 할당할 수 있다. 연속 메모리 할당(CMA)은, 페이지 크기 이상의 연속된 메모리 영역을 할당하는 것을 의미할 수 있다. CMA 영역은 페이지 크기 이상의 연속된 메모리 영역을 의미할 수 있다. CMA 영역은 적어도 하나의 어플리케이션(44)에 할당될 수 있고, 적어도 하나의 어플리케이션(44)은 할당받은 CMA 영역을 전용할 수 있다.
본 개시의 예시적 실시예에 따르면, 반도체 장치(10)는, 적어도 하나의 어플리케이션(44)의 CMA 요청을 기초로, 메모리(30) 내의 CMA 영역의 크기를 조절할 수 있다. 반도체 장치(10)는, CMA 영역으로 표시된 페이지 블록과 물리적으로 연속하여 배치되는 다른 페이지 블록의 데이터를 이동시키고, 해당 페이지 블록을 CMA 영역으로 표시함으로써 CMA 영역의 크기를 조절할 수 있다.
반도체 장치(10)는 CMA 요청에 따른 CMA 영역의 크기와, 현재 메모리(30) 내에서 이용 가능한 CMA 영역의 크기를 기초로 메모리(30) 내의 CMA 영역의 크기를 조절할 수 있다.
반도체 장치(10)는 반복적으로 메모리(30) 내의 이용 가능한 CMA 영역의 크기를 모니터링하고, 이용 가능한 CMA 영역의 크기가 일정한 범위 내에서 유지될 수 있도록 CMA 영역의 크기를 조절할 수 있다.
도 2는 도 1에 도시된 프로세서의 블록도를 나타낸다.
도 1 및 도 2를 참조하면, 프로세서(100)는 중앙 처리 장치(central processing unit(CPU), 110), 캐시(cache, 170), 및 메모리 관리 유닛(memory management unit(MMU), 200)을 포함할 수 있다.
CPU(110)는 프로그램 명령들을 읽고 실행하는 동작을 수행할 수 있다.
캐시(170)는 CPU(110)에 데이터를 빠르게 제공하기 위해 메모리(30)로부터 독출된 데이터를 일시적으로 저장하는 기억 장치일 수 있다.
MMU(200)는 프로세서(100)에 의해 요구되는 메모리(30)의 접근을 처리하기 위한 하드웨어 컴포넌트이다.
MMU(200)는 가상 어드레스들(virtual addresses)을 물리 어드레스들(physical addresses)로의 번역(translate)할 수 있고, 캐시(170)를 제어할 수 있고, 버스(180)를 중재(arbitrate)할 수 있다.
프로세서(100)는 시스템 주변 회로(120), 멀티 미디어 가속기(multimedia accelerator; 130), 접속 회로(connectivity circuit; 140), 디스플레이 컨트롤러(150), 및 메모리 컨트롤러(160)을 더 포함할 수 있다.
시스템 주변 회로(120), 멀티 미디어 가속기(130), 접속 회로(140), 디스플레이 컨트롤러(150) 및 메모리 컨트롤러(160) 각각은 시스템 버스(180)를 통해 데이터나 명령을 주고 받을 수 있다.
시스템 버스(180)는 복수의 채널들을 포함할 수 있다. 예컨대, 복수의 채널들은 독출 데이터 채널, 독출 어드레스 채널, 기입 어드레스 채널, 기입 데이터 채널 및 응답 채널을 포함할 수 있다.
시스템 주변 회로(120)는 실시간 클럭(real-time clock (RTC); 121), 위상 동기 루프(phase-locked loop(PLL); 123), 및 워치독 타이머(watch dog timer; 125)를 포함할 수 있다.
멀티 미디어 가속기(130)는 그래픽 엔진(135)을 포함한다. 실시 예에 따라, 멀티 미디어 가속기(130)는 카메라인터페이스(131), 그래픽 계산을 수행하기 위해 프레임 버퍼 또는 다른 비디오 디스플레이 회로(circuitry)와 집적된 그래픽 엔진(133), 및 압축되지 않은 디지털 데이터를 전송하기 위한 오디오/비디오 인터페이스인 HDMI(High-Definition Multimedia Interface; 135)을 포함할 수 있다.
실시 예에 따라, MMU(200)는 상기 그래픽 엔진(133)으로부터 출력되는 가상 어드레스를 물리 어드레스로 번역하기 위해 사용될 수 있다.
접속 회로(140)는 오디오 인터페이스(Audio IF; 141), ATA(Advanced Technology Attachment)와 같은 스토리지 인터페이스(storage IF; 143), 및 접속 인터페이스 (connectivity IF; 145)를 포함할 수 있다. 예컨대, 접속 회로(140)는 입력 장치(50)와 통신을 수행하도록 한다.
디스플레이 컨트롤러(150)는 데이터를 디스플레이(20)에 디스플레이하도록 제어한다.
실시 예에 따라, MMU(200)는 디스플레이 컨트롤러(150)로부터 출력되는 가상 어드레스를 물리 어드레스로 번역하기 위해 사용될 수 있다.
메모리 컨트롤러(160)는 메모리(30)의 종류(예컨대, 플래시 메모리, 또는 DRAM)에 따라 메모리에 접근 가능하도록 하는 인터페이스일 수 있다.
도 3은 가상 어드레스와 물리 어드레스 사이의 맵핑을 나타내는 다이어그램이다.
도 1 내지 도 3을 참조하면, 가상 어드레스 공간(virtual address space)은 복수의 페이지들(PN1~PNn, n은 2 이상의 자연수)로 나뉠 수 있다.
복수의 페이지들(PN1~PNn) 각각은 인접한 가상 주소들의 블록일 수 있다. 복수의 페이지들(PN1~PNn) 각각의 사이즈는 4KB일 수 있다. 실시 예에 따라 복수의 페이지들(PN1~PNn) 각각의 사이즈는 달라질 수 있다. 복수의 페이지들(PN1~PNn)은 가상 어드레스로 지칭될 수 있다.
물리 어드레스 공간(physical address space)은 가상 어드레스 공간의 페이지와 유사하게 복수의 프레임들(FN1~FNn)로 나뉠 수 있다. 복수의 프레임들(FN1~FNn) 각각은 고정된 크기를 가질 수 있다. 복수의 프레임들(FN1~FNn)은 메모리(30) 내의 저장 영역을 나타낼 수 있다. 복수의 프레임들(FN1~FNn)은 물리 어드레스로 지칭될 수 있다.
페이지 테이블(31)은 페이지의 가상 어드레스와 프레임의 물리 어드레스 사이에 매핑(mapping)을 가질 수 있다. 페이지 테이블(31)는 메모리(30) 내에 저장될 수 있고, MMU(200)는 페이지 테이블(31)을 참조하여 가상 어드레스를 물리 어드레스로 변환할 수 있다. 적어도 하나의 어플리케이션(44)에 대응하여 적어도 하나의 페이지 테이블(31)이 메모리(30) 내에 구비될 수 있다. 즉, 어플리케이션 별로 상이한 페이지 테이블이 메모리(30) 내에 구비될 수 있다.
도시되지 않았으나, 페이지 테이블(31)은 물리 어드레스에 대응하는 프레임의 상태를 나타내는 정보를 포함할 수도 있다. 예를 들어, 가상 어드레스에 대응하는 프레임이 메모리(30)에 로드되었는지 여부를 나타내는 정보, 프레임에 대한 리드/라이트 모드를 나타내는 정보, 적어도 하나의 어플리케이션(44)이 접근 가능한지 여부를 나타내는 정보, 커널(41)만 접근 가능한지 여부를 나타내는 정보 등을 더 포함할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 메모리 할당 방법을 설명하는 도면이다.
도 4를 참조하면, 메모리(30)는 노멀 영역과 전용 영역(Reserved Area)으로 구분될 수 있다. 노멀 영역과 전용 영역의 크기는 반도체 장치(10)의 부팅 시에 결정될 수 있다. 프로세스는 운영 시스템(OS)에 메모리(30)의 일부 영역에 대한 할당을 요청할 수 있고, 운영 시스템(OS)은 메모리(30)의 일부 영역을 프로세스에 할당할 수 있다.
프로세스는 운영 시스템(OS)에 일반 할당 또는 연속 할당을 요청할 수 있다. 일반 할당은 비연속 할당 방식일 수 있다. 일반 할당에 의해 메모리(30)가 할당되는 경우, 메모리(30)에 분산된 여러 영역들이 프로세스에 할당될 수 있다. 연속 할당에 의해 메모리(30)가 할당되는 경우, 메모리(30)의 연속적인 영역이 프로세스에 할당될 수 있다.
운영 시스템(OS)은 일반 할당 시 메모리(30)의 노멀 영역 또는 전용 영역을 프로세스에 할당할 수 있다. 운영 시스템(OS)은 연속 할당 시 메모리(30)의 전용 영역을 프로세스에 할당할 수 있다. 운영 시스템(OS)은, 전용 영역에 이용 가능한 영역의 크기가 적은 경우, 전용 영역 중 일반 할당된 영역에 저장된 데이터를 노멀 영역으로 이동시킴으로써 이용 가능한 영역을 확보할 수 있다. 운영 시스템(OS)은 확보된 이용 가능한 영역을 기초로 연속 할당을 처리할 수 있다.
운영 시스템(OS)은, 연속 할당 요청에 의해 요구되는 연속 영역의 크기보다, 전용 영역의 이용 가능한 영역의 크기가 작고, 더 이상 이용 가능한 영역을 확보하지 못하는 경우, 프로세스에 메모리 할당 실패 정보를 제공할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 메모리를 설명하는 도면이다. 도 5는 도 1 내지 4를 참조하여 후술될 수 있다.
도 5를 참조하면, 메모리(30)는 복수의 페이지 블록(PB)들을 포함할 수 있다. 페이지 블록(PB)은 복수의 페이지들을 포함할 수 있다. 예를 들어, 페이지 블록(PB)은 1024개의 페이지들을 포함할 수 있고, 하나의 페이지는 4KB일 수 있다. 각 페이지 블록(PB)은 노멀 영역 또는 전용 영역에 포함될 수 있다.
페이지 블록의 유형은 unmovable, reclaimable, movable 또는 CMA일 수 있다. Unmovable 유형의 페이지 블록은, 커널(41)이 접근하는 데이터, 즉, 다른 페이지로 이동될 수 없는 데이터가 저장된 페이지들을 포함할 수 있다. Reclaimable 유형의 페이지 블록은, 다른 페이지로 이동될 수는 없으나 삭제가 가능한 데이터가 저장된 페이지들을 포함할 수 있다. Movable 유형의 페이지 블록은, 다른 페이지로 이동될 수 있으며 삭제도 가능한 데이터가 저장된 페이지들을 포함할 수 있다. CMA 유형의 페이지 블록은, CMA 요청 시 할당되는 페이지들을 포함할 수 있다.
운영 시스템(OS)은 CMA 요청에 응답하여 CMA 유형의 페이지 블록들 중 이용 가능한 블록이 있는지 탐색하고, 요청에 대응하는 크기를 갖는 CMA 유형의 페이지 블록을 프로세스에 할당할 수 있다.
페이지 블록들의 유형은 부팅 시 결정될 수 있으며, 본 개시의 예시적 실시예에 따른 반도체 장치(10)는 CMA 유형의 페이지 블록이 부족한 경우, movable 유형의 페이지 블록을 CMA 유형의 페이지 블록으로 전환시킬 수 있다. 즉, movable 유형의 페이지 블록에 데이터가 이미 저장되어 있는 경우, 반도체 장치(10)는 해당 데이터를 다른 페이지 블록으로 이동시키고, movable 유형의 페이지 블록을 CMA 유형의 페이지 블록으로 전환시킬 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 운영 시스템(OS)의 동작을 설명하는 블록도이다. 도 7은 CMA 확장 및 CMA 확장 롤백을 설명하는 도면이다. 도 8은 CMA 영역 확장 및 CMA 영역 확장 롤백의 기준을 설명하는 도면이다. 도 6, 7 및 8은 도 1 내지 5를 참조하여 후술될 수 있다.
도 6을 참조하면, 운영 시스템(OS)은 연속 메모리 할당자(이하, CMA)(61), CMA 영역 모니터(62), CMA 영역 확장 모듈(63) 및 CMA 영역 확장 롤백 모듈(64)을 포함할 수 있다. 운영 시스템(OS)은 CMA 요청에 따라 CMA 영역을 확장하는 방식(CMA request case)과, 항상 CMA 영역을 모니터링하는 방식(Always-On case)을 기초로 메모리를 관리할 수 있다. 운영 시스템(OS)은 프로세서(100)에 의해 실행됨으로써 메모리를 관리할 수 있다.
CMA 요청에 따라 CMA 영역을 확장하는 방식(CMA request case)에서, CMA(61)는 프로세스로부터 제공되는 CMA 요청(CMA_Req)에 응답하여 CMA 응답(CMA_Resp)을 프로세스에 제공할 수 있다. CMA 요청(CMA_Req)은 프로세스가 요구하는 연속 메모리 영역의 크기를 포함할 수 있다. CMA 응답(CMA_Resp)은 CMA 영역 할당에 대한 완료 정보 또는 실패 정보일 수 있다. 구체적으로, CMA(61)는 프리 페이지 요청(FP_Req)을 CMA 영역 모니터(62)에 제공할 수 있다.
CMA 영역 모니터(62)는 전용 영역 내 CMA 영역 중 프리 페이지에 대한 정보(FP_info)를 CMA(61)에 제공할 수 있다. 프리 페이지는 데이터가 저장되지 않은 CMA 유형의 페이지 또는 CMA 영역으로 이용 가능한 페이지를 의미할 수 있다. 프리 페이지에 대한 정보(FP_info)는 프리 페이지의 개수를 나타낼 수 있다.
CMA(61)는 프리 페이지에 대한 정보(FP_info)를 기초로, 프로세스가 요구하는 연속 메모리 영역의 크기와, CMA 영역으로 이용 가능한 영역의 크기를 비교할 수 있다. 구체적으로, CMA(61)는 프로세스가 요구하는 프리 페이지의 개수와, 이용 가능한 프리 페이지의 개수를 비교하고, 비교 결과를 기초로 확장 요청(Ex_req)을 CMA 영역 확장 모듈(63)에 제공할 수 있다. 일부 실시예들에서, CMA(61)는, CMA 영역으로 이용 가능한 프리 페이지의 개수에서 제1 기준 개수를 뺀 값과, 프로세스가 요구하는 프리 페이지의 개수를 비교하고, 비교 결과를 기초로 CMA 확장 요청(Ex_req)을 CMA 영역 확장 모듈(63)에 제공할 수 있다.
도 6 및 도 7을 참조하면, CMA 영역 확장 모듈(63)은 movable 유형의 페이지 블록(51)을 CMA 유형의 페이지 블록(52)으로 전환할 수 있다. CMA 유형의 페이지 블록(52)은, 다른 CMA 유형의 페이지 블록과 인접하고 있으므로, 이용 가능한 CMA 영역의 크기가 증가할 수 있다. 즉, CMA 유형의 페이지 블록의 개수가 증가함으로써 프리 페이지의 개수가 증가할 수 있다. 일부 실시예들에서, CMA 영역 확장 모듈(63)은 CMA 유형으로 전환된 페이지 블록의 위치 및 크기에 대한 정보를 CMA 영역 확장 롤백 모듈(64)에 제공할 수 있다.
도 6을 참조하면, 항상 CMA 영역을 모니터링하는 방식(Always-On case)에서, CMA 영역 모니터(62)는 CMA 영역의 프리 페이지의 개수를 모니터링할 수 있다. 도 8을 참조하면, CMA 영역 모니터(62)는 프리 페이지의 개수가 제1 기준 개수(Ref 1)보다 적으면 CMA 확장 요청(Ex_req)을 CMA 영역 확장 모듈(63)에 제공할 수 있다. CMA 영역 모니터(62)는 프리 페이지의 개수가 제2 기준 개수(Ref 2)보다 많으면 CMA 확장 롤백 요청(Rb_req)을 CMA 영역 확장 롤백 모듈(64)에 제공할 수 있다.
도 6 및 도 7을 참조하면, CMA 영역 확장 롤백 모듈(64)은 CMA 유형의 페이지 블록(52)을 movable 유형의 페이지 블록(51)으로 전환할 수 있다. CMA 유형의 페이지 블록의 개수가 감소함으로써 프리 페이지의 개수가 감소할 수 있다. 일부 실시예들에서, CMA 영역 확장 롤백 모듈(64)은 CMA 유형으로 전환된 페이지 블록의 위치 및 크기에 대한 정보를 기초로 페이지 블록을 특정하고, 특정된 페이지 블록의 유형을 movable로 전환할 수 있다.
본 개시의 예시적 실시예에 따르면, CMA(61)는 CMA 영역의 크기가 작더라도 페이지 블록의 유형을 변경함으로써 CMA 영역을 추가적으로 확보할 수 있다. 따라서, CMA 할당 실패의 가능성이 낮아지므로 연속 메모리 할당을 요구하는 데이터(예를 들어, 보안 데이터, 멀티미디어 데이터 등)에 대한 저장 성능이 향상될 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 반도체 장치의 메모리 관리 방법을 설명하는 흐름도이다. 도 9는 도 1 내지 8을 참조하여 설명될 수 있다. 메모리 관리 방법은 복수의 단계들(S910 내지 S950)을 포함할 수 있다.
S910 단계에서, 반도체 장치(10)는 부팅 시 메모리(30)를 노멀 영역과 전용 영역으로 분할할 수 있다. 노멀 영역은 비연속 메모리 할당 요청에 대응하여 할당되는 메모리 영역일 수 있고, 전용 영역은 연속 메모리 할당 요청에 대응하여 할당되는 메모리 영역일 수 있다.
S920 단계에서, 반도체 장치(10)는 연속 메모리 할당 요청에 응답하여 전용 영역에 CMA 프리 페이지 개수를 식별할 수 있다. CMA 프리 페이지 개수는, 전용 영역에 포함된 페이지 블록들 중, 유형이 CMA인 페이지 블록을 검출하고, 식별된 CMA 페이지 블록들 중 연속적으로 배치되는 CMA 페이지 블록을 검출함으로써 식별될 수 있다. 페이지 블록은 복수의 페이지들을 포함할 수 있다. 예를 들어, 페이지 블록은 1024개의 페이지를 포함할 수 있다.
S930 단계에서, 반도체 장치(10)는 연속 메모리 할당 요청에 의해 요청된 CMA 페이지의 개수와, 전용 영역 내 CMA 프리 페이지 개수를 비교할 수 있다. 요청된 CMA 페이지의 개수가 CMA 프리 페이지 개수보다 크면 S940 단계가 수행될 수 있고, 그렇지 않으면 S950 단계가 수행될 수 있다.
S940 단계에서, 반도체 장치(10)는 전용 영역 내의 CMA 블록을 확장할 수 있다. 구체적으로, 반도체 장치(10)는 CMA가 아닌 유형의 페이지 블록을, CMA 유형으로 전환함으로써 CMA 블록의 개수를 증가시킬 수 있다.
S950 단계에서, 반도체 장치(10)는 증가된 CMA 블록들을 기초로 프로세스에 연속 메모리를 할당할 수 있다.
본 개시의 예시적 실시예의 메모리 관리 방법에 따르면, CMA 요청에 따라 CMA 영역의 크기를 조절할 수 있으므로, 할당 실패가 발생하는 가능성이 감소할 수 있고, 이에 따라 데이터 저장 성능이 향상될 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 반도체 장치의 메모리 관리 방법을 설명하는 흐름도이다. 메모리 관리 방법은 복수의 단계들(S1010 내지 S1050)을 포함할 수 있다. 도 10은 도 1 내지 9를 참조하여 후술될 수 있다.
S1010 단계에서, 반도체 장치(10)는 전용 영역 내 CMA 프리 페이지의 개수를 모니터링할 수 있다. 구체적으로, CMA 영역 모니터(62)는 CMA 할당이 가능한 CMA 블록의 개수를 주기적으로 식별함으로써 CMA 프리 페이지의 개수를 모니터링할 수 있다. CMA 블록을 복수의 CMA 프리 페이지들을 포함할 수 있다. 예를 들어, CMA 블록은 1024개의 CMA 프리 페이지들을 포함할 수 있다.
S1020 단계에서, 반도체 장치(10)는 CMA 프리 페이지의 개수와 제1 기준 개수(Ref 1)를 비교할 수 있다. CMA 프리 페이지의 개수가 제1 기준 개수(Ref 1)보다 적으면 S1040 단계가 수행될 수 있고, 그렇지 않으면 S1030 단계가 수행될 수 있다.
S1040 단계에서, 반도체 장치(10)는 전용 영역 내 CMA 블록의 개수를 증가시킬 수 있다. 즉, 반도체 장치(10)는 CMA 블록의 개수가 제1 기준 개수(Ref 1)보다 크거나 같아지도록 CMA 블록의 개수를 증가시킬 수 있다.
S1030 단계에서, 반도체 장치(10)는 CMA 프리 페이지의 개수와 제2 기준 개수(Ref 2)를 비교할 수 있다. CMA 프리 페이지의 개수가 제2 기준 개수(Ref 2)보다 많으면 S1050 단계가 수행될 수 있고, 그렇지 않으면 S1010 단계가 재차 수행될 수 있다. 제2 기준 개수(Ref 2)는 제1 기준 개수(Ref 1)보다 클 수 있다.
S1050 단계에서, 반도체 장치(10)는 전용 영역 내 CMA 블록의 개수를 감소시킬 수 있다. 즉, 반도체 장치(10)는 CMA 블록의 개수가 제2 기준 개수(Ref 2)보다 작거나 같아지도록 CMA 블록의 개수를 감소시킬 수 있다.
도 11은 본 개시의 예시적 실시예에 따라 CMA 요청을 기초로 수행되는 메모리 관리 방법을 설명하는 도면이다. 도 11은 도 1 내지 10 중 적어도 하나를 참조하여 후술될 수 있다.
CMA(61)는 프로세스로부터 CMA 요청(CMA_Req)을 수신할 수 있다(S1110). CMA 요청(CMA_Req)은 메모리(30) 내 연속된 메모리 영역에 대한 할당을 요구하는 요청일 수 있다.
CMA(61)는 CMA 프리 페이지의 개수를 요청하는 프리 페이지에 대한 개수 요청(FP_Req)을 CMA 영역 모니터(62)에 제공할 수 있다(S1120).
CMA 영역 모니터(62)는 CMA 프리 페이지의 개수는 식별하고, 식별된 CMA 프리 페이지의 개수에 대한 정보(FP_info)를 CMA(61)에 제공할 수 있다(S1130).
CMA(61)는 요청된 CMA 프리 페이지의 개수와, 식별된 CMA 프리 페이지의 개수를 비교할 수 있다(S1140).
요청된 CMA 프리 페이지의 개수가, 식별된 CMA 프리 페이지의 개수보다 크지 않으면, CMA(61)는 프로세스에 CMA를 할당할 수 있다(S1160). 일부 실시예들에서, 요청된 CMA 프리 페이지의 개수가, 식별된 CMA 프리 페이지의 개수에서 제1 기준 개수(Ref 1)를 뺀 값보다 크지 않으면, CMA(61)는 프로세스에 CMA를 할당할 수 있다.
요청된 CMA 프리 페이지의 개수가, 식별된 CMA 프리 페이지의 개수보다 크면, CMA(61)는 CMA 영역 확장 모듈(63)에 CMA 확장 요청(Ex_req)을 제공할 수 있다(S1150).
CMA 영역 확장 모듈(63)은 CMA 확장 요청(Ex_req)에 응답하여 전용 영역 내 CMA 블록을 확장시킬 수 있다. 구체적으로, CMA 영역 확장 모듈(63)은 다른 유형의 페이지 블록을 CMA 유형으로 전환시킴으로써 CMA 블록의 개수를 증가시킬 수 있다(S1170). CMA 영역 확장 모듈(63)은 CMA 블록으로 전환된 블록의 위치 및 크기에 대한 정보를 저장할 수 있다. CMA 영역 확장 모듈(63)은 CMA 확장 완료를 나타내는 응답 정보(Ex_resp)를 CMA(61)에 제공할 수 있다(S1180).
CMA(61)는 확장된 CMA 블록을 기초로 요청된 CMA 영역을 프로세스에 할당할 수 있는지 판단하고, 프로세스에 CMA 응답(CMA_Resp)을 제공할 수 있다(S1190). 구체적으로, 요청된 CMA 프리 페이지의 개수가 CMA 프리 페이지의 개수보다 크지 않으면 프로세스에 CMA 영역을 할당할 수 있고, 요청된 CMA 프리 페이지의 개수가 CMA 프리 페이지의 개수보다 크면 프로세스에 CMA 할당 실패 정보를 프로세스에 제공할 수 있다.
도 12는 본 개시의 예시적 실시예에 따라 CMA 블록의 개수를 조절하는 메모리 관리 방법을 설명하는 도면이다. 도 12는 도 1 내지 11 중 적어도 하나를 참조하여 후술될 수 있다.
CMA 영역 모니터(62)는 전용 영역 내 CMA 프리 페이지의 개수를 획득할 수 있다(S1210). 예를 들어, CMA 모니터(62)는 CMA 페이지가 이미 프로세스에 할당되었는지 여부를 나타내는 비트맵 정보를 기초로 CMA 프리 페이지의 개수를 획득할 수 있다. CMA 프리 페이지는, 프로세스에 할당 가능한 CMA 페이지를 의미할 수 있다.
CMA 영역 모니터(62)는 CMA 프리 페이지의 개수와 제1 기준 개수(Ref 1)를 비교할 수 있다(S1220).
CMA 프리 페이지의 개수가 제1 기준 개수(Ref 1)보다 적은 경우, CMA 영역 모니터(62)는 CMA 영역 확장 모듈(63)에 CMA 영역 확장을 요청할 수 있고, CMA 영역 확장 모듈(63)은 CMA 유형이 아닌 블록을 CMA 블록으로 전환할 수 있다(S1230). 이에 따라, CMA 프리 페이지의 개수는 제1 기준 개수(Ref 1)보다 많아질 수 있다.
CMA 프리 페이지의 개수가 제2 기준 개수(Ref 2)보다 큰 경우, CMA 영역 모니터(62)는 CMA 영역 확장 롤백 모듈(64)에 CMA 영역 확장 롤백을 요청할 수 있고, CMA 영역 확장 롤백 모듈(64)은 CMA 블록을 CMA 유형이 아닌 블록으로 전환할 수 있다(S1250). 이에 따라, CMA 프리 페이지의 개수는 제2 기준 개수(Ref 2)보다 적어질 수 있다.
CMA 프리 페이지의 개수가 제1 기준 개수(Ref 1)보다 작지 않고, 제2 기준 개수(Ref 2)보다 크지 않은 경우, CMA 영역 모니터(62)는 CMA 프리 페이지의 개수를 재차 획득할 수 있다.
본 개시의 예시적 실시예에 따르면, CMA 프리 페이지의 개수가 제1 기준 개수(Ref 1)보다 작고 제2 기준 개수(Ref 2)보다 많은 수준으로 유지되므로, CMA 할당 요청을 처리하는 성능이 향상될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 메모리 관리 방법에 있어서,
    부팅 시 메모리의 일부 영역을 전용 영역으로 할당하는 단계;
    프로세스의 연속 메모리 할당 요청에 응답하여 상기 전용 영역 내 연속 메모리 할당 영역을 식별하는 단계;
    상기 연속 메모리 할당 영역의 크기를 기초로 상기 연속 메모리 할당 영역의 크기를 조정하는 단계; 및
    상기 조정된 연속 메모리 할당 영역 중 상기 연속 메모리 할당 요청에 의해 요청된 메모리 크기에 대응되는 영역을 상기 프로세스에 할당하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 연속 메모리 할당 영역의 크기를 조정하는 단계는,
    상기 식별된 연속 메모리 할당 영역의 크기에서 제1 기준 값을 뺌으로써 제1 영역 크기를 산출하는 단계; 및
    상기 요청된 영역 크기가 상기 제1 영역 크기보다 크면 상기 연속 메모리 할당 영역의 크기를 조정하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 연속 메모리 할당 영역의 크기를 조정하는 단계는,
    상기 식별된 연속 메모리 할당 영역의 크기가 제1 기준 값보다 작으면 상기 연속 메모리 할당 영역의 크기를 증가시키는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 연속 메모리 할당 영역의 크기를 조정하는 단계는,
    상기 식별된 연속 메모리 할당 영역의 크기가 제2 기준 값보다 크면 상기 연속 메모리 할당 영역의 크기를 감소시키는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 연속 메모리 할당 영역의 크기를 조정하는 단계는,
    연속 메모리 할당 영역이 아닌 영역을 상기 연속 메모리 할당 영역으로 전환하는 단계를 포함하는 방법.
  6. 메모리 내의 연속 메모리 할당(Contiguous Memory Allocation, CMA) 유형의 프리 페이지를 식별하는 단계;
    상기 CMA 유형의 프리 페이지의 개수와 기준 개수를 비교하는 단계;
    비교 결과를 기초로 상기 CMA 유형의 프리 페이지의 개수를 조정하는 단계; 및
    프로세스의 연속 메모리 할당 요청에 응답하여, 조정된 CMA 유형의 프리 페이지를 상기 프로세스에 할당하는 단계를 포함하는 메모리 관리 방법.
  7. 제6항에 있어서,
    상기 CMA 유형의 프리 페이지의 개수를 조정하는 단계는,
    상기 CMA 유형의 프리 페이지의 개수가 제1 기준 개수보다 적으면 상기 CMA 유형의 프리 페이지의 개수를 증가시키는 단계; 및
    상기 CMA 유형의 프리 페이지의 개수가 제2 기준 개수보다 많으면 CMA 유형의 프리 페이지의 개수를 감소시키는 단계를 포함하는 메모리 관리 방법.
  8. 제7항에 있어서,
    상기 CMA 유형의 프리 페이지의 개수를 증가시키는 단계는,
    상기 CMA 유형이 아닌 유형의 제1 페이지에 저장된 데이터를 제2 페이지로 이동시키는 단계; 및
    상기 제1 페이지를 상기 CMA 유형으로 지정하는 단계를 포함하는 메모리 관리 방법.
  9. 부팅 시 메모리의 일부 영역을 전용 영역으로 할당하는 단계;
    프로세스의 연속 메모리 할당 요청에 응답하여 상기 전용 영역 내 연속 메모리 할당 영역을 식별하는 단계;
    상기 연속 메모리 할당 영역의 크기를 기초로 상기 연속 메모리 할당 영역의 크기를 조정하는 단계; 및
    상기 조정된 연속 메모리 할당 영역 중 상기 연속 메모리 할당 요청에 의해 요청된 메모리 크기에 대응되는 영역을 상기 프로세스에 할당하는 단계를 포함하는 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  10. 제9항에 있어서,
    상기 연속 메모리 할당 영역의 크기를 조정하는 단계는,
    상기 식별된 연속 메모리 할당 영역의 크기에서 제1 기준 값을 뺌으로써 제1 영역 크기를 산출하는 단계; 및
    상기 요청된 영역 크기가 상기 제1 영역 크기보다 크면 상기 연속 메모리 할당 영역의 크기를 조정하는 단계를 포함하는 컴퓨터로 판독 가능한 기록 매체.
KR1020220091314A 2021-11-30 2022-07-22 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치 KR20230081585A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211489596.7A CN116204113A (zh) 2021-11-30 2022-11-25 存储器管理方法和非暂时性计算机可读记录介质
US18/071,052 US20230168822A1 (en) 2021-11-30 2022-11-29 Memory management method and semiconductor device adjusting size of contiguous memory allocation area

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210169496 2021-11-30
KR1020210169496 2021-11-30

Publications (1)

Publication Number Publication Date
KR20230081585A true KR20230081585A (ko) 2023-06-07

Family

ID=86761833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220091314A KR20230081585A (ko) 2021-11-30 2022-07-22 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치

Country Status (1)

Country Link
KR (1) KR20230081585A (ko)

Similar Documents

Publication Publication Date Title
US11531625B2 (en) Memory management method and apparatus
US9058212B2 (en) Combining memory pages having identical content
US8453015B2 (en) Memory allocation for crash dump
US8015383B2 (en) System, method and program to manage virtual memory allocated by a virtual machine control program
EP1023661B1 (en) Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system
US9110806B2 (en) Opportunistic page caching for virtualized servers
WO2017054610A1 (zh) 计算机、服务质量控制方法及装置
US11360884B2 (en) Reserved memory in memory management system
US20080244118A1 (en) Method and apparatus for sharing buffers
WO2024099448A1 (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
US9772776B2 (en) Per-memory group swap device
US9684525B2 (en) Apparatus for configuring operating system and method therefor
CN113031857B (zh) 数据写入方法、装置、服务器及存储介质
US20140289739A1 (en) Allocating and sharing a data object among program instances
US10908958B2 (en) Shared memory in memory isolated partitions
US20200409833A1 (en) Reducing fragmentation of computer memory
US9405470B2 (en) Data processing system and data processing method
JP2018525724A (ja) メモリ管理装置を用いた自動メモリ管理
KR20230081585A (ko) 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치
CN112654965A (zh) 动态模块的外部分页和交换
US20230168822A1 (en) Memory management method and semiconductor device adjusting size of contiguous memory allocation area
CN114518962A (zh) 内存的管理方法及装置
WO2015161804A1 (zh) 一种Cache分区的方法及装置
US20090024798A1 (en) Storing Data
KR102334237B1 (ko) 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치