KR20170082121A - 캐시 메모리 - Google Patents

캐시 메모리 Download PDF

Info

Publication number
KR20170082121A
KR20170082121A KR1020160171208A KR20160171208A KR20170082121A KR 20170082121 A KR20170082121 A KR 20170082121A KR 1020160171208 A KR1020160171208 A KR 1020160171208A KR 20160171208 A KR20160171208 A KR 20160171208A KR 20170082121 A KR20170082121 A KR 20170082121A
Authority
KR
South Korea
Prior art keywords
tag
individual
value
memory
individual tags
Prior art date
Application number
KR1020160171208A
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 KR20170082121A publication Critical patent/KR20170082121A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/1048Scalability
    • 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/6032Way prediction in set-associative cache
    • 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

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

변환 색인 버퍼 캐시(16) 등의 캐시 메모리는, 태그 메모리(24)에 기억되는 공유 태그를 갖는 복수의 공유 태그 데이터 값들을 기억하는 제 1 모드, 또는 복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제 2 모드에서 동작할 수 있는 복수의 블록들의 비트 기억회로들(26)을 구비한다. 태그 메모리 내부의 태그 엔트리들은, 제 1 모드에서 동작하는 특정한 블록에 대한 공유 태그값과 제 2 모드에서 동작하는 특정한 블록에 대한 합성값을 포함한다. 합성값은 개별 태그들에 따라 산출된 해시값 또는 블룸 필터값 등의 각각의 개별 태그들을 표시하는 식별자를 포함하고, 이것을 사용하여 식별자 값으로부터 개별 태그들과의 잠재적인 일치를 식별한다.

Description

캐시 메모리{CACHE MEMORY}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은 데이터 처리 시스템 내부에서 사용되는 캐시 메모리에 관한 것이다.
데이터 및/또는 명령에 대한 고속 및 저에너지 액세스를 제공하기 위해 데이터 처리 시스템에 캐시 메모리를 설치하는 것이 알려져 있다. 캐시 메모리는 데이터 및/또는 명령이 메인 메모리 시스템 내부에 유지된 적절한 서브셋을 기억한다. 캐시 메모리 내부에 유지된 메모리 어드레스 공간으로부터의 특정한 부분의 데이터 및/또는 명령은 태그값에 의해 식별된다. 태그값은 캐시 메모리 내부에 유지된 한 개 이상의 데이터 값들(이 용어는 명령도 포함한다)에 대응하는 메모리 어드레스 공간 내부의 메모리 어드레스 영역을 식별한다. 캐시 메모리 내부의 태그값과 관련된 데이터 값들의 블록의 크기는 캐시 메모리의 아키텍처에 의해 설정되어, 데이터의 블록들이 기억될 때의 그래뉼래리티(granularity)와 캐시 메모리 내부에 기억된 블록들을 식별하기 위한 태그값 스토리지를 제공함에 있어서의 균형을 표시한다.
본 발명의 적어도 일부 실시예는,
복수의 블록들의 비트 기억회로들과,
상기 복수의 블록들 내부의 특정한 블록을 대한 액세스를 제어함으로써, 상기 특정한 블록이,
공유 태그(shared-tag)를 갖는 복수의 공유 태그 데이터 값들을 기억하는 제 1 모드와,
복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제2 모드 중에서 선택가능한 한 개의 모드에서 동작하도록 하는 제어회로를 구비한 캐시 메모리를 제공한다.
본 발명의 적어도 일부 실시예는, 복수의 블록들의 비트 기억회로들을 갖는 캐시 메모리의 작동방법으로서,
상기 복수의 블록들 내부의 특정한 블록을 대한 액세스를 제어함으로써, 상기 특정한 블록이,
공유 태그를 갖는 복수의 공유 태그 데이터 값들을 기억하는 제 1 모드와,
복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제2 모드 중에서 선택가능한 한 개의 모드에서 동작하도록 하는 단계를 포함하는 작동방법을 제공한다.
본 발명의 적어도 일부 실시예는,
복수의 블록들의 비트 기억회로들과,
식별자(discriminator) 값을 기억하는 태그 메모리를 구비하고,
상기 복수의 블록들 내부의 특정한 블록이 복수의 개별 태그 데이터들과 각각의 개별 태그들을 기억하고,
상기 식별자 값이 상기 각각의 개별 태그들을 표시하는 캐시 메모리를 제공한다.
본 발명의 또 다른 목적, 특징 및 이점들은 첨부된 도면을 참조하여 주어지는 이하의 실시형태의 상세한 설명으로부터 명백해질 것이다.
도 1은 데이터/명령 캐시 메모리와 변환 색인 버퍼(translation lookaside buffer) 캐시 메모리를 구비한 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 도 2는 태그 메모리와 복수의 블록들의 비트 기억회로들을 포함하는 캐시 메모리를 개략적으로 나타낸 것이다.
도 3은 제 1 모드 또는 제 2 모드에서 동작하는 블록에 대응하는 태그 메모리 내부의 엔트리를 개략적으로 나타낸 것이다.
도 4는 태그 메모리 내부의 예시적인 합성값(composite value) 엔트리를 개략적으로 나타낸 것이다.
도 5는 캐시 판독 동작의 일례를 개략적으로 나타낸 흐름도이다.
도 6은 캐시 갱신 동작의 일례를 개략적으로 나타낸 흐름도이다.
도 7은 단순한 캐시 갱신 동작의 일례를 개략적으로 나타낸 흐름도이다.
도 8은 식별자 값들을 기억하는 태그 메모리와, 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 복수의 블록들의 비트 기억회로들을 구비한 캐시 메모리를 개략적으로 나타낸 것이다.
도 1은 프로그램 명령들을 실행하여 데이터를 처리하는 프로세서 코어(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 프로그램 명령들과 데이터(6)는 메인 메모리(8) 내부에 기억되어 있다. 메인 메모리(8)와 프로세서 코어(4) 사이에 배치된 데이터 및 명령 캐시(10)는, 프로세서 코어(4)에 대해 프로그램 명령들 및 데이터(6)의 서브셋을 로컬하게 일시 기억하여, 종래의 기술에 따라 캐시에 기억된 명령들 및 데이터에 대한 더 고속이고 더 효율적인 액세스를 제공하는 역할을 한다.
메모리 관리 유닛(12)은, 프로세서 코어(4)와 관련되고, 메인 메모리(8)에 대응하는 메모리 어드레스 공간의 영역들의 허가 데이터 및 기타 특징(예를 들면, 캐시 기억가능성(cacheability, 네버(never) 실행 등)을 제공하는 것과 같이, 메인 메모리(8)에 대한 액세스를 관리하는 역할을 한다. 특히, 메모리 관리 유닛(12)은 계층 페이지 테이블 데이터를 사용하여 메모리의 영역들의 액세스 허가 및 다른 특징들을 규정한다. 이들 영역들은 메모리 페이지들로 불리며, 메모리 내부의 특정한 페이지 테이블은 본 기술분야의 당업자에게 자명한 것과 같이 계층 페이지 테이블 데이터(14)를 거친 다단계(multi-stage) 페이지 테이블 워킹(walking) 동작을 사용하여 액세스된다. 페이지 테이블 워킹 동작은 일반적으로 비교적 실행이 느리므로, 메모리 관리 유닛(12)은 메인 메모리(8)의 메모리 어드레스 공간 내부의 현재 활성인 페이지들의 데이터와 관련된 페이지 테이블을 기억하는 변환 색인 버퍼 캐시(16)를 구비한다. 따라서, 메모리 관리 유닛(12)은, 특정한 페이지에 대한 페이지 데이터의 액세스를 시도할 때, 먼저 이 페이지 데이터가 변환 색인 버퍼 캐시(16) 내부에 존재하는지 여부를 검사하게 된다. 이 페이지 데이터가 변환 페이지 테이블 색인 버퍼 캐시(16) 내부에 존재하지 않는 경우에는, 메모리 관리 유닛(12) 내부의 페이지 테이블 워킹 상태 머신(18)이 계층 페이지 테이블 워킹 동작을 행하여, 메인 메모리(8) 내부의 계층 페이지 테이블 데이터(14)에 액세스함으로써, 원하는 페이지 테이블 데이터를 복원하여 이것을 변환 색인 버퍼 캐시(16) 내부에 기억한다. 변환 색인 버퍼 캐시(16)가 이미 가득차 있으면, 새로운 항목의 페이지 테이블 데이터를 기억하기 위해서는 기존의 일부의 페이지 테이블 데이터의 퇴출이 필요하게 된다. 희생자 선택 및 교체 알고리즘은 본 기술분야의 당업자에게 자명한 기술이며, 다양한 이들 기술을 사용하여 어떤 페이지 테이블 데이터를 교체할 것인지 선택해도 된다.
계층 페이지 테이블 데이터(14) 내부의 다양한 레벨들로부터 복원된 페이지 테이블 데이터는, 그것의 용도, 예를 들면, 인접하는 페이지 테이블 데이터의 임박한 사용 가능성과 관련된 다양한 특성을 갖는다. 일반적으로, 액세스가 행해질 때 계층 페이지 테이블 데이터(14) 내부에서 얻어진 더 낮은 레벨의 페이지 테이블 데이터는, 계층 페이지 테이블 데이터(14) 내부의 이 낮은 레벨에 있는 인접하는 페이지 테이블 데이터가 비교적 빨리 액세스될 비교적 높은 확률과 관련된다. 따라서, 변환 색인 버퍼 캐시(16) 내부에 낮은 레벨의 페이지 테이블 데이터를 캐시에 기억할 때, 복수의 낮은 레벨의 페이지 테이블 데이터 엔트리들을 포함하는 이와 같은 낮은 레벨의 페이지 테이블 데이터의 비교적 큰 블록들을 캐시에 기억하는 것이 더 효율적일 수 있는데, 이것은 이들 다른 낮은 레벨의 페이지 테이블 데이터 엔트리들이 곡 필요하게 되 가능성이 높으므로, 변환 색인 버퍼 캐시(16) 내부에 이미 존재하게 되기 때문이다. 역으로, 계층 페이지 테이블 데이터(14) 내부의 더 높은 레벨의 페이지 테이블 데이터 엔트리들에 대해서는, 이와 같은 높은 레벨의 페이지 테이블 데이터의 특정한 항목을 액세스할 때, 인접하는 높은 레벨의 페이지 테이블 데이터가 곧 필요하게 될 관련된 확률이 비교적 낮다. 따라서, 이와 같은 인접하는 블록들의 높은 레벨의 페이지 테이블 데이터의 대부분이 메모리 관리 유닛(12)에 의해 요구되지 않을 높은 확률이 존재한다면, 더 작은 블록들로 이와 같은 높은 레벨의 페이지 테이블 데이터를 캐시에 기억하여, 변환 색인 버퍼 캐시(16)의 유한한 기억 용량을 높은 레벨의 페이지 테이블 데이터를 다수의 블록들로 기억하는 것보다는 더 큰 수의 이와 같은 작은 블록들의 높은 레벨의 페이지 테이블 데이터를 기억하는데 이용하는 것이 더욱 효율적일 수 있다.
도 2는 변환 색인 버퍼 캐시(16)를 더욱 상세히 개략적으로 나타낸 것이다. 변환 색인 버퍼 캐시(16)는 본 발명이 적용되는 캐시의 종류의 일례이다. 본 발명은 다른 종류의 캐시 메모리에 적용되어도 된다. 본 실시예에 있어서 변환 색인 버퍼 캐시(16)는, 비트 값들이 변환 색인 버퍼 캐시(16)에 기억되고 변환 색인 버퍼 캐시(16)로부터 판독될 때 거치는 비트 라인들(22)을 공유하는 통합된 어레이의 비트 기억 셀들(회로들)을 구비한다. 변환 색인 버퍼(16)는 태그 메모리(24)와 복수의 블록들의 비트 기억회로들(26)로 논리적으로 분할된다. 다른 실시예는 태그값들과 데이터 값들을 각각 기억하는 물리적으로 분리된 개별 메모리들을 채용할 수도 있으며, 어떤 상황에서는 이것이 바람직할 수도 있다.
태그 메모리(24)는 복수의 태그 엔트리들을 기억한다. 태그 엔트리들은, 본 실시예에서는, 특정한 블록의 비트 기억회로들 전체에 대한 태그값인 공유 태그값(Norm)의 형태를 가질 수 있다. 이와 달리, 태그 엔트리는 본 실시예에서는 식별자 값을 포함하는 합성값(Comp)이어도 된다. 각각의 태그 엔트리들은, 태그 엔트리가 공유 태그값인지 합성값인지를 표시하는 플래그 값을 포함해도 된다는 것을 알 수 있다. 캐시 제어 및 태그 비교회로(20)는, 변환 색인 버퍼 캐시(16)에 접속되고, 이하에서 더 설명하는 것과 같이 변환 색인 버퍼 캐시(16)의 동작을 관리하는 역할을 한다.
태그 엔트리가 Tag 56과 같은 공유 태그값을 가지면, 이것은 대응하는 블록의 비트 기억회로들이 공유 태그값 Tag 56을 모두 공유하는 복수의 공유 태그 데이터 값들(Data 56.1, Data 56.2, Data 56.3, Data 56.4, Data 56.5, Data 56.6, Data 56.7, Data 56.8)을 기억하는 제 1 모드에서 동작하고 있다는 것을 나타낸다. 캐시 제어회로(20)에 의해 변환 색인 버퍼 캐시(16)에 대해 참조(lookup)가 행해지면, 수신된 어드레스를 태그 엔트리들과 비교하고, 공유 태그의 경우에는, 수신된 어드레스를 공유 태그값과 비교하여, 일치(match)가 존재하는지 판정한다. 일치가 존재하면, 대응하는 한 개 이상의 공유 태그 데이터 값들이 액세스된다.
태그 엔트리가 Tag 57과 같은 합성값인 경우에, 이것은 대응하는 특정한 블록의 비트 기억회로들이 복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제 2 모드에서 동작하고 있다는 것을 나타낸다. 따라서, 합성값은 한정된 일치가 행해질 수도 있는 추가적인 개별 태그값들을 가리키는 포인터로서의 역할을 한다. 도 2에 도시된 예에서는, 합성값 Tag 57이 4개의 개별 태그들(Tag 57.1, Tag 57.2, Tag 57.3, Tag 57.4)과 각각의 개별 태그 데이터 값들(Data 57.1, Data 57.2, Data 57.3, Data 57.4)을 기억하는 비트 스토리지 회로들의 블록에 대응한다. 제2 모드에서 동작하고 있는 비트 기억회로들의 블록의 경우의 참조 동작은 2단계 처리이다. 제 1 단계는, 합성값과 비교를 행하여 잠재적인 일치가 존재하는지 판정하는 것이다. 잠재적인 일치가 존재하면, 제 2 단계는 주어진 블록 내부에 기억된 개별 태그들 각각과 비교를 행한다. 합성값에 대응하는 이 특정한 블록 내부의 개별 태그들 중에서 한 개에 대해 적중(hit)이 존재하면, 이 대응하는 개별 태그 데이터 값에 대한 액세스가 행해진다.
도 3은 도 3은 각각의 모드에서 동작할 때 비트 기억회로들의 블록을 포함하는 특정한 블록에 대해 기억된 예시적인 태그 엔트리들을 개략적으로 나타낸 것이다. 이 특정한 블록이 제 1 모드에서 동작하고 있을 때에는, 이 특정한 블록에 대한 태그 메모리(24) 내부의 태그 엔트리는 공유 태그값이다. 이 특정한 블록이 제 2 모드에서 동작하고 있으면, 이 특정한 블록에 대한 태그 메모리(24) 내부의 태그 엔트리는 합성값이다.
전술한 것과 같이, 태그 엔트리가 합성값이면, 참조가 행해지고 있을 때 제 1 단계 비교를 사용하여 합성값에 대응하는 특정한 블록에 대한 개별 태그들과의 잠재적인 일치를 식별한다. 이와 같은 판정을 용이하게 하기 위해, 합성값은 각각의 개별 태그들을 표시하는 식별자 값을 포함해도 된다. 식별자 값은, 개별 태그들 내부의 비트들의 해시(hash) 또는 개별 태그들이 비트들로부터 결정된 블룸 필터(Bloom filter)값 등과 같이 다양한 다른 방법으로 형성될 수 있다. 개별 태그들과의 잠재적인 일치를 표시하는 식별자 값을 형성하는 다른 방법도 사용될 수 있다.
식별자 값은 복수의 독립적으로 산출된 값들로 이루어질 수 있으며, 독립적으로 산출된 값들 각각은 대응하는 각각의 개별 태그에 따라 결정된다. 이와 달리, 한개의 값이 산출되고 한 개의 블록에 대한 식별자 값으로 사용해도 된다. 이와 같은 경우에, 한 개의 식별자 값은, 제 2 모드에서 동작하는 특정한 블록 내부의 개별 태그들 전체와 같이, 복수의 각각의 개별 태그들에 의존한다.
또 다른 가능한 구성은, 해당 블록에 대한 복수의 개별 태그들을 포함하는 각각의 적절한 서브셋에 각각 의존하는 복수의 부분들을 갖는 식별자 값이다.
도 4는 한가지 예시적인 형태의 합성값을 개략적으로 나타낸 것이다. 도 4에 도시된 예에서, 합성값은 해당 태그 엔트리가 공유 태그값이 아니라 합성값이라는 것을 나타내는 제 2 모드 플래그를 포함하는 복수의 플래그들(28)을 포함한다. 플래그들(28)은, 예를 들어, 해당 태그 엔트리가 유효하다는 것을 나타내는 유효성 플래그를 포함해도 된다. 합성값은 식별자 값을 더 포함한다. 이와 같은 도시된 예에서는, 식별자 값이 복수의 개별적으로 산출된 해시 또는 대응하는 특정한 블록 내부의 각각의 개별 태그들로부터 결정된 블룸 필터값들을 포함한다. 이들 개별적으로 산출된 값들 각각과 관련된 것은, 각각의 개별 태그 데이터 값들과 개별 태그들의 변환 색인 버퍼 캐시(16) 내부의 잔류를 제어하는 각각의 개별적인 퇴출 제어 데이터 엔트리들이다. 특히, 퇴출 제어 데이터는, (엔트리가 변환 색인 버퍼(16) 내부에 기억된 이후에 이 엔트리가 기록되었다는 것을 표시하는) 더티 플래그(dirty flag)들 및/또는 개별 태그 데이터 값이 얼마나 최근에 액세스되었는지를 표시하는 장시간 사용되지 않은 데이터(least recently used data) 등의 데이터를 포함해도 된다. 따라서, 도 4의 예에서는, 퇴출 제어 데이터가 개별 태그값들의 레벨이 아니라 합성값의 레벨에서 기억된다.
이때, 다른 실시예에서는, 식별자 값이 관련되는 특정한 블록 내부의 모든 개별 태그들에 의존하는 단일의 값으로서 산출될 수도 있다는 것을 알 수 있다. 이 경우, 수신된 어드레스를 식별자 값과 비교하여 잠재적인 일치가 식별되면, 그후에 모든 대응하는 개별 태그들이 이 어드레스와 대조하여 검사되어도 된다. 역으로, 식별자 값이 각각의 개별 태그들에 의존하는 개별적으로 산출된 값들을 포함할 때, 이들 개별적인 산출된 값들 중에서 한 개와 일치가 검출되면, 대응하는 일치하는 개별 태그만 이 어드레스와 대조하여 검사할 필요가 있다.
일부 실시예에서는, 식별자 값 내부에 표시된 정보를 고려하는 개별 태그에 대한 인코딩을 사용함으로써 개별 태그 크기의 비트 크기가 축소되어, 식별자 값과의 일치에 의해 입력된 어드레스에 대해 이미 일치한 비트들은 개별 태그 내부에 다시 기억될 필요가 없다. 이와 같은 구성은 개별 태그들과 개별 태그 데이터 값들을 기억하기 위한 특정한 블록 내부의 더 많은 공간을 마련해 준다.
도 2의 예에서는, 데이터가 공유 태그 데이터 값의 일부의 형태로서 또는 개별 태그가 붙여진 데이터 값으로서 기억될 수도 있다는 암시가 존재한다. 이것이 반드시 성립할 필요는 없다. 본 발명이 적용되는 캐시 메모리는, 기억할 데이터가 모두 공유 태그 데이터 값으로 기억되는 한편, 캐시 메모리에 기억할 다른 종류의 데이터는 모두 개별 태그 데이터 값으로서 기억되어도 되는 캐시 메모리이어도 된다. 역으로, 다른 실시예에서는, 이와 같은 제약이 적용되지 않아도 되고, 개별 항목의 데이터가 양쪽의 형태로 기억되어도 된다. 또한, 주어진 캐시 메모리가 한가지 형태로만 기억될 수도 있는 일부 데이터를 기억할 뿐 아니라 양쪽 형태로 기억될 수도 있는 데이터를 기억하도록 동작하는 것도 가능하다.
제어회로(20)는, 식별자 값과의 비교를 행할 때, 잠재적인 일치를 식별하는 역할을 한다. 식별자 값은, 이 식별자 값이 이와 같은 잠재적인 일치 검출에 대해 부정 오류(false negative)를 발생하지 않도록 선택된다. 식별자와의 비교는 긍정 오류(false positive)를 발생할 수 있는데, 즉 각각의 개별 태그들에 대해 전체 비교가 행해질 때, 실제로 일치가 발견되지 않는다. 따라서, 식별자 값은 특정한 일치를 표시하는 것이 아니라 잠재적인 일치를 표시한다. 식별자 값과의 비교에 의해 잠재적인 일치가 표시되지 않으면, 제어회로(20)는 주어진 액세스 요구를 종료할 수 있다. 식별자 값과의 일치가 존재하면, 액세스 요구가 더 진행하여, 캐시 제어기(20)는 식별자 값의 레벨에서 일치한 주어진 블록으로부터 개별 태그들을 판독하여 개별 태그들과의 비교를 행하는 역할을 한다.
식별자 값이 전체 개별 태그들을 표시하지 않는다면, 복수의 개별 태그들이 그들의 대응하는 식별자 값들에 대해 한 개의 식별자 값에 대해 2개 이상의 개별 태그들이 지정될(alias) 가능성, 즉 서로 다른 개별 태그들이 동일한 식별자 값을 갖게 될 가능성이 존재한다는 것을 알 수 있다. 이와 같은 문제를 해소하기 위해, 제어회로(20)는, (식별자 값 내에서) 한 개의 식별자 값에 대해 2개 이상의 개별 태그들이 지정되는 관련된 변환 색인 버터 캐시(16)의 특정한 세트 내부의 모든 개별 태그들이 동일한 특정한 블록에 할당되도록, 개별 태그 데이터 값들과 이에 대응하는 개별 태그들의 복수의 블록들 내부에서 할당을 제어하도록 구성되어도 된다. 이것은, 주어진 블록 내에서 다른 엔트리에 대해 한 개의 엔트리에 대해 2개 이상의 엔트리들이 지정되는 새로운 엔트리를 위한 공간을 만들기 위해 필요한 경우에는 이 주어진 블록 내부의 기존의 엔트리를 퇴출하는 것을 포함해도 된다. 제어회로(20)는, 식별자 값 내부의 개별 태그 데이터 값들과 관련된 유효성 비트들을 사용하여, 주어진 블록 내부의 특정한 엔트리들을 유효 또는 무효로 표기할 수 있다. 따라서, 주어진 블록은 임의의 시점에 데이터 엔트리들로 완전히 채워지지 않을 수도 있다.
도 5는 제어회로(20)에 의해 제어되는 캐시 판독 동작의 일례를 개략적으로 나타낸 흐름도이다. 스텝 30에서, 캐시 판독 동작(예를 들어, 특정한 어드레스에 대한 메모리 액세스 요구)이 수신된다. 스텝 32는, 태그 비교를 행할 대상이 되는 관련된 캐시 내부의 캐시 세트를 결정한다. 스텝 34는 스텝 32에서 식별된 캐시 세트에 대한 태그 엔트리들을 판독한다. 이들 태그 엔트리들은 공유 태그값들이거나 합성값들이다. 스텝 36은 스텝 34에서 판독된 태그 엔트리들을 행해지고 있는 액세스 요구의 어드레스와 비교한다. 일치하지 않으면, 스텝 38은 캐시 부적중(miss) 응답을 반환한다. 공유 태그값과의 적중이 존재하면, 스텝 40은 대응하는 특정한 블록의 비트 셀 회로들로부터 대응하는 공유 태그값 또는 값들을 판독한 후 이 데이터를 스텝 42에서 반환하는 역할을 한다.
스텝 36에서의 비교가 합성값인 태그 엔트리를 식별한 경우에, 스텝 44는 액세스 요구와 관련된 어드레스를 합성값의 식별자 값과 비교하는 역할을 한다. 잠재적인 일치가 존재하지 않으면, 스텝 38로 처리를 다시 진행하여, 부적중 응답을 반환한다. 스텝 44에서 식별된 잠재적인 일치가 존재하면, 스텝 46으로 처리를 진행하여, 주어진 블록으로부터 개별 태그들이 판독된다. 그후, 스텝 48은 이들 개별 태그들을 액세스 요구와 비교한다. 액세스 요구와 스텝 48에서 판독된 개별 태그 사이에 일치가 존재하는 경우에, 스텝 50은 대응하는 개별 태그 데이터 값을 판독하고 반환하며, 스텝 52에서 이 데이터 값을 응답한다. 스텝 48에서 식별된 일치가 존재하지 않는 경우에, 스텝 54로 처리를 진행하여, 비교할 필요가 있는 더 많은 잠재적으로 일치하는 개별 태그들이 존재하는지 여부를 판정한다. 이것은, 스텝 32에서 식별된 세트가 복수의 세트의 개별 태그들을 검사할 필요가 있다는 것을 나타내는 수신된 어드레스와 잠재적으로 일치하는 복수의 식별자 값들을 포함하는 상황에 해당한다. 검사할 필요가 있는 이와 같은 추가적인 세트들의 개별 태그들이 존재하는 경우에, 이들 중에서 다음의 개별 태그를 선택하여, 스텝 46으로 처리를 되돌린다. 한 개의 식별자 값에 대해 2개 이상의 개별 태그들이 지정되는 개별 태그들을 제어회로에 의해 동일한 특정한 블록 내에 기억되도록 제약을 가하고 제어하는 경우에, 복수의 일치하는 식별자 값들의 존재를 회피할 수도 있다. 이것은 도 5의 스텝 54를 수행할 필요성을 없애게 된다.
도 6은 캐시 갱신을 행할 때 제어회로(20)에 의해 제어된 동작의 일례를 개략적으로 나타낸 흐름도이다. 스텝 56에서, 캐시 갱신 요구가 수신된다. 스텝 58은 이 캐시 갱신을 기억할 관련된 캐시 메모리 내부의 세트를 결정한다. 스텝 60은 스텝 58에서 식별된 이 세트에 대한 태그 엔트리들을 판독한다. 스텝 62는 스텝 60에서 판독된 태그 엔트리들을 행하고자 하는 캐시 갱신의 어드레스와 비교한다. 일치가 존재하지 않으며 판독된 태그 엔트리들 내부에 식별자 값들이 존재하지 않은 경우에는, 스텝 64로 처리를 진행하여, (아마도 희생자 선택 및 퇴출 동작을 포함하는) 새로운 엔트리를 기억하기 위해 특정한 블록이 할당된다.
스텝 62에서 판독된 태그 엔트리들 내부에 적중이 존재하고, 스텝 60에서 판독된 태그 엔트리들 내부에 식별자 값들이 존재하지 않는 경우에는, 스텝 66으로 처리를 진행하여, 기억하려는 새로운 데이터 항목이 공유 태그 데이터 값으로서 제 1 모드로 기억되어야 하는지 또는 개별 태그 데이터 값으로서 제 2 모드로 기억되어야 하는지에 대해 판정이 행해진다. 새로운 데이터 값을 공유 태그 데이터 값으로서 기억하려는 경우에는, 스텝 68로 처리를 진행하여, 캐시 적중에 대응하는 기억 위치에 값이 기억된다. 스텝 66의 판정 결과 기억하려는 새로운 데이터 항목이 제 2 모드에서 개별 태그 데이터 값으로 기억하고자 하는 경우에는, 스텝 70으로 처리를 진행하여, 일치가 행해진 대상인 공유 태그에 대한 전체 엔트리가 퇴출된 후, 관련된 식별자 값을 갖는 개별 태그 데이터 값으로서 제 2 모드를 사용하여 이 위치 내에 기억된 새로운 엔트리는 스텝 72 및 74를 사용하여 태그 엔트리 내부에 기억된다.
스텝 62에서의 판정에 의해 스텝 60에서 판독된 태그들이 한 개 이상의 합성값들을 포함하는 것으로 식별된 경우에는, 스텝 76으로 처리를 진행하여, 이들 한 개 이상의 식별자 값들과 캐시 갱신의 어드레스 사이에서 비교가 행해진다. 일치하지 않는 경우에는, 스텝 64로 처리를 진행한다. 잠재적인 일치 또는 일치가 존재하는 경우에는, 스텝 78로 처리를 진행하여, 일치하는 첫 번째(또는 유일한) 식별자 값에 대한 개별 태그들이 판독된다. 그후, 스텝 80은 이들 개별 태그들을 갱신 요구 어드레스와 비교한다. 적중이 존재하는 경우에는, 스텝 82로 처리를 진행하여, 갱신되고 있는 새로운 데이터가 공유 태그 데이터 값인지 개별 태그 데이터 값인지에 대한 판정이 행해진다. 새로운 갱신된 데이터 값이 개별 태그 데이터 값인 경우에는, 스텝 78로 처리를 진행하여, 이 개별 태그 데이터 값이 갱신된다. 캐시에 기억하려는 데이터가 공유 태그 데이터 값인 경우에는, 개별 태그 데이터 값들 중에서 한 개와 적중을 위해서는 이 개별 태그 데이터 값을 포함하는 전체 블록이 퇴출될 필요가 있으며, 스텝 84에서 이것이 행해진다. 그후, 스텝 86으로 처리를 진행하여, 스텝 76에서 식별되었던 잠재적인 일치 이후에 실제 일치가 발생하는지 여부를 판정하기 위해 검사할 필요가 있는, 스텝 76에서 식별된 또 다른 식별자 값들이 존재하는지 여부에 대해 판정이 행해진다. 검사할 또 다른 식별자 값들이 존재하는 경우에는, 스텝 78로 처리를 진행하여, 이들 식별자 값들 중에서 다음의 식별자 값을 선택하여 검사한다. 검사할 또 다른 식별자 값들이 존재하지 않는 경우에는, 스텝 86으로부터 스텝 64로 처리를 진행하여, 공유 태그 데이터 값들(즉, 전체 캐시 라인)에 대해 새로운 엔트리가 할당된다.
도 7은, 예를 들어, 판독 전용 캐시에 적용가능한 단순한 캐시 갱신 동작을 행하는 캐시 제어회로(20)에 의해 행해진 제어의 일례를 개략적으로 나타낸 흐름도이다. 스텝 88에서, 캐시 갱신 동작이 수신된다. 스텝 90은 관련된 캐시 내부에서 어떤 세트가 캐시 갱신이 관련되는 어드레스에 대응하는 데이터를 잠재적으로 기억하고 있는지 판정한다. 그후, 스텝 92는 스텝 90에서 식별된 세트에 대한 태그 엔트리들을 판독한다. 스텝 94는 스텝 92에서 판독된 태그 엔트리들과 캐시 갱신 동작의 어드레스를 비교한다. 일치가 존재하지 않으면, 스텝 96으로 처리를 진행하여 식별된 세트 내부에 새로운 엔트리가 할당된 후 스텝 98에서 갱신이 행해진다. 스텝 94에서의 판정 결과, 공유 태그와의 일치가 존재하는 경우에는, 스텝 100으로 처리를 진행하여, 캐시 갱신에 대응하는 새로운 데이터가 복수의 공유 태그 데이터 값들(예를 들어, 전체 캐시 라인)인지 또는 개별 태그 데이터 값인지에 대해 판정이 행해진다. 새로운 데이터 값이 복수의 공유 태그 데이터 값들인 경우에는, 스텝 102에서 엔트리가 갱신된다. 새로운 엔트리가 개별 태그 데이터 값인 경우에는, 스텝 104가 스텝 94에서 적중이 발생한 대응하는 복수의 공유 태그 데이터 값들을 무효화한 후, 스텝 96으로 처리를 진행하여, 캐시 메모리 내부의 새로운 엔트리가 할당되고 여기에 새로운 데이터가 기록된다.
스텝 94에서의 판정 결과, 판독된 태그 엔트리들이 식별자 값을 포함하는 경우에는, 스텝 106으로 처리를 진행하여, 식별자 값과 캐시 갱신의 어드레스 사이에서 비교가 행해진다. 이것에 의해 잠재적인 일치가 존재하는 것으로 표시된 경우에는, 새로운 엔트리의 할당을 위해 스텝 96으로 다시 처리를 진행하기 전에, 스텝 108로 처리를 진행하여, 이들 잠재적으로 일치하는 개별 태그 데이터 값들에 대한 엔트리들이 (실제 개별 태그들을 검사하지 않고) 무효화된다. 스텝 106에서 잠재적인 일치가 존재하지 않는 경우에는, 스텝 96으로 바로 처리를 진행한다.
도 8은 태그 메모리(112)와 복수의 블록들의 비트 기억회로들(114)을 포함하는 캐시 메모리(110)의 또 다른 실시예를 개략적으로 나타낸 것이다. 본 실시예에서는, 태그 메모리(112) 내부의 태그 엔트리들 모두가 비트 기억회로들(114)의 복수의 블록들 중에서 특정한 블록 내부에 기억된 개별 태그들과 잠재적인 일치를 식별하는데 사용되는 식별자 값들을 포함한다. 이들 식별자 값들 중에서 한 개와 잠재적인 일치를 식별하는 적중이 발생하면, 식별된 특정한 블록 내부의 개별 태그들을 검사하여 적중을 확인할 수도 있다. 본 실시예에서는, 캐시 메모리(110)가 공유 태그들 또는 공유 태그 데이터 값들을 기억하지 않는다. 이 식별자 값에 의해 식별된 특정한 블록 내부에 기억된 개별 태그들과 함께 식별자 값을 사용하는 기술은, 다수의 태그들을 병렬로 비교하기 위한 바람직하지 않게 넓은 비교기들을 필요로 하지 않으면서 고도의 관련성이 지원될 수 있도록 허용한다. 그 대신에, 효율적인 복수의 순차적인 참조, 즉 먼저 식별자 값에 대응하는 참조와, 그후에, 필요하면, 개별 태그들에 대응하는 참조가 행해진다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (19)

  1. 복수의 블록들의 비트 기억회로들과,
    상기 복수의 블록들 내부의 특정한 블록을 대한 액세스를 제어함으로써, 상기 특정한 블록이,
    공유 태그를 갖는 복수의 공유 태그 데이터 값들을 기억하는 제 1 모드와,
    복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제2 모드 중에서 선택가능한 한 개의 모드에서 동작하도록 하는 제어회로를 구비한 캐시 메모리.
  2. 제 1항에 있어서,
    복수의 태그 엔트리들을 기억하는 태그 메모리를 구비하고, 상기 특정한 블록에 대응하는 상기 복수의 태그 엔트리들 내부의 특정한 태그 엔트리가,
    상기 특정한 블록이 상기 제 1 모드에 있는 경우의 상기 공유 태그 값과,
    상기 특정한 블록이 상기 제 2 모드에 있는 경우의 합성값 중에서 한 개를 기억하는 캐시 메모리.
  3. 제 2항에 있어서,
    상기 합성값은, 상기 특정한 블록이 상기 제 2 모드에 있다는 것을 표시하는 제 2 모드 플래그를 포함하는 캐시 메모리.
  4. 제 2항에 있어서,
    상기 합성값은 상기 각각의 개별 태그들을 표시하는 식별자 값을 포함하는 캐시 메모리.
  5. 제 4항에 있어서,
    상기 식별자 값은,
    상기 각각의 개별 태그들에 따라 복수의 독립적으로 산출된 값들과,
    복수의 상기 각각의 개별 태그들에 따라 산출된 한 개의 값 중에서 한 개인 캐시 메모리.
  6. 제 4항에 있어서,
    상기 제어회로는, 상기 특정한 블록이 상기 제 2 모드에 있을 때, 상기 특정한 블록에 대한 액세스 요구에 응답하여, 상기 액세스 요구와 관련된 메모리 어드레스 값의 적어도 일부와 상기 식별자 값의 비교를 행하여, 언제 상기 각각의 개별 태그들 모두가 상기 메모리 어드레스 값과 일치하지 않는지를 식별하고, 그후 상기 액세스 요구를 종료하는 캐시 메모리.
  7. 제 6항에 있어서,
    상기 비교에 의해 상기 각각의 개별 태그들 중에서 적어도 한 개가 상기 메모리 어드레스 값과 잠재적인 일치를 갖는 것으로 식별된 경우, 상기 제어회로는, 상기 특정한 블록으로부터 상기 각각의 개별 태그들을 판독하고, 상기 각각의 개별 태그들을 상기 메모리 어드레스 값과 비교하는 캐시 메모리.
  8. 제 4항에 있어서,
    상기 식별자 값 내에서 한 개의 식별자 값에 대해 2개 이상의 개별 태그들이 지정되는 동일한 캐시 세트 내부에 있는, 한 개의 식별자 값에 대해 2개 이상의 개별 태그들이 지정되는 복수의 개별 태그들이 검출될 때, 이들 복수의 개별 태그들과 이에 대응하는 개별 태그 데이터 값들이 함께 상기 복수의 블록들 중 공통 블록 내부에 기억되도록, 상기 제어회로가 복수의 블록들의 개별 태그 데이터 값들 및 각각의 개별 태그들 내부에서 할당을 제어하는 캐시 메모리.
  9. 제 2항에 있어서,
    상기 태그 메모리 및 상기 복수의 블록들의 비트 기억회로들은 공유 비트 라인들을 갖는 메모리의 블록을 포함하고, 상기 제어회로는, 상기 공유 비트 라인들에 접속된 비교회로를 포함하여, 상기 태그 메모리에 기억된 상기 태그 엔트리들 및 상기 특정한 블록 내부에 기억된 상기 각각의 개별 태그들 모두에 대한 액세스를 제공하는 캐시 메모리.
  10. 제 2항에 있어서,
    상기 합성값은 상기 복수의 개별 태그 데이터 값들 및 각각의 개별 태그들에 대한 퇴출 제어 데이터를 포함하고, 상기 제어회로는 상기 퇴출 제어 데이터에 응답하여 상기 복수의 개별 태그 데이터 값들 및 각각의 개별 태그들에 대한 퇴출 동작을 제어하는 캐시 메모리.
  11. 제 10항에 있어서,
    상기 퇴출 제어 데이터는, 상기 복수의 개별 태그 데이터 값들이 상기 특정한 블록에 기억되는 동안 변경되었다는 것을 표시하는 각각의 더티 비트들을 상기 복수의 개별 태그 데이터 값들에 대해 포함하는 캐시 메모리.
  12. 제 10항에 있어서,
    상기 퇴출 제어 데이터는 상기 특정한 블록이 유효 데이터를 포함하는지 여부를 표시하는 유효성 데이터를 포함하고, 상기 제어회로는 상기 유효성 데이터를 변경함으로써 상기 복수의 개별 태그 데이터 값들 및 각각의 개별 태그들을 무효화하는 캐시 메모리.
  13. 제 1항에 있어서,
    상기 태그 메모리는 판독 전용 캐시 메모리이고, 상기 복수의 개별 태그 데이터 값들 및 각각의 개별 태그들을 기억하는 것으로부터 상기 공유 태그 데이터 값들을 기억하는 것으로 상기 특정한 블록을 변경할 때, 상기 제어회로는 상기 특정한 블록에 대응하는 캐시 세트 내부의 상기 복수의 개별 태그 데이터 값들 및 각각의 개별 태그들을 모두를 무효화하는 캐시 메모리.
  14. 제 5항에 있어서,
    상기 캐시 메모리는 판독 전용 캐시 메모리이고, 주체 공유 태그(subject shared tag)를 갖는 주체 공유 태그 데이터 값을 기억하기 위해 상기 복수의 블록들 중에서 한 개를 할당할 때, 상기 제어회로는, 상기 주체 공유 태그로부터 결정되고 동일한 캐시 세트 내부에 있는 식별자 값과 일치하는 식별자 값들을 갖는 기억된 개별 태그 데이터 값들 및 각각의 개별 태그들을 무효화하는 캐시 메모리.
  15. 제 1항에 있어서,
    상기 캐시 메모리는, 메모리 관리 유닛의 일부이고, 복수의 페이지 테이블 레벨들을 갖는 계층 페이지 테이블들로부터의 페이지 테이블 데이터를 기억하는 캐시 메모리.
  16. 제 15항에 있어서,
    상기 제어회로는, 상기 복수의 페이지 테이블 레벨들 내부의 어떤 레벨에 상기 페이지 테이블 데이터가 대응하는지에 따라, 상기 제 1 모드 또는 상기 제 2 모드에서 상기 페이지 테이블 데이터를 기억하도록 상기 캐시 메모리를 제어하는 캐시 메모리.
  17. 제 1항에 있어서,
    상기 공유 태그 데이터 값들과 상기 개별 태그 데이터 값들은 서로 다른 크기와 서로 다른 용도를 갖는 캐시 메모리.
  18. 복수의 블록들의 비트 기억회로들을 갖는 캐시 메모리의 작동방법으로서,
    상기 복수의 블록들 내부의 특정한 블록을 대한 액세스를 제어함으로써, 상기 특정한 블록이,
    공유 태그를 갖는 복수의 공유 태그 데이터 값들을 기억하는 제 1 모드와,
    복수의 개별 태그 데이터 값들과 각각의 개별 태그들을 기억하는 제2 모드 중에서 선택가능한 한 개의 모드에서 동작하도록 하는 단계를 포함하는 캐시 메모리의 작동방법.
  19. 복수의 블록들의 비트 기억회로들과,
    식별자 값을 기억하는 태그 메모리를 구비하고,
    상기 복수의 블록들 내부의 특정한 블록이 복수의 개별 태그 데이터들과 각각의 개별 태그들을 기억하고,
    상기 식별자 값이 상기 각각의 개별 태그들을 표시하는 캐시 메모리.
KR1020160171208A 2016-01-05 2016-12-15 캐시 메모리 KR20170082121A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1600133.1A GB2546245B (en) 2016-01-05 2016-01-05 Cache memory
GB1600133.1 2016-01-05

Publications (1)

Publication Number Publication Date
KR20170082121A true KR20170082121A (ko) 2017-07-13

Family

ID=55406700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160171208A KR20170082121A (ko) 2016-01-05 2016-12-15 캐시 메모리

Country Status (4)

Country Link
US (1) US10423534B2 (ko)
KR (1) KR20170082121A (ko)
CN (1) CN107015922B (ko)
GB (1) GB2546245B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402337B2 (en) 2017-08-03 2019-09-03 Micron Technology, Inc. Cache filter
GB2566470B (en) * 2017-09-13 2021-02-10 Advanced Risc Mach Ltd Cache storage
GB2566469B (en) 2017-09-13 2021-03-24 Advanced Risc Mach Ltd Cache line statuses
US10725927B2 (en) * 2017-12-04 2020-07-28 Beijing Panyi Technology Co., Ltd. Method and apparatus for co-managed cache system
US11762566B2 (en) 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
GB2570326B (en) * 2018-01-22 2020-06-10 Advanced Risc Mach Ltd Multiple guard tag setting instruction

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006757A1 (en) * 2007-06-29 2009-01-01 Abhishek Singhal Hierarchical cache tag architecture
US8589627B2 (en) * 2010-08-27 2013-11-19 Advanced Micro Devices, Inc. Partially sectored cache
US8935485B2 (en) * 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9087561B2 (en) * 2012-12-21 2015-07-21 Advanced Micro Devices, Inc. Hybrid cache
US20140189243A1 (en) * 2012-12-28 2014-07-03 Blas Cuesta Sectored cache with hybrid line granularity

Also Published As

Publication number Publication date
GB201600133D0 (en) 2016-02-17
US20170192900A1 (en) 2017-07-06
US10423534B2 (en) 2019-09-24
CN107015922A (zh) 2017-08-04
GB2546245A (en) 2017-07-19
GB2546245B (en) 2020-08-19
CN107015922B (zh) 2023-05-16

Similar Documents

Publication Publication Date Title
KR20170082121A (ko) 캐시 메모리
US5526504A (en) Variable page size translation lookaside buffer
US10191853B2 (en) Apparatus and method for maintaining address translation data within an address translation cache
US9734059B2 (en) Methods and apparatus for data cache way prediction based on classification as stack data
US10929308B2 (en) Performing maintenance operations
US10628318B2 (en) Cache sector usage prediction
CN108459975B (zh) 用于有效使用地址转换缓存的技术
US20180004678A1 (en) Apparatus and method for performing address translation
US10564871B2 (en) Memory system having multiple different type memories with various data granularities
KR20160130707A (ko) 캐시의 콘텐츠 트랙킹
US20140189244A1 (en) Suppression of redundant cache status updates
US11151039B2 (en) Apparatus and method for maintaining cache coherence data for memory blocks of different size granularities using a snoop filter storage comprising an n-way set associative storage structure
US10831673B2 (en) Memory address translation
EP0675443A1 (en) Apparatus and method for accessing direct mapped cache
US7069390B2 (en) Implementation of a pseudo-LRU algorithm in a partitioned cache
US20190243778A1 (en) Memory address translation
US10642749B2 (en) Electronic device and method for managing memory thereof
KR20190030189A (ko) 캐시 스토리지
US20140013054A1 (en) Storing data structures in cache
EP0486154A2 (en) Virtual memory system
EP1789883A1 (en) A virtual address cache and method for sharing data using a unique task identifier
US10545877B2 (en) Apparatus and method for accessing an address translation cache
US20140173208A1 (en) Methods and apparatus for multi-level cache hierarchies
KR100486240B1 (ko) 분리된 캐쉬 메모리를 구비한 마이크로프로세서 및 메모리 액세스 방법
US7143239B2 (en) Cache structure and methodology

Legal Events

Date Code Title Description
A201 Request for examination