[go: up one dir, main page]

KR102026877B1 - 메모리 관리 유닛 및 그 동작 방법 - Google Patents

메모리 관리 유닛 및 그 동작 방법 Download PDF

Info

Publication number
KR102026877B1
KR102026877B1 KR1020150085267A KR20150085267A KR102026877B1 KR 102026877 B1 KR102026877 B1 KR 102026877B1 KR 1020150085267 A KR1020150085267 A KR 1020150085267A KR 20150085267 A KR20150085267 A KR 20150085267A KR 102026877 B1 KR102026877 B1 KR 102026877B1
Authority
KR
South Korea
Prior art keywords
page
core
virtual
page table
meta
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020150085267A
Other languages
English (en)
Other versions
KR20160148333A (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 KR1020150085267A priority Critical patent/KR102026877B1/ko
Priority to US15/178,184 priority patent/US20160371196A1/en
Publication of KR20160148333A publication Critical patent/KR20160148333A/ko
Application granted granted Critical
Publication of KR102026877B1 publication Critical patent/KR102026877B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

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)

Abstract

복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛은, 각 코어들에 대응하는 복수의 TLB들, 각 코어들 및 각 TLB에 대응하며 대응하는 TLB에 동기화되는 복수의 페이지 테이블들 및 가상 페이지-물리 페이지 매핑 정보들을 포함하는 메타 페이지를 포함한다. 복수의 페이지 테이블 중 어느 하나는 메인 페이지 테이블이고, 메타 페이지는 가상 페이지-물리 페이지 매핑이 복수의 TLB에 저장되었는지의 여부를 나타내는 공유 비트 필드를 포함한다.

Description

메모리 관리 유닛 및 그 동작 방법 {MEMORY MANAGEMENT UNIT AND OPERATING METHOD THEREOF}
본 발명은 메모리 관리 유닛 및 그 동작 방법에 관한 것으로서, 보다 구체적으로는 가상 메모리를 사용하는 멀티 코어 프로세서에 있어서 하드웨어 상에서 운영체제가 제공하는 계층적 메모리(hierarchical memory)의 페이지 회수 비용을 절감할 수 있는 메모리 관리 유닛에 관한 것이다.
일반적인 프로세서 구조는 다계층의 메모리 구조를 이용하여 큰 용량와 작은 접근 지연시간을 제공하고 있다. 도 1에 도시된 바와 같이, 프로세서(10)가 사용하는 메모리 계층 구조는 L1 캐쉬(20), L2 캐쉬(30), L3 캐쉬(40), 메모리(50), 디스크(SWAP area; 60) 등을 포함할 수 있다. 일례로 서버, PC 시장에서 널리 사용되는 인텔의 프로세서들은 프로세서 코어에 포함되어 있는 L1, L2 캐쉬(20, 30)와 프로세서 내부에 존재하는 L3 캐쉬(40), 프로세서 외부에 존재하는 RAM과 같은 메모리(50), 그리고 데이터의 영속성을 제공하는 디스크(60) 등을 포함할 수 있다. 디스크(60) 혹은 메모리(50)로부터의 데이터의 읽기 작업은 프로세서(10) 혹은 운영체제/가상머신 모니터와 같은 시스템 소프트웨어에 의해서 제어될 수 있다. 이때 일반적으로 메모리(50)로부터 프로세서(10) 내의 캐쉬들(20, 30, 40)까지는 하드웨어에 의해서 제어되고, 디스크(60)로부터 메모리(50)까지의 데이터 전달은 시스템 소프트웨어에 의해서 제어되고 있다.
이때 가상 메모리를 지원하는 종래의 운영체제들은 응용 프로그램이 요구하는 메모리가 시스템에 존재하는 메모리보다 큰 메모리의 부족(Memory Pressure) 상황을 대비하여, 메모리 계층에서 바로 하위에 존재하는 디스크(60)와 같은 블록 장치를 SWAP area로 정의하고, 메모리(50) 내 일부 영역을 victim으로 선정하여 victim 내의 존재하는 데이터를 하부 계층의 SWAP area에 복사 및 제거(eviction)하여 메모리(50) 내 해당 영역을 새로운 기억용량으로 할당하는 SWAP 메커니즘을 제공하고 있다. 또한 SWAP area로 복사된 데이터에 대한 접근은 다시금 메모리(50)로부터 victim을 선정하여 victim 내의 데이터를 새로운 SWAP area로 복사 및 제거한 후 SWAP area로부터 이전에 evict된 데이터를 가져오게 된다. 이와 같은 방법을 제공하는 SWAP 장치를 시스템 소프트웨어 수준에서 제공함으로써, 물리 시스템에 설치되어 있는 메모리(50)의 기억용량보다 더욱 큰 메모리를 요구하는 응용을 수행할 수 있다.
변환 색인 버퍼(Translation Lookaside Buffer, TLB)는 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시로서, 약칭은 TLB이다. 일반적인 데스크탑 및 서버용 프로세서는 하나 또는 그 이상의 TLB를 메모리 관리 하드웨어에 가지고 있다. 페이지 단위나 세그먼트 단위로 사용하는 가상 메모리를 사용하는 일반적인 하드웨어는 TLB를 사용한다. 프로세서(10)는 1차적으로 TLB에 접근하여 원하는 페이지가 존재하는지 탐색하고, TLB에 존재하지 않을 경우 메모리 관리 유닛(Memory Management Unit; MMU)의 페이지 테이블을 참조한다. 도 2는 위와 같은 메모리 계층구조에서 페이지 테이블과 변환 색인 버퍼의 기능을 자세히 설명하기 위한 도면이다.
프로세서(10)에서 가상 메모리를 이용하는 경우, 응용 프로그램이 가상 주소(110)에 저장된 데이터를 읽어 들이기 위해 해당 주소에 접근 시, 프로세서(10)는 도 2에서 나타난 바와 같이 변환 색인 버퍼(Translation Lookaside Buffer; 130)를 참조하여 요구한 가상 주소에(110) 대한 물리 주소(170)로의 매핑이 있는지 확인한다(S101). 가상 주소(110)는 가상 페이지 번호(Virtual Page #) 및 오프셋 값(Offset)을 포함하고, 물리 주소(170)는 물리 페이지 번호(Physical Page #) 및 오프셋 값(Offset)을 포함한다. 변환 색인 버퍼(130)는 가상 페이지 번호(VPN)와 물리 페이지 번호(PPN) 사이의 매핑 정보가 기록된 복수의 매핑 엔트리들을 포함한다. 이때 변환 색인 버퍼(130) 내에 해당 매핑 엔트리를 찾으면 프로세서(10)는 해당 매핑 엔트리의 정보를 통해, 물리 주소(170)로 접근할 수 있다(S103). 이로써 실제 물리 메모리(190) 내의 데이터에 접근할 수 있다(S110).
해당 가상 메모리 주소(110)에 대한 매핑 정보가 변환 색인 버퍼(130) 내에 존재하지 않는 경우, 프로세서(10)는 페이지 테이블(150)을 참조한다(S105). 페이지 테이블(150)은 복수의 페이지 테이블 엔트리(PTE)들을 포함하여 가상 페이지 번호와 물리 페이지 번호 간의 매핑 정보를 포함한다. 프로세서(10)가 페이지 테이블(150)을 참조하여 매핑 정보를 찾은 경우, 해당 물리 주소(170)에 접근하고(S107), 가상 주소(110)와 물리 주소(170)간의 매핑 정보를 변환 색인 버퍼(130)에 추가하게 된다. 하지만 이때 마찬가지로 페이지 테이블(150)에도 요구된 가상 주소(110)에 대한 매핑이 없다면 운영체제에게 페이지 참조 실패를 알리는 예외를 발생시켜서 해당 주소에 대한 매핑을 추가하도록 수행하게 된다. 또한 운영체제는 앞서 언급한 메모리 부족 (Memory Pressure) 상황에서는 회수할 페이지(victim)을 선택하여 페이지 테이블(150)에 존재하는 매핑 정보를 제거 후 변환 색인 버퍼(130) 에 존재하는 매핑 제거를 프로세서에게 요청하게 된다.
일반적인 프로세서는 복수의 코어들을 포함하는 멀티 코어를 지원하고 있으며 이러한 시스템에 다수의 쓰레드를 사용하는 응용 프로그램들은 하나의 동일한 주소 공간을 사용하기 위해서 페이지 테이블을 공유하게 된다. 이렇게 공유하는 페이지 테이블은 각각의 쓰레드가 프로세서에서 동작할 때 메모리 접근에 따른 TLB 엔트리를 페이지 테이블을 통해서 가져오게 되고, 그 결과 하나의 페이지 테이블 엔트리는 다수의 프로세서 코어의 TLB에 복사본으로서 존재하게 된다. 도 3은 복수의 코어를 포함하는 프로세서에서 가상 메모리 접근시 변환 색인 버퍼와 페이지 테이블을 이용하는 방법을 설명하기 위한 도면이다.
도 3을 참조하면, 프로세서는 제 1 코어(200) 및 제 2 코어(201)를 포함한다. 도시의 편의를 위해 프로세서의 도시는 생략하였다. 또한, 제 1 코어(200) 및 제 2 코어(201)는 각각 대응하는 제 1 TLB(210) 및 제 2 TLB(211)를 참조할 수 있다. 한편, 제 1 코어(200) 및 제 2 코어(201)는 하나의 페이지 테이블(230)을 공유하게 된다. 도 3에 도시된 제 1 및 제 2 TLB(210, 211)는 가상 페이지 번호(VPN), 접근 제어(AC) 및 물리 페이지 번호(PPN)의 세 가지 필드를 포함한다. 본 명세서에서, TLB 내 접근 제어(AC) 필드 내 자료에 대한 자세한 도시는 생략하였다. 도 3을 참조하면, 두 개의 TLB(210, 211) 및 페이지 테이블(230)에 의해 가상 페이지 번호(VPN)와 물리 페이지 번호(PPN)가 일대일로 매칭됨을 알 수 있다.
도 3은 복수의 코어(200, 201)를 포함하는 프로세서에서 두 개의 코어(200, 201)가 동일한 가상 페이지 번호 0x0에 해당하는 가상주소에 접근함에 따라서 두 TLB 모두에 해당 주소에 대한 TLB 엔트리가 존재함으로 보여준다. 즉, 제 1 TLB(210)에 포함된 네 개의 매칭 엔트리 중 네 번째 가상 페이지 번호 0x0은 제 2 TLB(211)에서도 네 번째 매칭 엔트리로 존재한다. 또한 가상 페이지 번호 0x0는 페이지 테이블 내에서 8번째 매칭 엔트리로 존재한다. 나머지 6개의 매칭 엔트리, 즉 가상 페이지 번호 0x4, 0x2, 0x1, 0x8, 0x6, 0x5는 각각 제 1 TLB(210) 또는 제 2 TLB(211) 둘 중 하나에만 포함된다. 이때 공통으로 존재하는 가상 페이지 번호 0x0에 대한 TLB 매칭 엔트리를 제거하기 위해서는, 해당 주소에 접근이 가능한 모든 코어에서 해당 주소를 위한 TLB 엔트리를 제거해야 한다. 도 3의 도시에서는 2개의 코어(200, 201)를 포함하는 프로세서가 도시되어 있으나, 네개 또는 그 이상의 코어들을 포함하는 프로세서에서 여러 TLB에 공통으로 포함되는 매칭 엔트리가 존재하는 경우, TLB 엔트리 제거 횟수는 더욱 늘어날 수 있다.
이러한 TLB 일관성은 운영체제 혹은 시스템 소프트웨어에 의해서 관리되며, 일반적으로 페이지 테이블 엔트리의 변경 혹은 삭제를 수행시 대부분의 운영체제들은 인터프로세서 인터럽트(Inter-Processor Interrupt; IPI) 방법을 이용한다. 이러한 TLB 삭제를 위한 IPI는 모든 코어에 대한 IPI 요청의 acknowledge의 확인 후 프로세서의 동작을 재개하는 블록킹 오퍼레이션(blocking operation)을 포함하므로 비용이 비싸며, 리눅스와 같은 운영체제는 이와 같은 가상 주소 공간의 변경에 대한 동기화가 되어야 하므로 그 수행이 직렬화(serialization)된다. 이로 인해서 다수의 쓰레드가 현재 주 메모리로부터 evict된 페이지에 대한 접근을 수행할 경우 시스템의 처리량이 낮아지는 문제점을 나타내게 된다.
이와 같이 메모리 부족 상황에서 운영체제는 하나의 페이지를 victim으로 선정하여 해당 내용을 하위 계층을 메모리로 복사하고 이에 대한 매핑을 페이지 테이블로부터 삭제하며, 마지막으로 모든 코어에 잠재적으로 존재할 수 있는 TLB 엔트리를 삭제하기 위해서 IPI를 사용하게 된다. 하지만 이미 존재하는 페이지 회수 방법 및 정책은 단순히 요구 순서 혹은 최근 페이지 접근에 대한 필터링 등을 이용하고 있기 때문에 멀티 코어와 같은 컴퓨터 구조에서 싱글 코어 컴퓨터 구조에 비하여 회수 비용이 크게 증가하는 문제점을 갖는다.
본 발명의 일 실시예는 페이지 회수 비용을 절감할 수 있는 메모리 관리 유닛 및 그 동작 방법을 제공한다.
본 발명의 실시예에 따라, 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛(Memory Management Unit; MMU)은, 상기 각 코어들에 대응하는 복수의 변환 색인 버퍼(translation lookaside buffer; TLB)들; 상기 각 코어들 및 상기 각 TLB에 대응하며, 대응하는 TLB에 동기화되는 복수의 페이지 테이블들; 및 상기 복수의 페이지 테이블들에 포함되는 가상 페이지-물리 페이지 매핑 정보들을 포함하는 메타 페이지를 포함한다. 여기서, 상기 복수의 페이지 테이블 중 어느 하나는 메인 페이지 테이블이고, 상기 메타 페이지는 가상 페이지-물리 페이지 매핑이 복수의 TLB에 저장되었는지의 여부를 나타내는 공유 비트 필드를 포함한다.
일 실시예에서, 상기 복수의 페이지 테이블들은 각 엔트리가 유효한지 여부를 나타내는 엔트리 유효 필드를 포함하고, 상기 복수의 코어들 중 어느 하나의 코어가 신규 가상 페이지에 접근하고자 시도하는 경우: 상기 어느 하나의 코어에 대응하는 페이지 테이블이 메인 페이지 테이블인 경우에, 상기 어느 하나의 코어에 대응하는 페이지 테이블의 엔트리에 가상 페이지-물리 페이지 맵핑 정보가 등록되고, 상기 엔트리에 대응하는 엔트리 유효 필드의 비트가 유효 비트로 갱신될 수 있다.
일 실시예에서, 상기 복수의 코어들 중 어느 하나의 코어가 신규 가상 페이지에 접근하고자 시도하는 경우: 상기 어느 하나의 코어에 대응하는 페이지 테이블이 메인 페이지 테이블이 아닌 경우에, 상기 어느 하나의 코어에 대응하는 페이지 테이블 및 상기 메인 페이지 테이블의 엔트리들에 가상 페이지-물리 페이지 맵핑 정보가 등록되고, 상기 어느 하나의 코어에 대응하는 페이지 테이블에 등록된 가상 페이지-물리 페이지 맵핑 정보의 엔트리에 대한 엔트리 유효 필드의 비트가 유효 비트로 갱신될 수 있다.
일 실시예에서, 상기 복수의 코어들 중 어느 하나의 코어가 메타 페이지에 이미 등록된 가상 페이지에 접근하고자 시도하는 경우, 상기 메타 페이지에 등록된 상기 가상 페이지 엔트리의 공유 필드 비트가 갱신될 수 있다.
본 발명의 다른 실시예에 따른, 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛의 동작 방법은, 상기 복수의 코어들 중 어느 하나의 코어에 의해 가상 메모리 번호 접근 요청을 수신하는 단계; 상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블인지 판별하는 단계; 상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계; 및 상기 페이 테이블의 갱신에 기초하여 메타 페이지를 갱신하는 단계를 포함한다.
일 실시예에서, 상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계는, 상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블인 경우: 해당 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계를 포함할 수 있다.
일 실시예에서, 상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계는, 상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블이 아닌 경우: 해당 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계; 및 상기 메인 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계를 포함할 수 있다.
일 실시예에서, 상기 페이 테이블의 갱신에 기초하여 메타 페이지를 갱신하는 단계는, 상기 가상 페이지 번호에 대응하는 엔트리의 접근 코어 Bit 필드를 갱신하는 단계; 및 상기 가상 페이지 번호에 복수의 코어가 접근했는지 여부에 따라 공유 비트 필드를 갱신하는 단계를 포함할 수 있다.
본 발명의 또다른 실시예에 따른, 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛의 동작 방법은, 페이지 회수 요청을 수신하는 단계; 상기 페이지 회수 요청에 기초하여 현재 코어 내 LRU 목록에서 victim 페이지를 선정하는 단계; 해당 페이지가 공유 페이지인지 여부를 판별하는 단계; 상기 공유 페이지 여부의 판별 결과에 기초하여, victim에 해당하는 페이지 테이블의 엔트리를 삭제하는 단계; 및 상기 페이지 테이블의 엔트리에 대응하는 TLB를 무효화하는 단계를 포함한다.
일 실시예에서, 상기 메모리 관리 유닛의 동작 방법은: 상기 해당 페이지가 공유 페이지인 경우, 상기 TLB 무효화 단계 이후에, 삭제된 상기 페이지 테이블 엔트리에 기초하여 메타 페이지를 갱신하는 단계; 및 다른 코어의 LRU 목록에서 victim 페이지를 검색하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 관리 유닛 및 그 동작 방법에 의하면 멀티코어 프로세서에서의 메모리 회수 비용이 크게 감소하게 된다. 따라서 NVM Express (Non-Volatile Memory Express) 혹은 Remote Memory와 같은 저지연 고대역폭을 지원하는 메모리 장치를 현재 메모리의 하위 계층에 위치시켜 이를 SWAP 장치로 사용할 때 시스템에 존재하는 메모리 부족에 대한 압박(Memory Pressure)를 경감시킬 수 있다. 이를 통해서 In-Memory 데이터베이스, In-Memory 병렬 워크로드, 그리고 유전체 분석과 같은 많은 양의 메모리를 요구하는 시스템으로 하여금 그 응용의 수정 없이 SWAP 장치의 사용으로 인한 성능 저하를 줄일 수 있다.
도 1은 일반적인 메모리 계층구조를 나타내는 도면이다.
도 2는 메모리 계층구조에서 페이지 테이블과 변환 색인 버퍼의 기능을 설명하기 위한 도면이다.
도 3은 복수의 코어를 포함하는 프로세서에서 가상 메모리 접근시 변환 색인 버퍼와 페이지 테이블을 이용하는 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따라, 복수의 코어를 포함하는 프로세서에서 가상 메모리 접근시, 코어마다 페이지 테이블을 적용하는 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따라, 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 프레임 페이지 할당을 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따라, 코어마다 페이지 테이블을 적용하고, 메타 페이지를 통해 페이지 테이블 및 변환 색인 버퍼를 동기화하는 방법을 설명하기 위한 도면이다.
도 7은 도 6의 실시예에서, 메인 페이지 테이블에 대응하는 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다.
도 8은 도 6의 실시예에서, 메인 페이지 테이블에 대응하지 않는 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다.
도 9는 도 8의 예시에서, 메인 페이지 테이블에 대응하지 않는 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 메모리 관리 유닛의 동작 방법에 있어서 페이지 회수 절차를 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
멀티코어 컴퓨터 구조에서 페이지 회수에 있어서 지배적인 비용은 IPI 의존적인 TLB 무효화 방법이다. 이는 IPI의 송신자와 수신자 양측에 대한 시스템의 처리량 저하를 가져오게 되는데, 송신자는 앞서 언급한 바와 같이 모든 프로세서 코어의 acknowledge를 수신함에 있어서 지연시간이 발생하고, 수신자는 현재 동작중인 코드의 흐름을 중단시키고 인터럽트 문맥으로 스위치하여 TLB shootdown을 처리함으로 인해서 IPI 의 수신이 반복될 경우 수신자의 처리량 또한 감소하게 된다. 이를 극복하기 위해서 본 발명에 따른 메모리 관리 유닛 및 그 동작 방법에 의하면 높은 IPI에 의존적이지 않은 페이지 회수가 가능하다.
도 4는 본 발명의 일 실시예에 따라, 복수의 코어를 포함하는 프로세서에서 가상 메모리 접근시, 코어마다 페이지 테이블을 적용하는 방법을 설명하기 위한 도면이다.
본 발명에 따른 메모리 관리 유닛은 복수의 코어들을 위한 가상 메모리를 관리한다. 상기 메모리 관리 유닛은 상기 각 코어들에 대응하는 복수의 변환 색인 버퍼(translation lookaside buffer; TLB)들, 상기 각 코어들 및 상기 각 TLB에 대응하며, 대응하는 TLB에 동기화되는 복수의 페이지 테이블들 및 상기 복수의 페이지 테이블들에 포함되는 가상 페이지-물리 페이지 매핑 정보들을 포함하는 메타 페이지를 포함한다. 상기 복수의 페이지 테이블 중 어느 하나는 메인 페이지 테이블이다. 본 발명에 의하면, 하나의 페이지 테이블을 공유하는 기존의 쓰레드의 주소공간 관리와 다르게 하나의 주소공간을 위해서 프로세서 내 코어의 개수만큼 페이지 테이블을 할당하고 각각의 코어에서의 메모리 요구가 발생시 각각의 코어가 갖는 전용의 페이지 테이블에 해당 가상 주소와 물리 주소간의 매핑을 기입하는 멀티 페이지 테이블을 사용한다.
도 4를 참조하면 2개의 코어(300, 301)를 포함하는 프로세서의 가상 메모리 접근이 도식적으로 도시되어 있다. 가상 메모리 접근 요청시, 제 1 코어(300)는 먼저 제 1 TLB(310)에 접근하고, 제 1 TLB(310)에 해당 가상 페이지-물리 페이지 매핑 정보가 없는 경우, 제 1 페이지 테이블(320)을 참조하게 된다. 또한, 제 2 코어(301)는 먼저 제 2 TLB(311)에 접근하고, 제 2 TLB(311)에 해당 가상 페이지-물리 페이지 매핑 정보가 없는 경우, 제 2 페이지 테이블(321)을 참조하게 된다. 즉, 기존의 기술과는 달리, 본 발명은 각 코어(310, 311)마다 페이지 테이블(320, 321)을 두어 사용하게 된다. 도 4에 도시된 바와 같이, 제 1 코어(300)에서 가상 페이지 번호 0x0, 0x1, 0x2, 0x4에 대해서 메모리 요구가 발생하였고, 제 2 코어(301)에서는 가상 페이지 번호 0x5, 0x6, 0x8, 0x9에 대한 메모리 요구가 발생하였다. 이 경우, 페이지 폴트 (Page Fault) 처리기는 제 1 코어(300) 의 메모리 요구에 대해서 제 1 코어(300) 가 갖는 페이지 테이블(320)에 각각의 가상 페이지 번호-물리 페이지 번호 매핑을 연결하고, 제 2 코어(301)의 메모리 요구에 대해서도 제 2 코어(301)에 대응하는 페이지 테이블(321)에 각각의 매핑을 연결하게 된다.
도 5는 본 발명의 일 실시예에 따라, 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 프레임 페이지 할당을 나타내는 도면이다. 구체적으로, 도 4의 상황에 이어 가상 메모리 접근 요청이 일어난 상황이 도 5에 도시되었다. 도 5를 참조하면, 제 1 코어(400), 이에 대응되는 제 1 TLB(410) 및 제 1 페이지 테이블(420)이 도시되어 있으며, 제 2 코어(401), 이에 대응되는 제 2 TLB(411) 및 제 2 페이지 테이블(421) 또한 도시되어 있다. 도 5는 제 2 코어(CPU1)에서 가상 페이지 번호 "0x0"에 접근할 때의 동일한 페이지 프레임 할당을 나타낸다. 을 할당하는 것을 나타낸다. 이와 같이 동일한 가상주소의 접근에 대해서 동기화가 요구된다. 즉, 공통되는 가상 페이지 번호(VPN)-물리 페이지 번호(PPN)에 대해, 제 1 페이지 테이블(420)과 제 2 페이지 테이블(421)은 서로 동일할 필요는 없으나 서로 동기화될 필요가 있다.
도 6은 본 발명의 일 실시예에 따라, 코어마다 페이지 테이블을 적용하고, 메타 페이지를 통해 페이지 테이블 및 변환 색인 버퍼를 동기화하는 방법을 설명하기 위한 도면이다. 도 6을 참조하면, 본 발명의 실시예에 따른 메모리 관리 유닛은 제 1 코어(500) 및 제 2 코어(501)의 가상 메모리 접근을 처리하기 위해, 제 1 페이지 테이블(520), 제 2 페이지 테이블(521) 및 메타 페이지(530)를 포함한다. 도 6에는 도시되어 있지 않으나, 본 발명의 실시예에 따른 메모리 관리 유닛은 제 1 코어(500) 및 제 2 코어(501)를 위한 제 1 TLB 및 제 2 TLB를 포함한다. 도 6에서 상기 제 1 TLB 및 제 2 TLB는 도시의 편의를 위해 생략되었다. 도 5에서 제 1 페이지 테이블(520)은 메인 페이지 테이블이다. 한편, 제 2 페이지 테이블(521)은 메인 페이지 테이블이 아니다.
메타 페이지(530)는 제 1 페이지 테이블(520) 및 제 2 페이지 테이블(521)을 효과적으로 동기화하고, 페이지 회수 비용을 저감하는 이용될 수 있다. 즉, 다수의 쓰레드를 위해서 복수 개의 페이지 테이블(520, 521)을 운영함으로 인해서 페이지 테이블(520, 521)의 동기화 문제가 발생하게 되고 이를 처리하기 위해서 하나의 프로세스 마다 메타 페이지(530)를 운영한다. 본 발명의 실시예에 따른 메모리 관리 유닛 및 그 동작 방법에 있어서, 메타 페이지(530)는 세 가지 필드를 갖는데, 동기화 장치(LOCK) 필드, 접근 코어 Bit 필드 및 공유 비트 필드(S)를 포함한다. 동기와 장치(LOCK) 필드는 메타 페이지의 엔트리 변경을 위한 필드이고, 접근 코어 Bit 필드는 해당 가상 페이지-물리 페이지 매핑에 어느 코어가 접근하였는지를 표시하는 필드이다. 또한 공유 비트 필드(S)는 해당 가상 페이지-물리 페이지 매핑에 단일 코어만이 접근하였는지, 복수의 코어가 접근하였는지 여부를 나타내는 필드이다.
이와 같이, 메타 페이지(530) 접근 코어 비트의 필드 데이터를 통해서 하나의 가상 페이지 번호(VPN)에 대해서 가상 페이지에 대한 요구가 발생하였고, 그 이후로 현재까지 얼마나 많은 코어들이 해당 페이지에 접근하였는지가 기록될 수 있다. 이는 병렬 응용이 다수의 쓰레드를 이용하여 여러 코어에서 하나의 가상 페이지에 접근한 경우와, 하나의 코어에서만 해당 페이지에 접근한 경우를 구분할 수 있도록 한다. 즉 임의의 시점에서 각각의 코어들에 할당된 페이지 테이블들에 존재하는 매핑들 셋은 TLB 엔트리들의 슈퍼셋이 됨을 의미할 수 있다.
코어들(500, 501)의 가상 메모리 주소 접근에 따른 페이지 테이블들(520, 521)과 메타 페이지(530)의 갱신에 대하여는 도 7 내지 도 9를 참조하여 설명한다.
도 7은 도 6의 실시예에서, 메인 페이지 테이블에 대응하는 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다.
본 발명의 실시예에 따른 메모리 관리 유닛 및 그 동작 방법에 있어서, 하나의 프로세스에 속하는 멀티 쓰레드들은 스케줄 가능한 코어들 수의 페이지 테이블을 갖게 된다. 또한, 도 7의 도시에서는 예시적으로 제 1 코어(500)에 대응하는 페이지 테이블(520)이 메인 페이지 테이블로 지정되었다. 한편 그 외 페이지 테이블(521)은 메인 페이지 테이블이 아니다. 도 7의 도시에는 코어가 2개인 경우의 메인 페이지 테이블(520)과 일반 페이지 테이블(521)이 도시되어 있으나, 코어의 개수가 늘어나더라도 각각의 코어마다 페이지 테이블이 존재하고, 그 중에서도 메인 페이지 테이블은 하나일 수 있다.
메인 페이지 테이블(520)은 해당 페이지 테이블(520)에 대응되는 코어(500) 이외의 코어(501)에서 페이지 접근 요구가 발생할 때 그 매핑 관계를 추가적으로 저장하는데 사용된다. 도 7을 참조하면, 제 1 코어(500)에서 가상 페이지 번호(VPN) "0x0"에 접근했을 경우 페이지 테이블들(520, 521) 및 메타 페이지(530)의 상태를 나타낸다. 여기서 제 1 코어(500)에 대응하는 TLB에 대항 가상 페이지-물리 페이지 매핑이 적재되어야 하기 때문에, 해당 매핑을 페이지 테이블(520)에 설치하고 설치한 엔트리가 유효함을 나타내는 P 비트를 1로 설정한다. 또한 메타 페이지(530)의 접근 코어 Bit는 해당 제 1 코어(500)가 접근하였음을 알려 주는 정보를 포함한다. 즉, 도 7의 예시에서, 메타 페이지(530)의 접근 프로세서 bit 필드는 0b01로 기록된다. 이와 같이, 접근 코어 bit의 0번 비트를 "1"로 설정함으로써 제 1 코어(500)가 해당 가상 페이지 번호, 즉 0x0에 접근하였음을 나타낸다. 또한 공유 비트 필드(S)는 "0"으로 유지되므로, 해당 가상 페이지 번호에는 하나의 코어만이 접근함을 알 수 있다.
도 7에서 페이지 주소에 접근하고자 한 코어는 제 1 코어(500)로서, 제 1 코어(500)에 대응하는 페이지 테이블(520)은 메인 페이지 테이블이다. 본 발명에서는 멀티 코어 프로세서 환경에서 가상 메모리 접근을 위해 코어마다 페이지 테이블을 마련하고, 페이지 테이블 중 하나를 메인 페이지 테이블로 하여 다른 페이지 테이블과 다르게 동작하도록 한다. 즉, 본 발명에 따른 메모리 관리 유닛은 각 코어 대응하는 페이지 테이블에 있어서, 메인 페이지 테이블에 대응하는 코어가 가상 메모리에 접근하는 경우와 메인 페이지 테이블이 아닌 페이지 테이블에 대응하는 코어가 가상 메모리에 접근하는 경우 페이지 테이블의 갱신 처리를 서로 상이하게 수행한다. 메인 페이지 테이블에 대응하지 않는 코어가 가상 메모리에 접근하는 경우의 페이지 테이블 갱신 처리에 대해서는 도 8을 참조하여 후술하기로 한다.
도 8은 도 6의 실시예에서, 메인 페이지 테이블에 대응하지 않는 어느 하나의 코어가 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다.
도 8의 도면은, 도 7의 상황에서 후속적으로 제 2 코어(501)가 가상 페이지 번호 "0x0"에 접근하는 경우를 도시한 것이 아니라, 페이지 테이블들(520, 521)이 초기화되어 있던 상태에서 제 2 코어(501)가 가상 페이지 번호 "0x0"에 접근하는 경우를 도시한 것이다. 즉, 도 8은 도 7에서 도시된 바와 다르게 제 1 코어(500)에서 접근하지 않은 가상페이지 "0x0"에 제 2 코어(501)가 접근하는 경우를 나타낸다.
도 8을 참조하면, 제 1 코어(500)는 가상 페이지 번호 "0x0"에 접근하지 않았다. 한편 제 2 코어(501)가 가상 페이지 번호 "0x0"에 접근하였으며, 따라서 제 2 코어(501)에 대응하는 페이지 테이블(521)의 엔트리가 갱신된다. 또한, 제 2 코어(501)에 대응하는 페이지 테이블(521)의 갱신과 더불어, 제 1 코어(500)에 대응하는 페이지 테이블(520) 또한 갱신된다.
도 7에서 가상 페이지 번호 "0x0"에 접근한 코어(500)에 대응하는 페이지 테이블(520)은 메인 페이지 테이블이므로, 해당 메인 페이지 테이블만 갱신되고 다른 페이지 테이블은 갱신되지 않는다. 그러나, 도 8에서 가상 페이지 번호 "0x0"에 접근한 코어(501)에 대응하는 페이지 테이블(521)은 메인 페이지 테이블이 아니므로, 해당 페이지 테이블(521)의 갱신과 함께 메인 페이지 테이블(520) 또한 갱신된다. 다만, 메인 페이지 테이블(520) 내 가상 페이지 번호 "0x0"가 저장된 테이블 엔트리의 P 필드는 여전히 "0"을 유지하며, 이로 인해 상기 가상 페이지 번호 "0x0"가 제 1 코어(500)가 아닌 다른 어떤 코어에 의해 접근되었음을 알 수 있다. 또한, 제 1 코어에 대응하는 페이지 테이블(521) 내 가상 페이지 번호 "0x0"가 저장된 테이블 엔트리의 P 필드는 "1"로 변경되고, 이로 인해 상기 가상 페이지 번호 "0x0"는 해당 페이지 테이블에 대응하는 코어인 제 2 코어(501)에 의해 접근되었음을 알 수 있다.
도 8에는, 제 2 코어(501)에서 가상 페이지 번호(VPN) "0x0"에 접근했을 경우의 메타 페이지(530)의 상태 또한 도시되어 있다. 도 7의 경우와는 달리, 메타 페이지(530)의 접근 프로세서 bit 필드는 0b10 기록된다. 이와 같이, 접근 코어 bit의 1번 비트를 "1"로 설정함으로써 제 2 코어(501)가 해당 가상 페이지 번호, 즉 0x0에 접근하였음을 나타낸다. 또한 공유 비트 필드(S)는 "0"으로 유지되므로, 도 7의 경우와 유사하게 해당 가상 페이지 번호에는 하나의 코어만이 접근함을 알 수 있다.
도 9는 도 8의 예시에서, 메인 페이지 테이블에 대응하는 어느 하나의 코어가 추가적으로 가상 메모리에 접근하고자 하는 경우의 메타 페이지 및 페이지 테이블의 갱신 방법을 설명하기 위한 도면이다. 즉, 도 9는 도 8에서 제 2 코어(501)가 가상 페이지 번호 "0x0"에 접근한 이후에, 제 1 코어(500) 또한 동일한 가상 페이지 번호 "0x0"에 접근하는 경우의 페이지 테이블들(520, 521) 및 메타 페이지의 갱신을 설명하기 위한 도면이다.
제 2 코어(501)가 가상 페이지 번호 "0x0"에 접근한 이후에, 제 1 코어(500)가 가상 페이지 번호 "0x0"에 접근하는 경우, 제 1 코어(500)에 대응하는 페이지 테이블(520)은 메인 페이지 테이블이므로 상기 메인 페이지 테이블만 갱신되고 다른 페이지 테이블(521)은 갱신되지 않는다. 도 8과 도 9를 함께 참조하면, 제 1 페이지 테이블(520)의 가상 페이지 번호 "0x0"에 대한 엔트리가 이미 존재하므로 해당 가상 페이지 번호 엔트리를 통해 물리 페이지 번호에 접근할 수 있다. 이와 더불어, 제 1 페이지 테이블의 P 비트가 "0"인 상태에서 제 1 코어(501)가 해당 가상 페이지 번호에 접근하였으므로, 가상 페이지 번호 "0x0" 엔트리의 P 비트를 "1"로 변경한다. 상기 비트의 변경으로 인해, 메인 페이지 테이블(520) 내에 저장된 가상 페이지 번호 "0x0"가, 대응하는 제 1 코어(501)에 의해 접근되었음을 알 수 있다.
또한, 제 1 코어(501)가 가상 페이지 번호 "0x0"에 접근하면 메타 페이지(530) 또한 갱신된다. 동기화장치(LOCK) 필드는 유지되고, 접근 코어 bit 필드는 "0b10"에서 "0b11"로 변경된다. 이로 접근 코어 bit 필드의 0번째 및 1번째 bit가 모두 1이므로, 해당 가상 페이지 번호 "0x0"에는 제 1 코어(500) 및 제 2 코어(501)가 모두 접근하였음을 알 수 있다. 또한, 공유 비트 필드(S)가 0에서 1로 변경되어, 해당 가상 페이지 번호 "0x0"에 복수의 코어(500, 501)가 접근하였음을 알 수 있다. 이로 인해, 추후에 가상 페이지 번호 "0x0"의 페이지 회수시 공유 비트 필드(S)를 확인하여 TLB 엔트리 무효화 명령어가 여러 프로세서에 의해서 수행되어야 함을 알 수 있도록 한다. 이러한 페이지 구조를 이용하여, 각각의 가상 페이지 번호와 물리 페이지 번호 간의 매핑이 시스템에 존재하는 어떠한 코어에 있는지를 확인하고, 해당 코어로 대해서만 TLB 무효화 인스트럭션을 수행하게 함으로써 결과적으로 TLB 무효화를 위해서 IPI의 적극적인 사용을 줄일 수 있다.
도 10은 본 발명의 일 실시예에 따른 메모리 관리 유닛의 동작 방법에 있어서 페이지 회수 절차를 설명하기 위한 도면이다.
기존의 페이지 회수 정책은 LRU 페이지로부터 페이지 접근 등을 확인하여 회수할 페이지(victim)을 선정한다. 이는 하위 메모리 계층에 대해 주 메모리의 캐쉬 효과를 이용함에 있어서 최근에 가장 사용되지 않은 (least recently used; LRU) 페이지를 선택한다. 하지만 메모리 접근에 대한 완전한 LRU 목록을 유지하는 것은 소프트웨어 수준에서의 수행 복잡도가 높으므로 시스템 자원을 많이 소모하는 문제가 있다. 따라서 메모리 접근에 대한 완전한 LRU 목록을 유지하는 것을 대체할 수 있는 방법을 사용할 수 있다. 본 발명에 따른 메모리 관리 유닛 및 그 동작 방법에 의하면, 회수할 페이지 선정 시 얼마나 많은 프로세서가 해당 페이지를 접근했는지를 추가로 고려하게 된다. 도 10은 이를 설명하기 위한 순서도로서, 본 발명에 따른 메모리 관리 유닛 및 그 동작 방법에 의해 페이지를 회수하는 방법을 나타낸다. 도 10의 방법은, 도 4 내지 도 9를 참조하여 설명한 페이지 구조 및 동작 방법을 이용하여, 각각의 코어들의 가상페이지 번호에 대한 접근 추적을 활용하게 된다.
메모리 부족이 발생할 경우, 먼저 종래의 방법과 동일하지만, 회수 대상 페이지를 현재 코어 내의 페이지로 한정한다. 즉, 대상 LRU 목록을 전체 코어에 의해 공유되는 기존의 페이지 테이블에 기초하여 설정하는 것이 아니라, 현재 코어 내 페이지 테이블에 존재하는 페이지를 LRU 목록으로 설정한다(S200). 현재 코어에서 접근했었던 페이지들 중에 기존의 방법과 동일하게 LRU 페이지를 victim으로 선정(S205)한 후, victim이 존재하는지 확인한다(S210). 해당 페이지가 현재 복수의 코어에 의해 공유된 가상 페이지인지를 메타 페이지 내 공유 비트 필드를 통해서 확인한다(S220). 페이지가 공유되지 않는 페이지인 경우 이는 해당 가상 페이지 번호-물리 페이지 번호 매핑이 다른 코어의 TLB에 존재하지 않음을 의미한다. 따라서, 때문에 현재 프로세서에 대해서만 페이지 테이블의 매핑 엔트리를 삭제하고(S225) TLB 무효화 인스트럭션을 수행하게 된다(S230). 언맵핑(Unmapping)이 완료된 victim에 대해서는 하위 메모리로의 저장을 요청한다(S235).
만약 단계(S205)에서 선택한 victim이 공유 페이지였다면 이는 다수의 프로세서에 의해서 접근된 페이지로써 다른 페이지에 비해 높은 중요성을 가짐을 의미할 수 있다. 이러한 해당 가상 페이지 번호-물리 페이지 번호 매핑의 중요성을 유지하기 위해, 본 발명의 실시예에 따른 메모리 관리 유닛의 동작 방법에서는 메타 페이지의 공유 비트 필드를 확인하여 공유 페이지일 경우 자신의 코어에서 해당 페이지 테이블 내 매핑 엔트리를 삭제하고(S240) TLB를 무효화한다(S245). 그 후 메타 페이지를 갱신한다(S250). 이 때 접근 코어 bit에서, 바로 직전에 TLB 무효화한 코어에 대한 식별 번호를 삭제하는 방식으로 메타 페이지를 갱신할 수 있다. 예를 들어, 도 9의 상태에서 제 1 코어(501)에 대한 페이지 테이블(521) 내 매핑 엔트리를 삭제한 경우라면, 메타 페이지(530)의 접근 코어 Bit를 "0b11"에서 "0b01"로 변경할 수 있다.
상술한 바와 같이 해당 코어에 대응하는 페이지 테이블 내 매핑 엔트리 삭제(S240), 해당 코어에 대응하는 TLB의 무효화(S245) 및 메타 페이지 갱신(S250)이 이루어진 후 다시 LRU 목록에서 victim을 찾게 된다(S210). 이때 만약 대상 LRU 목록에서 victim을 찾을 수 없다면 현재 LRU 목록이 비어있음을 의미하므로 대상 LRU 목록을 다음 코어의 LRU 목록으로 변경하고(S215) 앞의 과정을 수행한다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 메모리 관리 유닛 및 그 동작 방법에 의하면, 코어마다 페이지 테이블을 지정하고 메타 페이지를 두므로 복수의 코어들을 포함하는 프로세서에서의 메모리 회수 비용이 크게 감소하게 된다. 따라서 NVM Express (Non-Volatile Memory Express) 혹은 Remote Memory와 같은 저지연 고대역폭을 지원하는 메모리 장치를 현재 메모리의 하위 계층에 위치시켜 이를 SWAP 장치로 사용할 때 시스템에 존재하는 메모리 부족에 대한 압박(Memory Pressure)를 경감시킬 수 있다. 이를 통해서 In-Memory 데이터베이스, In-Memory 병렬 워크로드, 그리고 유전체 분석과 같은 많은 양의 메모리를 요구하는 시스템으로 하여금 그 응용의 수정 없이 SWAP 장치의 사용으로 인한 성능 저하를 줄일 수 있다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터를 이용하거나 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터를 이용하거나 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
본 발명에 따른 메모리 관리 유닛 및 그 동작 방법에서, 각 코어들에 대응하는 페이지 테이블은 해당 코어 내에 존재할 수도 있고 코어 밖 프로세서 내에 존재할 수도 있다. 또한, 상기 페이지 테이블들 및 메타 페이지는 메모리 관리 유닛 내 기억 장치에 존재할 수도 있다. 상기 페이지 테이블들 및 메타 페이지는 별개의 기억 장소로서 구성될 수도 있으며, 단일 기억 장치 내 동적으로 할당되는 주소 공간으로 구성될 수도 있다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
10: 프로세서 20: L1 캐쉬
30: L2 캐쉬 40: L3 캐쉬
50: 메모리 60: 디스크

Claims (10)

  1. 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛(Memory Management Unit; MMU)에 있어서,
    상기 각 코어들에 대응하는 복수의 변환 색인 버퍼(translation lookaside buffer; TLB)들;
    상기 각 코어들 및 상기 각 TLB에 대응하며, 대응하는 TLB에 동기화되는 복수의 페이지 테이블들 - 상기 복수의 페이지 테이블 중 어느 하나는 메인 페이지 테이블임 -; 및
    상기 복수의 페이지 테이블들에 포함되는 가상 페이지-물리 페이지 매핑 정보들을 포함하는 메타 페이지를 포함하는 메모리 관리 유닛으로서,
    상기 메타 페이지는 가상 페이지-물리 페이지 매핑이 복수의 TLB에 저장되었는지의 여부를 나타내는 공유 비트 필드 및 접근 코어 비트 필드를 포함하고,
    상기 접근 코어 비트 필드에는 가상 페이지에 접근한 코어를 식별하는 정보가 포함되며,
    상기 페이지 테이블은 상기 코어에 대응하는 페이지 테이블이 메인 페이지 테이블인지 여부에 기초하여 갱신되고,
    상기 메타 페이지는 상기 페이지 테이블의 갱신에 기초하여 갱신되되,
    상기 메타 페이지의 상기 공유 비트 필드 및 상기 접근 코어 비트 필드 중 적어도 하나 이상의 값이 갱신되는 것을 특징으로 하는, 메모리 관리 유닛.
  2. 제 1 항에 있어서,
    상기 복수의 페이지 테이블들은 각 엔트리가 유효한지 여부를 나타내는 엔트리 유효 필드를 포함하고,
    상기 복수의 코어들 중 어느 하나의 코어가 신규 가상 페이지에 접근하고자 시도하는 경우:
    상기 어느 하나의 코어에 대응하는 페이지 테이블이 메인 페이지 테이블인 경우에, 상기 어느 하나의 코어에 대응하는 페이지 테이블의 엔트리에 가상 페이지-물리 페이지 매핑 정보가 등록되고, 상기 엔트리에 대응하는 엔트리 유효 필드의 비트가 유효 비트로 갱신되는 것을 특징으로 하는, 메모리 관리 유닛.
  3. 제 2 항에 있어서,
    상기 복수의 코어들 중 어느 하나의 코어가 신규 가상 페이지에 접근하고자 시도하는 경우:
    상기 어느 하나의 코어에 대응하는 페이지 테이블이 메인 페이지 테이블이 아닌 경우에, 상기 어느 하나의 코어에 대응하는 페이지 테이블 및 상기 메인 페이지 테이블의 엔트리들에 가상 페이지-물리 페이지 매핑 정보가 등록되고,
    상기 어느 하나의 코어에 대응하는 페이지 테이블에 등록된 가상 페이지-물리 페이지 매핑 정보의 엔트리에 대한 엔트리 유효 필드의 비트가 유효 비트로 갱신되는 것을 특징으로 하는, 메모리 관리 유닛.
  4. 제 3 항에 있어서,
    상기 복수의 코어들 중 어느 하나의 코어가 메타 페이지에 이미 등록된 가상 페이지에 접근하고자 시도하는 경우, 상기 메타 페이지의 상기 공유 비트 필드가 갱신되는 것을 특징으로 하는, 메모리 관리 유닛.
  5. 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛(Memory Management Unit; MMU)의 동작 방법에 있어서,
    상기 복수의 코어들 중 어느 하나의 코어에 의해 가상 메모리 번호 접근 요청을 수신하는 단계;
    상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블인지 판별하는 단계;
    상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계; 및
    상기 페이지 테이블의 갱신에 기초하여 메타 페이지를 갱신하는 단계를 포함하되,
    상기 메타 페이지는 가상 페이지-물리 페이지 매핑이 복수의 TLB에 저장되었는지의 여부를 나타내는 공유 비트 필드 및 접근 코어 비트 필드를 포함하고,
    상기 접근 코어 비트 필드에는 상기 가상 메모리 번호에 접근한 코어를 식별하는 정보가 포함되며,
    상기 페이지 테이블은 상기 코어에 대응하는 페이지 테이블이 메인 페이지 테이블인지 여부에 기초하여 갱신되고,
    상기 메타 페이지는 상기 페이지 테이블의 갱신에 기초하여 갱신되되,
    상기 메타 페이지의 상기 공유 비트 필드 및 상기 접근 코어 비트 필드 중 적어도 하나 이상의 값이 갱신되는 것을 특징으로 하는 메모리 관리 유닛의 동작 방법.
  6. 제 5 항에 있어서,
    상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계는, 상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블인 경우:
    해당 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계를 포함하는, 메모리 관리 유닛의 동작 방법.
  7. 제 5 항에 있어서,
    상기 메인 페이지 테이블인지 여부에 따라, 페이지 테이블을 갱신하는 단계는, 상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블이 메인 페이지 테이블이 아닌 경우:
    상기 가상 메모리 번호 접근을 요청한 코어의 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계; 및
    상기 메인 페이지 테이블의 가상 페이지 번호-물리 페이지 번호 엔트리를 갱신하는 단계를 포함하되,
    상기 메인 페이지 테이블의 경우, 가상 페이지-물리 페이지 맵핑 정보만 갱신되는 것을 특징으로 하는 메모리 관리 유닛의 동작 방법.
  8. 제 5 항에 있어서,
    상기 페이지 테이블의 갱신에 기초하여 메타 페이지를 갱신하는 단계는,
    가상 페이지 번호에 대응하는 엔트리의 상기 접근 코어 비트 필드를 갱신하는 단계; 및
    상기 가상 페이지 번호에 복수의 코어가 접근했는지 여부에 따라 상기 공유 비트 필드를 갱신하는 단계를 포함하는, 메모리 관리 유닛의 동작 방법.
  9. 복수의 코어들을 위한 가상 메모리를 관리하는 메모리 관리 유닛(Memory Management Unit; MMU)의 동작 방법에 있어서,
    페이지 회수 요청을 수신하는 단계;
    상기 페이지 회수 요청에 기초하여 현재 코어 내 LRU(least recently used) 목록에서 victim 페이지를 선정하는 단계;
    해당 페이지가 공유 페이지인지 여부를 판별하는 단계;
    상기 공유 페이지 여부의 판별 결과에 기초하여, victim에 해당하는 페이지 테이블의 엔트리를 삭제하는 단계; 및
    상기 페이지 테이블의 엔트리에 대응하는 변환 색인 버퍼(translation lookaside buffer; TLB)를 무효화하는 단계를 포함하되,
    메타 페이지에 기초하여 상기 해당 페이지가 공유 페이지인지 여부가 판별되고,
    상기 메타 페이지는 상기 페이지 테이블의 갱신에 기초하여 갱신된 것을 특징으로 하는 메모리 관리 유닛의 동작 방법.
  10. 제 9 항에 있어서, 상기 해당 페이지가 공유 페이지인 경우, 상기 변환 색인 버퍼 무효화 단계 이후에,
    삭제된 상기 페이지 테이블 엔트리에 기초하여 상기 메타 페이지를 갱신하는 단계; 및
    다른 코어의 LRU 목록에서 victim 페이지를 검색하는 단계를 더 포함하는, 메모리 관리 유닛의 동작 방법.
KR1020150085267A 2015-06-16 2015-06-16 메모리 관리 유닛 및 그 동작 방법 Active KR102026877B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150085267A KR102026877B1 (ko) 2015-06-16 2015-06-16 메모리 관리 유닛 및 그 동작 방법
US15/178,184 US20160371196A1 (en) 2015-06-16 2016-06-09 Memory management unit and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150085267A KR102026877B1 (ko) 2015-06-16 2015-06-16 메모리 관리 유닛 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20160148333A KR20160148333A (ko) 2016-12-26
KR102026877B1 true KR102026877B1 (ko) 2019-09-30

Family

ID=57587941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150085267A Active KR102026877B1 (ko) 2015-06-16 2015-06-16 메모리 관리 유닛 및 그 동작 방법

Country Status (2)

Country Link
US (1) US20160371196A1 (ko)
KR (1) KR102026877B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240101282A (ko) * 2022-12-23 2024-07-02 제주대학교 산학협력단 페이지 테이블 범위 압축을 수행하는 메모리 관리 시스템 및 이를 수행하는 메모리 관리 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041204A (ja) * 2016-09-06 2018-03-15 東芝メモリ株式会社 メモリ装置及び情報処理システム
CN107729057B (zh) * 2017-06-28 2020-09-22 西安微电子技术研究所 一种在多核dsp下的数据块多缓冲流水处理方法
US20190087217A1 (en) * 2017-09-19 2019-03-21 Microsoft Technology Licensing, Llc Hypervisor memory cache invalidation
US10789090B2 (en) 2017-11-09 2020-09-29 Electronics And Telecommunications Research Institute Method and apparatus for managing disaggregated memory
US10552339B2 (en) * 2018-06-12 2020-02-04 Advanced Micro Devices, Inc. Dynamically adapting mechanism for translation lookaside buffer shootdowns
KR102772750B1 (ko) 2019-01-15 2025-02-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11436033B2 (en) 2019-10-11 2022-09-06 International Business Machines Corporation Scalable virtual memory metadata management
US12524657B2 (en) 2020-12-08 2026-01-13 Electronics And Telecommunications Research Institute AI accelerator, cache memory and method of operating cache memory using the same
CN116701249B (zh) * 2022-02-24 2024-11-05 象帝先计算技术(重庆)有限公司 页表转换方法、页表转换器、soc及电子设备
KR102792915B1 (ko) * 2023-02-17 2025-04-07 제주대학교 산학협력단 페이지 사이즈를 고려한 메모리 할당을 수행하는 메모리 관리 시스템 및 메모리 관리 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040552A1 (en) * 2012-08-06 2014-02-06 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20150100753A1 (en) * 2013-10-04 2015-04-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US9507726B2 (en) * 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040552A1 (en) * 2012-08-06 2014-02-06 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20150100753A1 (en) * 2013-10-04 2015-04-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240101282A (ko) * 2022-12-23 2024-07-02 제주대학교 산학협력단 페이지 테이블 범위 압축을 수행하는 메모리 관리 시스템 및 이를 수행하는 메모리 관리 방법
KR102918778B1 (ko) * 2022-12-23 2026-01-27 제주대학교 산학협력단 페이지 테이블 범위 압축을 수행하는 메모리 관리 시스템 및 이를 수행하는 메모리 관리 방법

Also Published As

Publication number Publication date
US20160371196A1 (en) 2016-12-22
KR20160148333A (ko) 2016-12-26

Similar Documents

Publication Publication Date Title
KR102026877B1 (ko) 메모리 관리 유닛 및 그 동작 방법
US10552339B2 (en) Dynamically adapting mechanism for translation lookaside buffer shootdowns
US10331603B2 (en) PCIe traffic tracking hardware in a unified virtual memory system
US10896128B2 (en) Partitioning shared caches
US9501425B2 (en) Translation lookaside buffer management
US8615636B2 (en) Multiple-class priority-based replacement policy for cache memory
US9405702B2 (en) Caching TLB translations using a unified page table walker cache
US9760493B1 (en) System and methods of a CPU-efficient cache replacement algorithm
US7721068B2 (en) Relocation of active DMA pages
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US20150149742A1 (en) Memory unit and method
US7827374B2 (en) Relocating page tables
US10353601B2 (en) Data movement engine
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US7490214B2 (en) Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
US11341058B2 (en) Handling software page faults using data from hierarchical data structures
US9904569B2 (en) Pre-loading page table cache lines of a virtual machine
US9483400B2 (en) Multiplexed memory for segments and pages
US10635614B2 (en) Cooperative overlay
CN118974713A (zh) 包含式层级缓存中的影子指针目录
JP7752180B2 (ja) メモリの領域のコンテンツの修正を追跡するための技法
CN114840332A (zh) 页交换方法、装置和电子设备
EP4407472B1 (en) System and method for managing a memory hierarchy
US10241906B1 (en) Memory subsystem to augment physical memory of a computing system
US20260010484A1 (en) System-on-chip and operating method thereof

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20150616

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20170125

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20150616

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20180521

Patent event code: PE09021S01D

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20181130

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20190628

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190924

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190924

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20220825

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20240823

Start annual number: 6

End annual number: 6