KR102543675B1 - 변환 색인 버퍼 내 구성 가능한 스큐된 연관성 - Google Patents

변환 색인 버퍼 내 구성 가능한 스큐된 연관성 Download PDF

Info

Publication number
KR102543675B1
KR102543675B1 KR1020197017812A KR20197017812A KR102543675B1 KR 102543675 B1 KR102543675 B1 KR 102543675B1 KR 1020197017812 A KR1020197017812 A KR 1020197017812A KR 20197017812 A KR20197017812 A KR 20197017812A KR 102543675 B1 KR102543675 B1 KR 102543675B1
Authority
KR
South Korea
Prior art keywords
subset
ways
tlb
configuration indication
virtual address
Prior art date
Application number
KR1020197017812A
Other languages
English (en)
Other versions
KR20190090389A (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 KR20190090389A publication Critical patent/KR20190090389A/ko
Application granted granted Critical
Publication of KR102543675B1 publication Critical patent/KR102543675B1/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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/652Page size control
    • 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)를 사용하여 가상 어드레스에 대응하는 물리적 메모리 내 어드레스를 결정하기 위한 방법, 디바이스 및 시스템이 설명된다. 가상 어드레스와 구성 표시는 수신기 회로를 사용하여 수신된다. 가상 어드레스에 대응하는 물리적 어드레스는 TLB 히트가 발생한다면 출력된다. TLB의 복수의 웨이의 제1 하위세트는 제1 페이지 크기를 수용하도록 구성된다. 제1 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다. 가상 어드레스에 대응하는 물리적 어드레스는 TLB 오류가 발생한다면 페이지 테이블로부터 검색되고, 그리고 물리적 어드레스의 적어도 일부는 구성 표시에 기초한 교체 정책에 따라 결정된, TLB의 복수의 웨이의 하위세트의 최소 최근 사용 웨이에 설치된다.

Description

변환 색인 버퍼 내 구성 가능한 스큐된 연관성
관련 출원에 대한 상호 참조
본 출원은 미국 특허 출원 제15/389,955호(출원일: 2016년 12월 23일)의 이득을 주장하고, 상기 기초 출원은 본 명세서에 완전히 제시된 것처럼 참고로 편입된다.
변환 색인 버퍼(translation lookaside buffer: TLB)는 가상-대-물리적 어드레스 변환 및 운영 시스템(operating system: OS)-페이지-입도 메타데이터(예를 들어, 판독/기입 승인)를 캐시에 저장하도록 산출 시스템에서 사용되는 하드웨어 구조이다. TLB가 모든 메모리 액세스에서 검색되기 때문에 TLB는 산출 시스템 내 성능 확장성에 있어서 중요하다. TLB가 모든 단일의 메모리 액세스에 액세스되기 때문에, TLB는 중요한 타이밍 경로에 있고 그리고 각각의 프로세서 코어 또는 가속기는 자체 TLB를 가질 수 있다.
더 상세한 이해는 첨부된 도면과 함께 실시예에 의해 제공된, 다음의 설명으로부터 이루어질 수 있다:
도 1은 하나 이상의 개시된 대안이 구현될 수 있는 예시적인 디바이스의 블록도;
도 2는 부가적인 상세사항을 예시하는, 도 1의 디바이스의 블록도;
도 3은 도 1의 디바이스에서 구현될 수 있는 예시적인 구성 가능한 스큐된 연상 TLB(configurable skewed associative TLB)의 블록도;
도 4는 도 3의 구성 가능한 스큐된 연상 TLB 내 가상 어드레스를 검색하기 위한 예시적인 방법을 예시하는 흐름도; 및
도 5는 도 3의 구성 가능한 스큐된 연상 TLB 내 TLB 오류를 처리하기 위한 예시적인 방법을 예시하는 흐름도.
일부 대안은 스큐된 연상 변환 색인 버퍼를 사용하여 가상 어드레스에 대응하는 물리적 메모리 내 어드레스를 결정하기 위한 방법을 제공한다. 가상 어드레스 및 구성 표시(configuration indication)는 수신기 회로를 사용하여 수신된다. 가상 어드레스에 대응하는 물리적 어드레스는 TLB 히트(hit)가 발생하는 조건에서 출력된다. TLB의 복수의 웨이(way)의 제1 하위세트는 제1 페이지 크기를 수용하도록 구성된다. 제1 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다.
일부 대안에서, 복수의 웨이의 제2 하위세트는 제2 페이지 크기를 수용하도록 구성된다. 제2 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 제1 하위세트에 포함된 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스(index)는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력된다. 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 기본 입력 출력 시스템(basic input output system: BIOS), 단절 퓨즈, 운영 시스템(OS) 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
일부 대안은 스큐된 연상 변환 색인 버퍼(TLB)를 제공한다. TLB는 복수의 웨이, 가상 어드레스와 구성 표시를 수신하도록 구성된 입력 회로, 및 TLB 히트가 발생하는 조건에서 가상 어드레스에 대응하는 물리적 어드레스를 출력하도록 구성된 출력 회로를 포함한다. 웨이의 제1 하위세트는 제1 페이지 크기를 수용하도록 구성된다. 제1 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다.
일부 대안에서, 복수의 웨이의 제2 하위세트는 제2 페이지 크기를 수용하도록 구성된다. 제2 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 제1 하위세트에 포함된 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력된다. 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 BIOS, 단절 퓨즈, OS 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
일부 대안은 스큐된 연상 변환 색인 버퍼(TLB)를 포함하는 가속 처리 디바이스(accelerated processing device: APD)를 제공한다. TLB는 복수의 웨이, 가상 어드레스와 구성 표시를 수신하도록 구성된 입력 회로, 및 TLB 히트가 발생하는 조건에서 가상 어드레스에 대응하는 물리적 어드레스를 출력하도록 구성된 출력 회로를 포함한다. 웨이의 제1 하위세트는 제1 페이지 크기를 수용하도록 구성된다. 제1 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다.
일부 대안에서, 복수의 웨이의 제2 하위세트는 제2 페이지 크기를 수용하도록 구성된다. 제2 하위세트는 구성 표시에 기초하는 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 제1 하위세트에 포함된 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력된다. 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 BIOS, 단절 퓨즈, OS 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
일부 대안은 스큐된 연상 변환 색인 버퍼(TLB)를 사용하여 가상 어드레스에 대응하는 물리적 메모리 내 어드레스를 결정하기 위한 방법을 제공한다. 방법은 수신기 회로를 사용하여 가상 어드레스와 구성 표시를 수신하는 단계 및 TLB 오류가 발생한다면 페이지 테이블로부터 가상 어드레스에 대응하는 물리적 어드레스를 검색하는 단계를 포함하고 물리적 어드레스의 적어도 일부는 TLB의 복수의 웨이의 하위세트의 최소 최근 사용(least recently used: LRU) 웨이에 설치된다. LRU 웨이는 교체 정책에 따라 결정된다. 교체 정책은 구성 표시에 기초한다.
일부 대안에서, 웨이의 하위세트는 구성 표시에 기초하는 복수의 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 하위세트에 포함된 복수의 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력된다. 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 BIOS, 단절 퓨즈, OS 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
일부 대안은 스큐된 연상 변환 색인 버퍼(TLB)를 제공한다. TLB는 복수의 웨이, 가상 어드레스와 구성 표시를 수신하고, TLB 오류가 발생하는 조건에서 페이지 테이블로부터 가상 어드레스에 대응하는 물리적 어드레스를 검색하도록 구성된 입력 회로, 및 TLB의 복수의 웨이의 하위세트의 최소 최근 사용(LRU) 웨이에 물리적 어드레스의 적어도 일부를 설치하도록 구성된 교체 회로를 포함한다. LRU 웨이는 교체 정책에 따라 결정된다. 교체 정책은 구성 표시에 기초한다.
일부 대안에서, 웨이의 하위세트는 구성 표시에 기초하는 복수의 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 하위세트에 포함된 복수의 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력된다. 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 BIOS, 단절 퓨즈, OS 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
일부 대안은 스큐된 연상 변환 색인 버퍼(TLB)를 포함하는 가속 처리 디바이스(APD)를 제공한다. TLB는 복수의 웨이, 가상 어드레스와 구성 표시를 수신하도록 구성된 입력 회로를 포함한다. 입력 회로는 또한 TLB 오류가 발생한다면 페이지 테이블로부터 가상 어드레스에 대응하는 물리적 어드레스를 검색하도록 구성된다. TLB는 또한 TLB의 복수의 웨이의 하위세트의 최소 최근 사용(LRU) 웨이에 물리적 어드레스의 적어도 일부를 설치하도록 구성된 교체 회로를 포함한다. LRU 웨이는 교체 정책에 따라 결정된다. 교체 정책은 구성 표시에 기초한다.
일부 대안에서, 웨이의 하위세트는 구성 표시에 기초하는 복수의 웨이의 수를 포함한다. 일부 대안에서, 제2 하위세트에 포함된 웨이의 수에 대한 하위세트에 포함된 복수의 웨이의 수의 비는 구성 표시에 기초한다. 일부 대안에서, 복수의 웨이에 대한 인덱스는 구성 표시에 기초하는 스큐잉 함수에 의해 계산된다. 일부 대안에서, 가상 어드레스의 비트의 하위세트가 스큐잉 함수에 입력되고; 가상 어드레스의 어떤 비트가 비트의 하위세트에 포함되는지는 구성 표시에 기초하여 계산된다. 일부 대안에서, 구성 표시는 BIOS, 단절 퓨즈, OS 또는 구성 레지스터로부터 수신된다. 일부 대안에서, 구성 표시는 단일의 비트를 포함한다.
도 1은 하나 이상의 개시된 대안이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어, 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 휴대폰 또는 태블릿 컴퓨터를 포함한다. 디바이스(100)는 프로세서(102), 메모리(104), 기억장치(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 임의로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수 있다. 디바이스(100)가 도 1에 도시되지 않은 부가적인 컴포넌트를 포함할 수 있다는 것을 이해하라.
프로세서(102)는 예를 들어, 중앙 처리 장치(central processing unit: CPU), 그래픽 처리 장치(graphics processing unit: GPU)를 포함하고, CPU와 GPU는 동일한 다이 또는 하나 이상의 프로세서 코어에 위치되고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(104)는 프로세서(102)와 동일한 다이에 위치될 수 있거나 또는 프로세서(102)와는 따로 위치될 수 있다. 메모리(104)는 예를 들어, 휘발성 또는 비휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(random access memory: RAM), 동적 RAM 또는 캐시를 포함한다.
기억장치(106)는 예를 들어, 고정식 또는 이동식 기억장치, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광디스크 또는 플래시 드라이브를 포함한다. 입력 디바이스(108)는 예를 들어, 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 스캐너 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 근거리 네트워크 카드)를 포함한다. 출력 디바이스(110)는 예를 들어, 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명, 안테나 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호의 전송 및/또는 수신을 위한 무선 근거리 네트워크 카드)를 포함한다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 그리고 프로세서(102)가 입력 디바이스(108)로부터 입력을 수신하게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 그리고 프로세서(102)가 출력을 출력 디바이스(110)로 전송하게 한다. 입력 드라이버(112)와 출력 드라이버(114)는 임의의 컴포넌트이고, 그리고 입력 드라이버(112)와 출력 드라이버(114)가 존재하지 않는다면 디바이스(100)는 동일한 방식으로 작동할 것임에 유의해야 한다. 출력 드라이버(116)는 디스플레이 디바이스(118)에 연결되는 가속 처리 디바이스("APD")(116)를 포함한다. APD는 산출 명령과 그래픽 렌더링 명령을 프로세서(102)로부터 수용하고, 이 산출 명령과 그래픽 렌더링 명령을 처리하고, 그리고 픽셀 출력을 디스플레이를 위해 디스플레이 디바이스(118)에 제공하도록 구성된다.
아래에 더 상세히 설명되는 바와 같이, APD(116)는 단일의-명령어-다수의-데이터(single-instruction-multiple-data: "SIMD") 패러다임에 따라 산출을 수행하도록 구성된 하나 이상의 병렬 처리 장치를 포함한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 APD와 함께 수행되는 것으로 본 명세서에 설명되지만, APD(116)에 의해 수행되는 것으로 설명된 기능은 또한 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 그리고 그래픽 출력을 디스플레이 디바이스(118)에 제공하도록 구성되는 유사한 능력을 가진 다른 산출 디바이스에 의해 수행될 수 있다. 예를 들어, SIMD 패러다임에 따라 처리 태스크를 수행하는 임의의 처리 시스템이 본 명세서에 설명된 기능을 수행하도록 구성될 수 있다는 것이 고려된다. 대안적으로, SIMD 패러다임에 따라 처리 태스크를 수행하지 않는 산출 시스템이 본 명세서에 설명된 기능을 수행할 수 있다는 것이 고려된다.
도 2는 APD(116)의 처리 태스크의 실행과 관련된 부가적인 상세사항을 예시하는, 디바이스(100)의 블록도이다. 프로세서(102)는 시스템 메모리(104)에서, 프로세서(102)에 의한 실행을 위해 하나 이상의 제어 논리 모듈을 유지한다. 제어 논리 모듈은 운영 시스템(120), 커널 모드 드라이버(122) 및 애플리케이션(126)을 포함한다. 이 제어 논리 모듈은 프로세서(102) 및 APD(116)의 작업의 다양한 양상을 제어한다. 예를 들어, 운영 시스템(120)은 하드웨어와 직접적으로 통신하고 그리고 프로세서(102)에서 실행되는 다른 소프트웨어를 위해 인터페이스를 하드웨어에 제공한다. 커널 모드 드라이버(122)는 예를 들어, APD(116)의 다양한 기능에 액세스하도록 응용 프로그래밍 인터페이스(application programming interface: "API")를 프로세서(102)에서 실행되는 소프트웨어(예를 들어, 애플리케이션(126))에 제공함으로써, APD(116)의 작업을 제어한다. 커널 모드 드라이버(122)는 또한 APD(116)의 컴포넌트(예컨대, 아래에서 더 상세히 논의되는 SIMD 장치(138))를 처리함으로써 실행을 위한 프로그램을 컴파일하는 저스트 인타임 컴파일러(just-in-time compiler)를 포함한다.
APD(116)는 선택된 기능을 위한 명령과 프로그램, 예컨대, 그래픽 작업과 비-그래픽 작업, 예컨대, 병렬 처리에 적합한 작업을 실행시킨다. APD(116)는 그래픽 파이프라인 작업, 예컨대, 픽셀 작업, 기하학적 산출을 실행시키고 그리고 프로세서(102)로부터 수신된 명령에 기초하여 이미지를 디스플레이 디바이스(118)에 렌더링하기 위해 사용될 수 있다. APD(116)는 또한 프로세서(102)로부터 수신된 명령에 기초하여, 그래픽 작업과 직접적으로 관련되지 않은 산출 처리 작업, 예컨대, 비디오, 물리 시뮬레이션, 산출적 유체 역학 또는 다른 태스크와 관련된 작업을 실행시킨다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청 시 작업을 수행하도록 구성되는 하나 이상의 SIMD 장치(138)를 포함하는 산출 장치(132)를 포함한다. SIMD 패러다임은 다수의 처리 소자가 단일의 프로그램 제어 흐름 장치 및 프로그램 계수기를 공유하고 따라서 동일한 프로그램을 실행시키지만 이 프로그램을 상이한 데이터에 의해 실행시킬 수 있는 것이다. 하나의 실시예에서, 각각의 SIMD 장치(138)는 16개의 레인(lane)을 포함하고, 각각의 레인은 SIMD 장치(138) 내 다른 레인과 동시에 동일한 명령어를 실행시키지만 이 명령어를 상이한 데이터에 의해 실행시킬 수 있다. 레인은 모든 레인이 미리 결정된 명령어를 실행시킬 필요가 없다면 예측에 의해 스위치 오프될(switch off) 수 있다. 예측은 또한 분기하는 제어 흐름에 의해 프로그램을 실행시키도록 사용될 수 있다. 더 구체적으로, 제어 흐름이 각각의 레인에 의해 수행된 계산에 기초하는 조건부 분기 또는 다른 명령어를 가진 프로그램에 대해, 제어 흐름 경로에 대응하는 레인의 예측은 현재 실행되지 않고, 그리고 상이한 제어 흐름 경로의 직렬 실행은 임의적인 제어 흐름을 허용한다.
산출 장치(132) 내 실행의 기본 단위는 작업 항목(work-item)이다. 각각의 작업 항목은 특정한 레인에서 병렬로 실행될 프로그램의 단일의 인스턴스화(instantiation)를 나타낸다. 작업 항목은 단일의 SIMD 처리 장치(138)의 "파면(wavefront)"으로서 동시에 실행된다. 다수의 파면은 동일한 프로그램을 실행시키도록 지정된 작업 항목의 콜렉션을 포함하는 "작업 군"에 포함된다. 작업 군은 작업 군을 이루는 파면의 각각을 실행시킴으로써 실행된다. 파면은 단일의 SIMD 장치(138)에서 순차적으로 실행되거나 또는 상이한 SIMD 장치(138)에서 부분적으로 또는 전적으로 병렬로 실행된다. 파면은 단일의 SIMD 장치(138)에서 동시에 실행될 수 있는 작업 항목의 가장 큰 콜렉션이다. 따라서, 프로세서(102)로부터 수신된 명령이, 특정한 프로그램이 이 프로그램이 단일의 SIMD 장치(138)에서 동시에 실행될 수 없는 정도로 병렬화된다는 것을 나타낸다면, 그러면 이 프로그램은 2개 이상의 SIMD 장치(138)에서 병렬화되거나 또는 동일한 SIMD 장치(138)에서 직렬화되는(또는 필요하다면 병렬화와 직렬화 둘 다가 되는) 파면으로 분해된다. 스케줄러(scheduler)(136)는 상이한 산출 장치(132) 및 SIMD 장치(138)의 다양한 파면을 스케줄링하는 것과 관련된 작업을 수행하도록 구성된다.
산출 장치(132)가 제공하는 병렬화는 그래픽 관련된 작업, 예컨대, 픽셀 값 계산, 정점 변환 및 다른 그래픽 작업에 적합하다. 따라서 프로세서(102)로부터 그래픽 처리 명령을 수용하는 그래픽 파이프라인(134)은 병렬 실행을 위해 산출 태스크를 산출 장치(132)에 제공할 수 있다.
산출 장치(132)는 또한 그래픽과 관련되지 않거나 또는 그래픽 파이프라인(134)의 "정상" 작업(예를 들어, 그래픽 파이프라인(134)의 작업을 위해 수행된 처리를 보충하도록 수행된 관행 작업)의 일부로서 수행되지 않는 산출 태스크를 수행하도록 사용된다. 프로세서(102)에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 실행을 위해 이러한 산출 태스크를 획정하는 프로그램을 APD(116)에 전송한다.
프로세서(102)는 가상 메모리를 지원할 수 있고, 그리고 메모리(104)는 예를 들어, 메모리에서 가상 페이지 번호를 물리적 페이지 번호에 맵핑하는 페이지 테이블 엔트리를 가진 페이지 테이블을 포함한다. 프로세서(102)가 페이지 테이블 엔트리를 캐시에 저장하는 변환 색인 버퍼(TLB)를 포함하거나 또는 변환 색인 버퍼와 작동 가능하게 통신하여 프로세서(102)가 메모리(104)에 액세스할 필요가 없어서 최근에 사용된 가상 어드레스를 위해 페이지 테이블로부터 물리적 어드레스를 검색한다.
애플리케이션의 가상 메모리 거동에 따라, 상이한 가상 페이지 크기는 상이한 성능을 낼 수 있다. 예를 들어, 작은 페이지 크기를 사용하는 것은 미사용된 데이터 또는 명령어를 위한 물리적 메모리 공간을 할당하는 것을 방지할 수 있고 그리고 큰 페이지 크기를 사용하는 것은 다량의 데이터 및/또는 명령어에 영향을 주는 단일의 페이지 결함을 발생시킬 수 있다. 이에 따라, 일부 아키텍처는 1 초과의 가상 페이지 크기를 지원한다.
설정된-연상 TLB는 단일의 과정 동안 다수의 페이지 크기를 효율적으로 지원할 수 없다. 따라서, 1 초과의 페이지 크기의 사용을 지원하는 아키텍처는 완전히 연상 TLB 또는 각각의 페이지 크기에 대해 분리된 TLB를 사용하여 구현된다. 완전히 연상 TLB는 소수의 엔트리로 제한되고, 그리고 상이한 페이지 크기에 대해 특유의 부분적으로 연상 TLB를 사용하는 것은 시스템의 의도된 사용 동안 페이지 크기의 분배의 인식을 필요로 한다. 이것은 실제 사용이 예측된 페이지 크기 분배로부터 변경되는 경우 비효율을 발생시킬 수 있다.
스큐된 연상 TLB는 입력 인덱스가 TLB의 n-웨이의 일부 또는 전부에 대해 상이한 스큐잉 함수에 의해 변경되는 경우 n-웨이 설정된 연상 TLB의 변동이다. 스큐된 연상 TLB는 또한 1 초과의 페이지 크기를 지원하도록 사용될 수 있다. 이러한 구현예에서, 스큐된 연상 TLB의 웨이의 고정된 수는 특정한 페이지 크기를 지원하도록 사용된다. 예를 들어, 12개의 웨이를 가진 스큐된 연상 TLB에서, 임의의 TLB 검색에 대해, 8개의 웨이는 4킬로바이트 크기의 페이지를 수용하는데 전용이고, 2개의 웨이는 32킬로바이트 크기의 페이지를 수용하는데 전용이고, 그리고 2개의 웨이는 2메가바이트 크기의 페이지를 수용하는데 전용이다. 어떤 웨이가 어떤 페이지 크기를 수용하는 맵핑은 고정되지 않지만, 가상 어드레스의 비트에 의해 결정된다.
일부 작업량, 예컨대, 적은 페이지를 많이 활용하는 작업량에 대해, 하나의 페이지 크기 웨이 구성은 잘 작업할 수 있다(예를 들어, 32킬로바이트 크기의 페이지 및 2메가바이트 크기의 페이지에 전용인 소수의 웨이, 및 4킬로바이트 크기의 페이지에 전용인 더 많은 수의 웨이를 가짐). 여기서, 더 많은 웨이가 적은 페이지의 처리를 위해 할당된다. 다른 작업량, 예컨대, 많은 페이지를 많이 활용하는 작업량에 대해, 또 다른 페이지 크기 웨이 구성은 잘 작업할 수 있다(예를 들어, 32킬로바이트 크기의 페이지 및 2메가바이트 크기의 페이지에 전용인 더 많은 수의 웨이, 및 4킬로바이트 크기의 페이지에 전용인 더 적은 수의 웨이를 가짐).
전형적인 스큐된 연상 TLB는 구성 불가능하고, 그리고 이러한 TLB의 모든 웨이가 모든 페이지 크기를 수용할 수 있지만, 이러한 TLB가 페이지 크기의 특정한 분배로 터닝되기 때문에 모든 작업량에 대해 최적화될 수 없다. 비-스큐된 연상 TLB는 TLB의 모든 웨이가 모든 페이지 크기를 수용할 수 없기(그리고 일부 작업량에 의해 사용되지 않는 페이지 크기의 영역-비효율적, 소모성 기억장치 공간이 있기) 때문에, 그리고 TLB가 또한 페이지 크기의 특정한 분배로 터닝되기 때문에 훨씬 더 나쁜 성능을 가질 수 있다.
도 3은 예시적인 구성 가능한 스큐된 연상 TLB(300)의 블록도이다. 스큐된 연상 TLB(300)의 예시는 명료성을 위해 간략화되고; 그리고 스큐된 연상 TLB는 도시되지 않은 (예를 들어, 승인, 부가적인 태깅 비트, 플러싱 등과 관련된) 다양한 컴포넌트를 포함할 수 있다는 것에 유의한다. 구성 가능한 스큐된 연상 TLB(300)가 이 실시예에서 디바이스(100)에서 구현되지만, 다른 구현예가 가능하다는 것이 이해될 것이다. 예를 들어, 다양한 구현예에서, TLB(300)는 프로세서(102)의 컴포넌트로서, 메모리(104)의 컴포넌트로서, 또는 프로세서(102)와 메모리(104), 예컨대, 메모리 관리 장치(memory management unit: MMU)와 동작 가능하게 연결된 디바이스로 구현된다. TLB(300)의 다양한 다른 구현예가 디바이스(100)의 맥락 내외 둘 다에서 또한 가능하다.
TLB(300)는 이 실시예에서 콘텐츠-어드레스 가능 메모리(content-addressable memory: CAM)로서 구현되고, 검색 키는 (가상 메모리 어드레스로부터의) 가상 페이지 번호이고, 그리고 검색 결과는 (예를 들어, 메모리(104)의) 물리적 메모리 어드레스에 대한 물리적 페이지 번호이다. TLB(300)는 16개의 웨이(305)(웨이(0, 1, 및 15)에 대응하는 이 중 3개(305', 305'', 305''')만이 명료성을 위해 도시되고; 모든 웨이는 집합적으로 305로서 지칭됨)를 포함한다. 웨이(305) 각각은 128개의 엔트리를 포함하고, 엔트리 각각은 48비트 너비이다. 웨이(305)의 각각의 엔트리는 태그(tag) 및 페이로드(payload)를 포함하고, 태그는 가상 페이지 번호와의 비교에 의한 인덱싱을 위해 사용되고, 그리고 페이로드는 대응하는 물리적 페이지 번호이다(또는 대응하는 물리적 페이지 번호를 포함한다). 가상 어드레스의 페이지 오프셋(page offset)은 물리적 어드레스의 페이지 오프셋과 동일할 수 있고, 그리고 이 오프셋과 물리적 페이지 번호를 결합함으로써 물리적 메모리 어드레스를 구성하도록 사용될 수 있다.
TLB(300)는 3개의 상이한 가상 페이지 크기, 4킬로바이트(4K), 32킬로바이트(32K) 및 2메가바이트(2M)를 지원한다. TLB(300) 내 임의의 검색에 대해, 각각의 웨이가 상이한 가상 페이지 크기 중 단 하나에 대하여 획정되는 변환을 수용하고, 그리고 웨이(305) 간 지원된 페이지 크기의 분배가 구성 가능하다. 예를 들어, 8-2-2 구성에서, 8개의 웨이(305)가 4K 페이지를 지원하도록 구성되고, 2개의 웨이(305)가 32K 페이지를 지원하도록 구성되고, 그리고 2개의 웨이(305)가 2M 페이지를 지원하도록 구성된다. 대조적으로, 6-3-3 구성은 4K 페이지를 지원하도록 구성된 6개의 웨이(305), 32K 페이지를 지원하도록 구성된 3개의 웨이(305), 및 2M 페이지를 지원하도록 구성된 3개의 웨이(305)를 가질 것이다. 웨이의 수, 웨이 엔트리의 수 및 폭, 지원된 가상 페이지의 수 및 크기, 및 웨이 구성의 수 및 분배는 전부 예시적이고, 그리고 이 컴포넌트의 임의의 적합한 구성이 사용될 수 있다. 이것은 임의의 도면에 대하여 본 명세서에 설명된 모든 구현예에 적용된다.
웨이(305)의 각각에 대해 지원된 페이지 크기를 구성하기 위해서(즉, 이 실시예에서 8-2-2 구성과 6-3-3 구성 사이에서 선택하기 위해서), 구성 비트(310)가 각각의 웨이의 스큐잉 함수에 입력된다. 일부 구현예에서, 구성 비트(310)는 각각의 지원된 페이지 크기에 할당된 웨이의 수의 비를 선택한다. 각각의 웨이는 이 웨이에 대해 스큐잉 함수를 구현하는 자체 스큐잉 함수 블록(스큐잉 함수 블록(315', 315'' 및 315''')만이 도시되고; 모든 스큐잉 함수 블록은 집합적으로 315로서 지칭됨)을 포함하거나 또는 자체 스큐잉 함수 블록에 작동 가능하게 연결된다. 동일한 구성 비트(310)가 각각의 스큐잉 함수 블록(315)에 입력된다. 구성 비트(310)는 정적으로 또는 동적으로 임의의 적합한 방식으로 설정될 수 있다. 예를 들어, 구성 비트(310)는 퓨즈를 단절시킴으로써 또는 TLB(300) 내 비휘발성 메모리 레지스터(또는 TLB가 구현되거나 또는 TLB(300)가 작동 가능하게 연결되는 프로세서의 다른 컴포넌트)를 설정함으로써 설정될 수 있거나, 또는 TLB(300)가 컴포넌트인 컴퓨터 시스템의 기본 입력 출력 시스템(BIOS)에서 설정될 수 있다. 구성 비트(310)는 또한 대안적으로 운영 시스템에 의해 설정될 수 있거나, 또는 그렇지 않으면 TLB(300)의 레지스터 또는 TLB가 구현되거나 또는 TLB(300)가 작동 가능하게 연결되는 프로세서의 다른 컴포넌트에서 설정될 수 있다.
가상 어드레스를 물리적 어드레스로 변환시키기 위해서, 가상 어드레스(310)가 TLB(300)에 입력된다. TLB(300)가 레벨 2(L2) TLB라면, 가상 어드레스(310)가 예를 들어, L1 TLB 오류 후 레벨 1(L1) TLB로부터 입력될 수 있지만, 다른 적합한 구현예가 가능하다. 가상 어드레스(310)는 가상 페이지 번호 및 가상 페이지로의 오프셋을 포함한다. 가상 어드레스(310)는 이 실시예에서 48비트 너비이지만, 다른 구현예가 임의의 적합한 폭을 사용할 수 있다. 도 3에서, 가상 어드레스(310)의 48비트는 [47:0]로서 표현된다. 48비트의 하위세트는 가상 페이지 번호에 대응하고, 그리고 48비트의 또 다른 하위세트는 오프셋에 대응한다. 어떤 비트가 사용되는지는 가상 어드레스(305)와 관련된 가상 페이지 크기에 의존한다.
가상 어드레스(305)가 4K 페이지를 반영한다면, 비트 [47:12]는 페이지 번호이고, 그리고 비트 [11:0]는 페이지로의 오프셋이다. 가상 어드레스(305)가 32K 페이지를 반영한다면, 비트 [47:15]는 페이지 번호이고, 그리고 비트 [14:0]는 페이지로의 오프셋이다. 가상 어드레스(305)가 2M 페이지를 반영한다면, 비트 [47:21]는 페이지 번호이고, 그리고 비트 [20:0]는 페이지로의 오프셋이다. 모든 3개의 페이지 크기에 공통인 최하위 비트는 [21]이다. 이에 따라, 비트 [22:21]는 어떤 웨이가 [22:21]의 값에 대해 어떤 페이지 크기를 수용하도록 사용되는지를 결정하도록 사용되고, 그리고 각각의 웨이에 대한 스큐잉 함수 블록(315)에 입력된다. 이 범위 내 [21] 미만의 비트는 이 목적을 위해 선택되지 않는데 이것은 2M 페이지에 대해 이 비트가 오프셋의 일부이고-페이지 번호가 아님-, 그리고 변환 하드웨어에 의해 처리되지 않기(오프셋은 물리적 어드레스를 통과함) 때문이다. 그러나, 일부 구현예에서, [21] 초과의 다른 비트가 사용될 수 있다. 게다가, 1비트 또는 2 초과의 비트는 오직 2개 또는 3개 초과의 페이지 크기를 지원하는 웨이 구성이 구현된다면 인덱싱을 위해 사용될 수 있다.
스큐잉 함수 블록(315) 각각은 가상 어드레스(310)의 비트 [22:21]와 구성 비트(310)를 입력하고, 그리고 스큐잉 함수(320)를 적용함으로써 생성되는 값을 입력부에 출력한다. 각각의 웨이에 대한 스큐잉 함수(320)는 상이할 수 있다(스큐잉 함수(320', 320'' 및 320''')만이 도시되지만; 모든 스큐잉 함수는 집합적으로 320로서 지칭됨). 표 1과 표 2는 16개의 웨이(305) 중 어떤 웨이가 구성 비트(310)(8-2-2 구성과 6-3-3 구성 사이에서 선택하여) 및 가상 어드레스(310)의 비트 [22:21]에 기초하여 상이한 페이지 크기의 물리적 어드레스를 저장하도록 사용되는 실시예를 나열한다.
표 1
8-2-2 구성
가상 어드레스 [22:21] = 00
4K 웨이 0, 1, 4, 5, 8, 9, 10, 11
32K 웨이 2, 6
2M 웨이 3, 7
가상 어드레스 [22:21] = 10
4K 웨이 0, 1, 4, 5, 8, 9, 10, 11
32K 웨이 3, 7
2M 웨이 2, 6
가상 어드레스 [22:21] = 01
4K 웨이 2, 3, 6, 7, 8, 9, 10, 11
32K 웨이 0, 4
2M 웨이 1, 5
가상 어드레스 [22:21] = 11
4K 웨이 2, 3, 6, 7, 8, 9, 10, 11
32K 웨이 1, 5
2M 웨이 0, 4
표 2
6-3-3 구성
가상 어드레스 [22:21] = 00
4K 웨이 0, 1, 4, 5, 8, 9
32K 웨이 2, 6, 10
2M 웨이 3, 7, 11
가상 어드레스 [22:21] = 10
4K 웨이 0, 1, 4, 5, 8, 9
32K 웨이 3, 7, 11
2M 웨이 2, 6, 10
가상 어드레스 [22:21] = 01
4K 웨이 2, 3, 6, 7, 10, 11
32K 웨이 0, 4, 8
2M 웨이 1, 5, 9
가상 어드레스 [22:21] = 11
4K 웨이 2, 3, 6, 7, 10, 11
32K 웨이 1, 5, 9
2M 웨이 0, 4, 8
각각의 웨이(305)가 인덱스 멀티플렉서에 의해 인덱싱된다(325', 325'' 및 325'''가 도시되고, 모든 모든 인덱스 멀티플렉서는 집합적으로 325로서 지칭됨). 각각의 인덱스 멀티플렉서(325)는 3개의 가능한 인덱스를 입력하고, 인덱스는 입력 가상 어드레스(310)의 각각의 가능한 페이지 크기에 대한 것이다. 인덱스는 가상 어드레스(310)의 가상 페이지 번호 부분의 비트의 범위이다. 비트의 범위는 각각의 페이지 크기에 대해 상이하다. 이 실시예에서, 인덱스 멀티플렉서(325)는, 가상 어드레스(305)가 4K 페이지 크기를 반영한다면 가상 어드레스(310)의 비트 [18:12]를 입력하고, 가상 어드레스(305)가 32K 페이지 크기를 반영한다면 가상 어드레스(310)의 비트 [23, 20:15]를 입력하거나, 또는 가상 어드레스(305)가 2M 페이지 크기를 반영한다면 가상 어드레스(310)의 비트 [29:23]를 입력한다. 각각의 멀티플렉서(325)는 이 각각의 스큐잉 함수(320)에 기초하여 각각의 웨이(330', 330'' 및 330'''가 도시되고; 모든 인덱스는 집합적으로 330으로서 지칭됨)에 대해 사용할 3개의 가능한 인덱스 중 어느 하나를 선택한다.
각각의 웨이(305)는 멀티플렉서(325)에 의해 선택된 인덱스에 대응하는 엔트리의 페이로드를 판독 데이터(판독 데이터(335', 335'' 및 335''')가 도시되고; 모든 판독 데이터는 집합적으로 335로서 지칭됨)로서 출력한다. 판독 데이터(335) 레지스터가 비교 회로(340)에 의해 점검되어 TLB 히트가 발생하였는지(즉, 웨이 중 하나가 검색 어드레스와 매칭되는 변환을 하는지)를 결정한다. 비교 회로(340)는 TLB 히트가, 엔트리에 수용된 가상 어드레스 태그가 검색 가상 어드레스와 매칭되는지를 결정함으로써 발생하였는지, 그리고 판독 데이터(335)로서 판독된 엔트리의 페이지 크기가 스큐잉 함수에 의해 결정된 페이지 크기와 매칭되는지(예를 들어, 페이지 크기는 페이로드 내 페이지 크기 필드로 나타냄)를 결정한다. 히트가 발생하였다면, TLB 히트를 발생시킨 판독 데이터(335)가 선택되고, 그리고 가상 어드레스(310)에 대응하는 물리적 어드레스(345)가 TLB로부터 출력된다.
도 4는 도 3의 구성 가능한 스큐된 연상 TLB(300)를 사용하여 가상 어드레스를 물리적 메모리 어드레스로 변환시키기 위한 예시적인 방법(400)을 예시하는 흐름도이다.
가상 어드레스(310)가 TLB에 입력되는 조건(405)에서, 인덱스 멀티플렉서(325)가 가상 어드레스(310)의 비트(이 실시예에서, 비트 [22:21])의 하위세트에 기초하여, 단계(410)에서 설정되어 가상 어드레스(310)로부터 비트를 사용하여, 3개의 가능한 인덱스 중 하나를 입력하고, 인덱스는 각각의 페이지 크기에 대한 것이다.
비트의 범위는 각각의 페이지 크기에 대해 상이하다. 비트 [22:21]가, 가상 어드레스(310)가 제1 페이지 크기(이 실시예에서, 4K)에 대응한다는 것을 나타내는 조건(415)에서, 인덱스 멀티플렉서(325)는 단계(420)에서 가상 어드레스(310)의 비트(이 실시예에서, 비트 [18:12])의 제1 하위세트를 입력한다. 비트 [22:21]가, 가상 어드레스(310)가 제2 페이지 크기(이 실시예에서, 32K)에 대응한다는 것을 나타내는 조건(425)에서, 인덱스 멀티플렉서(325)는 단계(430)에서 가상 어드레스(310)의 비트(이 실시예에서, 비트 [23, 20:15])의 제2 하위세트를 입력한다. 비트 [22:21]가, 가상 어드레스(310)가 제3 페이지 크기(이 실시예에서, 2M)에 대응한다는 것을 나타내는 조건(435)에서, 인덱스 멀티플렉서(325)는 단계(440)에서 가상 어드레스(310)의 비트(이 실시예에서, 비트 [29:23])의 제3 하위세트를 입력한다.
인덱스 멀티플렉서(325)가 가상 어드레스(310)의 적절한 비트를 입력한 후, 각각의 멀티플렉서(325)가 이 각각의 스큐잉 함수(320)에 기초하여 입력 중 하나를 선택하여 각각의 웨이(305)에 대한 인덱스(330)를 생성한다(단계(445)). 임의의 인덱스(330)가 웨이(305) 중 하나 내 엔트리를 히트한다면, 대응하는 물리적 페이지 번호는 각각의 판독 데이터(335) 레지스터에 출력된다(단계(450)). 결과가 TLB 오류인 조건(455)에서, TLB(300)는 단계(460)에서 페이지 워크(page walk)를 개시시킨다. 결과가 TLB 히트라면, 가상 어드레스(310)에 대응하는 물리적 어드레스(345)는 가상 어드레스(310)의 페이지 오프셋 및 판독 데이터(335)로서 물리적 어드레스 출력에 기초하여 TLB로부터 출력된다(단계(465)).
TLB 오류가 발생한다면, TLB(300)는 대응하는 물리적 어드레스(345)를 공지된 방법을 통해, 예컨대, 페이지 테이블을 워킹함으로써 검색하고, 그리고 검색된 물리적 어드레스(345)를 교체 정책에 따라 웨이(305) 중 하나에 설치한다. 사용되는 교체 정책은 웨이(305) 간 지원된 페이지 크기의 분배에 의존할 수 있다. 예를 들어, 상이한 교체 정책은 4K 페이지가 8-웨이 연상 구성(예를 들어, 위에서 설명된 8-2-2 구성) 또는 6-웨이 연상 구성(예를 들어, 위에서 설명된 6-3-3 구성)으로 저장되는지에 따라 4K 페이지에 대해 사용될 수 있다.
하나의 실시예에서, 표준 거짓-최소-최근-사용(standard pseudo-least-recently-used)(거짓-LRU; 즉, 트리-LRU) 스킴은 어떤 웨이(305)가 8-웨이 연상 구성의 4K 페이지에 대해 최소 최근 사용되는 인덱스(330)에 대응하는 엔트리를 포함하는지를 결정하도록 구현된다. 하이브리드 LRU 스킴은 6-웨이 연상 구성의 4K 페이지에 대한 LRU 엔트리를 결정하도록 구현될 수 있다. 어떤 LRU 스킴을 사용할지는 구성 비트(310)를 사용하여 선택될 수 있다.
TLB(300)의 각각의 라인은 라인이 최근에 얼마나 액세스되었는지를 추적하기 위한 7비트(LRU 비트로서 지칭될 수 있음)의 연관된 시퀀스를 갖는다. 7개의 LRU 비트가 모든 웨이에서 동일한 인덱스에 적용되고, 그래서 이 실시예에서 LRU 비트의 128개의 군이 있다. LRU 비트의 각각의 세트는 어떤 웨이가 TLB(300)의 이 각각의 인덱스에 대해 최소 최근 사용되는지를 나타낸다. 적절한 LRU 스킴을 선택하여 LRU 비트에 적용함으로써, 동일한 LRU 비트는 어떤 웨이가 8-2-2 구성 또는 6-3-3 구성에 대해 최소 최근 사용되는지를 추적하도록 사용될 수 있다.
도 5는 TLB 오류를 처리하기 위한 예시적인 방법(500)을 예시하는 흐름도이다. TLB 오류가 발생하는 조건(510)(예를 들어, 도 4의 단계(455)에서와 같음)에서, TLB(300)는 단계(520)에서 공지된 방법에 따라 페이지 워크를 개시하여 물리적 어드레스를 검색한다. 구성 비트(310)가, 16개의 웨이(305) 중 8개의 웨이가 4k 페이지(즉, 위에서 설명된 8-2-2 구성)를 지원하도록 구성되는 것을 나타내는 조건(530)에서, 4K 페이지에 대해 구성되는 웨이(305) 중 최소 최근 사용 웨이가 단계(540)에서 LRU 논리를 사용하여 결정된다. 일부 구현예에서, LRU 논리는 거짓-LRU(즉, "트리" LRU) 논리를 포함한다. 구성 비트(310)가, 16개의 웨이(305) 중 6개의 웨이가 4k 페이지(즉, 위에서 설명된 6-3-3 구성)를 지원하도록 구성되는 것을 나타내는 조건(530)에서, 4K 페이지에 대해 구성되는 웨이(305) 중 최소 최근 사용 웨이가 단계(550)에서 LRU 논리를 사용하여 결정된다. 일부 구현예에서, 단계(550)에서 LRU 논리는 "트리" LRU와 "참" LRU 논리 둘 다를 포함하는 하이브리드 스킴을 따른다. 둘 다의 경우에, 페이지 워크 동안 검색된 물리적 어드레스는 단계(540) 또는 단계(550) 중 하나에서 결정되는 바와 같이, 4K 페이지에 대해 구성되는 웨이(305) 중 최소 최근 사용 웨이에 설치된다(단계(560)). 대응하는 절차가 또한 32K 및 2M 페이지 크기에 대해 사용된다.
많은 변동이 본 명세서의 개시내용에 기초하여 가능하다는 것이 이해되어야 한다. 특징부와 구성요소가 특정한 조합으로 위에서 설명되지만, 각각의 특징부 또는 구성요소는 다른 특징부 및 구성요소 없이 단독으로 또는 다른 특징부 및 구성요소를 사용하거나 또는 없이 다양한 조합으로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는 예로써, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(digital signal processor: DSP), 복수의 마이크로프로세서, DSP 코어와 관련된 하나 이상의 마이크로프로세서, 제어기, 마이크로제어, 응용 주문형 집적 회로(Application Specific Integrated Circuit: ASIC), 필드 프로그램 가능 게이트 어레이(Field Programmable Gate Array: FPGA) 회로, 임의의 다른 유형의 집적 회로(integrated circuit: IC) 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 하드웨어 기술 언어(hardware description language: HDL) 명령어 및 넷리스트를 포함한 다른 중간 데이터의 결과를 사용하는 제작 과정을 구성함으로써 제작될 수 있다(이러한 명령어는 컴퓨터 판독 가능 매체에 저장될 수 있음). 이러한 처리의 결과는 반도체 제작 과정에서 사용되어 대안의 양상을 구현하는 프로세서를 제작하는 마스크워크(maskwork)일 수 있다.
본 명세서에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터-판독 가능 기억장치 매체에 포함된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어에서 구현될 수 있다. 비일시적 컴퓨터-판독 가능 기억장치 매체의 예는 판독 전용 메모리(read only memory: ROM), 랜덤 액세스 메모리(random access memory: RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 자기 매체, 예컨대, 내부 하드 디스크 및 이동식 디스크, 광자기 매체, 및 광매체, 예컨대, CD-ROM 디스크 및 디지털 다목적 디스크(digital versatile disk: DVD)를 포함한다.

Claims (26)

  1. 스큐된 연상(skewed-associative) 변환 색인 버퍼(translation lookaside buffer: TLB)를 사용하여 가상 어드레스에 대응하는 물리적 메모리 내 어드레스를 결정하기 위한 방법으로서,
    구성 표시(configuration indication)를 수신하는 단계와;
    상기 TLB의 스큐잉 함수에 상기 구성 표시를 입력하는 단계와;
    상기 구성 표시에 기초하여, 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고, 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 상기 TLB의 복수의 웨이(way)의 제1 하위세트를 구성하는 단계 - 상기 제1 하위세트는 상기 구성 표시에 기초함 - 와;
    상기 구성 표시에 기초하여, 상기 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고, 상기 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 상기 TLB의 복수의 웨이의 제2 하위세트를 구성하는 단계 - 상기 제2 하위세트는 상기 구성 표시에 기초함 - 와;
    가상 어드레스를 수신하는 단계 - 상기 구성 표시는 상기 가상 어드레스의 일부가 아님 - 와; 그리고
    TLB 히트(hit)가 발생하는 조건에서 상기 가상 어드레스에 대응하는 물리적 어드레스를 출력하는 단계를 포함하는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 제2 하위세트에 포함된 웨이의 수에 대한 상기 제1 하위세트에 포함된 웨이의 수의 비는 상기 구성 표시에 기초하는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  4. 제1항에 있어서, 상기 복수의 웨이에 대한 인덱스는 상기 구성 표시에 기초하는 상기 스큐잉 함수에 의해 계산되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  5. 제4항에 있어서, 상기 가상 어드레스의 비트의 하위세트는 상기 스큐잉 함수에 입력되고, 그리고 상기 가상 어드레스의 어떤 비트가 상기 비트의 하위세트에 포함되는지는 상기 구성 표시에 기초하여 계산되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  6. 제1항에 있어서, 상기 구성 표시는 기본 입력 출력 시스템, 단절 퓨즈, 운영 시스템 또는 구성 레지스터로부터 수신되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  7. 스큐된 연상 변환 색인 버퍼(TLB)로서,
    가상 어드레스 및 상기 가상 어드레스의 일부가 아닌 구성 표시를 수신하고 상기 TLB의 스큐잉 함수에 상기 구성 표시를 입력하도록 구성된 입력 회로와;
    복수의 웨이 - 상기 복수의 웨이의 제1 하위세트는, 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록, 상기 구성 표시에 기초하여 구성되고, 상기 제1 하위세트는 상기 구성 표시에 기초하며, 그리고 상기 복수의 웨이의 제2 하위세트는, 상기 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 상기 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록, 상기 구성 표시에 기초하여 구성되고, 상기 제2 하위세트는 상기 구성 표시에 기초함 - 와;
    TLB 히트가 발생하는 조건에서 상기 가상 어드레스에 대응하는 물리적 어드레스를 출력하도록 구성된 출력 회로를 포함하는, 스큐된 연상 변환 색인 버퍼(TLB).
  8. 삭제
  9. 제7항에 있어서, 상기 제2 하위세트에 포함된 웨이의 수에 대한 상기 제1 하위세트에 포함된 웨이의 수의 비는 상기 구성 표시에 기초하는, 스큐된 연상 변환 색인 버퍼(TLB).
  10. 제7항에 있어서, 상기 복수의 웨이에 대한 인덱스는 상기 구성 표시에 기초하는 상기 스큐잉 함수에 의해 계산되는, 스큐된 연상 변환 색인 버퍼(TLB).
  11. 제10항에 있어서, 상기 가상 어드레스의 비트의 하위세트는 상기 스큐잉 함수에 입력되고, 그리고 상기 가상 어드레스의 어떤 비트가 상기 비트의 하위세트에 포함되는지는 상기 구성 표시에 기초하여 계산되는, 스큐된 연상 변환 색인 버퍼(TLB).
  12. 제7항에 있어서, 상기 구성 표시는 기본 입력 출력 시스템, 단절 퓨즈, 운영 시스템(operating system: OS) 또는 구성 레지스터로부터 수신되는, 스큐된 연상 변환 색인 버퍼(TLB).
  13. 스큐된 연상 변환 색인 버퍼(TLB)를 사용하여 가상 어드레스에 대응하는 물리적 메모리 내 어드레스를 결정하기 위한 방법으로서,
    수신기 회로를 사용하여, 가상 어드레스 및 상기 가상 어드레스의 일부가 아닌 구성 표시를 수신하는 단계;
    상기 TLB의 스큐잉 함수에 상기 구성 표시를 입력하는 단계;
    TLB 오류가 발생하는 조건에서 페이지 테이블로부터 상기 가상 어드레스에 대응하는 물리적 어드레스를 검색하는 단계; 및
    상기 물리적 어드레스의 적어도 일부를 상기 TLB의 복수의 웨이의 하위세트의 최소 최근 사용(least recently used: LRU) 웨이에 설치하는 단계를 포함하고;
    상기 하위세트는 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 구성된 상기 복수의 웨이의 수를 포함하고, 상기 하위세트는 상기 구성 표시에 기초하며, 그리고 상기 복수의 웨이의 제2 하위세트는, 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 상기 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 구성되고, 상기 제2 하위세트는 상기 구성 표시에 기초하며;
    상기 LRU 웨이는 교체 정책에 따라 결정되고, 그리고 상기 교체 정책은 상기 복수의 웨이 간 지원된 페이지 크기의 분배에 기초하여 결정되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  14. 삭제
  15. 제13항에 있어서, 상기 제2 하위세트에 포함된 웨이의 수에 대한 상기 하위세트에 포함된 상기 복수의 웨이의 수의 비는 상기 구성 표시에 기초하는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  16. 제13항에 있어서, 상기 복수의 웨이에 대한 인덱스는 상기 구성 표시에 기초하는 상기 스큐잉 함수에 의해 계산되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  17. 제16항에 있어서, 상기 가상 어드레스의 비트의 하위세트는 상기 스큐잉 함수에 입력되고; 상기 가상 어드레스의 어떤 비트가 상기 비트의 하위세트에 포함되는지는 상기 구성 표시에 기초하여 계산되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  18. 제13항에 있어서, 상기 구성 표시는 기본 입력 출력 시스템, 단절 퓨즈, 운영 시스템(OS) 또는 구성 레지스터로부터 수신되는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  19. 제13항에 있어서, 상기 구성 표시는 단일의 비트를 포함하는, 물리적 메모리 내 어드레스를 결정하기 위한 방법.
  20. 스큐된 연상 변환 색인 버퍼(TLB)로서,
    복수의 웨이;
    입력 회로로서,
    가상 어드레스 및 상기 가상 어드레스의 일부가 아닌 구성 표시를 수신하고;
    상기 TLB의 스큐잉 함수에 상기 구성 표시를 입력하며; 그리고
    TLB 오류가 발생하는 조건에서 페이지 테이블로부터 상기 가상 어드레스에 대응하는 물리적 어드레스를 검색하도록 구성되는, 상기 입력 회로; 및
    상기 물리적 어드레스의 적어도 일부를 상기 TLB의 복수의 웨이의 하위세트의 최소 최근 사용(LRU) 웨이에 설치하도록 구성된 교체 회로를 포함하고, 그리고
    상기 하위세트는 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 구성된 상기 복수의 웨이의 수를 포함하고, 상기 하위세트는 상기 구성 표시에 기초하며, 그리고 상기 복수의 웨이의 제2 하위세트는, 제2 페이지 크기에 대해 물리적 어드레스들을 인덱싱하고 상기 제1 페이지 크기에 대해 물리적 어드레스들을 인덱싱하지 않도록 구성되고, 상기 제2 하위세트는 상기 구성 표시에 기초하며;
    상기 LRU 웨이는 교체 정책에 따라 결정되고, 그리고 상기 교체 정책은 상기 복수의 웨이 간 지원된 페이지 크기의 분배에 기초하여 결정되는, 스큐된 연상 변환 색인 버퍼(TLB).
  21. 삭제
  22. 제20항에 있어서, 상기 제2 하위세트에 포함된 웨이의 수에 대한 상기 하위세트에 포함된 상기 복수의 웨이의 수의 비는 상기 구성 표시에 기초하는, 스큐된 연상 변환 색인 버퍼(TLB).
  23. 제20항에 있어서, 상기 복수의 웨이에 대한 인덱스는 상기 구성 표시에 기초하는 상기 스큐잉 함수에 의해 계산되는, 스큐된 연상 변환 색인 버퍼(TLB).
  24. 제23항에 있어서, 상기 가상 어드레스의 비트의 하위세트는 상기 스큐잉 함수에 입력되고; 상기 가상 어드레스의 어떤 비트가 상기 비트의 하위세트에 포함되는지는 상기 구성 표시에 기초하여 계산되는, 스큐된 연상 변환 색인 버퍼(TLB).
  25. 제20항에 있어서, 상기 구성 표시는 기본 입력 출력 시스템, 단절 퓨즈, 운영 시스템(OS) 또는 구성 레지스터로부터 수신되는, 스큐된 연상 변환 색인 버퍼(TLB).
  26. 제20항에 있어서, 상기 구성 표시는 단일의 비트를 포함하는, 스큐된 연상 변환 색인 버퍼(TLB).
KR1020197017812A 2016-12-23 2017-11-27 변환 색인 버퍼 내 구성 가능한 스큐된 연관성 KR102543675B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/389,955 2016-12-23
US15/389,955 US11106596B2 (en) 2016-12-23 2016-12-23 Configurable skewed associativity in a translation lookaside buffer
PCT/US2017/063337 WO2018118345A2 (en) 2016-12-23 2017-11-27 Configurable skewed associativity in a translation lookaside buffer

Publications (2)

Publication Number Publication Date
KR20190090389A KR20190090389A (ko) 2019-08-01
KR102543675B1 true KR102543675B1 (ko) 2023-06-14

Family

ID=62627079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017812A KR102543675B1 (ko) 2016-12-23 2017-11-27 변환 색인 버퍼 내 구성 가능한 스큐된 연관성

Country Status (6)

Country Link
US (1) US11106596B2 (ko)
EP (1) EP3559814A4 (ko)
JP (1) JP7449694B2 (ko)
KR (1) KR102543675B1 (ko)
CN (1) CN110073338B (ko)
WO (1) WO2018118345A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
US10372522B2 (en) * 2017-04-28 2019-08-06 Advanced Micro Devices, Inc. Memory protection in highly parallel computing hardware
US10915459B2 (en) 2018-10-29 2021-02-09 International Business Machines Corporation Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
CN113778520B (zh) * 2021-09-09 2022-09-30 海光信息技术股份有限公司 偏移预取方法、执行偏移预取的装置、计算设备和介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6715057B1 (en) * 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US6732238B1 (en) * 2001-06-08 2004-05-04 Tensilica, Inc. Set-associative cache memory having variable time decay rewriting algorithm
US6854046B1 (en) 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
US7284112B2 (en) * 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US8239657B2 (en) * 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8364900B2 (en) * 2008-02-12 2013-01-29 Oracle America, Inc. Pseudo-LRU cache line replacement for a high-speed cache
US8473684B2 (en) 2009-12-22 2013-06-25 International Business Machines Corporation Delayed replacement of cache entries
US8386749B2 (en) * 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US20130097387A1 (en) 2011-10-14 2013-04-18 The Board Of Trustees Of The Leland Stanford Junior University Memory-based apparatus and method
US9208102B2 (en) * 2013-01-15 2015-12-08 Qualcomm Incorporated Overlap checking for a translation lookaside buffer (TLB)
KR20160065773A (ko) * 2014-10-08 2016-06-09 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 1차 캐시와 오버플로 선입 선출 캐시를 구비하는 캐시 시스템
JP6207766B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド ヘテロジニアス置換ポリシーを用いるセット・アソシエイティブ・キャッシュ・メモリ
US9830275B2 (en) * 2015-05-18 2017-11-28 Imagination Technologies Limited Translation lookaside buffer
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10540290B2 (en) * 2016-04-27 2020-01-21 Ati Technologies Ulc Method and apparatus for translation lookaside buffer with multiple compressed encodings
US10037283B2 (en) * 2016-08-12 2018-07-31 Advanced Micro Devices, Inc. Updating least-recently-used data for greater persistence of higher generality cache entries

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Misel-Myrto 외 3인, "Prediction-Based Superpage-Friendly TLB Designs"(2015) 1부.*

Also Published As

Publication number Publication date
JP2020514859A (ja) 2020-05-21
EP3559814A4 (en) 2020-07-29
CN110073338B (zh) 2024-03-08
KR20190090389A (ko) 2019-08-01
CN110073338A (zh) 2019-07-30
WO2018118345A3 (en) 2018-08-02
WO2018118345A2 (en) 2018-06-28
US11106596B2 (en) 2021-08-31
EP3559814A2 (en) 2019-10-30
JP7449694B2 (ja) 2024-03-14
US20180181496A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US7089398B2 (en) Address translation using a page size tag
US7739477B2 (en) Multiple page size address translation incorporating page size prediction
KR102543675B1 (ko) 변환 색인 버퍼 내 구성 가능한 스큐된 연관성
US10740247B2 (en) Method for accessing entry in translation lookaside buffer TLB and processing chip
JP6724043B2 (ja) キャッシュタグ圧縮のための方法および装置
US10915459B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US10740248B2 (en) Methods and systems for predicting virtual address
CN102498477A (zh) Tlb预取
US20140189192A1 (en) Apparatus and method for a multiple page size translation lookaside buffer (tlb)
US20190205261A1 (en) Systems, methods, and apparatuses for patching pages
US20210042146A1 (en) Systems, Methods, and Apparatuses for Resource Monitoring
KR20240070630A (ko) 의사 lru 보충 에이지 정보로 재참조 간격 예측(rrip)
US10936507B2 (en) System, apparatus and method for application specific address mapping
KR20060120242A (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US10146698B2 (en) Method and apparatus for power reduction in a multi-threaded mode
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
US20230101038A1 (en) Deterministic mixed latency cache
US20240220416A1 (en) Prioritized unified tlb lookup with variable page sizes
US20160124859A1 (en) Computing system with tiered fetch mechanism and method of operation thereof

Legal Events

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