KR20200010504A - 메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘 - Google Patents

메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘 Download PDF

Info

Publication number
KR20200010504A
KR20200010504A KR1020197038242A KR20197038242A KR20200010504A KR 20200010504 A KR20200010504 A KR 20200010504A KR 1020197038242 A KR1020197038242 A KR 1020197038242A KR 20197038242 A KR20197038242 A KR 20197038242A KR 20200010504 A KR20200010504 A KR 20200010504A
Authority
KR
South Korea
Prior art keywords
memory
pages
page
buffer
latency
Prior art date
Application number
KR1020197038242A
Other languages
English (en)
Other versions
KR102350539B1 (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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200010504A publication Critical patent/KR20200010504A/ko
Application granted granted Critical
Publication of KR102350539B1 publication Critical patent/KR102350539B1/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/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Memory System (AREA)

Abstract

메모리 시스템에 사용하기 위한 기술은 상기 메모리 시스템의 제1 메모리의 제1 복수의 페이지를 상기 메모리 시스템의 제2 메모리의 제2 복수의 페이지와 스와프(swapping)하는 단계를 포함한다. 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 갖는다. 상기 제1 레이턴시는 상기 제2 레이턴시 미만이다. 상기 기술은 페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운(translation lookaside buffer shootdown)을 트리거하여 각각의 상기 제1 복수의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제2 복수의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키는 단계를 포함한다.

Description

메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘
통상적인 컴퓨팅 시스템에서, 메모리 시스템은 임의의 단위들의 데이터에 액세스할 때 프로세서가 더 낮은 레이턴시를 경험하게 될 것을 목표로 설계된다. 일반적으로, 레이턴시들이 상이한 메모리 부분들을 가진 메모리 시스템(예를 들어, 불균일 메모리 액세스(NUMA, Non-Uniform Memory Access) 메모리 시스템 또는 멀티 레벨 메모리 시스템)은 페이지 옮겨보내기 기술들을 사용하여 개별 메모리 액세스들에 응답하여 메인 메모리의 한 부분의 내용을 메인 메모리의 더 낮은 레이턴시 부분들로 이동시킴으로써 메모리 액세스 레이턴시를 줄인다. 일반적으로, 그러한 기술들은 소프트웨어에 의존적이고 옮겨보내기 동안 운영 체제 차단을 필요로 하거나 상당한 오버헤드를 발생시킨다.
대표적인 불균일 메모리 액세스(NUMA) 메모리 시스템은 프로세서 및 적어도 두 레벨의 동적 랜덤 액세스 메모리(DRAM) 또는 제1 레벨 메모리의 대역폭이 제1 레벨 메모리의 대역폭보다 더 낮고 제2 레벨 메모리의 레이턴시가 제1 레벨 메모리의 레이턴시보다 더 높은 그 외 다른 메모리를 포함한다. 대표적인 NUMA 메모리 시스템에서, 제1 레벨 메모리는 인-패키지 메모리이고 제2 레벨 메모리는 오프-패키지 메모리이다. 통상적인 페이지 옮겨보내기 기술들은 프로세서에 가장 가까운 제1 레벨의 메모리에 더 빈번하게 액세스된 데이터를 저장하여 메모리 레이턴시를 줄임으로써 그리고 가장 빈번하게 액세스된 데이터가 이용 가능한 대역폭을 증가시킴으로써 성능을 향상시킨다. 그러나, 통상적인 페이지 옮겨보내기 기술들은 상당한 오버헤드, 예를 들어, 페이지 카피, 캐시 무효화, 변환 색인 버퍼(TLB, translation lookaside buffer) 슛다운 및 페이지 테이블 업데이트를 필요로 한다. 여기서 언급될 때, TLB 슛다운은 TLB 일관성 동작들을 수행하기 위해 프로세서 동작을 인터럽트하는 코히런시 트랜잭션이다. 각각의 프로세서가 공유된 메모리에 대한 TLB를 포함하는 다수의 프로세서를 포함하는 시스템에서, 각각의 프로세서는 일관된 TLB 엔트리들을 유지하기 위해 상응하는 TLB 슛다운을 수행한다. TLB 슛다운을 필요하게 하는 동작을 실행하는 프로세서는 일관성을 목적으로 TLB 슛다운을 실행할 필요가 있는 각각의 그 외 다른 프로세서에 인터럽트를 전송한다. 하드웨어 또는 소프트웨어에 구현될 수 있는 그러한 오버헤드는 클 수 있고 메모리를 빈번하게 옮겨보내는 작업 부하들에 대한 성능에 상당한 영향을 미칠 수 있다. 따라서, 페이지 옮겨보내기 기술들의 개선이 요구된다.
적어도 일 실시예에서, 메모리 시스템에 사용하기 위한 방법은 상기 메모리 시스템의 제1 메모리의 제1 복수의 페이지를 상기 메모리 시스템의 제2 메모리의 제2 복수의 페이지와 스와프(swapping)하는 단계를 포함한다. 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 갖는다. 상기 제1 레이턴시는 상기 제2 레이턴시 미만이다. 상기 방법은 페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운(translation lookaside buffer shootdown)을 트리거하여 각각의 상기 제1 복수의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제2 복수의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키는 단계를 포함한다. 상기 스와프하는 단계를 상기 제1 복수의 페이지를 상기 제1 메모리로부터 옮겨바꾸기 버퍼(staging buffer)로 카피하는 단계를 포함할 수 있다. 상기 방법은 상기 제2 복수의 페이지를 상기 메모리 시스템의 상기 제2 메모리로부터 상기 옮겨바꾸기 버퍼로 카피하는 단계를 포함할 수 있다. 상기 방법은 데이터를 상기 옮겨바꾸기 버퍼 내 상기 복수의 페이지의 제1 페이지의 카피에 기록하고 상기 제1 복수의 페이지를 상기 옮겨바꾸기 버퍼에 상기 카피하는 동안 상기 제1 페이지에 대한 기록 명령에 응답하여 상기 데이터를 상기 제1 메모리 내 상기 제1 페이지에 기록하는 단계를 포함할 수 있다. 상기 스와프하는 단계는 상기 제1 복수의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 제2 메모리로 카피하는 단계를 포함할 수 있다. 상기 스와프하는 단계는 상기 제2 복수의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 제1 메모리로 카피하는 단계를 포함할 수 있다. 상기 스와프하는 단계는 상기 제1 복수의 페이지 및 상기 제2 복수의 페이지가 각각 상기 옮겨바꾸기 버퍼로부터 카피되고 있음을 나타내도록 각각의 상기 제1 복수의 페이지의 제1 전환 상태 및 각각의 상기 제2 복수의 페이지의 제2 전환 상태를 업데이트하는 단계를 포함할 수 있다. 상기 방법은 제3 복수의 페이지를 상기 메모리 시스템의 상기 제2 메모리로부터 상기 메모리 시스템의 상기 제1 메모리 내 제1 복수의 미사용 페이지로 옮겨보내는 단계를 포함할 수 있다. 상기 방법은 상기 페이지 테이블을 업데이트하고 제1 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제3 복수의 페이지에 대한 가상 주소를 상기 제1 메모리 내 상응하는 물리 주소와 연관시키는 단계를 포함할 수 있다.
적어도 일 실시예에서, 장치는 메모리 시스템의 제1 메모리의 제1 N개의 페이지를 상기 메모리 시스템의 제2 메모리의 제2 N개의 페이지와 스와프하도록 구성된 옮겨보내기 제어 로직을 포함한다. 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 갖는다. 상기 제1 레이턴시는 상기 제2 레이턴시 미만이다. 상기 장치는 상기 메모리 시스템의 모든 페이지에 대한 가상 대 물리 주소 변환을 저장하도록 구성된 페이지 테이블을 포함한다. 상기 장치는 상기 메모리 시스템의 페이지들에 대해 최근에 사용된 가상 대 물리 주소 변환을 저장하도록 구성된 변환 색인 버퍼를 포함한다. 상기 옮겨보내기 제어 로직은 상기 페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제1 N개의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제2 N개의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키도록 더 구성되며, 이때 N은 1보다 큰 정수이다. 상기 장치는 적어도 2×N 페이지들의 크기를 갖는 옮겨바꾸기 버퍼를 포함할 수 있다. 상기 옮겨보내기 제어 로직은 메모리 시스템의 제1 메모리의 제1 N개의 페이지를 상기 옮겨바꾸기 버퍼로 카피하도록 구성될 수 있다. 상기 옮겨보내기 제어 로직은 상기 메모리 시스템의 제2 메모리의 제2 N개의 페이지를 상기 옮겨바꾸기 버퍼로 카피하도록 구성될 수 있다. 상기 장치는 데이터를 상기 옮겨바꾸기 버퍼 내 상기 제1 N개의 페이지의 제1 페이지의 카피에 기록하도록 그리고 상기 제1 N개의 페이지를 상기 옮겨바꾸기 버퍼에 상기 카피하는 동안 상기 제1 제1 페이지에 대한 기록 명령에 응답하여 상기 데이터를 상기 제1 메모리 내 상기 제1 페이지에 기록하도록 구성된 메모리 제어기를 포함할 수 있다.
적어도 일 실시예에서, 메모리 시스템에서의 페이지 옮겨보내기를 위한 방법은 제1 복수의 페이지를 상기 메모리 시스템의 제2 메모리로부터 상기 메모리 시스템의 제1 메모리 내 제1 복수의 미사용 페이지로 옮겨보내는 단계를 포함한다. 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 가지며, 상기 제1 레이턴시는 상기 제2 레이턴시 미만이다. 상기 방법은 페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제1 복수의 페이지에 대한 가상 주소를 상기 제1 메모리 내 상응하는 물리 주소와 연관시키는 단계를 포함할 수 있다. 상기 방법은 상기 제1 메모리의 제2 복수의 페이지를 상기 메모리 시스템의 상기 제2 메모리의 제3 복수의 페이지와 스와프하는 단계를 포함할 수 있다. 상기 방법은 상기 페이지 테이블을 업데이트하고 다른 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제2 복수의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제3 복수의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키는 단계를 포함할 수 있다.
본 발명은 첨부 도면들을 참조하여 더 양호하게 이해될 수 있고, 그것의 많은 목적, 특징, 및 이점이 해당 기술분야에서의 통상의 기술자들에게 분명해진다.
도 1은 불균일 메모리 액세스 프로세싱 시스템의 기능 블록도를 도시한다.
도 2는 메모리 시스템의 일 부분의 기능 블록도를 도시한다.
도 3은 본 발명의 적어도 일 실시예와 일치하는 오버헤드 감소 페이지 옮겨보내기를 포함하는 프로세싱 시스템의 기능 블록도를 도시한다.
도 4는 대표적인 메모리 부분의 기능 블록도를 도시한다.
도 5는 본 발명의 적어도 일 실시예와 일치하는 옮겨바꾸기 버퍼를 사용하여 오버헤드가 감소되는 페이지 옮겨보내기 시스템에 대한 대표적인 정보 및 제어 흐름들을 도시한다.
도 6은 본 발명의 적어도 일 실시예와 일치하는 오버헤드가 감소되는 페이지 옮겨보내기 시스템에 대한 대표적인 정보 및 제어 흐름들을 도시한다.
상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
오버헤드가 감소된 페이지 옮겨보내기를 구현하는 메모리 시스템은 복수의 페이지를 더 높은 레이턴시 메모리로부터 그리고 복수의 페이지를 더 낮은 레이턴시 메모리로부터, 실제 페이지 옮겨보내기가 시작되기 전에 옮겨바꾸기 버퍼로 카피한다. 옮겨바꾸기 버퍼는 다수의 페이지를 동시에 옮겨보낼 수 있도록(예를 들어, N개까지의 페이지가 더 높은 레이턴시 메모리와 더 낮은 레이턴시 메모리 사이에서 스와프됨) 충분히 커(예를 들어, 2×N 페이지들의 크기를 갖는 옮겨바꾸기 버퍼, N은 1보다 큰 정수), 그렇지 않으면 별개일 다수의 TLB 슛다운 또는 그 외 다른 코히런시 트랜잭션을 하나의 이벤트로 통합시킴으로써 옮겨보내기 오버헤드를 더 줄임에 따라, 페이지 옮겨보내기의 성능에 미치는 영향을 줄인다. 본원에서 언급될 때, 페이지는 메모리의 고정된 길이의 연속적인 블록(페이지 테이블에서 단일 에트리에 의해 기술되는)이고, 가상 메모리 운영 체제에서 주소 변환을 위한 최소 데이터 단위이다.
도 1을 참조하면, 시스템(100)은 상호 접속 네트워크(120)을 사용하여 서로 통신하는 다수의 프로세싱 노드(예를 들어, 노드(102), 노드(104) 및 노드(106))를 포함하는 대표적인 불균일 메모리 액세스 프로세싱 시스템이다. 각각의 노드는 하나 이상의 프로세서 및 상응하는 메모리 부분(예를 들어, 메모리 부분(110), 메모리 부분(112) 및 메모리 부분(114)), 및 메모리 시스템(108)을 포함한다. 각각의 노드들은 다른 노드에서의 메모리보다 더 빠르게 노드 내 메모리 부분에 액세스할 수 있다. 프로세싱 노드들은 하나보다 많은 캐시가 메모리 시스템(108)의 동일한 위치의 내용을 캐싱할 때 메모리 시스템(108)에서의 메모리 이미지의 코히런시를 유지하기 위한 프로세서 간 통신을 사용한다. 시스템(100)은 메모리 제어기(도시되지 않음)와 연관된 고속 정적 랜덤 액세스 메모리(RAM)에서의 프로브 필터를 사용하는 캐시 코히런시 정책 또는 그 외 다른 적합한 기술을 구현한다.
도 2를 참조하면, 메모리 부분(110)의 일 실시 예는 하나 이상의 메모리 집적 회로(예를 들어, 하나 이상의 동적 RAM(DRAM) 집적 회로)를 포함한다. 적어도 일 실시예에서, 메모리 시스템은 동시에 액세스되는 다수의 메모리 집적 회로를 포함한다(예를 들어, 듀얼 인-라인 메모리 모듈(DIMM)로서 구성됨). 각각의 메모리 집적 회로는 더 넓은 데이터 인터페이스(예를 들어, 64-비트 데이터 인터페이스)를 형성하기 위해 그 외 다른 메모리 집적 회로들의 데이터 인터페이스들과 조합되는 데이터 인터페이스(예를 들어, 8-비트 데이터 인터페이스)를 포함할 수 있다. 각각의 메모리 집적 회로는 동시에 액세스될 수 있는 다수의 독립적인 메모리 뱅크를 포함할 수 있다. 각각의 메모리 뱅크는 다수의 로우 및 컬럼을 포함하여, DRAM 셀들의 2-차원 어레이를 포함할 수 있다. 메모리의 위치에는 뱅크, 로우 및 컬럼 필드들을 포함하는 메모리 어드레스를 사용하여 액세스될 수 있다. 메모리 시스템(108)의 적어도 일 실시예에서에서는, 한 번에 뱅크에서의 단지 하나의 로우에 액세스될 수 있고 로우 데이터는 해당 뱅크에 전용되는 로우 버퍼에 저장될 수 있다. 활성화 명령은 데이터의 로우를 메모리 어레이로부터 로우 버퍼로 이동시킨다. 로우가 로우 버퍼에 있으면, 판독 또는 기록 명령이 데이터를 관련 메모리 어드레스로부터/로 판독/기록할 수 있다. 그에 따라, 메모리 명령의 레이턴시는 상응하는 로우가 관련 메모리 뱅크의 로우 버퍼에 있는지 여부에 부분적으로 의존한다.
메모리 어드레스의 내용이 로우 버퍼에 있으면(즉, 메모리 어드레스가 로우 버퍼에서 적중하면), 메모리 제어기는 메모리 뱅크로 판독 또는 기록 명령을 발행하기만 하면 되며, 이는 일 실시 예에서 각각, tCL의 판독 메모리 액세스 레이턴시 또는 tWL의 기록 메모리 액세스 레이턴시를 갖는다. 메모리 어드레스의 내용이 로우 버퍼에 있지 않으면(즉, 메모리 어드레스가 로우 버퍼에서 적중 실패하면), 메모리 제어기는 로우 버퍼를 프리차지하고, 데이터의 로우를 로우 버퍼로 이동시키기 위한 활성화 명령을 발생한 다음, 메모리 뱅크로 판독 또는 기록 명령을 발행할 필요가 있으며, 이는 일 실시 예에서 각각, tRCD + tCL + tRP의 관련 판독 메모리 액세스 레이턴시 또는 tRCD + tWL + tRP의 기록 메모리 액세스 레이턴시를 가지며, 이때 tRCD는 로우 어드레스 스트로브와 컬럼 어드레스 스트로브 활성화 명령 사이에 요구되는 지연 시간이고 tRP는 로우 프리차지 레이턴시이다.
도 3을 참조하면, 노드(102)는 하나 이상의 프로세서를 포함한다. 예를 들어, 노드(102)는 다수의 코어(코어 0, 코어 1, 코어 2, ..., 코어 N)를 포함하나 그 외 다른 실시 예들의 노드(102)는 그 외 다른 프로세서 유닛들의 조합들을 통합한다(예를 들어, 중앙 처리 장치 및 그래픽 처리 장치, 중앙 처리 장치, 그래픽 처리 장치 또는 그 외 다른 프로세서를 포함하고 보조 프로세서 또는 고정 기능 프로세싱 하드웨어를 포함할 수 있는 적어도 하나의 가속 처리 장치). 디렉토리(132)는 디렉토리 기반 캐시 코히런스 정책을 사용하여 노드(102) 및 메모리 시스템(108)의 캐시들의 코히런스를 유지하기 위해 사용되는 캐시 디렉토리에 대한 저장 장치를 포함한다. 디렉토리(132)는 고속 정적 랜덤 액세스 메모리 또는 그 외 다른 적합한 기술을 사용하여 구현된다. 도 3은 페이지 테이블(152)을 메모리 부분(110) 내에 포함되는 것으로 도시한다. 그러나, 그 외 다른 실시 예들에서는, 페이지 테이블(152)이 메모리 시스템(108)의 다른 부분에 또는 별개의 구조로서 포함된다는 것에 주의한다.
메모리 부분(110)은 노드(102)의 부분들과 집적 회로 상에, 멀티-칩 모듈로, 또는 노드(102)의 부분들과 인쇄 회로 기판 상에 통합될 수 있거나, 또는 도 4에 도시된 바와 같이, 노드(102)의 부분들 위에 수직으로 적층될 수 있다. 프로세서 위에 수직으로 적층되는 메모리는 메모리 대역폭을 증가시키고 액세스 에너지를 감소시키며, 이 둘 다 성능 및 에너지 효율에 매우 중요하다. 그러나, 프로세서 위에 적층될 수 있는 메모리의 제한된 용량에 기인하여, 충분한 메모리 총 용량을 제공하기 위해서는 또한 그 외 다른 노드들에 포함될 수 있는 외부의 오프-패키지 메모리가 요구된다. 프로세서-인-메모리(processor-in-memory) 구현은 노드(102)의 적어도 일 부분을 하나 이상의 메모리 다이 내 프로세싱 로직으로서 또는 스택(402)에서의 별개의 로직 다이로서 포함하며, 이는 또한 하나 이상의 메모리 다이를 포함한다. 호스트(410) 및 네 개의 프로세서-인-메모리(processor-in-memory)는 인터포저(412) 상에 형성된다. 도 2 및 도 4의 메모리 부분들은 단지 대표적인 것이고 본원에 설명되는 기술들은 그 외 다른 메모리 아키텍처들을 갖는 메모리 부분들을 포함하는 시스템들에 적용된다는 것에 주의한다.
도 3을 참조하면, 오버헤드가 감소된 페이지 옮겨보내기 기술은 하나 이상의 페이지를 메모리의 상이한 레벨들의 메모리 사이에서 옮겨보내면서 메모리 위치들에 대한 연속적인 액세스를 제공하기 위해 옮겨바꾸기 버퍼(154)를 사용한다. 오버헤드가 감소된 페이지 옮겨보내기 기술의 일부 실시 예에서, 오버헤드가 감소된 페이지 옮겨보내기 기술은 옮겨보내기 페이지들의 한 세트를 사용하나, 그 외 다른 실시 예들에서는, 다수의 옮겨보내기 페이지 및/또는 추가 레벨들의 메모리가 사용된다(예를 들어, N개의 제1-레벨 페이지). 오버헤드가 감소된 페이지 옮겨보내기 기술은 메모리 버스 상의 메모리 액세스들을 프로파일링하고 메모리 내 페이지들 중 적어도 일부(예를 들어, 메모리 내 Q개의 페이지 중 P개의 페이지, 이때 P 및 Q는 정수이고 P ≤ Q)에 대한 메모리 액세스 빈도 값들을 유지하는 프로파일링 로직(144)을 포함한다. 적어도 일 실시예에서, 프로파일링 로직(144)은 메모리 내 각 페이지에 대한 메모리 액세스 빈도 값들을 유지한다. 예를 들어, 프로파일링 로직(144)은 메모리 시스템(108) 내 각각의 페이지에 대한 카운트 값을 저장하는 미리 결정된 메모리 위치들(예를 들어, 정적 랜덤 액세스 메모리 내)을 사용하여 구현되는 하드웨어 카운터들을 사용한다. 메모리 액세스 정보의 저장 구조 및 프로파일링 로직(144) 및 옮겨보내기 제어 로직(148)의 구현 및 정책들 및은 단지 대표적인 것이고 본원의 교시 내용과 일치하는 그 외 다른 데이터 구조들, 구현들 및 정책들이 사용될 수 있다는 것에 주의한다.
프로파일링 로직(144)은 노드(102)의 프로세서가 메모리 시스템(108) 내 상응하는 페이지를 판독 또는 기록할 때마다 빈도 값을 증분시킨다. 액세스되는 페이지가 P < Q를 갖는 프로파일링 로직(144)의 일 실시 예에 의해 추적되고 있지 않을 경우, 다른 페이지에 대한 기존의 카운트 엔트리를 축출하기 위해 교체 정책(예를 들어, 가장 최근에 사용된 교체 정책)이 사용되고 액세스되는 페이지에 대한 새로운 카운트 엔트리를 삽입한다. 적어도 일 실시예에서, 프로파일링 로직(144)은 이력 편향을 감소시키기 위해 페이지당 액세스 빈도 값들을 주기적으로 소거하거나 왼쪽으로 시프트시킨다. 옮겨보내기 제어 로직(148)은 예를 들어, 선형 스캔(linear scan) 또는 그 외 다른 적합한 기술을 사용하여, 한 레벨의 메모리 내 각 페이지의 메모리 액세스 빈도 값들을 주기적으로 비교한다. 옮겨보내기 제어 로직(148)은 그러한 비교를 후면에서(즉, 노드(102)의 프로세서의 프로그램 실행을 인터럽트하지 않게) 수행한다. 그에 따라, 비교는 노드(102)의 프로세서의 프로그램 실행의 최상 경로에 있지 않다. 옮겨보내기 제어 로직(148)은 비교에 기초하여 페이지 옮겨보내기 할 후보들을 식별한다. 예를 들어, 옮겨보내기 제어 로직(148)은 페이지 옮겨보내기 할 후보들로서, 최저 액세스 빈도들, 그리고 하나 이상의 그 외 다른 더 높은 레이턴시 메모리 내 최고 빈도 메모리 액세스 페이지들의 N 미만의 최고 메모리 액세스 빈도인 빈도들을 갖는 N개의 제1-레벨 페이지를 식별한다. 메모리 액세스 빈도들의 임계 수 차이가 사용될 수 있다. 예를 들어, 제1-레벨 페이지들이 제2-레벨 페이지의 액세스 빈도들보다 적어도 L 액세스 적은(L은 0보다 큰 정수) 액세스 빈도들을 가진다면, 제2-레벨 페이지들이 제1-레벨 메모리로 옮겨보내기 할 후보들이다. 미리 결정된 임계치는 실행 시 정적으로 또는 동적으로 결정될 수 있다.
더 낮은 레이턴시 메모리와 하나 이상의 더 높은 레이턴시 메모리 사이에서 스와프하기 위한 페이지들을 식별 한후, 옮겨보내기 제어 로직(148)은 메모리 시스템(108), 전환 테이블(150), TLB(151), 페이지 테이블(152) 및 옮겨바꾸기 버퍼(154)가 옮겨바꾸기 버퍼(154)를 사용하여 후보 페이지들의 물리적 위치들을 스와프하게 하는 제어 신호들 및 메모리 명령들을 생성한다. 페이지 옮겨보내기 할 후보들을 식별한 후, 옮겨보내기 제어 로직(148)은 더 높은 레이턴시 메모리 내 타겟 페이지를 더 낮은 레이턴시 메모리 내 동일한 수의 희생 페이지와 스와프한다. 옮겨보내기는 실제 페이지 옮겨보내기 이전에 각각의 그러한 후보들을 옮겨바꾸기 버퍼(154)로 카피하는 것을 포함하며, 이는 후면에서 일어난다. 카피는 노드(102)의 프로세서의 프로그램 실행을 인터럽트하게 하지 않는다. 페이지들을 옮겨바꾸기 버퍼(154)로 카피하는 동안, 데이터는 계속해서 원래 메모리 위치들로부터 액세스 가능하다. 옮겨보내기 제어 로직(148)은 일관성을 유지하기 위해 그러한 페이지들에 대한 기록 동작들에 리던던시를 도입한다. 예를 들어, 메모리 제어기(142)가 원래 메모리 위치들에 대한 기록 동작을 핸들링하는 동안, 종래 기록 동작과 일치하게, 옮겨보내기 제어 로직(148)은 또한 데이터를 옮겨바꾸기 버퍼(154) 내 페이지의 카피에 기록한다.
옮겨바꾸기 버퍼(154)로의 카피의 완료 이후, 옮겨보내기 제어 로직(148)은 전환 테이블(150)을 사용하여 그러한 두 페이지에의 모든 판독 및 기록 액세스를 옮겨보내기 제어 로직(154)으로 전환시킨다. 전환 테이블(150)은 옮겨바꾸기 버퍼(154)에서 어느 페이지들이 활성 카피들을 갖는지를 나타낸다. 따라서, 메모리 액세스에 응답하여, 메모리 제어기(142)는 임의의 타겟 메모리 소자들에 액세스 하기 전 먼저 전환 테이블(150)을 확인하여 옮겨바꾸기 버퍼(154) 내 상응하는 페이지들에 액세스할지 여부를 결정한다. 적어도 일 실시예에서는, 전환 테이블(150) 및 메모리 동작의 타겟 주소와의 비교를 사용하기 보다, 전환 정보가 예를 들어, 페이지-레벨, 가상 대 물리 어드레스 매핑 정보와 함께 각 엔트리에 대한 TLB(151)에 추가 비트들을 할당함으로써, TLB(151)로 통합될 수 있다. 추가 비트들은 상응하는 TLB 엔트리와 연관된 타겟 페이지가 옮겨바꾸기 버퍼(154)에 활성 카피를 갖는지 여부를 나타낸다.
후보 페이지들을 옮겨바꾸기 버퍼(154)로 카피하는 것의 완료 이후, 옮겨보내기 제어 로직(148)은 그러한 페이지들을 옮겨바꾸기 버퍼(154)로부터 새로운 물리 메모리 위치들로 카피한다. 옮겨바꾸기 버퍼(154)로부터의 카피 동안, 후보 페이지에 대해 이루어지는 메모리 판독 요청들은 상응하는 후보 메모리 부분 대신 옮겨바꾸기 버퍼(154)에 액세스하는 한편, 메모리 기록 요청들은 옮겨바꾸기 버퍼(154) 및 상응하는 후보 메모리 부분 둘 다에 기록한다. 옮겨바꾸기 버퍼(154)로부터의 카피가 완료되면, 옮겨보내기는 완료되고, 옮겨보내기 제어 로직(148)은 옮겨바꾸기 버퍼(154) 및 전환 테이블(150) 내 상응하는 엔트리들을 할당 해제하거나, TLB(151) 내 상응하는 전환 비트들을 소거한다. 옮겨보내기 제어 로직(148)은 또한 TLB 슛다운을 발행하고 TLB(151) 및 페이지 테이블(152)을 옮겨보내기에 수반되는 페이지들의 새로운 물리적 위치들에 따라 업데이트된 가상 대 물리 주소 변환으로 업데이트한다. 옮겨보내기 제어 로직(148)은 또한 캐시 무효화 및 임의의 그 외 다른 일관성 동작들을 트리거한다. 옮겨보내기 제어 로직(148)은 그러한 페이지들이 동시에 옮겨보내지고 단일 TLB 슛다운 이벤트가 그러한 옮겨보내지는 페이지들 전부에 대해 발생하도록 모든 후보 페이지에 걸쳐 페이지 옮겨보내기의 타이밍을 조정한다.
도 3 및 도 5를 참조하면, 적어도 일 실시예, 프로파일링 로직(144) 및 옮겨보내기 제어 로직(148)은 시스템(100)이 대표적인 정보 및 제어 흐름들(600)을 생성하기 위한 다양한 제어 신호를 제공한다. 프로파일링 로직(144) 및 옮겨보내기 제어 로직(148)의 구현들은 정보 및 제어 흐름들(600)과 일치하게 명령들을 실행하도록 구성된 전용 회로들 또는 범용 프로세싱 로직을 포함한다. 옮겨보내기 제어 로직(148)은 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 검색하여 최저 메모리 액세스 빈도들(예를 들어, 빈도들(F1))을 갖는 최저 레이턴시 메모리 내 페이지들(예를 들어, 메모리 부분(110))을 식별하고 더 높은 레이턴시 메모리 내 페이지들의 최고 액세스 빈도들(예를 들어, 빈도들(F2))을 갖는 높은 레이턴시 메모리 내 페이지들(예를 들어, 메모리 부분들(112, 114 또는 116))을 식별한다(604). 옮겨보내기 제어 로직(148)은 빈도들(F1)을 빈도들(F2)과 비교한다(606). 일 실시 예에서, 빈도들(F1)이 빈도들(F2)보다 적다면, 상응하는 페이지들은 옮겨보내기 할 적합한 후보들이다. 옮겨보내기 제어 로직(148)이 옮겨보내기 할 N개의 적합한 후보를 식별하는 데 실패한 경우, 메모리 액세스 정보의 프로파일링을 계속하고(602) 옮겨보내기 제어 로직(148)은 계속해서 적어도 N개의 적합한 옮겨보내기 후보를 위해 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 주기적으로 검색한다. 본원에 설명되는 조건들이 N개보다 적은 페이지에 의해 충족될 경우 N개보다 적은 페이지가 스와프될 수 있다는 것에 주의한다. 옮겨보내기 제어 로직(148)이 옮겨보내기 할 임의의 적합한 후보를 식별하는 데 실패한 경우, 메모리 액세스 정보의 프로파일링을 계속하고(602) 옮겨보내기 제어 로직(148)은 계속해서 적합한 옮겨보내기 후보들을 위해 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 주기적으로 검색한다.
옮겨보내기 할 후보들을 성공적으로 식별한 후, 옮겨보내기 제어 로직(148)은 최저 레이턴시 메모리에서 최소 빈도로 액세스된 데이터(즉, N개의 페이지를 포함하는 후보 데이터(D1))의 최저 레이턴시 메모리 내 물리 위치들(즉, 물리 위치들(P1))과 더 높은 레이턴시 메모리에서 가장 빈번하게 액세스된 데이터(즉, 후보 데이터(D2))의 더 높은 레이턴시 메모리 내 물리 위치들(즉, 물리 위치들(P2))의 스와프를 개시한다(608). 스와프는 그러한 물리 위치들에 저장된 페이지들이 옮겨보내지고 있음을 나타내기 위해, 전환 테이블(150), 또는 TLB(151) 내 상응하는 엔트리들을 기록하는 것을 포함한다(610). 또한, 옮겨보내기 제어 로직(148)은 그러한 물리 위치들 내 후보 페이지들에의 임의의 기록을 인에이블하여 옮겨바꾸기 버퍼(154) 내 상응하는 카피에 중복 기록하게 한다(610). 옮겨보내기 제어 로직(148)은 후보 데이터(D1)를 최저 레이턴시 메모리의 물리 위치들(P1)로부터 옮겨바꾸기 버퍼(154)로 카피하고 후보 데이터(D2)를 더 높은 레이턴시 메모리의 물리 위치들(P2)로부터 옮겨바꾸기 버퍼(154)로 카피한다(612).
후보 페이지들이 옮겨바꾸기 버퍼(154)로 카피된 후, 옮겨보내기 제어 로직(148)은 전환 테이블(150)을 업데이트하여 그러한 물리 위치들 내 후보 페이지들에의 임의의 기록을 인에이블하여 옮겨바꾸기 버퍼(154) 내 상응하는 카피에 기록하게 한다(614). 옮겨보내기 제어 로직(148)은 후보 데이터(D1)를 옮겨바꾸기 버퍼(154)로부터 물리 위치들(P2)로 카피하고 후보 데이터(D2)를 옮겨바꾸기 버퍼(154)로부터 물리 위치들(P1)로 카피한다(614). 후보 데이터가 옮겨바꾸기 버퍼(154)로부터 적절한 물리적 위치들로 카피된 후, 옮겨보내기 제어 로직(148)은 그러한 물리적 위치들에 저장된 페이지들의 옮겨보내기의 완료를 나타내기 위해 전환 테이블(150), 또는 TLB(151) 내 상응하는 엔트리들을 소거한다(616). 또한, 옮겨보내기 제어 로직(148)은 옮겨바꾸기 버퍼(154)에의 중복 기록을 디스에이블하고, 일관성 동작들, 예를 들어, TLB 슛다운을 트리거하고, 페이지 테이블(152) 내 상응하는 엔트리들을 업데이트하며, 캐시 무효화한다(616). 도 5의 정보 및 제어 흐름들은 단지 대표적인 것이고 데이터 의존성을 유지하는 그 외 다른 정보 및 제어 흐름들이 본원에 설명된 오버헤드가 감소된 페이지 옮겨보내기 기술과 일치된다는 것에 유의한다. 결과적으로, 하나의 일관성 동작이 다수의 페이지 옮겨보내기에 대해 임의의 영향을 받는 TLB들을 업데이트함에 따라, 다수의 페이지 옮겨보내기에 걸친 일관성 동작들의 비용을 분할 상환함으로써 시스템 성능을 개선한다.
도 3 및 도 6을 참조하면, 적어도 일 실시예에서, 메모리 부분들(110)은 페이지 옮겨보내기를 위해 처음에 확보될 수 있는 미사용 메모리 공간을 가질 수 있다(예를 들어, 대표적인 정보 및 제어 흐름들(700) 참조). 최저 레이턴시 메모리 내에 페이지 옮겨보내기에 이용 가능하고 미사용인 물리적 위치들(물리적 위치들(P1))이 불충분할 경우(703), 옮겨보내기 제어 로직은 상술된 대표적인 정보 및 제어 흐름들(600)의 604로 진행한다. 하나 이상의 페이지 옮겨보내기 시나리오를 위해 최저 레이턴시 메모리 내에 이용 가능한 물리적 공간이 충분할 경우(703), 옮겨바꾸기 버퍼(154)는 미사용이다. 옮겨보내기 제어 로직(148)은 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 검색하여 최고 액세스 빈도들(예를 들어, 빈도들(F2))을 갖는 더 높은 레이턴시 메모리 내 페이지들(예를 들어, 메모리 부분들(112, 114 또는 116))을 식별한다(704). 일 실시 예에서, 빈도들(F2)이 미리 결정된 임계치(임계치)보다 크다면(706), 상응하는 페이지들이 옮겨보내기 할 적합한 후보들이다. 옮겨보내기 제어 로직(148)이 옮겨보내기 할 N개의 적합한 후보를 식별하는 데 실패한 경우(706), 메모리 액세스 정보의 프로파일링을 계속하고(602) 옮겨보내기 제어 로직(148)은 계속해서 적어도 N개의 적합한 옮겨보내기 후보를 위해 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 주기적으로 검색한다. 본원에 설명되는 조건들이 N개보다 적은 페이지에 의해 충족될 경우 N개보다 적은 페이지가 옮겨보내질 수 있다는 것에 주의한다. 옮겨보내기 제어 로직(148)이 옮겨보내기 할 임의의 적합한 후보를 식별하는 데 실패한 경우, 메모리 액세스 정보의 프로파일링을 계속하고(602) 옮겨보내기 제어 로직(148)은 계속해서 적합한 옮겨보내기 후보들을 위해 프로파일링 로직(144)에 저장된 메모리 액세스 정보를 주기적으로 검색한다.
옮겨보내기 할 후보들을 성공적으로 식별한 후, 옮겨보내기 제어 로직(148)은 최저 레이턴시 메모리에서 이용 가능한 미사용 물리 위치들(즉, 물리 위치들(P1))과 더 높은 레이턴시 메모리에서 빈번하게 액세스된 데이터(즉, 후보 데이터(D2))의 더 높은 레이턴시 메모리 내 후보 페이지들(즉, 물리 위치들(P2))의 옮겨보내기를 개시한다(708). 옮겨보내기는 그러한 물리 위치들에 저장된 페이지들이 옮겨보내지고 있음을 나타내기 위해, 전환 테이블(150), 또는 TLB(151) 내 상응하는 엔트리들을 기록하는 것을 포함한다(710). 또한, 옮겨보내기 제어 로직(148)은 더 높은 레이턴시 메모리의 그러한 물리 위치들(P2) 내 후보 페이지들에의 임의의 기록을 인에이블하여 최저 레이턴시 메모리(P1) 내 상응하는 카피에 중복 기록하게 한다(710). 옮겨보내기 제어 로직(148)은 후보 데이터(D2)를 더 높은 레이턴시 메모리의 물리 위치들(P2)로부터 최저 레이턴시 메모리 내 물리 위치들(P1)로 카피한다(712).
후보 데이터가 스와프된 후, 옮겨보내기 제어 로직(148)은 그러한 물리적 위치들에 저장된 페이지들의 옮겨보내기의 완료를 나타내기 위해 전환 테이블(150), 또는 TLB(151) 내 상응하는 엔트리들을 소거한다(716). 또한, 옮겨보내기 제어 로직(148)은 중복 기록을 디스에이블하고, 일관성 동작들, 예를 들어, TLB 슛다운을 트리거하고, 페이지 테이블(152) 내 상응하는 엔트리들을 업데이트하며, 캐시 무효화한다(716). 도 6의 정보 및 제어 흐름들은 단지 대표적인 것이고 데이터 의존성을 유지하는 그 외 다른 정보 및 제어 흐름들이 본원에 설명된 오버헤드가 감소된 페이지 옮겨보내기 기술과 일치된다는 것에 유의한다. 결과적으로, 하나의 일관성 동작이 다수의 페이지 옮겨보내기에 대해 임의의 영향을 받는 TLB들을 업데이트함에 따라, N개의 페이지 옮겨보내기에 걸친 일관성 동작들의 비용을 분할 상환함으로써 시스템 성능을 개선한다.
따라서, 오버헤드가 감소된 페이지 옮겨보내기를 위한 기술이 설명되었다. 회로들 및 물리적 구조들이 일반적으로 본 발명의 실시예들을 설명하는 데 있어서 당연시되었지만, 최신 반도체 설계 및 제조에서, 물리적 구조들 및 회로들은 후속 설계, 시뮬레이션, 테스트 또는 제조 스테이지들에서 사용하기에 적합한 컴퓨터-판독가능한 서술식 형태로 구현될 수 있다는 것이 잘 알려져 있다.  대표적인 구성들에서 별개의 구성요소들로서 제시된 구조들 및 기능은 조합된 구조 또는 구성요소로서 구현될 수 있다.  본 발명의 다양한 실시예는 회로들, 회로들의 시스템들, 관련 방법들, 및 모두 본원에 설명된 바와 같고 첨부된 청구범위에서 정의되는 바와 같은 그러한 회로들, 시스템들, 및 방법들이 인코딩된 유형의 컴퓨터-판독가능한 매체(예를 들어, VHSIC 하드웨어 설명 언어(VHDL), 베릴로그(Verilog), GDSII 데이터, EDIF(Electronic Design Interchange Format), 및/또는 거버(Gerber) 파일)를 포함하는 것으로 고려된다. 또한, 컴퓨터-판독가능한 매체들은 명령들 뿐만 아니라 본 발명을 구현하기 위해 사용될 수 있는 데이터를 저장할 수 있다. 명령들/데이터는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합들에 관한 것일 수 있다.
본원에 제시된 본 발명에 대한 설명은 예시적인 것이고, 본 발명의 범위를 다음 청구범위에 제시된 바와 같이 제한하도록 의도되지 않는다. 예를 들어, 본 발명은 메모리의 페이지들이 옮겨보내지는 일 실시예로 설명되었지만, 해당 기술분야에서의 통상의 기술자는 본원에서의 교시 내용이 그 외 다른 고정된 영역 크기들로 이용될 수 있다는 것을 이해할 것이다. 또한, 본원에 설명된 기술들은 불균일 메모리 액세스 메모리 시스템들 뿐만 아니라, 멀티 레벨 메모리 시스템들(즉, 캐시 계층들과 유사한 장치들의 계층을 사용하는 메모리 시스템들)과 이용될 수 있다. 이하의 청구범위에 제시된 바와 같은 본 발명의 범위에서 벗어나지 않고, 본원에 제시된 설명에 기초하여 본원에 개시된 실시예들의 변경들 및 변형들이 이루어질 수 있다.

Claims (20)

  1. 메모리 시스템에 사용하기 위한 방법으로서,
    상기 메모리 시스템의 제1 메모리의 제1 복수의 페이지를 상기 메모리 시스템의 제2 메모리의 제2 복수의 페이지와 스와프(swapping)하는 단계로서, 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 가지며, 상기 제1 레이턴시는 상기 제2 레이턴시 미만인, 상기 스와프하는 단계; 및
    페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운(translation lookaside buffer shootdown)을 트리거하여 각각의 상기 제1 복수의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제2 복수의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 스와프하는 단계는:
    상기 제1 복수의 페이지를 상기 제1 메모리로부터 옮겨바꾸기 버퍼(staging buffer)로 카피하는 단계;
    상기 제2 복수의 페이지를 상기 제2 메모리로부터 상기 옮겨바꾸기 버퍼로 카피하는 단계; 및
    데이터를 상기 옮겨바꾸기 버퍼 내 상기 제1 복수의 페이지의 제1 페이지의 카피에 기록하고 상기 제1 복수의 페이지를 상기 옮겨바꾸기 버퍼에 상기 카피하는 동안 상기 제1 페이지에 대한 기록 명령에 응답하여 상기 데이터를 상기 제1 메모리 내 상기 제1 페이지에 기록하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 스와프하는 단계는:
    상기 제1 복수의 페이지 및 상기 제2 복수의 페이지가 각각 상기 옮겨바꾸기 버퍼로 카피되고 있음을 나타내도록 각각의 상기 제1 복수의 페이지의 제1 전환 상태 및 각각의 상기 제2 복수의 페이지의 제2 전환 상태를 업데이트하는 단계를 더 포함하되,
    상기 기록은 상기 제1 페이지의 상기 제1 전환 상태에 기초하는, 방법.
  4. 청구항 2에 있어서, 상기 스와프하는 단계는:
    상기 제1 복수의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 제2 메모리로 카피하는 단계;
    상기 제2 복수의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 제1 메모리로 카피하는 단계; 및
    상기 제1 복수의 페이지 및 상기 제2 복수의 페이지가 각각 상기 옮겨바꾸기 버퍼로부터 카피되고 있음을 나타내도록 각각의 상기 제1 복수의 페이지의 제1 전환 상태 및 각각의 상기 제2 복수의 페이지의 제2 전환 상태를 업데이트하는 단계를 더 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 스와프하는 단계는:
    상기 제1 복수의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 카피하는 동안 상기 제1 제1 페이지에 대한 제2 기록 명령에 응답하여 상기 제1 페이지의 카피를 상기 옮겨바꾸기 버퍼에 기록하는 단계를 포함하는, 방법.
  6. 청구항 4 또는 5에 있어서, 상기 스와프하는 단계는:
    각각의 상기 제1 복수의 페이지의 상기 제1 전환 상태 및 각각의 상기 제2 복수의 페이지의 상기 제2 전환 상태를 업데이트하여 상기 제1 복수의 페이지 및 상기 제2 복수의 페이지의 상기 옮겨바꾸기 버퍼로부터 카피 완료 시 상기 옮겨바꾸기 버퍼를 해제하는 단계를 더 포함하는, 방법.
  7. 청구항 1 내지 6 중 어느 한 항에 있어서,
    상기 메모리 시스템의 개별 페이지들에 대한 메모리 액세스의 빈도를 카운트하여 메모리 액세스 정보를 생성하는 단계;
    상기 메모리 액세스 정보에 기초하여 상기 제1 메모리에서 최저 메모리 액세스 빈도를 갖는 상기 제1 메모리 내 복수의 페이지를 상기 제1 복수의 페이지로서 식별하는 단계; 및
    상기 메모리 액세스 정보에 기초하여 상기 제2 메모리에서 최고 메모리 액세스 빈도를 갖는 상기 제2 메모리 내 복수의 페이지를 상기 제2 복수의 페이지로서 식별하는 단계를 더 포함하며, 상기 최고 메모리 액세스 빈도는 상기 최저 메모리 액세스 빈도보다 더 큰, 방법.
  8. 청구항 1 내지 7 중 어느 한 항에 있어서,
    제3 복수의 페이지를 상기 메모리 시스템의 상기 제2 메모리로부터 상기 메모리 시스템의 상기 제1 메모리 내 제1 복수의 미사용 페이지로 옮겨보내는 단계; 및
    상기 페이지 테이블을 업데이트하고 제2 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제3 복수의 페이지에 대한 가상 주소를 상기 제1 메모리 내 상응하는 물리 주소와 연관시키는 단계를 더 포함하는, 방법.
  9. 장치로서,
    메모리 시스템의 제1 메모리의 제1 N개의 페이지를 상기 메모리 시스템의 제2 메모리의 제2 N개의 페이지와 스와프하도록 구성된 옮겨보내기 제어 로직으로서, 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 가지며, 상기 제1 레이턴시는 상기 제2 레이턴시 미만인, 상기 제어 로직;
    상기 메모리 시스템의 모든 페이지에 대한 가상 대 물리 주소 변환을 저장하도록 구성된 페이지 테이블; 및
    상기 메모리 시스템의 페이지들에 대해 최근에 사용된 가상 대 물리 주소 변환을 저장하도록 구성된 변환 색인 버퍼를 포함하되,
    상기 옮겨보내기 제어 로직은 상기 페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제1 N개의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제2 N개의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키도록 더 구성되며, 이때 N은 1보다 큰 정수인, 장치.
  10. 청구항 9에 있어서,
    적어도 2×N 페이지들의 크기를 갖는 옮겨바꾸기 버퍼를 더 포함하되;
    상기 옮겨보내기 제어 로직은 메모리 시스템의 제1 메모리의 제1 N개의 페이지를 상기 옮겨바꾸기 버퍼로 카피하도록 그리고 상기 메모리 시스템의 제2 메모리의 제2 N개의 페이지를 상기 옮겨바꾸기 버퍼로 카피하도록 구성되며; 그리고
    데이터를 상기 옮겨바꾸기 버퍼 내 상기 제1 N개의 페이지의 제1 페이지의 카피에 기록하도록 그리고 상기 제1 N개의 페이지를 상기 옮겨바꾸기 버퍼에 상기 카피하는 동안 상기 제1 제1 페이지에 대한 기록 명령에 응답하여 상기 데이터를 상기 제1 메모리 내 상기 제1 페이지에 기록하도록 구성된 메모리 제어기를 더 포함하는, 장치.
  11. 청구항 10에 있어서,
    상기 제1 메모리의 상기 제1 N개의 페이지의 제1 전환 상태 및 상기 제2 메모리의 상기 제2 N개의 페이지의 제2 전환 상태를 저장하여 상기 제1 N개의 페이지 및 상기 제2 N개의 페이지의 카피들이 상기 옮겨바꾸기 버퍼로 카피되고 있는지 여부를 나타내는 전환 상태 저장 장치를 더 포함하되,
    상기 옮겨보내기 제어 로직은 상기 제1 N개의 페이지 및 상기 제2 N개의 페이지가 상기 옮겨바꾸기 버퍼로 카피되고 있음을 나타내도록 상기 제1 전환 상태 및 상기 제2 전환 상태를 업데이트하도록 더 구성되는, 장치.
  12. 청구항 10 또는 11에 있어서, 상기 메모리 제어기는 상기 제1 N개의 페이지를 상기 옮겨바꾸기 버퍼로부터 상기 제2 메모리로 상기 카피하는 동안 상기 제1 페이지에 대한 제2 기록 명령에 응답하여 데이터를 상기 옮겨바꾸기 버퍼 내 상기 제1 페이지의 상기 카피에 기록하도록 더 구성되는, 장치.
  13. 청구항 10 내지 12 중 어느 한 항에 있어서,
    상기 메모리 시스템의 개별 페이지들에 대한 메모리 액세스 빈도 카운트를 저장하도록 구성된 메모리 액세스 정보 저장 장치; 및
    상기 메모리 시스템 및 상기 메모리 액세스 정보 저장 장치에 결합되는 메모리 버스; 및
    상기 메모리 버스 및 상기 메모리 액세스 정보 저장 장치에 결합되는 프로파일링 로직으로서, 상기 메모리 시스템의 개별 페이지들에 대한 메모리 액세스의 빈도를 카운트하도록 그리고 상기 개별 페이지들에 대한 상기 메모리 액세스의 빈도를 상기 메모리 액세스 정보 저장 장치에 저장하도록 구성된, 상기 프로파일링 로직을 더 포함하되,
    상기 옮겨보내기 제어 로직은 상기 메모리 액세스 정보 저장 장치의 내용에 기초하여 상기 제1 메모리 내 N개의 최저 빈도 페이지를 상기 제1 N개의 페이지로서 식별하도록 그리고 상기 메모리 액세스 정보 저장 장치의 상기 내용에 기초하여 상기 제2 메모리 내 N개의 최고 빈도 페이지를 상기 제2 N개의 페이지로서 식별하도록 더 구성되는, 장치.
  14. 청구항 13에 있어서, 상기 프로파일링 로직은:
    상기 메모리 시스템의 개별 페이지에 상응하는 상기 복수의 카운터의 개별 카운터를 포함하는 복수의 카운터; 및
    상기 제1 메모리에서 상기 N개의 최저 빈도 페이지를 식별하고 상기 제2 메모리에서 상기 N개의 최고 빈도 페이지를 식별하기 위한 로직을 포함하며, 상기 N개의 최고 빈도 페이지의 각각은 상기 N개의 최저 빈도 페이지의 각각의 메모리 액세스 빈도보다 큰, 장치.
  15. 메모리 시스템에서의 페이지 옮겨보내기 방법으로서,
    제1 복수의 페이지를 상기 메모리 시스템의 제2 메모리로부터 상기 메모리 시스템의 제1 메모리 내 제1 복수의 미사용 페이지로 옮겨보내는 단계로서, 상기 제1 메모리는 제1 레이턴시를 갖고 상기 제2 메모리는 제2 레이턴시를 가지며, 상기 제1 레이턴시는 상기 제2 레이턴시 미만인, 상기 옮겨보내는 단계; 및
    페이지 테이블을 업데이트하고 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제1 복수의 페이지에 대한 가상 주소를 상기 제1 메모리 내 상응하는 물리 주소와 연관시키는 단계를 포함하는, 방법.
  16. 청구항 15에 있어서,
    상기 제1 메모리의 제2 복수의 페이지를 상기 메모리 시스템의 상기 제2 메모리의 제3 복수의 페이지와 스와프하는 단계; 및
    상기 페이지 테이블을 업데이트하고 다른 변환 색인 버퍼 슛다운을 트리거하여 각각의 상기 제2 복수의 페이지의 가상 주소를 상기 제2 메모리에서의 상응하는 물리 주소와 연관시키고 각각의 상기 제3 복수의 페이지의 가상 주소를 상기 제1 메모리에서의 상응하는 물리 주소와 연관시키는 단계를 더 포함하는, 방법.
  17. 청구항 16에 있어서,
    상기 제2 복수의 페이지를 상기 제1 메모리로부터 옮겨바꾸기 버퍼로 카피하는 단계;
    상기 제3 복수의 페이지를 상기 제2 메모리로부터 상기 옮겨바꾸기 버퍼로 카피하는 단계; 및
    데이터를 상기 옮겨바꾸기 버퍼 내 상기 제2 복수의 페이지의 제1 페이지의 카피에 기록하고 상기 제2 복수의 페이지를 상기 옮겨바꾸기 버퍼에 상기 카피하는 동안 상기 제2 페이지에 대한 기록 명령에 응답하여 상기 데이터를 상기 제1 메모리 내 상기 제1 페이지에 기록하는 단계를 더 포함하는, 방법.
  18. 청구항 15에 있어서,
    상기 제1 복수의 페이지가 상기 제1 메모리로 옮겨보내기되고 있음을 나타내도록 각각의 상기 제1 복수의 페이지의 제1 전환 상태를 업데이트하는 단계; 및
    상기 제1 전환 상태에 따라 상기 제1 페이지에 대한 기록 명령에 응답하여 데이터를 상기 제1 메모리내 상기 제1 복수의 페이지의 제1 페이지의 카피에 그리고 상기 제1 메모리 내 상기 제1 페이지에 기록하는 단계를 더 포함하는, 방법.
  19. 청구항 18에 있어서,
    상기 제1 복수의 페이지를 상기 제1 메모리로 카피하는 것의 완료 시 상기 제1 전환 상태를 업데이트하는 단계를 더 포함하는, 방법.
  20. 청구항 15에 있어서,
    상기 메모리 시스템의 각각의 페이지에 대한 메모리 액세스의 빈도를 카운트하여 메모리 액세스 정보를 생성하는 단계; 및
    상기 메모리 액세스 정보에 기초하여 각각이 미리 결정된 임계치보다 큰 메모리 액세스 빈도를 갖는상기 제2 메모리 내 복수의 페이지를 상기 제1 복수의 페이지로서 식별하는 단계를 더 포함하는, 방법.
KR1020197038242A 2017-06-19 2018-06-14 메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘 KR102350539B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/626,623 US10339067B2 (en) 2017-06-19 2017-06-19 Mechanism for reducing page migration overhead in memory systems
US15/626,623 2017-06-19
PCT/US2018/037460 WO2018236657A1 (en) 2017-06-19 2018-06-14 MECHANISM FOR REDUCING PAGE MIGRATION OVERLOAD IN MEMORY SYSTEMS

Publications (2)

Publication Number Publication Date
KR20200010504A true KR20200010504A (ko) 2020-01-30
KR102350539B1 KR102350539B1 (ko) 2022-01-14

Family

ID=64658092

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038242A KR102350539B1 (ko) 2017-06-19 2018-06-14 메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘

Country Status (6)

Country Link
US (1) US10339067B2 (ko)
EP (1) EP3642722B1 (ko)
JP (1) JP6928123B2 (ko)
KR (1) KR102350539B1 (ko)
CN (1) CN110730956B (ko)
WO (1) WO2018236657A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10263858B2 (en) * 2017-02-07 2019-04-16 Microsoft Technology Licensing, Llc Environment simulator for user percentile
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US11275600B2 (en) * 2017-11-14 2022-03-15 TidalScale, Inc. Virtualized I/O
US10860244B2 (en) * 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
CN109032510B (zh) * 2018-06-29 2021-07-09 山石网科通信技术股份有限公司 基于分布式结构的处理数据的方法和装置
US11074189B2 (en) * 2019-06-20 2021-07-27 International Business Machines Corporation FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11620233B1 (en) * 2019-09-30 2023-04-04 Amazon Technologies, Inc. Memory data migration hardware
US20210157647A1 (en) * 2019-11-25 2021-05-27 Alibaba Group Holding Limited Numa system and method of migrating pages in the system
CN114064519A (zh) * 2020-08-03 2022-02-18 美光科技公司 高速缓存的元数据管理
US11789649B2 (en) * 2021-04-22 2023-10-17 Nvidia Corporation Combined on-package and off-package memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120047312A1 (en) * 2010-08-17 2012-02-23 Microsoft Corporation Virtual machine memory management in systems with asymmetric memory
US20170147227A1 (en) * 2014-09-16 2017-05-25 Kove Ip, Llc External memory for virtualization

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222117B1 (en) * 2003-11-14 2007-05-22 Advent Software, Inc. Segmented global area database
US7281116B2 (en) * 2004-07-30 2007-10-09 Hewlett-Packard Development Company, L.P. Multiprocessor system having plural memory locations for respectively storing TLB-shootdown data for plural processor nodes
US7386669B2 (en) * 2005-03-31 2008-06-10 International Business Machines Corporation System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
EP1870813B1 (en) * 2006-06-19 2013-01-30 Texas Instruments France Page processing circuits, devices, methods and systems for secure demand paging and other operations
US20080127182A1 (en) * 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
WO2011045838A1 (en) 2009-10-15 2011-04-21 Hitachi,Ltd. Storage system, storage apparatus, and optimization method of storage areas of storage system
US9053064B2 (en) 2012-12-10 2015-06-09 Vmware, Inc. Method for saving virtual machine state to a checkpoint file
CN105556493B (zh) 2013-09-27 2018-12-11 英特尔公司 用于跨设备组合存储器资源的设备、方法
US9959205B2 (en) * 2015-05-13 2018-05-01 Wisconsin Alumni Research Foundation Shared row buffer system for asymmetric memory
US20170109043A1 (en) * 2015-10-16 2017-04-20 SK Hynix Inc. Memory system
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
JP2017138852A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置、記憶装置およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120047312A1 (en) * 2010-08-17 2012-02-23 Microsoft Corporation Virtual machine memory management in systems with asymmetric memory
US20170147227A1 (en) * 2014-09-16 2017-05-25 Kove Ip, Llc External memory for virtualization

Also Published As

Publication number Publication date
US20180365167A1 (en) 2018-12-20
CN110730956A (zh) 2020-01-24
EP3642722A1 (en) 2020-04-29
JP2020524339A (ja) 2020-08-13
KR102350539B1 (ko) 2022-01-14
EP3642722B1 (en) 2023-08-16
US10339067B2 (en) 2019-07-02
JP6928123B2 (ja) 2021-09-01
CN110730956B (zh) 2024-01-09
EP3642722A4 (en) 2021-03-24
WO2018236657A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
KR102350539B1 (ko) 메모리 시스템에서 페이지 이송 오버헤드를 감소시키기 위한 메커니즘
US20230325320A1 (en) Method and apparatus for controlling cache line storage in cache memory
EP3408748B1 (en) Adaptive value range profiling for enhanced system performance
KR101893544B1 (ko) 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시
US8868843B2 (en) Hardware filter for tracking block presence in large caches
US9405703B2 (en) Translation lookaside buffer
US20140337600A1 (en) Providing metadata in a translation lookaside buffer (tlb)
US20080016297A1 (en) Multi-Level Memory Architecture With Data Prioritization
US10067709B2 (en) Page migration acceleration using a two-level bloom filter on high bandwidth memory systems
JP7228528B2 (ja) サイレントアクティブページ移行障害
US20140181461A1 (en) Reporting access and dirty pages
US20170083444A1 (en) Configuring fast memory as cache for slow memory
JP7242170B2 (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
US10565111B2 (en) Processor
US20240086349A1 (en) Input/output device operational modes for a system with memory pools
US20230359556A1 (en) Performing Operations for Handling Data using Processor in Memory Circuitry in a High Bandwidth Memory
US20240069915A1 (en) Virtually Padding Data Structures
US20130262790A1 (en) Method, computer program and device for managing memory access in a multiprocessor architecture of numa type
Roy et al. International Journal of Trend in Scientific Research and Development (IJTSRD)
EP4268084A1 (en) Snapshotting pending memory writes using non-volatile memory
KR20230075361A (ko) 메모리 어드레스들과 연관된 데이터를 캐싱하도록 캐시 저장소를 동작시키기 위한 기법
CN110660012A (zh) 图像处理系统及其内存管理方法

Legal Events

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