KR102448124B1 - 가상 주소들을 사용하여 액세스된 캐시 - Google Patents

가상 주소들을 사용하여 액세스된 캐시 Download PDF

Info

Publication number
KR102448124B1
KR102448124B1 KR1020177020817A KR20177020817A KR102448124B1 KR 102448124 B1 KR102448124 B1 KR 102448124B1 KR 1020177020817 A KR1020177020817 A KR 1020177020817A KR 20177020817 A KR20177020817 A KR 20177020817A KR 102448124 B1 KR102448124 B1 KR 102448124B1
Authority
KR
South Korea
Prior art keywords
address
virtual
virtual address
cache
memory
Prior art date
Application number
KR1020177020817A
Other languages
English (en)
Other versions
KR20170100003A (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 KR20170100003A publication Critical patent/KR20170100003A/ko
Application granted granted Critical
Publication of KR102448124B1 publication Critical patent/KR102448124B1/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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

컴퓨터 아키텍처는 물리적 주소들이 아닌 직접 실행하는 프로세스들로부터의 가상 주소에 의해 액세스되는 메모리 캐시를 제공한다. 단일 물리적 주소로 매핑한 다중 가상 주소들로부터 발생할 수 있는 모호성들(Ambiguities)은 동의어들을 동적으로 추적하고 캐시 액세스를 위해 단일 키 가상 주소가 독점적으로 사용되도록 동일한 물리적 주소에 매핑한 제한된 수의 가상 동의어들을 연결함으로써 처리된다.

Description

가상 주소들을 사용하여 액세스된 캐시
본 출원은 2014 년 12 월 26 일자로 출원된 미국 가출원 62/096,962 및 2014 년 12 월 29 일자로 출원된 62/097,342의 이익을 주장하며, 그 전체가 본 명세서에 참고로 인용된다.
본 발명은 컴퓨터 아키텍쳐들 및 특히 물리적 주소들 대신 가상 주소들에 의해 캐시 콘텐츠(cache contents)의 액세스를 허용하는 메모리 캐시를 제공하는 향상된 컴퓨터 아키텍처(computer architecture)에 관한 것이다.
캐시 메모리들은 비교적 컴팩트하고 신속하게 액세스되는 메모리 구조를 프로세서 가까이에 제공함으로써 프로세서가 메모리 데이터에 액세스하는 데 요구되는 시간을 최소화하는 데 사용된다. 시간적으로 근접한 메모리 액세스들이 로드된 부분(참조의 지역성)에서 클러스터링 하는 경향이 있을 것이라는 예상으로 메인 메모리의 부분들은 캐시 메모리로 로드되며, 따라서 로드될 때, 재로드가 필요하기 전에 캐시 메모리가 프로세서에 의해 다중 메모리 액세스들을 제공하도록 허용한다. 종종 캐시의 다중 레벨들(예컨대, L1, L2, L3)은 캐시 구조에 고유한(inherent) 제한된 스토리지(limited storage) 및 빠른 액세스 간의 트레이드오프들(trade-offs)을 최적화는데 사용된다.
캐시 메모리의 데이터에 액세스하기 위하여, 일반적으로 인덱스 비트(index bits)라고 하는, 데이터에 대한 주소 비트의 제1 세트로부터의 비트 세트는 캐시로 인덱스 하고 인덱스된 엔트리(indexed entry)에서 라인을 선택하는데 사용된다. 일반적으로 태그 비트(tag bits)라고 하는, 주소 비트의 제2 세트로부터의 비트 세트는, 주소 비트의 제2 세트로부터의 비트 세트가 태그 비트의 선택된 세트와 일치하는 경우 선언된(declared) 히트(hit) 및 선택된 엔트리에 대응하는 태그 비트의 세트와 비교된다.
최신 프로세서들에서 실행되는 프로그램들은 일반적으로 메모리에 있는 데이터의 물리적 주소로부터 다른 가상 주소들을 사용하여 메모리에 액세스(읽기 또는 쓰기)한다. 가상 주소들의 사용은, 공지된 바와 같이, 그것들이 다른 프로세스들에 대한 할당에 의해 영향을 주지 않는 연속 메모리 공간을 검증하도록(view) 허용하고, 다른 프로세스의 작동에 의한 하나의 프로세스로부터의 메모리 공간의 오염을 방지하고 가상 주소들을 단지 액티브(active) 하는데 할당될 물리적 메모리를 허용함으로써 다중 프로그램들을 실행하는 것을 간소화한다.
그것들의 장점들에도 불구하고, 프로그램들에 의해 사용된 가상 주소 공간으로부터 컴퓨터 메모리에 의해 요구된 물리적 주소 공간으로 변환을 요구함으로써, 가상 주소 공간의 사용은 메모리 액세스에서의 지연을 증가시킨다. 일반적으로 이 변환은 각 가상 주소 공간과 물리적 주소 공간을 상호-참조하는 엔트리들을 가지는 페이지 테이블들을 통해 수행된다. 일반적으로 페이지 테이블 엔트리는 대응하는 가상 페이지의 데이터에 대한 액세스 권한들을 포함할 수도 있다. 페이지 테이블들은 주소들을 변환하고 필수 액세스 권한들을 체크하는 프로세스 속도를 높이도록 페이지 테이블로부터 최근 액세스한 엔트리들을 캐시에 저장하는 변환 색인 버퍼(TLB; Translation Lookaside Buffer)에 의해 보강될 수 있다. TLB는 고속의 연관성이 높은 스트럭처(fast, highly associative structure)를 사용함으로써 낮은 액세스 대기시간 및 낮은 실패율에 최적화될 수 있다.
가상 메모리를 구비한 시스템에서, 그럼에도 불구하고 캐시 메모리는 물리적 메모리 주소들에 의해 일반적으로 액세스되고, 즉, 캐시 내 데이터를 액세스 하는데 사용되는 주소의 제1 및 제2 비트 세트(예컨대, 인덱스 및 태그)는 모두 동일한 물리적 주소의 부분이다. TLB 및 페이지 테이블을 사용하는 주소 변환의 대기시간은 메인 메모리에 대해 허용 가능하긴 하지만, 이는 주소 변환에 의해 상당히 느려질 수 있는 빈번하고 신속한 액세스를 제공하기 위한 캐시 메모리와 사용될 때 더 부담이 된다. 또한, 높은 연관성의 TLB를 사용한 변환은 에너지가 부족할 것이다.
이상적으로는, 캐시는 프로그램으로부터 가상 주소를 사용하여 직접적으로 액세스될 수 있고, 즉, 캐시 내 데이터에 액세스 하는데 사용된 제1 및 제2 비트 세트(인덱스 및 태그)는 모두 동일한 가상 주소들의 부분들이다. 캐시된 데이터를 액세스 하기 위한 가상 주소의 사용은 TLB 룩업들(TLB lookups)로 인한 에너지 오버헤드 및 대기시간을 제거할 수 있다; 그러나 이는 동일한 물리적 주소에 매핑된(mapped) 별개의 가상 주소의 그룹인 동의어의 가능성에 의해 복잡해진다. 이 에일리어싱(aliasing)(또는 오버랩핑(overlapping))은, 별개의 가상 주소 공간들을 사용하는 다른 프로세스들에 걸쳐 공유된 정보와 같이, (물리적 또는 메인) 내 데이터를 효율적으로 관리하는 것이 가능하고 바람직하다. 이러한 경우들에서, 캐시에 대한 가상 주소지정의 사용은 동일한 물리적 주소(동의어 가상 주소들)에 매핑하는(mapping), 즉, 별개의 가상 주소들 하에 동일한 데이터를 유지하는 여러 다른 캐시 엔트리들을 허용할 수 있다. 복제(duplicates)를 허용하는 것은 캐시 용량을 감소시킨다. 또한 이는 그것들 사이의 일관성 문제를 제시한다. 예를 들어, 하나의 프로세스가 제1 캐시 위치를 사용하여 공통 물리적 주소와 연관된 데이터를 업데이트하면, 제2 프로세서는 제2 캐시 위치를 사용하여 공통 물리적 주소에 대한 최신 값을 읽을 수 없다.
캐시 액세스를 위한 가상 주소들을 사용하는 캐시들에 고유한, 이 문제의 하나의 해결책은, 물리적 주소 도메인에서 가상 주소 에일리어싱(또는 오버랩핑)한 가상주소를 금지하는 것이다. 예를 들어, 단일 물리적 주소로부터의 데이터가 캐시에서 다른 가상 주소들로 캐시되는 것으로부터 방지할 수 있다. 이 해결책은 데이터 참조에 대한 지역성을 이용하는(exploit) 캐시의 기능을 크게 저하시킨다. 마찬가지로, 특히 데이터를 쓸(written) 수 있는 경우, 동일한 물리적 페이지로부터의 데이터가 캐시에서 다른 가상 주소들로 캐시되는 것으로부터 방지할 수 있다. 대안적으로는, 동의어 자체의 발생을 제거하는 단일 글로벌 가상 주소 공간을 사용할 수 있다. 이러한 각각의 해결책들은 소프트웨어에 대한 큰 요구사항들을 제시하며, 이는 실제적인 유용성을 크게 제한한다.
또 다른 일반적으로 사용되는 해결책은 종래 기술에서 가상-인덱스 물리적-태그(VIPT; virtually-indexed physically-tagged) 캐시라고 하는 것이다. 여기서, 엔트리를 선택하기 위해 캐시로 인덱스 하는데 사용된 제1 비트 세트는 가상 주소의 부분이고 선택된 엔트리의 태그 비트와 비교하는데 사용된 제2 비트 세트는 가상 주소에 대응하는 물리적 주소의 부분이다. 이 해결책은 가상 주소의 일부 하위 비트(페이지 오프셋 비트(page offset bits))가 주소 변환의 결과로 변경되지 않는다는 관찰을 이용한다(exploits). 따라서 가상 주소의 이들 하위 비트(대응하는 물리적 주소의 것과 동일함)는 캐시로 인덱스하고 데이터의 액세스를 시작하고 대응하는 엔트리에 있는 비트를 태그하는데 사용될 수 있다. 동시에 TLB는 물리적 주소를 획득하기 위해 액세스된다. 두 작동들이 모두 완료되면, TLB 액세스로부터 획득된 물리적 주소 비트는 캐시 태그에 저장된 물리적 주소 비트와 비교되고, 그것들이 일치하면 히트(hit)가 선언된다. 이러한 접근은 TLB가 캐시 액세스 보다 먼저 액세스 되기보다 동시에 액세스 되기 때문에, 캐시 액세스의 대기시간을 감소시킬 수 있다. 그러나, TLB 액세스 에너지는 여전히 소비되고 따라서 가상 주소로 액세스된 캐시의 에너지 이득은 획득되지 않는다. 또한, 캐시를 인덱스 하는데 사용된 비트 수에 대한 제한(이들 비트는 주소 변환의 결과로서 변경되어서는 안됨)은, 캐시의 구성을 제한하며, 에너지 효율을 달성하는데 바람직할 수 있는 것 보다 더 높은 연관성을 잠재적으로 요구한다.
바람직한 것은 캐시로 인덱스 하고 엔트리를 선택하는데 사용되는 제1 주소 및 선택된 태그 비트와 비교하고 히트를 선언하는데 사용되는 제2 주소가 모두 동일한 가상 주소의 부분들이 되도록 가상 주소로 액세스될 수 있는 캐시를 갖는다는 것이다. 따라서 캐시 내 히트하는 데이터 액세스는 TLB에 액세스하거나 가상에서 물리적 주소 변환을 수행하지 않고도, 가상 주소를 단독으로 사용하여 완료될 수 있다. 이러한 캐시는 캐시 액세스를 완료하기 위한 물리적 주소를 이용하는 설계들에 비해 상당한 액세스 대기시간 및/또는 에너지 소비 이점들을 갖는다. 또한, 소프트웨어에 투과성이 있는 이러한 캐시의 작동 및 그것의 정확한 작동을 보장하기 위해 소프트웨어에 대한 요구사항 없음이 바람직하다.
본 발명은, 많은 중요한 컴퓨터를 사용한 태스크들(computational tasks)에서, 데이터가 캐시에 상주하는 시간과 유사한 짧은 시간 내에, 동의어들이 프로그램의 기간 동안 존재함을 인식하였다: (1) 동일한 물리적 주소에 매핑된 동의어들이 거의 없고, (2) 캐시에 대한 액세스들이 동의어들이 있는 데이터와 거의 일치하지 않음. 본 발명은 소정의 가상 주소(given virtual address)로 캐시에 직접 액세스하고 동의어 가상 주소들을 검출하고 캐시 액세스 이전에 동의어 가상 주소를 선택된 키 가상 주소로 효율적으로 변환함으로써, 이러한 관찰들을 이용한다. 캐시된 데이터의 수명 동안 동의어들의 상대적으로 부족하기 때문에 적당한 크기의 데이터 스트럭처들로 동의어들을 추적하는 것이 실용적이다.
구체적으로, 본 발명은 물리적 주소들에 스토리지(storage)를 갖는 메모리와 함께 사용하기 위한 전자 프로세서 아키텍처를 제공한다. 아키텍처는 프로세서(processor), 메모리 캐시(memory cache), 가상 주소들에 의해 메모리 캐시에 물리적 주소들의 메모리 데이터를 캐싱하는 캐시 제어 회로(cache control circuit), 및 프로세서로부터의 가상 주소와 물리적 주소 간의 변환을 위한 변환 회로를 포함한다. 또한, 아키텍처는 캐시에 대한 액세스를 위해 프로세서로부터 소정의 가상 주소를 수신하는 동의어 추적 회로(synonym tracking circuit)를 포함한다: (1)소정의 가상 주소가 캐시 내 데이터의 동일한 소정의 물리적 메모리 주소(same given physical memory address)에 매핑한 다른 가상 주소(other virtual address)와 동의어인지 결정하고; 및 (2) 소정의 가상 주소가 동의어일 때, 메모리 캐시를 위한 액세싱 주소(accessing address)로서 다른 가상 주소를 사용하여 메모리 캐시를 액세스함.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어들을 추적하고 단일 지정된 (키) 가상 주소를 사용하여 모든 캐시 요청들을 함으로써, 가상 주소들을 사용하여 액세스되는 캐시에서 가상 주소의 가능한 에일리어싱 또는 오버랩핑을 수용하는 것이다.
소정의 가상 주소가 다른 가상 주소와 동의어가 아닐 때, 동의어 추적은 메모리 캐시를 위한 액세싱 주소로서 소정의 가상 주소를 사용하여 메모리 캐시를 액세스할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어가 있지 않은 지배적인 상황에서 가상 메모리 주소들을 사용하여 캐시에 보다 신속한 직접 액세스를 허가하는 것이다.
캐시 제어기는 소정의 가상 주소가 또 다른 가상 주소와 동의어인지 결정하는 동의어 추적 회로와 동시에 소정의 가상 주소를 사용하여 메모리 캐시의 액세스를 준비할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어들이 없을 때 동의어 추적에 수반한 지연을 감소시키는 것이다.
동의어 추적 회로는 소정의 가상 주소들이 데이터의 동일한 물리적 메모리 주소에 매핑된 다른 가상 주소와 동의어인지 결정하기 위한 동의어들인 가상 주소들의 제1 테이블(ART라고 함)을 포함할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 짧은 시간프레임(short timeframe) 내 예상되는 낮은 수의 액티브 동의어들(active synonyms)과 일치하는 동의어들을 모니터링하는 간단하고 컴팩트한 방법을 제공하는 것이다.
동의어 추적 회로는 소정의 가상 주소가 제1 테이블에 있을 가능성이 있는지를 나타내는 제1 테이블의 압축된 서명(compressed signature)을 포함할 수 있고, 동의어 추적 회로는 압축된 서명을 먼저 체크할 수 있고 소정의 가상 주소가 제1 테이블에 있음을 압축된 서명이 나타내는 경우에만 제1 테이블을 체크할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어가 존재하지 않는 공통 상황에서 제1 테이블의 완전한 검토를 바로 가기로 하는(shortcut) 것이다.
소정의 가상 주소와 연관된 물리적 주소를 결정하고, 결정된 물리적 주소를 물리적 주소와 지정된 (키) 가상 주소를 링크하는 제2 테이블에 적용하고, 결정된 물리적 주소가 제2 테이블 내 (키) 가상 주소에 링크할 때, 메모리 캐시를 위한 액세싱 주소로서 제2 테이블의 가상 주소를 사용함으로써, 동의어 추적 회로는 메모리 캐시의 캐시 미스에 응답할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어들이 제1 테이블의 가상 주소들에 의해 링크되지 않을 때, 공통 물리적 주소에 의해 "숨겨진(hidden)" 동의어들의 식별을 허가하는 것이다.
동의어 추적 회로는 액세싱 주소를 물리적 주소로 변환하기 위해 페이지 테이블 및 변환 색인 버퍼를 사용할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 동의어들을 결정할 목적으로 종래의 변환 회로(즉, TLB)를 활용할 수 있다는 것이다.
제1 테이블, 제2 테이블 및 캐시 라인은 가상 주소에 링크된 메모리 액세스 허가를 포함할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 본 발명에 의해 가능해진 바와 같이 페이지 테이블 정보를 컨설트 할 필요 없이 가상 주소들에 의해 액세스되는 캐시에 대한 메모리 액세스 허가들(memory access permissions)을 처리하는 것이다.
전자 프로세서는 로드 큐 및 스토어 큐를 사용하는 비순차 프로세서(out of order processor) 일 수 있고, 로드 큐 및 스토어 큐는 키 가상 주소에 링크된 데이터를 저장할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 가상 주소가 프로그램 실행의 잠재적 오류들의 위험 없이 로드 큐 및 스토어 큐에서 사용되도록 허가하는 것이다. 캐시 메모리의 라인들은 대응하는 가상 주소에 링크된 제2 테이블의 대응하는 엔트리에 대한 인덱스를 보유할 수 있고, 동의어 추적 회로는 캐시 메모리의 라인들이 축출될(evicted) 때 제2 테이블 내 엔트리를 업데이트하도록 이 인덱스를 수신할 수 있다.
따라서, 본 발명의 적어도 일 실시예의 특징은 제2 테이블의 엔트리들의 업데이트를 조정하기 위하여 가상 주소들을 물리적 주소들로 변환할 필요를 제거하는 것이다.
이러한 특정 목적들 및 이점들은 청구항들에 속하는 일부 실시예에만 적용될 수 있으며, 따라서 본 발명의 범위를 한정하지 않는다.
도 1은 캐시 제어기, 변환 색인 버퍼, 동의 추적 회로를 사용하는 메모리 관리 유닛을 보여주는 본 발명에 따른 가상 주소들에 응답하는 캐시를 사용하는 컴퓨터 아키텍처의 블록도이다.
도 2는 메모리 액세스 요청에 응답하고 가상 주소를 갖는 메모리 관리 유닛의 작동의 흐름도이다.
도 3은 동의어 추적 회로에 사용된 동의어 서명의 도면이다.
도 4는 동의어 추적 회로에 사용된 주소 재매핑 테이블의 도면이다.
도 5는 동의어 추적 회로에 사용된 액티브 동의어 검출 테이블의 도면이다.
도 6은 캐시 내 단일 캐시 라인 엔트리의 도면이다.
도 7a-7d는 동의어 추적 회로 및 주소 재매핑 테이블에 대한 액세스가 파이프라인 프로세서에서 분배되는 다수의 실시예들을 도시한다.
이제 도 1을 참조하면, 컴퓨터 프로세싱 시스템(computer processing system)(10)은 네트워크, 터미널들, 등과 같은 다른 장치들(15) 및 하기 설명될 다양한 요소들로 구성된 메모리 시스템(memory system)(16)과 통신하는 하나 이상의 프로세서 시스템들(processor systems)(12)을 제공할 수 있다.
각 프로세서 시스템(12)은 메모리 관리 유닛(MMU; memory management unit)을 통해 메모리 시스템(16) 및 특히, L1캐시(18a) 및 L2 캐시(18b)와 같은 하나 이상의 캐시들(18)과 통신하는 프로세서(13)를 포함할 수 있다. 프로세서 시스템(12)은 랜덤 액세스 메모리 디스크 장치들 등을 포함하는 물리적 메모리(20)와 차례로 통신하는 하위 레벨 캐시(lower level cache)(예컨대, L3 캐시(18c))를 가질 수 있다. 프로세서(13)는 연산 및 논리 작동들(arithmetic and logical operations), 메모리 액세싱 작동들(memory accessing operations) 및, 조건적 브랜치들(conditional branches) 등을 포함하는 흐름 제어 작동들(flow control operations)을 포함하는 표준 컴퓨터 명령들을 실행하는 기능을 제공할 수 있다. 프로세서(13)는 하기 설명되는 바와 같이 당 업계에서 일반적으로 이해되는 기능을 제공하는 로드 큐(load queue)(17) 및 스토어 큐(store queue)(19)를 포함할 수 있다.
MMU(14)는 당 업계에서 일반적으로 이해되는 기술들에 따라서 캐시(18)의 축출(evicting) 및 로딩 라인들(evicting and loading lines)을 포함하는 물리적 메모리(20)로부터 캐시(18)의 업데이트를 제공하는 캐시 제어기(cache controller)(22)를 포함할 수 있다. 하기 더 상세하게 설명하는 바와 같이, MMU(14)는 캐시(18a)에 데이터를 저장하여 물리적 주소들 보다 가상 주소들에 의해 액세스될 수 있도록 한다. 데이터는 예를 들어 다른 캐시들(18b 및 18c)에 저장될 수 있어서, 그것은 가상 주소들에 의해 또는 물리적 주소들에 의해 액세스될 수 있다. 이와 관련하여, 캐시 제어기(22)는 물리적 주소(Pb)를 제공하기 위해 가상 주소(Vb)의 가상 주소 공간으로부터 물리적 메모리(20)의 물리적 주소 공간으로의 매핑을 결정할 수 있는 변환 색인 버퍼(TLB)(26)와 통신할 수 있다. 이 물리적 주소(Pb)는 캐시(18)에서 캐시 미스가 있으면 라인들(30)을 통해 물리적 메모리(20)에 액세스하는데 궁극적으로 사용될 것이다. 다음의 설명에서, 가상 주소들(예컨대, Vb)은 저장된 데이터를 고유하게 식별하는데 필요한 전체 가상 주소 및 캐시(18)와 같은 스트럭처들을 인덱싱하기 위해 사용되는 가상 주소의 서브세트(subset) 모두를 참조하는데(refer) 사용될 것이다. 특정 용도는 문맥에서 분명하게 알 수 있다.
당 업계에서 이해되는 바와 같이, TLB(26)는 가상 주소 공간과 물리적 주소 공간 간의 최근의 변환들을 캐시에 제공한다. 특정 가상 주소(Vb)에 대한 매핑이 TLB(26)에서 발견되지 않으면, 캐시 제어기(22)는 하나 이상의 페이지 테이블들(28)과 컨설트(consult) 할 수 있고, "페이지 워크(page walk)"를 함으로써, 필요한 변환을 획득할 수 있다. TLB(26) 또는 페이지 테이블들(28)에 대한 액세스는 시간 및 에너지-소비가 있고 바람직하게 회피된다. 페이지 테이블(28)은 부분적으로 캐시들(18)에 그리고 점선으로 표시된 박스(20, 18)에 의해 일반적으로 인딕트되는(indicted) 물리적 메모리(20)에 부분적으로 저장될 수 있다.
또한, MMU(14)는 하기 설명되는 바와 같이 일 실시예에서 액티브 동의어 서명(active synonym signature)(SS)(32), 주소 재매핑 테이블(ART; Address Remapping Table)(34)을 제공하는 제1 테이블, 및 액티브 동의어 검출 테이블(ASDT; Active Synonym Detection Table)(36)을 제공하는 제2 테이블을 포함할 수 있는 동의어 회로(synonym circuit)(35)를 포함한다.
가상 주소들을 사용하는 캐시 액세스의 개요
MMU(14)는 주소 라인들(24)을 통해 프로세서(13)로부터 메모리 액세스 요청들을 수신하고, 요청들은 액세스될 데이터의 가상 주소(Vb)를 포함한다. 이들 요청들은 Vb가 실제로 캐시(18) 내 동일한 데이터를 액세스 하는데 사용되는 다른 액티브 가상 주소(키 가상 주소(key virtual address))의 액티브 동의어(active synonym)인지 결정하는 동의어 회로(35)의 ART(34) 및 SS(32)로 전송될 수 있다. 용어 "액티브"는 현재 캐시(18)에 있는 데이터에 매핑하는 가상 주소들을 나타낸다.
SS(32)가 액티브 동의어가 없음을 나타내면, 가상 주소 Vb는 가상 주소(Vb)가 키 가상 주소인 것으로 예상하여 직접 캐시(18)에 액세스 하는데 사용된다.
한편, SS(32)가 Vb가 액티브 동의어일 수 있음을 나타내면, 가상 주소 Vb는 이 관계를 확인하고 Vb가 동의어인 키 가상 주소(예컨대, Va)를 식별하는 주소 재매핑 테이블(ART)(34)로 패스된다(passed).
액티브 키 가상 주소를 식별하면, Va는 메모리 캐시(18)를 액세스 하는데 대신 사용된다.
상기 절차는 Vb가 다른 액티브 가상 주소(키 가상 주소)의 동의어이거나 Vb가 키 가상 주소인 경우를 포함하는, 대부분의 경우들에서 페이지 테이블들(28)을 통해 워크를 할 필요(the need to do a walk) 또는 TLB(26)에 의한 프로세싱 없이 가상 주소들을 사용하는 캐시(18)에 프로세서(13)에 의한 직접 액세스를 허용한다.
메모리 캐시(18)에서 캐시 미스가 있는 경우, 캐시 제어기(22)는, SS(32) 또는 ART(34)에 의해 현재 식별되지 않지만, 동일한 물리적 주소 Px에 매핑된 알려진, 액티브, 키 가상 주소(a known, active, key virtual address)와 소정의 가상 주소(Vb)를 비교함으로써 검출할 수 있는 Vb에 대한 알려지지 않은 동의어가 있을 수 있는지 결정하도록 ASDT(36)를 참조한다(refers). 이러한 숨겨진 동의어가 검출되고, 필요한 캐시 라인(71)이 ASDT(36)에 의하여 이용가능한 경우, 메모리 캐시(18)는 키 가상 주소 Va를 사용하여 다시 액세스된다. 그렇지 않으면 액세스는 캐시의 다른 레벨들 또는 물리적 메모리(20)에 제출되고 이 액세스가 완료되면, 획득된 데이터는 가상 주소 Va로 인덱싱된 캐시(18)에 저장된다. 어느 경우에나, SS(32), ART(34), 및 ASDT(36)는 필요에 따라 업데이트된다.
가상 캐시 작동의 자세한 설명
도 2를 참고하면, MMU(14)는 프로세스 블록(process block)(40)에 의해 나타낸 바와 같이 메모리 액세스를 위해 소정의 가상 주소 Vb를 수신할 수 있다. 바람직한 실시예에서, 이 소정의 가상 주소 Vb는 결정 블록(decision block)(52)에 따라서 SS(32)에 대해 체크된다(checked).
또한 도 3을 참고하면, 예를 들어, 소정의 가상 주소 Vb를 수신하면, SS(32)는 SS(32) 내 비트 벡터(bit vector)(48)의 특정 비트(46)에 대한 포인터(pointer)를 생성하도록 해시 코더(hash coder)(44)를 사용하여 소정의 가상 주소 Vb를 해싱(hashing)함으로써 소정의 가상 주소 Vb를 프로세스한다. Vb가 액티브 동의어 가상 주소일 가능성이 높다면 포인트된 비트(46)는 설정될 것이다. 이는 ART(34)에 소정의 가상 주소 Vb에 대한 엔트리가 있을 가능성이 있음을 나타낸다. 해시 인덱싱은 매우 빠르지만 ART(34)에 대한 성공 가능성을 제공할 뿐이며, 하기 설명되는 바와 같은 ART(34)의 검토(review)를 요구하는 동의어를 나타내지 않는다.
SS(32)에서, 비트 벡터(48)의 각 비트(46)는 ART(34) 내 연관된 엔트리의 수(또는 ART(34) 내 비트(46)에 매핑되는 가상 주소들)를 나타내는 비트 카운터(50)와 연관될 수 있다. 카운터(50)의 카운터 값은 더 이상 ART(34)에서의 유효한 동의어 데이터의 해시가 아닌 비트(46)를 리셋하기 위하여 비트 벡터(48)가 업데이트되도록 허용한다. 또한, 카운터(50)는, 모든 동의어가 ART(34)로부터 축출되기 전에, 해시 코더(hash coder)(44)가 다중 동의어들을 동일한 비트(46)에 매핑하는 경우, 비트(46)의 리셋을 방지한다.
결정 블록(52)에서, SS(32) 내 관련 비트(relevant bit)(46)가 Vb가 액티브 동의어 가상 주소가 아님을 나타내는 경우, 캐시(18)는 Vb 를 사용하여 화살표(41)에 의해 나타낸 바와 같이 프로세스 블록(42)에서 직접 액세스된다.
결정 블록(52)에서, SS(32) 내 관련 비트(46)가 Vb가 동의어 가상 주소일 가능성을 나타내는 경우, MMU(14)는 프로세스 블록(54)으로 진행하고 ART(34)는 동의어 가상 주소 Vb가 연관되는 키 가상 주소를 식별하는데 사용된다.
또한 도 4를 참고하면, ART(34)는 (도 1의) 주소 라인들(24)을 통해 수신된 가상 주소가 비교될 것인 동의어 가상 주소(56)에 각각 대응하는 행들(rows)로서 표현된 다중 엔트리들을 제공할 수 있다. 임의의 "알려진" 액티브 동의어 가상 주소들(56)(예컨대, Vb)는 ART(34)에 열거될 것이고 ART(34)에서도 단일 키 가상 주소(58)(예컨대, Va)로 매핑될 것이다. 또한, ART(34)는 특정 메모리 주소들(예컨대, Vb)가 당 업계에 알려진 메모리 관리의 표준으로 읽거나 쓰여질 수 있는지 여부를 제어하도록 동작하는 메모리 액세스 "허가들"("permissions")(59)을 보유할 수 있다.
가상 주소 Vb가 ART(34)에 적용되면, ART(34)의 허가들(59)은 메모리 액세스가 적절한지 확인하도록 평가된다. 그렇지 않은 경우, 당 업계에서 이해되는 바와 같이, 메모리 액세스 위반 예외로서 요청을 처리하게 하는 에러가 생성된다.
허가들(59)이 원하는 액세스를 허용하는 경우, 결정 블록(61)에서, ART(34)에서의 동의어 가상 주소들(56) 중 하나에 따라 동의어Va와 가상 주소 Vb 의 일치가 있는지 결정된다. 이러한 일치가 있는 경우, 대응하는 키 가상 주소(58)(예컨대, Va)는 화살표(55)에 따라 캐시(18)에 직접 적용된다.
결정 블록(61)에서 가상 주소 Vb에 대한 ART(34) 내 일치하는 동의어가 없는 경우, 가상 주소 Vb는 화살표(57)에 따라 캐시(18)에 직접 공급된다.
도 6을 참조하면, 캐시(18) 내 각 캐시 라인(71)은 캐시 라인(71)의 데이터(65)가 연관되는 가상 주소(63)로부터 태그 비트 세트를 제공할 수 있다. 즉, 올바른 기능을 위해 TLB 액세스를 요구하고 가상으로 인덱싱 되지만 물리적으로 태그된 캐시 스트럭처들과 대조되어 캐시(18)는 가상으로 인덱싱 되고 가상으로 태그된다. 또한, 캐시 라인(71)은 하기 설명되는 바와 같은 ASDT(36)에 대한 엔트리 식별 인덱스 값(entry identification index value)(69) 및 허가 데이터(permission data)(62)를 제공할 수 있다.
프로세스 블록(42)의 캐시 액세싱 프로세스가 완료되면, 결정 블록(60)에서 검출된 성공적인 캐시 히트(캐시 미스 없음)가 있을 수 있다. 동의어가 ART(34)에서 발견되는 경우에서, 캐시 라인(71)에서의 허가 데이터(62)는 ART(34)에서의 허가에 찬성하여 무시된다. 동의어가 ART(34)에서 발견되지 않는 경우에서, 허가 데이터(62)는 액세스가 허용되어야 하는지를 결정하는데 이용된다. 이 경우에서 액세스 허가들이 원하는 액세스를 허가하지 않으면, 당 업계에서 이해되는 바와 같이 메모리 액세스 위반 예외로서 요청을 처리하게 하는 에러가 생성된다. 그렇지 않으면, 데이터(65)는 액세스되고 액세스 프로세스는 프로세스 블록(64)에 의해 나타낸 바와 같이 완료된다.
결정 블록(60)에서 캐시 미스가 검출되면, Vb(또는 Va)로 인덱싱된 캐시(18)에 엔트리가 없다는 것을 의미하고, 캐시 제어기(22)는 프로세스 블록(67)으로 진행한다. 프로세스 블록(67)에서, 소정의 가상 주소 Vb는 소정의 가상 주소 Vb와 연관된 대응하는 물리적 주소(예컨대, Pb)를 획득하도록 TLB(26)(및 가능하게는 페이지 테이블들(28))에 적용된다. 이 물리적 주소 Pb는 ASDT(36)에 적용되어 "숨겨진" 동의어를 찾는다.
또한 이제 도 5를 참조하면, ASDT(36)는 캐시(18)에 있는 것으로 알려진 액티브 물리적 주소들(active physical addresses)(68)(Px)에 대응하는 행들로서 표현된 다중 엔트리를 갖는 논리 테이블을 제공할 수 있다. 또한, ASDT(36)의 각 행에서, 물리적 주소 Px에 링크되는 것은 물리적 주소(68)에 대한 단일 키 가상 주소(58)이다. 또한, ASDT(36)는 키 가상 주소(58)와 연관된 데이터에 대한 액세스 허가들을 제공하는 전술한 것과 유사한 허가들(73)을 포함할 수 있다.
또한, ASDT(36)의 각 행은 각각의 물리적 주소 Px와 연관된 캐시(18) 내 물리적 주소의 특정 라인을 나타내는 비트 벡터(72)를 포함할 수 있다. 따라서, 비트 벡터(72)는 캐시(18) 내 데이터의 식별에서 라인 레벨 해상도(line level resolution)를 제공한다. 예를 들면, 물리적 주소(68)는 페이지(예컨대, 4 킬로바이트)이면, 비트 벡터(72)의 각 비트(74)는 페이지의 대응하는 라인(64 바이트)이 캐시(18)에 등록될 때 설정될 것이다.
카운터(76)는 비트 벡터(72)에 비트(75)의 수의 합을 제공할 수 있어 캐시(18)의 모든 라인들이 축출되었을 때 ASDT(36)의 행의 엔트리가 무효화될 수 있고 카운터는 특정 물리적 주소 Px에 대해 0의 값을 가진다. 따라서 카운터(76)는, 하기 설명되는 ASDT(36)을 업데이트에서, 더 이상 유용하지 않을 때 ASDT(36)의 행들을 축출하는데 사용될 수 있는 유효 비트와 같이 동작한다. 또한, ASDT(36)는 하기 설명되는 바와 같이 액티브 동의어 검출 비트(active synonym detection bit)(79)를 포함할 수 있다.
저장되어야 하는 새로운 라인에 대한 이용가능한 엔트리가 없을 때, ASDT(36)의 유효 라인을 축출할 필요가 있을 수도 있다. 페이지 정보 변경들(예컨대, 물리적 주소(68) 또는 허가들(59)에서의 변경들) 또는 캐시(18)의 플러싱은 또한 캐시(18) 내 모든 대응하는 라인이 축출되어야 한다고 요구하는 ASDT(36)의 다른 유효 라인들의 무효화를 트리거 할 수 있다. SS(32) 및 ART(34)에서의 관련 액티브 동의어들도 축출되어야 한다. 이 프로세스는 ASDT(36)와 관련하여 상술한 액티브 동의어 검출 비트(79)의 사용을 통해 보조될 수 있다. 대안적인 실시예에서, ART/SS는 이때 전체적으로 플러시(flushed) 될 수 있다.
결정 블록(78)에서, ASDT(36)에 적용된 바와 같이, 프로세스 블록(67)으로부터 물리적 주소 Pb가 캐시(18) 내 데이터와 연관된 액티브 물리 주소들(68) 중 하나와 일치하지 않으면, 새로운 데이터는 캐시(18)에 추가해야 할 것이며, 캐시(18)는 하기 설명되는 바와 같이, ASDT(36)뿐만 아니라, 프로세스 블록(80)에 따라, 업데이트 된다.
한편, 결정 블록(78)에서, 물리적 주소 Pb가 ASDT(36)에서 발견되면, 결정 블록(84)에서, 소정의 가상 주소 Vb가 ASDT(36) 내 키 가상 주소(58)와 동일하고 Pb와 연관되는지를 결정한다.
결정 블록(84)에서, 소정의 가상 주소 Vb가 ASDT(36)에 있으면, 캐시 미스는 물리적 주소 Pb의 적절한 라인이 캐시(18)로부터 있지 않음으로써 야기된다는 것을 가정해야 한다. 이것은 새로운 데이터가 캐시(18)에 추가될 것을 요구하고 캐시(18)는 ASDT(36)뿐만 아니라 프로세스 블록(80)에 따라 업데이트 된다.
한편, 결정 블록(84)에서, 소정의 가상 주소 Vb가 ASDT(36)에 없으면, 프로세스 블록(85)에서 ART(34) 및 SS(32)를 적절하게 업데이트함으로써, ASDT(36)(예컨대, Ve)에 있는 키 가상 주소에 대한 동의어로서의 Vb의 역할은 기억된다(memorialized). 이 때, ASDT(36)에서의 액티브 동의어 검출 비트(79)는 설정될 수 있다. 소정의 가상 주소 Vb에 의해 요구되는 필요한 캐시 라인(71)이 메모리 캐시(18)에 있는지를 알기 위해 ASDT(36)는 체크된다(예컨대, 비트 벡터(72)의 대응하는 비트(74)가 ASDT(36)에 설정되는지를 체크함으로써). 그렇다면, 라인(89)에 의해 표시된 바와 같이, 캐시(18)로의 액세스는 ASDT(36)에서 발견된 키 가상 주소 Ve를 사용하여 프로세스 블록(42)에 의해 제공될 수 있다.
결정 블록(88)에서, 필요한 라인이 ASDT(36)에 없다면, 캐시(18) 및 ASDT(36)은 프로세스 블록(80)에 따라 업데이트된다.
프로세스 블록(80)에서 캐시 제어기(22)는 캐시(18)를 업데이트하도록 허용되고, 업데이트가 성공적이면 ASDT(36)는 적절하게 업데이트된다. ASDT(36)가 임의의 가상 주소 하에서 원하는 데이터를 갖지 않으면(결정 블록(78)에서 "아니오"), 이 업데이트는 (이제 키 가상 주소(58)가 될 것인) 업데이트와 연관된 제1 열에서의 물리적 주소 Pb 및 제2 열에서의 소정의 가상 주소 Vb를 ASDT(36)에 추가하고 비트 벡터(72)의 적절한 비트(74)는 설정되고 카운터(76)는 증가된다. 적절한 비트(74)는 소정의 가상 주소 Vb로부터 도출가능한(derivable) 오프셋 값으로부터 추론될(deduced) 수 있다. ASDT(36)가 소정의 물리적 주소(given physical address)(Pb)의 페이지에 대한 엔트리를 가지지만 필요한 데이터 라인을 포함하지 않으면(결정 블록(84)에서 "네"), 캐시(18) 내 새로이 등록된 데이터에 대한 비트 벡터(72)의 적절한 비트(74)가 설정되고 카운터(76)는 증가된다. ASDT(36)가 소정의 물리적 주소(Pb)의 페이지에 대한 엔트리를 가지지만 상이한 가상 주소(different virtual address)(Ve)에 링크되고 필요한 데이터 라인이 없으면(결정 블록(88)에서 "아니오"), 캐시(18)에서 새로이 등록된 데이터의 비트 벡터(72)의 적절한 비트(74)가 설정되고, 카운터(76)는 증가되며 ART(34) 및 SS(32)는 이 새로운 동의어를 반영하도록 적절하게 조정된다.
ASDT(36)의 희생 엔트리(victim entry)는, 0이 아닌 카운터 값을 갖는 행 또는 ASDT(36)의 무효 행(invalid row)(즉, 카운터(76)이 0인)과 연관된 물리적 주소(68) 을 선택하기 위해 ASDT(36)를 관찰함으로써 결정될 수 있다. 전자의 경우에서, 카운터가 0인 무효 행은 여전히 캐시(18)에 의존하고 있는 유효 라인들이 없음을 나타낸다. 후자의 경우에서, 축출될 희생 엔트리의 결정은 당 업계에서 알려진 임의의 수의 다양한 정책들을 사용하여 수행될 수 있다. 0이 아닌 카운터 값을 갖는 엔트리가 ASDT로부터 축출되도록 선택될 때, 캐시에 여전히 존재하는 엔트리에 의해 추적된 라인들(이는 비트 벡터(72)의 대응하는 비트(74)에서 0이 아닌 값에 의해 나타낼 수 있음)은 먼저 캐시(18)로부터 축출되고, 이에 따라 카운터 값은 0으로 내려가고 따라서 ASDT 엔트리를 문제 없이 축출되도록 허용한다. ASDT 내 엔트리가 축출될 때, ART 및 SS 내 연관된 엔트리들은 또한 필요에 따라 무효화 및/또는 업데이트될 필요가 있다.
일반적으로, 캐시(18)는 통상적인 캐시로서 실질적으로 동일한 것이지만, 가상 주소들에 의해 액세스된다. 가상 주소들은 동음 이의어 문제(homonym issue)를 해결하기 위하여 당 업계에서 일반적으로 이해되는 바와 같이 주소 공간 식별자들(ASID; address space identifiers)과 결합될 수 있다.
이제 도 1, 2, 5 및 6을 참조하면, 캐시(18)이 업데이트 되어야 하고 캐시 라인(71)이 축출될 때, 축출된 라인에 대응하는 ASDT(36) 엔트리는 식별되어 비트 벡터(72) 내 대응하는 비트(74)는 업데이트되고 대응하는 카운터(76)는 감소된다. ASDT(36)에서 대응하는 라인을 식별하는 것은 축출될 라인이 가상 주소(58)에 의해 식별되는 반면 ASDT는 물리적 주소(68)를 통해 가장 간단하게 액세스 가능하다는 사실에 의해 복잡해질 수 있다. 따라서, 캐시 라인(71)은 업데이트 될 ASDT(36)에서 필요한 엔트리의 신속한 식별을 허용하는 ASDT 인덱스 값(ASDT index value)(69)을 포함할 수 있다. 일 실시예에서, ASDT 인덱스 값(69)은 또한 표준 컴퓨터 아키텍쳐에서 캐시 미스 요청들을 처리하는데 사용되는 미스-상태 처리 레지스터(MSHR; Mis-Status Handling Register)에 저장될 수 있어, 캐시 미스에 리턴된 캐시 라인에 대응하는 ASDT(36) 엔트리는, 캐시(18)에 배치되도록, 업데이트될 수 있다.
다른 프로세서들과의 캐시 일관성
도 1을 참조하면, 다른 프로세서 시스템들(12)은 소정의 프로세서 시스템(12a)의 캐시에서 캐시 라인(71)을 무효화하는 캐시 내 데이터를 쓸 수 있다. 이는 물리적 주소를 사용하여 무효화 할 데이터를 보통 설명하는 무효 메시지(invalidation message)가 생성될 것이다. 무효를 위한 필요한 캐시 라인(71)을 식별하는 한 방법은 ASDT(36)에 무효 메시지의 물리적 주소를 적용하여 키 가상 주소(58)를 획득하고 상기 키 가상 주소(58)를 사용하여 필요한 캐시 라인(71)을 식별하는 것이다. 무효 메시지들에 더해 다른 유형들의 일관성 이벤트들이 있는 실시예들에서, ASDT(36)을 컨설트하고 필요한 캐시 라인(71)을 식별하는 유사한 절차가 사용될 수 있다. 본 발명은 일반적으로 L1 캐시(18a)에 가장 큰 사용을 발견할 것이고 L2 및 L1 캐시들 사이의 일관성 이벤트들은 드물어, 오버헤드를 최소화한다.
로드 및 스토어 큐들
이제 도 1을 참조하면, 로드 큐(17) 및 스토어 큐(19)는 메모리 읽기 및 쓰기를 관리하기 위해 비순차 프로세서들(out of order processors)에서 사용된다. 스토어 큐(19)에 대한 가상 주소들을 사용하는 것은 후기의 로드(later load)가 동의어들로 인해 일치하는 스토어를 식별하지 못하고 그 반대의 경우 문제들이 발생할 수 있다. 이러한 경우들에서, 오래된 데이터는 캐시(18)로부터 리턴될 수 있다. 마찬가지로, 로드 큐에 대한 가상 주소들을 사용하는 것은 캐시(18)에서의 일관성-기반 무효 또는 축출이 있고 로드가 상기 축출된 데이터에 대해 (추론적으로(speculatively)) 수행되었을 때 문제들이 발생할 수 있다. 본 발명은 동의어에 의한 것이 아닌 키 가상 주소(58)에 의해 로드 큐(17) 및 스토어 큐(19) 내 데이터를 식별함으로써 이 문제를 해결할 수 있다. 로드 또는 스토어가 (추론적으로) 실행되면, 그것의 키 가상 주소(58)는 식별되고 로드 또는 스토어 큐에 유지된다. 따라서 동의어(키 가상 주소(58)가 아닌)로의 로드 큐(17) 및 스토어 큐(19)를 사용하는 액세스는 캐시(18)에서 캐시 미스를 야기하고, 궁극적으로 프로세스 블록(54)의 ART(34) 룩업을 통해 키 가상 주소(58)로의 작동(로드 또는 스토어)을 재현하게 된다.
스토어 큐(19)에서의 스토어에 대한 TLB 미스는 TLB 미스가 해결될 때까지 분리된 큐에서의 더 어린 스토어들을 보유함으로써 적절하게 해결될 수 있다. 대안은 스토어 큐로부터 스토어 명령의 릴리스(release)를 효과적으로 지연시키도록 문제가 되는 스토어로부터 프로그램을 다시 시작하는 것이다.
큰 페이지 사이즈
큰 페이지 사이즈에 대해, ASDT(36)의 비트 벡터(72)는 취급하기 어려울 수 있다. 이 경우에서, ASDT(36)로부터 축출될 원하는 라인과 관련된 소정의 페이지로부터의 라인들을 검색하기 위해 비트 벡터(72)를 제거하고 그 대신에 캐시(18)의 라인들을 통해 "워크(walk)"할 수 있다. 이 비싼 작동은 특히 카운터(76)의 0이 아닌 값을 갖는 엔트리를 축출할 필요가 있는 경우 큰 페이지들보다 작은 것과 연관된 ASDT(36) 라인들로부터 바람직하게 축출함으로써 회피될 수 있다. 일반적으로, 큰 페이지들의 축출은 이벤트일 가능성이 더 적을 것이다(the eviction of large pages will also be less likely events).
SS 및 ART의 액세스
이제 도 7a-7d를 참조하면, 파이프라인 프로세서(pipeline processor)에서의 SS(32) 및 ART(34)의 액세스는 다양한 방식으로 구현될 수 있다. 도 6a에 도시된 바와 같이, SS(32) 및 ART(34)에 대한 액세스는 주소 생성 후 명확화(disambiguation) 전에 발생할 수 있다. 이 접근 방식은 가상 캐시를 사용하는 것의 대부분의 전력 효율성 이점을 획득하지만 잠재 대기시간 이점을 충분히 이용하지(exploit) 못한다.
도 6b에서 도시된 바와 같이, 대안에서, SS(32) 및 ART(34)는 명확화 단계 동안 동시에 액세스될 수 있다. 명확화는 키 가상 주소들이 드물더라도(although they are rare) ART(34)의 히트들에서 키 가상 주소들(58)로 수행될 필요가 있을 수 있다. 이는 전력 소모를 증가시킬 수 있지만 대기시간은 감소시킨다.
도 6c에 도시된 바와 같이, SS(32)에 대한 액세스는 베이스(또는 세그먼트(segment)) 레지스터들에 기반한 주소 생성 전에 발생할 수 있고, ART(34)에 대한 액세스는 주소 생성 및 명확화 전에 발생할 수 있다. 이 접근 방식은 명령 및 데이터 캐시들 모두에 적용할 수 있으며 가상 캐시들로 가능한 대부분의 에너지 및 대기시간 이점들을 획득한다.
대안적으로 도 6d에 도시된 바와 같이, 주소 생성이 다단계 프로세스이면, SS(32)는 주소 생성의 중간 단계들 후에 하지만 주소 생성이 완료되기 전에 액세스될 수 있다.
최적화
ART(34)에 대한 액세스는 연속 참조들이 동일한 페이지(특히 명령들을 위한)에 종종 있다는 사실을 이용함으로써 감소될 수 있다. 일 실시예에서, 마지막 LVA(LLVA) 레지스터(100)(도 4에 도시된)는 액세스된 마지막 키 가상 주소(58)를 유지하는 ART(34)와 연관될 수 있다. 액세스되는 다음 가상 주소가 LLVA(100)에 포함된 것과 동일할 때, ART(34)에 대한 액세스는 발생할 필요가 없고 LLVA(100)에서의 이 값은 직접적으로 사용될 수 있어, 도 2의 프로세스 블록(54)를 건너뛴다(skipping).
각 프로세스는 사용자와 커널 공간으로 구성된 상이한 가상 주소 메모리 공간과 연관될 수 있다. 커널 공간은 상이한 프로세스에서 공유되므로, 커널 공간에서의 액세스된 가상 주소들이 동일하더라도 상이한 프로세스가 상이한 ASID를 가지기 때문에 커널 공간에 대한 액세스는 동의어들로서 간주될 수 있다. 이것은 커널 공간이 다중 프로세스들에 의해 시간적으로 가까운 방식(temporal proximate manner)으로 액세스될 때 ART(34)에서 다중 엔트리들을 생성할 수 있다. 연관된 오버헤드를 회피하기 위하여, 일 실시예는 단지 커널 공간에 대한 액세스들에 대해서 단일 고유값에 대한 ASID의 런 타임 재매핑(run time remapping)을 사용할 수 있다. 이러한 액세스의 식별은 액세스가 커널 액세스와 연관된 주소 범위를 갖는 선험적 지식(priori knowledge)에 기반한다. 예를 들면, 커널 공간(또는 운영 시스템)이 주소 공간의 상위 절반에 있는 경우, 이 재매핑은 가장 높은 순서의 주소 비트를 간단히 보고 재매핑 프로세스를 트리거할 수 있다.
상술한 모든 실시예들과 관련하여, 전술한 상술한 스트럭처들은 하드웨어에서 전적으로 구현될 수 있어 필요한 고속의 캐시 데이터 변환과 일치하는 고속 성능을 제공할 수 있다는 것을 알아야 한다.
상기 설명이 L1 캐시에 초점을 맞추었지만, 이들 원리들은 메모리 액세스 대기지연을 감소시키는데 유리할 수 있는 다른 캐시들로 확장될 수 있다.
본 발명은, ART(34), ASDT(36) 및 캐시 라인(71)을 포함하는, 각각의 데이터 저장 스트럭처가 각각의 가상 주소 공간을 고유하게 식별하고 따라서 실질적으로(effectively) 가상 주소의 부분인 주소 공간 식별자(ASID)와 함께 가상 주소들을 저장할 수 있고 음을 고려한다.
일 실시예에서, SS(32) 및 ART(34)는 동의어 Vb로 캐시(18)에 대한 직접 액세스 및 동의어 Vb가 키 가상 주소가 아닌 경우, 캐시 미스가 발생할 것이란 예상 및 프로세스 블록(60)에 따라 캐시 미스 후 ASDT(36)에 대한 액세스에 의해 해결된 적절한 키 동의어를 위하여 제거될 수 있다.
상기 설명으로부터, 동의어 추적 회로 (35)에 의해 사용된 데이터를 제공하는, SS (32), ART (34) 및 ASDT (36)의 데이터 저장 기능 및 동의어 추적 회로 (35) 자체는 컴퓨터 프로세서 시스템(10)의 회로 또는 프로세서간 회로 사이에서 다양한 방법을 제공할 수 있다. 특히, SS (32), ART (34) 및 ASDT (36)의 데이터는 캐시 (18) 자체를 포함하는 다양한 상이한 위치에 자유롭게 저장될 수 있다. 후자의 경우, 물리적 캐시는 각각 별도의 클레임 요소들의 대상이 될 수 있는 표준 캐시 요소(regular cache component)와 동의어 추적 요소(synonym tracking component)를 갖는 것을 이해해야 한다.
특정 용어는 단지 참조용으로 본 명세서에서 사용되며, 따라서 제한하려는 것은 아니다. 예를 들어, "상위(upper)", "하위(lower)", "상부(above)"및 "하부(below)"와 같은 용어는 도면들이 참조되는 방향을 의미한다. "앞(front)", "뒤(back)", "뒤(rear)", "아래(bottom)"및 "옆(side)"과 같은 용어는 일관되고 그러나 임의적인 참조 프레임 내에서 요소의 부분들의 방향을 설명하며, 논의 중인 요소를 설명하는 관련 도면들 및 텍스트를 참조하여 명확하게 나타낸다. 이러한 용어는 특별히 상술한 단어들, 그의 파생어들 및 유사한 의미의 단어들(words of similar import)을 포함할 수 있다. 유사하게는, 문맥에 의해 명백하게 나타내지 않은 한, "제 1(first)", "제 2(second)"및 스트럭처를 나타내는 이러한 수치적인 용어들은 서열 또는 순서를 의미하지 않는다.
본 개시 및 예시적인 실시예들의 요소들 또는 특징들을 소개할 때, "일(a)", "일(an)", "상기(the)"및 "상기(said)"라는 명칭은 그러한 요소들 또는 특징들 중 하나 이상이 있음을 의미한다. "포함하는", "포함하는"및 "갖는"이라는 용어는 포괄적인 것으로 의도되며 특별히 언급된 것 이외의 추가적인 요소 또는 특징이 있을 수 있음을 의미한다. 본 명세서에 설명된 방법 단계들, 과정들, 및 동작들은 구체적으로 수행 순서로서 식별되지 않는 한, 논의되거나 도시된 특정 순서로 그들의 수행을 반드시 요구하는 것으로 해석되어서는 안된다는 것을 이해해야 한다. 부가적인 또는 대안적인 단계들이 사용될 수 있음이 또한 이해되어야 한다.
"프로세서"라는 용어는 독립형 및/또는 분산형 환경에서 통신할 수 있는 하나 이상의 마이크로 프로세서를 포함하는 것으로 이해되어야 하며, 따라서 다른 프로세서와 유선 또는 무선 통신을 통해 통신하도록 구성될 수 있으며, 그러한 하나 이상의 프로세서는 유사하거나 상이한 장치일 수 있는 하나 이상의 프로세서-제어 장치에서 동작하도록 구성 될 수 있다. 또한, 프로세서는, 범용 프로세서, 프로세싱 코어, 멀티 스레드 프로세서의 컨텍스트, 그래픽 처리 장치, 특수 목적 프로세서, 또는 당업계에서 이해되는 바와 같이, 메모리에 액세스하는 작동을 수행하는 프로세서의 임의의 다른 형태일 수 있음을 이해해야 한다. 또한, 달리 언급하지 않는 한, 메모리에 대한 언급들은 하나 이상의 프로세서-판독 가능하고 액세스 가능한 메모리 요소 및/또는 컴포넌트 및 프로세서-제어 장치 외부에, 프로세서-제어 장치 내부에 있을 수 있는 요소들을 포함할 수 있고, 유선 또는 무선 네트워크를 통해 액세스될 수 있다.
또한, 테이블들 및 서명들을 포함하는, 표현된 데이터 스트럭처들은 데이터의 논리적인 묘사들을 제공하기 위한 것이고, 개시된 발명은 나타낸 기능을 또한 제공하는 데이터의 다른 물리적 배열을 포함하는 것으로 간주되어야 함을 이해할 것이다.
본 명세서에서 사용되는 바와 같이, "인덱스", "인덱스된" 등과 같은 용어들은 일반적으로 값을 사용하는 프로세스를 나타내고 북 인덱스의 방식으로, 그 값과 관련된 정보에 액세스 하는 것으로 이해해야 하고, 캐시 메모리의 컨텍스트에서 인덱스의 기술적인 의미에 한정됨을 나타내지 않는다.
본 발명은 특히 본 명세서에 포함된 실시예들 및 예시들에 한정되지 않고, 청구항들은 다음의 청구항들의 범위 내에 있는 실시예들의 일부 및 상이한 실시예들의 요소들의 조합을 포함하는 이들 실시예들의 수정된 형태를 포함하는 것으로 이해되어야 한다. 특허 및 비-특허 간행물들을 포함하는, 본 명세서에 기술된 모든 간행물들은 그 전체들에서의 참조로 본원에 포함된다.

Claims (19)

  1. 물리적 주소들에 스토리지를 갖는 메모리와 함께 사용하기 위한 전자 프로세서에 있어서,
    프로세서,
    메모리 캐시,
    가상 주소에 의해 물리적 주소의 메모리 데이터를 캐싱하는 캐시 제어 회로,
    상기 프로세서로부터의 가상 주소와 물리적 주소 간의 변환을 위한 변환 회로, 및
    상기 메모리 캐시에 대한 액세스를 위한 상기 프로세서로부터 소정의 가상 주소를 수신하는 동의어 추적 회로
    를 포함하고,
    상기 동의어 추적 회로는,
    (1) 상기 소정의 가상 주소가 상기 메모리 캐시 내 데이터의 동일한 소정의 물리적 메모리 주소에 매핑한 다른 가상 주소와 동의어인지 결정하고,
    (2) 상기 소정의 가상 메모리 주소가 동의어일 때, 상기 메모리 캐시를 위한 액세싱 주소로서 상기 다른 가상 주소를 사용하여 상기 메모리 캐시에 액세스하고,
    상기 동의어 추적 회로는,
    소정의 가상 주소들이 동의어인지 결정하도록 동의어들로서 링크된 가상 주소들의 제1 테이블을 포함하고,
    상기 동의어 추적 회로는,
    소정의 가상 주소와 연관된 물리적 주소를 결정하고, 상기 결정된 물리적 주소를 물리적 주소들 및 가상 주소들을 링크하는 제2 테이블에 적용하고, 결정된 물리적 주소가 상기 제2 테이블 내 가상 주소에 링크할 때, 상기 메모리 캐시를 위한 액세싱 주소로서 상기 제2 테이블의 가상 주소를 사용함으로써, 상기 메모리 캐시의 캐시 미스에 응답하는
    전자 프로세서.
  2. 제1항에 있어서,
    상기 메모리 캐시는 가상 주소에 의해서만 액세스 가능한 물리적 주소의 데이터를 보유하는
    전자 프로세서.
  3. 제1항에 있어서,
    각각의 다른 가상 주소는 다중 가상 주소들의 동의어이지만 다른 키 가상 주소의 동의어가 아닌 키 가상 주소인
    전자 프로세서.
  4. 제1항에 있어서,
    상기 소정의 가상 주소는 또 다른 가상 주소와 동의어가 아니고, 상기 동의어 추적은 상기 메모리 캐시를 위한 상기 액세싱 주소로서 상기 소정의 가상 메모리 주소를 사용하여 상기 메모리 캐시에 액세스하는
    전자 프로세서.
  5. 삭제
  6. 제1항에 있어서,
    상기 동의어로서 링크된 가상 주소들의 제1 테이블은 상기 소정의 가상 주소가 상기 제1 테이블에 있을 때 상기 다른 가상 주소로서 상기 소정의 가상 주소로 링크된 가상 주소를 제공하는
    전자 프로세서.
  7. 제6항에 있어서,
    상기 제1 테이블은 가상 주소들의 링크된 세트들과 연관된 메모리 액세스 허가 세트를 더 포함하고,
    상기 다른 가상 주소가 액세싱 명령으로서 사용될 때, 상기 메모리 캐시에 대한 액세스들은 상기 제1 테이블의 허가들에 의해 제어되는
    전자 프로세서.
  8. 물리적 주소들에 스토리지를 갖는 메모리와 함께 사용하기 위한 전자 프로세서에 있어서,
    프로세서,
    메모리 캐시,
    가상 주소에 의해 물리적 주소의 메모리 데이터를 캐싱하는 캐시 제어 회로,
    상기 프로세서로부터의 가상 주소와 물리적 주소 간의 변환을 위한 변환 회로, 및
    상기 메모리 캐시에 대한 액세스를 위한 상기 프로세서로부터 소정의 가상 주소를 수신하는 동의어 추적 회로
    를 포함하고,
    상기 동의어 추적 회로는,
    (1) 상기 소정의 가상 주소가 상기 메모리 캐시 내 데이터의 동일한 소정의 물리적 메모리 주소에 매핑한 다른 가상 주소와 동의어인지 결정하고,
    (2) 상기 소정의 가상 메모리 주소가 동의어일 때, 상기 메모리 캐시를 위한 액세싱 주소로서 상기 다른 가상 주소를 사용하여 상기 메모리 캐시에 액세스하고,
    상기 동의어 추적 회로는,
    소정의 가상 주소들이 동의어인지 결정하도록 동의어들로서 링크된 가상 주소들의 제1 테이블을 포함하고,
    상기 동의어 추적 회로는,
    상기 제1 테이블에서의 상기 가상 주소들의 적어도 일부의 압축된 서명을 포함하고,
    상기 압축된 서명은,
    상기 소정의 가상 주소가 상기 제1 테이블에 있을 가능성이 있는지를 나타내고,
    상기 동의어 추적 회로는,
    먼저 상기 압축된 서명을 체크하고, 상기 소정의 가상 주소가 상기 제1 테이블에 있음을 압축된 서명이 나타내는 경우에만 상기 제1 테이블을 체크하는
    전자 프로세서.
  9. 제1항에 있어서,
    상기 동의어 추적 회로는,
    상기 제1 테이블에서의 상기 가상 주소들의 적어도 일부의 압축된 서명을 포함하고,
    상기 압축된 서명은,
    상기 소정의 가상 주소가 상기 제1 테이블에 있을 가능성이 있는지를 나타내고,
    상기 동의어 추적 회로는,
    먼저 상기 압축된 서명을 체크하고, 상기 소정의 가상 주소가 상기 제1 테이블에 있음을 압축된 서명이 나타내는 경우에만 상기 제1 테이블을 체크하는
    전자 프로세서.
  10. 제1항에 있어서,
    상기 제2 테이블은 링크된 물리적 및 가상 주소를 사용할 때 상기 메모리의 액세스를 제어하는 메모리 액세스 허가들과 링크된 물리적 주소들 및 가상 주소들을 더 연관시키는
    전자 프로세서.
  11. 제1항에 있어서,
    상기 메모리 캐시의 라인은 대응하는 가상 주소에 링크된 상기 제2 테이블의 대응하는 엔트리에 대한 인덱스를 보유하고
    상기 동의어 추적 회로는 메모리 캐시의 라인이 축출되거나 무효화될 때 업데이트를 위하여 상기 제2 테이블에서 엔트리를 식별하도록 상기 인덱스를 수신하는
    전자 프로세서.
  12. 제1항에 있어서,
    상기 제2 테이블 내 단일 키 가상 주소만이 소정의 물리적 주소에 링크하는
    전자 프로세서.
  13. 제12항에 있어서,
    상기 프로세서는 로드 큐 및 스토어 큐를 사용하는 비순차 프로세서이고
    상기 로드 큐 및 스토어 큐 스토어 내 데이터는 키 가상 주소에 링크되는
    전자 프로세서.
  14. 제1항에 있어서,
    상기 동의어 추적 회로는 소정의 가상 주소를 물리적 주소로 변환하기 위해 페이지 테이블 및 변환 색인 버퍼를 사용하는
    전자 프로세서.
  15. 제1항에 있어서,
    제2 테이블은 상기 메모리 캐시 내 상기 물리적 주소의 데이터의 상기 제2 테이블 서브세트들의 각각의 물리적 주소를 더 식별할 수 있고,
    상기 캐시 제어 회로는 상기 제2 테이블을 사용하여 상기 메모리 캐시에 등록된 상기 제2 테이블의 물리적 주소들의 부분들을 식별할 수 있는
    전자 프로세서.
  16. 제1항에 있어서,
    상기 제2 테이블은 상기 메모리 캐시에 등록된 물리적 주소의 서브세트들의 수를 나타내는 물리적 주소와 연관되는 카운터를 제공하는
    전자 프로세서.
  17. 전자 프로세서 컴퓨터 시스템에서의 데이터를 캐싱하는 방법에 있어서,
    상기 전자 프로세서 컴퓨터 시스템은,
    메모리 캐시와 함께 적어도 하나의 프로세서 및 가상 주소들에 의해 물리적 주소들의 메모리 데이터를 캐싱하는 캐시 제어 회로
    를 포함하는 유형의 시스템이고,
    상기 프로세서는,
    상기 프로세서로부터의 가상 주소와 물리적 주소 간의 변환을 위한 변환 회로, 및
    동의어 추적 회로
    를 더 포함하고,
    상기 동의어 추적 회로는,
    상기 프로세서로부터 소정의 가상 주소를 수신하여 상기 소정의 가상 주소가 상기 메모리 캐시 내 데이터의 동일한 소정의 물리적 메모리 주소에 매핑한 다른 가상 주소와 동의어인지 결정하고,
    상기 소정의 가상 메모리 주소가 동의어일 때, 상기 메모리 캐시를 위한 액세싱 주소로서 상기 다른 가상 주소를 사용하여 상기 메모리 캐시에 액세스하고,
    상기 방법은,
    (1) 가상 주소를 사용하여 상기 메모리 캐시에 데이터를 저장하는 단계, 상기 메모리 캐시는 상기 가상 주소의 적어도 일 부분을 보유하는 단계,
    (2) 상기 소정의 가상 주소가 상기 메모리 캐시에 액세스하기 위한 지정된 동의어 가상 주소를 갖는지 먼저 결정하고, 만일 그렇다면 상기 메모리 캐시에 액세스하기 위한 상기 지정된 동의어 가상 주소를 사용함으로써 소정의 가상 주소를 사용하는 상기 메모리 캐시로부터 데이터를 액세스하는 단계, 및
    (3) 상기 소정의 가상 주소와 연관된 물리적 주소를 결정하고, 상기 결정된 물리적 주소를 물리적 주소들 및 가상 주소들을 링크하는 제2 테이블에 적용하고, 결정된 물리적 주소가 상기 제2 테이블 내 가상 주소에 링크할 때, 상기 메모리 캐시를 위한 액세싱 주소로서 상기 제2 테이블의 가상 주소를 사용함으로써, 상기 메모리 캐시의 캐시 미스에 응답하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 가상 주소를 사용하여 상기 메모리 캐시에 데이터를 저장하는 단계는,
    가상 주소만으로 상기 저장된 데이터에 대한 액세스를 허용하는
    방법.
  19. 제17항에 있어서,
    상기 지정된 가상 주소는,
    다중 가상 주소들의 동의어이지만 다른 키 가상 주소의 동의어는 아닌
    방법.
KR1020177020817A 2014-12-26 2015-12-10 가상 주소들을 사용하여 액세스된 캐시 KR102448124B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201462096962P 2014-12-26 2014-12-26
US62/096,962 2014-12-26
US201462097342P 2014-12-29 2014-12-29
US62/097,342 2014-12-29
US14/867,926 US10089240B2 (en) 2014-12-26 2015-09-28 Cache accessed using virtual addresses
US14/867,926 2015-09-28
PCT/US2015/064955 WO2016105961A1 (en) 2014-12-26 2015-12-10 Cache accessed using virtual addresses

Publications (2)

Publication Number Publication Date
KR20170100003A KR20170100003A (ko) 2017-09-01
KR102448124B1 true KR102448124B1 (ko) 2022-09-28

Family

ID=56151409

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177020817A KR102448124B1 (ko) 2014-12-26 2015-12-10 가상 주소들을 사용하여 액세스된 캐시

Country Status (6)

Country Link
US (1) US10089240B2 (ko)
EP (1) EP3238074B1 (ko)
JP (1) JP6696987B2 (ko)
KR (1) KR102448124B1 (ko)
CN (1) CN107111455B (ko)
WO (1) WO2016105961A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089240B2 (en) * 2014-12-26 2018-10-02 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses
US10210088B2 (en) * 2015-12-28 2019-02-19 Nxp Usa, Inc. Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
US9772943B1 (en) * 2016-04-01 2017-09-26 Cavium, Inc. Managing synonyms in virtual-address caches
US20180173637A1 (en) * 2016-12-21 2018-06-21 Intel Corporation Efficient memory aware cache management
US10606762B2 (en) 2017-06-16 2020-03-31 International Business Machines Corporation Sharing virtual and real translations in a virtual cache
US10831664B2 (en) 2017-06-16 2020-11-10 International Business Machines Corporation Cache structure using a logical directory
US10698836B2 (en) 2017-06-16 2020-06-30 International Business Machines Corporation Translation support for a virtual cache
US10402337B2 (en) * 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
US10324846B2 (en) 2017-09-21 2019-06-18 International Business Machines Corporation Bits register for synonyms in a memory system
US11175924B2 (en) * 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
CN111133421B (zh) * 2017-10-06 2023-09-29 国际商业机器公司 在无地址转换的情况下操作的加载存储单元中处理有效地址同义词
US10534616B2 (en) 2017-10-06 2020-01-14 International Business Machines Corporation Load-hit-load detection in an out-of-order processor
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11392508B2 (en) * 2017-11-29 2022-07-19 Advanced Micro Devices, Inc. Lightweight address translation for page migration and duplication
GB2570691B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
CN111124945B (zh) * 2018-10-30 2023-09-22 伊姆西Ip控股有限责任公司 用于提供高速缓存服务的方法、设备和计算机可读介质
US11010067B2 (en) 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
CN112579170B (zh) * 2020-12-10 2022-11-08 海光信息技术股份有限公司 一种用于减少虚拟地址计算的处理器及其方法
US11461247B1 (en) * 2021-07-19 2022-10-04 Arm Limited Granule protection information compression
CN113934655B (zh) * 2021-12-17 2022-03-11 北京微核芯科技有限公司 解决高速缓冲存储器地址二义性问题的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013058745A1 (en) * 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
JPH07287668A (ja) * 1994-04-19 1995-10-31 Hitachi Ltd データ処理装置
US6751720B2 (en) 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US7073044B2 (en) 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
US7017024B2 (en) * 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
CN100414518C (zh) * 2004-11-24 2008-08-27 中国科学院计算技术研究所 改进的虚拟地址变换方法及其装置
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8904068B2 (en) * 2012-05-09 2014-12-02 Nvidia Corporation Virtual memory structure for coprocessors having memory allocation limitations
US10089240B2 (en) * 2014-12-26 2018-10-02 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013058745A1 (en) * 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches

Also Published As

Publication number Publication date
EP3238074A4 (en) 2018-08-08
CN107111455B (zh) 2020-08-21
EP3238074A1 (en) 2017-11-01
US20160188486A1 (en) 2016-06-30
WO2016105961A1 (en) 2016-06-30
EP3238074B1 (en) 2019-11-27
CN107111455A (zh) 2017-08-29
JP2018504694A (ja) 2018-02-15
JP6696987B2 (ja) 2020-05-20
US10089240B2 (en) 2018-10-02
KR20170100003A (ko) 2017-09-01

Similar Documents

Publication Publication Date Title
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US9251095B2 (en) Providing metadata in a translation lookaside buffer (TLB)
JP2018504694A5 (ko)
US8984254B2 (en) Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US7805588B2 (en) Caching memory attribute indicators with cached memory data field
US6782453B2 (en) Storing data in memory
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
US20160140042A1 (en) Instruction cache translation management
US20040117588A1 (en) Access request for a data processing system having no system memory
US11775445B2 (en) Translation support for a virtual cache
US10606762B2 (en) Sharing virtual and real translations in a virtual cache
US9842058B2 (en) Locking entries into translation lookaside buffers
US8015361B2 (en) Memory-centric page table walker
US7017024B2 (en) Data processing system having no system memory
US20040117590A1 (en) Aliasing support for a data processing system having no system memory
US20050055528A1 (en) Data processing system having a physically addressed cache of disk memory
US8688952B2 (en) Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB
US9639467B2 (en) Environment-aware cache flushing mechanism
US20190377686A1 (en) Arithmetic processor, information processing apparatus, and control method of arithmetic processor
US20040117583A1 (en) Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme
Rao et al. Implementation of Efficient Cache Architecture for Performance Improvement in Communication based Systems
Yoon et al. c12) United States Patent
US20040117589A1 (en) Interrupt mechanism for a data processing system having hardware managed paging of disk data
KUMAR Performance improvement by Software controlled Cache Architecture

Legal Events

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