KR102225525B1 - 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 - Google Patents

하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 Download PDF

Info

Publication number
KR102225525B1
KR102225525B1 KR1020140041673A KR20140041673A KR102225525B1 KR 102225525 B1 KR102225525 B1 KR 102225525B1 KR 1020140041673 A KR1020140041673 A KR 1020140041673A KR 20140041673 A KR20140041673 A KR 20140041673A KR 102225525 B1 KR102225525 B1 KR 102225525B1
Authority
KR
South Korea
Prior art keywords
page
information
memory
zone
allocation
Prior art date
Application number
KR1020140041673A
Other languages
English (en)
Other versions
KR20150116606A (ko
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 KR1020140041673A priority Critical patent/KR102225525B1/ko
Priority to US14/681,469 priority patent/US10565100B2/en
Priority to EP15162769.2A priority patent/EP2930625A3/en
Priority to PCT/KR2015/003511 priority patent/WO2015156596A1/en
Publication of KR20150116606A publication Critical patent/KR20150116606A/ko
Application granted granted Critical
Publication of KR102225525B1 publication Critical patent/KR102225525B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따르면 하드웨어 장치에 기반한 메모리 관리 방법을 제공한다. 본 발명의 실시 예는 운영 체제의 메모리 관리자를 가속하기 위한 하드웨어 기반 메모리 할당 모듈, 메모리 회수 모듈 및 메모리 컴팩션 모듈을 제공한다. 또한, 상기 메모리 할당 모듈, 메모리 회수 모듈 및 메모리 컴팩션 모듈을 이용한 메모리 관리 방법을 제공한다.

Description

하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법{Hardware based memory management apparatus and memory management method thereof}
본 발명은 전자 장치에서 메모리 관리 방법 및 메모리를 관리하는 장치에 대한 것이다. 본 발명은 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법에 관한 것이다.
최근 기술의 발달로 각종 전자 장치들은 다양한 기능을 포함하고 있다. 일 예로 이동 단말의 경우 음성 통화나 메시지 송수신과 같은 일반적인 통신 기능 외에도 TV(Television) 시청 기능(예컨대, DMB(Digital Multimedia Broadcasting)나 DVB(Digital Video Broadcasting)와 같은 이동 방송), 음악재생기능(예컨대, MP3(MPEG Audio Layer-3)), 사진촬영 기능, 인터넷 접속 기능, 사전 검색 기능 등 각종 멀티미디어 기능들이 부가되고 있다. 이에 따라 각종 멀티미디어 기능들을 실행하기 위한 메모리 할당 요청이 늘어나고 있으나, 메모리를 효과적으로 관리하지 못할 경우 메모리를 할당하지 못해 실행하고자 하는 프로그램을 실행할 수 없는 문제가 발생할 수 있다.
따라서 효율적으로 메모리를 관리하기 위한 방법이 요구되고 있다.
본 발명이 이루고자 하는 기술적 과제는 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법을 제공하는 것이다. 본 발명의 실시 예에 따르면 메모리 관리를 위한 새로운 개체로 하드웨어 메모리 관리자 가속기 장치를 제공할 수 있다. 본 발명이 이루고자 하는 기술적 과제는 소프트웨어로 동작하는 운영체제(OS, operating system)의 메모리 관리자의 기능을 가속화 시키는 하드웨어 메모리관리자 장치를 제공하고, 이를 이용하여 메모리를 관리하는 방법을 제공한다.
본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 할당 장치의 메모리 할당 방법에 있어서, 소프트웨어 운영체제로부터 수신한 초기화 정보에 기반하여, 존(zone) 정보 및 페이지 정보를 생성하는 단계, 소프트웨어 운영체제로부터 존 지시 정보 및 할당 요청 메모리 크기 정보를 포함하는 메모리 할당 요청 메시지를 수신하는 단계, 상기 존 정보 및 페이지 정보에 기반하여 상기 존 지시 정보가 지시하는 존의 페이지에 대한 할당 지시자 비트 열 정보를 추출하는 단계 및 상기 할당 지시자 비트 열 정보에 기반하여 요청 받은 메모리를 할당하는 단계를 포함하는 것을 특징으로 하는 방법을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 할당 장치에 있어서,
소프트웨어 운영체제와 상기 하드웨어 기반 메모리 할당 장치를 연결하는 인터페이스 모듈 및 상기 소프트웨어 운영체제로부터 수신한 초기화 정보에 기반하여, 존(zone) 정보 및 페이지 정보를 생성하고, 소프트웨어 운영체제로부터 존 지시 정보 및 할당 요청 메모리 크기 정보를 포함하는 메모리 할당 요청 메시지를 수신하며, 상기 존 정보 및 페이지 정보에 기반하여 상기 존 지시 정보가 지시하는 존의 페이지에 대한 할당 지시자 비트 열 정보를 추출하고, 상기 할당 지시자 비트 열 정보에 기반하여 요청 받은 메모리를 할당하도록 제어하는 메모리 할당 모듈을 포함하는 것을 특징으로 하는 장치를 제공할 수 있다.
또한 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 회수 장치의 회수 대상 페이지 선정 방법에 있어서, 소프트웨어 운영체제로부터 회수 대상 페이지 요청 메시지를 수신하는 단계, 회수 대상 존 및 LRU 정보에 기반하여 검색 정보를 생성하는 단계, 상기 검색 정보로부터 가장 긴 연속된 페이지를 포함하는 회수 대상 페이지 그룹을 선택하는 단계 및 상기 회수 대상 페이지 그룹 정보를 포함하는 회수 대상 페이지 선정 완료 메시지를 상기 소프트웨어 운영 체제로 전송하는 단계를 포함하는 것을 특징으로 하는 방법을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 회수 장치에 있어서, 소프트웨어 운영체제와 상기 하드웨어 기반 메모리 할당 장치를 연결하는 인터페이스 모듈 및 소프트웨어 운영체제로부터 회수 대상 페이지 요청 메시지를 수신하고, 회수 대상 존 및 LRU 정보에 기반하여 검색 정보를 생성하며, 상기 검색 정보로부터 가장 긴 연속된 페이지를 포함하는 회수 대상 페이지 그룹을 선택하고, 상기 회수 대상 페이지 그룹 정보를 포함하는 회수 대상 페이지 선정 완료 메시지를 상기 소프트웨어 운영 체제로 전송하도록 제어하는 메모리 회수 모듈을 포함하는 것을 특징으로 하는 장치를 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 컴팩션(compaction) 장치의 컴팩션 대상 페이지 선정 방법에 있어서, 소프트웨어 운영체제로부터 컴팩션 식별자 정보(compaction indicator)를 포함하는 컴팩션 요청 메시지를 수신하는 단계, 상기 컴팩션 식별자 정보에 대응하는 페이지 블록 비트열을 검색하는 단계, 상기 페이지 블록의 프리 페이지 수에 기반하여 컴팩션 대상 페이지 블록을 선택하는 단계 및 선택된 페이지 블록 정보를 포함하는 컴팩션 완료 메시지를 상기 소프트웨어 운영체제로 전송하는 단계를 포함하는 것을 특징으로 하는 방법을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 컴팩션(compaction) 장치에 있어서, 소프트웨어 운영체제와 상기 하드웨어 기반 메모리 할당 장치를 연결하는 인터페이스 모듈 및 상기 소프트웨어 운영체제로부터 컴팩션 식별자 정보(compaction indicator)를 포함하는 컴팩션 요청 메시지를 수신하고, 상기 컴팩션 식별자 정보에 대응하는 페이지 블록 비트 열을 검색하며, 상기 페이지 블록의 프리 페이지 수에 기반하여 컴팩션 대상 페이지 블록을 선택하고, 선택된 페이지 블록 정보를 포함하는 컴팩션 완료 메시지를 상기 소프트웨어 운영체제로 전송하도록 제어하는 메모리 컴팩션 모듈을 포함하는 것을 특징으로 하는 장치를 제공할 수 있다.
본 발명의 실시 예에 따르면 전자 장치에서 효율적으로 메모리 관리 방법 및 메모리를 관리하는 장치를 제공할 수 있다. 또한, 본 발명의 실시 예에 따르면, 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법을 제공할 수 있다.
메모리 관리자 하드웨어 가속기는 메모리 할당 및 해제 기능 가속화, 메모리 회수 기능 가속화, 메모리 compaction 기능 가속화하여 메모리의 fragmentation 문제를 해결하고, 메모리 회수 및 compaction 이 발생할 빈도가 낮아지고, 회수 및 compaction이 발생하여도, 수행 속도를 빠르게 하는 효과가 있다.
또한, 본 발명의 실시 예에 따르면 메모리 할당 및 해제시 발생하는 2n 단위로 할당하여 발생하는 경계에 연속되어 있는 메모리를 할당 가능하게 하여, 범용 OS의 메모리 할당 방법 보다 메모리 회수 및 컴팩션(compaction) 발생 빈도가 낮아진다.
또한, 본 발명의 실시 예에 따르면 메모리 회수 기능 가속화에서는 회수되는 페이지의 연속성을 체크해서 연속된 페이지를 먼저 회수 하기 때문에, 메모리 회수 동작의 발생 빈도가 낮아진다. 따라서 단편화(fragmentation)로 발생하는 메모리 회수 동작의 빈도가 낮아짐으로써, 메모리 할당 속도가 개선된다.
또한, 본 발명의 실시 예에 따르면 메모리 컴팩션(compaction) 가속기에서는 페이지의 연속성을 고려하여 컴팩션 대상 페이지를 선정하기 때문에, 종래 기술 대비 컴팩션 되는 페이지의 수가 적어서, 컴팩션 수행 시간이 빨라진다.
도 1은범용 운영체제에서 메모리 2nd chance 기법에 기반한 메모리 회수 방법을 설명하는 도면이다.
도 2는 범용 운영체제에서 LRU 리스트에 기반하여 메모리 회수 방법을 설명하는 도면이다.
도 3은 범용 운영체제에서 메모리 컴팩션 동작을 설명하는 도면이다.
도 4는메모리 페이지 할당 및 할당 해제 상태를 설명하는 도면이다.
도 5는 본 발명의 일 실시 예에 따른 하드웨어 메모리 관리자 가속기를 설명하는 도면이다.
도 6a 및 도 6b는 본 발명의 일 실시 예에 따른 메모리 관리자 가속기 인터페이스 모듈과 소프트웨어 운영체제 사이의 신호 교환 정보를 설명하는 도면이다.
도 7은 본 발명의 일 실시 예에 따른 존(zone) 초기화 인터페이스를 설명하는 도면이다.
도 8은 본 발명의 일 실시 예에 따른 메모리 할당 요청 인터페이스를 설명하는 도면이다.
도 9는 본 발명의 일 실시 예에 따른 메모리 해제 요청 인터페이스를 설명하는 도면이다.
도 10a, 도 10b, 도 10c 및 도 10d는 본 발명의 일 실시 예에 따른 메모리 할당 과정을 설명하는 흐름도이다.
도 11은 본 발명의 일 실시 예에 따른 메모리 존의 메모리 페이지에 대한 하드웨어 페이지 정보를 설명하는 도면이다.
도 12는 본 발명의 일 실시 예에 따른 프리 페이지 검색 방법을 설명하는 도면이다.
도 13은 메모리 페이지가 LRU 리스트에 등록되는 인터페이스를 설명하는 도면이다.
도 14는 메모리 페이지가 LRU 리스트에서 삭제되는 인터페이스를 설명하는 도면이다.
도 15는 회수 대상 후보군 페이지를 요청하는 인터페이스를 설명하는 도면이다.
도 16은 본 발명의 일 실시 예에 따른 비활성화 LRU 리스트에 등록된 메모리 페이지를 설명하는 도면이다.
도 17은 본 발명의 일 실시 예에 따른 비트맵 생성 및 회수 그룹을 검색하는 방법을 설명하는 도면이다.
도 18은 본 발명의 일 실시 예에 따른 페이지 회수 그룹을 선정하기 위한 정렬 방법을 설명하는 도면이다.
도 19a는 본 발명의 일 실시 예에 따른 회수 대상 페이지 선정 방법을 설명하는 도면이다.
도 19b는 본 발명의 일 실시 예에 따른 수신 메시지에 기반한 메모리 회수 과정을 설명하는 도면이다.
도 20은 본 발명의 일 실시 예에 따른 컴팩션 시작 과정을 설명하는 도면이다.
도 21은 본 발명의 일 실시 예에 따른 이동 페이지 블록을 요청하는 인터페이스를 설명하는 도면이다.
도 22는 본 발명의 일 실시 예에 따른 프리 페이지 블록을 요청하는 인터페이스를 설명하는 도면이다.
도 23는 본 발명의 일 실시 예에 따른 컴팩션 완료 인터페이스를 설명하는 도면이다.
도 24는 본 발명의 일 실시 예에 따른 페이지 블록 별 페이지 블록 정보 관리를 설명하는 도면이다.
도 25는 본 발명의 일 실시 예에 따른 페이지 블록 내 프리 페이지 수에 기반한 페이지 블록 정렬을 설명하는 도면이다.
도 26은 본 발명의 일 실시 예에 따른 컴팩션 아이디 별 페이지 블록의 비트맵 정보를 설명하는 도면이다.
도 27은 본 발명의 일 실시 예에 따른 컴팩션 방법을 설명하는 도면이다.
이하, 첨부된 도면들을 참조하여 다양한 실시 예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 발명의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
본 발명의 실시 예에서는 소프트웨어 운영체제(OS)의 메모리 관리자의 성능을 향상시키기 위해서, 소프트웨어 메모리 관리자 기능에서 메모리 할당 및 해제 기능, 메모리 회수 기능, 메모리 컴팩트(comact) 기능의 일부를 하드웨어 기능으로 분리하여 분리된 기능을 동작하는 하드웨어 메모리 관리자 가속기를 제안한다.
하드웨어 메모리관리자 가속기와의 비교를 위하여 먼저 소프트웨어 기반으로 동작하는 메모리 관리자의 기능 및 동작에 대하여 설명한다. 소프트웨어를 기반으로 동작하는 범용의 운영체제(OS)의 메모리 관리자 기능은 크게 메모리 할당 및 해제 기능, 메모리 회수, 메모리 컴팩트(compact) 기능으로 구성된다.
-메모리 할당 및 해제 기능
메모리 할당 시 전체 메모리를 특정 크기(4Kbyte)로 나눠서 관리를 하며, 한 페이지의 크기는 특정 크기(4Kbyte)로 정해진다. 메모리의 전체 크기에 따라 전체 페이지 개수가 정해진다. 대표적인 범용 운영체제인 리눅스(Linux)에서의 메모리 할당 및 해제 방법은 버디 할당자(buddy allocator)를 사용한다.
버디 할당자는 할당할 수 있는 프리 페이지(free page)들을 연속된 사이즈 (2n, n은 0부터 10까지)에 따라서 각각 프리 리스트(free list)를 관리한다. N=0 이면 1 페이지, n=1 이면 2개의 연속된 페이지, n=2 이면 4개의 연속된 페이지들로 2n의 연속된 프리 페이지들을 각각의 리스트로 관리를 하고, 각 리스트에는 연속된 페이지의 첫 번째 페이지 프레임 번호들을 리스트에서 관리한다.
메모리 할당 요청 시 요청된 사이즈에 해당하는 프리 리스트에서 제일 첫 번째 프리 페이지를 즉시 할당한다. 요청된 사이즈의 리스트에 프리 페이지가 없을 경우에는 상위의 프리 리스트에서 프리 페이지를 선택하여 반으로 분할하여 요청된 사이즈만큼 할당을 하고, 나머지 프리 페이지는 해당 사이즈의 프리 리스트에 등록한다. 예를 들어서 할당 요청된 사이즈가 n=4 이면, 2n = 16의 연속된 페이지를 찾아서 할당해야 한다. 먼저 n=4인 프리 리스트에서 프리 페이지를 검색해서 프리 페이지가 있으면 리스트의 첫 번째 프리 페이지를 할당한다. 만약 n=4의 프리 리스트에 프리 페이지가 없으면, n=5, 6, 7….10의 순으로 프리 리스트에서 프리 페이지를 할당을 한다. 이때 요청된 n=4의 길이만큼 할당을 하고 나머지 프리 페이지들은 해당 사이즈의 프리 리스트로 이동한다.
메모리 해제 시 해제 요청된 메모리 페이지들을 해당 사이즈의 프리 리스트에 반환한다. 이때 반환된 프리 리스트에 연속된 페이지들이 있으면, 이를 합쳐서 상위의 프리 리스트로 이동하게 된다. 이렇게 더 이상 합칠 수 있는 페이지가 없을 때까지 검색을 한다.
-메모리 회수
대표적인 범용 운영체제인 리눅스에서의 메모리 회수 방법의 기본은 2nd chance 기법과 LRU(Least Recently Used) 리스트 이다. 도 1은 범용 운영체제에서 메모리 2nd chance 기법에 기반한 메모리 회수 방법을 설명하는 도면이다. 도 1을 참조하면, 2nd chance 기법은 메모리 회수 전에 2번의 기회를 주는 방식으로 사용 중인 메모리를 활성 리스트(Active List, 110)와 비활성 리스트(Inactive List, 130)로 나누어 메모리를 회수한다. 메모리 관리자는 페이지 접근이 생길 때 해당 페이지를 활성 리스트(Active List)에 등록하고, 메모리 회수 동작이 수행될 때마다 비활성 리스트(Inactive List)에 등록하여, 비활성 리스트(Inactive List)에 등록된 페이지에 대해서 실제 메모리 회수가 되도록 하는 방식이다.
도 2는 범용 운영체제에서 LRU 리스트에 기반하여 메모리를 회수하는 방법을 설명하는 도면이다. 도 2를 참조하면, LRU(Least Recently Used) 리스트는 가장 최근에 리스트에 등록된 순으로 리스트를 관리하여 리스트에서 페이지를 가져올 때는 가장 오래된 페이지가 회수되도록 선정되도록 한다. 이러한 회수 방식으로 인해 소프트웨어 기반 메모리 회수에서는 최근에 접근한 페이지는 회수되지 않고, 접근한지 오래된 페이지 순으로 회수 대상이 되도록 설정되었다.
-메모리 컴팩션(memory compaction)
도 3은범용 운영체제에서 메모리 컴팩션 동작을 설명하는 도면이다. 소프트웨어 기반으로 동작하는 범용 운영체제인 리눅스에서 연속된 메모리 요청에 대해 메모리를 할당을 할 수 없을 때, 사용중인 메모리를 미사용 메모리로 이동을 하여 연속된 메모리 공간을 확보하는 메모리 컴팩션(compaction) 기능을 제공한다. 메모리 컴팩션 기능은 다음과 같이 동작한다.
메모리 컴팩션 동작은 메모리의 존(zone) 별로 수행한다. 존(Zone)은 1024개의 연속된 페이지들로 구성된 페이지 블록(page block)으로 나뉜다. 컴팩션은 페이지 블록(page block) 단위 별로 검색을 하여 이동 페이지(migration page) 리스트와 프리 페이지(free page) 리스트를 생성한다. 즉, 낮은 페이지 번호에서부터 이동(migration) 스캐너가 검색하여 이동 대상이 되는 사용 중인 페이지를 이동(migrate) 페이지 리스트로 만들고, 높은 페이지 번호에서부터 프리 스캐너가 검색하여 미사용 중인 프리 페이지를 검색하여 이동 스캐너가 검색한 이동(migrate) 페이지 리스트가 이동될 프리 페이지 리스트를 만든다. 32개씩 페이지를 컴팩션을 진행하면서, 요청된 길이의 연속된 페이지가 할당이 가능한지 확인을 하고 할당을 할 때까지 반복한다. 반복 중에 이동 스캐너와 프리 스캐너가 동일한 페이지를 검색을 하게 되어 만나게 되면, 컴팩션(compaction) 동작을 멈추게 된다.
상기와 같이 소프트웨어 운영체제에 기반하여 메모리를 관리하는 경우 아래와 같은 문제가 있다.
운영체제에서 메모리를 할당할 때는 요청된 오더(order) 사이즈만큼, 즉 2order 의 연속된 메모리 페이지를 할당을 한다. 따라서 각 페이지들은 2order단위로 할당이 되므로, 2nd 단위로 할당할 수 있는 메모리의 경계가 된다. 이때, 경계를 기준으로 프리 페이지들이 존재를 하게 되면, 상위 오더(order) 사이즈의 프리 메모리 페이지가 존재를 하지만, 할당 경계로 인해서 할당할 수 없는 문제가 발생을 하게 된다. 예를 들어 도 4와 같은 메모리 페이지들의 상태에서, 중간에 연속된 4개의 프리 메모리 페이지가 존재를 하게 된다.
하지만, 프리 리스트에 등록된 상태를 보면, order = 0에 2개, order = 1에 1개가 등록이 된다. 이때 order =2의 사이즈의 연속된 메모리 페이지를 할당 요청하게 되면 할당을 할 수 없는 단편화(fragmentation) 문제가 발생을 한다. 즉, 4개의 프리 페이지가 있음에도 불구하고, 2nd 단위로 할당할 수 있는 메모리의 경계가 결정되기 때문에 order =2의 연속된 메모리 페이지 할당을 처리할 수 없는 문제가 있다.
운영체제에 기반한 메모리 회수 방법의 문제점은 크게 두 가지가 있다. 첫 번째는 회수된 페이지로 인해 확보된 메모리의 크기를 보장할 수 없다. 앞서 설명한 것과 같이 한 페이지의 크기는 고정(4Kbyte)되어 있다. 만약 메모리에 필요한 크기가 16Kbyte라고 한다면 연속된 페이지 4개가 필요하다. 그러나 운영체제에서 메모리를 회수하는 기술은 페이지의 연속성에 대한 확인 없이 오래된 페이지 순으로 회수를 하므로 몇 개의 페이지를 회수해야 필요한 크기가 확보가 되는지 알 수 없다.
두 번째 문제는 이로 인한 회수 시간의 증가이다. 메모리 회수의 목적은 필요한 메모리를 확보하는 것이다. 이 목적을 달성하기 위해 종래 기술은 반복적으로 회수를 시도하여 원하는 메모리가 확보되었는지를 판단한다. 이로 인해 회수 요청이 증가하게 하고, 필요한 메모리 공간보다 더 많은 페이지를 회수하게 되는 문제점을 가지고 있다.
운영체제에 기반한 메모리 컴팩션(compaction) 방법의 문제는 다음과 같다. 요청된 오더(order) 사이즈의 연속된 메모리가 확보될 때까지 존(zone)의 낮은 페이지 프레임 번호의 사용 중인 메모리 페이지를 높은 페이지 프레임 번호의 프리 메모리 페이지로 이동을 하게 된다. 이때 연속된 페이지를 확보할 수 있는 상태를 확인하지 않고, 사용 중인 메모리 페이지를 앞에서부터 순차적으로 이동을 하게 되므로, 요청된 사이즈의 연속된 메모리 페이지를 확보하는데 이동하는 사용중인 메모리 페이지의 수가 많아지게 된다. 페이지 수가 많아질수록 그만큼 요청된 페이지를 할당하는데 시간이 많이 걸려서 이를 요청한 프로그램의 수행 속도가 늦어지는 문제가 발생을 한다.
본 발명의 실시 예는 소프트웨어로 동작하는 범용 운영체제의 메모리 관리자 기능을 가속화하는 하드웨어 메모리 관리자 가속기 및 이를 이용한 메모리 관리 방법을 제공한다.
도 5는 본 발명의 일 실시 예에 따른 하드웨어 메모리 관리자 가속기(530)를 설명하는 도면이다. 상기 하드웨어 메모리 관리자 가속기(530)는 소프트웨어 운영체제(OS, 510)와 연동할 수 있는 기능을 제공하는 인터페이스 모듈(531), 메모리 할당을 가속화 하는 메모리 할당 모듈(533), 메모리 회수 기능을 가속화 하는 메모리 회수 모듈(535), 메모리 컴팩션(compaction) 기능을 가속화 하는 메모리 컴팩션(compaction) 모듈(537)을 포함한다. 한편, 본 발명의 실시 예에서 하드웨어 메모리 관리자 가속기(530)가 반드시 메모리 할당 모듈(533), 메모리 회수 모듈(535) 및 메모리 컴팩션 모듈(537)을 포함해야만 하는 것은 아니다. 즉, 상기 모듈 중 일부 모듈을 선택적으로 포함할 수도 있다. 또한, 각 모듈이 각각의 동작을 제어하는 것이 아니라, 메모리 관리자 가속기(530)의 전반적인 동작을 제어하는 제어부가 상기 언급된 각 모듈의 동작을 제어할 수도 있다.
메모리 관리자 가속기(530)는 소프웨어로 동작하는 OS의 메모리 관리 기능과 인터페이스를 하여 상호 동작하는 하드웨어 구조로 동작한다. 메모리 관리자 가속기(530)는 4개의 기능 모듈을 포함할 수 있다. 메모리 가속기 인터페이스 모듈(Memory accelerator Interface Module, MIM, 531)은 소프트웨어 OS와 인터페이스를 제공한다. 메모리 할당 모듈(Memory Allocation Module, MAM, 533)은 메모리 할당 및 해제 기능을 가속시키는 기능을 수행한다. 메모리 회수 모듈(Memory Reclaim Module, MRM, 535)은 메모리가 부족 시 발생하는 회수 기능을 가속화한다. 메모리 컴팩션 모듈(Memory Compaction Module, MCM, 537)은 메모리 부족 시 연속된 공간의 메모리를 확보하기 위하여 사용 중인 메모리를 이동하는 컴팩션(compaction) 기능을 가속화 하는 모듈이다.
본 발명의 실시 예에 따라 상기 각 모듈의 동작에 대하여 더욱 자세히 설명한다. 본 발명의 일 실시 예에 따르면, 상기 메모리 할당 모듈(533)은
또한, 상기 메모리 할당 모듈(533)은 상기 소프트웨어 운영체제로부터 수신한 초기화 정보에 기반하여, 존(zone) 정보 및 페이지 정보를 생성하고, 소프트웨어 운영체제로부터 존 지시 정보 및 할당 요청 메모리 크기 정보를 포함하는 메모리 할당 요청 메시지를 수신하며, 상기 존 정보 및 페이지 정보에 기반하여 상기 존 지시 정보가 지시하는 존의 페이지에 대한 할당 지시자 비트 열 정보를 추출하고, 상기 할당 지시자 비트 열 정보에 기반하여 요청 받은 메모리를 할당하도록 제어할 수 있다.
또한, 상기 메모리 할당 모듈(533)은 상기 할당 지시자 비트 열 정보에 기반하여 상기 할당 요청 받은 메모리를 할당하기 위한 프리 페이지(free page)를 검색하도록 제어할 수 있다. 또한, 상기 메모리 할당 모듈(533)은 상기 할당 요청 메모리 크기 정보에 대응하는 검색 윈도우를 이용하여 상기 할당 지시자 비트 열 정보로부터 연속된 프리 페이지를 검색하도록 제어할 수 있다.
또한, 상기 메모리 할당 모듈(533)은 상기 검색 윈도우를 이용하여 상기 비트 열 전체를 검색하고, 상기 할당 지시자 비트 열의 검색 시작 위치를 1bit 이동하여 상기 할당 지시자 비트 열을 검색하도록 제어할 수 있다.
또한, 상기 메모리 할당 모듈은 상기 할당 요청 메모리 크기 이상의 프리 페이지가 검색되면 검색을 중지하도록 제어할 수 있다. 또한, 상기 메모리 할당 모듈은 상기 요청 받은 메모리가 할당된 페이지의 첫 번째 페이지 프레임 번호를 포함하는 페이지 할당 완료 메시지를 상기 소프트웨어 운영체제로 전송하도록 제어할 수 있다.
본 발명의 일 실시 예에 따르면 상기 메모리 회수 모듈(535)는 소프트웨어 운영체제로부터 회수 대상 페이지 요청 메시지를 수신하고, 회수 대상 존 및 LRU 정보에 기반하여 검색 정보를 생성하며, 상기 검색 정보로부터 가장 긴 연속된 페이지를 포함하는 회수 대상 페이지 그룹을 선택하고, 상기 회수 대상 페이지 그룹 정보를 포함하는 회수 대상 페이지 선정 완료 메시지를 상기 소프트웨어 운영 체제로 전송하도록 제어할 수 있다.
이때, 상기 회수 대상 페이지 요청 메시지는 존 정보(zone information) 및 LRU 지시자 정보(LRU indicator information)을 포함하고, 상기 검색 정보는 상기 존 정보 및 상기 LRU 지시자 정보에 대응하는 페이지들의 할당 정보를 지시하는 비트맵 정보를 포함할 수 있다.
또한, 상기 메모리 회수 모듈(535)은 제17항에 있어서, 상기 메모리 회수 모듈은,
상기 회수 대상 페이지 그룹의 선택을 위해, 32비트 열에 맞추어 회수 그룹 중 연속된 페이지들을 검색하는 제1 검색 단계 및 32비트 열에 맞추지 않고 연속된 페이지들을 검색하는 제2 검색 단계를 수행하도록 제어할 수 있다.
이때, 상기 회수 대상 페이지 그룹 정보는 회수 대상 페이지 그룹의 첫 번째 페이지 프레임 번호 및 상기 회수 대상 페이지 그룹의 할당 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따르면 상기 메모리 컴팩션 모듈(537)은 상기 소프트웨어 운영체제로부터 컴팩션 식별자 정보(compaction indicator)를 포함하는 컴팩션 요청 메시지를 수신하고, 상기 컴팩션 식별자 정보에 대응하는 페이지 블록 비트 열을 검색하며, 상기 페이지 블록의 프리 페이지 수에 기반하여 컴팩션 대상 페이지 블록을 선택하고, 선택된 페이지 블록 정보를 포함하는 컴팩션 완료 메시지를 상기 소프트웨어 운영체제로 전송하도록 제어할 수 있다.
또한, 상기 메모리 컴팩션 모듈(535)은 상기 컴팩션 요청 메시지가 이동 페이지 블록을 요청하는 메시지이면, 상기 페이지 블록 중 프리 페이지 수가 가장 적은 페이지 블록을 상기 컴팩션 대상 페이지 블록으로 선택하도록 제어할 수 있다.
상기 컴팩션 요청 메시지가 프리 페이지 블록을 요청하는 메시지이면, 상기 페이지 블록 중 프리 페이지 수가 가장 많은 페이지 블록을 상기 컴팩션 대상 페이지 블록으로 선택하도록 제어할 수 있다.
또한, 상기 상기 컴팩션 모듈은 선택할 페이지 블록이 프리 페이지 블록 또는 이동 페이지 블록으로 선택되었던 페이지 블록이면 다음 순위 페이지 블록을 컴팩션 대상 페이지 블록으로 선택하고, 선택할 페이지 블록이 프리 페이지 블록 또는 이동 페이지 블록으로 선택되지 않은 페이지 블록이면 컴팩션 대상 페이지 블록으로 선택하도록 제어할 수 있다. 이때, 상기 컴팩션 완료 메시지는 상기 컴팩션 대상 페이지 블록의 페이지 프레임 정보 및 상기 컴팩션 식별 정보를 포함할 수 있다.
상기 에서 메모리 할당 모듈(531), 메모리 회수 모듈(533) 및 메모리 컴팩션 모듈(535)는 설명의 편의를 위해 블록을 나누어 설명한 것으로 반드시 이에 한정되지는 않는다. 즉, 메모리 관리자 가속기(530)의 제어부가 상기 각 모듈의 동작을 수행할 수 있을 것이다. 또한, 상기 각 모듈의 동작 및 메모리 관리자 가속기의 동작은 상기에서 언급한 동작에 한정될 것이 아니라, 하기에서 도 6 내지 도 27을 통해 설명하는 각 실시 예의 동작을 제어할 수 있다.
메모리 관리자 가속기(530)는 하드웨어 구조 내에 가속화 동작을 수행하기 위해서 아래 표들에서 설명하는 데이터(data)를 관리한다. 표1은 존 정보(Zone_info)를 설명하는 표이다.
Member Variales Size Description
Zone_id 32 bits Zone identifier
0x01 : Normal zone
0x02 : Highmem zone
0x03 : DMA32 zone
0x04 ~ FFFF : Reserved
Zone_start_page_pfn 32 bits start page frame number of a zone
Zone_end_page_pfn 32 bits End page frame number of a zone
존 정보(zone_info)는 존(zone)의 종류를 표시하는 존 아이디(zone_id), 존(zone)의 경계를 나타내는 존 시작 페이지 정보(zone_start_page_pfn), 존 종료 페이지 정보(zone_end_page_pfn)로 구성된다. 상기 존 정보(Zone_info)는 하드웨어의 메모리 관리자 가속기(530)에서 메모리 관리를 위해 소프트웨어 OS에서 메모리 관리자 가속기(530)로 제공하는 새로운 정보이다.
표 2는 각 존(zone)을 구성하는 페이지들에 대한 정보를 관리하기 위한 하드웨어 페이지 정보를 설명하는 표이다.
Member Variables Size Description
Alloc_indicator 1 bit Indicates A page is allocated or free
0 : Free page
1 : Allocated page
Migrate_type 3 bits Indicate type of migrate of a page
0x00 : Reserved
0x01 : Migrate_unmovable
0x02 : Migrate_reclaimable
0x03 : Migrate_movable
0x04 : Migrate_pcptypes
0x05 : Migrate_reserve
0x06 ~ : Reserved
Lru_indicator 2 bits Indicate type of lru list a page belongs to
0x00 : not in any LRU list
0x01 : anonymous inactive LRU list
0x02 : file inactive LRU list
메모리 관리자 가속기(530)는 각 존(zone)을 구성하는 페이지(page)들에 대한 정보를 관리하기 위한 하드웨어 페이지 정보(hw_page_info)를 페이지 수만큼 생성하여 관리한다. 하드웨어 페이지 정보(Hw_page_info)는 페이지들의 할당 및 해제 상태를 표시하는 할당 지시자(alloc_indicator), 페이지의 이동 유형(migrate type)을 나타내는 이동 유형 정보(migrate_type)로 구성된다. 상기 하드웨어 페이지 정보(hw_page_info)는 하드웨어의 메모리 관리자 가속기(530)에서 메모리 관리를 위해 소프트웨어 OS에서 메모리 관리자 가속기(530)로 제공하는 새로운 정보이다.
표 3은 페이지 블록 관련 정보를 설명하는 표이다.
Member Variables Size Description
Num_free_pages 32 bits Total number of free pages in a page block
Migrate_type 3 bits Indicate type of migrate of a page
0x00 : Reserved
0x01 : Migrate_unmovable
0x02 : Migrate_reclaimable
0x03 : Migrate_movable
0x04 : Migrate_pcptypes
0x05 : Migrate_reserve
0x06 ~ : Reserved
Selected_indicator 1 bit Indicate if a page block is selected or not as migrated page block or freed paged block
0 : not selected
1 : selected
각 존(zone)은 페이지 블록(page block)으로 나누어 진다. 하나의 페이지 블록(page block)은 1024개의 연속된 페이지들이고, 페이지 블록 관련 정보(pb_info)의 데이터(data)로 구성된다. 페이지 블록 관련 정보(Pb_info)는 페이지 블록 내 할당되지 않은 프리 페이지(free page)들의 수를 나타내는 프리 페이지 수 정보(num_free_pages), 해당 페이지 블록의 이동 유형(migrate type)을 나타내는 이동 유형 정보(migrate_type)를 포함한다. 또한, 해당 페이지 블록이 선택이 되었는지를 나타내는 선택 지시자 정보(selected_indicator)를 추가적으로 포함할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 메모리 관리자 가속기 인터페이스 모듈과 소프트웨어 운영체제 사이의 신호 교환 정보를 설명하는 도면이다. 도 6을 참조하면, 각 인터페이스는 도 6에서 설명하는 바와 같이 메모리 가속기의 정해진 레지스터(register)를 이용해서 소프트웨어 OS와 하드웨어 가속기 사이에서 해당 정보를 교환할 수 있다.
하기에서는 본 발명의 실시 예에 따른 메모리 할당 모듈, 메모리 회수 모듈, 메모리 컴팩트 모듈 및 각 모듈 별 동작을 설명한다. 본 발명의 실시 예에서는 각 설명의 편의를 위하여 각 모듈의 동작을 나누어 설명하는 것으로, 각 모듈이 서로 다른 모듈과 연동하여 동작할 수 있음은 자명하다.
먼저 도 7 내지 도 12를 참조하여, 메모리 할당 모듈(Memory Allocation Module, MAM)에 대하여 설명한다. 메모리 할당 모듈은 소프트웨어 OS에서 메모리를 할당 및 해제할 때 그 기능을 가속화하는 모듈이다.
소프트웨어 OS와 MAM 사이의 인터페이스에 대하여 아래 도 7내지 도 9를 참조하여 설명한다. 도 7은 본 발명의 일 실시 예에 따른 존(zone) 초기화 인터페이스를 설명하는 도면이다. 도 7을 참조하면, 소프트웨어 OS(710)에서 메모리의 각 존(zone)을 초기화 할 때, 하드웨어 초기화 존 요청 메시지(HW_INIT_ZONE_REQ)를 메모리 관리자 가속기로 전송한다(701 단계). 하드웨어 초기화 존 요청 메시지를 수신한 MAM(730)은 하드웨어 초기화 존 요청 메시지(HW_INIT_ZONE_REQ)에 전달된 시작 페이지 정보(start_pfn), 종료 페이지 정보(end_pfn), 존 아이디(zone_id)를 이용하여, 존 정보(zone_info)와 하드웨어 페이지 정보(hw_page_info)를 생성하고, 데이터 구조(data structre)들의 멤버 값들을 초기화 한다. MAM(730)는 초기화 동작을 완료하고, 하드웨어 존 초기화 완료 메시지(HW_INIT_ZONE_DONE)를 표시하여 동작의 완료를 소프트웨어 OS에 알려준다(705 단계).
도 8은 본 발명의 일 실시 예에 따른 메모리 할당 요청 인터페이스를 설명하는 도면이다. 도 8을 참조하면, 소프트웨어 OS(810)에서 메모리를 할당하는 과정에서 하드웨어 페이지 할당 요청 메시지(HW_ALLOC_PAGE_REQ)를 메모리 관리자 가속기의 MAM(830)에 전달하여 메모리 할당을 요청한다(801 단계). 이때 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id), 할당을 요청하는 사이즈를 나타내는 오더(order), 페이지의 이동 유형(migrate type)을 나타내는 이동 유형 정보(migrate_type)들이 포함된다. 이 정보를 이용하여 MAM(830)은 할당 요청 받은 메모리를 할당할 수 있다. MAM(830)은 비트맵 기반 페이지 할당 알고리즘을 이용하여 요청된 사이즈 2order 만큼 연속된 메모리를 할당할 수 있다. MAM(830)은 할당된 정보인 할당된 페이지의 첫 번째 페이지 프레임 번호를 소프트웨어 OS(810)로 하드웨어 페이지 할당 완료 메시지(HW_ALLOC_PAGE_DONE)를 이용하여 전달한다(805 단계).
도 9는 본 발명의 일 실시 예에 따른 메모리 해제 요청 인터페이스를 설명하는 도면이다. 도 9를 참조하면, 소프트웨어 OS(910)에서 사용하던 메모리를 해제하는 과정에서 하드웨어 프리 페이지 요청 메시지(HW_FREE_PAGE_REQ)를 메모리 관리자 가속기의 MAM(930)에 전달하여 메모리 해제를 요청한다(901 단계). 이때 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 해제될 메모리 페이지 번호인 프리 페이지 번호 정보(freed_pfn)들이 포함된다. MAM(930)은 이 정보를 이용하여 전달된 프리 페이지 번호 정보(freed_pfn)에 매핑된 하드웨어 페이지 정보(hw_page_info)의 할당 지시자(alloc_indicator)를 0으로 설정한다. 설정을 완료하고, MAM(930)은 하드웨어 프리 페이지 완료 메시지(HW_FREE_PAGE_DONE)를 이용하여 해제 완료를 소프트웨어 OS(910)에 알려준다(905 단계).
하기에서는 도 10 및 도 12를 참조하여 본 발명의 일 실시 예에 따른 메모리 할당 과정을 더욱 자세히 설명한다. 도 10은 본 발명의 일 실시 예에 따른 메모리 할당 과정을 설명하는 흐름도이고, 도 11은 본 발명의 일 실시 예에 따른 메모리 존의 메모리 페이지에 대한 하드웨어 페이지 정보를 설명하는 도면이고, 도 12는 본 발명의 일 실시 예에 따른 프리 페이지 검색 방법을 설명하는 도면이다.
도 10A를 참조하면, MAM은 소프트웨어 OS로부터 수신하는 하드웨어 초기화 존 요청 메시지(HW_INIT_ZONE_REQ)에 기반하여 초기화 과정을 수행할 수 있다(1010 단계). 1010과정은 도 7에서 설명한 바와 같다.
MAM은 소프트웨어 OS로부터 수신하는 하드웨어 할당 페이지 요청 메시지(HW_ALLOC_PAGE_REQ)에 기반하여 메모리 할당 과정을 수행할 수 있다(1020 단계). 1020 단계의 동작은 도 8에서 설명한 바와 같다.
MAM은 소프트웨어 OS로부터 수신하는 하드웨어 프리 페이지 요청 메시지(HW_FREE_PAGE_REQ)에 기반하여 메모리 해제 과정을 수행할 수 있다(1030 단계). 1030 단계의 동작은 도 9에서 설명한 바와 같다.
MAM은 상기 1010, 1020, 1030 단계의 과정을 통하여 메모리를 이용하는 전자 장치에서 초기화-메모리 할당-메모리 해제 과정을 수행할 수 있다.
도 10B를 참조하여, 메모리 할당 과정에 대하여 더욱 자세히 설명한다. 본 발명의 실시 예에 따르면 MAM은 비트맵(bitmap) 방식에 기반하여 페이지를 할당할 수 있다.
특정 존(zone)에 대한 정보는 도 11과 같이 구성될 수 있다. 도 11을 참조하면, 하나의 존(zone, 1100)은 복수의 페이지들로 구성될 수 있다. 각 페이지(예를 들어 1101)들은 하드웨어 페이지 정보(hw_page_info)의 정보(1110, 1111, 1113)에 의해서 페이지들의 상태가 관리될 수 있다. 각 페이지들이 할당 및 해제가 될 때 마다 해당 페이지의 하드웨어 페이지 정보(hw_page_info)의 할당 지시자 정보(alloc_indicator) 값이 1 (할당) 혹은 0(해제)으로 셋팅된다.
비트맵 기반 페이지 할당 알고리즘은 하드웨어 페이지 할당 요청 메시지(HW_ALLOC_PAGE_REQ)가 소프트웨어 OS에서 메모리 관리자 가속기의 MAM(memory allocation manager)으로 전달이 되면 시작된다(1021 단계). MAM은 소프트웨어 OS에서 전달받은 존 아이디(zone_id), 오더(order), 이동 유형(migrate_type)의 정보를 이용하여서 할당 과정을 수행할 수 있다. MAM은 하드웨어 페이지 할당 요청 메시지를 통해 전달받은 정보를 이용하여, 존 아이디(zone_id)의 존(zone)을 선택한다(1023 단계).
MAM은 선택된 존(zone)의 페이지들의 하드웨어 페이지 정보(hw_page_info)에서 할당 지시자 정보(alloc_indicator)의 비트 열을 추출한다(1025 단계). 즉, 각 페이지 정보에 있어서, 할당된 페이지의 할당 지시자 정보는 1, 프리 페이지 정보는 0으로 지시자를 설정할 수 있다. 상기 할당 지시자 정보에 기반하여 도 12의 1250과 같은 할당 지시자 정보의 비트 열을 추출할 수 있다.
MAM은 비트 열 추출 이후 프리 페이지 검색을 시작할 수 있다(1026 단계). 프리 페이지 검색 시 MAM은 요청된 2order 만큼 연속된 프리 페이지들을 찾아낼 수 있다. 프리 페이지 검색 방법은 추후 도 12를 참조하여 더욱 자세히 설명한다.
MAM은 프리 페이지 검색을 통하여, 소프트웨어 OS로부터 요청된 2order 만큼 연속된 프리 페이지들이 존재하면 검색된 프리 페이지를 할당한다(1027 단계). MAM은 소프트웨어 OS로 하드웨어 할당 페이지 완료 메시지(HW_ALLOC_PAGE_DONE)를 전송할 수 있다(1029 단계). MAM은 할당된 정보인 할당된 페이지의 첫 번째 페이지 프레임 번호를 소프트웨어 OS로 하드웨어 페이지 할당 완료 메시지(HW_ALLOC_PAGE_DONE)를 이용하여 전달할 수 있다.
선택된 존(zone)에서 추출된 비트 열에서 요청된 사이즈만큼의 프리 페이지를 찾는 방법은 다음과 같다. 도 12를 참조하면, MAM은 2order 길이의 검색 윈도우(searching window, 1210)를 이용하여서, 추출된 할당 지시자 정보 비트 열(1250)을 윈도우(window) 사이즈만큼 이동하면서 요청된 사이의 연속된 프리 페이지들을 찾을 수 있다. 전체 비트 열을 검색하는 반복 회수는 2order/2번 반복하고(1230), 매번 반복할 때마다 이전 시작 위치에서 1 bit씩 이동(shift)하여서 찾을 수 있다(1250). 검색 중 요청된 사이즈의 프리 페이지들을 찾으면, 검색을 멈춘다. 또한, 검색된 비트 열에 해당하는 페이지들의 하드웨어 페이지 정보(hw_page_info)의 할당 지시자 정보(alloc_indicator)를 1로 셋팅하여 할당되었음을 표시한다.
도 10c 및 도 10d는 본 발명의 일 실시 예에 따른 수신 메시지에 기반한 메모리 할당 과정을 설명하는 도면이다. 도 10c 및 도 10d의 1070 단계 - 1071 단계 -1073 단계 - 1075단계 - 1099단계는 도 10a의 1010 단계에 대응할 수 있다. 도 10c 및 도 10d의 1070 단계 - 1081 단계 - 1083 단계 - 1084 단계 - 1085 단계 - 1087 단계 - 1089 단계 - 1099 단계는 도 10a의 1020 단계에 대응할 수 있다. 도 10c 및 도 10d의 1070 단계 - 1091 단계 - 1093 단계 - 1095 단계 - 1099 단계는 도 10a의 1030 단계에 대응할 수 있다.
다음으로 도 13 내지 도 19를 참조하여, 메모리 회수 모듈(Memory Reclaim Module, MRM)에 대하여 설명한다. 메모리 회수 모듈 (Memory Reclaim Module, MRM)은 소프트웨어 OS에서 메모리를 회수할 때 그 기능을 가속화 하는 모듈이다. 도 13 내지 도 15를 참조하여 소프트웨어 OS와 MRM사이의 인터페이스에 대하여 설명한다.
도 13은 메모리 페이지가 LRU 리스트에 등록되는 인터페이스를 설명하는 도면이다. 도 13을 참조하면, MRM(1330)은 소프트웨어 OS에서 사용중인 메모리 페이지를 LRU(Least Recently Used) 리스트로 관리한다. 이때, 활성(active) LRU 리스트에서 비활성(inactive) LRU 리스트로 등록이 될 때, 소프트웨어 OS(1310)는 도면 13과 같은 인터페이스를 이용하여 MRM 모듈(1330)에 알려준다. 소프트웨어 OS(1310)는 MRM(1330)에 하드웨어 추가 LRU 요청 메시지(HW_ADD_LRU_REQ)를 전송한다(1301 단계). 하드웨어 추가 LRU 요청 메시지(HW_ADD_LRU_REQ)를 통해 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id), LRU 리스트의 종류는 타내는 LRU 지시자 정보(lru_indicator), 등록되는 메모리 페이지 프레임 번호인 페이지 프레임 번호 정보(pfn)들이 전달된다. MRM(1330)은 요청된 정보를 이용하여, 요청된 메모리 페이지의 하드웨어 페이지 정보(hw_page_info)의 LRU 지시자 정보(lru_indicator)를 요청된 LRU 지시자 정보(lru_indicator)로 변경하여, 해당 메모리 페이지가 요청된 LRU List에 등록하여 관리한다. MRM(1330)은 등록을 완료하고 하드웨어 추가 LRU 완료 메시지(HW_ADD_LRU_DONE)를 통해 요청 받은 동작을 완료하였음을 소프트웨어 OS(1310)에 알려준다(1305 단계).
도 14는 메모리 페이지가 LRU 리스트에서 삭제되는 인터페이스를 설명하는 도면이다. 도 14를 참조하면, 소프트웨어 OS(1410)는 메모리 페이지를 등록되어 있던 비활성(inactive) LRU 리스트에서 페이지를 삭제를 할 때, 도 14와 같은 인터페이스를 이용하여 MRM(1430)으로 알려준다. 소프트웨어 OS(1410)는 하드웨어 삭제 LRU 요청 메시지(HW_DEL_LRU_REQ)를 전송한다(1401 단계). 하드웨어 삭제 LRU 요청 메시지(HW_DEL_LRU_REQ)에 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id), LRU 리스트의 종류는 타내는 LRU 지시자 정보(lru_indicator), 등록되는 메모리 페이지 프레임 번호인 페이지 프레임 번호 정보(pfn)들이 전달된다.
MRM(1430)은 요청된 정보를 이용하여, 요청된 메모리 페이지의 하드웨어 페이지 정보(hw_page_info)의 LRU 지시자 정보(lru_indicator)를 요청된 LRU 지시자 정보(lru_indicator)로 변경하여, 해당 메모리 페이지가 요청된 LRU List에 등록(삭제 등록)이 되었음을 관리한다. MRM(1430)은 등록을 완료하고 하드웨어 LRU 삭제 완료 메시지(HW_DEL_LRU_DONE)를 통해 요청 받은 동작을 완료하였음을 소프트웨어 OS로 알려준다(1405 단계).
도 15는 회수 대상 후보군 페이지를 요청하는 인터페이스를 설명하는 도면이다. 도 15를 참조하여, 소프트웨어 OS(1510)에서 메모리를 회수(reclaim)할 때, 비활성(inactive) 리스트로부터 회수 대상 페이지를 선정하는 과정에서 회수 대상 후보 페이지 리스트를 요청하는 인터페이스를 설명한다.
소프트웨어 OS(1510)는 하드웨어 아이솔레이트 페이지 요청 메시지(HW_ISOLATE_PAGE_REQ)를 MRM(1530)으로 전송한다(1501 단계). 상기 하드웨어 아이솔레이트 페이지 요청 메시지(HW_ISOLATE_PAGE_REQ)는 회수 대상 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 검색할 LRU 리스트의 종류를 나타내는 LRU 지시자 정보(lru_indicator)를 포함한다. MRM(1530)은 메모리 가속기의 메모리 회수 모듈의 연속성을 고려하는 페이지 선정 알고리즘에 기반하여 회수 대상 후보 페이지 리스트를 선정한다. MRM(1530)은 선정된 회수 대상 후보 페이지 리스트를 하드웨어 아이솔레이트 페이지 완료 메시지(HW_ISOLATE_PAGE_DONE)을 이용하여 OS(1510)에 전달한다(1505 단계). 이때 전달되는 정보는 회수 대상 후보 페이지 리스트의 첫 번째 페이지 프레임 번호와 리스트의 비트맵 정보를 포함할 수 있다.
다음으로 도 16 내지 도 19를 참조하여, 본 발명의 일 실시 예인 메모리 회수 방법에 대하여 더욱 자세히 설명한다. 도 16은 본 발명의 일 실시 예에 따른 비활성화 LRU 리스트에 등록된 메모리 페이지를 설명하는 도면이다. 실시 예에서 메모리 회수 모듈은 페이지의 연속성을 고려하여 회수 대상 페이지를 선정한다. 도 19a는 본 발명의 일 실시 예에 따른 회수 대상 페이지 선정 방법을 설명하는 도면이다.
도 19a를 참조하면, 먼저 MRM은 소프트웨어 OS로부터 수신하는 요청 메시지에 기반하여 비활성 리스트를 관리한다(1910 단계). 파일 비활성화 리스트(file inactive list)와 익명의 비활성화 리스트(anonymous inactive list)를 포함하는 비활성 리스트는 도 16과 같다. MRM은 소프트웨어 OS에서 메모리 페이지가 비활성화(Inactive) LRU 리스트에 등록 및 삭제될 때, 하드웨어 추가 LRU 요청 메시지(HW_ADD_LRU_REQ)와 하드웨어 삭제 LRU 요청 메시지(HW_DEL_LRU_REQ)에 의해 리스트 관리를 위한 정보를 수신한다.
MRM은 수신한 정보를 해당 페이지의 하드웨어 페이지 정보(hw_page_info)의 LUR 지시자 정보(LRU_indicator)관리에 이용하여 파일 비활성화 리스트(file inactive list)와 익명의 비활성화 리스트(anonymous inactive list)에 등록 및 삭제 상태를 관리한다. LRU 지시자 정보(LRU_indicator)는 페이지가 속하는 리스트 유형을 설명한다. 지시자 정보는 페이지가 어떤 LRU 리스트에도 포함되지 않았음을 지시할 수 있고, 익명의 비활성화 리스트(anonymous inactive list)에 포함되어 있음을 지시할 수 있고, 파일 비활성화 리스트(file inactive list)에 포함되어 있음을 지시할 수도 있다. 여기서 파일 비활성화 리스트(file inactive list)는 파일에 매핑되어 사용되는 메모리 페이지의 리스트이고, 익명의 비활성화 리스트(anonymous inactive list)는 파일이 매핑되지 않은 메모리 페이지들의 리스트 이다.
MRM은 소프트웨어 OS로부터 소프트웨어 OS(1510)는 하드웨어 아이솔레이트 페이지 요청 메시지(HW_ISOLATE_PAGE_REQ)를 수신한다(1920 단계). 상기 하드웨어 아이솔레이트 페이지 요청 메시지(HW_ISOLATE_PAGE_REQ)는 회수 대상 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 검색할 LRU 리스트의 종류를 나타내는 LRU 지시자 정보(lru_indicator)를 포함할 수 있다.
MRM은 상기 수신한 존 아이디(zone) 및 LRU 지시자 정보(lru_indicator)에 기반하여 존(zone)에 대한 LRU 지시자 비트맵(lru_indicator bitmap)을 생성할 수 있다(1930 단계). 즉, 소프트웨어 OS로부터 수신한 하드웨어 아이솔레이트 페이지 요청 메시지(HW_ISOLATE_PAGE_REQ)가 지시하는 존 아이디(zone_id)의 LRU 지시자 정보(lru_indicator)가 지시하는 리스트에 포함된 페이지의 할당 정보를 비트맵 정보로 생성할 수 있다. 예를 들어, 도 17과 같이 비트맵 정보를 생성할 수 있다.
도 17은 본 발명의 일 실시 예에 따른 비트맵 생성 및 회수 그룹을 검색하는 방법을 설명하는 도면이다. 도 17을 참조하면, LRU 지시자 정보(lru_indicator)가 자 지시하는 페이지 리스트의 할당 여부에 따라 도 17과 같은 비트맵을 생성할 수 있다. 다음으로 생성된 비트맵 정보로부터 회수 그룹을 검색할 수 있다(1940 단계). MRM의 회수 대상 페이지를 선정하는 페이지들을 검색하는 방법은 2 단계로 동작할 수 있다. 1 단계에서는 32 bit Align에 맞추어서 32 이상의 연속된 페이지들로 구성된 회수 그룹(Reclaim group, RGi)들을 찾고, 그 중 가장 긴 연속된 페이지들의 그룹을 우선적으로 할당한다. 2 단계에서는 32 bit align을 맞추지 않고 연속된 페이지들로 구성된 회수 그룹(Reclaim group, RGi)들을 찾아서, 가장 긴 페이지들의 그룹을 우선적으로 할당할 수 있다.
1 단계에서는 32bit Align을 맞추어서 시작하는 연속된 페이지들로 구성된 회수 그룹(Reclaim Group)을 찾는다. 검색된 각 그룹은 RGi={RG_STRi=Offsetn, RG_LENi=Lenn}의 값으로 표시된다. RG_STRi는 그룹이 시작하는 bit의 위치이고, RG_LENi는 연속된 페이지의 숫자를 표시한다. 1 단계에서 검색된 회수 그룹의 RG_STRi값은 32 bit에 align이 맞게 시작하는 비트 위치를 나타낸다. 즉 RG_STRi= 0, 32, 64, ….Etc 이다. Offsetn중에서 가장 긴 연속된 페이지들로 구성된 회수 그룹(reclaim Group)의 RG_STR의 값을 소프트웨어 OS로 할당하여 우선적으로 페이지가 회수 되도록 한다.
도 18은 본 발명의 일 실시 예에 따른 페이지 회수 그룹을 선정하기 위한 정렬 방법을 설명하는 도면이다. 도 18과 같이, MRM은 검색된 회수 그룹을 정렬할 수 있다. MRM은 회수 그룹을 우선 순위 별로 정렬할 수 있다. 우선 순위 별로 정렬 시 가장 긴 연속된 페이지들로 구성된 회수 그룹부터 차례대로 정렬할 수 있다.
상기와 같은 방법에 따라 회수 그룹을 검색하면, 우선 순위가 가장 높은 회수 그룹을 선택할 수 있다(1950 단계). 회수 그룹을 선택하면, 추가적인 회수 그룹 검색을 중지할 수 있다. 1 단계에서 회수 그룹이 선택되면 2 단계를 생략할 수도 있다.
만약 1 단계에서 선정된 회수 그룹(Reclaim group)들을 우선적으로 메모리 회수를 하여도, 회수(reclaim)를 위해 페이지 그룹 선정을 소프트웨어 OS로부터 요청 받으면 2 단계 검색을 수행할 수 있다. 2 단계 검색에서는 32 bit align을 고려하지 않고, 연속된 페이지들로 구성된 회수 그룹(Reclaim Group)을 검색을 한다. 2 단계에서는 1 단계에서 설명한 방법과 동일한 방법으로 회수 그룹(Reclaim group) 을 검색을 하고, 그 중에서 가장 긴 연속된 페이지들의 회수 그룹(Reclaim group)을 우선적으로 할당하여 메모리 회수가 되도록 할 수 있다.
상기와 같은 방법으로 회수 그룹을 선택하면, MRM은 하드웨어 아이솔레이트 페이지 완료 메시지(HW_ISOLATE_PAGE_DONE)을 이용하여 회수 그룹(회수 대상 후보 페이지 리스트) 선정이 완료되었음을 알리는 메시지를 소프트웨어 OS로 전송할 수 있다(1960 단계). 이때 전달되는 정보는 회수 대상 후보 페이지 리스트의 첫 번째 페이지 프레임 번호와 리스트의 비트맵 정보를 포함할 수 있다.
도 19b는 본 발명의 일 실시 예에 따른 수신 메시지에 기반한 메모리 회수 과정을 설명하는 도면이다. 도 19b를 참조하면, 1970 단계 - 1971 단계 - 1973 단계 - 1975 단계 및 1999 단계는 도 13에서 설명한 인터페이스에 따른 동작에 대응할 수 있다. 1970 단계 - 1981 단계 - 1983 단계 - 1985 단계 및 1999 단계는 도 14에서 설명한 인터페이스에 따른 동작에 대응할 수 있다. 1970 단계 - 1991 단계 - 1993 단계 - 1995 단계 - 1997 단계 - 1998 단계 및 1999 단계는 도 15의 인터페이스 및 도 16 내지 도 19a를 통해 설명한 과정에 대응할 수 있다.
다음으로 도 20 내지 도 27을 참조하여, 메모리 컴팩션 모듈(Memory Compaction Module, MCM)에 대하여 설명한다. 소프트웨어 OS에서 메모리 부족 시 메모리 공간 확보를 위해서 컴팩션(compaction)을 수행한다. 이때 그 동작을 가속화 시키는 모듈이 메모리 컴팩션 모듈(Memory Compaction Module, MCM) 이다. 도 20 내지 도 23을 참조하여, 소프트웨어 OS와 MCM 사이의 인터페이스에 대하여 설명한다.
도 20은 본 발명의 일 실시 예에 따른 컴팩션 시작 과정을 설명하는 도면이다. 도 20을 참조하면, 소프트웨어 OS(2010)에서 메모리 컴팩션(compaction) 동작을 시작할 때, 하드웨어 컴팩션 시작 메시지(HW_COMPACTION_START)를 이용하여 해당 컴팩션(Compaction) 시작을 MCM(2030)에 알려준다(2001 단계). 이때 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 컴팩션(compaction)을 구분하는 컴팩션 아이디(compaction_id)를 전달한다. 이를 전달받은 MCM(2030)은 컴팩션 아이디(compaction ID)에 대해, 요청된 존(zone)의 페이지 블록(page block) 수만큼의 비트맵(bitmap)을 생성한다. 초기값은 0으로 초기화 한다. 각 비트(bit)는 해당되는 페이지 블록(page block)이 해당 컴팩션 아이디(compaction_ID)에서 이동(migrate) 혹은 프리 페이지 블록(free page block)으로 할당이 되었는지를 표시한다.
도 21은 본 발명의 일 실시 예에 따른 이동 페이지 블록을 요청하는 인터페이스를 설명하는 도면이다. 도 21을 참조하면, 소프트웨어 OS(2110)에서 메모리 컴팩션(compaction) 동작 중 이동시킬 사용중인 메모리 페이지를 선정하기 위해서 메모리 관리자 가속기의 MCM(2130)에 하드웨어 페이지블록 이동 요청 메시지(HW_MIGRATE_PAGEBLOCK_REQ)를 이용하여 해당 페이지 블록을 할당 요청한다(2101 단계). 이때 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 컴팩션(compaction)의 종류를 나타내는 컴팩션 아이디(compaction_id)를 전달한다. 이를 전달받은 MCM(2130)은 요청된 존(zone)에서 고속 컴팩션 알고리즘에 의해 선정된 페이지 블록(page block)의 첫 번째 페이지 프레임 번호와 컴팩션 아이디(compaction_id)를 하드웨어 페이지블록 이동 완료 메시지(HW_MIGRATE_PAGEBLOCK_DONE)를 이용하여 소프트웨어 OS(2110)에 알려준다(2105 단계). MCM은 선정된 페이지 블록(page block)에 대해 요청된 컴팩션 아이디(compaction_ID)의 비트맵(bitmap)에서 해당 페이지 블록에 매핑된 비트(bit)를 1로 셋팅한다.
도 22는 본 발명의 일 실시 예에 따른 프리 페이지 블록을 요청하는 인터페이스를 설명하는 도면이다. 도 22를 참조하면, 소프트웨어 OS(2210)에서 메모리 컴팩션(compaction) 동작 중 앞서 선정된 페이지 블록(page block)에서 선정된 사용중인 페이지들이 이동하게 될 프리 페이지를 선정하기 위해서 메모리 관리자 가속기의 MCM(2230)에 하드웨어 프리 페이지 블록 요청 메시지(HW_FREE_PAGEBLOCK_REQ)를 이용하여 해당 페이지 블록을 할당 요청한다(2201 단계). 이때 전달되는 정보는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 컴팩션(compaction)의 종류를 나타내는 컴팩션 아이디(compaction_id)를 전달한다. 이를 전달받은 MCM(2230)은 요청된 존(zone)에서 고속 컴팩션(compaction) 알고리즘에 의해 선정된 페이지 블록(page block)의 첫 번째 페이지 프레임 번호와 커팩션 아이디(compaction_id)를 하드웨어 프리 페이지 블록 완료 메시지(HW_FREE_PAGEBLOCK_DONE)를 이용하여 소프트웨어 OS(2210)에 알려준다(2205 단계). 선정된 페이지 블록(page block)에 대해 요청된 컴팩션 아이디(compaction_ID)의 비트맵(bitmap)에서 해당 페이지 블록에 매핑된 비트(bit)를 1로 셋팅한다.
도 23는 본 발명의 일 실시 예에 따른 컴팩션 완료 인터페이스를 설명하는 도면이다. 도 23을 참조하면, 소프트웨어 OS(2310)에서 메모리 컴팩션(compaction) 동작이 완료가 되면, 하드웨어 컴팩션 종료 메시지(HW_COMPACTION_FINISH)를 MCM(2330)으로 전달한다. 이때 전달되는 정보는 컴팩션 아이디(compaction_id)이다. 해당 컴팩션 아이디(compation_id)의 비트맵 시퀀스(bitmap sequence)를 0으로 리셋한다.
하기에서는 도 24 내지 도 27을 참조하여 본 발명의 일 실시 에에 따른 메모리 컴팩션 모듈의 고속 컴팩션 방법에 대해 더욱 자세히 설명한다. 고속 컴팩션(compaction) 방법은 이동시킬 사용 중인 페이지를 선정하기 위한 페이지 블록 혹은 이동 선정된 사용 중인 페이지들이 이동하게 될 프리 페이지를 선정하기 위한 페이지 블록을 선정하기 위한 방법이다.
도 24는 본 발명의 일 실시 예에 따른 페이지 블록 별 페이지 블록 정보 관리를 설명하는 도면이다. 도 24를 참조하면, 한 개의 존(zone, 2410)은 N개의 페이지 블록(page block, 2420, 2421, 2423)으로 나누어진다. 한 개의 페이지 블록(page block)은 1024개의 연속된 페이지들로 구성된다. 각 페이지 블록은 페이지 블록 정보(pb_info, 2430, 2431, 2433)의 데이터 구조(data structure)로 관리된다. 페이지 블록 정보(Pb_info)에는 해당 블록 내의 프리 페이지의 수 (num_free_page), 이동 유형(migrate type) 정보(migrate_type)를 나타내는 멤버 변수로 구성된다.
페이지 블록 내에 페이지들이 할당 및 해제가 될 때 마다 프리 페이지의 수가 증가 혹은 감소를 한다. 그리고 페이지 블록의 프리 페이지의 수(num_free_page)에 의해서 페이지 블록들을 정렬을 한다. 또한 컴팩션 아이디(Compaction_id)별로 존(zone)의 페이지 블록(page block)들을 나타내는 비트맵(bitmap) 정보를 사용하여 관리하고, 각 비트(bit)는 하나의 페이지 블록(page block)에 매핑된다. 1은 이동(migrate) 혹은 프리 블록(free block)으로 할당이 되었음을 표시하고, 0은 할당이 안되었음을 표시한다.
도 25는 본 발명의 일 실시 예에 따른 페이지 블록 내 프리 페이지 수에 기반한 페이지 블록 정렬을 설명하는 도면이다. 도 25를 참조하면, 각 페이지 블록(page block)은 블록 내 존재하는 프리 페이지(free page)의 수에 의해서 정렬될 수 있다. 블록 내 존재하는 프리 페이지 수에 따라 페이지 블록(#100)은 가장 적은 프리 페이지 수를 가지고 있기 때문에 이동 대상 페이지 블록(2510)으로 선택될 수 있다. 또한, 페이지 블록(#79)은 가장 많은 프리 페이지 수를 가지고 있기 때문에 프리 페이지 블록(2530)으로 선택될 수 있다. 이와 같이, MCM은 페이지 블록 내 존재하는 프리 페이지 수에 따라 페이지 블록을 정렬할 수 있고, 프리 페이지 수가 적은 페이지 블록부터 이동 대상 페이지 블록으로 할당할 수 있으며, 프리 페이지 수가 많은 페이지 블록부터 프리 페이지 블록으로 할당할 수 있다.
도 26은 본 발명의 일 실시 예에 따른 컴팩션 아이디 별 페이지 블록의 selected_indicator 비트맵 정보를 설명하는 도면이다. MCM은 하드웨어 이동 페이지블록 요청 메시지(HW_MIGRATE_PAGEBLOCK_REQ)를 요청 받으면, 컴팩션 식별자(compaction ID) 별로 정렬된 블록 리스트 중에서 프리 페이지 수가 가장 많은 페이지 블록을 이동(migrate) 페이지 블록으로 선정하여, 해당 페이지 블록(page block) 이전에 할당되었는지를 체크한 뒤, 할당이 안되었으면, 선정된 블록을 할당한다. 이전에 선정이 되었던 블록이면, 다음 순위의 블록을 선정하여 할당한다. 하드웨어 이동 페이지 블록 완료 메시지(HW_MIGRATE_PAGEBLOCK_DONE)를 이용하여 선정된 블록의 첫 번째 페이지 프레임 번호를 소프트웨어 OS로 전달한다. 이때 선정된 페이지 블록에 매핑된 비트맵(bitmap)의 비트를 1로 셋팅하여 선정이 된 블록으로 표시할 수 있다. 따라서 도 26의 비트 열에서 이동 페이지 블록으로 선정된 페이지 블록의 비트는 1로 세팅되고, 선정되지 않은 페이지 블록의 비트는 0으로 셋팅될 수 있다.
MCM은 하드웨어 프리 페이지 블록 요청 메시지(HW_FREE_PAGEBLOCK_REQ)를 요청 받으면, 정렬된 블록 리스트 중에서 프리 페이지가 가장 작은 페이지 블록을 프리 페이지 블록으로 선정하여, 해당 페이지 블록(page block) 이전에 할당되었는지를 체크한 뒤, 할당이 안되었으면, 선정된 프리 페이지 블록을 할당한다. 이전에 선정이 되었던 블록이면, 다음 순위의 프리 페이지 블록을 선정하여 할당한다. MCM은 하드웨어 프리 페이지 블록 완료 메시지(HW_FREE_PAGEBLOCK_DONE)를 이용하여 선정된 블록의 첫 번째 페이지 프레임 번호를 소프트웨어 OS로 전달한다. 이때 선정된 페이지 블록에 매핑된 비트맵(bitmap)의 비트를 1로 셋팅하여 선정이 된 블록으로 표시할 수 있다. 따라서 도 26의 비트 열에서 프리 페이지 블록으로 선정된 페이지 블록의 비트는 1로 세팅되고, 선정되지 않은 페이지 블록의 비트는 0으로 셋팅될 수 있다.
도 27은 본 발명의 일 실시 예에 따른 컴팩션 방법을 설명하는 도면이다. 도 27을 참조하면, MCM은 소프트웨어 OS로부터 하드웨어 컴팩션 시작 메시지(HW_COMPACTION_START)를 수신할 수 있다(2761 단계). MCM은 상기 하드웨어 컴팩션 시작 메시지를 통해 수신하는 존 정보 및 컴팩션 아이디 정보에 기반하여 비트맵 정보를 생성할 수 있다(2763 단계). MCM은 존(zone)에 포함된 페이지 블록 수의 비트로 구성된 비트맵 정보를 생성할 수 있다. MCM은 비트맵에서 각 비트 값을 초기화 할 수 있다(2765 단계). MCM은 예를 들어 초기화 값으로 비트 값을 0으로 설정할 수 있다.
MCM은 소프트웨어 OS로부터 이동시킬 사용중인 메모리 페이지를 선정하기 위해서 하드웨어 페이지블록 이동 요청 메시지(HW_MIGRATE_PAGEBLOCK_REQ)를 수신할 수 있다(2771 단계). 상기 이동 요청 메시지는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 컴팩션(compaction)의 종류를 나타내는 컴팩션 아이디(compaction_id)를 포함한다. MCM은 이동 요청 메시지에 포함된 컴팩션 아이디에 대응하는 페이지 블록의 비트맵을 검색할 수 있다(2772 단계).
MCM은 이동 대상 페이지 블록을 검색할 수 있다(2773 단계). MCM은 컴팩션 아이디에 대응하는 페이지 블록 중 가장 적은 프리 페이지를 포함하는 페이지 블록을 검색할 수 있다. 또한, 도 25와 같이 MCM은 프리 페이지 수에 따라 페이지 블록을 정렬할 수도 있다.
MCM은 검색된 가장 적은 수의 프리 페이지를 포함하는 페이지 블록이 이동 페이지 또는 프리 페이지로 선택된 페이지 블록인지 판단할 수 있다(2774 단계). 검색된 페이지 블록이 이미 이동 페이지 블록 또는 프리 페이지 블록으로 선택되었던 페이지 블록이면, 2773 단계로 이동하여 다음 순위의 이동 페이지 블록을 선정한다. 검색된 페이지 블록이 이미 이동 페이지 블록 또는 프리 페이지 블록으로 선택된 페이지 블록이 아니면 2775 단계로 이동한다. 이동 페이지 블록 또는 프리 페이지 블록으로 이미 할당되었는지 여부는, 페이지 블록의 이동 유형을 지시하는 비트 정보에 따라 판단할 수 있다.
2775 단계에서 MCM은 선택된 페이지 블록의 비트 설정을 변경한다. 할당되지 않은 페이지 블록의 비트가 0으로 설정되어 있었다면, MCM은 페이지 블록의 이동 유형 비트 정보를 1로 설정할 수 있다. 2776 단계에서 MCM은 하드웨어 페이지 블록 이동 완료 메시지(HW_MIGRATE_PAGEBLOCK_DONE)를 이용하여 선택된 이동 페이지 블록 정보를 알려 줄 수 있다. 이동 페이지 블록 정보는 컴팩션 아이디와 선택된 이동 페이지 블록의 첫 번째 페이지 프레임 번호를 포함할 수 있다.
MCM은 소프트웨어 OS로부터 하드웨어 프리 페이지블록 요청 메시지(HW_FREE_PAGEBLOCK_REQ)를 수신할 수 있다(2781 단계). 상기 프리 페이지블록 요청 메시지는 존(zone)의 종류를 나타내는 존 아이디(zone_id)와 컴팩션(compaction)의 종류를 나타내는 컴팩션 아이디(compaction_id)를 포함한다. MCM은 프리 페이지블록 요청 메시지에 포함된 컴팩션 아이디에 대응하는 페이지 블록의 selected_indicator 비트맵을 검색할 수 있다(2782 단계).
MCM은 컴팩션 아이디에 대응하는 페이지 블록을 검색할 수 있다(2783 단계). MCM은 컴팩션 아이디에 대응하는 페이지 블록 중 가장 많은 프리 페이지를 포함하는 페이지 블록을 검색할 수 있다. 또한, 도 25와 같이 MCM은 프리 페이지 수에 따라 페이지 블록을 정렬할 수도 있다.
MCM은 검색된 가장 많은 수의 프리 페이지를 포함하는 페이지 블록이 이동 페이지 또는 프리 페이지로 선택된 페이지 블록인지 판단할 수 있다(2784 단계). 검색된 페이지 블록이 이미 이동 페이지 블록 또는 프리 페이지 블록으로 선택되었던 페이지 블록이면, 2783 단계로 이동하여 다음 순위의 프리 페이지 블록을 선정한다. 검색된 페이지 블록이 이미 이동 페이지 블록 또는 프리 페이지 블록으로 선택된 페이지 블록이 아니면 2785 단계로 이동한다. 이동 페이지 블록 또는 프리 페이지 블록으로 이미 할당되었는지 여부는, 페이지 블록의 이동 유형을 지시하는 비트 정보에 따라 판단할 수 있다.
2785 단계에서 MCM은 선택된 페이지 블록의 비트 설정을 변경한다. 할당되지 않은 페이지 블록의 비트가 0으로 설정되어 있었다면, MCM은 페이지 블록의 이동 유형 비트 정보를 1로 설정할 수 있다. 2786 단계에서 MCM은 하드웨어 프리 페이지 블록 완료 메시지(HW_FREE_PAGEBLOCK_DONE)를 이용하여 선택된 프리 페이지 블록 정보를 알려 줄 수 있다. 프리 페이지 블록 정보는 컴팩션 아이디와 선택된 이동 페이지 블록의 첫 번째 페이지 프레임 번호를 포함할 수 있다.
MCM은 소프트웨어 OS로부터 메모리 컴팩션(compaction) 동작이 완료가 되면, 하드웨어 컴팩션 종료 메시지(HW_COMPACTION_FINISH)를 수신한다(2791 단계). 메모리 컴팩션 종료 메시지는 컴팩션 아이디(compaction_id)에 대한 정보를 포함한다. MCM은 해당 컴팩션 아이디(compation_id)의 비트맵 시퀀스(bitmap sequence)를 0으로 리셋한다(2793 단계).
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (30)

  1. 하드웨어 기반 메모리 할당 장치의 메모리 할당 방법에 있어서,
    소프트웨어 운영체제로부터 존(zone) 식별자, 존 시작 페이지 정보, 존 종료 페이지 정보를 포함하는 초기화 정보를 수신하는 단계;
    상기 존 식별자, 상기 존 시작 페이지 정보, 상기 존 종료 페이지 정보에 기반하여, 존(zone) 정보를 생성하고 상기 존 정보의 각 페이지에 대한 할당 지시자와 이동 유형 지시자에 대한 정보를 포함하는 페이지 정보를 생성하는 단계;
    상기 소프트웨어 운영체제로부터 존 지시 정보, 할당 요청 메모리 크기 정보 및 이동 유형 정보를 포함하는 메모리 할당 요청 메시지를 수신하는 단계;
    상기 페이지 정보에 포함된 각 페이지의 상기 할당 지시자에 기반하여, 상기 존 지시 정보가 지시하는 존의 페이지에 대한 할당 지시자 비트 열 정보를 추출하는 단계;
    상기 할당 지시자 비트 열 정보의 첫번째 비트로부터 상기 할당 요청 메모리 크기 정보에 대응하는 검색 윈도우의 크기만큼 상기 검색 윈도우를 이동하면서 연속된 프리 페이지를 검색하는 단계;
    상기 첫번째 비트로부터 연속된 프리 페이지가 검색되지 않으면, 상기 할당 지시자 비트 열 정보의 두번째 비트로부터 상기 검색 윈도우의 크기만큼 상기 검색 윈도우를 이동하면서 연속된 프리 페이지를 검색하는 단계; 및
    연속된 프리 페이지가 검색되면, 검색된 연속된 프리 페이지에 기반하여 상기 메모리 할당 요청 메시지에 대응하는 메모리를 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 두번째 비트는 상기 첫번째 비트로부터 1bit 이동한 위치인 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 할당 요청 메모리 크기 정보 이상의 연속된 프리 페이지가 검색되면 상기 메모리 할당 요청 메시지를 위한 프리 페이지 검색을 중지하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 메모리가 할당된 페이지의 첫 번째 페이지 프레임 번호를 포함하는 페이지 할당 완료 메시지를 상기 소프트웨어 운영체제로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 하드웨어 기반 메모리 할당 장치에 있어서,
    소프트웨어 운영체제와 상기 하드웨어 기반 메모리 할당 장치를 연결하는 인터페이스 모듈; 및
    소프트웨어 운영체제로부터 존(zone) 식별자, 존 시작 페이지 정보, 존 종료 페이지 정보를 포함하는 초기화 정보를 수신하고, 상기 존 식별자, 상기 존 시작 페이지 정보, 상기 존 종료 페이지 정보에 기반하여, 존(zone) 정보를 생성하고 상기 존 정보의 각 페이지에 대한 할당 지시자와 이동 유형 지시자에 대한 정보를 포함하는 페이지 정보를 생성하며, 상기 소프트웨어 운영체제로부터 존 지시 정보, 할당 요청 메모리 크기 정보 및 이동 유형 정보를 포함하는 메모리 할당 요청 메시지를 수신하고, 상기 페이지 정보에 포함된 각 페이지의 상기 할당 지시자에 기반하여, 상기 존 지시 정보가 지시하는 존의 페이지에 대한 할당 지시자 비트 열 정보를 추출하며, 상기 할당 지시자 비트 열 정보의 첫번째 비트로부터 상기 할당 요청 메모리 크기 정보에 대응하는 검색 윈도우의 크기만큼 상기 검색 윈도우를 이동하면서 연속된 프리 페이지를 검색하고, 상기 첫번째 비트로부터 연속된 프리 페이지가 검색되지 않으면, 상기 할당 지시자 비트 열 정보의 두번째 비트로부터 상기 검색 윈도우의 크기만큼 상기 검색 윈도우를 이동하면서 연속된 프리 페이지를 검색하며, 연속된 프리 페이지가 검색되면, 검색된 연속된 프리 페이지에 기반하여 상기 메모리 할당 요청 메시지에 대응하는 메모리를 할당하도록 제어하는 메모리 할당 모듈을 포함하는 것을 특징으로 하는 장치.
  8. 삭제
  9. 삭제
  10. 제7항에 있어서, 상기 두번째 비트는 상기 첫번째 비트로부터 1bit 이동한 위치인 것을 특징으로 하는 장치.
  11. 제7항에 있어서, 상기 할당 요청 메모리 크기 정보 이상의 연속된 프리 페이지가 검색되면 상기 메모리 할당 요청 메시지를 위한 프리 페이지 검색을 중지하는 것을 특징으로 하는 장치.
  12. 제7항에 있어서, 상기 메모리 할당 모듈은,
    상기 메모리가 할당된 페이지의 첫 번째 페이지 프레임 번호를 포함하는 페이지 할당 완료 메시지를 상기 소프트웨어 운영체제로 전송하도록 제어하는 것을 특징으로 하는 장치.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020140041673A 2014-04-08 2014-04-08 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 KR102225525B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140041673A KR102225525B1 (ko) 2014-04-08 2014-04-08 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법
US14/681,469 US10565100B2 (en) 2014-04-08 2015-04-08 Hardware-based memory management apparatus and memory management method thereof
EP15162769.2A EP2930625A3 (en) 2014-04-08 2015-04-08 Hardware-based memory management apparatus and memory management method thereof
PCT/KR2015/003511 WO2015156596A1 (en) 2014-04-08 2015-04-08 Hardware-based memory management apparatus and memory management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140041673A KR102225525B1 (ko) 2014-04-08 2014-04-08 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20150116606A KR20150116606A (ko) 2015-10-16
KR102225525B1 true KR102225525B1 (ko) 2021-03-09

Family

ID=52875552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140041673A KR102225525B1 (ko) 2014-04-08 2014-04-08 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법

Country Status (4)

Country Link
US (1) US10565100B2 (ko)
EP (1) EP2930625A3 (ko)
KR (1) KR102225525B1 (ko)
WO (1) WO2015156596A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10114638B2 (en) * 2014-12-15 2018-10-30 Cisco Technology, Inc. Command message generation and execution using a machine code-instruction
US9824030B2 (en) * 2015-10-30 2017-11-21 International Business Machines Corporation Adjusting active cache size based on cache usage
US10372334B2 (en) * 2016-02-11 2019-08-06 International Business Machines Corporation Reclaiming free space in a storage system
US20170322736A1 (en) * 2016-05-09 2017-11-09 Qualcomm Innovation Center, Inc. Reorder active pages to improve swap performance
US10528476B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US10540295B2 (en) 2017-06-21 2020-01-21 International Business Machines Corporation Processing cache miss rates to determine memory space to add to an active cache to reduce a cache miss rate for the active cache
CN107729146A (zh) * 2017-10-11 2018-02-23 晶晨半导体(上海)股份有限公司 一种内存释放方法
US20200034244A1 (en) * 2018-07-26 2020-01-30 EMC IP Holding Company LLC Detecting server pages within backups
CN110727606A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727607B (zh) * 2019-09-27 2022-08-12 Oppo广东移动通信有限公司 内存回收方法、装置以及电子设备
KR20230064849A (ko) 2021-11-04 2023-05-11 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN116775506B (zh) * 2023-08-22 2023-12-05 腾讯科技(深圳)有限公司 内存回收方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446182B1 (en) * 1998-12-28 2002-09-03 Bull Sa Method for a memory organization by physical zones in a computerized or data processing machine or arrangement and the computerized or data processing machine or arrangement for using the method
US7721052B2 (en) 2006-09-29 2010-05-18 Hitachi, Ltd. System and method of reducing power consumption of a main memory
US20130254512A1 (en) 2012-03-23 2013-09-26 Kabushiki Kaisha Toshiba Memory management method and information processing device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100711738B1 (ko) 2005-02-15 2007-04-25 삼성전자주식회사 비트맵 기반 자동 재전송 요구 엔진 및 그것의 제어 방법
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US7636829B2 (en) * 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US7802062B2 (en) * 2007-09-28 2010-09-21 Microsoft Corporation Non-blocking variable size recyclable buffer management
WO2012161659A1 (en) * 2011-05-24 2012-11-29 Agency For Science, Technology And Research A memory storage device, and a related zone-based block management and mapping method
US9170859B2 (en) 2012-06-07 2015-10-27 Apple Inc. Targeted memory pressure event notifications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446182B1 (en) * 1998-12-28 2002-09-03 Bull Sa Method for a memory organization by physical zones in a computerized or data processing machine or arrangement and the computerized or data processing machine or arrangement for using the method
US7721052B2 (en) 2006-09-29 2010-05-18 Hitachi, Ltd. System and method of reducing power consumption of a main memory
US20130254512A1 (en) 2012-03-23 2013-09-26 Kabushiki Kaisha Toshiba Memory management method and information processing device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
P. Daniel Bovert, et al., "Understanding the Linux Kernel, Third Edition Chapter 1.2~1.5, 8.1", O’Reilly Media, Inc., 2005.11.*

Also Published As

Publication number Publication date
US10565100B2 (en) 2020-02-18
EP2930625A2 (en) 2015-10-14
KR20150116606A (ko) 2015-10-16
EP2930625A3 (en) 2016-01-27
WO2015156596A1 (en) 2015-10-15
US20150286564A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
KR102225525B1 (ko) 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법
CN111399762B (zh) 数据存储方法、装置及存储系统
US10331641B2 (en) Hash database configuration method and apparatus
US7802070B2 (en) Approach for de-fragmenting physical memory by grouping kernel pages together based on large pages
CN106326292B (zh) 数据结构和文件聚合、读取方法及装置
CN110209490B (zh) 一种内存管理方法及相关设备
EP2863310A1 (en) Data processing method and apparatus, and shared storage device
WO2014127684A1 (zh) 内存回收方法及装置
CN108121813B (zh) 数据管理方法、装置、系统、存储介质及电子设备
US9357007B2 (en) Controlling storing of data
CN108733312B (zh) 存储管理方法和设备
KR102402780B1 (ko) 메모리 관리 방법 및 장치
CN102282545B (zh) 存储系统
CN104778252A (zh) 索引的存储方法和装置
CN107430546B (zh) 一种文件更新方法及存储设备
US11055184B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
US10877881B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations
US10949340B2 (en) Block mapping systems and methods for storage device
CN112347036B (zh) 一种云存储系统的云间迁移方法及装置
CN110502480B (zh) 分布式存储数据检索方法、系统、装置及可读存储介质
CN109977121B (zh) 一种大数据快速存储系统
CN109597683B (zh) 内存管理方法、装置、设备及存储介质
CN106708831B (zh) 一种fat镜像文件处理的方法及装置
US10606879B1 (en) Indexing fingerprints
CN111125011A (zh) 一种文件处理方法、系统及相关设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant