KR20190022334A - 어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법 - Google Patents

어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20190022334A
KR20190022334A KR1020180094134A KR20180094134A KR20190022334A KR 20190022334 A KR20190022334 A KR 20190022334A KR 1020180094134 A KR1020180094134 A KR 1020180094134A KR 20180094134 A KR20180094134 A KR 20180094134A KR 20190022334 A KR20190022334 A KR 20190022334A
Authority
KR
South Korea
Prior art keywords
address translation
hit
translation data
address
entry
Prior art date
Application number
KR1020180094134A
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 KR20190022334A publication Critical patent/KR20190022334A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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/0215Addressing or allocation; Relocation with look ahead addressing 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • 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
    • 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

어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법이 제공된다. 장치는 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하는, 복수의 엔트리를 갖는 어드레스 변환 캐시를 갖는다. 각 엔트리는 그 내부에 저장된 어드레스 변환 데이터가 합체된 또는 비합체된 어드레스 변환 데이터인지 여부를 식별하고, 또 그 어드레스 변환 데이터와 관련되는 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별한다. 제어 회로는, 가상 어드레스에 응답해, 어드레스 변환 캐시 내에서 룩업 동작을 수행하여 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대해, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대한 히트가 검출되었는지 여부를 나타내는 히트 표시를 생성한다. 제어 회로는 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시를 판정하도록 더 구성된다. 그 다음, 제어 회로는, 룩업 동작이 완료했을 때, 다수의 히트가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 복수의 히트가 어드레스 변환 캐시에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에서 기인한 것인지 여부를 판정하도록 구성된다. 이것은 하드웨어 합체로 인한 다중 히트와 소프트웨어에 의한 문제로 인한 다중 히트를 구별하기 위한 효율적이고 정확한 메커니즘을 제공한다.

Description

어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법{AN APPARATUS AND METHOD FOR EFFICIENT UTILISATION OF AN ADDRESS TRANSLATION CACHE}
본 기술은 어드레스 변환 캐시의 효율적인 이용에 관한 것이다.
가상 어드레스를 물리적 어드레스로의 변환에 관한 어드레스 변환 데이터를 저장하기 위해, 변환 참조 버퍼(translation lookaside buffer:TLB)와 같은 어드레스 변환 캐시를 통합하는 데이터 처리 시스템을 제공하는 것이 알려져 있다. 어드레스 변환 데이터는 또한 허가 데이터 및 메모리 속성과 같은, 수행되는 메모리 액세스에 관한 속성 데이터를 제공할 수 있다. 어드레스 변환 캐시를 제공하면 필요한 느린 페이지 테이블 워크 횟수를 줄여 성능을 향상시키는 데 유용하지만, 어드레스 변환 캐시 자체는 회로 리소스를 소비한다.
인접한 복수의 디스크립터(descriptors)가 페이지 정렬 기준을 충족시키는 상황에서 합체된 TLB 엔트리를 작성하는 것이 알려져 있다. 그러나 합체된 엔트리를 작성하면 어드레스 변환 캐시 리소스를 보다 효율적으로 사용할 수 있으므로, 합체된 어드레스 변환 데이터를 어드레스 변환 캐시에 할당함으로써 초래될 수도 있는 성능 영향을 감소시키려고 그러한 합체된 엔트리의 처리를 효율적으로 관리하는 것이 바람직하다.
한 구성 예에 있어서는, 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하고, 각 엔트리가 그 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지를 식별하고 또 어드레스 변환 데이터와 관련되는 상기 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하도록 되어 있는, 복수의 엔트리를 갖는 어드레스 변환 캐시와, 가상 어드레스에 응답해, 상기 어드레스 변환 캐시 내에서 룩업(lookup) 동작을 수행하여, 상기 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대하여, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트(hit)가 검출되었는지 여부를 나타내는 히트 표시를 생성하는 제어 회로를 구비하는 장치가 제공되고, 상기 제어 회로는, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시(multi-hit indication)를 판정하도록 구성되고, 상기 제어 회로는, 룩업 동작이 완료했을 때, 다중 히트(multiple hits)가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 다중 히트가 상기 어드레스 변환 캐쉬에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에 기인한 것인지 여부를 판정하도록 더 구성된다.
다른 구성 예에 있어서는, 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하고, 각 엔트리가 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지 여부를 식별하고 어드레스 변환 데이터와 관련되는 상기 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하는, 복수의 엔트리를 갖는 어드레스 변환 캐시 내에서 어드레스 변환 데이터를 관리하는 방법이 제공되고, 상기 방법은 가상 어드레스에 응답하여, 상기 어드레스 변환 캐시 내에서 룩업 동작을 수생하여, 상기 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대하여, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트가 검출되었는지 여부를 나타내는 히트 표시를 생성하는 단계와, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시를 판정하는 단계와, 룩업 동작이 완료했을 때, 다중 히트가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 다중 히트가 상기 어드레스 변환 캐시에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에 기인한 것인지 여부를 판정하는 단계를 포함한다.
또 다른 구성 예에 있어서는, 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하고, 각 엔트리가 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지를 식별하고 또 어드레스 변환 데이터와 관련되는 상기 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하는, 복수의 엔트리를 제공하기 위한 어드레스 변환 수단과, 가상 어드레스에 응답해, 상기 어드레스 변환 캐시 내에서 룩업 동작을 수행하여, 상기 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대하여, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트(hit)가 검출되었는지 여부를 나타내는 히트 표시를 생성하기 위한 제어 수단을 구비하는 장치가 제공되고, 상기 제어 수단은, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시를 판정하고, 상기 제어 수단은, 룩업 동작이 완료했을 때, 다중 히트가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 다중 히트가 상기 어드레스 변환 캐쉬에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에 기인한 것인지 여부를 판정한다.
본 기술은 첨부 도면들에 도시된 실시 예들을 참조하여 예로서만 더 설명될 것이다.
도 1은 일 실시 예에 따른 어드레스 변환 캐시를 포함하는 데이터 처리 시스템을 도시한 것이다.
도 2는 가상 - 물리적 어드레스 변환 프로세스를 개략적으로 도시하는 도면이다.
도 3은 단일 스테이지 어드레스 변환 프로세스를 포함하는 다중 레벨 페이지 테이블 워크를 개략적으로 도시한 것이다.
도 4는 일 실시 예에 따른 도 1의 어드레스 변환 회로를 보다 상세하게 도시 한 블록도이다.
도 5는 일 실시 예에 따라 도 4에 도시된 레벨 1 TLB의 각 엔트리 내에 제공될 수 있는 필드를 도시한 것이다.
도 6은 일 실시 예에 따라 어드레스 변환 데이터를 레벨 1 TLB의 엔트리에 할당하기 위해 취해지는 스텝을 도시하는 흐름도이다.
도 7은 일 실시 예에 따라, 프로세서 코어로부터 가상 어드레스의 수신시 레벨 1 TLB를 참조하여 수행되는 동작을 개략적으로 도시하는 도면이다.
도 8은 합체된 어드레스 변환 데이터의 이용으로부터 발생하는 소프트웨어에 의한 다중 히트 및 하드웨어에 의한 다중 히트를 구별하기 위해, 일 실시 예에서 멀티 히트 신호를 한정하기 위해 합체된 멀티 히트 표시가 어떻게 이용될 수 있는지를 개략적으로 도시한 것이다.
도 9a 및 9b는 일 실시 예에 따라, 프로세서 코어로부터 가상 어드레스의 수신시 레벨 1 TLB와 관련하여 수행되는 스텝들을 도시하는 흐름도이다.
도 10은 일 실시 예에 따라 채용될 수 있는 클린업(clean up) 및 재시도 기능을 나타내는 흐름도이다.
첨부된 도면을 참조하여 실시 예를 설명하기 전에, 이하의 실시 예에 대한 설명이 제공된다.
일 실시 예에서, 복수의 엔트리를 갖는 어드레스 변환 캐시를 구비하는 장치가 제공되며, 여기서 각 엔트리는 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용된 어드레스 변환 데이터를 저장하는 데 사용될 수 있다. 어드레스 변환 데이터는 페이지 테이블 워크 프로세스 시에 페이지 테이블로부터 검색된 디스크립터(descriptor)로부터 결정될 수 있다. 디스크립터는 메모리의 특정 페이지 사이즈와 관련될 것이며, 결과적으로 그 디스크립터에서 결정된 어드레스 변환 데이터는 메모리의 특정 페이지 사이즈와 관련될 것이다.
페이지 테이블 내의 복수의 인접한 디스크립터를 고려함으로써, 합체된 어드레스 변환 데이터가 이들 디스크립터로부터 생성될 수 있게 하는 페이지 정렬 기준이 충족되는지 여부를 검출하는 것이 가능하다. 복수의 인접한 디스크립터를 적절하게 선택함으로써, 이들 디스크립터에 의해 식별된 가상 페이지 수는 더 큰 페이지 사이즈와 정렬되는 연속적인 페이지와 관련될 수 있다. 그 후에, (디스크립터에 의해 식별된 바와 같은) 이들 연속적인 가상 페이지에 할당된 물리적 페이지들도 연속적인지 여부를 판정할 수 있고, 그렇다면 복수의 인접한 디스크립터들로부터 합체된 어드레스 변환 데이터를 생성하는 것이 가능할 수 있고, 그 합체된 어드레스 변환 데이터는 더 큰 페이지 사이즈와 관련이 있다. 예를 들어, 인접한 디스크립터로부터의 정보가 이러한 방식으로 결합될 수 있으면, 합체된 어드레스 변환 데이터는 그 디스크립터들 중의 단지 하나로부터 생성될 어드레스 변환 데이터보다 4배 큰 물리적 페이지 사이즈와 관련될 수 있다. 이것은 별도의 비합체된 어드레스 변환 데이터를 저장하는 데 복수의 엔트리가 사용되어야 하는 대신에, 어드레스 변환 캐시의 한 엔트리를 사용하여 합체된 어드레스 변환 데이터를 저장할 수 있기 때문에 효율적인 세이빙(efficiency savings)을 제공할 수 있다.
기술된 실시 예에 따르면, 어드레스 변환 캐시 내의 각 엔트리는 그 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지 여부를 식별하고, 어드레스 변환 데이터와 관련되는 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하도록 구성될 수 있다.
장치는 가상 어드레스에 응답하여 어드레스 변환 캐시 내에서 룩업 동작을 수행하여 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대해, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트가 검출되었는지 여부를 나타내는 히트 표시를 생성하는 제어 회로를 제공한다. 일반적으로, 다중 히트가 존재하면 겹쳐진 페이지로 구성되는 잘못 매핑된 변환(badly mapped translations)으로 인해 소프트웨어에 의한 다중 히트를 나타낼 것이기 때문에. 대부분 어떤 제공된 가상 어드레스에 대해 어드레스 변환 캐시 내에서 히트(hits)하는 단일 엔트리만 존재할 것으로 예상된다. 그러나, 합체된 어드레스 변환 데이터를 어드레스 변환 캐시에 할당하기로 결정할 때, 어드레스 변환 캐시는 합체되어 있었던 하나 이상의 페이지에 관한 비합체된 버전의 어드레스 변환 데이터를 이미 저장하고 있을 수 있다. 할당할 때 추가의 룩업(lookup)을 수행하여 이러한 상황을 검출하고, 그러한 비합체된 버전을 제거하지만, 이것은 성능에 상당한 영향을 미칠 수 있는데, 그 이유는 룩업이 그 목적을 위해 수행되는 동안 관련된 처리 회로에 의해 제공된 새로운 가상 어드레스에 대한 룩업을 수행하는 것이 가능하지 않을 수도 있기 때문이다. 또한, 이러한 접근은 정적 및 동적인 전력 소비를 실질적으로 증가시킬 수 있는 새로운 룩업 포트(lookup port)를 어드레스 변환 캐시에 추가하는 것을 포함할 수도 있다.
따라서, 본 명세서에 기술된 실시 예에서, 어드레스 변환 캐시는, 그때 합체되어 있었던 하나 이상의 페이지에 대해 비합체된 어드레스 변환 데이터를 저장하는 어떤 엔트리가 있는지 여부를 판정하기 위한 어떤 체크도 수행하지 않고 그 엔트리들 중 하나에 합체된 어드레스 변환 데이터를 할당하도록 허용된다. 결과적으로, 다중 히트가 검출되는 상황에서, 이것은 여전히 소프트웨어에 의한 문제로 인한 것일 수 있지만, 그렇지 않으면 합체된 어드레스 변환 데이터의 합법적인 사용으로 인한 것일 수도 있다. 기술된 실시 예들에서, 다중 히트의 이들 2개의 상이한 소스들 사이를 효율적이고 신뢰성 있게 구별하기 위한 메커니즘이 제공된다.
특히, 제어 회로는, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해서 히트가 검출될 때 설정되는 합체된 멀티 히트 표시를 판정하도록 구성된다. 많은 경우에, 룩업 동작이 완료될 때까지 기다릴 필요없이 이 합체된 멀티 히트 표시가 생성될 수 있다는 것이 밝혀졌다. 세트 상태와 관련된 로직 값은 실시 예에 따라 달라질 수 있지만, 일 실시 예에서는 로직 1 값이다.
그 다음에, 제어 회로는, 룩업 동작이 완료되었을 때, 다중 히트가 검출되었는지 여부를 판정하도록 더 구성되고, 이 경우, 합체된 멀티 히트 표시를 참조하여 어드레스 변환 캐시에 있어서 복수의 히트가 합체된 어드레스 변환 데이터 및 비합체된 어드레스 변환 데이터 둘 다로부터 발생했는지 여부를 판정한다. 이를 통해 다중 히트에 대한 이유가 예를 들어 예외가 취해질 필요가 있는 소프트웨어에 의한 문제인지 또는 예외를 취할 필요없이 쉽게 해결될 수 있는, 통합된 어드레스 변환 데이터의 사용으로 인해 하드웨어에 의한 멀티 히트 상황인지 여부를 고려하여 다중 히트를 검출한 결과로서 취한 조치를 조정할 수 있다.
일 실시 예에서, 어드레스 변환 캐시에 의해 지지되는 페이지 사이즈는 합체된 어드레스 변환 데이터와 관련될 수 없는 하나 이상의 페이지 사이즈를 포함하고, 제어 회로는 히트 표시의 서브세트 외부의 적어도 하나의 나머지 히트 표시의 룩업 동작 시의 발생을 기다리지 않고 히트 표시의 서브세트로부터 합체된 멀티 히트 표시를 결정하도록 구성될 수 있고, 여기서 각 나머지 히트 표시는 합체된 어드레스 변환 데이터와 관련될 수 없는 페이지 사이즈와 관련이 있다. 특히, 각 가능한 페이지 사이즈에 대한 히트 표시를 생성하기 위해 룩업 동작을 수행하는 데 사용되는 메커니즘이, 개개의 히트 표시가 이용 가능하게 되는 시간이 페이지 사이즈에 의존하도록 한 경우가 종종 있다. 합체된 멀티 히트 표시를 발생하기 위해 제어 회로에 의해 히트 표시의 서브세트만이 사용될 필요가 있기 때문에, 제어 회로가 룩업 동작에 의해 생성되는 모든 히트 표시가 이용 가능하게 될 때까지 기다릴 필요없이 그러한 합체된 멀티 히트 표시의 발생을 개시하는 것이 가능하다. 많은 실시 예에 있어서, 이것은 룩업 동작이 완료될 때까지 합체된 멀티 히트 표시가 이용 가능하게 되도록 하고, 제어 회로가 룩업 동작이 완료된 후에, 다중 히트가 발생했는지를 판정하면, 그 통합된 멀티 히트 표시가 제어 회로에 즉시 이용 가능하게 되도록 하는 것이 밝혀졌다.
합체된 멀티 히트 표시를 생성하기 위해 제어 회로에 의해 사용되는 히트 표시의 서브세트는 실시 예에 따라 달라질 수 있지만, 일 실시 예에서는 히트 표시의 서브세트가, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시와, 합체된 어드레스 변환 데이터와 관련될 수 있는 어떤 페이지 사이즈보다도 작은 페이지 사이즈에 대한 적어도 하나의 히트 표시를 포함한다. 특히, 합체된 어드레스 변환 데이터와 관련된 가장 작은 페이지 크기가 지지되는 더 작은 페이지 사이즈의 배수가 될 것이 때문에, 적어도 어드레스 변환 캐시에 의해 지지되는 가장 작은 페이지 사이즈는 종종 합체된 어드레스 변환 데이터와 관련될 수 없는 페이지 사이즈일 수도 있다. 그러한 경우에, 합체된 어드레스 변환 데이터와 관련된 페이지 사이즈보다는 작지만, 합체된 어드레스 변환 데이터의 발생에 의해 더 큰 페이지 사이즈로 합체될 수 있는 페이지 사이즈와 관련이 있는 그러한 페이지 사이즈는, 일 실시 예에 있어서는, 합체된 멀티 히트 표시를 발생할 때 제어 회로에 의해 재검토될 것이다.
일 실시 예에 있어서, 나머지 히트 표시는 합체된 어드레스 변환 데이터와 관련될 수 있는 어떤 페이지 사이즈보다도 큰 페이지 사이즈와 관련이 있다. 룩업 동작을 수행할 때, 더 큰 페이지 사이즈에 대해 생성된 히트 표시가 더 작은 페이지 사이즈에 대해 생성된 히트 표시보다 발생하는 데 시간이 더 오래 걸리는 경우일 수 있으며, 따라서 그 시나리오에 있어서, 지지되는 페이지 사이즈가 통합된 어드레스 변환 데이터와 관련될 수 있는 어떤 페이지 사이즈보다도 큰 하나 이상의 페이지 사이즈를 포함할 때, 이것은 제어 회로가 룩업 동작 시에 생성되는 이들 더 큰 페이지 사이즈에 대한 히트 표시를 기다리지 않고 합체된 멀티 히트 표시의 생성을 개시할 수 있게 한다.
룩업 동작을 수행하기 위해 제어 회로에 의해 사용될 수 있는 많은 기술이 있지만, 일 실시 예에 있어서, 제어 회로는 룩업 동작을 수행하기 위한 Sum-Addressed-Compare 회로를 포함하여, 각 히트 표시가 그 히트 표시와 관련된 페이지 사이즈에 의존하는 타이밍에서 이용 가능하게 된다. 계산된 가상 어드레스가 2개의 소스 값을 함께 더함으로써 계산되는 경우가 종종 있다. 그러나, 가상 어드레스를 생성하기 위해 이들 2개의 소스 값을 함께 더한 후, 그 계산된 가상 어드레스를 어드레스 변환 캐시의 각 엔트리에 있는 해당 가상 어드레스와 비교하는 것보다는, Sum-Addressed-Compare 접근법은 가상 어드레스를 생성하기 위해서 2개의 소스 값을 함께 더하는 가산기의 전체 캐리 전파(carry propagation)를 필요로 하지 않고, 매칭하는 가상 어드레스의 더 빠른 검출을 위해서 제공한다. 대신, 계산된 가상 어드레스가 어드레스 변환 캐시의 엔트리에 저장된 가상 어드레스와 같다고 가정이 행해지고, 그 후에 비교가 정확한 것이면 각 비트에 대해 필요한 캐리 인(carry-in) 및 캐리 아웃(carry-out) 값에 대한 정보를 판정할 수 있다. 그 다음, 매치가 있는지를 검출하기 위해, 단지 하나의 비트의 캐리 인과 아래 비트의 캐리 아웃을 비교하는 것만이 필요하다. 적합한 um-Addressed-Compare 메커니즘의 더 자세한 것은, "Evaluation of A + B = K Conditions Without Carry Propagation" by J Cortadella et al, IEEE Transactions on Computers, Volume 41, Number 11, November 1992, Pages 1484 to 1488에 기술되어 있다.
룩업 동작을 수행하기 위해 Sum-Addressed-Compare 메커니즘을 채택할 때, 더 작은 페이지 사이즈에 대한 히트 표시가 더 큰 페이지 사이즈에 대한 히트 표시보다 먼저 생성될 수 있으며, 따라서 합체된 어드레스 변환 데이터와 관련될 수 있는 어떤 페이지 사이즈보다도 큰 적어도 하나 이상의 페이지 사이즈가 있을 때, 이것은 제어 회로가 룩업 동작이 완료하기 전에 합체된 멀티 히트 표시의 발생을 시작할 수 있음을 의미한다.
히트 표시는 다양한 형태를 취할 수 있지만, 일 실시 예에 있어서는 각 히트 표시는 관련된 페이지 사이즈의 어드레스 변환 데이터에 대해 히트가 검출되었는지 여부를 엔트리별로 식별하는 히트 벡터를 포함한다.
하나의 그러한 실시 예에 있어서, 제어 회로는, 비합체된 히트 벡터가 도출되는 출력 벡터를 생성하기 위해서, 어느 엔트리가 합체된 어드레스 변환 데이터를 포함하는지를 식별하는 정보에 의해 한정된(qualified), 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터들을 논리적으로 결합함으로써 합체된 히트 벡터를 발생하고, 어느 엔트리가 비합체된 어드레스 변환 데이터를 포함하는지를 식별하는 정보에 의해 한정된, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터들을 논리적으로 결합함으로써 비합체된 히트 벡터를 발생하는 것에 의해 합체된 멀티 히트 표시를 판정하도록 구성될 수 있다. 그 다음, 합체된 히트 벡터 및 비합체된 히트 벡터에 대해 감소 및 결합 동작을 수행하여 합체된 다중 히트 표시를 발생한다.
이러한 접근법은 하드웨어 합체로 인한 중복 엔트리를 검출하기 위한 정밀한 메커니즘을 제공함으로써, 중복된 페이지로 구성된 잘못 매핑된 변환으로 인한 소프트웨어에 의한 다중 히트와 하드웨어 통합으로 인한 다중 히트의 명확한 구분을 가능하게 한다. 이러한 접근법에 의해, 2개 이상의 비합체된 페이지 중 어떤 다중 히트도 합체된 멀티 히트 표시가 설정되게 하지 않을 것이다. 유사하게, 2개 이상의 합체된 페이지들 중에 다중 히트가 있는 경우, 이것은 합체된 멀티 히트 표시가 설정되게 하지 않을 것이다. 일 실시 예에서, 이것은 합체된 어드레스 변환 데이터가 비합체된 어드레스 변환 데이터로부터 생성되도록 제한되기 때문에 필요한 동작이다. 따라서, 여러 레벨의 합체가 금지되므로, 결과적으로 2개의 합체된 엔트리 사이의 다중 히트는 소프트웨어에 의한 문제를 나타낼 것이다.
비합체된 히트 벡터가 출력 벡터로부터 생성되는 방식은 실시 예에 따라 달라질 수 있지만, 일 실시 예에서, 제어 회로는, 합체된 어드레스 변환 데이터와 관련될 수 있는 어떤 페이지 사이즈보다도 작은 페이지 사이즈와 관련된 적어도 하나의 히트 표시의 히트 벡터와 출력 벡터를 논리적으로 결합함으로써 비합체된 히트 벡터를 발생하도록 구성된다.
어느 엔트리에 합체된 어드레스 변환 데이터가 포함되어 있는지를 식별하는 정보를 제공할 수 있는 여러 가지 방법이 있다. 그러나, 일 실시 예에서, 그 정보는 그 엔트리가 합체된 어드레스 변환 데이터를 저장하는지 여부를 엔트리별로 식별하는 합체된 엔트리 벡터를 포함한다.
이러한 일 실시 예에서, 제어 회로는, 부분 결과 벡터를 생성하기 위해서, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터들을 입력으로서 사용하는 OR 연산을 수행하고, 합체된 히트 벡터를 생성하기 위해서, 부분 결과 벡터와 합체된 엔트리 벡터를 입력으로서 사용하는 AND 연산을 수행함으로써 합체된 히트 벡터를 발생하도록 구성될 수 있다. 이것은 합체된 히트 벡터를 생성하기 위한 간단하고 효율적인 메커니즘을 제공한다.
유사하게, 일 실시 예에서, 제어 회로는, 부분 결과 벡터를 생성하기 위해서, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터를 입력으로서 사용하는 OR 연산을 수행하고, 그 다음 비합체된 히트 벡터가 도출되는 출력 벡터를 생성하기 위해서, 부분 결과 벡터와 반전된 버전의 합체된 엔트리 벡터를 입력으로서 사용하는 AND 연산을 수행함으로써 비합체된 히트 벡터를 발생하도록 구성될 수 있다. 다시 말하지만, 이것은 비합체된 히트 벡터를 발생하기 위한 간단하고 효율적인 메커니즘을 제공한다.
감소 및 결합 동작을 수행할 수 있는 여러 가지 방법이 있다. 그러나, 일 실시 예에서, 제어 회로는, 합체된 멀티 히트 표시를 생성하기 위해서, 합체된 히트 벡터를 OR 감소시켜서 제1 중간 결과를 생성하고, 비합체된 히트 벡터를 OR 감소시켜서 제2 중간 결과를 생성한 다음, 제1 및 제2 중간 결과를 입력으로서 사용하는 AND 연산을 수행함으로써 감소 및 결합 동작을 수행하도록 구성된다. 이것은 합체된 멀티 히트 표시를 발생하기 위한 특히 간단하고 효율적인 메커니즘을 제공한다.
앞서 언급한 바와 같이, 일단 합체된 멀티 히트 표시가 발생되었으면, 그것은, 제어 회로가 룩업 동작이 완료된 후에 다중 히트가 검출되었다고 판정하면, 제어 회로에 의해 참조될 수 있다. 특히, 일 실시 예에서, 제어 회로는, 룩업 동작에 의해 다중 히트가 검출되었고 통합된 멀티 히트 표시가 설정되지 않은 것으로 판정되면, 소프트웨어에 의한 멀티 히트 이벤트가 발생했다는 것을 나타내는 신호를 발행하도록 구성된다. 특히, 합체된 멀티 히트 표시가 설정되지 않은 경우, 이것은 다중 히트의 발생이 하드웨어 합체로 인한 것이 아니므로, 소프트웨어에 의한 문제로서 취급되어야 한다는 것을 나타낸다. 이 예에서 제어 회로에 의해 발행된 신호는 다양한 형태를 취할 수 있지만, 일 실시 예에서 중단 신호이다. 그러한 실시 예에서, 중단 신호가 구동될 때, 프로세서 코어는 파이프라인의 콘텐츠를 플러시(flush)하고 실행을 중단 핸들러로 리디렉션(redirect)할 것이다. 중단 핸들러는 중단을 유발하는 조건을 수정하는 데 필요한 스텝들을 수행하도록 구성되는, 프로그래머, 예를 들면 오퍼레이팅 시스템 개발자가 작성한 소프트웨어의 하나이다. 현재의 경우, 그러한 스텝들은 메모리 내의 페이지 테이블을 수정하는 것을 포함할 것이므로, 멀티 히트는 앞으로는 발생하지 않을 것이다.
대조적으로, 일 실시 예에서, 제어 회로는 룩업 동작에 의해 다중 히트가 검출되었고 통합된 멀티 히트 표시가 설정되는 것으로 판정되면, 가상 어드레스를 제공한 소스에 대해 재시도 요청을 발행하고, 소스가 가상 어드레스를 재발행할 때, 어드레스 변환 캐시의 하나의 엔트리에서만 히트가 검출되도록, 어드레스 변환 캐시 내의 적어도 하나의 엔트리를 무효화하기 위한 클린업 동작을 개시하도록 구성될 수 있다. 한 예에 있어서는, 소스는 룩업 동작의 실행을 트리거하기 위해 가상 어드레스를 발행하는 관련 프로세서 코어일 것이다. 합체된 어드레스 변환 데이터의 사용으로 인해, 하드웨어에 의한 다중 히트가 검출되면, 제어 회로는, 히트 표시를 생성하기보다는 소스로부터의 요청을 거부하여, 소스가 요청을 재시도하게 하도록 구성될 수 있다. 일반적으로 소스가 요청을 재시도할 위치에 도달한 시점에, 필요한 클린업 동작을 완료할 수 있으므로, 요청이 재발행되면, 어드레스 변환 캐시의 한 엔트리에서만 히트가 검출될 것이라는 것이 발견되었다. 따라서, 이것은 통합된 어드레스 변환 데이터가 어드레스 변환 캐시에 할당될 때 하드웨어에 의한 다중 히트에 대한 가능성을 해결하려는 것보다 훨씬 더 높은 성능과 에너지 효율적인 솔루션을 제공할 수 있다.
클린업 동작은 다양한 형태를 취할 수 있지만, 일 실시 예에서, 룩업 동작 중에 히트를 초래하는 비합체된 어드레스 변환 데이터를 저장하는 적어도 하나의 엔트리의 무효화를 야기한다.
대안적인 접근법에 있어서는, 클린업 동작은 룩업 동작 중에 히트를 초래하는 각 엔트리의 무효화와, 어드레스 변환 캐시의 엔트리에 할당하기 위해 합체된 어드레스 변환 데이터가 제공되도록 하는 메모리 관리 유닛에 대한 요청의 발행을 포함한다. 일부 실시 예에 있어서는, 비합체된 어드레스 변환 데이터와 관련된 엔트리를 검출하고 그 엔트리만을 무효로 하는 것보다 히트를 초래한 엔트리의 각각을 단순히 무효화하는 것이 더 간단할 수 있다. 또한, 메모리 관리 유닛은, 소스가 액세스 요청을 재시도할 위치에 도달하기 전에 그 데이터가 어드레스 변환 캐시의 엔트리에 할당될 수 있게 하는 기간에 필요한 합체된 어드레스 변환 데이터를 제공함으로써 요청에 일반적으로 응답할 수 있다는 것이 밝혀짐으로써, 이것을 성능 좋은 솔루션으로 만든다.
어드레스 변환 캐시에 할당되는 합체된 어드레스 변환 데이터는 다양한 방법으로 생성될 수 있다. 그러나, 일 실시 예에 있어서는, 장치는 어드레스 변환 캐시에 저장하기 위해, 복수의 페이지 테이블 디스크립터로부터 상기 합체된 어드레스 변환 데이터를 생성하기 위한 합체 회로를 구비하고, 상기 합체된 어드레스 변환 데이터는 페이지 테이블 디스크립터의 각각과 관련된 페이지 사이즈의 배수이며 어드레스 변환 캐시에 의해 지지되는 페이지 사이즈 중 하나인 페이지 사이즈와 관련이 있다.
어드레스 변환 캐시는 다양한 형식을 취할 수 있다. 예를 들어, 가상 어드레스로부터 물리적 어드레스를 계산하는 데 필요한 전체 변환 데이터보다는 오히려 부분 어드레스 변환 데이터를 저장하는 워크 캐시(walk cache)일 수 있다. 그러나, 일 실시 예에 있어서는, 어드레스 변환 캐시는 가상 어드레스가 대응하는 물리적 어드레스로 변환될 수 있도록 전체 어드레스 변환 데이터를 저장하는데 사용되는 변환 참조 버퍼(translation lookaside buffer; TLB)이다.
또한, 어드레스 변환 캐시는 다양한 방식으로 구성될 수 있다. 예를 들어, 일 실시 예에 있어서는, 그것은 세트 연관 구조(set associative structure)로서 구성될 수 있다. 그러나, 하나의 특정 실시 예에서는, 어드레스 변환 캐시는 완전 연관 캐시(fully associative cache)이다. 이러한 실시 예에서는, 룩업 동작 시에 생성된 히트 벡터가 완전 연관 캐시 내의 모든 엔트리에 대한 히트/미스 표시(hit/miss indication)를 포함할 수 있다.
지금부터는 도면을 참조하여 특정 실시예에 대해서 설명될 것이다.
도 1은 프로그램 명령을 실행하고 가상 어드레스 VA를 사용하여 데이터 액세스(명령 페치 및 조작될 데이터에 대한 액세스 둘 다)를 수행하기 위한 프로세서 코어(10)를 포함하는 데이터 처리 시스템을 개략적으로 도시한 것이다. 이들 가상 어드레스는 어드레스 변환 회로(20)에 의해 물리적 어드레스 PA로 어드레스 변환된다. 물리적 어드레스는 메모리 시스템(15) 내의 데이터 및 명령에 대한 액세스를 제어하는 데 사용된다. 메모리 시스템(15)은 다중 레벨의 캐시 메모리와 메인 메모리 또는 다른 비휘발성 저장장치와 같은, 메모리 계층구조를 포함할 수 있다.
도 1에 도시된 바와 같이, 어드레스 변환 회로(20)는 어드레스 변환 캐시(30)를 포함하는데, 이것은 일 예시에서는 변환 참조 버퍼(TLB)의 형태를 취할 수 있다. 어드레스 변환 캐시(30)는 복수의 엔트리를 갖고, 여기서 각 엔트리는 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장한다. 어드레스 변환 데이터는 메모리 시스템(15) 내에 저장된 페이지 테이블들(35)에 대한 페이지 테이블 워크 동작들을 수행함으로써 결정된다. 도 3을 참조하여 후술하는 바와 같이, 멀티 레벨 페이지 테이블 워크 프로세스는 최종 레벨 디스크립터를 참조하여, 가상 어드레스가 물리적 어드레스로 변환될 수 있게 하는 전체 어드레스 변환 데이터를 취득하기 위해서 사용될 수 있고, 그 전체 어드레스 변환 데이터는 어드레스 변환 캐시(30) 내에 저장될 수 있다. 어드레스 변환 캐시가 TLB인 경우, TLB는 일반적으로 그러한 전체 어드레스 변환 데이터를 저장하는 데 사용된다. 일 실시 예에서는, 본 명세서에서 기술된 기술들은 복수의 이러한 최종 레벨 디스크립터를 참조하여 취득된 전체 어드레스 변환 데이터를 특정하여 합체된 어드레스 변환 데이터가 생성되게 하며, 그 합체된 어드레스 변환 데이터는 TLB의 엔트리에 저장되어 있다.
도 1에 개략적으로 도시된 바와 같이, 코어(10)가 어드레스 변환 회로(20)에 가상 어드레스를 발행할 때, 제어 회로(25)는 어드레스 변환 캐시(30) 내에서 룩업 동작을 수행하여 히트가 어드레스 변환 캐시의 엔트리들 중의 하나에서 검출되는지 여부를 판정할 수 있다. 어드레스 변환 캐시가 완전 연관 방식으로 구성되면, 룩업 동작 시에 모든 엔트리가 고려될 수 있다. 그러나, 어드레스 변환 캐시에 세트 연관 구조가 있으면, 가상 어드레스의 특정 비트가 세트를 식별하기 위해 어드레스 변환 캐시에 색인으로서 사용될 것이며, 그 세트 내의 엔트리는 히트가 검출되는지 여부를 판정하기 위해 재검토될 것이다. 히트가 검출되면, 테이블 워크 응답은 프로세서 코어(10)에 직접 리턴될 수 있으며, 이것은 물리적 어드레스 비트 및 어드레스 변환 캐시 내의 히트 엔트리 내에 저장된 관련 속성을 포함한다. 이 정보에 근거하여, 코어는 요청된 명령, 또는 조작될 데이터에 액세스하기 위해 메모리 시스템(15)에 출력하기 위한 물리적 어드레스를 생성할 수 있다. 히트가 어드레스 변환 캐시 내에서 검출되지 않으면, 어드레스 변환 회로(20)는 메모리 시스템 내의 관련 페이지 테이블(35)에 액세스하여 최종 레벨 디스크립터가 취득될 때까지 디스크립터의 시퀀스를 따라가기 위해 페이지 테이블 워크 프로세스를 개시할 것이고, 그 지점에서 전체 어드레스 변환 데이터가 결정될 수 있고 그 다음에 적절한 테이블 워크 응답이 코어로 리턴될 수 있다. 이 프로세스 시에, 어드레스 변환 캐시(30) 내의 하나 이상의 엔트리는 액세스된 디스크립터로부터 도출된 어드레스 변환 데이터를 저장하도록 할당될 수 있다. 이것은 연속적으로 발행된 가상 어드레스가 어드레스 변환 캐시 내에서 히트를 발생시켜서, 액세스 시간을 단축할 수 있게 할 것 같다.
도 2는 어드레스 변환 프로세스를 개략적으로 도시하는 도면이다. 가상 어드레스(50)는 가상 페이지 번호를 식별하는 다수의 비트(55) 및 페이지 오프셋을 식별하는 몇몇 다른 비트(60)를 포함하는 것으로 간주될 수 있다. 가상 페이지 번호를 형성하는 비트들의 수 및 페이지 오프셋을 형성하는 비트들의 수는 페이지 사이즈에 의존할 것이다. 어드레스 변환 회로(20)에 의해 수행되는 어드레스 변환 동작은 도 2에 나타낸 구성요소(65)에 의해 개략적으로 도시되며, 가상 페이지 번호 비트(55)가 물리적 페이지 번호를 식별하는 물리적 어드레스(80)의 등가 비트(70)로 변환될 수 있게 하기에 충분한 어드레스 변환 정보를 취득하는 역할을 한다. 페이지 오프셋 비트는 변경되지 않으므로, 페이지 오프셋 비트(75)는 가상 어드레스에서의 페이지 오프셋 비트(60)로부터 직접 결정된다.
도 3은 단일 스테이지 어드레스 변환 메카니즘이 사용되는 것으로 가정한 페이지 테이블 워크 동작을 개략적으로 도시하는 도면이다. 이 예에서, 가상 어드레스는 48비트(비트 0 내지 47로 표기)이고, 따라서 가상 어드레스(100)는 페이지 테이블 워크 프로세스의 상이한 레벨과 관련된 일련의 9비트 부분을 가지는데, 12개의 최하위 비트는 페이지 오프셋을 나타낸다.
페이지 테이블 워크 프로세스의 시작 시, 베이스 레지스터는 페이지 테이블(115)을 식별하는데 사용되는 베이스 어드레스(110)를 식별하기 위해 액세스된다. 페이지 테이블 워크 프로세스의 레벨 0과 관련된 9비트(105)는 그 페이지 테이블(115)에 대한 인덱스를 식별함으로써, 중간 레벨 디스크립터(117)를 식별하는 데에 사용된다. 이 중간 레벨 디스크립터(117)는 추가 테이블 테이블(130)을 식별하는데 사용되는 베이스 어드레스(120)를 제공하는데, 레벨 1 가상 어드레스 비트들(125)은 그 테이블에 대한 인덱스를 식별하는데 사용된다. 이것은 추가 베이스 어드레스(135)를 제공하는 중간 레벨 디스크립터(132)를 식별하여 페이지 테이블(145)을 식별한다. 그 다음에 레벨 2 가상 어드레스 비트(140)는, 최종 페이지 테이블(160)을 식별하는 베이스 어드레스(150)를 제공하는, 중간 레벨 디스크립터(147)를 식별하기 위해 그 테이블(145)에 인덱스를 제공하는 데 사용된다. 그 다음에 레벨 3 가상 어드레스 비트(155)는 그 테이블(160)에 대한 인덱스를 제공하여, 페이지 디스크립터라고도 지칭되는 최종 레벨 디스크립터(162)를 식별한다. 페이지 디스크립터에 의해 제공되는 정보를 이용하여, 가상 페이지 번호(55)가 물리적 페이지 번호(70)로 변환될 수 있게 하므로 메모리 내의 필요한 페이지가 식별되도록 허용하는 TLB(30)의 엔트리들 중 하나에 저장하기 위한 어드레스 변환 데이터를 생성할 수 있다. 그 다음, 이것은 가상 어드레스에 대응하는 특정 데이터 항목(또는 명령)이 필요한 물리적 어드레스를 메모리 시스템(15)에 발행하는 코어(10)에 의해 액세스될 수 있게 한다.
일부 실시 예에서 최종 레벨 디스크립터는 페이지 테이블 워크 프로세스에서의 이전 레벨에서 지정될 수 있다는 점에 유념해야 한다. 예를 들어, 디스크립터(147)는, 설정되면, 그 디스크립터가 중간 레벨 디스크립터이기보다는, 최종 레벨 디스크립터의 타입인 블록 디스크립터라는 것을 나타내는 블록 필드(block field)를 가질 수 있다. 따라서, 디스크립터(147) 내의 정보는 완전한 어드레스 변환 데이터를 생성하는데 사용될 수 있다.
도 4는 일 실시 예에 따라 도 1의 어드레스 변환 회로(20) 내에 제공된 구성 요소를 보다 상세하게 도시한 블록도이다. 이 실시 예에서, 어드레스 변환 캐시(30)는 레벨 1 TLB의 형태를 취한다. 특히, 일 실시 예에서, 이 레벨 1 TLB는 메모리로부터 페치될 데이터 값에 대한 가상 어드레스를 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 제공하기 위한 데이터 TLB이다. 일 실시 예에서, 별도의 레벨 1 명령 TLB가 그 명령의 가상 어드레스를 그 명령을 검색하는 메모리 내의 위치를 식별하는 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하기 위해 제공될 수 있다. 설명을 쉽게 하기 위해, 별도의 레벨 1 명령 TLB는 도 4에는 도시되어 있지 않다.
이 실시 예에서, 도 1에 도시된 제어 회로(25)는 실제로 레벨 1 TLB(30)와 관련된 액세스 제어 회로(180)와 메모리 관리 유닛(18)을 구비한다. 액세스 제어 회로(180)는 가상 어드레스 정보를 수신하고, 레벨 1 TLB 내에서 룩업 동작을 수행하여, 지정된 가상 어드레스가 TLB 내의 엔트리들 중 임의의 엔트리에 히트하는지 여부를 판정하도록 구성된다. 액세스 제어 회로(180)는 또한 MMU(182)에 의해 그러한 어드레스 변환 데이터가 제공될 때 새로운 어드레스 변환 데이터를 TLB의 엔트리에 할당하도록 구성된다. 필요에 따라, 액세스 제어 회로(180)는 또한 MMU에 의해 제공된 새로운 어드레스 변환 데이터를 할당하기 위한 레벨 1 TLB(30) 내의 빅팀 엔트리(victim entry)를 식별하기 위해 축출 프로세스를 수행할 수 있다. 일 실시 예에서, 엔트리의 콘텐츠가 새로운 어드레스 변환 데이터와 겹쳐 기록될 때, 엔트리의 현재 콘텐츠를 사실상 축출할 필요가 없을 것이며, 그 이유는 그 데이터가 항상 MMU에 의해 재생성될 수 있기 때문이다.
도 4에 도시된 바와 같이, MMU(182)는 MMU(182)에 의해 수행된 페이지 테이블 워크를 통해 취득된 어드레스 변환 데이터를 저장하기 위한 레벨 2 TLB(190)(일반적으로 레벨 1 TLB(30)보다 크다)를 포함할 수 있다. 이것에 의해 어드레스 변환 데이터를 필요할 때마다 레벨 1 TLB에 쉽게 제공할 수 있다. 전술한 바와 같이, TLB는 일반적으로 전체 어드레스 변환 데이터를 저장하지만, 도 3의 초기 논의에서 명백한 바와 같이, 부분 어드레스 변환 데이터는 또한 페이지 테이블 워크 프로세스의 초기 레벨들 중의 하나 이상에 의해 획득될 것이다. 이러한 부분 어드레스 변환 데이터는 일 실시 예에서는 MMU(182) 내의 워크 캐시(195) 내에 저장될 수 있다.
또한, 도 4에 도시된 바와 같이, MMU(182)는 페이지 테이블 내의 다수의 인접한 디스크립터로부터 취득된 데이터가 더 큰 페이지에 대한 합체된 어드레스 변환 데이터를 생성하기 위해서 합체될 수 있는 상황들을 검출하도록 구성되는 합체 회로(185)를 포함할 수 있다. 특히, 많은 오퍼레이팅 시스템 메모리 할당 메커니즘이 인접한 물리적 페이지를 인접한 가상 페이지에 자연스럽게 할당한다는 것이 관찰된다. 합체 회로(185)는 인접한 가상 페이지와 관련된 디스크립터가 되도록 선택되는 페이지 테이블로부터의 복수의 인접한 디스크립터를 분석하기 위해 특정 상황 하에서 구성될 수 있고, 여기서 디스크립터들과 관련된 대응하는 가상 페이지들은 더 큰 페이지 사이즈로 정렬된다. 따라서, 이들 디스크립터는 그들에 할당된 대응하는 인접한 물리적 페이지를 가질 수도 있는 인접한 가상 페이지의 후보와 관련될 수 있다. 그 다음, 합체 회로(185)는 이들 디스크립터의 각각에 제공된 물리적 어드레스 정보가, 대응하는 물리적 페이지가 실제로 연속적인 물리적 페이지라는 것을 나타내는지 여부를 판정할 수 있고, 그 상황 하에서 이들 연속적인 물리적 페이지에 의해 형성된 유효한 더 큰 물리적 페이지를 나타내기 위한 합체된 어드레스 변환 데이터를 생성하도록 구성될 수도 있다. 그러한 합체된 어드레스 변환 데이터가 생성될 때, 요청은 액세스 제어 회로(180)로 보내져서, 그 합체된 어드레스 변환 데이터가 레벨 1 TLB(30)의 엔트리에 할당되게 할 수 있다. 또한, 필요하다면, 그 합체된 어드레스 변환 데이터는 또한 레벨 2 TLB(190)의 엔트리 내에 저장될 수 있다. 원칙적으로, 이러한 합체 기술은 워크 캐시(195) 내에 저장될 수 있는 것과 같은 부분 어드레스 변환 데이터에 대해서도 적용될 수 있지만, 다음의 설명의 목적을 위해, 그러한 합체는 페이지 테이블 내의 복수의 인접한 최종 레벨 디스크립터를 참조하여 취득된 전체 어드레스 변환 데이터에 대해서만 수행되는 것으로 가정될 것이다.
도 5는 일 실시 예에 따른 어드레스 변환 캐시(30)의 각 엔트리 내에 제공될 수 있는 필드들을 개략적으로 도시하는 도면이다. 도시된 바와 같이, 엔트리(200)는 특정 개수의 가상 어드레스 비트들을 포함하는 가상 어드레스 부분(205)을 포함할 수 있다. 이 필드에 저장된 비트의 수는 실시 예에 의존하지만, 48비트 가상 어드레스의 최상위 36비트가 멀티 레벨 페이지 테이블 워크 프로세스 시에 사용되는 도 3의 초기 예를 가정하면, 비트 47~12는 가상 어드레스 필드(205) 내에 저장될 수 있다. 대응하는 물리적 어드레스 필드(210)는 대응하는 물리적 어드레스 비트를 저장하는데 사용된다.
일 실시 예에서, 페이지 사이즈 필드(215)는 그 엔트리에 저장된 어드레스 변환 데이터와 관련되는 메모리 시스템 내의 페이지의 페이지 사이즈를 나타내기 위해 제공된다. 필드(220)는 어드레스 변환 데이터와 관련된 다른 속성 데이터를 저장하는데 사용된다. 이들 속성은 다양한 형태를 취할 수 있으며, 예를 들어, 관련된 페이지가 메모리의 라이트백(writeback) 영역, 비캐시가능(non-cacheable) 영역 등과 관련이 있는지 여부와 같은, 메모리 타입 정보, 및 액세스 허가를 포함할 수 있다. 추가 필드(222)는 엔트리가 유효한 정보를 저장하고 있는지를 식별하는 유효 비트를 저장하는데 사용된다. 일 실시 예에서, 합체 엔트리 플래그 필드(225)는 또한 엔트리 내의 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비 합체된 어드레스 변환 데이터인지를 식별하기 위해 제공된다. 도 7을 참조하여 좀 더 상세히 후술하는 바와 같이, 어드레스 변환 캐시(30) 내에서 룩업 동작이 수행될 때, 어드레스 변환 캐시 내의 다양한 엔트리에 대한 합체 엔트리 플래그 필드(225) 내의 정보가, 어느 엔트리가 합체된 어드레스 변환 데이터를 저장하지 어느 엔트리가 합체된 어드레스 변환 데이터를 저장하지 않는지를 엔트리별로 식별하는 합체된 엔트리 벡터를 생성하기 위해서 출력될 수 있다.
도 6은 MMU(182)로부터의 새로운 어드레스 변환 데이터가 제공될 때 액세스 제어 회로(180)에 의해 수행되는 할당 프로세스를 나타내는 흐름도이다. 스텝 300에서, 할당할 새로운 어드레스 변환 데이터가 존재하는지 여부가 결정되고, 스텝 305에서는 그것의 콘텐츠가 새로운 어드레스 변환 데이터와 겹쳐 기록되는 빅팀 엔트리를 선택하기 위해서 액세스 제어 회로(180)에 의해 빅팀 선택 방침이 적용된다. 그 후, 스텝 310에서는, 새로운 어드레스 변환 데이터가 콘텐츠가 유효하다고 표시되어 있는 빅팀 엔트리에 할당된다. 또한, 스텝 315에서는, 어드레스 변환 데이터가 합체된 어드레스 변환 데이터이면, 그 엔트리에 대한 합체된 엔트리 플래그가 (예를 들어, 로직 1 값으로) 설정되고, 대신에 어드레스 변환 데이터가 비합체된 어드레스 변환 데이터이면, (예를 들어, 로직 0 값으로) 클리어된다. 그 다음에 이것은 할당 프로세스를 완료한다. 특히, 어드레스 변환 캐시(30) 내의 다른 나머지 엔트리들(20) 중 어느 것인가가 합체된 어드레스 변환 데이터 내에서 표현된 물리적 페이지들 중 하나에 대한 어드레스 변환 데이터를 포함하는지 여부를 판정하기 위한 체크가 수행되지 않는다는 것에 주목해야 한다. 이것은 특정 가상 어드레스에 대한 룩업 동작이 수행될 때 나중에 다중 히트가 검출될 가능성이 있다는 것을 의미한다.
일반적으로, 이러한 다중 히트는 겹쳐진 페이지로 구성된 잘못 매핑된 변환으로 인해 소프트웨어에 의한 문제로 간주될 수 있으며, 예를 들어 중단 신호가 발행될 수 있다. 그러나, 본 명세서에 설명된 실시 예들에 따르면, 룩업 프로세스 중에, 그러한 소프트웨어에 의한 다중 히트 문제와, 합체된 어드레스 변환 데이터의 어드레스 변환 캐시에의 할당으로 인한 적법한 하드웨어에 의한 다중 히트를 구별하는 것이 가능하다.
또한, 다중 히트에 대한 이들 2가지 상이한 이유를 구별하는 신뢰성 있는 메커니즘을 제공함으로써, 하드웨어에 의한 다중 히트 문제를 효율적인 방식으로, 특히 합체된 어드레스 변환 데이터가 TLB에 할당될 때 TLB 내에 어떤 관련 비합체된 엔트리가 존재하는지 여부를 판정하고자 하는 것보다 훨씬 더 효율적인 방식으로 해결할 수 있다. 특히, 합체 어드레스 변환 데이터가 어드레스 변환 캐시에 할당되었을 때마다 충돌하는 엔트리들에 대한 TLB 내에서 룩업이 수행되었을 경우, 이것에 의해, 코어가 합체된 어드레스 변환 데이터를 TLB에 할당하는 것과 동시에 새로운 가상 어드레스에 대한 룩업을 요청할 때 유용한 명령 스트림 룩업의 사이클이 낭비될 수 있다. 또한, 이러한 충돌하는 엔트리 룩업을 제공하기 위해, TLB에 새로운 룩업 포트를 부가하는 것이 필요할 수 있어, 이는 정적 및 동적 전력 모두를 실질적으로 증가시킬 수 있다. 이러한 문제는 여기에 설명된 기술로 회피된다.
합체를 사용할 때 어드레스 변환 캐시 내에서 중복 변환 엔트리가 어떻게 발생할 수 있는지의 예로서, 다음 예제를 고려한다. 3개의 인접한 4KB 페이지가 프로세서 코어에서 실행되는 명령 스트림에 의해 액세스되었다고 가정하면, 이들 액세스에 의해 TLB(30) 내의 3개의 엔트리가 관련된 어드레스 변환 데이터를 저장하도록 할당되게 된다. 그 다음, 네 번째 인접한 4KB 페이지 액세스가 레벨 1 TLB에서 미스(misses)되어, 어드레스 변환 데이터에 대한 MMU(182)에 요청이 발행되는 것으로 가정한다. MMU는 4개의 4KB 페이지를 하나의 합체된 16KB 페이지로 합체할 수 있다고 판정할 수 있는데, 그 합체된 어드레스 변환 데이터는 합체된 16KB 페이지로서 할당하기 위해 레벨 1 TLB(30)로 다시 전송된다. 따라서, 도 16의 프로세스를 이용하여 이 16KB 페이지가 레벨 1 TLB(30)에 인스톨될 때, 3개의 중복 엔트리 세트가 여전히 존재할 수 있고, 여기서 각 세트는 원래의 3개의 4KB 페이지 중 하나와 합체된 16KB 페이지로 이루어진다. 프로세서 코어가 네 번째 4KB 페이지와 관련된 가상 어드레스를 계속해서 발행하지만, 다중 히트는 검출되지 않을 것이고, 그러나 첫 번째 3개의 4KB 페이지 중 어느 것인가와 관련이 있는 가상 어드레스가 발행되면, 이것에 의해 다중 히트가 검출될 것이다. 다음의 도면은 기술된 실시 예에 따라 그러한 다중 히트가 소프트웨어에 의한 다중 히트와 구별되는 방법 및 그러한 다중 히트 조건의 검출에 응답하여 취해지는 스텝을 설명한다.
도 7은 프로세서 코어로부터 새로운 가상 어드레스를 수신할 때 액세스 제어 회로(180)에 의해 수행되는 다양한 프로세스를 개략적으로 도시하는 도면이며, 특히 다양한 프로세스의 상대적인 타이밍을 도시한 것이다. 도 7에 도시된 바와 같이, 룩업 동작(350)은 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대해, 관련 페이지 사이즈의 어드레스 변환 데이터에 대해 히트가 검출되었는지 여부를 엔트리별로 나타내는 히트 벡터를 생성하기 위해 수행된다. 도 7에 도시된 예에서, 어드레스 변환 캐시는 6개의 페이지 사이즈, 즉 4KB, 16KB, 64KB, 256KB, 2MB 및 512MB를 지지한다고 가정한다. TLB 엔트리 내의 대응하는 가상 어드레스 비트와 비교될 필요가 있는 가상 어드레스 비트의 수는, 페이지 사이즈에 대해서 행해진 가정에 따라 다를 것이라는 것을 이해할 것이다. 예를 들어, 도 3을 참조하여 앞서 논의된 바와 같이 가상 어드레스가 48비트 가상 어드레스라고 가정하면(비트가 0 내지 47로 표시되는 것으로 가정하면), 페이지 사이즈가 4KB이면 비트 47부터 12까지, 페이지 사이즈가 16KB이면 비트 47부터 14까지, 페이지 사이즈가 64KB이면 비트 47부터 16까지, 페이지 사이즈가 256KB이면 비트 47부터 18까지, 페이지 사이즈가 2MB이면 비트 47부터 21까지, 페이지 사이즈가 512MB이면 비트 47부터 29까지 비교할 필요가 있을 것이다.
룩업 동작을 구현하기 위해 수행될 수 있는 다수의 상이한 메카니즘이 있지만, 상이한 비교 비트 수로 인해, 히트 벡터가 상이한 시점에서 이용 가능하게 되는 경우가 일반적일 것이다. 하나의 특정 실시 예에서, 전술한 바와 같이, 가상 어드레스 비교가 매우 효율적인 방식으로 수행되는 것을 가능하게 하는 Sum-Addressed-Compare 메카니즘이 사용된다. 특히, 가상 어드레스는 일반적으로 2개의 소스 값을 합산하여 계산될 것이며, Sum-Addressed-Compare 메커니즘을 통해 이들 2개의 값의 합산 결과가 전체 캐리 전파가 필요 없는 어드레스 변환 캐시의 엔트리 내의 가상 어드레스의 관련 부분과 일치하는지 여부를 판정할 수 있다.
특히, 각 TLB 엔트리에 대해, 저장된 가상_어드레스(K)가 계산된 가상 어드레스(A + B)와 동일한지의 여부에 대한 체크가 필요하다(A 및 B는 가상 어드레스를 형성하기 위해서 함께 가산된 2개의 소스 값이다). 이것은 일반적으로 VA = A + B를 생성하고 VA == K를 비교함으로써 수행된다. 그러나, 이것은 가산기의 전체 캐리 전파에 따라 느리다. 그 대신에, Sum-Addressed-Compare 기술에 따라, 계산된 VA는 저장된 TLB_VA(K)와 동일하다고 가정한다. 이 경우, 각 비트 i에 대해:
Ai ^ Bi ^ CINi == Ki [여기서 ^는 XOR 연산을 나타낸다]
Ai, Bi 및 Ki가 플롭(flop)에서 알려지기 때문에, 각 비트에 대해 CINi에서 필요한 캐리를 결정할 수 있다.
CINi_required = Ki ^ Ai ^ Bi
어떤 비트에 대한 carry_in이 상기의 CINi_required와 일치하지 않으면, 그 TLB 엔트리는 일치하지 않는다.
유사하게, 엔트리가 일치하면, 각 비트의 carry out은 다음과 같아야 한다 :
COUTi_required = (Ai & Bi)|(CINi_required & (Ai | Bi)) [여기서 &는 AND 연산을 나타내고 |는 OR 연산을 나타낸다]
COUTi_required = (Ai & Bi) |((Ki^ Ai^ Bi) &(Ai | Bi))
COUTi_required = (Ai & Bi) |((Ai^Bi)& ~ Ki)
일반적인 발생/전파 용어 사용
Pi = Ai ^ Bi; (비트 i가 carry-in을 carry-out에 전파할 것인지 여부를 판정)
Gi = Ai & Bi; (비트 i가 1의 carry-out을 생성할 것인지 여부를 판정)
상기의 콘텐츠는 다음과 같이 다시 기록될 수 있다.
CINi_required = Ki ^ Pi;
COUTi_required = Gi |(Pi & ~Ki);
따라서, 비교가 정확한 경우 각 비트의 carry-in 및 carry-out이 무엇이어야 하는지 알 수 있다. 필요한 모든 것은 하나의 비트의 carry-in을 그 아래 비트의 carry-out과 비교하여 일치가 있는지를 확인하는 것이다.
이러한 접근법을 사용할 때, 도 7에 개략적으로 도시된 바와 같이, 더 작은 페이지 사이즈에 대한 히트 벡터는 더 큰 페이지 사이즈에 대한 히트 벡터보다 먼저 생성될 것이고, 여기서 히트 벡터는 경로 352, 354, 356, 358, 360 및 362를 통해 출력된다.
예시적인 실시 예에서, 합체는 또한 특정 페이지 사이즈로 제한되는 것으로 가정된다. 특히, 일 실시 예에서 인접한 4KB 물리적 페이지에 매핑되는 4개의 인접한 4KB 가상 페이지는 하나의 16KB 페이지로 합체될 수 있다. 마찬가지로, 인접한 16KB 물리적 페이지에 매핑되는 4개의 인접한 16KB 가상 페이지를 하나의 64KB 페이지로 합체할 수 있으며, 인접한 64KB 물리적 페이지에 매핑되는 4개의 인접한 64KB 가상 페이지를 하나의 256KB 페이지로 합체할 수 있다. 그러나, 기술된 실시 예에서, 합체는 어떤 다른 페이지 사이즈에 관해서는 수행되지 않을 수도 있고, 한 레벨의 합병만이 허용 가능하며, 즉, 합체된 어드레스 변환 데이터 자체는 더 큰 페이지로 합체될 수 없다고 가정된다.
이러한 실시 예에 따르면, 액세스 제어 회로(180)는, 그 자체가 합체된 어드레스 변환 데이터와 관련될 수는 없지만, 합체 대상이 될 수 있는 비합체된 어드레스 변환 데이터와는 관련될 수 있는 더 작은 페이지 사이즈에 관한 히트 벡터 352와, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 히트 벡터 354, 356, 358을 사용하여 합체된 멀티 히트 표시를 결정하도록 구성될 수 있다.
합체된 멀티 히트 표시의 생성은 도 7에 도시된 동작들 370, 375, 380, 382 및 384의 수행을 수반한다. 특히, 도 5를 참조하여 이전에 설명한 바와 같이, TLB 내의 엔트리들의 각각과 관련된 합체된 엔트리 플래그 필드(225)로부터 취득될 수 있는 합체된 엔트리 백터 372과, 2개의 히트 벡터 354, 356, 358을 입력으로서 사용하는 합체된 히트 벡터 생성 스텝 370가 수행된다. 특히, 합체된 히트 벡터 생성기(370)는 다음의 논리적 계산을 수행하도록 구성될 수 있다 :
coalesced_hit_vector[TLB_SIZE-1 : 0] =(16KB_hit_vector[TLB_SIZE-1 : 0]
| 64KB_hit_vector[TLB_SIZE-1 : 0]
| 256KB_hit_vector[TLB_SIZE-1 : 0]
) & coalesced_entry[TLB_SIZE-1 : 0].
따라서, 연산은 중간 벡터를 생성하기 위해 3개의 히트 벡터의 논리적 OR을 수행하고, 그 다음, 합체된 엔트리 벡터와 논리적으로 AND된다. 따라서, 합체된 히트 벡터가, 16KB, 64KB 또는 256KB 페이지 사이즈와 관련된 합체된 엔트리가 룩업 동작 중에 히트를 언제 유발시켰는지를 식별할 것이라는 것을 알게 될 것이다.
유사하게, 3개의 히트 벡터 354, 356, 358을 다시 사용하지만, 4KB 페이지 사이즈와 관련된 히트 벡터 352도 사용하여 비합체된 히트 벡터 생성 동작(375)을 수행할 수 있다. 또한, 비합체된 히트 벡터 생성 동작(375)에는 경로 377을 통해 반전된 버전의 합체된 엔트리 벡터가 제공된다. 일 실시 예에서, 비합체된 히트 벡터 생성 동작은 다음의 논리적 계산을 수행한다 :
non_coalesced_hit_vector[TLB_SIZE-1 : 0] =((16KB_hit_vector[TLB_SIZE-1 : 0]
| 64KB_hit_vector[TLB_SIZE-1:0]
| 256KB_hit_vector[TLB_SIZE-1:0]
) & ~ coalesced_entry[TLB_SIZE-1:0]
) |4KB_hit_vector[TLB_SIZE-1:0].
따라서, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈와 관련된 3개의 히트 벡터는 논리적으로 OR되어 중간 결과를 생성하고, 이 경우에는 그 다음에 반전된 버전의 합체된 엔트리 벡터와 AND됨으로써, 16KB 페이지 사이즈, 64KB 페이지 사이즈 또는 256KB 페이지 사이즈와 관련된 엔트리 중 하나로 비합체된 어드레스 변환 데이터에 대해 히트가 검출되는 상황을 식별한다. 그 다음, 이 출력은, 비합체된 히트 벡터를 생성하기 위해서 4KB 페이지 사이즈에 대한 히트 벡터(352)와 논리적으로 OR된다. 이러한 방식으로, 비합체된 히트 벡터는 4KB, 16KB, 64KB 또는 256KB 페이지 사이즈에 대한 비합체된 엔트리에 히트가 있었을 때를 식별할 것이다.
스텝 380, 382에 의해 도시된 바와 같이, 합체 히트 벡터 및 비합체된 히트 벡터 모두에 대해서는 벡터를 단일 비트 값으로 감소시키기 위해 OR 감소 동작이 수행된다. 예시된 실시 예에서는, 이들 단일 비트 값은 벡터의 어떤 비트가 하이(high)로 설정되면 하이로 설정될 것이다. 그 다음, 2개의 OR 감소 스텝 380, 382로부터의 출력은 합체된 멀티 히트 신호를 생성하기 위해 스텝 384에서 논리적으로 AND된다. 그 결과, 스텝 380, 382, 및 384는 집합적으로 이하의 논리적 계산을 수행한다는 것을 알 수 있다 :
coalesced_multi_hit = |coalesced_hit_vector[TLB_SIZE-1 : 0]
& |non_coalesced_hit_vector[TLB_SIZE-1 : 0]. [where| indicates an OR reduce]
결과적으로, 상술된 메커니즘은 하드웨어 합체에 기인한 중복 엔트리들을 검출하는 정밀한 방법을 제공하여, 겹쳐진 페이지로 구성된 잘못 매핑된 변환으로 인해 소프트웨어에 의한 멀티 히트와 하드웨어 합체에 의한 멀티 히트의 분명한 구분을 가능하게 한다. 또한, 도 7에 도시된 바와 같이, 이 프로세스는, 더 큰 페이지 사이즈에 대한 룩업 동작 중에 히트 벡터, 이 경우에는 2MB 및 512MB 페이지 사이즈와 관련된 히트 벡터 360, 362가 출력되는 것을 기다리지 않고 개시될 수 있다.
일단 룩업 동작(350)이 완료되면, 멀티 히트 검출 스텝 390가, 다중 히트가 있는지를 판정하기 위해서 수행될 수 있다. 이 프로세스는 히트 벡터 352, 354, 356, 358, 360 및 362 모두를 논리적으로 OR하고, 결과가 하나 이상의 비트 세트를 포함하는 상황을 검출함으로써 수행될 수 있다.
멀티 히트 검출 스텝의 출력이 실제로 히트가 없었다는 것을 나타내면, 요청된 어드레스 변환 데이터를 검색하기 위해 MMU에 미스 요청이 발행될 수 있다. 이 스텝은 도 7에는 도시되어 있지 않다. 그러나, 멀티 히트 검출 스텝 390에 의해 출력된 결과 벡터가 적어도 하나의 비트 세트를 갖는 것으로 가정하면, 스텝 392에서 단일 히트만이 존재하는지 여부가 판정된다. 존재한다면, 히트 엔트리로부터 어드레스 변환 데이터를 검색하고, 그 정보를 변환 응답으로서 코어(10)로 리턴하기 위해서, 그 히트가 일반적인 방식으로 처리될 수 있다.
그러나, 멀티 히트 상황이 있다고 결정되면, 합체된 멀티 히트 분석 동작(395)이 수행될 수 있는데, 여기서 멀티 히트 검출 스테이지(390)로부터의 멀티 히트는 합체된 멀티 히트 표시에 의해 한정된다. 특히, 합체된 멀티 히트 표시가 설정되지 않으면, 이것은 멀티 히트가 소프트웨어에 의한 문제로 인한 것임을 나타내며, 이 경우에 일 실시 예에서는 TLB 충돌 중단 신호가 이 상황을 플래그하기 위해서 발행된다.
그러나, 합체된 멀티 히트 신호가 설정되면, 이것은 멀티 히트가 하드웨어 합체에 의한 것이라는 것을 나타낸다. 이 경우에, 일 실시 예에서는, 클린업 동작이 TLB 내에서 개시되고, 병렬로 재시도 요청이 코어에 발행된다. 클린업 동작은 TLB 콘텐츠를 갱신하여 중복 엔트리를 제거하는 데 사용되므로, 클린업 동작이 완료될 때까지, 합체된 엔트리만 존재하며, 이전에 멀티 히트를 일으키는 비합체된 엔트리는 무효화되었다. 이 클린업 동작은 코어가 요청을 다시 시도할 때까지, 클린업이 완료되었고, 따라서 요청이 재시도될 때 단일 히트만 검출되는 충분한 시간 내에 수행될 수 있음이 밝혀졌다. 하나의 특정 예시적인 구성에서는, 요청을 재시도하는 코어에서 5개의 사이클 지연이 존재하고, 이러한 5개의 사이클 내에서 클린업 동작이 완료될 수 있으므로, 단지 5개의 사이클의 턴어라운드 레이턴시(turnaround latency)가 발생하여, 이 접근법을 성능기준에 맞는 솔루션으로 만든다.
도 8은 일 실시 예에서 합체된 멀티 히트 표시가 멀티 히트 검출 동작(390)으로부터 멀티 히트 신호를 한정하는 데 어떻게 사용될 수 있는지를 도시하는 도면이다. 특히, 멀티 히트 신호는 멀티 히트 검출 스테이지의 출력에서 다중 히트가 설정될 때 설정되며, 이 멀티 히트 신호는 AND 게이트(397)에 제공된다. 반전된 버전의 합체된 멀티 히트 신호(인버터(396)에 의해 반전된다)는 AND 게이트에 대한 다른 입력으로서 제공된다. 따라서, AND 게이트가 논리 1 값을 출력하면, 이것은 TLB 충돌 중단을 어서트(assert)하기 위해 사용될 수 있는데, 그 경우 합체된 멀티 히트 표시가 논리 0 값이 되어, 다중 히트가 하드웨어 합체로 인한 것이 아니라는 것을 나타낸다는 것을 이해할 것이다. 반대로, 합체된 멀티 히트 표시가 하이로 설정되어, 다중 히트가 하드웨어 합체로 인한 것이라는 것을 나타내면, AND 게이트로부터의 출력은 논리 0 값이 될 것이고, 이것은 클린업 동작을 시작하여, 코어에 대한 재시도 요청을 발행하는 데에 사용될 수 있다.
도 9a 및 9b는 코어로부터 새로운 가상 어드레스를 수신하면 도 4의 액세스 제어 회로(180)에 의해 수행되는 이벤트들의 시퀀스를 완전하게 도시한 흐름도이다. 스텝 400에서, 새로운 가상 어드레스가 대기되고, 새로운 가상 어드레스가 코어로부터 수신될 때, 룩업 동작이 스텝 405에서 개시된다. 도 7의 앞서 논의한 것으로부터 명백한 것처럼, 룩업 동작은 완료하는 데 시간이 걸리며, 특정 페이지 사이즈에 대한 히트 벡터(20)는 상이한 시간에 생성된다.
스텝 410에서, 합체된 멀티 히트 신호 생성에 필요한 히트 벡터가 이용 가능한지 여부가 결정된다. 이들 히트 벡터가 이용 가능해지면, 스텝 415에서, 합체된 히트 벡터 및 비합체된 히트 벡터는 필요한 히트 벡터와 합체된 엔트리 벡터를 이용해서 생성된다. 이것은, 예를 들어, 도 7의 이전에 기술된 동작 370, 375를 이용하여 수행될 수 있다.
스텝 420에서, 합체된 히트 벡터 및 비합체된 히트 벡터 둘에 대해 OR 감소(OR-reduce) 동작을 수행하고, 이들 출력을 함께 논리적으로 AND하여, 합체된 멀티 히트 신호를 생성한다. 이것은, 예를 들어, 도 7에 도시된 동작 380, 382, 384에 의해 수행될 수 있다.
스텝 425에서, 룩업 동작이 완료되었는지 여부가 결정되고, 룩업 동작이 완료되면, 스텝 430에서, 예를 들어 도 7을 참조하여 이전에 설명한 멀티 히트 검출 동작 390을 이용하여 이들 히트 벡터의 논리 OR 연산을 수행함으로써 모든 히트 벡터가 재검토된다.
그 후, 스텝 435에서, 적어도 하나의 히트가 있는지 여부가 결정된다. 히트가 없다면, 요구된 어드레스 변환 데이터가 검색되게 하기 위해 스텝 440에서 미스 요청(miss request)이 MMU에 발행될 수 있다. 전형적으로, 일단 그 어드레스 변환 데이터가 MMU로부터 리턴되면, 그것은 코어에 변환 응답을 제공하고, 또한 새로운 어드레스 변환 데이터를 TLB(30)에 할당하는데 사용된다. 이 시점에서 어드레스 변환 데이터를 할당함으로써, 동일한 페이지와 관련된 다음 가상 어드레스가 코어에 의해 발행되면, 히트가 TLB(30)에서 검출될 것이라는 것이 보장된다.
스텝 435에서 적어도 하나의 히트가 있다고 결정되면, 스텝 445에서 실제로 다중 히트가 있는지가 결정된다. 그렇지 않다면, 프로세스는 스텝 450으로 진행하여, 히트 엔트리가 식별되고, 히트 엔트리로부터의 어드레스 변환 데이터를 이용하여 변환 응답이 코어로 리턴된다.
스텝 445에서 다중 히트가 검출되면, 스텝 445에서 합체된 멀티 히트 신호가 설정되었는지 여부가 결정된다. 그렇다면, 이것은 하드웨어에 의한 멀티 히트 상황을 나타내기 때문에, 프로세스는 스텝 460으로 진행하여, TLB에 대해 클린업 동작이 개시되고, 코어에 재시도 요청이 발행된다.
그러나, 합체된 멀티 히트 신호가 설정되지 않은 경우에는, 프로세스는 스텝 465로 진행하여 소프트웨어에 의한 멀티 히트 조건이 발생했다는 것을 플래그(flag)하기 위해 TLB 충돌 중단 신호가 발행된다.
일 실시 예에서, 클린업 동작은 히트한 다수의 엔트리 중 어느 것이 비합체된 어드레스 변환 데이터를 포함하는지를 식별한 다음, 그 엔트리를 무효화하는 것을 포함할 수 있다. 그러나, 또 다른 실시 예에 있어서는, 단순히 히트 엔트리 모두를 무효로 하고 MMU에 미스 요청을 발행하는 것이 더 간단하다는 것이 밝혀졌고, 코어로부터 재시도 요청이 수신되기 전에, MMU 응답이 취득될 수 있고 TLB가 다시 채워지므로(repopulated) 시간상의 불이익을 발생시키지 않는다는 것이 밝혀졌다. 이러한 프로세스는 도 10에 도시되어 있다. 스텝 500에서, 히트 엔트리 모두가 무효화되고, 그 다음 스텝 505에서 미스 요청이 MMU에 발행된다. 그 후, 미스 요청에 의해 MMU가 합체된 어드레스 변환 데이터(통상적으로 이것은 레벨 2 TLB(190)로부터 검색될 수 있음)를 취득할 것이고, 그 후에 그 합체된 어드레스 변환 데이터는 레벨 1 TLB(30)에 할당되도록 액세스 제어 회로(180)로 리턴될 수 있다.
따라서, 스텝 510에서, MMU로부터의 합체된 어드레스 변환 데이터는 TLB의 빅팀 엔트리에 할당될 것이다. 그 후, 스텝 515에서, 코어에 의해 요청이 재시도될 때, 룩업 동작이 수행되고, 이때 단일 히트가 생성되어, 필요한 변환 응답이 코어로 리턴될 것이다.
설명된 실시 예들은 하드웨어 통합으로 이한 TLB에서의 중복 엔트리를 검출하기 위한 정확하고 효율적인 메커니즘을 제공함으로써, 소프트웨어에 의한 다중 히트와 하드웨어 합체로 인한 다중 히트의 명확한 구분을 가능하게 한다는 것이 인식될 것이다. 특히, 2개 이상의 비합체된 페이지로 인한 다중 히트는 합체된 멀티 히트 표시가 설정되도록 하지 않을 것이다. 유사하게, 두 개의 합체된 엔트리 간의 멀티 히트는 합체된 멀티 히트 표시도 설정되도록 하지 않을 것이고, 따라서 소프트웨어에 의한 다중 히트로서 해석될 것이다. 이것은, 설명된 실시 예의 MMU가 더 합체하기 위해서 합체된 엔트리를 사용하지 않기 때문에 적절한 동작이므로, 채용된 하드웨어 합체 기술로 인해 2개의 합체된 엔트리 사이에는 결코 다중 히트가 존재하지 않아야 한다. 논의된 특정 예에서는, MMU가 256KB 페이지 사이즈까지만 합체하는 경우, 512MB 또는 2MB 페이지를 가진 합체된 엔트리의 다중 히트는 항상 소프트웨어에 의한 다중 히트로서 처리되어야 한다. 이것은 2MB 및 512MB 페이지 사이즈에 대한 히트 벡터가 합체된 멀티 히트 표시를 생성하는 데 사용된 연산으로부터 제외되기 때문에, 본 실시 예에서 설명된 구현에서 자동으로 발생한다. 따라서, 합체된 엔트리와 두 개의 큰 페이지 사이즈 중 하나와 관련된 엔트리 둘 모두에 히트가 있을 때는 합체된 멀티 히트 표시가 설정되지 않을 것이고, 그 다중 히트는 룩업 동작이 완료된 후에 멀티 히트 검출 스테이지 390에 의해서 검출될 것이지만, 이것은 합체된 멀티 히트 표시가 클리어됨으로써 TLB 충돌 중단의 트리거(triggering)를 야기할 것이고, 따라서 원하는 동작을 트리거할 것이다.
설명된 실시 예에 있어서, 룩업 동작이 완료된 후에 생성된 멀티 히트 신호는, 이것이 다중 히트의 존재를 나타낼 때, 합체된 멀티 히트 표시의 NOT으로 한정되어 TLB 충돌 중단을 발생시켜 소프트웨어에 의한 다중 히트의 경우를 처리해도 된다. TLB 룩업 동작 중에 합체된 멀티 히트 표시를 생성하기에 충분한 시간이 있음이 밝혀졌으므로, 이것을 논타이밍 크리티컬 구현(non-timing critical implementation)으로 만든다. 또한, 결과적으로, 다중 히트 상황이 하드웨어 합병으로 인한 것으로 판정되면, 룩업 동작 이후의 사이클에서 코어에 대한 히트 백(hit back)의 생성이, 동작을 거부하고 코어가 그 요청을 나중에 재발행하도록 하기 위해서, 제때 억제될 수 있고, 동시에 미스 요청이 MMU에 발행될 수 있다. 코어가 그 요청을 재발행할 준비가 될 때까지는, MMU의 TLB에서 히트가 검출됨으로 인해 레벨 1 TLB에 MMU 응답이 이용 가능하게 됨으로써, 요청이 재시도될 때 다중 히트가 검출되는 것을 피하도록 TLB가 갱신될 수 있다는 것이 밝혀졌다.
본 원에서, "... 하도록 구성된(to configured)"라는 단어는 장치의 구성 요소가 정의된 동작을 수행할 수 있는 구성을 가지고 있는 것을 의미하는 것으로 사용된다. 이 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 구성 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "구성됨"은 정의된 동작을 제공하기 위해 장치 구성요소가 어떤 식으로든 변경되어야 함을 의미하지는 않는다.
본 발명의 예시적인 실시 예가 첨부된 도면을 참조하여 본원에 상세히 설명되었지만, 본 발명은 이러한 정확한 실시 예에 한정되지 않으며, 다양한 변경, 추가 및 수정이 첨부된 청구범위에 의해 한정된 것처럼 본 발명의 범위 및 사상으로부터 벗어나지 않고 본 기술분야의 당업자에 의해 이루어질 수 있음을 이해해야 한다. 예를 들어, 종속 청구항의 특징의 다양한 조합이 본 발명의 범위를 벗어나지 않고 독립 청구항의 특징으로 만들어질 수 있다.

