KR20160016737A - 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 - Google Patents

다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 Download PDF

Info

Publication number
KR20160016737A
KR20160016737A KR1020157013830A KR20157013830A KR20160016737A KR 20160016737 A KR20160016737 A KR 20160016737A KR 1020157013830 A KR1020157013830 A KR 1020157013830A KR 20157013830 A KR20157013830 A KR 20157013830A KR 20160016737 A KR20160016737 A KR 20160016737A
Authority
KR
South Korea
Prior art keywords
page
bits
linear address
cache
page size
Prior art date
Application number
KR1020157013830A
Other languages
English (en)
Other versions
KR101787851B1 (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 KR20160016737A publication Critical patent/KR20160016737A/ko
Application granted granted Critical
Publication of KR101787851B1 publication Critical patent/KR101787851B1/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
    • 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/681Multi-level TLB, e.g. microTLB and main TLB
    • Y02B60/1225
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)를 구현하기 위한 장치 및 방법. 예를 들어, 일 실시예에 따른 방법은 선형 어드레스로부터 비트들의 제1 그룹 및 비트들의 제2 그룹을 판독하는 단계; 상기 선형 어드레스가 큰 페이지 크기 또는 작은 페이지 크기와 관련되는지를 결정하는 단계; 상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트를 식별하는 단계; 및 상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 제1 캐시 웨이(cache way)를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 제2 캐시 웨이를 식별하는 단계를 포함한다.

Description

