KR20240022656A - 메모리 매핑 무효화 요청의 동시 프로세싱 - Google Patents

메모리 매핑 무효화 요청의 동시 프로세싱 Download PDF

Info

Publication number
KR20240022656A
KR20240022656A KR1020247002402A KR20247002402A KR20240022656A KR 20240022656 A KR20240022656 A KR 20240022656A KR 1020247002402 A KR1020247002402 A KR 1020247002402A KR 20247002402 A KR20247002402 A KR 20247002402A KR 20240022656 A KR20240022656 A KR 20240022656A
Authority
KR
South Korea
Prior art keywords
processing
invalidation
invalidate
request
stage
Prior art date
Application number
KR1020247002402A
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 KR20240022656A publication Critical patent/KR20240022656A/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]
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual 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/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/683Invalidation
    • 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/684TLB 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)(110)는 프로세싱 시스템의 하나 이상의 프로세싱 유닛(102, 104)과 같은 하나 이상의 소스로부터 매핑 무효화 요청(105, 106)을 수신한다. TLB는 하나 이상의 무효화 프로세싱 파이프라인들(112)을 포함하고, 여기서 각각의 프로세싱 파이프라인은 파이프라인에 배열된 다수의 프로세싱 상태들을 포함하여, 주어진 스테이지가 그들의 프로세싱 동작들을 실행하는 파이프라인의 다른 스테이지들과 동시에 그의 프로세싱 동작들을 실행한다.

Description

