KR101942663B1 - 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 - Google Patents
가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 Download PDFInfo
- Publication number
- KR101942663B1 KR101942663B1 KR1020170125885A KR20170125885A KR101942663B1 KR 101942663 B1 KR101942663 B1 KR 101942663B1 KR 1020170125885 A KR1020170125885 A KR 1020170125885A KR 20170125885 A KR20170125885 A KR 20170125885A KR 101942663 B1 KR101942663 B1 KR 101942663B1
- Authority
- KR
- South Korea
- Prior art keywords
- anchor
- tlb
- entry
- page table
- providing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
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(translation lookaside buffer)를 제공하는 방법에 있어서, 하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing) 단계를 포함하고, 상기 하이브리드 병합 단계는, 상기 하드웨어가 조정 가능한 TLB 커버리지(coverage) 노브(knob)를 제공하고 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 결정하여 상기 TLB 커버리지 노브를 조정하는 것을 특징으로 하는 방법을 제공한다.
Description
아래의 설명은 파편화되고 다양한 메모리 할당 하에서 상이한 메모리 매핑에 효율적으로 적응할 수 있는 HW(하드웨어)-SW(소프트웨어) 하이브리드 변환 아키텍처에 관한 것이다.
큰 메모리 어플리케이션들에 대한 메모리 용량 수요가 증가함에 따라 가상 메모리 지원을 위한 주소 변환은 어플리케이션의 중요한 성능 요인이 되고 있다.
주소 변환 효율성을 개선하기 위하여 두 가지 상이한 접근 방법이 있다. 첫 번째 접근 방법인 커버리지 개선은 주어진 영역 및 전력 예산 내에서 TLB(translation lookaside buffer)의 변환 커버리지를 확장하는 것이다. 두 번째 접근 방법인 TLB 미스(miss) 패널티 감소는 TLB 내에서 메모리 요청 미스가 발생한 후에 미스 처리 레이턴시(latencies)를 감소시킨다. 상기한 두 접근 방법들 모두가 변환 성능을 위해 중요하지만, 레이턴시가 TLB 히트에 대해 완전히 숨을 수 있기 때문에 변환 커버리지 향상은 직접적인 성능 개선을 제공할 수 있다.
변환 커버리지를 개선하기 위하여, 상용 시스템에 이용되거나 최근 연구에서 제안되는 일련의 기술들이 있다. 가장 일반적인 접근 방법들 중 하나는 페이지 사이즈를 증가시키는 것이다. 상용 x86 아키텍처에서는, 종래 4KB 페이지 사이즈 외에도 2MB 및 1GB 페이지 사이즈가 지원된다. 페이지 사이즈를 증가시키면 2MB 큰 페이지로 TLB 엔트리의 커버리지가 512배만큼 극적 향상된다. 그러나, 개선된 커버리지를 완전히 이용하기 위하여, 운영 체제(OS)는 각 페이지에 대하여 물리적 메모리의 2MB 청크(chunk)를 할당할 수 있어야 한다. 변환 커버리지를 개선하는 더 근본적인 방법은 페이지-기반의 변환 대신에 가변-사이즈의 HW 세그먼트 변환을 사용하는 것이다. 그 유효성은 운영 체제가 각 세그먼트에 대하여 매우 큰 연속적인 메모리 청크를 할당할 수 있는지 여부에 달려 있다. 큰 페이지 및 세그먼트의 대안책은 HW-기반의 병합 기술들이다. CoLT와 클러스터 TLB는 다수의 페이지가 연속적인 영역에 위치한다면 다수의 페이지 변환을 단일한 TLB 엔트리로 병합한다. 세그먼트 또는 큰 페이지와 달리, 순수 HW-지향 기술들을 기회만 되면 연속적인 페이지들을 찾고, 그것들을 단일한 TLB 엔트리로 병합한다. 운영 체제는 연속적인 페이지들을 할당함으로써 병합 기회를 향상시킬 수 있으나, 특정 청크 사이즈를 보장할 필요가 없다.
상기한 접근 방법들은 변환 커버리지의 확장성 및 할당 유연성이라는 두 가지의 트레이드 오프(trade-off)를 갖는다. 대형 페이지를 지원하는 것은 오직 한정된 수의 페이지 사이즈만을 허용하고, 이는 커버리지의 확장성을 제한한다. 세그먼트는 사실상 제한 없이 가변-길이 변환을 지원할 수 있기 때문에 가장 높은 커버리지 확장성을 갖는다. 그러나, 메모리 할당은 오직 물리적 메모리의 한정된 수의 매우 큰 청크가 전체적인 메모리 풋 프린트를 포함할 수 있을 때만 적용될 수 있는 매우 엄격한 규칙이 요구된다. 반면에, HW 병합은 유연한 할당은 허용하지만, 병합이 순전히 HW 컴포넌트들에 의해 수행되어야 하기 때문에 커버리지 확장성은 4 내지 8 페이지로 제한된다.
종래 기술들의 일반적인 요구 사항은 운영 체제가 각 기술에 적합한 연속적인 메모리 청크를 지속적으로 제공할 수 있어야 된다는 것이다. 그러나, 최근 연구들은 연속적인 청크 할당이 항상 가능한 것은 아니거나 다중-소켓 NUMA(non-uniform memory access) 시스템들의 성능을 심지어 저하시킬 수 있다. 일반적인 NUMA 아키텍처 외에도, 3D 적층 DRAM, HMC(network-connected hybrid memory cube) 및 비-휘발성 메모리(non-volatile memory; NVM)과 같이 새롭게 각광받는 메모리 아키텍처들은 메모리 내에 불균일성을 증가시킬 수 있다. 그러한 메모리 이질성은 자주 접근되는 페이지들을 빠르고 인접한 메모리(fast near memory)에 배치하기 위하여 작은 단위의(fine-grained) 메모리 매핑을 요구하고 이는 큰 연속적인 메모리 청크의 할당을 복잡하게 한다.
메모리 아키텍처 내 불균일성에 의하여 운영 체제는 상이한 커버리지 개선 기술에 맞게 조정된 최적의 할당을 항상 제공할 수 없다. 동일한 어플리케이션에서 조차도 실제 메모리 할당 상태는 시스템 상태에 의존하여 급격하게 변화하고, 이는 심각한 성능 변화를 유발한다. 일 기술은 특정 메모리 할당 환경에 매우 효과가 있을 수 있지만, 운영 체제가 그 기술에 최적화된 할당을 제공할 수 없다면 그렇지 않을 수도 있다. 그러므로, 이상적인 커버리지 개선 기술은 다양한 메모리 할당 상태들에 적응할 수 있을 필요가 있다.
가능한 한 변환 커버리지를 개선함과 동시에, 다양한 메모리 할당 환경들에 적응할 수 있는 하이브리드 주소 변환 기술을 제공한다.
주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 방법에 있어서, 하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 단계를 포함하고, 상기 TLB를 제공하는 단계는, 상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것을 특징으로 하는 방법을 제공한다.
일 측면에 따르면, 상기 TLB를 제공하는 단계는, 상기 TLB가 사용할 페이지 테이블에서 일정 거리의 얼라인먼트(alignment)에 인접한 메모리 매핑 블록을 나타내는 엔트리로서 앵커 엔트리(anchor entry)를 지정하는 단계를 포함하고, 상기 일정 거리마다 지정된 앵커 엔트리에 해당되는 페이지 테이블의 서브세트 내에서 연속성 정보를 인코딩 할 수 있다.
다른 측면에 따르면, 상기 일정 거리는 상기 TLB 커버리지를 조정하기 위해 상기 하드웨어가 상기 소프트웨어에 제공하는 노브로 상기 운영 체제에 의해 설정될 수 있다.
또 다른 측면에 따르면, 상기 앵커 엔트리에 해당되는 페이지 테이블 엔트리는 페이지 테이블 엔트리의 사용되지 않은 비트로 인코딩 된 추가 앵커 정보가 있는 레귤러 페이지 테이블(regular page table)로 상기 운영 체제에 의해 관리되고 업데이트 될 수 있다.
또 다른 측면에 따르면, 상기 TLB를 제공하는 단계는, 레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 캐시된 앵커 TLB를 제공하는 단계를 포함하고, 상기 앵커 TLB에는 레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 서로 다르게 인덱싱 될 수 있다.
또 다른 측면에 따르면, 상기 TLB를 제공하는 단계는, 페이지 테이블 룩업 시 상기 레귤러 페이지 테이블 엔트리와 상기 앵커 페이지 테이블 엔트리 중 어느 하나를 먼저 검색하고 미스(miss)가 발생하면 다른 하나를 검색하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 TLB를 제공하는 단계는, 상기 앵커 TLB에서 유효한 엔트리가 반환되면 상기 앵커 엔트리로 변환되는 페이지의 오프셋이 해당 앵커 엔트리의 연속성 이내인 경우 상기 반환된 엔트리를 물리적 주소로 변환하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 TLB를 제공하는 단계는, 상기 운영 체제가 상기 주어진 프로세스에 대한 메모리 매핑 분포를 스캔하여 상기 앵커 엔트리를 지정하기 위한 최적 거리를 선택하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 최적 거리를 선택하는 단계는, 상기 프로세스에 대해 요구되는 TLB 엔트리의 수를 최소화 하는 알고리즘을 이용하여 상기 최적 거리를 선택하고, 상기 최적 거리마다 지정된 상기 앵커 엔트리에 인접 청크의 연속성 정보를 기입할 수 있다.
주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 방법은, 하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 단계를 포함하고, 상기 TLB를 제공하는 단계는, 상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것을 특징으로 하는, 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공한다.
주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 시스템에 있어서, 컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 과정을 처리하고, 상기 TLB를 제공하는 과정은, 상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것을 특징으로 하는 시스템을 제공한다.
본 발명의 실시예들에 따르면, 메모리 할당 내 현재 이용 가능한 연속성에 적응하기 위하여 변환 병합에 대한 다양한 청크 사이즈들을 동적으로 변화시킬 수 있다.
본 발명의 실시예들에 따르면, 고정된 큰 페이지들과 달리, 운영 체제가 엄격하게 고정된 청크 할당을 제공할 필요가 없으며, 특정 고정된 연속성이 제공되지 않더라도 하이브리드 병합은 가능한 많은 가용 연속성을 추출할 수 있다.
본 발명의 실시예들에 따르면, 인접성이 페이지 테이블 내에서 인코딩 됨에 따라 확장성이 매우 뛰어난 커버리지 개선을 지원할 수 있다.
도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 2는 서로 다른 워크로드의 청크 크기의 누적 분포를 설명하기 위한 도면이다.
도 3은 서로 다른 매핑 시나리오의 TLB 미스를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 있어서 앵커 및 앵커 거리를 설명하기 위한 예시 도면이다.
도 5는 본 발명의 일 실시예에 있어서 앵커 페이지 테이블을 설명하기 위한 예시 도면이다.
도 6은 본 발명의 일 실시예에 있어서 앵커 TLB를 설명하기 위한 예시 도면이다.
도 7은 본 발명의 일 실시예에 있어서 앵커 TLB 룩업을 설명하기 위한 예시 도면이다.
도 8은 본 발명의 일 실시예에 있어서 페이지 테이블에 기입된 앵커 엔트리를 설명하기 위한 예시 도면이다.
도 9는 본 발명의 일 실시예에 있어서 앵커 TLB 엔트리를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 있어서 TLB 및 L1 TLB 미스에 대한 페이지 테이블 룩업을 도시한 도면이다.
도 11은 본 발명의 일 실시예에 있어서 L2 TLB 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 있어서 가상 주소와 VPN 간의 관계, 그리고 TLB 인덱싱 과정을 나타내는 도면이다.
도 13은 본 발명의 일 실시예에 있어서 동적 거리 선택 알고리즘의 예시를 나타낸 도면이다.
도 2는 서로 다른 워크로드의 청크 크기의 누적 분포를 설명하기 위한 도면이다.
도 3은 서로 다른 매핑 시나리오의 TLB 미스를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 있어서 앵커 및 앵커 거리를 설명하기 위한 예시 도면이다.
도 5는 본 발명의 일 실시예에 있어서 앵커 페이지 테이블을 설명하기 위한 예시 도면이다.
도 6은 본 발명의 일 실시예에 있어서 앵커 TLB를 설명하기 위한 예시 도면이다.
도 7은 본 발명의 일 실시예에 있어서 앵커 TLB 룩업을 설명하기 위한 예시 도면이다.
도 8은 본 발명의 일 실시예에 있어서 페이지 테이블에 기입된 앵커 엔트리를 설명하기 위한 예시 도면이다.
도 9는 본 발명의 일 실시예에 있어서 앵커 TLB 엔트리를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 있어서 TLB 및 L1 TLB 미스에 대한 페이지 테이블 룩업을 도시한 도면이다.
도 11은 본 발명의 일 실시예에 있어서 L2 TLB 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 있어서 가상 주소와 VPN 간의 관계, 그리고 TLB 인덱싱 과정을 나타내는 도면이다.
도 13은 본 발명의 일 실시예에 있어서 동적 거리 선택 알고리즘의 예시를 나타낸 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명에서는 가능한 한 변환 커버리지를 개선함과 동시에, 다양한 메모리 할당 환경들에 적응할 수 있는 하이브리드 주소 변환 기술을 제공한다. 하이브리드 기술은 운영 체제를 사용할 수 있는 고-레벨 매핑 정보를 활용하고, 대부분 동일한 TLB 구조 및 페이지 테이블을 사용하는 변환 아키텍처 내 작은 변화를 필요로 한다.
도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 본 발명의 실시예들에 따른 하이브리드 주소 변환 기술은 도 1의 컴퓨터 시스템(100)을 통해 구현될 수 있다. 도 1에 도시한 바와 같이, 컴퓨터 시스템(100)은 하이브리드 주소 변환 방법을 실행하기 위한 구성요소로서 프로세서(110), 메모리(120), 영구 저장 장치(130), 버스(140), 입출력 인터페이스(150) 및 네트워크 인터페이스(160)를 포함할 수 있다.
프로세서(110)는 명령어들의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(110)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(110)는 예를 들어, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼, 이동 컴퓨팅 장치, 스마트폰, 태블릿, 셋톱 박스 등에 포함될 수 있다. 프로세서(110)는 버스(140)를 통해 메모리(120)에 접속될 수 있다.
메모리(120)는 컴퓨터 시스템(100)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(120)는 예를 들어 랜덤 액세스 메모리(RAM: random access memory) 및/또는 동적 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리(120)는 컴퓨터 시스템(100)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(120)는 예를 들어 하이브리드 TLB 병합과 관련된 명령어들을 포함하는 컴퓨터 시스템(100)의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(100)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(110)를 포함할 수 있다.
버스(140)는 컴퓨터 시스템(100)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(140)는 컴퓨터 시스템(100)의 컴포넌트들 사이에, 예를 들어 프로세서(110)와 메모리(120) 사이에 데이터를 운반할 수 있다. 버스(140)는 컴퓨터 시스템(100)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치(130)는 (예를 들어, 메모리(120)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템(100)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치(130)는 컴퓨터 시스템(100) 내의 프로세서(110)에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 영구 저장 장치(130)는 예를 들어 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스(150)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 하이브리드 TLB 병합과 관련된 입력이 입출력 인터페이스(150)를 통해 수신될 수 있다.
네트워크 인터페이스(160)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(160)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들은 네트워크 인터페이스(160)를 통해 수신될 수 있다. 그리고, 하이브리드 TLB 병합과 관련된 정보들은 네트워크 인터페이스(160)를 통해 수신 또는 송신될 수 있다.
또한, 다른 실시예들에서 컴퓨터 시스템(100)은 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템(100)은 상술한 입출력 인터페이스(150)와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 컴퓨터 시스템(100)이 스마트폰과 같은 모바일 기기의 형태로 구현되는 경우, 일반적으로 모바일 기기가 포함하고 있는 카메라, 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 컴퓨터 시스템(100)에 더 포함되도록 구현될 수 있다.
본 발명에서는 가능한 한 변환 커버리지를 개선함과 동시에, 다양한 메모리 할당 환경들에 적응할 수 있는 하이브리드 주소 변환 기술을 제공한다. 하이브리드 기술은 운영 체제를 사용할 수 있는 고-레벨 매핑 정보를 활용하고, 대부분 동일한 TLB 구조 및 페이지 테이블을 사용하는 변환 아키텍처 내 작은 변화를 필요로 한다.
하이브리드 병합(hybrid coalescing)이라고 불리는 새로운 변환 아키텍처는 매 N 페이지 테이블 엔트리마다 지정된, 앵커 엔트리(anchor entry)라고 불리는 페이지 테이블의 서브세트 내에서 연속적인 할당 정보를 인코딩한다. 앵커 엔트리는 얼마나 많은 후속 페이지들이 연속적인 물리적 메모리 내에 할당되어 있는지를 포함해야 한다. L1(level-1) TLB 미스에 대해, 요청된 페이지 주소가 L2(level-2) TLB에 존재하지 않으면, 페이지 번호가 가장 가까운 앵커 엔트리가 L2 TLB 내에서 탐색된다. 요청된 페이지가 연속적으로 할당된 메모리 영역의 일부분이라면, 앵커 엔트리는 앵커와 요청된 페이지 간의 가상 주소 차이를 앵커 엔트리의 물리적 페이지 주소에 간단히 더함으로써 변환을 제공할 수 있다. 앵커-기반 변환의 근거는 어플리케이션 메모리의 다수가 연속적인 청크들의 일부 분포 내에 할당된다면, TLB 엔트리들의 대부분이 앵커 엔트리들로 채워질 것이라는 점이다. 각 앵커 엔트리는 메모리 변환의 큰 부분을 포함할 수 있다.
제안된 변환 기술들은 운영 체제가 페이지 테이블들 내 앵커 엔트리들의 밀도를 변화시킬 수 있기 때문에 다양한 메모리 할당 환경에 적응할 수 있다. 메모리 할당이 대부분 연속적인 청크의 메모리를 제공할 수 있다면, 앵커 엔트리는 드물게 위치한다. 메모리 할당이 작은 청크들로 파편화된다면, 앵커 엔트리는 밀집되어 위치한다. 유연한 앵커 밀도를 사용하여, 연속성 상태가 다양하더라도, 하이브리드 병합은 가능한 많은 메모리 할당 연속성을 이용할 수 있다. 운영 체제가 앵커 엔트리 내 연속성 정보를 인코딩하기 때문에 제안된 방식은 HW-기반 병합 기술에서 발생하는 연속적인 페이지들 탐색 및 통합에 대한 HW 오버헤드를 제거할 수 있다. 게다가, 제안된 기술은 HW 제한 없이 각 앵커 엔트리의 변환 커버리지를 크게 증가시킬 수 있다.
본 발명은 HW-SW 하이브리드 TLB 병합을 제안하는 첫 번째 연구이고, 확장 가능한 커버리지 및 할당 유연성 모두를 제공한다. 제안된 기술은 기존 접근 방법들에 비해 다음과 같은 장점들을 갖는다. 첫째, 메모리 할당 내 현재 이용 가능한 연속성에 적응하기 위하여 변환 병합에 대한 다양한 청크 사이즈들을 동적으로 변화시킬 수 있다. 둘째, 고정된 큰 페이지들과 달리, 운영 체제가 엄격하게 고정된 청크 할당을 제공할 필요가 없고, 특정 고정된 연속성이 제공되지 않더라도 하이브리드 병합은 가능한 많은 가용 연속성을 추출할 수 있다. 셋째, 인접성이 페이지 테이블 내에서 인코딩되기 때문에 확장성이 매우 뛰어난 커버리지 개선을 지원할 수 있다. 마지막으로, 현재 TLB 및 페이지 테이블 구조에 대한 변화가 미미하다.
1. 기술 동기
1.1 변환
커버리지
개선 방법
변환 커버리지를 개선하기 위한 첫 번째 접근 방법은 다수의 페이지 사이즈를 사용하는 것이다. 현재의 x86 아키텍처에서, 2MB 및 1GB 페이지 사이즈는 TLB 내에서 지원된다. 어플리케이션들은 메모리를 할당하는 동안 큰 페이지들을 분명하게 요청하거나, THP(transparent huge page) 지원을 사용할 수 있고, 운영 체제는 2MB 청크가 사용 가능하다면 2MB 페이지를 할당할 수 있다. 몇 개의 상이한 페이지 사이즈를 사용하는 것은 TLB 설계에 큰 복잡도를 유발하지 않으므로 1GB 페이지가 별개의 더 작은 1GB 페이지 L2 TLB를 사용할 수 있음에도 불구하고, 최근 아키텍처는 각 페이지 사이즈에 대한 별개의 TLB를 요구하지 않고 L2 TLB에서 4KB 및 2MB 페이지 모두를 지원한다. 그러나, 대형 페이지 사이즈의 단점은 커버리지가 몇 안 되는 페이지 사이즈로 제한된다는 점이고, 커버리지의 확장성이 결국 제한될 수 있다는 것이다. 게다가, 운영 체제는 변환 커버리지 개선으로부터 이점을 얻기 위해 고정된 큰 청크를 항상 할당해야 한다.
변환 커버리지를 크게 증가시키기 위한 두 번째 접근 방법은 가변-사이즈의 세그먼트를 사용한다. 직접 세그먼트 및 RMM(Redundant Memory Mapping)은 가변 길이의 하나 또는 다수의 세그먼트 영역을 지원한다. 각 세그먼트 영역에 대해, 운영 체제는 메모리의 연속적인 청크를 할당해야 한다. 그러한 연속적인 메모리 할당이 가능하면 단일 세그먼트의 변환 커버리지는 가상 주소 공간의 매우 큰 영역으로 확장할 수 있고, 많은 주소 변환 비용들을 실용적으로 제거한다. 그러나, HW 세그먼트 변환 엔트리의 개수는 세그먼트 변환에 필요한 완전 연관 범위 탐색에 의하여 현재 TLB 사이즈에 비해 매우 작기 때문에 각 프로세스는 한 번에 오직 제한된 수의 세그먼트만 사용할 수 있다. RMM는 L2 TLB의 레이턴시를 매칭하기 위하여 32 세그먼트 변환 엔트리(범위 TLB)를 지원한다. 게다가, 효율성을 위해, 세그먼트-기반의 변환은 매우 엄격한 큰 청크 할당에 의존한다.
세 번째 접근 방법은 HW-기반 병합 기술이다. CoLT와 클러스터 TLB에 의해 제안된 바와 같이, 운영 체제가 메모리 파편화를 줄이기 위하여 버디(buddy) 알고리즘을 사용할 때, 메모리 할당에는 몇 가지 레벨의 연속성이 존재한다. HW 합병 기술에서, HW TLB 컨트롤러는 페이지 테이블 엔트리를 탐색하고 연속적으로 할당된 페이지들을 찾는다. 캐시 라인이 다수의 페이지 테이블 엔트리를 포함하기 때문에 로직은 분리된 메모리 접근을 만들지 않고 다수의 페이지 테이블 엔트리를 통해 효율적으로 탐색할 수 있다. 이러한 접근 방법이 연속적인 페이지의 엄격한 할당에 의존하지 않는다고 하더라도, HW 컨트롤러는 기회적으로 연속성을 이용하기 때문에 변환 커버리지의 확장성은 상당히 제한된다. TLB 내 병합된 엔트리의 효율적인 룩업을 허용하기 위하여, TLB 엔트리에 4-8 페이지의 오직 제한된 병합 능력만을 지원한다. CoLT는 더 많은 수의 병합된 연속 페이지를 지원하는 완전 연관 모드를 추가적으로 제공한다. 그러나, 그것은 완전 연관 룩업을 필요로 하고, 이는 결과적으로, 사용 가능한 엔트리의 수를 제한한다.
세 가지 접근 방법들은 HW 비용, 할당 유연성 및 커버리지의 확장성에 대해 상이한 트레이드 오프들을 갖는다. 큰 페이지 지원은 가장 적은 추가 HW 비용을 가지나, 할당 유연성 및 커버리지 확장성이 보통이다. 세그먼트-기반의 변환은 가장 높은 커버리지 확장성을 가지나, 직접적인 세그먼트 레지스터에 대한 일정 정도의 추가 HW와 함께 엄격한 메모리 할당을 필요로 한다. RMM은 완전 연관 범위 탐색을 요구하고 이는 범위 TLB의 사이즈를 심각하게 제한한다. 제한된 범위 TLB는 운영 체제가 각 프로세스에 대해 단지 매우 제한된 수의 대형 연속 메모리 영역을 할당하도록 허용한다. 마지막으로, HW 병합은 작은 단위의(fine-grained) 메모리 매핑을 통해 유연한 메모리 할당을 가능하게 하지만, 커버리지 확장성은 세 가지 접근 방법들 중 가장 제한될 수 있다.
1.2 메모리의 불균일성 증가
변환 커버리지를 개선하는 것이 연속적인 메모리 청크의 할당을 필요로 하더라도, 시스템 내부 메모리 아키텍처 내의 불균일성이 증가하는 것은 큰 페이지들을 사용해야 하는 문제점을 야기할 수 있다. 다수의 데이터 센터 시스템들은 더 나은 시스템 밀도를 위하여 다중-소켓 NUMA 노드를 사용한다. NUMA 시스템에서, 쓰레드 스케줄링은 쓰레드들이 접근하고 있는 메모리 위치들을 종종 미스 매치할 수 있다. 2MB의 큰 페이지들을 사용하는 것은 멀티-쓰레드의 어플리케이션들의 성능을 종종 저하하므로 큰 페이지들은 불필요한 원격 메모리 접근을 방지하는 데에 선택적으로 사용되어야 한다. 실제 시스템에서, 큰 페이지 할당의 사용 가능성은 상당히 변동할 수 있고 프로세스들은 종종 큰 페이지들을 일관성 없이 수신하며, 이는 성능 변동을 야기한다.
게다가, 메모리 불균일성은 3D 적층 DRAM, HMC(network-based hybrid memory cube) 및 비-휘발성 메모리(non-volatile memory; NVM)의 도래와 함께 미래에 증가할 것으로 예상된다. 떠오르는 메모리 기술과 함께, 메모리 계층은 다양한 레이턴시 및 대역폭 특성들을 갖는 다중 레벨의 메모리로 변화할 수 있다.
최근 연구들은 적층된 메모리의 용량은 주 메모리의 일부분이 되기에 충분할 정도로 크므로 물리 주소 공간은 빠른-인접(fast-near) 메모리 및 원격-느린(far-slow) 메모리 영역으로 구성된다는 점을 보여준다. 그러한 계층 주 메모리에 대한 일반적인 시스템 모델에서, 운영 체제는 인접 또는 먼 메모리 페이지를 어플리케이션들의 가상 메모리 공간에 할당하기 위하여 페이지 테이블을 사용하는 가상 대 물리 매핑을 사용한다. HMC 아키텍처는 on-chip 네트워크에 의해 연결된 다수의 메모리 모듈들을 제공한다. 그러한 네트워크 메모리 시스템에서, 상이한 모듈들에 접근하기 위한 레이턴시는 서로 다르며, 이는 메모리 접근 시간의 불균일성을 증가시킨다.
각광받는 비-휘발성 메모리는 또한 메모리의 이질성을 가속화한다. NVM는 DRAM에 비하여 (레이턴시 및 대역폭의 관해) 느려질 것으로 예상된다. 그러나, NVM는 또한 비-휘발성 특징과 함께 더 높은 밀도를 제공할 것으로 예상된다. 이러한 특징들과 연결되어, DRAM은 핫 페이지에 대한SW 캐쉬로 사용될 수 있고, NVM는 콜드 페이지에 대한 백업 메모리로 사용될 수 있다. 다중-레벨의 메모리는 잠재적인 장점들을 완전히 이용하기 위하여 작은 단위의(fine-grained) 페이지 매핑들을 필요로 한다. 예를 들어, 2MB의 가상 페이지에서, 그 페이지의 오직 일 부분만이 빈번하게 접근될 수 있다. 근접 메모리 내에 전체적인 2MB 페이지를 저장하는 것은 귀중한 근접 메모리 공간을 낭비할 수 있다.
1.3 메모리 할당 다양성의 효과
여기서는 PARSEC benchmark suite를 사용하는 실제 시스템들을 이용한 메모리 할당 내의 분산을 보여준다. 각각 Linux 3.16.0 및 3.19.0을 실행하는 2및 4 소켓 NUMA 머신들 및 두 가지 상이한 x86 머신들 상에 매핑 연속성을 기록한다. 각 실행에 대한 메모리 매핑 상태를 변화시키기 위하여, 관심 있는 워크로드만 실행하거나 PARSEC으로부터 선택된 백그라운드 작업들을 임의적으로 함께 실행한다. 공존하는 임의의 백그라운드 작업들의 개수는 임의의 메모리 스와핑을 방지하는 반면, 시스템 메모리를 압박하도록 제어된다. 주기적으로 메모리 맵 스냅샷을 만들고, 각 실행에 대해 가장 큰 할당 상태에서 메모리 맵을 분석한다.
도 2는 2-소캣 및 4-소켓 시스템들 상에서 실행하는 두 가지 상이한 워크로드들의 CDF를 보여준다. x축은 연속적인 4KB 페이지들의 개수이다. 실선들은 다른 임의의 백그라운드 작업들과의 다중 실행인 반면, 점선은 워크로드가 혼자 실행될 때 메모리 매핑이다. 도 2는 메모리 할당 상태들이 상이한 공동-실행자들 또는 시스템 구성들에 의해 변화될 때 메모리 연속성의 다양한 변화를 보여준다. 명확한 패턴 없이, 결과들은 할당 연속성이 초기 상태에 기반하여 다소 임의적으로 변화한다는 점과 메모리 요청들이 다중 프로세스들로부터 어떻게 생성되는지를 보여준다.
연속성의 다양성이 보여준 바와 같이, 동일한 서버 상에서 실행되는 동일한 어플리케이션이라도 상이한 메모리 매핑들을 수신할 수 있다. 그러므로, 구체적인 매핑 상에서 작동하는 시스템을 설계하더라도 매핑 분포가 변화한다면 예상되는 바와 같이 기능하지 않을 수 있다.
도 3은 상이한 연속성 분포들에서 두 가지 종래 방식에 대한 평가 결과를 나타낸다. 연속성 분포들 및 구성들에 대한 구체적인 설명은 이하에서 다시 설명하기로 한다. 클러스터 TLB(cluster)는 작은 청크 배치에 대한 TLB 미스들을 효율적으로 감소시키지만, RMM은 적은 수의 범위 TLB들이 다수의 작은 청크들을 감당할 수 없기 때문에 효율적이지 않다. 그러나, 큰 청크들에 대해 클러스터 TLB(cluster)의 장점은 작은 청크 배치에 대한 것과 거의 유사하고, 증가된 연속성으로부터 좀 더 많은 개선점들을 얻지 않는다. 반면에, RMM은 큰 연속성 배치에 대해 TLB 미스들을 대부분 제거할 수 있다.
프로세스의 메모리 매핑은 가변하는 경향이 있기 때문에, 상이한 매핑 상황들에서 우수하게 기능하는 변환 방식을 설계할 필요가 있다. 본 발명에서는 상이한 종류의 메모리 매핑들에 대해 효율적인 변환을 제공하고자 하는 하이브리드 TLB 병합 메커니즘을 제안한다.
2.
하이브리드
TLB
병합
본 발명에서는 하이브리드 TLB 병합을 통해 조정 가능한 커버리지를 가진 TLB를 제공한다. HW(예컨대, 도 1의 프로세서(110))는 조정 가능한 TLB 커버리지를 제공하기 위해 TLB 커버리지를 조절할 수 있는 노브(knob)를 제공하고 SW인 운영 체제는 최적의 TLB 커버리지를 결정한다. 이때, 운영 체제는 프로세스 당 TLB 커버리지를 조절한다. 그리고, 운영 체제는 인접한 청크를 식별하고 이때 프로세스 페이지 테이블에 기입한다.
본 발명은 하이브리드 TLB 병합으로서 서로 다른 시스템의 서로 다른 메모리 매핑 요구를 만족시키기 위해 조정 가능한 커버리지를 가진 TLB를 제공한다. 다시 말해, SW는 주어진 프로세스에 대해 최적의 TLB 커버리지를 결정하고 HW 노브를 조정한다. 이때 SW는 HW TLB가 사용할 페이지 테이블에 인접 정보를 기입한다.
TLB에 조정 가능한 커버리지를 제공하기 위해 앵커(Anchor)라는 접근 방식을 소개한다. 앵커는 인접한 메모리 매핑 블록을 나타내는 페이지 테이블의 특수 엔트리로, 앵커 거리의 모든 얼라인먼트에 배치된다. 이때, 앵커 거리는 TLB 커버리지를 조정하기 위해 HW가 SW에 제공하는 노브로, 인코딩 효율을 위해 2의 제곱으로 정의되고 운영 체제에 의해 설정 가능하다.
도 4는 앵커 거리가 4인 페이지 테이블을 도시한 것이다. 앵커는 4의 얼라인먼트에 배치됨에 따라 자연스럽게 4 간격으로 배치된다.
앵커 페이지 테이블은 도 4의 페이지 테이블을 사용하고 앵커는 앵커 거리가 4인 연속적인 페이지를 커버한다. 이때, 각 앵커는 앵커에서 시작되는 연속성을 나타내고, 운영 체제는 앵커 페이지 테이블 엔트리에 연속성을 기입한다.
앵커 페이지 테이블 엔트리는 페이지 테이블 엔트리의 사용되지 않은 비트로 인코딩 된 추가 앵커 정보가 있는 레귤러 페이지 테이블로, 운영 체제에 의해 관리되고 업데이트 될 수 있다. 앵커 엔트리는 페이지 테이블의 모든 앵커 지점에 있다.
앵커의 한 가지 제약 조건은 앵커 엔트리에서 시작하는 인접한 청크를 나타낼 수 있다는 것이다. 도 5는 인접한 메모리 청크를 매핑하는 앵커 페이지 테이블 엔트리를 도시한 것이다. 실선 화살표는 앵커 매핑을 나타내고, 점선 화살표는 페이지 당 레귤러 매핑을 나타낸다. 앵커 엔트리는 앵커 블록의 연속성을 유지하며 앵커 블록의 연속성은 도 5에서의 숫자와 같이 운영 체제에 의해 기입된다. 네 번째 앵커 블록은 앵커 페이지 엔트리 뒤에 연속성이 없으므로 앵커 엔트리에 매핑되지 않으며, 마지막 블록은 연속성이 6이지만 앵커 엔트리로 시작하는 마지막 4페이지만 앵커 엔트리로 매핑된다. 이때, 운영 체제의 임무는 앵커 엔트리에 인접 청크의 연속 정보를 기입되는 것이다.
앵커 TLB는 L2 TLB에 통합되며 레귤러와 앵커 페이지 테이블 엔트리 모두 캐시하고, 이때 레귤러와 앵커는 다르게 인덱싱 될 수 있다. 도 6을 참조하면, 앵커 TLB는 L2 TLB와 통합되며 L2 TLB에 대한 변환은 L1 TLB에 대응되고, 앵커 TLB 또한 L1 TLB와의 호환성을 제공한다. 가상 페이지 아래의 앵커 TLB 엔트리는 실선 박스를, 레귤러 TLB 엔트리는 점선 박스로 나타낸 것이다. 태그 이외에 앵커 엔트리는 인접 정보를 보유한다. 앵커 TLB는 앵커 및 레귤러 페이지 테이블 엔트리의 변환을 캐시한다.
앵커 TLB는 L2 TLB의 확장으로, L1 TLB 미스에서 레귤러 TLB 엔트리가 먼저 검색되고, 레귤러 TLB 룩업이 미스이면 앵커 TLB가 검색된다. 검색 순서는 이에 한정되는 것은 아니며, 앵커 엔트리 히트율이 더 좋은 경우 앵커 룩업 이후에 레귤러 룩업을 하는 것 또한 가능하다. 도 7은 변환하고자 하는 가상 주소에 대한 앵커 TLB 룩업 예시를 도시한 것이다. 먼저 현재 앵커 거리를 사용하여 가상 페이지의 앵커 엔트리를 찾고 그런 다음 앵커 엔트리에서 앵커 TLB가 검색된다. 앵커 TLB가 유효한 엔트리가 반환되면 앵커 엔트리의 연속성은 그 앵커 엔트리로 변환되는 페이지의 오프셋과 비교하여 오프셋이 연속성 내에 있으면 앵커 히트로 해당 물리적 주소가 계산된다. 반면에, 오프셋이 연속성을 벗어나면 앵커 미스로 페이지 테이블 워크를 트리거 한다.
HW가 조정 가능한 TLB 커버리지를 제공하기 위해 SW인 운영 체제는 최적의 TLB 커버리지를 결정한다. 운영 체제는 프로세스 앵커 거리를 주기적으로 선택하고, 예를 들어 TLB 엔트리 수를 최소화 하는 휴리스틱 알고리즘을 이용하여 최적의 앵커 거리를 조정할 수 있다. 응용 프로그램을 실행하는 동안 운영 체제는 주기적으로 메모리 매핑 분포를 스캔하고 휴리스틱 알고리즘을 통해 적절한 거리를 선택한 후 선택된 거리에 따라 앵커 거리를 조정할 수 있다. 그리고, 운영 체제는 매핑 연속성을 기입하는 역할을 하며, 앵커 페이지 테이블 엔트리에서의 메모리 매핑 연속성을 기입할 수 있다. 다시 말해, 앵커 TLB가 운영 체제에 의존하여 페이지 테이블에 인접 정보를 제공하기 때문에 운영 체제는 적절한 앵커 엔트리를 앵커 연속 정보로 기입할 필요가 있다.
본 실시예에서는 앵커 거리를 주기적으로 선택하여 조정하는 것으로 설명하고 있으나, 이러한 것으로만 한정되는 것은 아니다. 예를 들어, 단일 프로세스만이 운영되는 시스템 등과 같은 환경에서는 앵커 거리를 주기적으로 조정할 필요 없이 프로세스에 할당된 메모리 매핑에 따른 거리로 고정하는 것 또한 가능하다.
이하에서는 조정 가능한 커버리지를 가진 TLB를 제공하는 방법에 대해 구체적으로 설명하기로 한다.
2.1 앵커 페이지 테이블
큰 페이지들, 세그먼트들 및 HW 병합은 제한된 HW 자원들로부터 주소 변환의 커버리지를 확장할 수 있다. 그러나, 상기한 접근 방법들은 상이한 레벨의 커버리지 확장성을 제공함과 동시에, 운영 체제에 메모리 할당 유연성에 대한 상이한 제한들을 부과한다. 본 발명에서는 HW-병합에 비해 더 나은 커버리지 확장성을 지원함과 동시에 유연한 메모리 할당을 지원하기 위하여 기존 접근 방법들의 아키텍처 컴포넌트 및 운영 체제의 역할을 재조정한다.
연속적인 페이지들을 식별하기 위하여 HW 로직에 의존하는 대신에, 운영 체제가 연속성 상태를 페이지 테이블 엔트리의 일부분에 기록하기 위하여 고유의 메모리 할당 정보를 사용한다. TLB 룩업 로직에 필요한 HW 변화들은 현재 MMU의 기존 구성요소들을 대부분 사용함으로써 최소화된다. 연속적인 청크 정보를 기록하기 위하여, 매 N 페이지 테이블 엔트리는 앵커 엔트리로서 지정된다. 앵커들은 N만큼 정렬된 엔트리 상에 배치된다. N은 두 인접한 앵커 엔트리들 간의 거리이다. 각 앵커 엔트리는 앵커 엔트리로부터 시작해서 얼마나 많은 후속 페이지들이 연속적으로 할당되는지를 포함한다. 앵커 엔트리는 앵커 포인트뿐만 아니라 레귤러 페이지 테이블 엔트리(regular page table entry)로서 기능한다.
도 8은 앵커 페이지 테이블의 예시를 나타낸다. 예를 들어, 앵커 거리 N은 4이므로 매 4번째 엔트리는 앵커 엔트리(도 8에서 A 엔트리 타입)로 지정된다. 도 9에 도시된 바와 같이, 앵커 페이지 테이블 엔트리(Anchor PTE)는 얼마나 많은 후속 페이지들이 연속적으로 매핑되는지를 기록하기 위하여 사용되지 않는 비트(unused bits)를 사용한다. 도 8의 가상 페이지 번호 0x40에서 첫 번째 앵커 엔트리는 연속적으로 할당되는 두 페이지들을 갖는다(연속성 = 2). 연속성 숫자는 운영 체제에 의해 유지된다. 메모리 페이지들이 새롭게 할당되거나, 재배치되거나, 할당이 해제되면, 운영 체제는 그 페이지에 대한 엔트리를 업데이트하는 것 외에도 대응하는 앵커 엔트리 내 연속성 정보를 업데이트해야만 한다. 앵커 페이지 테이블은 기존 것들과 동일한 페이지 테이블 구성을 사용하고, 단지 페이지 테이블 엔트리의 서브세트 내의 사용되지 않는 비트들을 사용하여 추가적인 연속성 정보를 인코딩 한다.
앵커 거리 N은 프로세스의 메모리 연속성 상태를 반영하도록 결정되어야 한다. 예를 들어, 모든 메모리 페이지들이 64KB 청크 내에 할당된다면, 최적의 앵커 거리는 16(64KB/4KB)이다. 그러나, 실제 메모리 할당은 현재의 파편화 상태와 함께, 시스템 메모리 구성, 운영 체제 할당 방식 및 어플리케이션의 메모리 할당 동작에 의존하여 다양한 청크 사이즈로 구성된다. 최적의 앵커 거리를 찾기 위한 운영 체제 알고리즘에 대해 이하에서 다시 설명하기로 한다. 앵커 거리는 페이지 테이블 포인터(x86의 CR3)와 함께 각 프로세스의 컨텍스트 정보에 부가되어야 한다. 매 컨텍스트 스위치에 대해 앵커 거리는 앵커 거리 레지스터에 저장되어야 한다.
도 9는 일반적으로 사용되는 페이지 테이블 엔트리 및 앵커 엔트리의 세부 항목을 보여준다. 앵커 엔트리는 레귤러 페이지 테이블 엔트리이기도 하지만 연속성 정보를 저장하기 위하여 사용되지 않는 비트를 사용한다. TLB 내에 연속성 필드를 저장하기 위하여 각 TLB 엔트리는 TLB 내에 페이지 테이블 엔트리의 사용되지 않는 비트를 저장하는 것을 필요로 하지 않는 종래의 것에 비하여 좀 더 증가될 필요가 있다.
그러나, 앵커 TLB의 미래를 보장하고 충분한 확장성을 제공하기 위하여 다수의 페이지 테이블 엔트리들 사이에서 연속성을 분포시키는 것을 제안한다. 페이지 테이블 엔트리들은 항상 64B의 캐시 블록 당 8개의 엔트리 그룹 내에 저장된다. 8의 앵커 거리에 대해 캐시 블록의 첫 번째 페이지 테이블 엔트리는 캐시 블록 내의 7개 나머지 엔트리들의 앵커이다. 그러므로, 3비트는 8의 앵커 거리를 표현하기에 충분하고, 이것은 단일 페이지 테이블 엔트리에 적절하다.
더 큰 앵커 거리를 나타낼 필요가 있는 경우, 페이지 테이블 엔트리 내에 사용될 수 있는 8비트가 여전히 있다. 게다가, 실제 앵커 엔트리로부터 시작하는, 동일한 캐시 블록의 다수의 페이지 테이블 엔트리의 사용되지 않는 비트를 사용할 수 있다. 8보다 큰 앵커 거리에 대한 임의의 앵커가 항상 캐시 블록의 첫 번째 페이지 테이블 엔트리에 정렬될 수 있기 때문에, 앵커 연속성 리딩 로직은 동일한 캐시 블록 내 페이지 테이블 엔트리에 걸쳐 분포된 연속성 비트들을 읽을 때에는 항상 캐시 블록의 첫 번째 엔트리로부터 읽을 수 있다. 현재 252B의 물리 주소 최대 값이 유지된다면, 2(11x8)개까지의 충분한 연속성을 허용한다. 물리 주소 최대값이 (5-레벨 페이징의 가상 주소 공간에 매치하기 위하여) 257B까지 올라간다면, 2(6x8)개의 연속성이 여전히 사용 가능하다. 이 연속성은 매우 충분하다. 페이지 테이블 엔트리가 캐시 블록 단위로 주 메모리로부터 호출된다는 점과 동일한 캐시 블록에 존재하는 상이한 페이지 테이블 엔트리로부터 연속성 비트를 읽기 위하여 임의의 추가적인 메모리 접근을 야기하지 않을 것이라는 점이 중요하다.
본 실시예에서는 앵커 엔트리로부터 연속적인 4KB 페이지들의 개수를 표현하기 위하여 연속성 필드에 대하여 16 비트(216개의 연속성 최대값)를 사용한다.
2.2 앵커 페이지 테이블을 이용한 변환
앵커 페이지 테이블을 이용하여 변환하기 위해서는 MMU에 미미한 변화를 주면 된다. 앵커 및 레귤러 페이지 테이블 엔트리가 동일한 TLB를 공유하기 때문에, 연속성 필드를 저장하는 것에 대해 TLB 구조는 엔트리 당 적은 비트를 부가하는 것을 제외하고는 변형될 필요가 없다. L1 TLB는 코어와 밀접하게 통합되고 성능은 그것의 접근 레이턴시에 민감하기 때문에 앵커 TLB를 위한 지원은 L2 TLB에 부가된다.
도 10은 TLB 및 L1 TLB 미스에 대한 페이지 테이블 룩업의 예시를 도시한 것이다.
L1 TLB 미스가 발생하면 L2 TLB는 룩업되고, 도 10 (a)에 도시된 바와 같이 히트가 발생하면, 변환은 TLB 엔트리 내에 저장된 물리 페이지 번호를 사용함으로써 완료된다. L2 TLB 미스가 발생하면 기존 페이지 테이블 워크를 시작하는 것 대신에, 도 10 (b)에 도시된 바와 같이, VPN에 대한 대응하는 앵커 엔트리는 L2 TLB를 룩업하고, 매칭되는 앵커 엔트리가 발견되면, 변환이 완료된다. 도 10 (c)에 도시된 바와 같이, 앵커 엔트리 미스 또는 연속성 미스가 발생하면, 페이지 워크가 트리거된다. L2 TLB가 레귤러 및 앵커 TLB 엔트리 모두를 포함하고 있는 점을 주목해야 한다.
도 11은 L2 TLB 동작의 흐름을 요약한다. 첫 번째 두 열은 각각 레귤러 TLB 히트 및 앵커 히트를 나타낸다. 세 번째 열은 앵커 룩업은 성공하였으나 대응하는 VPN이 앵커의 연속성 블록에 속하지 않고, 결과적으로 미스가 발생한 케이스를 나타낸다. 이 케이스에서, VPN에 대한 변환 정보는 대응하는 페이지 테이블 엔트리 내에만 존재하고 레귤러 TLB 필(fill) 이후 페이지 테이블 워크를 요구한다.
다음으로, 마지막 두 열은 레귤러 TLB 및 앵커 룩업 모두에 미스가 발생하고 페이지 테이블 워크를 야기하는 케이스를 보여준다. 그러나, 페이지 테이블 워크가 완료될 때까지 VPN이 앵커 블록의 일부분인지 아닌지는 알려지지 않으므로 레귤러 TLB 엔트리 및 앵커 TLB 엔트리 모두는 호출될 필요가 있다. 실행의 긴급함에 의해, 도 10 (c)에 도시된 바와 같이, 레귤러 TLB 엔트리가 처음 호출되고 코어 ⑤ 및 L1 TLB ⑥ 상으로 전달된다. 앵커 페이지 테이블 엔트리는 그 후 호출되고 VPN은 앵커 블록 ⑦에 속하는지 확인하기 위해 체크된다. 이 호출 및 체크 단계는 더 이상 코어 실행의 핵심 경로에 있지 않다. VPN이 (연속성 매칭에 의해 승인되어) 앵커 블록 내에 속한다면, 앵커 TLB 엔트리는 L2 TLB로 삽입된다. VPN이 (연속성 매칭에 의해 거절되어) 앵커 블록에 속하지 않는다면, 레귤러 TLB 엔트리가 L2 TLB에 삽입된다.
다음으로 어떻게 앵커 엔트리가 룩업되는지에 대해서는 다음과 같다. 변환하기 위해 주어진 VPN에 대하여, 들어오는 VPN의 앵커 가상 페이지 번호(anchor virtual page number; AVPN)가 배치될 필요가 있다. AVPN은 앵커 거리의 매 정렬 경계마다 배치된다. 예를 들어, 앵커 거리가 4라면, AVPN은 0, 4, 8 등의 프레임에 배치된다. 그러므로, 들어오는 VPN의 AVPN을 배치하는 것은 앵커 거리에 의해 VPN을 정렬함으로써 계산된다. 이 계산은 AVPN을 야기하는 VPN의 log2 (앵커 거리) LSB 비트를 명확히 함으로써 이행된다. 이후, log2 (앵커 거리)를 기입하기 위하여 심볼 d를 사용할 것이고, 이는 도 12에 도시되어 있다.
TLB의 인덱싱 방식은 앵커 엔트리를 효율적으로 저장하기 위해 변형을 요구한다. 도 12은 가상 주소와 VPN 간의 관계 및 TLB 내에서 어떻게 VPN이 인덱싱 되는지를 나타낸다. AVPN은 2d개 페이지로 정렬되기 때문에, [12:d+12] 비트 내에 0 값을 갖는 비트들을 갖는다. 모든 연속적인 AVPN이 상이한 세트의 TLB로 매핑되도록 보장하고 앵커 엔트리에 대한 모든 세트의 TLB를 사용하기 위하여, 가상 주소의 [d+12:d+12+N] 비트들은 인덱스 비트로 사용되고, N은 log2 (L2 T LB 내 세트의 개수)를 기입한다. 비트 [12:d+12]는 VPN과 대응하는 AVPN 간의 거리를 포함한다. 이 거리는 VPN이 앵커 서브 블록의 일부분인지 아닌지를 결정하기 위하여 앵커 TLB 엔트리의 연속성 값과 비교된다. 앵커 히트에 대한 변환을 마치기 위해, 물리적 페이지 번호는 VPN과 그 앵커 간의 거리인 (VPN-AVPN)을 앵커 엔트리에 저장된 물리적 페이지 번호(APPN)에 더함으로써 직접적으로 계산된다. 최종적인 물리적 페이지 번호는 APPN+(VPN-AVPN)이다.
더 많은 페이지들이 앵커 엔트리에 의해 연속적으로 할당될수록, 이러한 페이지들에 대한 변환 요청은 TLB에 레귤러 엔트리를 더하는 것을 필요로 하지 않고 오직 앵커 엔트리 사용만을 필요로 한다. 변환이 앵커 엔트리를 이용하여 성공적으로 완료된다면, VPN에 대한 실제 페이지 테이블 엔트리는 페이지 테이블로부터 호출되지 않고, 페이지 워크 및 TLB의 불필요한 오염을 방지한 이상적인 환경에서 TLB는 오직 앵커 엔트리로 채워질 것이고, 각 앵커 엔트리는 연속성 개수 내에서 다수의 페이지에 대한 변환을 제공할 수 있다. 각 앵커 엔트리의 변환 커버리지는 프로세스-차원 앵커 거리에 의해 제한되고, 이는 프로세스에 할당된 메모리 청크의 연속성에 따라 운영 체제에 의해 설정된다. 따라서, 앵커 TLB는 적응 가능하고 확장 가능하다.
2.3 운영 체제 관련
하이브리드 병합을 지원하기 위해 추가 HW 컴포넌트는 앵커 거리를 포함하기 위한 부가 레지스터 및 앵커 물리 주소로부터 물리적 주소를 생성하기 위한 가산기로 제한된다. 앵커 엔트리 내에 연속성 정보를 유지하기 위하여 운영 체제는 약간의 변경을 요구한다.
메모리 매핑 업데이트: 물리 메모리 프레임은 운영 체제에 의하여 프로세스에 대해 할당되거나 재배치되거나 할당이 해제될 수 있다. 운영 체제가 변화된 페이지의 페이지 테이블 엔트리를 업데이트 하는 것 외에도 프로세스 생성에 대한 처음 메모리 할당을 포함하여 프로세스에 대한 메모리 할당을 업데이트할 때마다 앵커 엔트리 내의 연속성 비트들이 메모리 할당 변화에 의해 영향을 받는다면 관련된 앵커 엔트리들은 업데이트될 필요가 있을 수 있다. 페이지 테이블 엔트리 및 앵커 엔트리를 업데이트한 후에 종래 TLB 슛다운(shootdown)이 발생되고 이는 모든 코어의 TLB로부터 페이지 테이블 엔트리 및 앵커 엔트리 모두를 무효화한다.
앵커 거리 변화: 두 번째 변화는 메모리 할당 상태에 기반하여 각 프로세스에 대한 최적 앵커 거리를 결정하는 것이다. 운영 체제는 드물게 프로세스의 할당된 메모리 내의 파편화를 체크하고, 최적의 앵커 거리를 결정한다. 운영 체제가 앵커 거리를 변화시킬 때, 이러한 변화는 전체적인 페이지 테이블을 통해 전파되어야 한다. 앵커 거리를 변화시키기 위해서는 페이지 테이블을 업데이트하고, TLB를 동기화하는 두 가지 비용을 필요로 한다. 새로운 거리에 대한 앵커 엔트리는 적절한 연속성 정보를 저장하기 위해 업데이트된다. 프로세스를 업데이트하는 동안, 앵커 TLB 엔트리를 생성할 때 페이지 테이블 워커는 이러한 엔트리들을 단지 바라볼 것이기 때문에, 오직 앵커 거리 정렬 상에 놓여 있는 페이지 테이블 엔트리만이 변화될 필요가 있다. 예를 들어, 4의 앵커 거리에 대해 0, 4, 8 등에서 앵커 엔트리가 업데이트될 수 있다. 그러면, 거리가 더 큰 거리로 변화될 때, 앵커 간의 거리가 증가되기 때문에 더 작은 수의 앵커 엔트리들이 업데이트될 필요가 있다. 반면에, 거리가 더 작은 거리로 변화될 때, 더 많은 앵커 엔트리들이 업데이트될 필요가 있다. 우리는 앵커 거리를 변화시키는 것의 오버헤드를 수집하기 위하여 실험을 수행했다. 프로세스가 30GB의 메모리를 사용할 때, 전체적인 페이지 테이블을 스윕하는 비용은 앵커 거리를 8, 64 및 512로 변화시키는 각각의 경우에 대해 452ms, 71.7ms, 1.7ms이다. 프로세스가 생성될 때, 디폴트 앵커 거리는 운영 체제에 의해 선택된 임의의 수로 설정될 수 있고, 충분한 메모리가 할당되면 선택된 앵커 거리로 변화할 수 있다. 어플리케이션의 메모리 매핑이 실행 과정에서 빈번하게 변화하고 상이한 최적의 앵커 거리를 야기하는 경우, 운영 체제는 앵커 거리를 변화시키는 것의 이점 및 비용에 기반하여 결정을 내릴 수 있다. 두 번째 비용은 페이지 테이블을 업데이트한 이후 TLB를 동기화하는 것이다. 본 발명에서 전체적인 페이지 테이블을 업데이트 할 것이고, 전체적인 TLB를 무효화할 것이다. X86 용 네이티브 Linux 커널이 컨텍스트 스위치에서 TLB를 플러시한다는 점을 고려하면, TLB를 무효화하는 비용은 상대적으로 미미할 수 있다. 또한, 본 발명에서 메모리 맵 변경은 10억개 명령의 주기적인 에포크 단위마다 체크된다고 가정한다. 주기적인 체크를 함에도 상이한 에포크 단위가 여전히 동일한 레벨의 메모리 청크 할당을 사용하기 때문에 실제 앵커 거리 변경은 드물다. 앵커 거리 변경이 드물게 수행된다. 메모리 매핑이 극적으로 변화하는 구체적인 어플리케이션 또는 상황에 대하여 운영 체제는 얼마나 자주 그것이 호출될 수 있는지에 대한 제한을 설정할 수 있다.
권한 및 페이지 공유: 주소 매핑이 연속적이더라도, 페이지는 상이한 r/w/x 권한을 가질 수 있다. 하이브리드 병합은 상이한 권한을 갖는 페이지를 비-연속적인 페이지로 간단하게 취급함으로써 임의의 작은 단위 승인을 지원할 수 있다. 그 페이지에 대한 변환은 앵커 엔트리로 취급되면 안 된다. 그러한 작은 단위의 권한 차이들이 임의의 TLB 병합 기술들의 효율성을 감소시킨다고 하더라도, 기존 기술들은 더 큰 세분화 수준에서 권한들이 일반적으로 균일하다는 것과 일반적인 어플리케이션에서 실제 성능에 미치는 영향이 미미할 것으로 예상된다. 프로세스에 걸친 페이지 공유의 경우 연속성은 각 프로세스의 페이지 테이블에서 설정된다. 그러므로, 비록 각 프로세스에 대해 선택된 앵커 거리에 의해 효율성이 달라질 수 있다고 하더라도, 공유된 영역 내의 연속성은 이용될 수 있다.
3. 동적 앵커 거리
이하에서는 페이지 테이블 내 앵커 엔트리의 최적 밀도를 찾기 위하여 동적 앵커 거리 선택 알고리즘을 설명한다. 프로세스 앵커 거리는 프로세스에 할당된 연속 메모리 청크의 분포에 기반하여 결정된다. 프로세스 실행의 처음에는 단지 적은 양의 메모리만이 할당되지만, 많은 프로세스들은 실행의 초기 단계에서, 나머지의 실행을 위해 사용하는 다수의 메모리를 할당한다. 초기 메모리 할당 단계가 안정화되면, 앵커 거리는 청크 분포로부터 선택될 수 있다.
그러나, 프로세스는 메모리 매핑의 변화를 야기하면서 메모리를 동적으로 할당하고 할당을 해제하기 때문에 메모리 매핑은 프로세스를 실행하는 동안에도 변화할 수 있다. 나아가, 운영 체제는 성능을 최적화하기 위하여 메모리 매핑을 재조정할 수 있다. Linux 커널은 각 프로세스에 대한 더 큰 페이지를 생성하려는 노력으로서 메모리를 압축하려는 시도를 할 수 있다. 운영 체제는 충분한 예약 페이지들이 관여되었을 때 페이지들을 수퍼 페이지로 승격시킬 수 있다. 큰 페이지들의 페이지들이 매핑되지 않거나 심지어 NUMAness용 시스템을 최적화하는 도구에 의해 시작되는 경우 큰 페이지들은 운영 체제에 의해 강등될 수 있다.
임의의 실행 중인 어플리케이션의 메모리 매핑은 동적으로 변화할 수 있고 동일한 어플리케이션의 각 실행은 상이한 매핑을 야기할 수 있기 때문에, 운영 체제는 운영 체제 내에서 사용할 수 있는 정보에 기반하여 적절한 앵커 거리를 설정하는 수단을 제공할 필요가 있다. 본 발명에서 운영 체제는 각 프로세스의 청크 분포를 주기적으로 체크하고 최적 앵커 거리를 다시 계산한다. 새로운 앵커 거리가 현재의 거리와 충분히 상이하다면 앵커 거리는 업데이트되고 앵커 거리를 변경하는 작업이 발생한다.
3.1 선택 프로세스 개요
선택 알고리즘의 주된 목표는 프로세스에 매핑되는 활성 페이지들에 대한 커버리지를 제공하기 위해 요구되는 TLB 엔트리(앵커, 큰 페이지 및 4KB 페이지 엔트리)의 수를 최소화 하는 것이다. 메모리 연속성 상태를 평가하기 위하여 운영 체제는 연속성 분포의 히스토그램을 유지한다. 연속성 히스토그램은 가변 연속성 중 얼마나 많은 연속 메모리 청크들이 프로세스에 할당되는지를 나타낸다.
연속성 히스토그램을 사용하여 TLB 내에 페이지 매핑을 저장하는 비용이 경험적 근사에 의해 추정된다. 비용을 최소화하는 앵커 거리는 최적 앵커 거리로서 선택될 수 있다. 이 방법에서, 현재 시스템에서 빈도 정보를 정확하게 수집하는 것은 비용이 많이 들기 때문에, 페이지 접근 빈도는 고려되지 않는 점을 주목해야 한다. 앵커 거리 선택 프로세스는 연속성 히스토그램으로서 요약되는 정보를 매핑하는 정적 메모리만을 사용한다. 본 발명에서는 이러한 정적 추정이 최적 앵커 거리를 찾기 위한 합리적인 정확성을 제공한다.
구체적인 알고리즘은 도 13에 도시된 바와 같다.
경험적 선택: 운영 체제는 프로세스의 메모리 페이지의 연속성을 나타내기 위하여 연속성 히스토그램을 유지한다. 연속성 히스토그램의 각 엔트리는 연속성 및 빈도라는 두 값을 가질 수 있다. 연속성은 청크의 사이즈를 나타내고 빈도는 대응하는 연속성의 얼마나 많은 청크들이 할당되었는지를 나타낸다. 연속성 히스토그램을 사용하여 운영 체제는 프로세스의 전체적인 메모리 풋프린트를 포함하기 위하여 얼마나 많은 TLB 엔트리들이 요구되는지 추정한다. 모든 가능한 앵커 거리 값에 대하여 운영 체제는 연속성 히스토그램을 살펴보고 각 앵커 거리에 대한 비용을 조합한다.
도 13에 도시된 알고리즘 1의 상위 레벨 설명은 다음과 같다. 앵커 거리 당 비용을 계산하기 위하여 요구되는 가상 TLB 엔트리의 수는 근사된다. 모든 앵커 거리에 대한 비용들이 계산되면 가장 적은 비용을 갖는 거리가 선택된다.
요구되는 TLB 엔트리의 수는 4KB 페이지, 2MB 큰 페이지 및 앵커 영역에 대해 따로따로 카운트될 수 있다. 예를 들어, 16의 앵커 거리는 64KB(16×4KB)의 사이즈를 처리하기 위하여 단일한 앵커 엔트리를 허용한다. 그러한 케이스에서, 128KB 청크의 메모리가 두 개의 앵커 TLB 엔트리를 요구하는 반면, 64KB 메모리의 연속적인 청크는 단일한 앵커 TLB 엔트리를 요구할 수 있다. 앵커 엔트리의 커버리지가 청크에서 제외된 후에 청크 내에 남아 있는 페이지들이 존재하면 필요한 2MB 페이지의 수가 계산된다. 2MB 페이지 제외 후에 남아 있는 페이지들은 4KB 페이지로 처리되어야 한다. 상이한 타입의 페이지들에 대해 필요한 수의 엔트리들이 계산되면 총 비용은 상이한 타입의 가중치 합으로부터 얻어진다. 가중치는 각 타입 커버리지의 역수이다.
거리 안정성: 앞서 설명한 바와 같이 앵커 거리를 변경하는 것은 비용이 많이 드는 태스크이기 때문에 거리 선택 알고리즘의 안정성은 중요하다. 거리 선택 알고리즘은 상당한 메모리 매핑 분포 변화에 적응하기 위하여 주기적으로 실행된다. 비록 동적 선택 메커니즘이 주기적으로 최적 앵커 거리를 체크하지만, 많은 양의 메모리 페이지가 프로세스에 할당되면 청크 분포는 나머지 실행에 대해 크게 변경되지 않기 때문에 각 프로세스에 대한 최적 앵커 거리는 거의 변경되지 않는다.
본 발명에서 이용된 알고리즘은 앵커 거리 선택의 안정성을 제공하고 상당한 오버헤드를 야기할 수 있는 빈번한 거리 변경을 방지한다.
도 13의 알고리즘은 예시적인 것으로 이에 한정되는 것은 아니며, 최적의 앵커 거리를 선택할 수 있는 다른 알고리즘의 적용 또한 가능하다.
상기한 동적 거리 선택 방식은 실행 프로세스의 전체적인 주소 공간은 단일한 클러스터 거리를 갖는다고 암묵적으로 가정한다. 그러나, 주소 공간은 코드, 데이터, 공유 라이브러리, 힙 및 스택과 같은 상이한 시멘틱 메모리 영역들을 갖는다. 상이한 영역들은 상이한 연속성을 갖는다. 또한, 동일한 시멘틱 영역 내 일지라도 운영 체제는 프로세스를 실행하는 동안 상이한 메모리 상태를 가질 수 있기 때문에 연속성 분포는 상이할 수 있다.
그러므로, 앵커 TLB의 성능을 더 개선하기 위하여 영역이 도입될 수 있다. 영역은 영역에 대해 최적화된 분리 앵커 거리를 갖는 가상 주소 공간의 일부이다. 주어진 영역에 대한 주소 변환은 영역-특정 앵커 거리를 사용한다. 그러한 다중-영역 앵커 TLB를 지원하기 위하여 추가적인 하드웨어는 각 영역에 대한 앵커 거리, 시작 VPN 및 종료 VPN을 포함하는 다수의 영역 정의를 포함해야 한다. 추가적인 HW 컴포넌트는 RMM 내의 범위 TLB 구조와 유사하다. 영역 테이블은 4KB/2MB TLB 룩업을 병행하여 룩업될 것이다. 모든 영역들은 빠른 접근에 대해 유사하게 탐색되어야 하기 때문에 영역들의 수는 제한된다. TLB 룩업에 미스가 발생하면 매칭 영역으로부터의 앵커 거리는 L2 TLB 내의 앵커 엔트리를 룩업하기 위해 사용된다. 동적 거리 선택은 연속성 변화가 있는 경우 메모리를 상이한 영역들로 분할하는 것으로 확장될 수 있다.
따라서, 본 발명에 따른 하이브리드 병합 기술에서 운영 체제는 페이지 테이블 엔트리의 서브세트 내에 앵커 엔트리라고 불리는 메모리 연속성 정보를 인코딩한다. TLB를 통해 주소를 변환하는 동안 앵커 엔트리는 앵커 엔트리에 후속하는 연속적인 페이지들에 대한 변환을 제공한다. 더 작은 수의 앵커 엔트리들이 가상 주소 공간의 더 큰 부분을 취급할 수 있기 때문에 TLB의 효율성은 상당히 개선될 수 있다. 하이브리드 병합의 가장 중요한 이점은 앵커 엔트리의 커버리지를 동적으로 변화시키는 능력이고, 이는 현재 할당 연속성 상태를 나타낸다. 운영 체제에 의해 직접적으로 설정된 연속성 정보를 사용함으로써 메모리 할당의 유연성을 허용함과 동시에, 작은 하드웨어 변화로도 확장 가능한 변환 커버리지 개선을 제공할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (17)
- 주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 방법에 있어서,
하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 단계를 포함하고,
상기 TLB를 제공하는 단계는,
상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것
을 특징으로 하는 방법. - 제1항에 있어서,
상기 TLB를 제공하는 단계는,
상기 TLB가 사용할 페이지 테이블에서 상기 운영 체제에 의해 설정된 앵커 거리의 얼라인먼트(alignment)에 인접한 메모리 매핑 블록을 나타내는 엔트리로서 앵커 엔트리(anchor entry)를 지정하는 단계를 포함하고,
상기 앵커 거리마다 지정된 앵커 엔트리에 해당되는 페이지 테이블의 서브세트 내에서 연속성 정보를 인코딩 하는 것
을 특징으로 하는 방법. - 제2항에 있어서,
상기 앵커 거리는 상기 TLB 커버리지를 조정하기 위해 상기 하드웨어가 상기 소프트웨어에 제공하는 노브로 상기 운영 체제에 의해 설정되는 것
을 특징으로 하는 방법. - 제2항에 있어서,
상기 앵커 엔트리에 해당되는 페이지 테이블 엔트리는 페이지 테이블 엔트리의 사용되지 않은 비트로 인코딩 된 추가 앵커 정보가 있는 레귤러 페이지 테이블(regular page table)로 상기 운영 체제에 의해 관리되고 업데이트 되는 것
을 특징으로 하는 방법. - 제2항에 있어서,
상기 TLB를 제공하는 단계는,
레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 캐시된 앵커 TLB를 제공하는 단계를 포함하고,
상기 앵커 TLB에는 레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 서로 다르게 인덱싱 되는 것
을 특징으로 하는 방법. - 제5항에 있어서,
상기 TLB를 제공하는 단계는,
페이지 테이블 룩업 시 상기 레귤러 페이지 테이블 엔트리와 상기 앵커 페이지 테이블 엔트리 중 어느 하나를 먼저 검색하고 미스(miss)가 발생하면 다른 하나를 검색하는 단계를 포함하는 것
을 특징으로 하는 방법. - 제5항에 있어서,
상기 TLB를 제공하는 단계는,
상기 앵커 TLB에서 유효한 엔트리가 반환되면 상기 앵커 엔트리로 변환되는 페이지의 오프셋이 해당 앵커 엔트리의 연속성 이내인 경우 상기 반환된 엔트리를 물리적 주소로 변환하는 단계를 포함하는 것
을 특징으로 하는 방법. - 제2항에 있어서,
상기 TLB를 제공하는 단계는,
상기 운영 체제가 상기 주어진 프로세스에 대한 메모리 매핑 분포를 스캔하여 상기 앵커 엔트리를 지정하기 위한 상기 앵커 거리를 선택하는 단계를 포함하는 것
을 특징으로 하는 방법. - 제8항에 있어서,
상기 앵커 거리를 선택하는 단계는,
상기 프로세스에 대해 요구되는 TLB 엔트리의 수를 최소화 하는 알고리즘을 이용하여 상기 앵커 거리를 선택하고,
상기 앵커 거리마다 지정된 상기 앵커 엔트리에 인접 청크의 연속성 정보를 기입하는 것
을 특징으로 하는 방법. - 주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 방법을 컴퓨터에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램에 있어서,
상기 방법은,
하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 단계를 포함하고,
상기 TLB를 제공하는 단계는,
상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것
을 특징으로 하는, 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램. - 주어진 프로세스의 메모리 매핑 요구를 만족시키기 위한 TLB(translation lookaside buffer)를 제공하는 시스템에 있어서,
컴퓨터에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서는,
하드웨어(hardware)와 소프트웨어(software)의 공동 작업인 하이브리드 병합(hybrid coalescing)을 통해 조정 가능한 커버리지(coverage)를 가진 TLB를 제공하는 과정을 처리하고,
상기 TLB를 제공하는 과정은,
상기 하드웨어가 조정 가능한 TLB 커버리지를 제공하기 위해 상기 소프트웨어인 운영 체제(OS)가 주어진 프로세스에 대해 TLB 커버리지를 조절하고 상기 운영 체제가 인접한 청크(contiguous chunk)를 식별하여 식별된 인접 정보를 상기 TLB가 사용할 페이지 테이블(page table)에 기입하는 것
을 특징으로 하는 시스템. - 제11항에 있어서,
상기 TLB를 제공하는 과정은,
상기 TLB가 사용할 페이지 테이블에서 상기 운영 체제에 의해 설정된 앵커 거리의 얼라인먼트(alignment)에 인접한 메모리 매핑 블록을 나타내는 엔트리로서 앵커 엔트리(anchor entry)를 지정하고,
상기 앵커 거리마다 지정된 앵커 엔트리에 해당되는 페이지 테이블의 서브세트 내에서 연속성 정보를 인코딩 하는 것
을 특징으로 하는 시스템. - 제12항에 있어서,
상기 TLB를 제공하는 과정은,
레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 캐시된 앵커 TLB를 제공하고,
상기 앵커 TLB에는 레귤러 페이지 테이블 엔트리와 앵커 페이지 테이블 엔트리가 서로 다르게 인덱싱 되는 것
을 특징으로 하는 시스템. - 제13항에 있어서,
상기 TLB를 제공하는 과정은,
페이지 테이블 룩업 시 상기 레귤러 페이지 테이블 엔트리와 상기 앵커 페이지 테이블 엔트리 중 어느 하나를 먼저 검색하고 미스(miss)가 발생하면 다른 하나를 검색하는 것
을 특징으로 하는 시스템. - 제13항에 있어서,
상기 TLB를 제공하는 과정은,
상기 앵커 TLB에서 유효한 엔트리가 반환되면 상기 앵커 엔트리로 변환되는 페이지의 오프셋이 해당 앵커 엔트리의 연속성 이내인 경우 상기 반환된 엔트리를 물리적 주소로 변환하는 것
을 특징으로 하는 시스템. - 제12항에 있어서,
상기 TLB를 제공하는 과정은,
상기 운영 체제에 의해 상기 주어진 프로세스에 대한 메모리 매핑 분포를 스캔하여 상기 앵커 엔트리를 지정하기 위한 상기 앵커 거리를 선택하는 것
을 특징으로 하는 시스템. - 제16항에 있어서,
상기 TLB를 제공하는 과정은,
상기 프로세스에 대해 요구되는 TLB 엔트리의 수를 최소화 하는 알고리즘을 이용하여 상기 앵커 거리를 선택하고,
상기 앵커 거리마다 지정된 상기 앵커 엔트리에 인접 청크의 연속성 정보를 기입하는 것
을 특징으로 하는 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170125885A KR101942663B1 (ko) | 2017-09-28 | 2017-09-28 | 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170125885A KR101942663B1 (ko) | 2017-09-28 | 2017-09-28 | 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101942663B1 true KR101942663B1 (ko) | 2019-01-25 |
Family
ID=65280331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170125885A KR101942663B1 (ko) | 2017-09-28 | 2017-09-28 | 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101942663B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2604629A (en) * | 2021-03-10 | 2022-09-14 | Imagination Tech Ltd | A computer system and method using a first page table and a second page table |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120106696A (ko) * | 2009-07-01 | 2012-09-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 집성된 소페이지들을 사용한 페이지 사이즈 확장 |
US20140149674A1 (en) * | 2012-09-25 | 2014-05-29 | Empire Technology Developments LLC | Performance and Energy Efficiency While Using Large Pages |
KR20150038513A (ko) * | 2012-08-02 | 2015-04-08 | 퀄컴 인코포레이티드 | 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들 |
US20160306746A1 (en) * | 2015-04-15 | 2016-10-20 | Qualcomm Incorporated | Burst translation look-aside buffer |
-
2017
- 2017-09-28 KR KR1020170125885A patent/KR101942663B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120106696A (ko) * | 2009-07-01 | 2012-09-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 집성된 소페이지들을 사용한 페이지 사이즈 확장 |
KR20150038513A (ko) * | 2012-08-02 | 2015-04-08 | 퀄컴 인코포레이티드 | 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들 |
US20140149674A1 (en) * | 2012-09-25 | 2014-05-29 | Empire Technology Developments LLC | Performance and Energy Efficiency While Using Large Pages |
US20160306746A1 (en) * | 2015-04-15 | 2016-10-20 | Qualcomm Incorporated | Burst translation look-aside buffer |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2604629A (en) * | 2021-03-10 | 2022-09-14 | Imagination Tech Ltd | A computer system and method using a first page table and a second page table |
EP4057149A1 (en) * | 2021-03-10 | 2022-09-14 | Imagination Technologies Limited | A computer system and method using a first page table and a second page table |
GB2604629B (en) * | 2021-03-10 | 2023-06-07 | Imagination Tech Ltd | A computer system and method using a first page table and a second page table |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9471500B2 (en) | Bucketized multi-index low-memory data structures | |
US20160357674A1 (en) | Unified Online Cache Monitoring and Optimization | |
US11409663B2 (en) | Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes | |
EP3408748A1 (en) | Adaptive value range profiling for enhanced system performance | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
US11237980B2 (en) | File page table management technology | |
KR20190052546A (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
EP3881187B1 (en) | Accessing compressed computer memory | |
US11922016B2 (en) | Managing free space in a compressed memory system | |
WO2015142341A1 (en) | Dynamic memory expansion by data compression | |
US9946660B2 (en) | Memory space management | |
US20230102891A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
KR101942663B1 (ko) | 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템 | |
KR20210144656A (ko) | 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법 | |
WO2019177867A1 (en) | Data structure with rotating bloom filters | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
JP2024527054A (ja) | 動的割当可能な物理的にアドレス指定されるメタデータストレージ | |
US20160103766A1 (en) | Lookup of a data structure containing a mapping between a virtual address space and a physical address space | |
US11481143B2 (en) | Metadata management for extent-based storage system | |
US20220334973A1 (en) | Entities, system and methods performed therein for handling memory operations of an application in a computer environment | |
Bhattacharjee et al. | Advanced VM Hardware-software Co-design | |
CN117120989A (zh) | 用于dram高速缓存标签预取器的方法和装置 | |
CN118227306A (zh) | 内存访问方法、装置、设备、介质以及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |