KR20180039641A - 메모리 갭들의 효율적인 활용 - Google Patents

메모리 갭들의 효율적인 활용 Download PDF

Info

Publication number
KR20180039641A
KR20180039641A KR1020187004286A KR20187004286A KR20180039641A KR 20180039641 A KR20180039641 A KR 20180039641A KR 1020187004286 A KR1020187004286 A KR 1020187004286A KR 20187004286 A KR20187004286 A KR 20187004286A KR 20180039641 A KR20180039641 A KR 20180039641A
Authority
KR
South Korea
Prior art keywords
gaps
memory
physical memory
tlb
entries
Prior art date
Application number
KR1020187004286A
Other languages
English (en)
Inventor
안드레스 알레한드로 오포투스 발렌수엘라
구빈더 싱 차브라
니에얀 경
존 프란시스 브레넨 주니어
발라수브라마니암 친탐니디
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180039641A publication Critical patent/KR20180039641A/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/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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/04Addressing variable-length words or parts of words
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB

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 look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는, 물리적 메모리의 섹션들 내의 물리적 메모리의 미사용 부분들이다. 물리적 메모리 내의 섹션들의 사이즈들 및 정렬은, 갭들로 이어지는 TLB 내의 엔트리들의 수에 기반할 수 있다. 물리적 메모리에서 식별된 하나 또는 그 초과의 갭들은 재활용되거나 재사용되고, 여기서 하나 또는 그 초과의 갭들은, 갭들의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 동적 버퍼를 형성하도록 수집된다.

Description

메모리 갭들의 효율적인 활용
[0001] 개시된 양상들은 메모리 관리에 관한 것이며, 더 상세하게는, 예시적인 양상들은 메모리에서 미사용된 갭들의 재활용(reclaiming) 및 효율적인 활용에 관한 것이다.
[0002] MMU(memory management unit)는 프로세서들 또는 주변 디바이스들에 대한 어드레스 변환(및 다른 메모리 관리 기능들)을 수행하는데 사용된다. 예컨대, MMU는 가상-물리적 메모리 어드레스 변환들을 수행하기 위한, 당분야에 알려진 TLB(translation lookaside buffer)를 포함할 수 있다. MMU 또는 TLB는 제한수의 엔트리들을 포함할 수 있고, 여기서 각각의 엔트리는 변환들에 도움을 주기 위한 메모리 맵핑(예컨대, 물리적 메모리 어드레스로 맵핑되는 가상 메모리 어드레스)을 포함한다.
[0003] 물리적 메모리 어드레스들은 물리적 메모리, 이를테면, RAM(random access memory)에 관련된다. 각각의 TLB 엔트리는 물리적 메모리의 섹션으로 맵핑될 수 있다. TLB 엔트리들의 수가 제한되기 때문에, 각각의 섹션은, 가상 어드레스들이 TLB 엔트리에 의해 물리적 어드레스들로 맵핑되는 특정 프로그램 또는 애플리케이션에 의해 활용되는 것보다 더 많은 물리적 메모리 공간에 걸쳐 있을 수 있다. 각각의 섹션은, 물리적 메모리 공간의 최소 입도(granularity)의 배수(그리고 구체적으로 2의 거듭제곱(power))인 사이즈일 수 있다. 예컨대, 섹션 사이즈들은 최소 입도에 대해 256KB, 1MB 등일 수 있고, 여기서 최소 입도는 4KB 블록과 같은 작은 블록 사이즈일 수 있다. 그러나, 위에서 언급된 바와 같이, 섹션 내의 물리적 메모리 공간 전부가 사용되지는 않는다. 따라서, 물리적 메모리의 256KB 섹션으로 맵핑되는 TLB 엔트리는, 예컨대, 224KB만을 활용하여, 256KB 섹션에서 32KB의 미사용 메모리를 남겨둘 수 있다. 종래의 메모리 관리 설계들은, 본 개시내용에서 "갭들"로 또한 지칭되는 그러한 미사용 메모리 공간들을 사용하지 않는다.
[0004] 메모리 또는 저장 공간은, 특히 디바이스 사이즈들이 줄어드는 반도체 다이에 대해 중요한 하드웨어 자원이다. 따라서, 갭들에 의해 발생되는 메모리 공간의 낭비를 방지하는 것이 바람직하다.
[0005] 본 발명의 예시적인 실시예들은 메모리 관리를 위한 시스템들 및 방법에 관한 것이다. 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는 물리적 메모리의 섹션들 내의 물리적 메모리의 미사용 부분들이다. 물리적 메모리 내의 섹션들의 사이즈들 및 정렬은 TLB 내의 엔트리들의 수에 기반할 수 있고, 엔트리들의 수는 갭들로 이어진다. 물리적 메모리에서 식별된 하나 또는 그 초과의 갭들은 재활용되거나 재사용되고, 여기서 하나 또는 그 초과의 갭들은, 갭들의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 동적 버퍼를 형성하도록 수집된다.
[0006] 예컨대, 예시적인 양상은 메모리 관리 방법에 관한 것이며, 방법은 물리적 메모리에서 갭들을 식별하는 단계 ― 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는 물리적 메모리의 섹션들에서 물리적 메모리의 미사용 부분들임 ― , 및 갭들의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 갭들을 수집하는 단계를 포함한다.
[0007] 다른 예시적인 양상은 물리적 메모리를 포함하는 장치에 관한 것이다. 물리적 메모리는 하나 또는 그 초과의 갭들을 포함하고, 하나 또는 그 초과의 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는 물리적 메모리의 섹션들에서 물리적 메모리의 미사용 부분들이다. 장치는 물리적 메모리로부터 수집된 하나 또는 그 초과의 갭들로 맵핑되는 가상 어드레스들을 포함하는 동적 버퍼를 더 포함한다.
[0008] 또 다른 예시적인 양상은, 하나 또는 그 초과의 갭들을 포함하는 물리적 메모리 ― 하나 또는 그 초과의 갭들은 맵핑하기 위한 수단에 의해 가상 어드레스들로 맵핑되는 물리적 메모리의 섹션들에서 물리적 메모리의 미사용 부분들임 ― , 및 적어도 하나 또는 그 초과의 갭들의 서브세트를 수집하기 위한 수단을 포함하는 시스템에 관한 것이다.
[0009] 다른 예시적인 양상은, 프로세서에 의해 실행될 때, 프로세서로 하여금 메모리 관리를 위한 동작들을 수행하게 하기 위한 코드를 포함하는 비일시적인 컴퓨터-판독 가능 저장 매체에 관한 것이며, 비일시적인 컴퓨터-판독 가능 저장 매체는 물리적 메모리에서 하나 또는 그 초과의 갭들을 식별하기 위한 코드 ― 하나 또는 그 초과의 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는 물리적 메모리의 섹션들에서 물리적 메모리의 미사용 부분들임 ― , 및 적어도 갭들의 서브세트의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 적어도 하나 또는 그 초과의 갭들의 서브세트를 수집하기 위한 코드를 포함한다.
[0010] 첨부한 도면들은 본 발명의 실시예들의 설명을 돕기 위해 제시되며, 실시예들의 제한이 아니라 전적으로 실시예들의 예시를 위해 제공된다.
[0011] 도 1은 종래의 TLB를 예시한다.
[0012] 도 2는 본 개시내용의 양상들에 따라 구성된 물리적 메모리를 예시한다.
[0013] 도 3은 본 개시내용의 양상들에 따라 구성된 프로세싱 시스템을 예시한다.
[0014] 도 4는 예시적인 양상들에 따른 메모리 관리 방법에 관련된 흐름도를 예시한다.
[0015] 도 5는 본 개시내용의 양상이 이롭게 사용될 수 있는 예시적인 프로세싱 디바이스를 예시한다.
[0016] 본 발명의 양상들은 본 발명의 특정 실시예들과 관련된 관련 도면들 및 다음의 설명에서 개시된다. 대안적 실시예들은 본 발명의 범위로부터 벗어나지 않으면서 고안될 수 있다. 추가적으로, 본 발명의 잘-알려진 엘리먼트들은 본 발명의 관련된 세부사항들을 모호하게 하지 않도록 상세하게 설명되지 않을 것이거나 또는 생략될 것이다.
[0017] "예시적"이라는 단어는, "예, 예증 또는 예시로서 기능하는 것"을 의미하는 것으로 본원에서 사용된다. "예시적"으로서 본원에서 설명되는 임의의 실시예는 반드시 다른 실시예들에 비해 바람직하거나 또는 유리한 것으로서 해석되는 것은 아니다. 마찬가지로, "본 발명의 실시예들"이라는 용어는 본 발명의 모든 실시예들이 논의되는 특징, 이점, 또는 동작 모드를 포함할 것을 요구하지 않는다.
[0018] 본원에서 사용되는 용어는 특정 실시예들만을 설명하기 위한 것이며, 본 발명의 실시예들을 제한하도록 의도되는 것은 아니다. 본원에서 사용되는 바와 같이, 단수 형태들의 표현은 문맥상 달리 명백하게 표시되지 않는 한, 복수 형태들 역시 포함하도록 의도된다. "포함하다(comprises)", "포함하는(comprising)", "구비하다(includes)" 및/또는 "구비하는(including)"이라는 용어들은, 본원에서 사용되는 경우, 서술된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 컴포넌트들의 존재를 특정하지만, 하나 또는 그 초과의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0019] 추가로, 많은 실시예들이, 예컨대, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 액션(action)들의 시퀀스들에 관해 설명된다. 본원에서 설명되는 다양한 액션들이 특정 회로들(예컨대, ASIC(application specific integrated circuit)들)에 의해, 하나 또는 그 초과의 프로세서들에 의해 실행되는 프로그램 명령들에 의해 또는 이 둘의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 추가적으로, 본원에서 설명되는 이러한 액션들의 시퀀스는, 실행 시에, 연관된 프로세서로 하여금 본원에서 설명되는 기능을 수행하게 할 컴퓨터 명령들의 대응하는 세트가 저장된 임의의 형태의 컴퓨터 판독 가능 저장 매체 내에서 전적으로 구현되는 것으로 고려될 수 있다. 따라서, 본 발명의 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있으며, 이들 모두는 청구되는 청구 대상의 범위 내에 있는 것으로 고려된다. 또한, 본원에서 설명되는 실시예들 각각에 대해, 임의의 이러한 실시예들의 대응하는 형태는 예컨대, 설명되는 액션을 수행하도록 "구성되는 로직"으로서 본원에서 설명될 수 있다.
[0020] 본 개시내용의 예시적인 양상들은 TLB(translation look-aside buffer) 또는 MMU(memory management unit)의 엔트리들에 의해 맵핑되는 물리적 메모리의 섹션들에서 물리적 메모리의 갭들 또는 미사용 메모리 공간들을 식별하는 것에 관한 것이다. 갭들은, 갭들 내의 메모리 공간이 낭비되기보다는 활용될 수 있도록 재활용되거나 다른 목적으로 사용된다. 예컨대, 동적 버퍼는 갭들을 수집하도록 생성될 수 있고, 여기서 갭들의 물리적 어드레스들은 동적 버퍼 내의 가상 어드레스들로 맵핑될 수 있다.
[0021] 동적 버퍼를 형성하도록 수집된 갭들은, 갭들을 수집하는데 있어서 더 큰 유연성을 허용하는 연속적인 물리적 어드레스들을 갖지 않을 수 있다. 그러나, 예컨대, 동적 버퍼가 인터럽트되지 않는 물리적 메모리 영역만을 포함하도록 지정될 수 있는 경우들에서, 연속적인 물리적 메모리 영역을 포함하는 단일 갭이 또한 동적 버퍼를 형성하도록 수집될 수 있다는 것이 이해될 것이다.
[0022] 일부 양상들에서, 갭들은, 예컨대, TLB 엔트리들을 물리적 메모리 내의 더 큰 섹션들로 맵핑함으로써, 의도적으로(purposefully) 물리적 메모리에 도입될 수 있다. 이는 갭 수집을 위한 더 많은 기회들을 생성할 뿐만 아니라, 물리적 메모리 공간을 커버하는데 사용되는 TLB 엔트리들의 수를 감소시킨다. 이러한 방식에서, 갭들 내의 이전에 미사용된 메모리가 재사용될 수 있기 때문에, 물리적 메모리의 사용 가능한 메모리 공간이 증가된다. 따라서, 프로세싱 애플리케이션들을 위한 메모리 버짓들(memory budgets)이 증가될 수 있다. 예컨대, 물리적 메모리 공간의 제한된 이용 가능성으로 인해 빠듯한(tight) 메모리 버짓들을 갖는 메모리 제한 시스템들은, 메모리 버짓들을 만족시키기 위해 부가적인 RAM 모듈들을 부가하는 것에 의지하기보다는, 기존의 물리적 메모리, 이를테면, RAM 모듈로부터 이용 가능하게 된 더 큰 물리적 메모리 공간으로부터 이익을 얻을 수 있다.
[0023] 갭 재활용의 예시적인 양상들을 추가로 설명하기 위해, 도 1은 동적/비고정식 TLB 엔트리 및 정적/고정식 TLB 엔트리의 간략한 배경기술에 대해 먼저 참조될 것이다. 도 1에서, 종래의 TLB(100)의 3 개의 구성들(100A, 100B 및 100C)이 도시된다. TLB(100)는 프로세싱 시스템(미도시)을 위한 가상-물리적 어드레스 변환들을 제공할 수 있고, 여기서 물리적 어드레스들은 물리적 메모리(또한 미도시)에 관련된다. TLB(100)는 도 1에서 101-108로 라벨링된 8 개의 TLB 엔트리들을 포함하는 것으로 도시된다.
[0024] 일반적으로, 각각의 TLB 엔트리(101-108)는 정적/고정식 또는 동적/비고정식 중 어느 하나일 수 있다. 정적/고정식 TLB 엔트리는, 고정식이거나 수정될 수 없는 물리적 메모리의 섹션으로의 맵핑을 갖는다. 동적/비고정식 TLB 엔트리는, 동적이고 (예컨대, 운영 시스템에 의해) 변경될 수 있는 맵핑을 가질 수 있다.
[0025] 구성(100A)은, 모든 8 개의 TLB 엔트리들(101-108)이 정적/비고정식인 것을 도시한다. 구성(100A)은 고성능의 TLB(100)용으로 설계되지만, 구성(100A)은 높은 유연성을 갖지 않을 수 있다. 추가로 설명하자면, 구성(100A)의 모든 TLB 엔트리들(101-108)의 맵핑들은 물리적 메모리의 특정 세그먼트들로 고정되는데, 이는, TLB 엔트리들(101-108)이 (예컨대, 운영 시스템에 의해) 업데이트되지 않을 수 있다는 것을 의미하고, 이는 결국 성능을 증가시킨다. 예컨대, 다양한 섹션 사이즈들이 특정 애플리케이션 또는 프로그램에 의해 사용될 수 있기 때문에, 더 많은 수의 TLB 엔트리들은 섹션 사이즈들을 가능한 가깝게 매칭시키기 위해 애플리케이션에 대한 전체 물리적 메모리 공간(또는 "이미지")을 커버할 수 있다. 그러나, 제한된 수의 TLB 엔트리들만이 이용 가능하기 때문에, 각각의 TLB 엔트리는 훨씬 더 큰 섹션으로 맵핑되고, 따라서 갭들을 생성할 수 있다. 일반적으로, 더 작은 수의 TLB 엔트리들은 더 많은 갭들의 생성으로 이어질 수 있다.
[0026] 반면에, 구성(100B)은 동적/비고정식인 것으로 설정된 모두 8 개의 TLB 엔트리들(101-108)을 갖는다. 구성(100B)에서, 동적/비고정식 엔트리들이 업데이트될 수 있고 더 많은 엔트리들이 부가될 수 있기 때문에, 예시된 8 개의 엔트리들보다 더 많은 TLB 엔트리들을 갖는 것이 가능하다. 따라서, 구성(100B)은 TLB(100)에 대한 높은 유연성을 제안하지만, 더 낮은 성능을 가질 수 있다. 예컨대, 동적/비고정식 엔트리들이 (예컨대, 운영 시스템들에 의해) 빈번하게 업데이트될 수 있어서, 맵핑들의 변화들로 이어지고, 이는 성능을 감소시킬 수 있다. 더 작은 맵핑 사이즈들(즉, 맵핑되는 섹터들의 더 작은 사이즈들)이 사용될 수 있고, 더 작은 섹션들로 맵핑하기 위해 TLB 엔트리들의 수가 증가될 수 있기 때문에, 동적/비고정식 맵핑들은 더 작은 갭들로 이어질 수 있다.
[0027] 따라서, 더 작은 섹션들로의 맵핑이 더 빈번하게 업데이트되는 동적 맵핑(예컨대, 구성(100B))으로 이어질 수 있지만, (예컨대, TLB 누락들(misses)에 대한) 맵핑들에 대한 업데이트들은 더 큰 갭들을 갖지만 더 큰 맵핑들(예컨대, 구성(100A))의 사용을 통해 감소될 수 있다.
[0028] 구성(100C)은 구성들(100A 및 100B)의 위의 특징들 간의 트레이드-오프(trade-off)를 제안한다. 구성(100C)에서, 일부 TLB 엔트리들(예컨대, 도시된 바와 같이 TLB 엔트리들(101-105))은 정적/고정식일 수 있고, 남아있는 TLB 엔트리들(예컨대, TLB 엔트리들(106-108))은 동적/비고정식일 수 있다. 또 다시, 동적 맵핑들이 가능하기 때문에, 이러한 구성에서 물론 8 개 초과의 TLB 엔트리들이 형성될 수 있다. 따라서, 정적/고정식 TLB 엔트리들은, 고성능 애플리케이션들에서 사용될 수 있는 물리적 메모리의 섹션들에 대해 사용될 수 있는 반면에, 물리적 메모리의 남아있는 부분들은 동적/비고정식 TLB 엔트리들에 의해 유연하게 맵핑될 수 있다. 예시적인 양상들에서, 적어도 일부의 동적/비고정식 TLB 엔트리들은 동적 버퍼들을 수집된 갭들을 포함하는 물리적 메모리 공간으로 맵핑하는데 사용된다.
[0029] 이제 도 2를 참조하면, 물리적 메모리(200)에 대한 갭 재활용의 예시적인 양상들이 설명될 것이다. 물리적 메모리(200)는 RAM(random access memory) 등일 수 있고, 프로세싱 시스템(미도시)의 캐시 또는 보조 저장소(backing storage)일 수 있다. 프로세싱 시스템에 의해 사용되는 가상 어드레스들은 TLB(이를테면, 구성(100C)의 TLB(100))에 의해 물리적 메모리(200)의 물리적 어드레스들로 변환될 수 있다. 이미지(200A)는, 갭 재활용 전의 물리적 메모리(200)를 나타내고, 이미지(200B)는 갭 재활용이 예시적인 양상들에 따라 수행된 후의 물리적 메모리(200)를 나타낸다.
[0030] 먼저 물리적 메모리(200)의 이미지(200A)를 참조하면, 3 개의 섹션들(202, 204 및 206)이 도시된다. 예시적인 제1, 제2 및 제3 TLB 엔트리들(미도시)은 물리적 메모리(200)의 섹션들(202, 204 및 206)로 각각 맵핑될 수 있다. 영역(202a)만이 (예컨대, 제1 TLB 엔트리의 특정 변환이 커버하는 다양한 가상 어드레스들에 대해) 제1 TLB 엔트리에 의해 섹션(202)에 맵핑될 수 있다. 그러나, 제1 TLB 엔트리에 대한 맵핑은, 예컨대, TLB 엔트리들의 주어진 수에 기반하여, 섹션(202)과 미리 정의된 섹션 경계들 또는 섹션 사이즈들을 정렬하기 위해, 섹션(202)으로 확장되었을 수 있다. 따라서, 섹션(202) 내의 갭(202b)이 미사용된 상태로 남겨진다. 마찬가지로, 섹션들(204 및 206)의 영역들(204a 및 206a)은 제2 및 제3 TLB 엔트리들의 맵핑들에 의해 각각 사용되는 반면에, 갭들(204b 및 206b)은 미사용된 상태로 유지된다.
[0031] 이미지(200A)에서, 버퍼(208)가 섹션(206) 내에 그리고 더 구체적으로 영역(206a) 내에 도시된다. 버퍼(208)는, (예컨대, 당분야에 알려진 "히프(heap)"에 관련된) 동적 버퍼의 가상 메모리로 맵핑되는 물리적 메모리를 포함할 수 있다. 버퍼(208)가 이미지(200A)에서 물리적 메모리의 연속적인 블록을 포함하는 것으로 도시되지만, 동적 버퍼는 연속적인/비인터럽트된 물리적 어드레스 공간 또는 비-연속적인 물리적 메모리 섹션들로부터 형성될 수 있다. 그러나, TLB 엔트리에 의해 맵핑될 버퍼(208)에 대해, 비-연속적인 물리적 어드레스 공간들의 소정의 최소 입도(예컨대, 4KB 블록 사이즈)가 버퍼(208)에 존재할 수 있다.
[0032] 이제 이미지(200B)를 참조하면, 버퍼(208)를 형성하기 위한 예시적인 갭 수집이 예시된다. 이미지(200A)에서와 같이 버퍼(208)를 영역(206a)에 국한시키기보다는, 갭들(202b 및 204b)로부터의 물리적 메모리는 버퍼(208)를 형성하도록 수집된다. 다시 말해서, 버퍼(208)의 물리적 메모리는 이러한 예에서 3 개의 부분들에 걸쳐 펼쳐진다. 갭(202b)은 버퍼(208)의 부분(208a)을 형성하도록 재활용된다. 마찬가지로, 갭(204b)은 버퍼(208)의 부분(208b)을 형성하도록 재활용된다. 버퍼(208)의 남아있는 부분(208c)은 섹션(206) 내에 포함되지만, 섹션(206)에 사용되는 영역의 사이즈는, 아래에 설명될, 영역(210)에 대응하는 양만큼 영역(206a)으로부터 감소된다.
[0033] 또한, 이러한 경우에, 모든 갭들이 재활용되는 것이 아닐 수 있고, 예시된 바와 같이, 갭(206b) 중 일부 또는 전부가 재활용되지 않는 상태로 유지될 수 있다. 예컨대, 버퍼(208)를 형성하기 위한 갭 수집에도 불구하고, 갭(206b) 중 일부가 재활용되지 않는 상태로 유지될 수 있고, 갭(206b) 중 재활용되지 않는 부분은 이미지(200B)에서 재활용되지 않은 갭(206c)으로서 식별되었다. 예시적인 양상들에서, 재활용되지 않은 갭(206c)은 섹션(206)의 단부를 향해 유지될 수 있다(또는 이동될 수 있다). 새로운 섹션(미도시)은 일부 경우들에서 재활용되지 않은 갭(206c)을 포함하도록 형성될 수 있다.
[0034] 위에서와 같이, 버퍼(208)를 형성하기 위해 갭들을 재활용함으로써, 물리적 메모리(200)의 영역(210)이 현재 TLB 맵핑들로부터 이제 해방(free up)될 수 있고, 따라서 영역(210)이 향후 TLB 엔트리들에 대해 이용 가능하게 한다는 것이 보여진다. 더 많은 메모리 공간이 이제 이용 가능하게 되기 때문에, 영역(210)은 활용될 수 있는 메모리 절약을 나타낸다.
[0035] 버퍼(208)를 형성하기 위해 갭들(202b 및 204b)로부터 물리적 메모리를 재활용하는 것은 TLB의 대응하는 가상 메모리 어드레스들에 대한 맵핑들을 변경하는 것을 수반할 수 있다. 예컨대, 동적/비고정식 TLB 엔트리들(예컨대, 도 1의 TLB(100)의 구성(100C)의 TLB 엔트리들(106-108))은 동적 버퍼의 가상 어드레스들을 버퍼(208)의 물리적 어드레스들로 맵핑하는데 사용될 수 있다. 이미지(200B)에서 재활용되는 갭들로부터 버퍼(208)를 형성하기 위해, 가상 어드레스들이 갭들(202b 및 204b)의 물리적 어드레스들로 맵핑되도록 맵핑들이 수정될 수 있다. 동적/비고정식 TLB 엔트리들은 갭들을 재활용하기 위해 맵핑들을 수정하기 위한 더 높은 유연성을 제공한다. 그러나, 정적/고정식 TLB 엔트리들이 또한 갭들을 재활용하는데 사용될 수 있지만, 정적/고정식 TLB 엔트리들을 사용하는 것이 더 많은 수의 TLB 엔트리들을 소비할 수 있어서, 갭 재활용을 위한 선택에 대해서는 정적/고정식 TLB 엔트리들을 덜 바람직하거나 더 부적절하게 만든다는 것이 주의된다.
[0036] 예시적인 양상들에서, 예컨대, 갭 수집을 위해 사용되는 갭들(202b 및 204b)에 의해 커버되는 물리적 메모리(200)의 영역들은 TLB 엔트리들에 의해 맵핑되는 다른 섹션들과 비교하여 더 작을 수 있고, 갭 재활용은 TLB에 의해 맵핑될 수 있는 가장 작은 메모리 사이즈들, 이를테면, 4KB 블록들의 입도들을 사용할 수 있어서, 재활용될 수 있는 갭들의 수가 최대화될 수 있다.
[0037] 위의 논의로부터, 예시적인 갭 재활용이 메모리 공간의 낭비를 방지하거나 최소화하고, 심지어 절약(예컨대, 물리적 메모리(200)의 영역(210))을 발생시킬 수 있다는 것이 또한 보여진다. 따라서, 일부 양상들에서, 기존의 갭들이 효율적으로 활용될 뿐만 아니라, 하나 또는 그 초과의 갭들이 물리적 메모리 공간에 의도적으로(on purpose) 도입될 수 있다. 의도적으로 갭들을 도입하는 것은, TLB 엔트리들에 의해 맵핑될 수 있는 더 큰 섹션들로 이어질 수 있다(따라서, 주어진 이미지 또는 물리적 메모리 공간을 커버하는데 사용되는 TLB 엔트리들의 수를 감소시킴). 예컨대, 갭(202b)이 이미지(200A)의 섹션(202)에 이미 존재하지 않는다면, 갭(202b)은 섹션(202)의 경계들과 원하는 경계들 또는 사이즈들을 정렬시키기 위해(예컨대, 맵핑될 수 있는 가장 작은 입도의 2의 거듭제곱 배수, 이를테면, 4KB 블록의 2의 거듭제곱 배수인 메모리 공간을 커버하기 위해) 의도적으로 도입될 수 있다.
[0038] 메모리 이미지, 이를테면, 이미지(200A)에 새로운 갭들을 도입하는 것은 새로운 이미지로 이어질 수 있고, 여기서 새로운 이미지의 섹션들로 맵핑되는 TLB 엔트리들의 수가 감소될 수 있다. 대응하여, TLB의 하드웨어 및 연관된 비용들이 또한 감소될 수 있다. 또한, 감소된 수의 TLB 엔트리들을 사용하여, 섹션들의 동적 맵핑 트래싱(dynamic mapping trashing)(예컨대, 여기서 소정의 섹션들의 맵핑들을 변경하는 것이 바람직하지 않게 이전의 맵핑들을 무시할 수 있음)과 같은 영향들이 최소화될 수 있다.
[0039] 또한, 새로운 이미지를 형성하기 위해 이미지(200A)에 새로운 갭들을 도입하는 것은 또한 물리적 메모리(200) 내의 새로운 섹션들의 생성으로 이어질 수 있다. 갭들을 재활용하는 것에 기반한 새로운 섹션들의 생성(여기서, 갭들이 의도적으로 도입될 수 있음)과 연관된 하드웨어 비용들은, 감소된 수의 TLB 엔트리들로 인해, 감소되는 것으로 보여진다. 따라서, 일부 양상들에서, 갭들을 도입하는 것은 TLB 비용들 및 사용을 최소화하는 것으로 이어질 수 있다.
[0040] 예시적인 갭 수집은 당분야에 알려진 "히프들"과 같은 동적 버퍼들을 구현하기 위해 사용될 수 있다. 히프들은 동적 버퍼들(예컨대, 버퍼(208)의 물리적 어드레스들로 맵핑됨)이다. 히프들은 다수의 가상 메모리 블록들로 구성될 수 있다. 히프들 또는 다른 동적 버퍼들은 다수의 물리적 어드레스들로 맵핑된다. 일부 히프들에는 (예컨대, 하드웨어 솔루션들이 물리적 어드레스들을 히프들에 할당하기 위해 사용될 때) 다양한 연속적인 물리적 어드레스들이 할당될 수 있고, 여기서, 갭들이 수집되어, 히프를 형성하는데 사용될 수 있는 동적 버퍼 내의 하나의 가상 어드레스 범위로 맵핑될 수 있다. 히프들의 일부 구현들은 연속적인 물리적 어드레스들로 제한되지 않고, 그래서 갭들이 수집되고, 히프들의 가상 어드레스들로 맵핑될 수 있다. 일부 히프들에는 자신들의 생성 시에 소정의 물리적 어드레스 공간이 할당될 수 있고, 여기서 히프 중 일부분은 재활용되는 갭들로 구성될 수 있고, 할당된 물리적 어드레스 공간의 나머지는 갭들로부터 재활용되지 않았던 메모리 공간으로 구성될 수 있다. 따라서, 히프들 및 다른 동적 버퍼들은, 예시적인 양상들에서, 갭들로부터 완전히 또는 부분적으로 형성될 수 있다.
[0041] 예시적인 양상들에서, 일부 갭들은 동적 버퍼와 호환 가능할 수 있는 반면에, 일부 갭들은 호환 가능하지 않을 수 있다. 따라서, 동적 버퍼와 호환 가능한 갭들(모든 이용 가능한 갭들의 서브세트일 수 있음)만이 동적 버퍼를 형성하기 위해 재활용될 수 있다. 호환 가능성은 몇몇의 기준들에 기반할 수 있다. 일 예에서, 동적 버퍼를 형성하도록 재활용될 수 있는 갭들의 호환 가능성은 판독/기록 호환 가능성에 기반할 수 있다. 상이한 판독/기록(RW) 허가들은 이미지 또는 물리적 메모리 공간의 상이한 섹션들과 연관될 수 있다. 예컨대, 물리적 메모리(200)의 섹션(202)은 판독-전용(RX) 허가들을 가질 수 있고, 반면에 섹션(204)은 판독 및 기록(RW) 허가들 둘 모두를 가질 수 있다. 따라서, 섹션(202)의 갭(202b)은 판독 및 기록 허가들 둘 모두를 지정하는 소프트웨어 프로그램들에서 사용하기 위해 호환 가능하지 않을 수 있지만, 갭(202b)은 판독-전용 허가들과 연관된 데이터를 저장하는 동적 버퍼들을 형성하기 위해 호환 가능할 수 있다. 따라서, 갭(202b)은 판독-전용 허가들과 호환 가능한 동적 버퍼를 형성하도록 재활용될 수 있다. 반면에, 섹션(204)의 갭(204b)은, 판독 및 기록 허가들 둘 모두를 지정하는 소프트웨어 프로그램들과 호환 가능할 수 있다. 따라서, 갭(204b)은 판독 및 기록 허가들 둘 모두를 지정하는 소프트웨어 프로그램들을 위해 재활용될 수 있다.
[0042] 따라서, 갭 재활용의 예시적인 양상들은 그러한 양상들이 전개되는 프로세싱 시스템들의 감소된 비용들로 이어질 수 있다는 것이 보여진다(왜냐하면 물리적 메모리 절약이 가능한데, 예컨대, 물리적 메모리(200)의 사이즈가 영역(210)에 의해 주어진 양만큼 감소될 수 있기 때문에). 동적/비고정식 TLB 엔트리들은 재활용되는 갭들로부터 형성된 동적 버퍼들로 맵핑하는데 사용될 수 있고, 이는, TLB 누락들의 수가 감소될 수 있고(왜냐하면 이전에 미사용된 갭들이 이제 재활용되어 활용될 수 있기 때문에), 따라서 성능을 개선하고 전력 소비를 감소시킨다는 것을 의미한다. 의도적으로 갭들을 도입함으로써, 섹션 사이즈들 또는 원하는 섹션 경계들에 대한 섹션 정렬에 대한 새로운 맵핑들 및 더 양호한 제어가 달성될 수 있어서, 더 적은 수의 TLB 엔트리들 및 더 작은 TLB 사이즈들로 이어진다. 또한, 섹션 사이즈들을 제어하기 위한 갭들이 도입될 수 있기 때문에, 전체 빌드 사이즈(즉, 메모리 이미지의 사이즈)가 제어될 수 있고, 여기서 상당한 변동 없이, 실질적으로 일정한 빌드 사이즈가 유지될 수 있다.
[0043] 이제 도 3을 참조하면, 예시적인 양상들에 따라 구성된 예시적인 프로세싱 시스템(300)이 예시된다. 프로세싱 시스템(300)은, 본원에 설명된 기능을 구현하기 위한 수단을 포함하는 장치일 수 있다. 예컨대, 프로세싱 시스템(300)은 프로세서(302)(예컨대, 범용 프로세서 또는 특수 목적 프로세서, 이를테면, DSP(digital signal processor)일 수 있음)를 포함할 수 있다. 프로세서(302)는, 가상 또는 로지컬 어드레스들을 사용하는 프로그램들을 실행하기 위한 로직 또는 기능을 포함할 수 있다.
[0044] 프로세싱 시스템(300)은 도 2에 관련하여 논의된 물리적 메모리(200)를 포함할 수 있고, 여기서 물리적 메모리(200)는 저장하기 위한 수단일 수 있다. 물리적 메모리(200)의 갭들(버퍼(208)의 물리적 메모리가 연속적이지 않을 수 있다는 것을 표시하기 위해 점선들로 도시된 버퍼(208)에 의해 표현됨)은 재활용될 수 있다. TLB(304)는 메모리 관리 유닛, 또는 프로세서(302)에 의해 사용되는 가상 어드레스들을 물리적 메모리(200)의 물리적 어드레스들로 맵핑하기 위한 다른 수단일 수 있다. 물리적 메모리(200)는 위에서 논의된 섹션들(예컨대, 202, 204, 206)을 포함할 수 있고, 여기서 섹션들의 사이즈들 및 정렬은 TLB(302)의 엔트리들의 수에 기반할 수 있다. TLB(304)의 엔트리들은 (도 1을 참조하여 논의된 바와 같이) 정적/고정식 또는 동적/비고정식일 수 있다. TLB 엔트리들은 물리적 메모리(200)의 섹션들로 맵핑될 수 있다. 물리적 메모리(200)의 섹션들은, 섹션들 내의 물리적 메모리의 미사용 부분들인 갭들(예컨대, 202b, 204b, 206b)을 포함할 수 있다.
[0045] 프로세싱 시스템(300)은 물리적 메모리(200)의 갭들을 수집하기 위한 수단을 포함할 수 있다. 예컨대, 프로세서(302) 내에 도시된 버퍼(208v)는, 가상 어드레스들이 버퍼(208)의 물리적 어드레스들로 맵핑되는 동적 버퍼일 수 있다. 이와 같이, 버퍼(208v)는 물리적 메모리(200)에서 갭들(예컨대, 202b 및 204b)을 수집하기 위한 수단을 포함할 수 있다.
[0046] 예시적인 양상들이 본원에 개시된 프로세스들, 기능들 및/또는 알고리즘들을 수행하기 위한 다양한 방법들을 포함한다는 것이 또한 인지될 것이다. 예컨대, 도 4는 (예컨대, 물리적 메모리(200)의) 메모리 관리 방법(400)을 예시한다.
[0047] 블록(402)에 도시된 바와 같이, 방법(400)은 물리적 메모리에서 하나 또는 그 초과의 갭들을 식별하는 것을 포함하고, 하나 또는 그 초과의 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는, 물리적 메모리의 섹션들 내의 물리적 메모리의 미사용 부분들이다. 예컨대, 블록(402)은 TLB(304)에 의해 맵핑되는, 섹션들(202, 204 및 206) 내의 물리적 메모리(200)에서 갭들(202b, 204b 및 206b)을 식별하는 것에 관련될 수 있다.
[0048] 블록(404)에서, 방법(400)은 하나 또는 그 초과의 갭들의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 적어도 하나 또는 그 초과의 갭들의 서브세트를 수집하는 것을 포함한다. 예컨대, 블록(404)에서, 갭들(202b, 204b 및 206b)은 버퍼(208)의 부분들(208a, 208b 및 208c)로 맵핑되는 동적 버퍼(208v)를 형성하도록 수집될 수 있다.
[0049] 방법(400)에서 보여지는 바와 같이, 갭들은 물리적 메모리의 적어도 2 개의 상이한 섹션들(예컨대, 섹션들(202, 204, 206))로부터 수집될 수 있고, 적어도 2 개의 갭들(예컨대, 202b, 204b)은 물리적 메모리에서 비-연속적일 수 있다. 물리적 메모리 내의 섹션들의 사이즈들 및 정렬은 TLB 내의 엔트리들의 수에 기반할 수 있다. 방법(400)의 추가의 양상들에서, 적어도 하나의 갭(예컨대, 202b)이 적어도 하나의 섹션(예컨대, 섹션(202))에 도입될 수 있다. TLB의 엔트리들의 수는 이러한 방식으로 갭들을 도입함으로써 감소될 수 있다. 방법(400)은 하나 또는 그 초과의 동적/비고정식 TLB 엔트리들을 사용하여 갭들의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑하는 것을 더 포함할 수 있다.
[0050] 도 5는 예시적인 양상들에 따라 구성된 프로세싱 디바이스(500)의 블록도를 도시한다. 일부 양상들에서, 프로세싱 디바이스(500)는 무선 디바이스로서 구성될 수 있다. 프로세싱 디바이스(500)는 도 3의 프로세싱 시스템(300)을 참조하여 논의된 일부 유사한 양상들을 포함할 수 있다. 프로세싱 디바이스(500)는 또한 도 4의 방법(400)을 참조하여 설명된 프로세스들을 구현하도록 구성될 수 있다. 도시된 바와 같이, 프로세싱 디바이스(500)는, 예컨대, 당분야에 알려진 DSP(digital signal processor) 또는 임의의 범용 프로세서 또는 CPU(central processing unit)일 수 있는 프로세서(302)를 포함한다. 도 3에서 논의된 프로세서(302) 내의 동적 버퍼(208v) 및 TLB(304)가 또한 도시된다. 프로세서(302)는, 예컨대, TLB(304)를 통해 메모리(502)에 통신 가능하게 커플링될 수 있고, 메모리(502)는 이전에 설명된 물리적 메모리(200)를 포함할 수 있다.
[0051] 도 5는 또한, 프로세서(302) 및 디스플레이(528)에 커플링된 디스플레이 제어기(526)를 도시한다. CODEC(coder/decoder)(534)(예컨대, 오디오 및/또는 음성 CODEC)는 프로세서(302)에 커플링될 수 있다. 다른 컴포넌트들, 이를테면, 무선 제어기(540)(이는 모뎀을 포함할 수 있음)가 또한 예시된다. 스피커(536) 및 마이크로폰(538)은 CODEC(534)에 커플링될 수 있다. 도 5는 또한, 무선 제어기(540)가 무선 안테나(542)에 커플링될 수 있음을 표시한다. 특정 양상에서, 프로세서(302), 디스플레이 제어기(526), 메모리(502), CODEC(534) 및 무선 제어기(540)는 시스템-인-패키지 또는 시스템-온-칩 디바이스(522)에 포함된다.
[0052] 특정 양상에서, 입력 디바이스(530) 및 전력 공급기(544)는 시스템-온-칩 디바이스(522)에 커플링된다. 더욱이, 특정 양상에서, 도 5에서 예시되는 바와 같이, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 무선 안테나(542) 및 전력 공급기(544)가 시스템-온-칩 디바이스(522) 외부에 있다. 그러나, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 무선 안테나(542) 및 전력 공급기(544) 각각은 시스템-온-칩 디바이스(522)의 컴포넌트, 이를테면, 인터페이스 또는 제어기에 커플링될 수 있다.
[0053] 도 5는 무선 통신 디바이스를 도시하지만, 프로세서(302) 및 메모리(502)는 또한 셋-탑 박스, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛, 컴퓨터, 랩탑, 태블릿, 통신 디바이스, 모바일 폰, 또는 다른 유사한 디바이스들에 통합될 수 있다는 점이 주목되어야 한다.
[0054] 당업자들은 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있다는 것을 인식할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0055] 추가로, 당업자들은 본원에서 개시되는 실시예들과 관련하여 설명되는 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 둘 모두의 조합들로서 구현될 수 있다는 것을 인식할 것이다. 하드웨어 및 소프트웨어의 이러한 교환가능성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정 애플리케이션과, 전체 시스템에 부과된 설계 제약들에 따른다. 당업자들은 설명되는 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 판정들이 본 발명의 범위로부터의 이탈을 야기하는 것으로 해석되어서는 안 된다.
[0056] 본원에서 개시되는 실시예들과 관련하여 설명되는 방법들, 시퀀스들 및/또는 알고리즘들은 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 직접적으로 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 탈착가능한(removable) 디스크, CD-ROM, 또는 당해 기술 분야에서 알려진 임의의 다른 형태의 저장 매체 내에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0057] 따라서, 본 발명의 실시예는 물리적 메모리 내의 갭들을 활용하기 위한 방법을 구현하는 컴퓨터 판독 가능 매체들을 포함할 수 있다. 따라서, 본 발명은 예시되는 예들로 제한되지 않고, 본원에서 설명되는 기능성을 수행하기 위한 임의의 수단은 본 발명의 실시예들에 포함된다.
[0058] 위의 개시내용은 본 발명의 예시적 실시예들을 나타내는 반면, 다양한 변화들 및 수정들이 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 범위로부터 벗어나지 않으면서 본원에서 이루어질 수 있다는 점이 주목되어야 한다. 본원에서 설명되는 본 발명의 실시예들에 따른 방법 청구항들의 기능들, 단계들 및/또는 액션들은 임의의 특별한 순서로 수행되지 않아도 된다. 게다가, 본 발명의 엘리먼트들은 단수 형태로 설명되거나 또는 청구될 수 있지만, 단수에 대한 제한이 명시적으로 서술되지 않는 한 복수가 고려된다.

Claims (15)

  1. 메모리 관리 방법으로서,
    물리적 메모리에서 하나 또는 그 초과의 갭들을 식별하는 단계 ― 상기 하나 또는 그 초과의 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는, 상기 물리적 메모리의 섹션들 내의 상기 물리적 메모리의 미사용 부분들임 ― ; 및
    적어도 상기 갭들의 서브세트의 물리적 어드레스들을 동적 버퍼의 가상 어드레스들로 맵핑함으로써 적어도 상기 하나 또는 그 초과의 갭들의 서브세트를 수집하는 단계를 포함하는,
    메모리 관리 방법.
  2. 제1 항에 있어서,
    상기 물리적 메모리의 적어도 2 개의 상이한 섹션들로부터 적어도 상기 하나 또는 그 초과의 갭들의 서브세트를 수집하는 단계를 포함하는,
    메모리 관리 방법.
  3. 제1 항에 있어서,
    상기 물리적 메모리의 적어도 2 개의 상이한 섹션들의 사이즈들 및 정렬은 상기 TLB 내의 엔트리들의 수에 기반하는,
    메모리 관리 방법.
  4. 제1 항에 있어서,
    적어도 하나의 새로운 갭을 상기 물리적 메모리의 적어도 하나의 섹션에 도입하는 단계를 더 포함하는,
    메모리 관리 방법.
  5. 제4 항에 있어서,
    상기 TLB의 엔트리들의 수를 감소시키는 단계를 더 포함하는,
    메모리 관리 방법.
  6. 제1 항에 있어서,
    적어도 상기 갭들의 서브세트 중 적어도 2 개의 갭들은 상기 물리적 메모리에서 비-연속적인,
    메모리 관리 방법.
  7. 제1 항에 있어서,
    하나 또는 그 초과의 동적/비고정식(dynamic/unlocked) TLB 엔트리들에서 상기 동적 버퍼의 가상 어드레스들로의 적어도 상기 갭들의 서브세트의 물리적 어드레스들의 맵핑을 수행하는 단계를 포함하는,
    메모리 관리 방법.
  8. 장치로서,
    하나 또는 그 초과의 갭들을 포함하는 물리적 메모리 ― 상기 하나 또는 그 초과의 갭들은 TLB(translation look-aside buffer)의 엔트리들에 의해 가상 어드레스들로 맵핑되는, 상기 물리적 메모리의 섹션들 내의 상기 물리적 메모리의 미사용 부분들임 ― ; 및
    상기 물리적 메모리로부터 수집된 적어도 상기 하나 또는 그 초과의 갭들의 서브세트로 맵핑되는 가상 어드레스들을 포함하는 동적 버퍼를 포함하는,
    장치.
  9. 제8 항에 있어서,
    상기 물리적 메모리로부터 수집된 적어도 상기 하나 또는 그 초과의 갭들의 서브세트는 상기 물리적 메모리의 적어도 2 개의 상이한 섹션들에 속하는,
    장치.
  10. 제8 항에 있어서,
    상기 물리적 메모리 내의 적어도 2 개의 상이한 섹션들의 사이즈들 및 정렬은 상기 TLB 내의 엔트리들의 수에 기반하는,
    장치.
  11. 제8 항에 있어서,
    적어도 하나의 새로운 갭이 적어도 하나의 섹션에 의도적으로(purposefully) 도입되는,
    장치.
  12. 제8 항에 있어서,
    적어도 상기 하나 또는 그 초과의 갭들의 서브세트 중 적어도 2 개의 갭들은 상기 물리적 메모리에서 비-연속적인,
    장치.
  13. 제8 항에 있어서,
    상기 TLB는, 상기 동적 버퍼의 가상 어드레스들을 상기 물리적 메모리로부터 수집된 상기 하나 또는 그 초과의 갭들의 물리적 어드레스들로 맵핑하기 위한 하나 또는 그 초과의 동적/비고정식 TLB 엔트리들을 포함하는,
    장치.
  14. 시스템으로서,
    하나 또는 그 초과의 갭들을 포함하는 저장하기 위한 수단 ― 상기 하나 또는 그 초과의 갭들은 맵핑하기 위한 수단에 의해 가상 어드레스들로 맵핑되는, 상기 저장하기 위한 수단의 섹션들 내의 상기 저장하기 위한 수단의 미사용 부분들임 ― ; 및
    제1 항 내지 제7 항 중 어느 한 항에 따라 적어도 상기 하나 또는 그 초과의 갭들의 서브세트를 수집하기 위한 수단을 포함하는,
    시스템.
  15. 코드를 포함하는 비일시적인 컴퓨터-판독 가능 저장 매체로서,
    상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제1 항 내지 제7 항 중 어느 한 항에 따라 메모리 관리를 위한 동작들을 수행하게 하는,
    비일시적인 컴퓨터-판독 가능 저장 매체.
KR1020187004286A 2015-08-14 2016-07-13 메모리 갭들의 효율적인 활용 KR20180039641A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/827,255 US20170046274A1 (en) 2015-08-14 2015-08-14 Efficient utilization of memory gaps
US14/827,255 2015-08-14
PCT/US2016/042067 WO2017030688A1 (en) 2015-08-14 2016-07-13 Efficient utilization of memory gaps

Publications (1)

Publication Number Publication Date
KR20180039641A true KR20180039641A (ko) 2018-04-18

Family

ID=56507864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187004286A KR20180039641A (ko) 2015-08-14 2016-07-13 메모리 갭들의 효율적인 활용

Country Status (6)

Country Link
US (1) US20170046274A1 (ko)
EP (1) EP3335123A1 (ko)
JP (1) JP2018527665A (ko)
KR (1) KR20180039641A (ko)
CN (1) CN107851067A (ko)
WO (1) WO2017030688A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255213B1 (en) * 2016-03-28 2019-04-09 Amazon Technologies, Inc. Adapter device for large address spaces
CN114816666B (zh) * 2022-04-25 2023-03-31 科东(广州)软件科技有限公司 虚拟机管理器的配置方法、tlb管理方法及嵌入式实时操作系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041295A1 (en) * 2001-08-24 2003-02-27 Chien-Tzu Hou Method of defects recovery and status display of dram
US7802070B2 (en) * 2006-06-13 2010-09-21 Oracle America, Inc. Approach for de-fragmenting physical memory by grouping kernel pages together based on large pages
US7783859B2 (en) * 2007-07-12 2010-08-24 Qnx Software Systems Gmbh & Co. Kg Processing system implementing variable page size memory organization
US8108649B2 (en) * 2008-06-13 2012-01-31 International Business Machines Corporation Method of memory management for server-side scripting language runtime system
CN102184142B (zh) * 2011-04-19 2015-08-12 中兴通讯股份有限公司 一种利用巨页映射降低cpu资源消耗的方法和装置
CN102306126B (zh) * 2011-08-24 2014-06-04 华为技术有限公司 内存管理方法、装置和系统
EP2851810A1 (en) * 2013-09-24 2015-03-25 Continental Automotive GmbH Management of a memory

Also Published As

Publication number Publication date
EP3335123A1 (en) 2018-06-20
JP2018527665A (ja) 2018-09-20
US20170046274A1 (en) 2017-02-16
WO2017030688A1 (en) 2017-02-23
CN107851067A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
JP6728419B2 (ja) 単一のページテーブルエントリ内の複数のセットの属性フィールド
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
JP6133896B2 (ja) 物理アドレスを用いる非割当てメモリアクセス
US9824013B2 (en) Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
CA2736035C (en) Opportunistic page largification
WO2017054610A1 (zh) 计算机、服务质量控制方法及装置
JP6960933B2 (ja) 実行許可に基づくキャッシュのライトアロケーション(Write−Allocation)
US20120008674A1 (en) Multithread processor and digital television system
TWI526832B (zh) 用於減少執行硬體表搜尋(hwtw)所需的時間和計算資源量的方法和系統
US9146879B1 (en) Virtual memory management for real-time embedded devices
US8521919B2 (en) Direct memory access in a computing environment
US8898429B2 (en) Application processor and a computing system having the same
US20140040577A1 (en) Automatic Use of Large Pages
US20160188251A1 (en) Techniques for Creating a Notion of Privileged Data Access in a Unified Virtual Memory System
CN107003940B (zh) 用于在非统一存储器架构中提供改进的延迟的系统和方法
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
US8055876B2 (en) Selectively mark free frames as unused for cooperative memory over-commitment
US9772776B2 (en) Per-memory group swap device
KR20180039641A (ko) 메모리 갭들의 효율적인 활용
US9916255B2 (en) Data storage based on memory persistency
US10642749B2 (en) Electronic device and method for managing memory thereof
JP6676052B2 (ja) 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法