다중 페이지 크기 변환 색인 버퍼(TLB)용 장치 및 방법{APPARATUS AND METHOD FOR A MULTIPLE PAGE SIZE TRANSLATION LOOKASIDE BUFFER (TLB)}
본 발명은 일반적으로 컴퓨터 프로세서의 분야에 관한 것이다. 구체적으로, 본 발명은 다중 페이지 크기 TLB용 장치 및 방법에 관한 것이다.
메모리 어드레싱 스킴들은 종종 페이징이라고 하는 기술을 이용하여 가상 메모리를 구현한다. 페이징을 이용할 때, 가상 어드레스 공간(즉, 프로세서의 실행 유닛에 의해 또는 프로세서의 세그먼트화 유닛과 연계하여 실행 유닛에 의해 생성되는 어드레스 공간)은 페이지들이라고 하는 고정 크기의 블록들로 분할되며, 이들 각각은 시스템 상에서 이용 가능한 임의의 물리 어드레스(즉, 하드웨어 메모리 위치에 대응하는 어드레스) 상에 맵핑될 수 있다. 통상적인 컴퓨터 시스템에서는, 메모리 관리 유닛이 페이징 알고리즘(들)에 따라 하나 이상의 페이지 테이블을 이용하여 현재의 가상 대 물리 어드레스 맵핑들을 결정 및 유지한다.
때때로 선형 어드레스(LA)로도 지칭되는 가상 어드레스를 프로세서의 실행 유닛으로부터 수신할 때, 통상적인 메모리 관리 유닛들은 먼저 페이지 테이블(들)을 이용하여 LA를 그에 대응하는 물리 어드레스로 변환한다. 페이지 테이블(들)은 종종 메인 메모리 내에 저장되므로, 페이지 테이블들에 액세스하는 것은 시간 소모적이다. 페이징 변환들을 고속화하기 위해, 소정의 컴퓨터 시스템들은 가장 최근에 사용된 변환들을 변환 색인 버퍼, 즉 TLB(프로세서 상에 종종 위치하는 더 빠른 메모리) 내에 저장한다. 변환을 필요로 하는 LA의 생성 시에, 메모리 관리 유닛은 페이지 테이블(들)에 액세스하기 전에 먼저 TLB에서 변환을 검색한다. 변환이 TLB 내에 저장된 경우, TLB "히트"가 발생하였다고 하며, TLB는 변환을 제공한다. 그러나, 변환이 TLB 내에 저장되지 않은 경우, TLB "미스"가 발생하였다고 하며, 페이지 테이블들에 액세스하고 변환을 제공하기 위해 페이지 테이블 워커(walker)가 호출된다.
전통적인 TLB 캐시들은 각각의 페이지 크기(PS)에 대한 개별 어레이를 갖는다. 인텔 아키텍처(IA)의 경우, 지원되는 페이지 크기들은 4KB, 2MB/4MB 및 1GB이며, 이들 각각은 하나 이상의 전용 TLB 어레이를 갖는다. 각각의 페이지 크기는 상이한 수의 변환된 그리고 변환되지 않은 LA 비트들을 가지므로, 세트 비트들 및 태그 비트들의 형성은 페이지 크기마다 상이하다. 예컨대, 도 8에 도시된 바와 같이, 16 세트 4K TLB 어레이의 세트 비트들(801)은 LA[15:12]일 것이고, 태그 비트들(802)은 LA[::16]일 것이고, 오프셋 비트들(800)은 LA[11:0]일 것이다. 이와 달리, 16 세트 2M TLB 어레이의 경우, 세트 비트들(811)은 LA[24:21]일 것이고, 태그 비트들(812)은 LA[::25]일 것이고, 오프셋 비트들(810)은 LA[20:0]일 것이다(논리적으로, 더 큰 페이지 크기를 어드레싱하기 위해서는 더 큰 오프셋(810)이 필요할 것이다).
위의 설명은 페이지 크기마다 개별 어레이를 구현하는 것이 당연한 이유 및 TLB 어레이들을 통합하는 것이 중요한 이유를 설명한다. 통합 어레이의 다른 문제는 어느 페이지 크기가 각각의 엔트리 내에 캐싱되는지를 어떻게 식별하는가이다.
개별 어레이 구성의 주요 문제는 평균 TLB 사용에 비해 영역 및 전력의 낭비이다. 예를 들어, 많은 작업 부하에서, 실행되는 애플리케이션들은 많은 4K 페이지를 사용하고, 2M 페이지는 거의 또는 전혀 사용하지 않는다. 이러한 시나리오에서, 4K 어레이는 채워지고, 크기가 불충분할 수 있는 반면, 2M 어레이는 거의 또는 완전히 빈다.
아래의 도면들과 관련된 아래의 상세한 설명으로부터 본 발명의 더 나은 이해가 얻어질 수 있다. 도면들에서:
도 1a는 본 발명의 실시예들에 따른, 예시적인 순차 파이프라인 및 예시적인 레지스터 리네이밍 비순차 발행/실행 파이프라인 양자를 나타내는 블록도이다.
도 1b는 본 발명의 실시예들에 따른, 프로세서 내에 포함되는 순차 아키텍처 코어의 일 실시예 및 예시적인 레지스터 리네이밍 비순차 발행/실행 아키텍처 코어 양자를 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른, 통합 메모리 제어기 및 그래픽을 갖는 단일 코어 프로세서 및 다중 코어 프로세서의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 시스템의 블록도를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 제2 시스템의 블록도를 나타낸다.
도 5는 본 발명의 일 실시예에 따른 제3 시스템의 블록도를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 시스템 온 칩(SoC)의 블록도를 나타낸다.
도 7은 본 발명의 실시예들에 따른, 소스 명령어 세트 내의 이진 명령어들을 타겟 명령어 세트 내의 이진 명령어들로 변환하기 위한 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다.
도 8은 본 발명의 일 실시예에서 사용되는 선형 어드레스들에 대한 상이한 크기들을 나타낸다.
도 9는 본 발명의 일 실시예에 따른 시스템 아키텍처를 나타낸다.
도 10a-b는 본 발명의 일 실시예에서 사용되는 태그 어레이, 데이터 어레이 및 관련 논리를 나타낸다.
도 11은 본 발명의 일 실시예에 따른 방법을 나타낸다.
아래의 설명에서는 설명의 목적으로, 후술하는 본 발명의 실시예들의 충분한 이해를 제공하기 위해 다수의 특정 상세들이 설명된다. 그러나, 본 발명의 실시예들은 이러한 특정 상세들 중 일부 없이도 실시될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 다른 예들에서는 본 발명의 실시예들의 기본 원리들을 불명확하게 하는 것을 방지하기 위해 공지 구조들 및 장치들은 블록도 형태로 도시된다.
예시적인 프로세서 아키텍처들 및 데이터 타입들
도 1a는 본 발명의 실시예들에 따른, 예시적인 순차 파이프라인 및 예시적인 레지스터 리네이밍 비순차 발행/실행 파이프라인 양자를 나타내는 블록도이다. 도 1b는 본 발명의 실시예들에 따른, 프로세서 내에 포함되는 순차 아키텍처 코어의 일 실시예 및 예시적인 레지스터 리네이밍 비순차 발행/실행 아키텍처 코어 양자를 나타내는 블록도이다. 도 1a-b 내의 실선 박스들은 순차 파이프라인 및 순차 코어를 나타내는 반면, 점선 박스들의 옵션 부가는 레지스터 리네이밍 비순차 발행/실행 파이프라인 및 코어를 나타낸다. 순차 양태가 비순차 양태의 서브세트인 것으로 가정하여, 비순차 양태가 설명될 것이다.
도 1a에서, 프로세서 파이프라인(100)은 페치 스테이지(102), 길이 디코드 스테이지(104), 디코드 스테이지(106), 할당 스테이지(108), 리네이밍 스테이지(110), (디스패치 또는 발행으로도 알려진) 스케줄링 스테이지(112), 레지스터 판독/메모리 판독 스테이지(114), 실행 스테이지(116), 라이트 백/메모리 기록 스테이지(118), 예외 처리 스테이지(122) 및 커미트 스테이지(124)를 포함한다.
도 1b는 실행 엔진 유닛(150)에 결합된 프론트엔드 유닛(130)을 포함하는 프로세서 코어(190)를 나타내며, 이들 양자는 메모리 유닛(170)에 결합된다. 코어(190)는 축소 명령어 세트 컴퓨팅(RISC) 코어, 복합 명령어 세트 컴퓨팅(CISC) 코어, 매우 긴 명령어 워드(VLIW) 코어 또는 하이브리드 또는 대안 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(190)는 예를 들어 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, 범용 컴퓨팅 그래픽 처리 유닛(GPGPU) 코어, 그래픽 코어 등과 같은 특수 목적 코어일 수 있다.
프론트엔드 유닛(130)은 디코더 유닛(140)에 결합되는 명령어 페치 유닛(138)에 결합되는 명령어 변환 색인 버퍼(TLB)(136)에 결합되는 명령어 캐시 유닛(134)에 결합되는 분기 예측 유닛(132)을 포함한다. 디코드 유닛(140)(또는 디코더)은 명령어들을 디코딩하고, 출력으로서 하나 이상의 마이크로 연산, 마이크로 코드 엔트리 포인트, 마이크로 명령어, 다른 명령어 또는 다른 제어 신호를 생성하며, 이들은 본래의 명령어들로부터 디코딩되거나, 그들을 반영하거나, 그들로부터 도출된다. 디코드 유닛(140)은 다양한 상이한 메커니즘들을 이용하여 구현될 수 있다. 적절한 메커니즘들의 예들은 탐색표, 하드웨어 구현, 프로그래밍 가능 논리 어레이(PLA), 마이크로코드 판독 전용 메모리(ROM) 등을 포함하지만 이에 한정되지 않는다. 일 실시예에서, 코어(190)는 (예를 들어, 디코드 유닛(140) 내에 또는 프론트엔드 유닛(130) 내에) 소정의 매크로 명령어들에 대한 마이크로코드를 저장하는 마이크로코드 ROM 또는 다른 매체를 포함한다. 디코드 유닛(140)은 실행 엔진 유닛(150) 내의 리네임/할당기 유닛(152)에 결합된다.
실행 엔진 유닛(150)은 리타이어먼트 유닛(154)에 결합되는 리네임/할당기 유닛(152) 및 하나 이상의 스케줄러 유닛(들)(156)의 세트를 포함한다. 스케줄러 유닛(들)(156)은 예약 스테이션, 중앙 명령어 윈도 등을 포함하는 임의 수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(156)은 물리 레지스터 파일(들) 유닛(들)(158)에 결합된다. 물리 레지스터 파일(들) 유닛들(158) 각각은 하나 이상의 물리 레지스터 파일을 나타내며, 이들 중 상이한 것들은 스칼라 정수, 스칼라 부동 소수점, 압축 정수, 압축 부동 소수점, 벡터 정수, 벡터 부동 소수점, 상태(예로서, 실행될 다음 명령어의 어드레스인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 타입을 저장한다. 일 실시예에서, 물리 레지스터 파일(들) 유닛(158)은 벡터 레지스터 유닛, 기록 마스크 레지스터 유닛 및 스칼라 레지스터 유닛을 포함한다. 이러한 레지스터 유닛들은 아키텍처 벡터 레지스터, 벡터 마스크 레지스터 및 범용 레지스터를 제공할 수 있다. 물리 레지스터 파일(들) 유닛(들)(158)은 레지스터 리네이밍 및 비순차 실행이 (예로서, 재배열 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여; 미래 파일(들), 이력 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여; 레지스터 맵들 및 레지스터들의 풀을 이용하여; 기타 등등을 이용하여) 구현될 수 있는 다양한 방식들을 나타내기 위해 리타이어먼트 유닛(154)에 의해 오버랩된다. 리타이어먼트 유닛(154) 및 물리 레지스터 파일(들) 유닛(들)(158)은 실행 클러스터(들)(160)에 결합된다. 실행 클러스터(들)(160)는 하나 이상의 실행 유닛(162)의 세트 및 하나 이상의 메모리 액세스 유닛(164)의 세트를 포함한다. 실행 유닛들(162)은 다양한 타입의 데이터(예로서, 스칼라 부동 소수점, 압축 정수, 압축 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 다양한 연산들(예로서, 시프트, 가산, 감산, 승산)을 수행할 수 있다. 일부 실시예들은 특정 기능들 또는 기능들의 세트들에 전용화된 다수의 실행 유닛을 포함할 수 있지만, 다른 실시예들은 모든 기능들을 모두 수행하는 단 하나의 실행 유닛 또는 다수의 실행 유닛을 포함할 수 있다. 스케줄러 유닛(들)(156), 물리 레지스터 파일(들) 유닛(들)(158) 및 실행 클러스터(들)(160)는 아마도 복수 개인 것으로 도시되는데, 그 이유는 소정 실시예들이 소정의 타입의 데이터/연산들에 대해 개별 파이프라인들(예로서, 스칼라 정수 파이프라인, 스칼라 부동 소수점/압축 정수/압축 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인, 및/또는 그들 자신의 스케줄러 유닛, 물리 레지스터 파일(들) 유닛 및/또는 실행 클러스터를 갖자 갖는 메모리 액세스 파이프라인 - 개별 메모리 액세스 파이프라인의 경우에, 이러한 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(들)(164)을 갖는 소정 실시예들이 구현됨)을 생성하기 때문이다. 개별 파이프라인들이 사용되는 경우에, 이러한 파이프라인들 중 하나 이상은 비순차 발행/실행 파이프라인일 수 있고, 나머지는 순차 발행/실행 파이프라인일 수 있다는 것도 이해해야 한다.
메모리 액세스 유닛들(164)의 세트는 레벨 2(L2) 캐시 유닛(176)에 결합되는 데이터 캐시 유닛(174)에 결합되는 데이터 TLB 유닛(172)을 포함하는 메모리 유닛(170)에 결합된다. 일 실시예에서, 메모리 액세스 유닛들(164)은 로드 유닛, 어드레스 저장 유닛 및 데이터 저장 유닛을 포함할 수 있고, 이들 각각은 메모리 유닛(170) 내의 데이터 TLB 유닛(172)에 결합된다. 명령어 캐시 유닛(134)은 메모리 유닛(170) 내의 레벨 2(L2) 캐시 유닛(176)에 더 결합된다. L2 캐시 유닛(176)은 하나 이상의 다른 레벨의 캐시에, 결국에는 메인 메모리에 결합된다.
예를 들어, 예시적인 레지스터 리네이밍 비순차 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(100)을 구현할 수 있는데, 즉 1) 명령어 페치(138)는 페치 및 길이 디코딩 스테이지들(102, 104)을 수행하고; 2) 디코드 유닛(140)은 디코드 스테이지(106)를 수행하고; 3) 리네임/할당기 유닛(152)은 할당 스테이지(108) 및 리네이밍 스테이지(110)를 수행하고; 4) 스케줄러 유닛(들)(156)은 스케줄 스테이지(112)를 수행하고; 5) 물리 레지스터 파일(들) 유닛(들)(158) 및 메모리 유닛(170)은 레지스터 판독/메모리 판독 스테이지(114)를 수행하고; 실행 클러스터(160)는 실행 스테이지(116)를 수행하고; 6) 메모리 유닛(170) 및 물리 레지스터 파일(들) 유닛(들)(158)은 라이트 백/메모리 기록 스테이지(118)를 수행하고; 7) 다양한 유닛들은 예외 처리 스테이지(122)와 관련될 수 있으며; 8) 리타이어먼트 유닛(154) 및 물리 레지스터 파일(들) 유닛(들)(158)은 커미트 스테이지(124)를 수행한다.
코어(190)는 본 명세서에서 설명되는 명령어(들)를 포함하는 하나 이상의 명령어 세트(예로서, (더 새로운 버전들에 따라 추가된 일부 확장들을 갖는) x86 명령어 세트; CA 서니베일의 MIPS 테크놀리지스의 MIPS 명령어 세트; CA 서니베일의 ARM 홀딩스의 (NEON과 같은 옵션인 추가 확장들을 갖는) ARM 명령어 세트)를 지원할 수 있다. 일 실시예에서, 코어(190)는 압축 데이터 명령어 세트 확장(예로서, AVX1, AVX2, 및 후술하는 소정 형태의 범용 벡터 프렌들리 명령어 포맷(U=0 및/또는 U=1))을 지원하기 위한 논리를 포함하며, 따라서 많은 멀티미디어 애플리케이션에 의해 사용되는 연산들이 압축 데이터를 이용하여 수행되는 것을 가능하게 한다.
코어는 (연산들 또는 스레드들의 둘 이상의 병렬 세트를 실행하는) 멀티스레딩을 지원할 수 있으며, 시간 슬라이싱 멀티스레딩, (단일 물리 코어가 물리 코어가 동시에 멀티스레딩하는 스레드들 각각에 대한 논리 코어를 제공하는) 동시 멀티스레딩 또는 이들의 조합(예로서, 인텔(등록상표) 하이퍼스레딩 기술에서와 같이 시간 슬라이싱 페치 및 디코딩에 이어지는 동시 멀티스레딩)을 포함하는 다양한 방식으로 그렇게 할 수 있다는 것을 이해해야 한다.
레지스터 리네이밍은 비순차 실행과 관련하여 설명되지만, 레지스터 리네이밍은 순차 아키텍처에서 사용될 수 있다는 것을 이해해야 한다. 도시된 프로세서의 실시예는 개별 명령어 및 데이터 캐시 유닛들(134/174) 및 공유 L2 캐시 유닛(176)도 포함하지만, 대안 실시예들은 예를 들어 레벨 1(L1) 내부 캐시 또는 다수의 레벨의 내부 캐시와 같은 명령어들 및 데이터 양자에 대한 단일 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 내부 캐시와 코어 및/또는 프로세서 밖에 있는 외부 캐시의 조합을 포함할 수 있다. 대안으로서, 모든 캐시가 코어 및/또는 프로세서 밖에 존재할 수 있다.
도 2는 본 발명의 실시예들에 따른, 둘 이상의 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서(200)의 블록도이다. 도 2 내의 실선 박스들은 단일 코어(202A), 시스템 에이전트(210), 하나 이상의 버스 제어기 유닛(216)의 세트를 갖는 프로세서(200)를 나타내는 반면, 점선 박스들의 옵션 추가는 다수의 코어(202A-N), 시스템 에이전트 유닛(210) 내의 하나 이상의 통합 메모리 제어기 유닛(들)(214)의 세트 및 특수 목적 논리(208)를 갖는 대안 프로세서(200)를 나타낸다.
따라서, 프로세서(200)의 상이한 구현들은 1) (하나 이상의 코어를 포함할 수 있는) 통합 그래픽 및/또는 과학 (처리량) 논리인 특수 목적 논리(208) 및 하나 이상의 범용 코어(예로서, 범용 순차 코어, 범용 비순차 코어, 이들의 조합)인 코어들(202A-N)을 갖는 CPU; 2) 주로 그래픽 및/또는 과학(처리량)을 위해 의도된 다수의 특수 목적 코어인 코어들(202A-N)을 갖는 코프로세서; 및 3) 다수의 범용 순차 코어인 코어들(202A-N)을 갖는 코프로세서를 포함할 수 있다. 따라서, 프로세서(200)는 범용 프로세서, 코프로세서 또는 특수 목적 프로세서, 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, 범용 그래픽 처리 유닛(GPGPU), (30개 이상의 코어를 포함하는) 고처리량 다중 통합 코어(MIC) 코프로세서, 내장 프로세서 등일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(200)는 하나 이상의 기판의 일부일 수 있고/있거나, 예를 들어 BiCMOS, CMOS 또는 NMOS와 같은 임의의 다양한 프로세스 기술을 이용하여 하나 이상의 기판 상에 구현될 수 있다.
메모리 계층 구조는 코어들 내의 하나 이상의 레벨의 캐시, 한 세트의 또는 하나 이상의 공유 캐시 유닛(206) 및 통합 메모리 제어기 유닛들(214)의 세트에 결합된 외부 메모리(미도시)를 포함한다. 공유 캐시 유닛들(206)의 세트는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시와 같은 하나 이상의 중간 레벨 캐시, 최종 레벨 캐시(LLC) 및/또는 이들의 조합들을 포함할 수 있다. 일 실시예에서 링 기반 상호접속 유닛(212)이 통합 그래픽 논리(208), 공유 캐시 유닛들(206)의 세트, 및 시스템 에이전트 유닛(210)/통합 메모리 제어기 유닛(들)(214)을 상호접속하지만, 대안 실시예들은 그러한 유닛들을 상호접속하기 위한 임의 수의 공지된 기술들을 이용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛(206)과 코어들(202A-N) 사이에 일관성이 유지된다.
일부 실시예들에서, 코어들(202A-N) 중 하나 이상은 멀티스레딩이 가능하다. 시스템 에이전트(210)는 코어들(202A-N)을 조정 및 조작하는 컴포넌트들을 포함한다. 시스템 에이전트 유닛(210)은 예를 들어 전력 제어 유닛(PCU) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(202A-N) 및 통합 그래픽 논리(208)의 전력 상태를 조정하는 데 필요한 논리 및 컴포넌트들이거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부적으로 접속된 디스플레이를 구동하기 위한 것이다.
코어들(202A-N)은 아키텍처 명령어 세트와 관련하여 동종이거나 이종일 수 있는데, 즉 코어들(202A-N) 중 둘 이상이 동일한 명령어 세트를 실행할 수 있는 반면, 다른 코어들은 단지 그러한 명령어 세트의 서브세트 또는 상이한 명령어 세트를 실행할 수 있다. 일 실시예에서, 코어들(202A-N)은 이종이며, 후술하는 "작은" 코어들뿐만 아니라 "큰" 코어들도 포함한다.
도 3-6은 예시적인 컴퓨터 아키텍처들의 블록도들이다. 랩탑, 데스크탑, 핸드헬드 PC, 개인 휴대 단말기, 엔지니어링 워크스테이션, 서버, 네트워크 장치, 네트워크 허브, 스위치, 내장 프로세서, 디지털 신호 프로세서(DSP), 그래픽 장치, 비디오 게임 장치, 셋톱 박스, 마이크로컨트롤러, 셀폰, 휴대용 미디어 플레이어, 핸드헬드 장치 및 다양한 다른 전자 장치에 대한 이 분야에 공지된 다른 시스템 설계들 및 구성들도 적합하다. 일반적으로, 본 명세서에서 개시되는 바와 같은 프로세서 및/또는 다른 실행 논리를 포함할 수 있는 다양한 시스템들 또는 전자 장치들이 일반적으로 적합하다.
이제, 도 3을 참조하면, 본 발명의 일 실시예에 따른 시스템(300)의 블록도가 도시된다. 시스템(300)은 제어기 허브(320)에 결합되는 하나 이상의 프로세서(310, 315)를 포함할 수 있다. 일 실시예에서, 제어기 허브(320)는 (개별 칩들 상에 존재할 수 있는) 그래픽 메모리 제어기 허브(GMCH)(390) 및 입출력 허브(IOH)(350)를 포함하며, GMCH(390)는 메모리(340) 및 코프로세서(345)에 결합되는 메모리 및 그래픽 제어기들을 포함하고, IOH(350)는 입출력(I/O) 장치들(360)을 GMCH(390)에 결합한다. 대안으로서, 메모리 및 그래픽 제어기들 중 하나 또는 양자는 (본 명세서에서 설명되는 바와 같이) 프로세서 내에 통합되고, 메모리(340) 및 코프로세서(345)는 프로세서(310)에 직접 결합되며, 제어기 허브(320)는 IOH(350)를 갖는 단일 칩이다.
추가 프로세서들(315)의 옵션 특성이 도 3에 점선들로 도시된다. 각각의 프로세서(310, 315)는 본 명세서에서 설명되는 처리 코어들 중 하나 이상을 포함할 수 있으며, 프로세서(200)의 소정 버전일 수 있다.
메모리(340)는 예를 들어 동적 랜덤 액세스 메모리(DRAM), 상변화 메모리(PCM) 또는 이들의 조합일 수 있다. 적어도 하나의 실시예에서, 제어기 허브(320)는 프론트사이드 버스(FSB)와 같은 멀티-드롭 버스, 고속 경로 상호접속(QPI)과 같은 점대점 인터페이스 또는 유사한 접속(395)을 통해 프로세서(들)(310, 315)와 통신한다.
일 실시예에서, 코프로세서(345)는 예를 들어 고처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장 프로세서 등과 같은 특수 목적 프로세서이다. 일 실시예에서, 제어기 허브(320)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성 등을 포함하는 장점 규준들의 스펙트럼과 관련하여 물리 자원들(310, 315) 사이에는 다양한 차이가 존재할 수 있다.
일 실시예에서, 프로세서(310)는 일반 타입의 데이터 처리 연산들을 제어하는 명령어들을 실행한다. 명령어들 내에는 코프로세서 명령어들이 내장될 수 있다. 프로세서(310)는 이러한 코프로세서 명령어들을 부착된 코프로세서(345)에 의해 실행되어야 하는 타입인 것으로 인식한다. 따라서, 프로세서(310)는 코프로세서 버스 또는 다른 상호접속 상에서 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서(345)에 대해 발행한다. 코프로세서(들)(345)는 코프로세서 명령어들을 수신하고, 수신된 코프로세서 명령어들을 실행한다.
이제, 도 4를 참조하면, 본 발명의 일 실시예에 따른 제1의 더 구체적인 예시적인 시스템(400)의 블록도가 도시된다. 도 4에 도시된 바와 같이, 멀티프로세서 시스템(400)은 점대점 상호접속 시스템이며, 점대점 상호접속(450)을 통해 결합되는 제1 프로세서(470) 및 제2 프로세서(480)를 포함한다. 프로세서들(470, 480) 각각은 프로세서(200)의 소정 버전일 수 있다. 본 발명의 일 실시예에서, 프로세서들(470, 480)은 각각 프로세서들(310, 315)이고, 코프로세서(438)는 코프로세서(345)이다. 다른 실시예에서, 프로세서들(470, 480)은 각각 프로세서(310) 및 코프로세서(345)이다.
프로세서들(470, 480)은 각각 통합 메모리 제어기(IMC) 유닛들(472, 482)을 포함하는 것으로 도시된다. 프로세서(470)는 그의 버스 제어기 유닛들의 일부로서 점대점(P-P) 인터페이스들(476, 478)도 포함하며, 유사하게 제2 프로세서(480)는 P-P 인터페이스들(486, 488)을 포함한다. 프로세서들(470, 480)은 P-P 인터페이스 회로들(478, 488)을 이용하여 점대점(P-P) 인터페이스(450)를 통해 정보를 교환할 수 있다. 도 4에 도시된 바와 같이, IMC들(472, 482)은 프로세서들을 각각의 메모리, 즉 각각의 프로세서에 국지적으로 부착된 메인 메모리의 부분들일 수 있는 메모리(432) 및 메모리(434)에 결합한다.
프로세서들(470, 480)은 각각 점대점 인터페이스 회로들(476, 494, 486, 498)을 이용하여 개별 P-P 인터페이스들(452, 454)을 통해 칩셋(490)과 정보를 교환할 수 있다. 칩셋(490)은 옵션으로서 고성능 인터페이스(439)를 통해 코프로세서(438)와 정보를 교환할 수 있다. 일 실시예에서, 코프로세서(438)는 예를 들어 고처리량 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장 프로세서 등과 같은 특수 목적 프로세서이다.
공유 캐시(미도시)가 프로세서 내에 포함될 수 있거나, 양 프로세서들 밖에 위치하지만 P-P 상호접속을 통해 프로세서들과 접속될 수 있으며, 따라서 양 프로세서들의 로컬 캐시 정보는 프로세서가 저전력 모드로 배치되는 경우에 공유 캐시 내에 저장될 수 있다.
칩셋(490)은 인터페이스(496)를 통해 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 제1 버스(416)는 주변 컴포넌트 상호접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 발명의 범위는 그에 한정되지 않는다.
도 4에 도시된 바와 같이, 다양한 I/O 장치들(414)은 제1 버스(416)를 제2 버스(420)에 결합하는 버스 브리지(418)와 함께 제1 버스(416)에 결합될 수 있다. 일 실시예에서, 코프로세서, 고처리량 MIC 프로세서, GPGPU, (예로서, 그래픽 가속기 또는 디지털 신호 처리(DSP) 유닛과 같은) 가속기, 필드 프로그래머블 게이트 어레이 또는 임의의 다른 프로세서와 같은 하나 이상의 추가 프로세서(들)(415)가 제1 버스(416)에 결합된다. 일 실시예에서, 제2 버스(420)는 로우 핀 카운트(LPC) 버스일 수 있다. 예를 들어 키보드 및/또는 마우스(422), 통신 장치(427) 및 일 실시예에서 명령어들/코드 및 데이터(430)를 포함할 수 있는 디스크 드라이브 또는 대용량 저장 장치와 같은 저장 유닛(428)을 포함하는 다양한 장치들이 제2 버스(420)에 결합될 수 있다. 또한, 오디오 I/O(424)가 제2 버스(420)에 결합될 수 있다. 다른 아키텍처들도 가능하다는 점에 유의한다. 예를 들어, 도 4의 점대점 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제, 도 5를 참조하면, 본 발명의 일 실시예에 따른 제2의 더 구체적인 예시적인 시스템(500)의 블록도가 도시된다. 도 4 및 5 내의 동일한 요소들은 동일한 참조 번호들을 가지며, 도 4의 소정 양태들은 도 5의 다른 양태들을 불명확하게 하지 않기 위해 도 5로부터 생략되었다.
도 5는 프로세서들(470, 480)이 각각 통합 메모리 및 I/O 제어 논리("CL")(472, 482)를 포함할 수 있다는 것을 나타낸다. 따라서, CL(472, 482)은 통합 메모리 제어기 유닛들을 포함하고, I/O 제어 논리를 포함한다. 도 5는 메모리들(432, 434)이 CL(472, 482)에 결합될 뿐만 아니라, I/O 장치들(514)도 제어 논리(472, 482)에 결합된다는 것을 나타낸다. 레거시 I/O 장치들(515)이 칩셋(490)에 결합된다.
이제, 도 6을 참조하면, 본 발명의 일 실시예에 따른 SoC(600)의 블록도가 도시된다. 도 2 내의 유사한 요소들은 동일한 참조 번호들을 갖는다. 또한, 점선 박스들은 더 진보된 SoC들 상의 옵션 특징들이다. 도 6에서, 상호접속 유닛(들)(602)은 하나 이상의 코어(202A-N)의 세트 및 공유 캐시 유닛(들)(206)을 포함하는 애플리케이션 프로세서(610); 시스템 에이전트 유닛(210); 버스 제어기 유닛(들)(216): 통합 메모리 제어기 유닛(들)(214); 통합 그래픽 논리, 이미지 프로세서, 오디오 프로세서 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서(620)의 세트; 정적 랜덤 액세스 메모리(SRAM) 유닛(630); 직접 메모리 액세스(DMA) 유닛(632); 및 하나 이상의 외부 디스플레이들에 결합하기 위한 디스플레이 유닛(640)에 결합된다. 일 실시예에서, 코프로세서(들)(620)는 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 고처리량 MIC 프로세서, 내장 프로세서 등과 같은 특수 목적 프로세서를 포함한다.
본 명세서에서 개시되는 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어 또는 그러한 구현 접근법들의 조합에서 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함하는) 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그래밍 가능 시스템들 상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 4에 도시된 코드(430)와 같은 프로그램 코드는 본 명세서에서 설명되는 기능들을 수행하고 출력 정보를 생성하기 위해 입력 명령어들에 적용될 수 있다. 출력 정보는 하나 이상의 출력 장치에 공지 방식으로 적용될 수 있다. 본원의 목적을 위해, 처리 시스템은 예를 들어 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 처리 시스템과 통신하기 위해 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 필요한 경우에 어셈블리 또는 기계 언어로도 구현될 수 있다. 사실상, 본 명세서에서 설명되는 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 어느 경우에나, 언어는 컴파일되거나 해석되는 언어일 수 있다.
적어도 일 실시예의 하나 이상의 양태는 기계에 의해 판독될 때 기계로 하여금 본 명세서에서 설명되는 기술들을 수행하기 위한 논리를 제조하게 하는 프로세서 내의 다양한 논리를 나타내는 기계 판독 가능 매체 상에 저장된 표현 명령어들에 의해 구현될 수 있다. "IP 코어들"로 알려진 그러한 표현들은 유형의 기계 판독 가능 매체 상에 저장되고, 다양한 고객들 또는 제조 설비들에 제공되어, 논리 또는 프로세서를 실제로 제조하는 제조 기계들 내에 로딩될 수 있다.
그러한 기계 판독 가능 저장 매체는 하드 디스크, 플로피 디스크, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 컴팩트 디스크 재기록 가능(CD-RW) 및 광자기 디스크를 포함하는 임의의 다른 타입의 디스크, 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM), 상변화 메모리(PCM)와 같은 반도체 장치, 자기 또는 광학 카드 또는 전자 명령어들을 저장하는 데 적합한 임의의 다른 타입의 매체와 같은 저장 매체를 포함하는, 기계 또는 장치에 의해 제조 또는 형성되는 물건들의 비일시적 유형 배열들을 포함할 수 있지만, 이에 한정되지 않는다.
따라서, 본 발명의 실시예들은 본 명세서에서 설명되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 하드웨어 기술 언어(HDL)와 같은 명령어들을 포함하거나 설계 데이터를 포함하는 비일시적이고 유형적인 기계 판독 가능 매체도 포함한다. 그러한 실시예들은 프로그램 제품들로도 지칭될 수 있다.
일부 예들에서는, 명령어 변환기를 이용하여, 명령어를 소스 명령어 세트로부터 타겟 명령어 세트로 변환할 수 있다. 예를 들어, 명령어 변환기는 명령어를 코어에 의해 처리될 하나 이상의 다른 명령어로 (정적 이진 변환, 동적 컴파일을 포함하는 동적 이진 변환을 이용하여) 변환하거나, 모핑(morphing)하거나, 에뮬레이팅(emulating)하거나, 다른 방식으로 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합에서 구현될 수 있다. 명령어 변환기는 프로세서 상에, 프로세서 밖에, 또는 일부는 프로세서 상에, 일부는 프로세서 밖에 위치할 수 있다.
도 7은 본 발명의 실시예들에 따른, 소스 명령어 세트 내의 이진 명령어들을 타겟 명령어 세트 내의 이진 명령어들로 변환하기 위한 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다. 도시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안으로서 명령어 변환기는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 다양한 조합에서 구현될 수 있다. 도 7은 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서에 의해 고유하게 실행될 수 있는 x86 이진 코드(706)를 생성하기 위해 하이 레벨 언어(702)의 프로그램이 x86 컴파일러(704)를 이용하여 컴파일될 수 있다는 것을 나타낸다. 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서는 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 결과를 달성하기 위해 (1) 인텔 x86 명령어 세트 코어의 명령어 세트의 실질적인 부분 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서 상에서 실행되는 것을 목표로 하는 애플리케이션들 또는 다른 소프트웨어의 객체 코드 버전들을 적절히 실행 또는 처리함으로써 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 기능들을 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(704)는 추가적인 링크 처리를 갖거나 갖지 않고서 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서 상에서 실행될 수 있는 x86 이진 코드(706)(예로서, 객체 코드)를 생성하도록 동작할 수 있는 컴파일러를 나타낸다. 유사하게, 도 7은 하이 레벨 언어(702)의 프로그램이 적어도 하나의 x86 명령어 세트 코어(714)를 갖지 않는 프로세서(예로서, CA 서니베일의 MIPS 테크놀로지스의 MIPS 명령어 세트를 실행하고/하거나 CA 서니베일의 ARM 홀딩스의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 고유하게 실행될 수 있는 대안 명령어 세트 이진 코드(710)를 생성하기 위해 대안 명령어 세트 컴파일러(708)를 이용하여 컴파일될 수 있다는 것을 나타낸다. 명령어 변환기(712)는 x86 이진 코드(706)를 x86 명령어 세트 코어(714)를 갖지 않는 프로세서에 의해 고유하게 실행될 수 있는 코드로 변환하는 데 사용된다. 이러한 변환된 코드는 대안 명령어 세트 이진 코드(710)와 동일할 가능성이 없는데, 그 이유는 이를 행할 수 있는 명령어 변환기를 제조하기가 어렵기 때문이며; 그러나 변환된 코드는 일반적인 연산을 달성하고, 대안 명령어 세트로부터의 명령어들로 구성될 것이다. 따라서, 명령어 변환기(712)는 에뮬레이션, 시뮬레이션 또는 임의의 다른 프로세스를 통해 x86 명령어 세트 프로세서 또는 코어를 갖지 않는 프로세서 또는 다른 전자 장치가 x86 이진 코드(706)를 실행하는 것을 가능하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다.
다중 페이지 크기 TLB용 장치 및 방법
후술하는 본 발명의 실시예들은 둘 이상의 페이지 크기를 갖는 동일 TLB 어레이를 공유하기 위한 효율적인 장치 및 방법을 제공하며, 따라서 임의의 TLB 엔트리는 임의의 페이지 크기를 포함할 수 있다. 아래의 설명은 하나의 디스패치 포트 파이프라인에 대한 2개의 특정 페이지 크기, 즉 4K(작은 페이지 크기) 및 2M(큰 페이지 크기)의 사용에 집중되지만, 본 발명의 기본 원리들은 임의 수의 페이지 크기를 이용하여 구현될 수 있다. 예를 들어, 본 발명의 기본 원리들은 상이한 페이지 크기들의 임의의 조합과 함께 사용될 수 있다. 이러한 실시예들은 둘 이상의 디스패치 포트 파이프라인을 이용하여 구현될 수도 있다.
도 9는 명령어들을 실행하기 위한 실행 유닛(904), 메인 메모리(910)(예로서, 랜덤 액세스 메모리)에 대한 액세스를 제공하기 위한 메모리 관리 유닛(MMU)(920) 및 실행 유닛(904) 및 MMU(920)에 의한 사용을 위해 데이터 및 어드레스들을 저장하기 위한 레지스터 파일(901)을 포함하는 예시적인 프로세서 또는 코어(910)를 나타낸다. 이러한 프로세서 컴포넌트들에 의해 수행되는 기본 기능들은 이 분야의 기술자들에 의해 잘 이해되며, 본 발명의 기본 원리들을 불명확하게 하지 않기 위해 여기서는 상세히 설명되지 않을 것이다.
MMU(920)는 가상 대 물리 어드레스 변환들을 캐싱하기 위한 변환 색인 버퍼(TLB)(922) 및 TLB 미스에 응답하여(즉, 필요한 어드레스 변환이 TLB(922) 내에 저장되지 않은 때) 메모리(910) 내의 페이지 테이블(912)로부터 어드레스 변환들에 액세스하기 위한 페이지 미스 핸들러(921)를 포함할 수 있다. 예를 들어, 일 실시예에서, PMH(921)는 TLB 미스 시에 페이지 테이블에 액세스하기 위해 페이지 워크 연산들을 구현한다. PMH(921)는 유한 상태 기계(FSM)를 실행하여 페이지 테이블(912)에 액세스하고, 액세스된 페이지의 허가들 및 속성들을 검사할 수 있다.
도시된 바와 같이, TLB(922)의 일 실시예는 다수의 페이지 크기에 대한 변환들을 저장하기 위한 본 명세서에서 설명되는 기술들을 구현하기 위해 태그 어레이(925), 선택 논리(926) 및 데이터 어레이(927)를 포함한다. 일 실시예에서, 태그 어레이(925)는 상이한 페이지 크기들 각각에 대한 판독/콘텐츠 어드레스 가능 메모리(CAM) 포트를 갖는다. 이러한 방식으로, 각각의 판독 포트는 내부 어드레스(LA)의 상이한 부분들로부터 그의 세트 비트들을 취한다.
예를 들어, 도 8을 다시 참조하면, 하나의 판독 포트가 LA[15:12]로부터 세트 비트들을 판독할 수 있고, 다른 판독 포트가 LA[24:21]로부터 세트 비트들을 판독할 수 있다. 따라서, (예로서, 4K 페이지에 대한) "작은 페이지 판독 포트"는 LA[12]를 세트 비트들의 LSB로서 취하는 반면, (예로서, 2M 페이지에 대한) "큰 페이지 판독 포트"는 LA[21]을 세트 비트들의 LSB로서 취한다. 게다가, 판독 포트들 각각은 상이한 태그 비트들을 판독할 수 있으며, 따라서 태그 비트들은 모두 세트 비트들보다 높은 LA 비트들이다. 작은 페이지 판독 포트에 대해 태그 비트들은 LA[::16]이며, 2M 판독 포트에 대해 태그 비트들은 LA[::25]이다. 큰 페이지 CAM 포트는 작은 페이지 CAM 포트보다 적은 수의 태그 비트들을 갖는다는 점에 유의한다.
일 실시예에서, 태그 어레이(925) 내의 각각의 엔트리는 큰 페이지와 작은 페이지를 구별하기 위해 "큰 페이지"라고 하는 새로운 비트를 포함한다. 엔트리가 유효할 때, 이 비트는 엔트리가 큰 페이지 변환(예로서, 큰 페이지 비트 = 1) 또는 작은 페이지 변환(예로서, 큰 페이지 비트 = 0)을 유지하고 있는지를 지시한다. 어레이로부터 판독/비교가 존재할 때, 각각의 포트는 "큰 페이지" 비트를 이용하여 그의 히트 결과를 적격화한다. 큰 판독 포트에 대해, 히트는 "큰 페이지" == 1인 경우에만 참이다. 작은 판독 포트에 대해, 히트는 "큰 페이지" == 0인 경우에만 참이다.
일 실시예에서, 위의 기술들은 태그 어레이(925), 데이터 어레이(927), 및 2개의 어레이 사이에 결합되고 OR 게이트(1001) 및 멀티플렉서(1002)를 포함하는 선택 논리(926)의 부분들을 나타내는 도 10a에 도시된 장치를 이용하여 구현된다. 구체적으로, 태그 어레이(925)는 작은 페이지 CAM 포트에 대해 작은 세트 비트들의 판독/비교를 수행하고, 큰 페이지 CAM 포트에 대해 큰 세트 비트들의 판독/비교를 수행한다. 작은 또는 큰 세트 비트들을 이용하여 "히트"가 발생하는 경우, 히트는 "큰 페이지" 비트를 이용하여 적격화된다. 큰 페이지 히트가 큰 세트 비트들을 이용하여 검출되고, 큰 페이지 비트가 1로 설정되는 경우, 0이 아닌 n비트 큰 히트 벡터 신호가 생성되고, OR 게이트(1001)에 인가된다. (큰 페이지 히트를 지시하는) 큰 히트 벡터 신호의 n개의 비트 중 임의의 비트 내의 임의의 0이 아닌 값은 작은 세트 비트들과 큰 세트 비트들 사이에서 선택하도록 멀티플렉서(1002)를 제어하는 OR 게이트(1001)로부터 1의 큰 히트 값이 출력되게 한다. 선택된 큰 또는 작은 세트 비트들은 데이터 어레이(927)에 인가된다(즉, 데이터 어레이의 캐시 세트들 중 하나를 선택한다). 따라서, OR 게이트(1001)로부터 출력되는 1의 큰 히트 값은 멀티플렉서(1002)가 큰 세트 비트들을 선택하게 하며, OR 게이트(1001)로부터 출력되는 0의 큰 히트 값은 멀티플렉서(1002)가 작은 세트 비트들을 선택하게 한다. 어느 경우에나, 세트 비트들은 TLB 데이터 어레이(927) 내의 특정 캐시 세트를 선택하는 데 사용된다. 대안 구현에서, 작은 히트 벡터는 1001과 같은 OR 게이트에 인가될 수 있으며, 출력은 멀티플렉서(1002)에 대한 선택 신호로서 사용될 수 있다(즉, 0이 아닌 값에 대해 작은 세트 비트들을 선택한다).
따라서, 태그 어레이(925)는 정규 TLB에서와 같이 하나의 기록 포트만을 필요로 한다. 기록 포트는 TLB 내에 기록되는 페이지 크기에 따라 작은 또는 큰 세트 비트들을 선택한다. 또한, "큰 페이지" 비트 값은 기록되는 페이지의 크기에 따라 기록된다.
일 실시예에서, 데이터 어레이(927)는 전력 및 영역을 절약하기 위해 그리고 데이터 어레이를 임의의 통상적인 TLB 데이터 어레이와 동일하게 하기 위해 하나의 판독 포트를 갖는다. 그 때문에, (후술하는 바와 같이 웨이 선택 신호들로 사용되는) 태그 히트 벡터들 및 데이터 어레이 판독을 위한 세트 비트들은 조정되는 것이 필요하다. 일 실시예에서, 조정 정책은 다음과 같이 구현된다. 큰 판독 포트 내에 히트가 존재하는 경우, 큰 세트 비트들이 데이터 어레이를 판독하는 데 사용되고, 큰 판독 포트 히트 벡터가 사용된다. 그렇지 않은 경우, 작은 세트 비트들 및 작은 판독 포트 히트 벡터가 사용된다.
이것은 멀티플렉서들(1005-1006) 및 OR 게이트(1001)를 포함하는 선택 논리(926)의 일 실시예의 추가 상세들을 나타내는 도 10b에 일반적으로 도시된다. 태그 어레이(925)로부터의 작은 히트 벡터 및 큰 히트 벡터는 OR 게이트(1001)로부터 출력되는 큰 히트 신호에 응답하여 제어되는 멀티플렉서(1006)에 입력들로서 인가된다. 따라서, 큰 페이지 히트가 존재하는 경우, 큰 히트 출력은 1일 것이고, 멀티플렉서(1006)로 하여금 큰 히트 벡터를 선택하게 할 것이며, 작은 페이지 히트가 존재하는 경우, OR 게이트(1001)로부터의 큰 히트 출력은 0일 것이고, 멀티플렉서(1006)로 하여금 작은 히트 벡터를 선택하게 할 것이다.
일 실시예에서, n비트 작은/큰 히트 벡터는 데이터 어레이(927)로부터 판독될 캐시 웨이를 식별한다. 예를 들어, 데이터 어레이(927)가 4웨이 캐시로서 구현되는 경우, 웨이 선택 히트 벡터는 4비트 신호를 포함할 수 있으며, 각각의 비트는 데이터 어레이(927)의 상이한 웨이를 식별할 수 있다(예로서, 웨이 1 = 0010, 웨이 0 = 0001 등). 따라서, 큰/작은 히트 벡터는 큰/작은 세트 비트들을 통해 선택되는 캐시 세트와 관련된 데이터 어레이(927)의 웨이들 중 하나를 선택하도록 멀티플렉서(1004)에 인가된다.
다른 멀티플렉서(1005)는 OR 게이트(1001)로부터의 큰 히트 신호에 기초하여 물리 어드레스(PA) 비트 [20:12]를 선택하는 데 사용된다. 큰 페이지 히트가 존재하는 경우, 이들 비트는 (비트 [11:0]과 동일한) 선형 어드레스 비트 LA[20:12]로부터 취해진다. 작은 페이지 히트가 존재하는 경우, 이들 비트는 (비트 [::21]과 동일한) 데이터 어레이로부터 취해진다.
위의 구성은 임의의 필요한 페이지 크기에 대한 TLB 내의 임의의 엔트리의 사용을 가능하게 한다. 이러한 방식으로, TLB는 응용들의 요구에 따라 채워진다. 둘 이상이 아니라 하나의 어레이가 존재하므로 큰 영역 및 전력 절약이 존재한다. 비용은 비교적 적으며, 태그 어레이 내의 여분의 판독/CAM 포트 및 현재 캐싱되고 있는 페이지 크기를 지시하기 위한 엔트리당 하나의 비트가 필요하다. 다른 비용은 데이터 어레이 판독에서의 지연 또는 대안으로서 또한 데이터 어레이에 판독 포트를 추가하는 것이다. 새로운 멀티플렉서들의 비용은 무시 가능하다.
대안 실시예에서, 데이터 어레이는 태그 어레이에 대해 전술한 것과 동일한 방식으로 데이터 어레이에 판독 포트를 추가함으로써 태그 어레이와 함께 판독될 수 있다. 이러한 방식으로, 각각의 페이지 크기는 그 자신의 판독 포트를 구비한다. 포트들 사이의 조정은 단지 히트 벡터들에 대해 또는 작은 그리고 큰 웨이 선택 멀티플렉서들 뒤에서 지연되고 수행된다. 이러한 구성에서, 영역 및 전력은 더 크지만, 개별 어레이들을 사용하는 것보다는 여전히 훨씬 더 작다.
게다가, 어레이는 세트들 중 일부가 통합되는 반면에 세트들 중 일부가 하나의 페이지 크기에만 전용화되도록 분할될 수 있다. 예를 들어, 세트들의 절반은 작은 그리고 큰 페이지들에 대해 공유될 수 있으며, 세트들 중 나머지 절반은 작은 페이지들에 대해서만 전용화될 수 있다. 이러한 방식으로, 여분의 판독 포트의 비용은 통합되지 않은 세트들에 대해 절약된다.
대안으로서 또는 추가로, 어레이는 웨이들 중 일부가 통합되는 반면에 웨이들 중 일부가 하나의 페이지 크기에만 전용화되도록 분할될 수 있다. 예를 들어, 웨이들의 절반은 작은 그리고 큰 페이지들에 대해 공유될 수 있으며, 웨이들 중 나머지 절반은 작은 페이지들에 대해서만 전용화될 수 있다. 이러한 방식으로, 여분의 판독 포트의 비용은 통합되지 않은 웨이들에 대해 절약된다.
본 발명의 일 실시예에 따른 방법이 도 11에 도시된다. 1100에서, 큰 그리고 작은 세트 엔트리들 양자가 (예로서, 전술한 TLB와 같은) 어레이로부터 판독된다. 1101에서, 큰 페이지 히트 벡터 및 작은 페이지 히트 벡터 양자가 생성된다. 1102에서, (예로서, 1101로부터의 히트 벡터들에 기초하여) 큰 또는 작은 페이지 히트가 존재하는지에 대한 결정이 행해진다. 큰 페이지 히트가 존재하는 경우, 1103에서 큰 세트 비트들을 사용하여 캐시 데이터 어레이로부터 세트를 선택하고, 1105에서 큰 페이지 히트 벡터를 사용하여 데이터 어레이로부터 웨이를 선택한다. 1102에서 작은 페이지 히트가 결정되는 경우, 1104에서 작은 세트 비트들을 사용하여 캐시 데이터 어레이로부터 세트를 선택하고, 1106에서 작은 페이지 히트 벡터를 사용하여 데이터 어레이로부터 웨이를 선택한다. 어느 경우에나, 1107에서, 소정의 변환된 또는 변환되지 않은 비트들이 결국 작은 또는 큰 히트가 존재하는지에 따라 사용될 수 있다. 예를 들어, 전술한 바와 같이, 일 실시예에서, 변환되지 않은 비트 LA[20:12]는 큰 히트에 대해 사용될 수 있으며, 데이터 어레이(927)로부터 판독된 변환된 비트 PA[20:12]는 작은 히트에 대해 사용될 수 있다. 1108에서, 물리 어드레스 변환이 선택된 세트 및 웨이에서 캐시 데이터 어레이로부터 판독된다.
전술한 본 발명의 실시예들은 큰 비트 벡터를 통해 선택을 제어하지만(도 10a-b 참조), 동일한 원리들이 작은 히트 벡터 신호를 이용하여 적용될 수 있다. 예를 들어, 작은 히트 벡터는 작은 페이지 히트에 응답하여 (큰 히트 신호에 대해 전술한 바와 같이) 작은 히트 신호를 생성하기 위해 OR 게이트에 인가될 수 있다. 이어서, 이러한 작은 히트 신호는 큰 히트 신호에 대해 전술한 바와 같이 멀티플렉서들(1002, 1005, 1006)을 제어하는 데 사용될 수 있다. 게다가, 본 발명의 실시예들은 특정 수의 캐시 세트들 및 웨이들과 관련하여 위에서 설명되지만, 본 발명의 기본 원리들은 임의의 특정 캐시 구성으로 한정되지 않는다. 마지막으로, TLB의 상황 내에서 설명되지만, 본 발명의 기본 원리들은 임의 타입의 캐시를 이용하여 구현될 수 있다.
본 발명의 실시예들은 전술한 다양한 단계들을 포함할 수 있다. 단계들은 범용 또는 특수 목적 프로세서로 하여금 단계들을 수행하게 하는 데 사용될 수 있는 기계 실행 가능 명령어들 내에 구현될 수 있다. 대안으로서, 이러한 단계들은 단계들을 수행하기 위한 하드와이어드 논리를 포함하는 특정 하드웨어 컴포넌트들에 의해 또는 프로그래밍된 컴퓨터 컴포넌트들과 맞춤형 하드웨어 컴포넌트들의 임의의 조합에 의해 수행될 수 있다.
본 명세서에서 설명되는 바와 같이, 명령어들은 소정의 연산들을 수행하도록 구성되거나 사전 결정된 기능을 갖는 주문형 집적 회로들(ASIC들)과 같은 하드웨어의 특정 구성들 또는 비일시적 컴퓨터 판독 가능 매체 내에 구현되는 메모리 내에 저장되는 소프트웨어 명령어들을 지칭할 수 있다. 따라서, 도면들에 도시된 기술들은 하나 이상의 전자 장치(예로서, 말단 스테이션, 네트워크 요소 등) 상에 저장되고 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 그러한 전자 장치들은 비일시적 컴퓨터 기계 판독 가능 저장 매체(예로서, 자기 디스크; 광 디스크; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 장치; 상변환 메모리) 및 일시적 컴퓨터 기계 판독 가능 통신 매체(예로서, 전기, 광, 음향 또는 다른 형태의 전파 신호 - 예로서, 반송파, 적외선 신호, 디지털 신호 등)와 같은 컴퓨터 기계 판독 가능 매체를 이용하여 코드 및 데이터를 저장하고, (내부적으로 그리고/또는 네트워크를 통해 다른 전자 장치들과) 통신한다. 게다가, 그러한 전자 장치들은 통상적으로 하나 이상의 저장 장치(비일시적 기계 판독 가능 저장 매체), 사용자 입출력 장치(예로서, 키보드, 터치스크린 및/또는 디스플레이) 및 네트워크 접속과 같은 하나 이상의 다른 컴포넌트에 결합되는 하나 이상의 프로세서의 세트를 포함한다. 프로세서들의 세트와 다른 컴포넌트들의 결합은 통상적으로 하나 이상의 버스 및 (버스 제어기라고도 하는) 브리지를 통해 이루어진다. 저장 장치 및 네트워크 트래픽을 운반하는 신호들은 각각 하나 이상의 기계 판독 가능 저장 매체 및 기계 판독 가능 통신 매체를 나타낸다. 따라서, 주어진 전자 장치의 저장 장치는 통상적으로 그 전자 장치의 하나 이상의 프로세서의 세트 상에서 실행할 코드 및/또는 데이터를 저장한다. 물론, 본 발명의 일 실시예의 하나 이상의 요소는 소프트웨어, 펌웨어 및/또는 하드웨어의 상이한 조합들을 이용하여 구현될 수 있다. 이러한 상세한 설명 전반에서는, 설명의 목적으로, 본 발명의 충분한 이해를 제공하기 위해 다수의 특정 상세들이 설명되었다. 그러나, 본 발명은 이러한 특정 상세들 중 일부 없이도 실시될 수 있다는 것이 이 분야의 기술자에게 명백할 것이다. 소정 예들에서는, 본 발명의 주제를 불명확하게 하지 않기 위해 공지 구조들 및 기능들은 상세히 설명되지 않았다. 따라서, 본 발명의 범위 및 사상은 아래의 청구항들과 관련하여 판단되어야 한다.

Claims (24)

  1. 선형 어드레스로부터 비트들의 제1 그룹 및 비트들의 제2 그룹을 판독하는 단계;
    상기 선형 어드레스가 큰 페이지 크기 또는 작은 페이지 크기와 관련되는지를 결정하는 단계;
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트를 식별하는 단계; 및
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 제1 캐시 웨이(cache way)를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 제2 캐시 웨이를 식별하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 세트 및 웨이는 변환 색인 버퍼(TLB) 내의 엔트리를 식별하는 방법.
  3. 제2항에 있어서,
    결정하는 단계는 비트들의 상기 제1 또는 제2 그룹들을 이용하여 상기 TLB 내의 엔트리를 식별하는 단계 및 상기 선형 어드레스가 큰 페이지 또는 작은 페이지와 관련되는지를 지시하는 비트를 상기 TLB 엔트리로부터 판독하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    어떠한 TLB 엔트리도 식별되지 않을 때 TLB 미스(miss)가 발생한 것으로 결정하는 단계; 및
    메모리 내의 페이지 테이블로부터 상기 선형 어드레스에 대한 물리 어드레스 변환을 판독하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 TLB 내에 상기 물리 어드레스 변환을 저장하는 단계; 및
    상기 선형 어드레스와 관련된 페이지가 작은 페이지 크기 또는 큰 페이지 크기인지를 지시하도록 상기 TLB 엔트리 내의 비트를 설정하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 선형 어드레스와 관련된 페이지가 큰 페이지 크기인 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트에서 상기 변환을 찾고(locate), 또는 상기 선형 어드레스와 관련된 페이지가 작은 페이지 크기인 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트에서 상기 변환을 찾는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 제1 캐시 세트 및 상기 제2 캐시 세트는 동일한 세트인 방법.
  8. 제1항에 있어서,
    상기 제1 캐시 웨이 및 상기 제2 캐시 웨이는 동일한 웨이인 방법.
  9. 선형 어드레스로부터 비트들의 제1 그룹 및 비트들의 제2 그룹을 판독하기 위한 제1 논리;
    상기 선형 어드레스가 큰 페이지 크기 또는 작은 페이지 크기와 관련되는지를 결정하기 위한 제2 논리;
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트를 식별하기 위한 제3 논리; 및
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 제1 캐시 웨이를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 제2 캐시 웨이를 식별하기 위한 제4 논리
    를 포함하는 프로세서.
  10. 제9항에 있어서,
    상기 세트 및 웨이는 변환 색인 버퍼(TLB) 내의 엔트리를 식별하는 프로세서.
  11. 제10항에 있어서,
    결정하는 것은 비트들의 상기 제1 또는 제2 그룹들을 이용하여 상기 TLB 내의 엔트리를 식별하는 것 및 상기 선형 어드레스가 큰 페이지 또는 작은 페이지와 관련되는지를 지시하는 비트를 상기 TLB 엔트리로부터 판독하는 것을 포함하는 프로세서.
  12. 제9항에 있어서,
    어떠한 TLB 엔트리도 식별되지 않을 때 TLB 미스가 발생하였다는 결정 시에 메모리 내의 페이지 테이블로부터 상기 선형 어드레스에 대한 물리 어드레스 변환을 판독하기 위한 페이지 미스 핸들러를 더 포함하는 프로세서.
  13. 제12항에 있어서,
    상기 TLB 내에 상기 물리 어드레스 변환을 저장하고, 상기 선형 어드레스와 관련된 페이지가 작은 페이지 크기 또는 큰 페이지 크기인지를 지시하도록 상기 TLB 엔트리 내의 비트를 설정하는 프로세서.
  14. 제13항에 있어서,
    상기 선형 어드레스와 관련된 페이지가 큰 페이지 크기인 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트에서 상기 변환을 찾고, 또는 상기 선형 어드레스와 관련된 페이지가 작은 페이지 크기인 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트에서 상기 변환을 찾는 프로세서.
  15. 제9항에 있어서,
    상기 제1 캐시 세트 및 상기 제2 캐시 세트는 동일한 세트인 프로세서.
  16. 제9항에 있어서,
    상기 제1 캐시 웨이 및 상기 제2 캐시 웨이는 동일한 웨이인 프로세서.
  17. 시스템으로서,
    프로그램 코드 및 데이터를 저장하기 위한 메모리;
    하나 이상의 주변 장치와 통신하기 위한 입출력(IO) 통신 인터페이스;
    상기 시스템을 네트워크에 통신적으로 결합하기 위한 네트워크 통신 인터페이스; 및
    프로세서
    를 포함하고,
    상기 프로세서는
    선형 어드레스로부터 비트들의 제1 그룹 및 비트들의 제2 그룹을 판독하기 위한 제1 논리;
    상기 선형 어드레스가 큰 페이지 크기 또는 작은 페이지 크기와 관련되는지를 결정하기 위한 제2 논리;
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트를 식별하기 위한 제3 논리; 및
    상기 선형 어드레스가 제1 페이지 크기와 관련되는 경우에 제1 캐시 웨이를 식별하고, 상기 선형 어드레스가 제2 페이지 크기와 관련되는 경우에 제2 캐시 웨이를 식별하기 위한 제4 논리
    를 포함하는 시스템.
  18. 제17항에 있어서,
    상기 세트 및 웨이는 변환 색인 버퍼(TLB) 내의 엔트리를 식별하는 시스템.
  19. 제17항에 있어서,
    결정하는 것은 비트들의 상기 제1 또는 제2 그룹들을 이용하여 상기 TLB 내의 엔트리를 식별하는 것 및 상기 선형 어드레스가 큰 페이지 또는 작은 페이지와 관련되는지를 지시하는 비트를 상기 TLB 엔트리로부터 판독하는 것을 포함하는 시스템.
  20. 제17항에 있어서,
    어떠한 TLB 엔트리도 식별되지 않을 때 TLB 미스가 발생하였다는 결정 시에 메모리 내의 페이지 테이블로부터 상기 선형 어드레스에 대한 물리 어드레스 변환을 판독하기 위한 페이지 미스 핸들러를 더 포함하는 시스템.
  21. 제20항에 있어서,
    상기 TLB 내에 상기 물리 어드레스 변환을 저장하고, 상기 선형 어드레스와 관련된 페이지가 작은 페이지 크기 또는 큰 페이지 크기인지를 지시하도록 상기 TLB 엔트리 내의 비트를 설정하는 시스템.
  22. 제21항에 있어서,
    상기 선형 어드레스와 관련된 페이지가 큰 페이지 크기인 경우에 비트들의 상기 제1 그룹을 이용하여 제1 캐시 세트에서 상기 변환을 찾고, 또는 상기 선형 어드레스와 관련된 상기 페이지가 작은 페이지 크기인 경우에 비트들의 상기 제2 그룹을 이용하여 제2 캐시 세트에서 상기 변환을 찾는 시스템.
  23. 제17항에 있어서,
    상기 제1 캐시 세트 및 상기 제2 캐시 세트는 동일한 세트인 시스템.
  24. 제17항에 있어서,
    상기 제1 캐시 웨이 및 상기 제2 캐시 웨이는 동일한 웨이인 시스템.
KR1020157013830A 2012-12-28 2013-06-20 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 KR101787851B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,411 2012-12-28
US13/730,411 US20140189192A1 (en) 2012-12-28 2012-12-28 Apparatus and method for a multiple page size translation lookaside buffer (tlb)
PCT/US2013/046910 WO2014105151A1 (en) 2012-12-28 2013-06-20 Apparatus and method for a multiple page size translation lookaside buffer (tlb)

Publications (2)

Publication Number Publication Date
KR20160016737A true KR20160016737A (ko) 2016-02-15
KR101787851B1 KR101787851B1 (ko) 2017-10-18

Family

ID=51018605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157013830A KR101787851B1 (ko) 2012-12-28 2013-06-20 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법

Country Status (4)

Country Link
US (1) US20140189192A1 (ko)
KR (1) KR101787851B1 (ko)
CN (1) CN104937568B (ko)
WO (1) WO2014105151A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018009283A1 (en) * 2016-07-03 2018-01-11 Intel Corporation Buffering graphics tiled resource translations in a data port controller tlb

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9864698B2 (en) * 2013-11-04 2018-01-09 International Business Machines Corporation Resolving cache lookup of large pages with variable granularity
WO2016003646A1 (en) * 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US10061712B2 (en) 2016-05-10 2018-08-28 Oracle International Corporation Virtual memory page mapping overlays
KR20180012565A (ko) * 2016-07-27 2018-02-06 에스케이하이닉스 주식회사 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템
EP3454218B1 (en) * 2016-08-11 2023-02-01 Huawei Technologies Co., Ltd. Method for accessing table entry in translation lookaside buffer (tlb) and processing chip
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
US20190205261A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Systems, methods, and apparatuses for patching pages
US11055232B2 (en) * 2019-03-29 2021-07-06 Intel Corporation Valid bits of a translation lookaside buffer (TLB) for checking multiple page sizes in one probe cycle and reconfigurable sub-TLBS

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907867A (en) * 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
US6081147A (en) * 1994-09-29 2000-06-27 Fujitsu Limited Timing controller and controlled delay circuit for controlling timing or delay time of a signal by changing phase thereof
US6233652B1 (en) * 1998-10-30 2001-05-15 Intel Corporation Translation lookaside buffer for multiple page sizes
US6425055B1 (en) * 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
US6453387B1 (en) * 1999-10-08 2002-09-17 Advanced Micro Devices, Inc. Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6446187B1 (en) * 2000-02-19 2002-09-03 Hewlett-Packard Company Virtual address bypassing using local page mask
US6674441B1 (en) * 2000-07-26 2004-01-06 Ati International, Srl Method and apparatus for improving performance of an accelerated graphics port (AGP) device
DE10159519A1 (de) * 2001-12-04 2003-07-17 Zahnradfabrik Friedrichshafen Verfahren zur Ansteuerung einer Druckversorgungseinrichtung in einem Hydraulikkreis
US7100018B2 (en) * 2003-07-31 2006-08-29 Silicon Graphics, Inc. System and method for encoding page size information
US7089398B2 (en) * 2003-07-31 2006-08-08 Silicon Graphics, Inc. Address translation using a page size tag
KR100606242B1 (ko) * 2004-01-30 2006-07-31 삼성전자주식회사 불휘발성 메모리와 호스트간에 버퍼링 동작을 수행하는멀티 포트 휘발성 메모리 장치, 이를 이용한 멀티-칩패키지 반도체 장치 및 이를 이용한 데이터 처리장치
US8707011B1 (en) * 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US7831010B2 (en) * 2007-11-12 2010-11-09 Mitsubishi Electric Corporation Shift register circuit
US9244855B2 (en) * 2007-12-31 2016-01-26 Intel Corporation Method, system, and apparatus for page sizing extension
KR100933669B1 (ko) * 2008-04-11 2009-12-23 주식회사 하이닉스반도체 저전력 쉬프트 레지스터 및 이를 포함하는 반도체메모리장치
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8352683B2 (en) * 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device
US9323691B2 (en) * 2012-03-08 2016-04-26 Freescale Semiconductor, Inc. Multiple page size memory management unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018009283A1 (en) * 2016-07-03 2018-01-11 Intel Corporation Buffering graphics tiled resource translations in a data port controller tlb

Also Published As

Publication number Publication date
CN104937568B (zh) 2018-04-13
KR101787851B1 (ko) 2017-10-18
WO2014105151A1 (en) 2014-07-03
US20140189192A1 (en) 2014-07-03
CN104937568A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
US11645135B2 (en) Hardware apparatuses and methods for memory corruption detection
KR101787851B1 (ko) 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법
US10346306B2 (en) Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US20160335090A1 (en) Apparatus and method for accelerating operations in a processor which uses shared virtual memory
US11275637B2 (en) Aggregated page fault signaling and handling
US9317441B2 (en) Indexed page address translation to reduce memory footprint in virtualized environments
KR101839479B1 (ko) 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US20160378684A1 (en) Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
CN111164581A (zh) 用于修补页的系统、方法和装置
CN111752863A (zh) 用于专用地址映射的系统、设备和方法
WO2018004969A1 (en) Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
US10956327B2 (en) Systems and methods for mitigating dram cache conflicts through hardware assisted redirection of pages (HARP)
US9229874B2 (en) Apparatus and method for compressing a memory address
US20180004681A1 (en) Systems, Apparatuses, and Methods for Platform Security
US20220405209A1 (en) Multi-stage cache tag with first stage tag size reduction

Legal Events

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