메모리 매핑 무효화 요청의 동시 프로세싱
프로세싱 시스템은 전형적으로, 하나 이상의 캐시들, 프로세싱 시스템에 대한 시스템 메모리를 형성하는 하나 이상의 메모리 모듈들 등과 같은 메모리 리소스들의 세트를 제공한다. 메모리 리소스들은 데이터를 저장하기 위한 물리적 메모리 위치들의 세트를 포함하며, 각각의 메모리 위치는 메모리 위치가 식별되고 액세스될 수 있게 하는 고유 물리적 어드레스와 연관된다. 메모리 리소스들의 효율적이고 유연한 사용을 제공하기 위해, 많은 프로세싱 유닛들은 가상 어드레싱을 지원하고, 여기서 운영 체제는 하나 이상의 실행 프로그램들에 대한 가상 어드레스 공간들을 유지하고, 프로세싱 유닛은 메모리 리소스들의 대응하는 물리적 어드레스들로의 가상 어드레스들의 변환을 지원하는 하드웨어 구조들을 제공한다.
예를 들어, 프로세싱 유닛은 전형적으로 최근에 액세스된 메모리 위치들에 대한 가상-대-물리적 어드레스 매핑들을 하나 이상의 캐시들에 저장하는 하나 이상의 변환 색인 버퍼들(translation lookaside buffers) (TLB들)을 포함한다. 운영 체제 또는 다른 시스템 리소스가 가상 메모리 공간을 변경함에 따라, 하나 이상의 캐시에 저장된 매핑은 아웃데이트(outdate)된다. 따라서, 메모리 코히어런시(coherency) 및 적절한 프로그램 실행을 유지하기 위해, 프로세싱 시스템은 매핑 무효화 요청(mapping invalidation request)들을 지원할 수 있으며, 여기서, 캐시에서 가상-대-물리적 어드레스 매핑들을 명시한 운영 체제 또는 다른 리소스 요청들은 무효로 선언되어, 그러한 매핑들이 어드레스 변환을 위해 사용되지 않도록 한다. 그러나, 이러한 매핑 무효화 요청들을 실행하기 위한 종래의 기술들은 비교적 낮은 스루풋(throughput)을 가져서, 프로세싱 시스템의 전체 효율 및 유연성을 제한한다.
본 개시는 첨부된 도면을 참조함으로써 당업자에게 더 잘 이해될 수 있고, 많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예들에 따른 매핑 무효화 요청들의 동시 프로세싱을 구현하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 도 1의 프로세싱 시스템의 무효화 파이프라인들의 세트의 블록도이다.
도 3 내지 도 5는 일부 실시예들에 따라 상이한 매핑 무효화 요청들을 동시에 프로세싱하는 도 2의 무효화 파이프라인들의 예를 예시하는 블록도들이다.
도 6은 일부 실시예들에 따른 매핑 무효화 요청에 응답하여 페이지 워크 요청(page walk request)을 억제하는 도 1의 프로세싱 시스템의 예를 예시하는 블록도이다.
도 1 내지 도 6은 프로세싱 시스템에서 매핑 무효화 요청들을 동시에 프로세싱하기 위한 기술들을 예시한다. 일부 실시예들에서, TLB는 프로세싱 시스템의 하나 이상의 프로세싱 유닛들과 같은 하나 이상의 소스들로부터 매핑 무효화 요청들(본 명세서에서 단순화를 위해 무효화 요청들로 지칭됨)을 수신한다. TLB는 하나 이상의 무효화 프로세싱 파이프라인들을 포함하고, 여기서 각각의 프로세싱 파이프라인은 파이프라인에 배열된 다수의 프로세싱 상태들을 포함하여, 주어진 스테이지가 그들의 프로세싱 동작들을 실행하는 파이프라인의 다른 스테이지들과 동시에 그의 프로세싱 동작들을 실행한다. 따라서, 일부 경우들에서, TLB는 다수의 수신된 무효화 요청들을 하나 이상의 파이프라인들에 제출하며, 여기서 다수의 무효화 요청들은 동시에 프로세싱된다. 이러한 파이프라인 방식으로 무효화 요청들을 프로세싱함으로써, TLB는 전체 무효화 요청 스루풋을 개선함으로써, 전체 프로세싱 효율을 개선한다.
예시를 위해, 일부 프로세싱 시스템들은 시스템 가상 어드레스 공간을 비교적 빈번하게 업데이트한다. 예를 들어, 일부 프로세싱 시스템들은 실행 프로그램들 사이에서 빈번하게 스위칭하여, 가상 어드레스 공간의 빈번한 대응하는 변경들을 필요로 한다. 이러한 변경들을 적용하기 위해, 프로세싱 시스템에서 실행되는 운영 체제는 상이한 무효화 요청들을 생성하고, 각각의 무효화 요청은 무효화될 TLB 캐시 엔트리들의 세트를 지정하며, 따라서 이러한 엔트리들이 어드레스 변환에 사용되지 않도록 보장한다. 통상적으로, 각각의 무효화 요청은 차례로 프로세싱되며, 하나의 요청은 다른 요청이 프로세싱을 시작하기 전에 완료된다. 이러한 접근법은 안전한 메모리 관리를 지원하지만, 무효화 요청들에 대한 결과적인 낮은 스루풋은 전체 시스템 효율성에 부정적인 영향을 미친다. 본 명세서에 설명된 기술들을 사용하여 다수의 무효화 요청들을 동시에 프로세싱함으로써, 무효화 요청 프로세싱 스루풋이 증가되고, 이에 의해 전체 프로세싱 효율이 개선된다.
일부 실시예들에서, TLB는 주어진 프로그램, 프로그램 스레드 등에 대한 어드레스 매핑들을 저장하는 페이지 테이블들의 세트들을 트래버싱(traversing)함으로써 캐시에 대한 어드레스 매핑들을 생성한다. 어드레스 매핑들을 생성하는 트래버설 프로세스(traversal process)는 본 명세서에서 "페이지 워크(page walk)"로 지칭된다. 일부 경우들에서, TLB는 계류중인 페이지 워크와 연관된 메모리 어드레스들에 대한 무효화 요청들을 수신한다. 즉, 일부 경우들에서, TLB는 주어진 메모리 어드레스를 타겟으로 하는 무효화 요청을 수신하는 것과 동시에 주어진 메모리 어드레스에 대한 페이지 워크를 실행하는 프로세스에 있다. 페이지 워크가 부정확한 어드레스 매핑으로 캐시를 오염시키는 것을 방지하기 위해, TLB는 수신된 무효화 요청의 타겟인 메모리 어드레스들에 대한 페이지 워크들로부터의 메모리 매핑들의 업데이트들을 억제(suppress)한다. 예를 들어, 일부 실시예들에서, TLB는 페이지 워크의 결과들이 캐시에 저장되는 것을 방지하는 식별자로 이러한 페이지 워크의 결과들을 지정한다.
도 1은 일부 실시예들에 따른 매핑 무효화 요청들을 동시에 프로세싱하는 프로세싱 시스템(100)을 예시한다. 프로세싱 시스템(100)은 일반적으로 전자 디바이스를 대신하여 명령어(instruction)들의 세트들(예를 들어, 컴퓨터 프로그램들, 운영 체제들, 애플리케이션들 등)을 실행하도록 구성된다. 따라서, 상이한 실시예들에서, 프로세싱 시스템(100)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔 등과 같은 다수의 전자 디바이스들 중 임의의 것에 통합된다. 명령어들의 세트들의 실행을 지원하기 위해, 프로세싱 시스템(100)은 프로세싱 유닛들(102 및 104) 및 변환 색인 버퍼(TLB)(110)를 포함한다. 일부 실시예들에서, 프로세싱 시스템(100)은, 추가적인 프로세싱 유닛들, 프로세싱 시스템(100)에 대한 시스템 메모리를 형성하는 하나 이상의 캐시들 및 메모리 모듈들과 같은 메모리 모듈들, 하나 이상의 메모리 제어기들, 하나 이상의 입력/출력 제어기들 및 디바이스들 등을 포함하는, 도 1에 예시되지 않은 추가적인 모듈들 및 회로들을 포함한다.
프로세싱 유닛들(102 및 104)은 일반적으로 명령어들에 의해 정의된 하나 이상의 태스크들을 수행하기 위해 명령어들의 세트들을 실행하도록 구성되는 유닛들이다. 예를 들어, 일부 실시예들에서, 프로세싱 유닛들(102 및 104) 중 적어도 하나는 프로그램들, 운영 체제들 등을 형성하는 명령어들의 세트들을 실행하도록 구성되는 중앙 프로세싱 유닛(CPU)이다.다른 예로서, 일부 실시예들에서, 프로세싱 유닛들(102 및 104) 중 적어도 하나는 CPU와 같은 다른 프로세싱 유닛으로부터 수신된 커맨드들에 기초하여 명령어들의 세트들(예를 들어, 웨이브프론트들 또는 워프들)을 실행하는 그래픽 프로세싱 유닛(GPU)이다.
위에서 언급된 바와 같이, 일부 실시예들에서, 프로세싱 시스템(100)은 시스템 메모리를 형성하는 하나 이상의 데이터 캐시들 및 하나 이상의 메모리 모듈들을 포함한다. 집합적으로, 하나 이상의 캐시들 및 시스템 메모리는 본 명세서에서 프로세싱 시스템(100)의 메모리 계층구조로서 지칭된다. 명령어들을 실행하는 동안, 프로세싱 유닛들(102 및 104)은 메모리 계층구조에 데이터를 저장하고 메모리 계층구조로부터 데이터를 리트리브(retrieve)하기 위해, 메모리 액세스 요청들로 지칭되는 동작들을 생성한다. 각각의 메모리 액세스 요청은 대응하는 데이터가 메모리 계층구조에 저장되는 메모리 위치를 지정하는 어드레스를 포함한다. 실행 명령어들에 대한 메모리 액세스를 단순화하기 위해, 프로세싱 시스템(100)의 운영 체제는 실행 프로그램들, 애플리케이션들 등을 위한 가상 어드레스 공간들을 유지한다. 각각의 가상 어드레스 공간은 가상 어드레스들의 세트와 물리적 어드레스들의 세트 사이의 관계, 또는 매핑을 정의하며, 여기서 각각의 물리적 어드레스는 프로세싱 시스템(100)의 메모리 계층구조의 상이한 메모리 위치와 고유하게 연관된다. 데이터가 프로세싱 시스템(100), 프로세싱 시스템(100)의 운영 체제 또는 메모리 하드웨어, 또는 이들의 조합에 의해 메모리 계층구조 주위로 이동됨에 따라, 프로그램들 및 애플리케이션들의 적절한 실행을 보장하는 정확한 매핑들을 유지하기 위해 가상 어드레스 공간을 업데이트한다.
가상 어드레스 공간들을 지원하기 위해, 프로세싱 시스템은 일반적으로 가상 어드레스들을 물리적 어드레스들로 변환하도록 구성된 TLB(110)를 포함한다. 예를 들어, 프로세싱 유닛들(102 및 104)은 생성된 메모리 액세스 요청들과 연관된 가상 어드레스들을 TLB(110)에 제공한다. 이에 응답하여, TLB(110)는 각각의 수신된 가상 어드레스를 대응하는 물리적 어드레스로 변환한다. 프로세싱 시스템(100)의 메모리 제어기 또는 다른 모듈(도시되지 않음)은 물리적 어드레스를 이용하여 물리적 어드레스에 의해 표시된 메모리 계층구조의 위치에 액세스하고, 이에 의해 메모리 액세스 요청을 실행한다.
어드레스 변환을 수행하기 위해, TLB(110)는 어드레스 캐시(115) 및 페이지 워커(page walker)(114)를 포함한다. 어드레스 캐시(115)는 일반적으로 최근에 사용된 어드레스 매핑을 저장하도록 구성된 메모리이다. 특히, 어드레스 캐시(115)는 복수의 엔트리들(예를 들어, 엔트리(118))를 포함하고, 각각의 엔트리는 가상-대-물리적 어드레스 매핑을 저장하는 매핑 필드(예를 들어, 매핑 필드(116)) 및 대응하는 매핑 필드가 어드레스 변환에 사용될 유효한 매핑을 저장하는지 여부를 표시하는 상태 정보를 저장하는 유효성 상태 필드(validity status field)(예를 들어, 유효성 상태 필드(117))를 포함한다. 다른 실시예들에서, 유효성 상태 정보는 어드레스 캐시(115) 자체에 저장되지 않고, 대신에 어드레스 캐시(115)에 대한 상태 정보의 테이블과 같은 TLB(110)의 다른 부분에 저장된다는 것이 인식될 것이다.
페이지 워커(114)는 운영 체제에 의해 유지되는 페이지 테이블들(111)의 세트에 대해 페이지 워크 동작들을 실행하도록 구성된 하드웨어의 세트이며, 여기서 페이지 테이블들은 프로세싱 유닛들(102 및 104)에서 실행되는 명령어들의 세트들에 대한 가상-대-물리적 어드레스 매핑들을 저장한다. 프로세싱 유닛으로부터 가상 어드레스에 대한 어드레스 변환 요청을 수신하는 것에 응답하여, TLB(110)는 가상 어드레스에 대한 매핑이 어드레스 캐시(115)의 엔트리에 저장되어 있는지 여부를 결정한다. 저장되어 있는 경우, TLB(110)는 어드레스 캐시(115)에 저장된 매핑을 사용하여 가상 어드레스를 대응하는 물리적 어드레스로 변환하고, 변환을 요청한 프로세싱 유닛에 물리적 어드레스를 제공한다.
가상 어드레스에 대한 매핑이 어드레스 캐시(115)에 저장되지 않으면, TLB(110)는 가상 어드레스를 사용하여 페이지 테이블들(111)의 페이지 워크를 수행하도록 페이지 워커(114)에 지시한다. 페이지 워커(114)는 페이지 워크를 실행하여 페이지 테이블들(111)로부터 가상 어드레스에 대응하는 가상-대-물리적 어드레스 매핑을 리트리브한다. TLB(110)는 리트리브된 어드레스 매핑을 어드레스 캐시(115)의 엔트리의 매핑 필드에 저장하고, 엔트리에 대한 유효성 상태를 유효 상태(valid status)(저장된 매핑이 어드레스 변환에 사용됨을 표시함)로 설정하고, 변환을 요청한 프로세싱 유닛에 물리적 어드레스를 제공한다.
일부 경우들에서, 프로세싱 유닛들(102 및 104) 중 하나 이상에서 실행되는 운영 체제 또는 다른 프로그램은 프로세싱 시스템(100)에 대한 가상 어드레스 공간을 변경한다. 예를 들어, 일부 경우들에서, 운영 체제는 상이한 프로그램들에 대한 상이한 가상 어드레스 공간들을 유지하고, 프로세싱 유닛들(102 및 104) 중 하나 이상에서 어느 프로그램이 실행되고 있는지를 변경하는 것에 응답하여 가상 어드레스 공간을 변경한다. 그러나, 가상 어드레스 공간이 변경될 때, 어드레스 캐시(115)는 때때로 현재 가상 어드레스 공간에 대해 더 이상 유효하지 않은 어드레스 매핑들을 저장한다. 따라서, 가상 어드레스 공간을 변경하는 것에 응답하여, 운영 체제 또는 다른 프로그램은 하나 이상의 무효화 요청들(예를 들어, 무효화 요청들(105 및 106))을 TLB(110)에 발송한다. 각각의 무효화 요청은 현재 가상 어드레스 공간에 대해 유효하지 않은 매핑들을 갖는 가상 메모리 어드레스 또는 가상 메모리 어드레스들의 세트를 표시한다. 무효화 요청을 수신하는 것에 응답하여, TLB(110)는 무효화 요청에 의해 표시된 가상 어드레스들의 세트에 대한 매핑들을 저장하는 캐시(115)의 하나 이상의 엔트리들을 식별하고, 이들 엔트리들이 무효 데이터(invalid data)를 저장한다는 것을 표시하기 위해 이들 엔트리들에 대한 유효성 상태 필드들을 설정한다. 따라서, 무효화 요청을 수신하는 것에 응답하여, TLB는 요청에 의해 식별된 캐시(115)의 하나 이상의 엔트리가 유효하지 않아 이들 엔트리들에 저장된 어드레스 매핑들이 어드레스 변환에 사용되지 않는다는 것을 표시한다.
일부 실시예들에서, TLB는 요청에 의해 식별된 어드레스 또는 어드레스 범위를 식별하기 위한 동작들, (예를 들어, 메모리 코히어런시를 유지하기 위해) 프로세싱 시스템(100)의 상이한 부분들에 무효화의 통지들을 제공하기 위한 동작들, 무효화 요청에 대응하는 어드레스들을 타겟으로 하는 임의의 페이지 워크의 결과들을 보장하기 위한 동작들, 무효화될 캐시(115)의 엔트리 또는 엔트리들을 식별하기 위한 동작들, 무효 상태(invalid status)를 표시하기 위해 식별된 엔트리에 대한 상태 정보를 설정하기 위한 동작들, 및 무효화 요청을 실행하기 위한 임의의 다른 동작들과 같은, 각각의 무효화 요청을 만족시키기 위한 다수의 프로세싱 동작들을 구현한다. 또한, 일부 경우들에서, 이러한 상이한 동작들은 다수의 프로세싱 사이클들(예를 들어, TLB(110)의 동작들을 제어(govern)하는 클록 신호의 다수의 사이클들)을 함께 필요로 한다. 따라서, 일부 경우들에서, TLB(110)는 다른 무효화 요청이 프로세싱되고 있는 동안 무효화 요청을 수신한다. 예를 들어, 일부 경우들에서, TLB(110)는 무효화 요청(105)이 프로세싱되고 있는 동안 또는 무효화 요청이 프로세싱할 준비가 됨에 따라 무효화 요청(106)을 수신한다. 따라서, 그리고 무효화 요청 스루풋을 개선하기 위해, TLB(110)는 일반적으로 무효화 요청(105 및 106)과 같은 상이한 무효화 요청들을 동시에 프로세싱하도록 구성된다.
무효화 요청들의 동시 프로세싱을 지원하기 위해, TLB(110)는 무효화 파이프라인들(112)을 포함한다. 본 명세서에서 추가로 설명되는 바와 같이, 무효화 파이프라인들(112) 각각은 다수의 스테이지들을 포함하고, 무효화 파이프라인의 각각의 스테이지는, 무효화 요청을 실행하기 위한 특정된 프로세싱 동작, 이를테면, 요청에 의해 식별된 어드레스 또는 어드레스 범위를 식별하기 위한 동작들, 무효화의 통지들을 프로세싱 시스템(100)의 상이한 부분들에 제공하기 위한 동작들(예를 들어, 메모리 코히어런시를 유지하기 위한), 무효화 요청에 대응하는 어드레스들을 타겟으로 하는 임의의 페이지 워크들의 결과들을 보장하기 위한 동작들, 무효화될 캐시(115)의 엔트리 또는 엔트리들을 식별하기 위한 동작들, 무효 상태를 표시하기 위해 식별된 엔트리에 대한 상태 정보를 설정하기 위한 동작들, 및 무효화 요청을 실행하기 위한 임의의 다른 동작들을 수행하기 위한 회로부를 포함한다. 각각의 파이프라인 스테이지는 다른 파이프라인 스테이지들과 독립적으로 동작하도록 구성되어, 파이프라인의 상이한 스테이지들이 상이한 무효화 요청들에 대한 동작들을 동시에 실행한다. 즉, 무효화 파이프라인의 주어진 스테이지는 상이한 무효화 요청(예를 들어, 무효화 요청(106))에 대해 상이한 동작을 실행하는 파이프라인의 다른 스테이지와 동시에 하나의 무효화 요청(예를 들어, 무효화 요청(105))에 대한 프로세싱 동작을 실행한다. 이러한 방식으로 무효화 동작들을 파이프라이닝함으로써, TLB(110)는 다수의 무효화 요청들을 동시에 만족시키고, 따라서 무효화 요청 스루풋을 증가시키고 프로세싱 시스템(100)의 전체 효율을 개선한다.
일부 실시예들에 따른, 무효화 파이프라인들(112)의 예의 블록도가 도 2에 예시된다. 도시된 예에서, 무효화 파이프라인들(112)은 무효화 프리프로세싱(preprocessing) 파이프라인(223) 및 무효화 프로세싱 파이프라인(224)을 포함한다. 무효화 프리프로세싱 파이프라인(223)은 일반적으로 무효화 실행을 위한 무효화 요청을 준비하는 것과 연관된 프로세싱 동작들, 즉, 무효화 요청에 의해 타겟이 되는 캐시(115)의 하나 이상의 엔트리들을 무효화하기 위해 TLB(110)를 준비하는 프로세싱 동작들을 실행하도록 구성된다. 무효화 프리프로세싱 파이프라인(223)에 의해 구현되는 동작들의 예들은 (예를 들어, 다른 모듈들이 무효화 요청에 의해 타겟이 되는 어드레스 매핑들을 이용할 것으로 예상하기 때문에) 무효화 요청을 실행하는 것이 에러들을 야기할 가능성이 있는지를 결정하기 위해 프로세싱 시스템(100)의 다른 모듈들과 통신하는 동작들, 무효화 요청에 의해 타겟이 되는 엔트리들과 연관된 임의의 페이지 워크 동작들을 식별하는 동작들, 요청에 의해 타겟이 되는 캐시(115)의 엔트리들을 식별하는 동작들 등을 포함한다.
일부 실시예들에서, 무효화 프리프로세싱 파이프라인(223)의 스테이지들에 의해 구현되는 동작들의 다른 예들은 동일한 메모리 어드레스를 타겟으로 하는 임의의 진행중인 페이지 워크들에 대한 무효화 요청의 완료를 추적하는 것, 및 무효화 요청을 다른 캐시들에 통지하는 것, 및 필요한 캐시들이 통지되었고 무효화 파이프라인(224)으로 진행하는 것이 안전하다는 것을 확인하기 위해 통지들을 추적하는 것을 포함한다. 일부 실시예들에서, 무효화 프리프로세싱 파이프라인(223)은 무효화 요청과 연관된 어드레스 범위, 요청과 연관된 가상 메모리 식별자, 요청과 연관된 가상 머신 식별자 등 중 하나 이상과 같이, 어느 메모리 어드레스 매핑들이 무효화되는지를 제어하기 위해 무효화 프로세싱 파이프라인(224)에 의해 사용되는 무효화 요청의 특성들을 식별하기 위한 동작들을 구현한다.
무효화 프로세싱 파이프라인(224)은 일반적으로 무효화 요청에 의해 표시된 요청된 무효화들을 수행하는 것과 연관된 프로세싱 동작들을 실행하도록 구성된다. 다시 말해서, 무효화 프로세싱 파이프라인(224)은 무효화 요청에 의해 타겟이 되는 캐시(115)의 하나 이상의 엔트리가 무효 상태로 설정되게 하는 프로세싱 동작들을 구현한다. 무효화 프로세싱 파이프라인(223)에 의해 구현되는 동작들의 예들은 무효화 요청에 의해 타겟이 되는 캐시(115)의 엔트리들에 액세스하기 위한 동작들, 무효 상태를 표시하기 위해 액세스된 엔트리들에 대한 상태 정보를 변경하기 위한 동작들, 엔트리들의 무효 상태를 다른 캐시들 또는 메모리 모듈들에 통지하기 위한 동작들 등을 포함한다.
파이프라인들(223 및 224) 각각은 다수의 스테이지들을 포함하고, 각각의 파이프라인 스테이지는 각각의 파이프라인에 대한 프로세싱 동작들 중 하나 이상을 실행하도록 구성된다. 특히, 무효화 프리프로세싱 파이프라인(223)은 초기 스테이지(225) 및 N번째 스테이지(228)를 통한 추가 스테이지들을 포함하며, 여기서 N은 정수이다. 유사하게, 무효화 프로세싱 파이프라인(224)은 초기 스테이지(235) 및 M번째 스테이지(238)를 통한 추가 스테이지들을 포함하며, 여기서 M은 정수이다. 일부 실시예들에서, 파이프라인들(223 및 224)은 동일한 수의 스테이지들을 포함하는 반면(즉, N = M), 다른 실시예들에서 파이프라인들(223 및 224)은 상이한 수의 스테이지들을 포함한다(즉, N 및 M은 상이함).
파이프라인들(223 및 224)에서 무효화 요청들의 프로세싱을 지원하기 위해, 무효화 파이프라인들(112)은 큐들(220, 221 및 222)을 포함하고, 여기서 큐들(220 내지 222) 각각은 복수의 엔트리들(예를 들어, 큐(220)의 엔트리(231))을 포함하고, 각각의 엔트리는 대응하는 무효화 요청에 대한 상태 정보를 저장하도록 구성된다. 무효화 요청이 프로세싱됨에 따라, 파이프라인(223 및 224)의 스테이지는 무효화 요청에 대한 상태 정보를 입력 정보로서 사용하거나, 스테이지와 연관된 프로세싱 동작에 기초하여 무효화 요청에 대한 상태 정보를 변경하는 등, 또는 이들의 임의의 조합을 수행한다.
동작 시, 큐(220)의 엔트리들은 수신된 무효화 요청들에 대한 상태 정보를 저장한다. 무효화 요청을 프로세싱하기 위해, 무효화 프리프로세싱 스테이지의 초기 스테이지(225)는 큐(220)의 대응하는 엔트리에 저장된 무효화 요청에 대한 상태 정보를 사용하여 하나 이상의 프리프로세싱 동작들을 수행한다. 하나 이상의 동작들을 수행하는 동안, 스테이지(225)는 수행되는 동작에 기초하여 저장된 상태 정보를 변경한다. 하나 이상의 동작들의 완료 시에, 무효화 요청은, 큐(220)의 대응하는 엔트리에 저장된 바와 같은 무효화 요청에 대한 상태 정보를 사용하여, 하나 이상의 대응하는 프리프로세싱 동작들을 실행하는 무효화 프리프로세싱 파이프라인(223)의 다음 스테이지(도 2에서 "스테이지 2"로 지정됨)로 전달된다. 유사한 방식으로, 무효화 요청은 무효화 프리프로세싱 파이프라인(223)을 통해 진행하고, 각각의 스테이지는 최종 스테이지(228)에 도달할 때까지 대응하는 프리프로세싱 동작들을 실행한다. 무효화 요청에 대한 프리프로세싱 동작들을 완료하면, 스테이지(228)는 큐(221)의 엔트리에 무효화 요청에 대한 결과적인 상태 정보를 저장한다.
무효화 프로세싱 파이프라인(224)은 큐(221)의 엔트리에 저장된 상태 정보를 사용하고 수정하여 무효화 프리프로세싱 파이프라인(223)에 대해 전술한 것과 유사한 파이프라인 방식으로 무효화 요청을 프로세싱한다. 초기 스테이지(235)에서 시작하여, 무효화 요청은 무효화 프로세싱 파이프라인(224)의 스테이지를 통해 진행되며, 각각의 스테이지는 최종 스테이지(238)에 도달할 때까지 대응하는 프리프로세싱 동작을 실행한다. 무효화 요청에 대한 프리프로세싱 동작들을 완료하면, 스테이지(238)는 큐(222)의 엔트리에 무효화 요청에 대한 결과적인 상태 정보를 저장한다. 일부 실시예들에서, 큐(222)에서의 상태 정보는 추가 동작들을 수행하기 위해 TLB(110) 또는 프로세싱 시스템(100)의 다른 모듈들에 의해 사용된다.
파이프라인들(223 및 224)의 스테이지들 각각은 독립적으로 동작하도록 구성되어, 파이프라인의 하나의 스테이지는 주어진 무효화 요청에 대한 대응하는 동작들을 수행하는 반면, 파이프라인의 상이한 스테이지는 상이한 무효화 요청에 대한 대응하는 동작들을 동시에 수행한다. 예를 들어, 일부 실시예들에서, 파이프라인들(223 및 224)의 각각의 스테이지는, 프로세싱 사이클로 지칭되는, 특정된 양의 시간 내에 그의 대응하는 동작들을 실행하도록 구성된다. 일부 실시예들에서, 각각의 프로세싱 사이클은 TLB(110)의 동작들을 제어하는 클록 신호의 단일 클록 사이클과 동등하다. 즉, 일부 실시예들에서, 파이프라인들(223 및 224)의 각각의 스테이지는 단일 클록 사이클에서 그의 대응하는 동작들을 완료하고, 그런 다음, 각각의 무효화 요청을 각각의 파이프라인의 다음 스테이지로 전달한다.
다수의 무효화 요청들에 대한 동시 프로세싱의 파이프라이닝의 예가 일부 실시예들에 따라 도 3 내지 도 5에 예시된다. 간략화를 위해, 도 3 내지 도 5는 무효화 프리프로세싱 파이프라인(223)에서 다수의 무효화 요청들의 파이프라이닝을 예시한다. 그러나, 무효화 프로세싱 파이프라인(224)은 유사한 방식으로 동작들을 파이프라이닝한다는 것이 인식될 것이다. 도 3 내지 도 5 각각은 무효화 프로세싱 파이프라인(223)에 대한 상이한 프로세싱 사이클을 예시한다.
특히, 도 3은 초기 프로세싱 사이클을 예시하며, 여기서 3개의 무효화 요청들(예를 위해 Request1, Request2, 및 Request3으로 지정됨)은 무효화 프리프로세싱 파이프라인(223)에서 동시 프로세싱을 위해 이용가능하다. Request1, Request2, 및 Request3 각각은 큐(220)에서 각각 INV1 STATE, INV2 STATE, 및 INV3 STATE로 지정된 대응하는 상태 정보와 연관된다. 도 3에 예시된 초기 프로세싱 사이클의 경우, Request1은 무효화 프리프로세싱 파이프라인(223)의 초기 스테이지(225)에서 프로세싱된다. 스테이지(225)는 이 초기 사이클 동안 Request1에 대한 동작을 완료하고, Request1을 도 4에 예시된 다음 스테이지로 전달한다.
도 4에 예시된 바와 같이, 다음 프로세싱 사이클(즉, 도 3에 예시된 초기 사이클 바로 다음의 프로세싱 사이클) 동안, Request1은 제2 스테이지(226)에서 프로세싱되며, 여기서 제2 스테이지(226)는 무효화 프리프로세싱 파이프라인(223)에서 초기 스테이지(225)에 바로 다음에 온다. 또한, Request2는 초기 스테이지(225)에서 프로세싱된다. 따라서, 도 4에 예시된 프로세싱 사이클 동안, Request1 및 Request2는 무효화 프리프로세싱 파이프라인(223)의 상이한 스테이지들에서 동시에 프로세싱된다. 프로세싱 사이클의 종료까지, 각각의 스테이지들(225 및 226)은 도 5에 예시된 다음 프로세싱 사이클 동안 추가 프로세싱을 위해 파이프라인(223)의 다음 스테이지로 각각의 무효화 요청을 전달한다.
도 5에 예시된 바와 같이, 다음 프로세싱 사이클(즉, 도 4에 예시된 프로세싱 사이클 바로 다음의 프로세싱 사이클) 동안, Request1은 제3 스테이지(227)에서 프로세싱되고, 여기서 제3 스테이지(227)는 무효화 프리프로세싱 파이프라인(223)에서 초기 스테이지(226)에 바로 다음에 온다. 또한, Request2는 제2 스테이지(226)에서 프로세싱되고, Request3은 초기 스테이지(225)에서 프로세싱된다. 따라서, 도 5에 예시된 프로세싱 사이클 동안, Request1, Request2, 및 Request3은 모두 무효화 프리프로세싱 파이프라인(223)의 상이한 스테이지들에서 동시에 프로세싱된다. 따라서, 도 3 내지 도 5에 제시된 예에서, 다수의 무효화 요청들은 무효화 파이프라인의 상이한 스테이지들에서 동시에 프로세싱된다. 대조적으로, 종래의 TLB는 다음 수신된 무효화 요청의 프로세싱을 개시하기 전에 각각의 무효화 요청의 프로세싱을 완료하여, 전체 무효화 요청 스루풋을 제한한다.
일부 실시예들에서, TLB는 주어진 프로그램, 프로그램 스레드 등에 대한 어드레스 매핑들을 저장하는 페이지 테이블들의 세트들을 트래버싱(traversing)함으로써 캐시에 대한 어드레스 매핑들을 생성한다. 어드레스 매핑들을 생성하는 트래버설 프로세스(traversal process)는 본 명세서에서 "페이지 워크(page walk)"로 지칭된다. 일부 경우들에서, TLB는 계류중인 페이지 워크와 연관된 메모리 어드레스들에 대한 무효화 요청들을 수신한다. 즉, 일부 경우들에서, TLB는 주어진 메모리 어드레스를 타겟으로 하는 무효화 요청을 수신하는 것과 동시에 주어진 메모리 어드레스에 대한 페이지 워크를 실행하는 프로세스에 있다. 페이지 워크가 부정확한 어드레스 매핑으로 캐시를 오염시키는 것을 방지하기 위해, TLB는 수신된 무효화 요청의 타겟인 메모리 어드레스들에 대한 페이지 워크들에 기초하여 메모리 매핑들의 업데이트를 억제한다. 예를 들어, 일부 실시예들에서, TLB는 페이지 워크의 결과들이 캐시에 저장되는 것을 방지하는 식별자로 이러한 페이지 워크의 결과들을 지정한다.
도 1로 돌아가면, 위에서 언급된 바와 같이, 페이지 워커(114)는 일반적으로 페이지 테이블들(111)을 트래버싱함으로써 페이지 워크들을 실행하도록 구성되고, 이에 의해 어드레스 캐시(115)에서의 저장을 위해 어드레스 매핑들을 생성한다. 그러나, 일부 실시 예들에서, TLB(110)는 계류중인 페이지 워크와 연관된 메모리 어드레스들에 대한 무효화 요청들을 수신한다. 즉, 일부 경우에, 페이지 워커(114)는 주어진 메모리 어드레스 또는 메모리 어드레스 범위 내의 어드레스를 타겟으로 하는 무효화 요청을 수신하는 것과 동시에 주어진 메모리 어드레스 또는 메모리 어드레스 범위에 대한 페이지 워크를 실행하는 프로세스에 있다. 이는 때때로 경쟁 조건(race condition)을 생성하며, 여기서 페이지 워크의 결과들은 무효화 프로세스가 그렇지 않으면 완료된 후에 생성되어, 무효 매핑이 어드레스 캐시(115)에 저장되게 하고 잠재적으로 프로그램 실행 에러들을 초래한다.
일부 실시예들에서, 이러한 경쟁 조건을 해결하기 위해, 무효화 파이프라인들(112)은 각각의 메모리 액세스 요청에 의해 타겟이 되는 메모리 어드레스들 또는 메모리 어드레스 범위들을 페이지 워커(114)에 통지하도록 구성된다. 페이지 워커(114)는 이러한 메모리 어드레스들에 대응하는 임의의 계류중인 페이지 워크들을 식별하고, 식별된 페이지 워크들의 결과들이 어드레스 캐시(115)에 저장되는 것을 억제한다. 일부 실시예들에서, 페이지 워커(114)는 대응하는 페이지 워크가 완료되도록 함으로써 결과들을 억제하지만, 페이지 워크로부터 초래되는 어드레스 매핑이 유효하지 않음을 표시하도록 상태 식별자를 설정한다. 임의의 어드레스 매핑을 저장하기 전에, 어드레스 캐시(115)는 대응하는 상태 식별자를 체크하고, 상태 식별자가 어드레스 매핑이 유효하지 않음을 표시하는 경우, 어드레스 매핑을 폐기한다(즉, 저장하지 않는다).
무효화 요청을 수신하는 것에 응답하여 페이지 워크의 결과들을 억제하는 예가 일부 실시예들에 따라 도 6에 예시된다. 도시된 예에서, 무효화 요청(103)은 어드레스 캐시(115)에서 무효화될 어드레스 매핑들을 갖는 메모리 어드레스들의 범위를 표시하는 어드레스 범위(640)를 포함한다. 무효화 요청(103)을 수신하는 것에 응답하여, 무효화 파이프라인들(112)은 어드레스 범위(640) 내의 메모리 어드레스들과 연관된 어드레스 캐시(115)의 각각의 엔트리를 무효화한다. 또한, 무효화 파이프라인들(112)은 어드레스 범위(640)를 페이지 워커(114)에 표시한다.
어드레스 범위(640)를 수신하는 것에 응답하여, 페이지 워커(114)는 어드레스 범위(640)에 대응하는, 어드레스 범위(642)로서 예시된 페이지 테이블(641)의 부분을 식별한다. 즉, 어드레스 범위(642)는 어드레스 범위(640)에 대한 어드레스 매핑을 포함하는 페이지 테이블(641)의 부분을 나타낸다. 일부 실시예들에서, 어드레스 범위(642)는 다수의 페이지 테이블들의 상이한 부분들에 대응한다는 것이 인식될 것이다. 또한, 어드레스 범위(642)가 페이지 테이블(641)의 연접 영역(contiguous region)으로서 예시되지만, 일부 실시예들에서, 어드레스 범위(642)는 페이지 테이블(641)의 비연접(non-contiguous) 부분들 또는 다수의 페이지 테이블들의 비연접 부분들을 포함한다.
어드레스 범위(640)를 식별하는 것에 응답하여, 페이지 워커(114)는 어드레스 범위(642) 내의 메모리 어드레스를 타겟으로 하는 임의의 페이지 워크 요청들을 식별한다. 도시된 예에서, 페이지 워크 요청(643)은 어드레스 범위(642) 내의 메모리 어드레스를 타겟으로 하는 반면, 상이한 페이지 워크 요청(645)은 어드레스 범위(642) 밖의 메모리 어드레스를 타겟으로 한다. 따라서, 블록(644)에 의해 예시된 바와 같이, 페이지 워커(114)는 페이지 워크 요청(643)의 결과들을 억제하여, 페이지 워크 요청(643)에 대한 결과들이 어드레스 캐시(115)에 저장되지 않게 한다. 또한, 블록(646)에 의해 예시된 바와 같이, 페이지 워커(114)는 페이지 워크 요청(645)의 결과들이 어드레스 캐시(115)에 저장되게 한다.
본 명세서에 개시된 바와 같이, 일부 실시예들에서, 방법은 변환 색인 버퍼(TLB)에서 복수의 무효화 요청들을 수신하는 단계 - 복수의 무효화 요청들 각각은 복수의 메모리 어드레스들 중 대응하는 메모리 어드레스와 연관됨 -; 및 복수의 메모리 어드레스들 각각과 연관된 데이터를 무효화하기 위해 TLB에서 복수의 무효화 요청들을 동시에 프로세싱하는 단계를 포함한다. 일 양태에서, 복수의 무효화 요청들을 동시에 프로세싱하는 단계는, 복수의 무효화 요청들 각각을 제1 큐의 대응하는 엔트리에 할당하는 단계를 포함하고, 제1 큐의 각각의 엔트리는 대응하는 무효화 요청의 상태를 표시하는 상태 정보를 저장한다. 다른 양태에서, 복수의 무효화 요청들을 동시에 프로세싱하는 단계는, 제1 무효화 동작과 연관된 제1 무효화 프로세싱 파이프라인 스테이지에서 제1 큐의 제1 엔트리를 프로세싱하는 단계를 포함한다. 또 다른 양태에서, 복수의 무효화 요청들을 동시에 프로세싱하는 단계는: 제2 무효화 동작과 연관된 제2 무효화 프로세싱 파이프라인 스테이지에서 제1 큐의 제2 엔트리를 프로세싱하는 단계를 포함한다.
일 양태에서, 복수의 무효화 요청들을 프로세싱하는 단계는: 제2 무효화 파이프라인 스테이지에서 제1 큐의 제2 엔트리를 프로세싱하는 것과 동시에 제1 무효화 프로세싱 파이프라인 스테이지에서 제1 엔트리를 프로세싱하는 단계를 포함한다. 다른 양태에서, 방법은: 복수의 무효화 요청들 중 제1 무효화 요청을 수신하는 것에 응답하여: 복수의 무효화 요청들 중 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하는 단계; 및 제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하는 단계를 포함한다. 다른 양태에서, 제1 페이지 워크 동작을 억제하는 단계는 제1 무효화 요청을 프로세싱하는 것과 동시에 제1 페이지 워크 동작을 재시작하는 단계를 포함한다.
8. 일부 실시예들에서, 방법은: 메모리 제어기에서 제1 무효화 요청을 수신하는 것에 응답하여, 제1 메모리 어드레스와 연관된 데이터를 무효화하기 위한 제1 무효화 요청은: 복수의 무효화 요청들 중 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하는 단계; 및 제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하는 단계를 포함한다. 일 양태에서, 방법은, 제1 페이지 워크 동작을 억제하는 것과 동시에, 제1 메모리 어드레스와 연관된 데이터를 무효화하기 위해 제1 무효화 요청을 프로세싱하는 단계를 포함한다. 다른 양태에서, 방법은, 제1 무효화 요청을 프로세싱하는 것과 동시에, 제2 메모리 어드레스와 연관된 데이터를 무효화하기 위해 제2 무효화 요청을 프로세싱하는 단계를 포함한다. 또 다른 양태에서, 제1 무효화 요청을 프로세싱하는 단계는 무효화 파이프라인의 제2 스테이지에서 제2 무효화 요청을 프로세싱하는 것과 동시에 무효화 프로세싱 파이프라인의 제1 스테이지에서 제1 무효화 요청을 프로세싱하는 단계를 포함한다.
일 양태에서, 무효화 프로세싱 파이프라인의 제1 스테이지에서 제1 무효화 요청을 프로세싱하는 단계는 제1 무효화 동작과 연관된 제1 프로세싱 로직을 통해 제1 무효화 요청과 연관된 제1 상태 정보를 제1 큐로부터 제2 큐로 전송하는 단계를 포함한다. 다른 양태에서, 무효화 프로세싱 파이프라인의 제2 스테이지에서 제2 무효화 요청을 프로세싱하는 단계는 제2 무효화 동작과 연관된 제2 프로세싱 로직을 통해 제2 큐로부터 제3 큐로 제2 무효화 요청과 연관된 제2 상태 정보를 전송하는 단계를 포함한다. 또 다른 양태에서, 방법은: 제2 무효화 요청을 수신하는 것에 응답하여 - 제2 무효화 요청은 제2 메모리 어드레스와 연관된 데이터를 무효화하기 위한 것임 - : 복수의 무효화 요청들 중 제2 무효화 요청과 연관된 제2 어드레스 범위를 식별하는 단계; 및 제2 어드레스 범위와 연관된 제2 페이지 워크 동작을 억제하는 단계를 포함한다.
일부 실시예들에서, 프로세서는: 복수의 가상-대-물리적 어드레스 매핑들을 저장하기 위한 캐시; 복수의 가상-대-물리적 어드레스 매핑들 중 하나 이상을 무효화함으로써 복수의 무효화 요청들을 동시에 프로세싱하기 위한 적어도 하나의 무효화 프로세싱 파이프라인을 포함하는 변환 색인 버퍼(TLB)를 포함한다. 일 양태에서, 적어도 하나의 무효화 프로세싱 파이프라인은 제1 큐를 포함하고, 제1 큐의 각각의 엔트리는 대응하는 무효화 요청의 상태를 표시하는 상태 정보를 저장한다. 다른 양태에서, 적어도 하나의 무효화 프로세싱 파이프라인은: 제1 무효화 동작과 연관된 제1 스테이지를 포함하고, 제1 스테이지는 제1 큐의 제1 엔트리를 프로세싱한다. 또 다른 양태에서, 적어도 하나의 무효화 프로세싱 파이프라인은: 제2 무효화 동작과 연관된 제2 스테이지를 포함하고, 제1 스테이지는 제1 큐의 제2 엔트리를 프로세싱한다.
일 양태에서, 제1 스테이지는 제1 큐의 제2 엔트리를 프로세싱하는 제2 스테이지와 동시에 제1 큐의 제1 엔트리를 프로세싱하는 것이다. 다른 양태에서, TLB는, 복수의 무효화 요청들 중 제1 무효화 요청을 수신하는 것에 응답하여: 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하고; 그리고 제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하기 위한 페이지 워커를 더 포함한다.
일부 실시예들에서, 위에서 설명된 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다.소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되거나 그렇지 않으면 유형적으로 실시된 하나 이상의 실행가능한 명령어들의 세트들을 포함한다.소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 위에서 설명된 기술들의 하나 이상의 양태들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 디스크 저장 디바이스, 플래시 메모리(Flash memory), 캐시(cache), 램(RAM) 등과 같은 솔리드 스테이트 저장 디바이스 또는 다른 비휘발성 메모리 디바이스 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체 상에 저장된 실행가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 다른 방식으로 실행가능한 다른 명령어 포맷일 수 있다.
일반적인 설명에서 상술한 모든 활동 또는 엘리먼트가 요구되지 않으며, 특정 활동 또는 디바이스의 일부가 요구되지 않을 수 있으며, 상술한 것들에 더하여 하나 이상의 추가적인 활동이 수행될 수 있거나, 또는 포함된 엘리먼트들이 요구된다는 점에 유의한다. 또한 활동들이 나열되는 순서는 반드시 활동들이 수행되는 순서는 아니다. 또한, 구체적인 실시예들을 참조하여 개념들을 설명하였다. 그러나 통상의 지식을 가진 자라면 아래의 청구범위들에 기재된 바와 같이 본 개시의 범위를 벗어나지 않는 범위에서 다양한 수정들 및 변경들이 가능하다는 것을 알 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 수정들은 본 개시의 범위 내에 포함되도록 의도된다.
이점들, 다른 장점들, 및 문제점들에 대한 해결책들이 특정 실시예들과 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 어떤 이점, 장점, 또는 해결책이 발생하거나 더 두드러지게 될 수 있는 어떤 특징은 청구범위들 중 어느 하나 또는 모든 청구범위들의 중요한, 요구되는, 또는 필수적인 특징으로 해석되지 않는다. 더욱이, 위에서 개시된 특정 실시예들은 단지 예시적이며, 개시된 주제가 본 명세서의 교시들의 이점을 갖는 당업자들에게 명백하지만 상이한 그러나 동등한 방식들로 수정되고 실시될 수 있다. 이하의 청구범위에 기재된 것 이외의, 본 명세서에 기재된 구성 또는 설계의 상세사항에 대한 제한은 의도되지 않는다. 따라서, 위에서 개시된 특정 실시예들은 변경 또는 수정될 수 있고, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호범위는 아래의 청구범위에 명시된 바와 같다.

Claims (20)

  1. 방법으로서,
    변환 색인 버퍼(TLB)에서 복수의 무효화 요청들을 수신하는 단계 - 상기 복수의 무효화 요청들 각각은 복수의 메모리 어드레스들 중 대응하는 메모리 어드레스와 연관됨 -; 및
    상기 복수의 메모리 어드레스들 각각과 연관된 데이터를 무효화하기 위해 상기 TLB에서 상기 복수의 무효화 요청들을 동시에 프로세싱하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 복수의 무효화 요청들을 동시에 프로세싱하는 단계는:
    상기 복수의 무효화 요청들 각각을 제1 큐의 대응하는 엔트리에 할당하는 단계를 포함하고, 상기 제1 큐의 각각의 엔트리는 상기 대응하는 무효화 요청의 상태를 표시하는 상태 정보를 저장하는, 방법.
  3. 제2항에 있어서, 상기 복수의 무효화 요청들을 동시에 프로세싱하는 단계는:
    제1 무효화 동작과 연관된 제1 무효화 프로세싱 파이프라인 스테이지에서 상기 제1 큐의 제1 엔트리를 프로세싱하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 복수의 무효화 요청들을 동시에 프로세싱하는 단계는:
    제2 무효화 동작과 연관된 제2 무효화 프로세싱 파이프라인 스테이지에서 상기 제1 큐의 제2 엔트리를 프로세싱하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 복수의 무효화 요청들을 프로세싱하는 단계는:
    상기 제2 무효화 파이프라인 스테이지에서 상기 제1 큐의 상기 제2 엔트리를 프로세싱하는 것과 동시에 상기 제1 무효화 프로세싱 파이프라인 스테이지에서 상기 제1 엔트리를 프로세싱하는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 복수의 무효화 요청들 중 제1 무효화 요청을 수신하는 것에 응답하여:
    상기 복수의 무효화 요청들 중 상기 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하는 단계; 및
    제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 제1 페이지 워크 동작을 억제하는 단계는 상기 제1 무효화 요청을 프로세싱하는 것과 동시에 상기 제1 페이지 워크 동작을 재시작하는 단계를 포함하는, 방법.
  8. 방법으로서,
    메모리 제어기에서 제1 무효화 요청을 수신하는 것에 응답하여 - 상기 제1 무효화 요청은 제1 메모리 어드레스와 연관된 데이터를 무효화하기 위한 것임 - :
    복수의 무효화 요청들 중 상기 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하는 단계; 및
    제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 제1 페이지 워크 동작을 억제하는 것과 동시에, 상기 제1 메모리 어드레스와 연관된 상기 데이터를 무효화하기 위해 상기 제1 무효화 요청을 프로세싱하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제1 무효화 요청을 프로세싱하는 것과 동시에, 제2 메모리 어드레스와 연관된 데이터를 무효화하기 위해 제2 무효화 요청을 프로세싱하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서, 상기 제1 무효화 요청을 프로세싱하는 단계는 무효화 파이프라인의 제2 스테이지에서 상기 제2 무효화 요청을 프로세싱하는 것과 동시에 상기 무효화 프로세싱 파이프라인의 제1 스테이지에서 상기 제1 무효화 요청을 프로세싱하는 단계를 포함하는, 방법.
  12. 제11항에 있어서, 상기 무효화 프로세싱 파이프라인의 상기 제1 스테이지에서 상기 제1 무효화 요청을 프로세싱하는 단계는 제1 무효화 동작과 연관된 제1 프로세싱 로직을 통해 상기 제1 무효화 요청과 연관된 제1 상태 정보를 제1 큐로부터 제2 큐로 전송하는 단계를 포함하는, 방법.
  13. 제12항에 있어서, 상기 무효화 프로세싱 파이프라인의 상기 제2 스테이지에서 상기 제2 무효화 요청을 프로세싱하는 단계는 제2 무효화 동작과 연관된 제2 프로세싱 로직을 통해 상기 제2 무효화 요청과 연관된 제2 상태 정보를 상기 제2 큐로부터 제3 큐로 전송하는 단계를 포함하는, 방법.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    제2 무효화 요청을 수신하는 것에 응답하여 - 상기 제2 무효화 요청은 제2 메모리 어드레스와 연관된 데이터를 무효화하기 위한 것임 - :
    상기 복수의 무효화 요청들 중 상기 제2 무효화 요청과 연관된 제2 어드레스 범위를 식별하는 단계; 및
    제2 어드레스 범위와 연관된 제2 페이지 워크 동작을 억제하는 단계를 더 포함하는, 방법.
  15. 프로세서로서,
    변환 색인 버퍼(TLB)를 포함하고, 상기 변환 색인 버퍼(TLB)는:
    복수의 가상-대-물리적(virtual-to-physical) 어드레스 매핑들을 저장하기 위한 캐시;
    상기 복수의 가상-대-물리적 어드레스 매핑들 중 하나 이상을 무효화함으로써 복수의 무효화 요청들을 동시에 프로세싱하기 위한 적어도 하나의 무효화 프로세싱 파이프라인을 포함하는, 프로세서.
  16. 제15항에 있어서, 상기 적어도 하나의 무효화 프로세싱 파이프라인은:
    제1 큐를 포함하고, 상기 제1 큐의 각각의 엔트리는 상기 대응하는 무효화 요청의 상태를 표시하는 상태 정보를 저장하는, 프로세서.
  17. 제16항에 있어서, 상기 적어도 하나의 무효화 프로세싱 파이프라인은:
    제1 무효화 동작과 연관된 제1 스테이지를 포함하고, 상기 제1 스테이지는 상기 제1 큐의 제1 엔트리를 프로세싱하기 위한 것인, 프로세서.
  18. 제17항에 있어서, 상기 적어도 하나의 무효화 프로세싱 파이프라인은:
    제2 무효화 동작과 연관된 제2 스테이지를 포함하고, 상기 제1 스테이지는 상기 제1 큐의 제2 엔트리를 프로세싱하기 위한 것인, 프로세서.
  19. 제18항에 있어서,
    상기 제1 스테이지는 상기 제1 큐의 상기 제2 엔트리를 프로세싱하는 상기 제2 스테이지와 동시에 상기 제1 큐의 상기 제1 엔트리를 프로세싱하는 것인, 프로세서.
  20. 제15항 내지 제19항 중 어느 한 항에 있어서, 상기 TLB는:
    상기 복수의 무효화 요청들 중 제1 무효화 요청을 수신하는 것에 응답하여:
    상기 제1 무효화 요청과 연관된 제1 어드레스 범위를 식별하고; 및
    제1 어드레스 범위와 연관된 제1 페이지 워크 동작을 억제하기 위한 페이지 워커(page walker)를 더 포함하는, 프로세서.