Claims (20)

  1. 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하고, 각 엔트리가 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지를 식별하고 또 어드레스 변환 데이터와 관련되는 상기 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하도록 되어 있는, 복수의 엔트리를 갖는 어드레스 변환 캐시와,
    가상 어드레스에 응답해, 상기 어드레스 변환 캐시 내에서 룩업 동작을 수행하여, 상기 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대하여, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트가 검출되었는지 여부를 나타내는 히트 표시를 생성하는 제어 회로를 구비하고,
    상기 제어 회로는, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시(multi-hit indication)를 판정하도록 구성되며,
    상기 제어 회로는, 룩업 동작이 완료했을 때, 다중 히트가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 다중 히트가 상기 어드레스 변환 캐쉬에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에 기인한 것인지 여부를 판정하도록 더 구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 어드레스 변환 캐시에 의해 지지되는 페이지 사이즈는 합체된 어드레스 변환 데이터와 관련될 수 없는 하나 이상의 페이지 사이즈를 포함하고,
    상기 제어 회로는 히트 표시의 서브세트 외부의 적어도 하나의 나머지 히트 표시의 룩업 동작 시에 발생을 기다리지 않고 상기 히트 표시의 서브 세트로부터 합체된 멀티 히트 표시를 판정하도록 구성되며, 각 나머지 히트 표시는 합체된 어드레스 변환 데이터와 관련될 수 없는 페이지 사이즈와 관련이 있는, 장치.
  3. 제 2 항에 있어서,
    상기 히트 표시의 서브세트는 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시와, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈보다 작은 페이지 사이즈에 대한 적어도 하나의 히트 표시를 포함하는, 장치.
  4. 제 2 항에 있어서,
    상기 나머지 히트 표시는 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈보다 큰 페이지 사이즈와 관련이 있는, 장치.
  5. 제 1 항에 있어서,
    상기 제어 회로는 그 히트 표시와 관련된 페이지 사이즈에 의존하는 타이밍에서 각 히트 표시가 이용 가능하게 되도록, 룩업 동작을 수행하는 Sum-Addressed-Compare 회로를 구비하는, 장치.
  6. 제 1 항에 있어서,
    각 히트 표시는, 관련된 페이지 사이즈의 어드레스 변환 데이터에 대해 히트가 검출되었는지 여부를 엔트리별로 식별하는 히트 벡터를 포함하는, 장치.
  7. 제 6 항에 있어서,
    상기 제어 회로는
    어느 엔트리가 합체된 어드레스 변환 데이터를 포함하는지를 식별하는 정보에 의해 한정된, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대해 각 히트 표시의 히트 벡터들을 논리적으로 결합함으로써 합체된 히트 벡터를 발생하고,
    비합체된 히트 벡터가 도출되는 출력 벡터를 생성하기 위해, 어느 엔트리가 비합체된 어드레스 변환 데이터를 포함하는지를 식별하는 정보에 의해 한정된, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 크기에 대한 각 히트 표시의 히트 벡터들을 논리적으로 결합함으로써 비합체된 히트 벡터를 발생하고,
    합체된 히트 벡터와 비합체된 히트 벡터에 대해 감소 및 결합 동작을 수행하여 합체된 멀티 히트 표시를 발생함으로써
    합체된 멀티 히트 표시를, 판정하도록 구성되는, 장치.
  8. 제 7 항에 있어서,
    상기 제어 회로는 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈보다 작은 페이지 사이즈와 관련된 적어도 하나의 히트 표시의 히트 벡터와 출력 벡터를 논리적으로 결합함으로써 비합체된 히트 벡터를 발생하도록 구성되는, 장치.
  9. 제 7 항에 있어서,
    어느 엔트리가 합체된 어드레스 변환 데이터를 포함하는지를 식별하는 상기 정보는, 그 엔트리가 합체된 어드레스 변환 데이터를 저장하는지 여부를 엔트리별로 식별하는 합체된 엔트리 벡터를 포함하는, 장치.
  10. 제 9 항에 있어서,
    상기 제어 회로는, 부분 결과 벡터를 생성하기 위해서, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터들을 입력으로서 사용하여 OR 연산을 수행하고, 그 다음 합체된 히트 벡터를 생성하기 위해서, 부분 결과 벡터와 합체된 엔트리 벡터를 입력으로서 사용하여 AND 연산을 수행함으로써 합체된 히트 벡터를 발생하도록 구성되는, 장치
  11. 제 9 항에 있어서,
    상기 제어 회로는, 부분 결과 벡터를 생성하기 위해서, 합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 각 히트 표시의 히트 벡터들을 입력으로서 사용하여 OR 연산을 수행하고, 그 다음 비합체된 히트 벡터가 도출되는 출력 벡터를 생성하기 위해서, 부분 결과 벡터와 반전된 버전의 합체된 엔트리 벡터를 입력으로서 사용하여 AND 연산을 수행함으로써 비합체된 히트 벡터를 발생하도록 구성되는, 장치.
  12. 제 7 항에 있어서,
    상기 제어 회로는, 합체된 멀티 히트 표시를 발생하기 위해서, 합체된 히트 벡터를 OR 감소시켜 제1 중간 결과를 생성하고, 비합체된 히트 벡터를 OR 감소시켜 제2 중간 결과를 생성하며, 그 다음 상기 제1 및 제2 중간 결과를 입력으로서 사용하여 AND 연산을 수행함으로써 감소 및 결합 동작을 수행하도록 구성되는, 장치.
  13. 제 1 항에 있어서,
    상기 제어 회로는, 룩업 동작에 의해 다중 히트가 검출되었고, 합체된 멀티 히트 표시가 설정되지 않는다고 판정되는 경우, 소프트웨어에 의한 멀티 히트 이벤트가 발생했다는 것을 나타내는 신호를 발행하도록 구성되는, 장치.
  14. 제 1 항에 있어서,
    상기 제어 회로는, 룩업 동작에 의해 다중 히트가 검출되었고 합체된 멀티 히트 표시가 설정된다고 판정되는 경우, 가상 어드레스를 제공한 소스에 재시도 요청을 발행하고, 상기 어드레스 변환 캐시에서 적어도 하나의 엔트리를 무효화하기 위한 클린업 동작을 개시함으로써, 소스가 가상 어드레스를 재발행할 때, 상기 어드레스 변환 캐시의 하나의 엔트리에서만 히트가 검출되도록 구성되는, 장치.
  15. 제 14 항에 있어서,
    상기 클린업 동작은 룩업 동작 시에 히트를 초래한 비합체된 어드레스 변환 데이터를 적어도 저장하는 엔트리의 무효화를 야기하는, 장치.
  16. 제 14 항에 있어서,
    상기 클린업 동작은 룩업 동작 시에 히트를 초래한 각 엔트리의 무효화, 및 상기 어드레스 변환 캐시의 엔트리에 할당하기 위해 합체된 어드레스 변환 데이터가 제공되도록 하는 메모리 관리 유닛에 대한 요청의 발행을 포함하는, 장치.
  17. 제 1 항에 있어서,
    상기 어드레스 변환 캐시에 저장하기 위해, 다수의 페이지 테이블 디스크립터들로부터 합체된 어드레스 변환 데이터를 발생하는 합체 회로를 더 구비하고, 합체된 어드레스 변환 데이터는 페이지 테이블 디스크립터들의 각각과 관련된 페이지 사이즈의 배수이고 상기 어드레스 변환 캐시에 의해 지지되는 페이지 사이즈들 중 하나인 페이지 사이즈와 관련이 있는, 장치.
  18. 제 1 항에 있어서,
    상기 어드레스 변환 캐시는 가상 어드레스가 대응하는 물리적 어드레스로 변환될 수 있게 하기 위해 전체 어드레스 변환 데이터를 저장하는 데 사용되는 변환 참조 버퍼(TLB)인, 장치.
  19. 제 1 항에 있어서,
    상기 어드레스 변환 캐시는 완전 연관(fully associative) 캐시인, 장치.
  20. 각 엔트리가 가상 어드레스를 메모리 시스템의 대응하는 물리적 어드레스로 변환할 때 사용되는 어드레스 변환 데이터를 저장하고, 각 엔트리가 내부에 저장된 어드레스 변환 데이터가 합체된 어드레스 변환 데이터인지 비합체된 어드레스 변환 데이터인지 여부를 식별하고 또 어드레스 변환 데이터와 관련되는 상기 메모리 시스템 내의 페이지에 대한 페이지 사이즈를 식별하는, 복수의 엔트리를 갖는 어드레스 변환 캐시 내에서 어드레스 변환 데이터를 관리하는 방법으로서, 상기 방법은
    가상 어드레스에 응답하여, 상기 어드레스 변환 캐시 내에서 룩업 동작을 수생하여, 상기 어드레스 변환 캐시에 의해 지지되는 각 페이지 사이즈에 대하여, 관련된 페이지 사이즈의 어드레스 변환 데이터를 저장하는 엔트리에 대해 히트가 검출되었는지 여부를 나타내는 히트 표시를 생성하는 단계와,
    합체된 어드레스 변환 데이터와 관련될 수 있는 페이지 사이즈에 대한 적어도 각 히트 표시로부터, 합체된 어드레스 변환 데이터를 포함하는 엔트리와 비합체된 어드레스 변환 데이터를 포함하는 엔트리 둘 다에 대해 히트가 검출될 때 설정되는 합체된 멀티 히트 표시를 판정하는 단계와,
    룩업 동작이 완료했을 때, 다중 히트가 검출되었는지 여부를 판정하고, 그 경우에 합체된 멀티 히트 표시를 참조하여 다중 히트가 상기 어드레스 변환 캐시에서 합체된 어드레스 변환 데이터와 비합체된 어드레스 변환 데이터 둘 다에 기인한 것인지 여부를 판정하는 단계를 포함하는, 관리 방법.
KR1020180094134A 2017-08-24 2018-08-13 어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법 KR20190022334A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/685,186 US10528480B2 (en) 2017-08-24 2017-08-24 Apparatus and method for efficient utilisation of an address translation cache
US15/685,186 2017-08-24

Publications (1)

Publication Number Publication Date
KR20190022334A true KR20190022334A (ko) 2019-03-06

Family

ID=62975868

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180094134A KR20190022334A (ko) 2017-08-24 2018-08-13 어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법

Country Status (4)

Country Link
US (1) US10528480B2 (ko)
EP (1) EP3454219B1 (ko)
KR (1) KR20190022334A (ko)
CN (1) CN109426624B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176091B2 (en) * 2017-09-29 2021-11-16 Intel Corporation Techniques for dynamic multi-storage format database access
KR20200116375A (ko) * 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
CN111338989B (zh) * 2020-02-12 2021-01-12 合肥康芯威存储技术有限公司 一种存储器及其控制方法与存储系统
CN112560086B (zh) * 2020-12-11 2022-11-08 海光信息技术股份有限公司 一种用于密码协处理器的配置方法、装置、cpu及电子设备
US20230153249A1 (en) * 2021-11-18 2023-05-18 Ati Technologies Ulc Hardware translation request retry mechanism
CN116089116B (zh) * 2022-12-16 2024-05-31 成都海光集成电路设计有限公司 数据处理方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635428B2 (en) 2009-12-09 2014-01-21 Oracle America, Inc. Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US9323691B2 (en) * 2012-03-08 2016-04-26 Freescale Semiconductor, Inc. Multiple page size memory management unit
US9684601B2 (en) * 2012-05-10 2017-06-20 Arm Limited Data processing apparatus having cache and translation lookaside buffer
GB2528842B (en) * 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
GB2543745B (en) * 2015-10-15 2018-07-04 Advanced Risc Mach Ltd An apparatus and method for operating a virtually indexed physically tagged cache
US10540290B2 (en) * 2016-04-27 2020-01-21 Ati Technologies Ulc Method and apparatus for translation lookaside buffer with multiple compressed encodings