KR1020247002402A 2021-06-23 2022-06-22 메모리 매핑 무효화 요청의 동시 프로세싱 KR20240022656A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/355,820 2021-06-23
US17/355,820 US20220414016A1 (en) 2021-06-23 2021-06-23 Concurrent processing of memory mapping invalidation requests
PCT/US2022/034486 WO2022271800A1 (en) 2021-06-23 2022-06-22 Concurrent processing of memory mapping invalidation requests

Publications (1)

Publication Number Publication Date
KR20240022656A true KR20240022656A (ko) 2024-02-20

Family

ID=84543320

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247002402A KR20240022656A (ko) 2021-06-23 2022-06-22 메모리 매핑 무효화 요청의 동시 프로세싱

Country Status (5)

Country Link
US (1) US20220414016A1 (ko)
EP (1) EP4359935A1 (ko)
KR (1) KR20240022656A (ko)
CN (1) CN117461027A (ko)
WO (1) WO2022271800A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748267B1 (en) * 2022-08-04 2023-09-05 International Business Machines Corporation Concurrent processing of translation entry invalidation requests in a processor core

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016012832A1 (en) * 2014-07-21 2016-01-28 Via Alliance Semiconductor Co., Ltd. Address translation cache that supports simultaneous invalidation of common context entries
US10452549B2 (en) * 2017-08-17 2019-10-22 Intel Corporation Method and apparatus for page table management
US10956332B2 (en) * 2017-11-01 2021-03-23 Advanced Micro Devices, Inc. Retaining cache entries of a processor core during a powered-down state
US10754790B2 (en) * 2018-04-26 2020-08-25 Qualcomm Incorporated Translation of virtual addresses to physical addresses using translation lookaside buffer information
US10754791B2 (en) * 2019-01-02 2020-08-25 International Business Machines Corporation Software translation prefetch instructions
US20210064528A1 (en) * 2019-08-26 2021-03-04 Arm Limited Filtering invalidation requests
US11853225B2 (en) * 2019-10-11 2023-12-26 Texas Instruments Incorporated Software-hardware memory management modes
US11422946B2 (en) * 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations

Also Published As

Publication number Publication date
US20220414016A1 (en) 2022-12-29
EP4359935A1 (en) 2024-05-01
CN117461027A (zh) 2024-01-26
WO2022271800A1 (en) 2022-12-29

Similar Documents

Publication Publication Date Title
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US9058284B1 (en) Method and apparatus for performing table lookup
US9684606B2 (en) Translation lookaside buffer invalidation suppression
US20160140047A1 (en) Translation lookaside buffer management
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
TWI790242B (zh) 位址轉譯資料的無效化
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
US10339054B2 (en) Instruction ordering for in-progress operations
KR20130114606A (ko) 데이터 처리장치 내부의 로컬 캐시 구조에 발행된 액세스 연산을 처리하는 장치 및 방법
JP2013097671A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
KR20240022656A (ko) 메모리 매핑 무효화 요청의 동시 프로세싱
US20130080733A1 (en) Processor and control method of processor
US20200110710A1 (en) Snoop invalidate filter for distributed memory management unit to reduce snoop invalidate latency
CN107480075B (zh) 低开销的转换后备缓冲器下拉
US20140168227A1 (en) System and method for versioning buffer states and graphics processing unit incorporating the same
US10719453B1 (en) Apparatus and method for handling maintenance operations for an address translation cache
US20230185726A1 (en) Information processing apparatus and control method
KR20230164172A (ko) 스태시 요청들을 처리하기 위한 장치 및 방법
CN115098409A (zh) 进行阶层式高速缓存系统回存且无效的处理器以及方法