Also Published As

Publication number Publication date
CN109426624B (zh) 2023-11-28
US10528480B2 (en) 2020-01-07
EP3454219A1 (en) 2019-03-13
CN109426624A (zh) 2019-03-05
US20190065400A1 (en) 2019-02-28
EP3454219B1 (en) 2021-07-07

Similar Documents

Publication Publication Date Title
KR20190022334A (ko) 어드레스 변환 캐시의 효율적인 이용을 위한 장치 및 방법
US7506105B2 (en) Prefetching using hashed program counter
US7073044B2 (en) Method and apparatus for sharing TLB entries
US5493660A (en) Software assisted hardware TLB miss handler
US6490658B1 (en) Data prefetch technique using prefetch cache, micro-TLB, and history file
EP0175091B1 (en) Fast two-level dynamic address translation method and means
CN100555247C (zh) 在多核/多线程处理器中高速缓存的公平共享
JP2618175B2 (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
US8156309B2 (en) Translation look-aside buffer with variable page sizes
US20060248279A1 (en) Prefetching across a page boundary
US5752274A (en) Address translation unit employing a victim TLB
US10191853B2 (en) Apparatus and method for maintaining address translation data within an address translation cache
US20060248280A1 (en) Prefetch address generation implementing multiple confidence levels
US8190652B2 (en) Achieving coherence between dynamically optimized code and original code
JP6273733B2 (ja) 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US20180157601A1 (en) Apparatus and method for avoiding conflicting entries in a storage structure
Mittal A survey of techniques for architecting TLBs
WO2007031696A1 (en) Cache miss detection in a data processing apparatus
CN108459975B (zh) 用于有效使用地址转换缓存的技术
US10339054B2 (en) Instruction ordering for in-progress operations
KR100308675B1 (ko) 캐쉬어드레스발생방법
US20050027960A1 (en) Translation look-aside buffer sharing among logical partitions
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer
JP2019096307A (ja) 複数のデータ・タイプのためのデータ・ストレージ
GB2616643A (en) Read-as-X property for page of memory address space

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal