KR100637610B1 - 로킹을 사용한 캐시 교체방법 - Google Patents

로킹을 사용한 캐시 교체방법 Download PDF

Info

Publication number
KR100637610B1
KR100637610B1 KR1019997006005A KR19997006005A KR100637610B1 KR 100637610 B1 KR100637610 B1 KR 100637610B1 KR 1019997006005 A KR1019997006005 A KR 1019997006005A KR 19997006005 A KR19997006005 A KR 19997006005A KR 100637610 B1 KR100637610 B1 KR 100637610B1
Authority
KR
South Korea
Prior art keywords
cache
memory
lock
locking
elements
Prior art date
Application number
KR1019997006005A
Other languages
English (en)
Other versions
KR20000069836A (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 KR20000069836A publication Critical patent/KR20000069836A/ko
Application granted granted Critical
Publication of KR100637610B1 publication Critical patent/KR100637610B1/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

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

Abstract

각각 로킹을 사용하는 캐시 교체방법을 할 수 있게 하는 컴퓨터 시스템, 캐시 메모리 및 프로세스이다. 컴퓨터 시스템은 처리장치 및 메모리 시스템을 포함하며, 이 메모리 시스템은 상위레벨 메모리, 캐시 메모리 및 로크 순서할당 자원을 포함한다. 상위레벨 메모리는 정보저장을 제공하며 캐시 메모리는 캐시블록 내 그 정보의 일부를 복사하며, 캐시 메모리는 세트 및 웨이로 조직된 엘리먼트를 포함하며 교체방법을 지원한다. 로크 순서할당 자원은 전체 웨이보다 적은 세분성(granularity)과, 선택된 웨이 중 하나의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로 한 엘리먼트씩, 그 선택된 웨이를 통해 진행되는 엘리먼트 로킹의 선택된 인접성을 지원한다. 프로세스는 전체 웨이보다 적은 세분성을 설정하는 단계, 로킹 선두 엘리먼트를 선택하는 단계, 로킹에 사용할 수 있는 웨이를 선택하는 단계, 선택된 웨이 중 하나의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로 한 엘리먼트씩 그 선택된 웨이를 통해 진행되는 엘리먼트 로킹의 선택된 인접성을 선택하는 단계를 포함한다.
컴퓨팅 시스템, 캐시 메모리, 로크 순서할당 자원, 상위레벨 메모리, 캐시 교체방법

Description

로킹을 사용한 캐시 교체방법{Cache replacement policy with locking}
본 발명은 캐시 메모리(cache memory)를 이용 및 구현하는 시스템, 장치 및 방법에 관한 것이다. 보다 구체적으로, 본 발명은 로킹(locking)을 지원하는 교체 방법(replacement policy)을 갖는 세트-연관(set-associative) 캐시 메모리들을 이용 및 구현하는 시스템들, 장치들 및 방법들에 관한 것이다.
캐시 메모리들은 일반적으로 메모리 시스템의 일부를 이루며, 이 메모리 시스템은 통상 개인용 컴퓨터나 TV 셋탑 박스와 같은 컴퓨팅 시스템의 일부를 이룬다. 컴퓨팅 시스템은 또한 처리장치를 포함한다. 컴퓨팅 시스템에서, 메모리 시스템은 독출 및 기입 동작들에서 처리장치가 액세스하는 정보를 저장한다. 정보에 액세스할 때, 처리장치는 본질적으로 즉시 정보를 이용할 수 있을 것을 통상 요구한다. 정보가 지연되면 처리장치의 동작은 정지할 수 있다("스톨(stall)"). 스톨은, 사용자 경험의 측면에서, 컴퓨팅 시스템의 수행저하가 눈이 띄지 않는 상태로부터 상당히 알 수 있는 상태에까지 이를 수 있다. 더구나, 처리장치의 스톨링되지 않는 성능이 애플리케이션 실행의 기초인 경우에, 스톨은 컴퓨팅 시스템이 작동되지 않게 할 수 있다. 따라서, 컴퓨팅 시스템의 적합한 동작은 처리장치의 성능의 함수일 뿐만 아니라 메모리 시스템의 성능의 함수이기도 하다. 이상적인 메모리 시스템들은 대단히 빠른 속도, 대단히 큰 용량 및 저비용이라는 3가지 특성을 만족한다. 메모리 시스템은 예를 들어 처리장치의 동작이 정보 이용 가능성(availability)에 방해받지 않도록 대단히 빨라야 한다. 메모리 시스템들은 애플리케이션들과 연관된 동작들에서 처리장치가 필요로 할 수 있는 임의의 및 모든 정보를 제공할 수 있도록 용량이 대단히 커야 한다. 메모리 시스템들은 예를 들어 컴퓨팅 장치에 대한 메모리 시스템의 비용 부담을 최소화하기 위해 저렴해야 한다.
그러나, 일반적으로, 어떠한 단일의 메모리 기술도 이들 특성들 각각을 동시에 만족할 수 없다. 오히려, 메모리 기술들은 보통 이들 특성들 중 임의의 두 개의 특성을 만족할 수 있으나 나머지 특성을 침해한다. 이러한 제약 때문에, 메모리 시스템들은 통상 계층적으로 구성된다. 계층적 메모리 시스템들은 각 레벨에서 속도, 용량 및 비용 간에 균형을 맞추고 허용가능한 성능 및 경제성 모두를 전체적으로 달성하도록, 통상 물리적으로 구별되는 레벨들로 여러 기술들을 결합한다.
계층적 메모리 시스템의 최하위 레벨에는 통상적으로 시스템의 처리 장치의 레지스터들이 있다. 이들 레지스터 수는 한정되어 있고, 레지스터는 극히 빠르며, 처리장치(예를 들어, 연산 로직부)의 로직블록들에 물리적으로 인접하여 배치되어 있다. 그러나, 이들의 위치로 인해서 레지스터는 다른 메모리 기술에 비해 비싸다.
상기 계층의 다음 상위 레벨에는 캐시 메모리가 있다. 캐시 메모리는 처리장치의 집적회로("온-칩(on-chip)")의 일부로서 존재하는 제1 레벨, 및 온-칩은 아니나 처리장치의 패키지 내부 또는 이러한 장치에 근접하여 결합될 수 있는 제2 레벨을 포함하는 레벨들을 캐시 메모리 자체가 차지할 수 있다. 계층에는 그 외 다른 증가하는 상위 레벨의 메모리가 있다. 이들 레벨들은 통상 (i) 일반적으로 휘발성 메모리 기술(예를 들어 형태가 어느 것이든 랜덤 액세스 메모리)을 포함하는 주 메모리, 및 (ii) 보다 영구적인 저장장치(예를 들어, 콤팩트 디스크, 플로피, 하드 및 테이프 드라이브)를 포함한다.
캐시 메모리는 일반적으로, 상위 레벨의 메모리에 비해 고속의 기술을 사용하여 실행된다. 이들 기술은 비트단위로 비교적 비싼 경향이 있다. 그러나, 캐시 메모리는 통상 용량이 적기 때문에, 컴퓨팅 시스템에서 이로 인한 전체 비용은 허용가능하다.
통상 캐시 메모리의 고속 동작은 처리장치에 물리적으로 근접하여 결합됨으로써 보강된다. 캐시 메모리의 속도 및 결합에 맞추기 위해, 캐시 메모리는 일반적으로 바로 다음에 가장 액세스할 것으로 간주되는 정보를 보유하도록 실행된다. 이러한 점에서, 정보(예를 들어, 데이터, 명령, 또는 이들 모두)가 캐시 메모리에 있다면("히트(hit)") 정보를 장치에 고속으로 제공할 수 있기 때문에 처리장치는 먼저 캐시 메모리를 통해 특정 정보에의 액세스를 탐색할 것이다. 캐시 메모리에서 정보를 못 찾으면("미스(miss)"), 처리장치는 메모리 시스템의 다음 상위 레벨 중 하나를 통해 정보를 액세스한다. 이들 다음 레벨 액세스는 통상, 히트에 비해 처리장치에의 정보 이용 가능성이 점점 더 크게 지연된다("미스 대가(miss penalty)"). 더구나, 이들 다음 레벨 액세스는 주 메모리로부터 정보를 캐시 메모리에 복사함으로써 캐시 메모리 내용의 갱신을 트리거한다. 캐시 미스 및 그에 따른 갱신과정은 처리장치를 지연시키는 경향이 있다.
따라서, 캐시 메모리는 통상적으로 하드웨어 및 소프트웨어의 조합을 통해, 정보의 복사 카피를 저장할 뿐만 아니라 캐시 메모리의 내용을 연속적으로 관리할 수 있는 컴퓨팅 시스템에 구축되어 캐시 미스 및 그에 따른 갱신을 최소화한다. 이렇게 하기 위해서, 캐시 메모리는 통상 참조 지역성(locality of reference) 원리를 이용한다. 이 원리는 어떤 정보가 다른 정보보다 먼저 액세스될 더 높은 확률을 갖도록 유지한다. 이 원리는 공간 지역성 및 시간 지역성의 2가지 성분의 특성을 갖는다. 공간 지역성은 특정 메모리 주소를 갖는 액세스 정보가 이웃 메모리 주소 내의 정보를 가까운 장래에 액세스하게 될 것임을 의미한다. 따라서, 공간 지역성은 일반적으로 캐시에 가져올 정보의 범위를 결정하는데 사용된다. 갱신에서, 예를 들어 공간 지역성은 액세스된 정보 및 이웃 정보를 모두 캐시 메모리에 복사하는 것을 의미한다.
시간 지역성은 어떤 정보에 대한 액세스가 이 정보를 가까운 장래에 다시-액세스하게 될 것임을 의미한다. 시간 지역성은 일반적으로, 교체방법을 결정하기 위해 즉, 만약 있다면 어떤 정보가 캐시 갱신에서 교체될 것인지를 결정하는데 사용된다. 예를 들어, 미스는 갱신에서 저장되는 정보의 양, 크기에 대응하는 정보를 교체하는 갱신과정을 트리거한다. 교체방법의 하나는 갱신할 때 최근에 가장 최소한으로 사용된 정보를 교체하는 것인데, 이러한 정보는 가까운 장래에 가장 덜 사용될 것으로 간주되는 것이며, 따라서 교체가능하다.
지역성 원리로 수행할지라도, LRU 교체방법의 제한없는 동작은 바람직하지 않다. 예를 들어, 어떤 정보는 최근에는 사용되지 않을 수도 있고, 그럼에도 불구하고 처리장치의 동작 또는 컴퓨팅 시스템의 전체 기능에 중요한 것으로 간주되어 캐시 메모리에 존속되어야 할 것이다.
중요정보를 존속시키는 한가지 방법은 캐시 로킹(cache locking)으로서 알려져 있다. 캐시 로킹 방식이 제안되어 있으나 일반적으로 결점이 있다. 예를 들어, 이 방식은 캐시 메모리를 고정된, 바람직하지 않게 큰 증분 증가량(예를 들어, "세분성(granularity)")으로 로킹하려는 경향이 있다. 큰-세분성 로킹 방식은 중요하지도 않고 지역성 원리도 만족시키지 않는 정보를 캐시 메모리에 존속시키는 경향이 있기 때문에 바람직하지 않다. 이러한 정보를 존속시키는 것은 캐시 메모리의 용량을 낭비하는 것이다. 이러한 낭비는 캐시 메모리의 크기를 실질적으로 감소시켜 캐시 메모리의 성능을 저하시킨다(캐시 메모리 크기가 감소됨에 따라 캐시 메모리의 히트률은 감소하게 된다).
더욱이, 제안된 로킹 방식은 지역성 원리로 수행하지 않는 교체방법을 사용하는 경향이 있다. 이러한 교체방법을 사용하여 캐시 메모리의 성능을 저하시키게 된다. 예를 들어, 이러한 교체방법은 특히 로킹된 정보량이 증가함에 따라, 언로킹된 활동 정보를 교체할 가능성을 높이는 경향이 있다. 활동 정보의 교체는 캐시 미스의 빈도수를 증가시키게 된다.
따라서, 지역성 원리로 수행하는 교체방법을 제공하면서, 중요한 비활동 정보의 교체를 방지하는 캐시 로킹을 제공하는 것이 바람직하다. 또한 언로킹된 정보에 응용가능한 교체방법에서 지역성 원리를 강화하면서 크기가 최적화된 세분성을 사용하여 캐시 메모리 내의 중요 정보를 로킹할 수 있게 하는 것이 바람직하다.
<발명의 요약>
본 발명의 목적은 종래의 메모리 시스템, 특히 캐시 메모리에 관련된 한계를 극복하는 것이다. 본 발명의 또 다른 목적은 언로킹된 정보에 응용할 수 있는 교체방법에서 지역성 원리를 강화하면서, 캐시 메모리 내의 중요 정보를 로킹할 수 있게 하는 것이다.
이들 및 다른 목적에 따라, 본 발명의 한 특징으로서, 컴퓨팅 시스템은 처리장치 및 메모리 시스템을 포함하며, 메모리 시스템은 상위레벨 메모리, 캐시 메모리 및 로크 순서할당 자원(lock ordering resources)을 포함한다. 상위 레벨 메모리는 정보저장을 제공하며 캐시 메모리는 캐시블록 내 그 정보의 일부를 복사하며, 캐시 메모리는 세트 및 웨이로 구성된 엘리먼트를 포함하며 교체방법을 지원한다. 로크 순서할당 자원은 전체 웨이보다 적은 세분성을 지원하며 선택된 웨이들 중 한 웨이의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로, 한 엘리먼트씩 선택된 웨이들을 통해 진행되는 엘리먼트 로킹의 선택된 인접성(contiguity)을 지원한다. 또 다른 특징에서, 본 발명은 로크 순서할당 자원을 갖는 캐시 메모리를 포함한다. 또 다른 특징에서, 본 발명은 전체 웨이보다 적은 세분성을 설정하는 단계와, 로킹에 사용할 수 있는 웨이를 선택하는 단계와, 선택된 웨이들 중 한 웨이의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로 한 엘리먼트씩 선택된 웨이들을 통해 진행하는 엘리먼트 로킹의 인접성을 지원하는 단계를 포함한다.
본 발명을 특징짓는 신규성의 여러 가지 특징은 본 명세서에 첨부되어 있고 본 명세서의 일부를 이루는 청구범위에서 특정하게 나타나 있다. 본 발명의 동작 잇점 및 그것의 사용에 의해 얻어진 특정한 목적을 잘 이해하기 위해서, 본 발명의 바람직한 실시예를 예시 및 기술한 첨부한 도면 및 서술적인 내용을 참조하도록 하며, 동일 참조부호는 동일 또는 유사한 구성요소를 나타낸다.
도 1은 본 발명에 따른 일반화된 컴퓨팅 시스템을 도시한 도면.
도 2는 본 발명에 따른 캐시 메모리를 도시한 도면.
도 3은 도 2의 캐시 메모리의 일부를 상세히 도시한 도면.
도 4는 본 발명에 따른, 캐시 메모리에 4-웨이 LRU 관리 실행의 실시예를 도시한 도면.
도 5는 본 발명에 따른, 4-웨이 및 2-웨이 LRU로서 실행된 8-웨이 계층적 LRU 관리의 실시예를 도시한 도면.
도 6은 본 발명에 따른, 8-웨이 비계층적 LRU 관리의 실시예를 도시한 도면.
도 7은 본 발명에 따른, 캐시 메모리의 초기화에 관련된 단계의 실시예를 도시한 흐름도.
본 발명은 언로킹된 정보에 응용할 수 있는 것으로서, 지역성의 원리로 실시되는 교체방법을 제공하면서 세트-연관 캐시 메모리 내의 중요 정보를 로킹할 수 있게 한다.
다음의 설명에서, 용어 및 다른 상세한 설명은 본 발명의 완전한 이해를 제공하기 위해 개시된 것이다. 그러나, 당업자는 본 발명을 실시하기 위해 어떤 상세한 설명이 필요하지 않다는 것을 알 것이다. 더구나, 알려져 있는 소자, 장치, 처리 단계 및 유사한 정보는 본 발명을 불명료하게 하는 것을 피하기 위해서 예를 들어 블록도로 보임으로써 상세한 설명에서 생략될 수 있다.
더욱이, 당업자는 이하의 상세한 설명이 본 발명의 소정 실시예이지 본 발명의 모든 실시예를 기술하도록 된 것이 아니며 기술하고 있지 않음을 알 것이다. 이러한 면에서, 이와 같은 설명에 대해, 당업자는 본 발명의 원리에서 벗어남이 없이 임의의 하나 이상의 특징은 기술된 것 이외의 것이 될 수 있음을(혹은 어떤 경우에는 완전히 생략될 수 있음을) 알 것이다. 한 예로서, 실시예는 단지 데이터만을 포함하도록 구성된 캐시 메모리를 응용하는 것으로 기술된다. 그러나, 본 발명은 명령 및 데이터/명령에 대해 포함하는 다른 구성의 캐시 메모리를 포함함을 알 것이다. 또 다른 예로서, 본 실시예는 카피-백 방법(copy-back policy)을 지원하기 위해 기술된다. 그러나, 본 발명은 기입-스루(write-through)를 포함하여 다른 기입 방법들을 포함함을 알 것이다. 또 다른 예로서, 실시예는 한 엘리먼트의 세분성으로, 각 세트의 모든 엘리먼트의 반 이하를 로킹할 수 있는 것이 기술된다. 그러나, 본 발명은 한 엘리먼트 이외의 선택된 세분성뿐만 아니라, 각 세트의 엘리먼트의 반 이상을 로킹하는 것을 포함한다. 마지막, 개략적인 예로서, 실시예는 8-웨이 세트-연관 캐시 메모리를 응용하는 것을 기술한다. 그러나, 본 발명은 그와는 달리 조직되는 캐시 메모리를 포함함을 알 것이다.
상세히 기술하기 전에, 어떤 일반적인 캐시 용어를 명료하게 하기 위해서 다음에 설명한다.
캐시 블록(cache block); 일반적으로 주소 범위에 의해 결정되는 정해진 워드 수를 갖는 정보량이다. 각각의 캐시 블록은 태그 어레이 내에 저장된 연관 태그를 갖는다. 캐시 블록은 공간 지역성에 대응하는 것으로서, 캐시 메모리에 저장하기 위해 상위 레벨 메모리로부터 정보를 복사하는 단위가 된다. n-웨이 세트-연관 캐시 메모리에서, 각각의 캐시 블록은 캐시 블록이 할당된 세트의 "n"개 엘리먼트 중 임의의 것에 존재할 수 있다. 기술된 실시예에서, 캐시 블록은 64바이트(64B)를 갖는다.
블록상태(block status); 캐시 블록에 연관된 상태 비트이다. 상태 비트는 수정된 블록을 나타내는 더티 비트(dirty bit) 및 캐시 블록이 유효함을 나타내는 유효 비트를 포함한다. 기술된 실시예에서, 하나의 더티 비트 및 하나의 유효 비트가 캐시 블록마다 사용된다. 따라서, 각각의 캐시 블록 및 이의 연관된 태그는 완전히 유효하든지 무효하며, 각각은 완전히 변경되거나(dirty) 그렇지 않다.
카피-백(copy-back); 처리 장치가 상위레벨 메모리에 즉시 기입되지 않는 정보를 캐시 메모리에 기입하는 기입방법이다. 카피-백 과정은 캐시 블록이 수정된 캐시 블록임을 나타내기 위해서, 즉 블록의 정보가 상위 레벨 메모리의 연관된 정보와 일치되지 않음을 나타내기 위해서 더티 비트를 세팅한다. 캐시 메모리에 블록이 교체될 때 수정된 캐시 블록의 정보가 상위 레벨 메모리에 기입된다(카피 백된다). 여기 개시된 실시예에서, 전체 캐시 블록은 상위 레벨 메모리에 카피 백된다.
데이터 메모리; 정보를 저장하는데 사용되는 캐시 메모리의 물리적인 구조이 다. 데이터 메모리는 통상, 어레이로 조직된 고속의 랜덤 액세스 메모리 기술을 포함한다. 기술된 실시예에서, 데이터 메모리는 16킬로바이트(16KB)의 용량을 갖는다.
엘리먼트(element); "m"개의 세트를 갖는 n-웨이 세트-연관 캐시 메모리에서, 각각의 세트는 "n"개의 엘리먼트를 가지며, 각각의 엘리먼트는 하나의 캐시 블록을 저장할 수 있고 하나의 연관 태그를 갖는다. 엘리먼트가 로킹되었을 때, 이에 연관된 캐시 블록은 LRU 교체방법에 의해 교체될 수 없다.
그룹(group); 계층적 LRU 교체방법의 구획단위이다. 기술된 계층적 LRU 실시예에서, 각 세트의 8개의 엘리먼트는 각각 2개의 엘리먼트를 갖는 4개의 그룹으로 구획된다. 계층적 실시예에서 소정 세트에 대하여 미스 후에, 교체될 캐시 블록은 최근에 최소한으로 사용된 세트의 그룹을 선택하고 이 그룹 중 최근에 최소한으로 사용된 엘리먼트를 선택함으로써 결정되며, 그리하여 상기 엘리먼트의 캐시블록이 교체된다. 로킹이 그룹에 응용될 때, 엘리먼트 중 단지 하나만이 로킹되고 LRU 교체방법은 교체할 수 있는 캐시블록을 저장함으로써 논로킹된 엘리먼트를 유지하는 것이 바람직하다.
히트(hit); 어떤 원하는 정보가 캐시 메모리에 존재함을 나타낸다.
무효화(invalidate); 예를 들어 통상적으로 비트를 논리 0으로 클리어함으로써 캐시블록의 무효성을 나타내기 위해서 유효비트를 수정하는 동작이다. 캐시블록의 무효화는 캐시 메모리로부터 그 블록을 효과적으로 제거한다. 단지 하나의 유효비트만이 블록마다 사용된다면, 유효비트를 리셋할 때 전체의 캐시 블록이 무효화된다.
최근에 최소한으로 사용된 교체방법(least recently used replacement policy)(또는 "LRU 교체방법(LRU replacement policy)" 혹은 "LRU"). 캐시 메모리 내의 정보 사용 이력에 따라 캐시 메모리에서 정보를 교체하는 캐시 메모리 운영방법; 최근에 최소한으로 사용된 캐시블록은 교체되도록 탐색되어, 로킹된다. 기술된 실시예에서, LRU 교체방법은 바람직하게는 계층적이며, 8-웨이 세트-연관 조직은 2-웨이 LRU과 대등하게 4-웨이 LRU를 사용한다. 캐시 메모리의 각각의 세트는 이에 연관된 10비트를 갖고 LRU를 지원하며, 바람직하게는 세트의 비트는 모두 LRU 관리(administration) 구조로 조직된다.
로킹(Locking); 캐시 메모리 내의 선택된 정보를 교체로부터 제외하는 동작이다. 기술된 실시예에서, 로킹은 데이터 메모리의 반 이하로 제한되는 것이 바람직하다. 기술된 실시예에서, 로킹은 8-웨이 세트-연관 조직에서 각 세트의 8개의 엘리먼트 중 4개 이하로 한정되며, 로킹은 (i) 세분성이 전체 웨이 미만이며(예를 들어, 한 엘리먼트/캐시블록), (ii) 로킹된 엘리먼트가 세트들간에 실질적으로 고르게 분포되며 (iii) 선택된 웨이의 선택된 엘리먼트부터 시작하여 선택된 순서로 로킹할 수 있는 방식으로 진행하는 인접 로킹을 특징으로 한다.
로크 범위(Lock range); 캐시블록을 로킹하기 위해서 선언된(declared) 컴퓨팅 시스템의 선형 주소범위(들)이다. 기술된 실시예에서, 로크 범위는 두 개의 레지스터(LOCK_ADDRESS 및 LOCK_SIZE)를 세팅함으로써 선언된다.
미스(Miss); 어떤 원하는 정보가 캐시 메모리에 존재하지 않음을 나타낸다.
수정된 캐시블록(Modified cache block); 상기 카피-백 동작에 대해 기술된 바와 같이, 더티 비트가 세팅된 캐시블록이다. 수정된 캐시블록은 상위레벨 메모리에 대해서 캐시블록의 현재 버전을 포함한다.
세트(Set); 세트-연관 캐시 메모리의 단위이다. 각각의 세트는 일정한 개수의 연관된 엘리먼트, 및 그 태그를 갖는다. 이러한 조직에서, 세트의 연관 태그들이 동시에 비교되어 캐시 메모리에 액세스를 탐색하는 동작에 대해 세트 내에 캐시 히트 또는 미스를 결정한다.
세트-연관(Set-associative); 캐시 메모리는 정보에 관련된 주소를 나타내는 데이터, 및 정보 자체를 저장하고 있는 점에서 결합된 것이다. 세트-연관은 정보 및 그 주소가 캐시 메모리의 각각의 한정된 부분에, 즉 세팅된 부분에만 저장된 조직을 참조한다. 결합된 세트에 맵핑된 후, 정보는 그 세트의 임의의 엘리먼트에 저장된다. 세트 내의 엘리먼트 개수가 "n"이라면, 캐시 메모리는 "n-웨이 세트-연관(n-way set-associative)"으로서 알려져 있다. 여기 개시된 실시예에서, 캐시 메모리는 각각 8개 엘리먼트의 32세트를 갖는 8-웨이 세트-연관이며, 여기서 각각의 엘리먼트는 캐시블록을 저장할 수 있다. 기술된 실시예의 로킹 기술은 세트에 매핑된 후 로킹될 정보가 세트 중 하나 이상의 선택된 엘리먼트에 저장됨으로써 실시예의 세트-연관 동작을 수정한다.
태그(tag); 캐시블록이 캐시 메모리에 존재하는지 여부를 확인하는데 사용된다. 태그는 캐시 블록의 크기 및 캐시 메모리의 세트-연관성에 관계된 정보와 함께, 상위레벨 메모리의 그 캐시 블록의 주소에 캐시블록을 맵핑하는 주소 오프셋이다. 처리장치가 정보에 액세스를 시도할 때, 정보의 주소는 태그 메모리 내에 저장된 태그와 비교되며, 태그 중 하나가 정보의 주소에 대응한다면, 히트가 있는 것이며, 그렇지 않으면 미스가 있는 것이다. n-웨이 세트-연관 캐시 메모리에서, 이러한 비교는 적용할 수 있는 세트의 "n" 엘리먼트에 결합된 모든 태그에 동시에 행해지며, 상기 적용할 수 있는 세트는 또한 그 주소로부터 결정된다.
태그 메모리(Tag memory); 캐시블록의 태그를 저장하는데 사용되는 캐시 메모리의 물리적인 구조이며, 이러한 저장은 메모리 어레이 내의 캐시블록의 저장에 상호관련되어 있다. 유효비트 또한 각각의 태그에 연관되어 태그 메모리에 저장되는 것이 바람직하다. 태그 메모리는 통상 어레이 내에 조직된 고속의 랜덤 액세스 메모리 기술을 포함한다.
웨이(Way); n-웨이 세트-연관 캐시 메모리에서, 웨이는 "n"개이며 각각의 웨이는 "m"개의 엘리먼트를 포함하며, "m"은 세트의 수이다.
기입 할당(Write allocate or "allocate-on-write"); 세트-연관 캐시 메모리에 있어서, 미스는 캐시 메모리에 기입 액세스에 관련하여 일어날 수 있다. 결국, 엘리먼트는 상위레벨 메모리로부터 캐시 메모리로 기입 액세스에 의해 연루된 캐시블록을 기입하기 위해 할당된다(비기입 할당에서, 기입은 상위 레벨 메모리에서만 수행된다).
기입 스루(write through); 처리장치로부터 상위레벨 메모리로 기입 액세스하는 것이다. 캐시 히트의 경우, 기입 액세스 또한 캐시 메모리에 대한 것이다. 이것은 카피-백의 대안이다.
일반적인 캐시 메모리 용어를 전술하였으므로, 도면을 참조하여 상세한 설명을 한다.
도 1은 본 발명에 따른 컴퓨팅 시스템(10)을 도시한 것이다. 컴퓨팅 시스템(10)은 (i) 처리장치(12), (ii) 소프트웨어(13), (iii) 메모리 시스템(14)을 포함하며, 메모리 시스템은 로크 순서할당 자원(15), 캐시 메모리(16) 및 상위레벨 메모리(18)를 포함한다. 처리장치(12)는 정보처리에 관련된 임의의 구조를 포함한다. 이와 같으므로, 처리장치(12)는 개략적으로 중앙처리장치(CPU), 또는 디지털 신호 프로세서(DSP), 또는 조합된 장치(DSP/CPU)를 포함할 수 있다. 처리장치는 마이크로프로세서, 마이크로제어기, 이들로 된 그룹, 또는 그 외 다른 것을 사용하여 구현될 수 있다. 소프트웨어(13)는 일반적으로 컴퓨팅 시스템(10) 및 특히 이에 관한 로킹-교체 기술의 동작을 실현하기 위해서, 응용 프로그램, 컴파일러 및 기타 다른 소프트웨어 툴, 운영체제, 펌웨어 및 기타 다른 소프트웨어, 뿐만 아니라 이의 조합을 포함한다. 예를 들어, 바람직하게는 운영체제 또는 그 외 메모리 관리 소프트웨어는 캐시 메모리(16)와 상위레벨 메모리(18)간 결합성을 위해 제공한다. 더구나, 바람직하게는 컴파일러 또는 기타 소프트웨어(13)는 로킹될 정보를 상위레벨 메모리(18)에 로딩하기 위해 제공되며, 이러한 로딩은 로크 순서할당 자원(15)의 동작을 지원하는 것이다. 상기 후자의 기능에 대해서, 상위레벨 메모리(18)에 로크 범위를 설정하기 위해, 또한 그 메모리에 캐시블록을 로딩하기 위해 프로그래머보다 소프트웨어(13)를 선호한다. 응용 프로그래머는 로크 범위를 선언하고 로딩하는 것을 수동으로 달성할 수 있으나, 통상 프로그래머는 변수, 즉 중요하기 때문에 로킹하게 되는 데이터에 의해서, 사용할 수 있는 소프트웨어(13)에 명령을 내릴 것이다. 로크 순서할당 자원(15)은 LRU 교체방법을 실현하는 구조와의 공동작용으로 캐시 메모리(16)에 정보를 적합하게 로딩하고 액세스하는 것을 제공한다. 로크 순서할당 자원(15)은 (i) 전체 웨이(64) 미만의 세분성(예를 들어, 한 엘리먼트/캐시 블록에 의해 로킹됨)과, (ii) 베이스(66)부터 시작하여 선택된 순서로(혹은 선택된 웨이(64)의 기타 다른 선택된 엘리먼트(58)) 한 엘리먼트씩, 데이터 메모리(42)의 선택된 웨이(64)를 통해 진행되는 엘리먼트 로킹의 선택된 인접성(contiguity)을 특징으로 하는 로킹을 위해 제공된다. 엘리먼트 로킹의 인접성은 로킹될 캐시블록이 선택된 주소범위(들)에서 상위레벨 메모리(18)에 조직됨을(예를 들어, 운영체제 또는 다른 메모리 관리자를 통해) 반영한다. 이러한 방식의 한 잇점은 세트간에 로킹된 엘리먼트가 실질적으로 고르게 분포된다는 것이며, 따라서 각각의 세트는 로킹하지 않는 동작에서 사용할 수 있는 상태에 있도록 배치되는 것이다.
상위레벨 메모리(18)는 컴퓨팅 시스템(10)에서 캐시 메모리(16)이외의 메모리 구조 전체를 포함한다. 상위레벨 메모리(18)는 예를 들어 주 메모리 및 여분의 영구 저장장치, 뿐만 아니라 캐시 메모리(16)와 주 메모리간에 개재된 다른 캐싱 구조를 포함한다. 상위레벨 메모리(18)는 통상 처리장치의 집적회로 또는 패키지 내에 존재하지 않는다. 그러나, 컴퓨팅 시스템(10)의 엔지니어링 요구에 따라 상위레벨 메모리(18)의 일부분(및 어떤 경우엔 전부)이 처리장치(12)에 일체로 될 수 있음을 알아야 한다. 어쨌든, 캐시 메모리(16)에 대해, 처리장치(12)에 덜 가깝게 결합되며 캐시 메모리(16)에 복사하기 위한 정보를 저장하는 메모리 레벨이 존재하도록 하는 어떤 형태로 상위레벨 메모리(18)가 제공되는 것이 바람직하다.
캐시 메모리(16)는 여기 기술된 바와 같이 로킹되지 않은 정보에 적용할 수 있는 교체방법에서 지역성 원리를 실시하면서도 선택된, 최적크기의 세분성을 사용하여 중요 정보를 로킹할 수 있다. 캐시 메모리(16)는 통상 처리장치의 집적회로 내에 존재하나, 본 발명의 원리에서 벗어남이 없이 다르게 배치될 수도 있다. 어쨌든 수정된 캐시 블록에 대해서 캐시 메모리(16)는 상위레벨 메모리(18)에 저장된 정보 카피를 포함한다. 하나 이상의 레벨의 메모리가 캐시 메모리(16)와 처리장치(12) 사이에 개재될 수 있음을 알아야 한다. 이러한 점에서, 캐시 메모리(16)는 임의의 실제 시스템, 장치 또는 방법에서 사용되는 임의의 레벨이 아닌, 여기 개시된 구조 및 기능에 의해 확인된다.
정보를 독출하고 기입하기 위해서, 메모리 시스템(14)은 처리버스(20)를 통해 처리장치(12)에 결합되며, 캐시 메모리(16)는 메모리 버스(22)를 통해 상위레벨 메모리(18)에 결합된다. 각각의 버스(20, 22)는 결합된 성분의 주소, 정보 및 제어신호 중 임의의 것 또는 모두의 통신을 제공한다. 버스(20, 22) 상의 정보 통신량은 한번에 한 캐시 블록이다. 예를 들어, 특정한 워드에 대해 캐시 미스가 발생하였을 때, 그 워드를 포함하는 전체 캐시 블록은 바람직하게 캐시 메모리(16)로 패치된다. 결합이 예시되어 있어도, 개재된 구조를 포함하여 다른 접속이 사용될 수 있음을 알아야 한다.
컴퓨팅 시스템(10)은 또한 일반적으로 주변장치(24)를 포함한다. 임의의 하나 또는 그 이상의 주변장치를 본 발명의 원리에서 벗어남이 없이 임의의 조합에 제공되거나 생략될 수 있어도, 주변장치(24)는 통상 디스플레이, 키보드, 포인팅 장치, 프린터 및 기타 다른 데이터 획득 및 신호출력장치를 포함하여, 여러 가지 I/O 장치를 포함한다.
도 2는 본 발명에 따라서, 일체화된 로크 순서할당 자원(15) 및 캐시 메모리(16)의 실시예를 도시한 것이다. 처리장치(12) 및 상위레벨 메모리(18)와 더불어 도시된 이 실시예는 태그 메모리(40), 데이터 메모리(42), 시퀀서(43), 교체 관리기(replace administrator)(44), 주소 분해기(address decomposer)(45), 캐시 제어기(46) 및 더티 비트 관리기(47)를 포함한다. 이 실시예는 또한, 멀티플렉서(48, 50, 51, 52, 54) 및 비교기(56)를 포함하여 로직을 포함한다.
태그 메모리(40)는 주소 분해기(45) 및 멀티플렉서(48)를 통해 처리장치(12)에 결합된다. 멀티플렉서(48)는 처리장치(12)로부터의 주소신호(PD_ADDRESS)와 시퀀서(43)로부터의 INIT 주소신호간에 선택한다. 멀티플렉서(48)는 이들 신호간의 선택을 캐시 제어기(46)로부터 인가된 제어신호에 기초하여 행한다. INIT 신호는 이하 기술되는 바와 같이 로크 초기화에서 선택된다. PD_ADDRESS 신호는 동작이 처리장치(12)에 의해 캐시 메모리 액세스에 연루될 때 선택된다. 어느 선택이든, 주소 분해기(45)는 캐시 메모리(16)의 여러 가지 엘리먼트에 인가하기 위해서, 선택된 주소를 성분 필드로 분할한다.
본 실시예에서 그리고 기술된 캐시 메모리(16)의 조직에 응하여, 주소신호는 바람직하게 다음의 필드, 즉 (i) 21비트 태그 필드, (ii) 5비트 세트 필드, (iii) 4비트 워드 필드, 및 (iv) 2비트 바이트 필드를 갖는다. 32비트는 컴퓨팅 시스템(10)의 바람직한 선형 주소 공간에 상호관계된다. 5비트 세트 필드는 캐시 메모리(16)의 32개의 세트 중에서 선택한다. 21비트 태그 필드는 각 세트의 캐시 블록 중에서 선택한다. 4비트 워드 필드는 각 블록의 16 워드 중에서 선택한다. 2비트 바이트 필드는 각 워드의 4바이트 중에서 선택한다.
주소 분해기(45)는 멀티플렉서(48)에 의해 선택된 주소신호 필드의 세트 필드를 태그 메모리(40)에 인가한다. 이에 응하여, 태그 메모리(40)는 식별된 세트(60)에 관련된 8개의 태그와 유효비트(세트의 각각의 캐시 블록마다 하나의 태그 및 비트)를 출력한다. 8개의 태그는 분할된 주소의 태그 필드와 함께 비교기(56)에 인가된다. 유효비트를 나타내는 관련된 유효비트 하에서, 8개의 태그가 태그 필드와 일치한다면 히트가 발생한다. 미스가 있다면, 탐색된 캐시 블록은 캐시 메모리(16)에 없거나, 있다고 해도 무효하다.
비교기(56)는 8비트 히트신호(HIT)를 출력한다. 미스의 경우, 히트신호는 8개의 논리 0들을 포함한다. 히트인 경우, 8비트 중 하나가 논리 1로 설정된다. 어쨌든, 히트신호는 교체 관리기(44)에 인가됨으로써 관리기(44)는 LRU 교체 방법 데이터를 갱신할 수 있다. 사용할 수 있는 세트에 대해 이와 같이 행하기 위해서, 세트 필드는 교체 관리기(44)에 또한 인가된다.
히트신호는 멀티플렉서(50)에 또한 인가된다. 교체 관리기(44)에 의해 발생된 교체 벡터(REPLACE) 또한 멀티플렉서(50)에 인가된다. 멀티플렉서(50)는 캐시 제어기(46)로부터 인가되며 수행되는 동작에 응답하는 제어신호에 기초하여 인가된 신호들간에 선택한다.
PD_ADDRESS 신호 수신에 관계된 메모리 액세스의 경우, 히트신호는 데이터 메모리(42)에 인가된다. 이것은 사용할 수 있는 세트의 히트 블록을 선택한다. 사용할 수 있는 세트는 세트 필드를 데이터 메모리(42)에 인가함으로써 선택된다. 메모리 액세스가 독출동작이면, 데이터 메모리는 인가된 신호에 응하여, 데이터 신호(DATA_OUT)를 출력한다. 데이터 신호는 히트의 캐시 블록을 포함한다. 데이터 신호는 주소 분해기(45)에 의해 분할된 바이트 및 오프셋 필드에 의해 제어되어 멀티플렉서(54)에 인가되므로 캐시 메모리(16)로부터 출력으로서, 전체 캐시 블록이나, 워드 또는 바이트/반 바이트가 선택된다. 데이터 신호 중 선택된 부분은 처리장치(12)에 인가된다.
메모리 액세스가 기입동작이면, 데이터 메모리(42)는 멀티플렉서(52, 51)를 통해 처리장치(12)로부터 기입 데이터를 수신할 것이다. 멀티플렉서(52)는 처리장치(12)로부터 신호(PDW_DATA)의 기입 데이터와 하이레벨 메모리(18)로부터 신호(MW_DATA)의 기입 데이터간에 선택하는데, 전자의 신호는 기입 액세스에 관련되며, 후자의 신호는 교체를 포함하여, 하이레벨 메모리(18)로부터 캐시 메모리(16)로 정보를 복사하는 것에 관련한다. 멀티플렉서(52)는 캐시 제어기(46)로부터 인가되며 수행되는 동작에 응답하는 제어신호에 기초하여, 인가된 신호들간에 선택한다.
기입 액세스 동작에서, 멀티플렉서(51)는 바람직하게 주소 분해기(45)에 의해 분할된 바이트 및 오프셋 필드에 의해서 제어되므로, 캐시 메모리(16) 내 수정을 위해 전체 캐시 블록이나 워드 또는 바이트/반바이트가 선택된다. 수정될 캐시 블록은 데이터 메모리(42)에 인가된 세트 필드 및 히트신호에 의해 지정된다. 이 지정된 캐시블록에서, 선택된 워드/바이트/반-바이트는 PDW_DATA 신호를 반영하기 위해 수정된다.
전술한 바와 같이, 캐시 메모리(16)는 상위레벨 메모리(18)에 기입에 의해 즉시 기입 액세스가 동반되지 않게 카피-백 방법을 구현하는 것이 바람직하다. 따라서, 더티 비트 관리기(47)는 액세스된 캐시 블록이 수정된 캐시블록으로 되었다는 것을 나타내기 위해서 갱신된다. 더티 비트 관리기(47)는 (i) 주소 분해기(45)로부터 세트필드 및 비교기(56)로부터 히트신호의 인가, 및 (ii) 캐시 제어기(46)로부터 인가되며 기입 액세스 동작을 나타내는 제어신호에 기초하여 갱신된다. 더티 비트 관리기(47)는 통상 어레이에 조직된 고속의 랜덤 액세스 메모리 기술을 포함한다.
메모리 액세스 동작에서 캐시 미스의 경우, 정보는 하이레벨 메모리(18)로부터 캐시 메모리(16)로 기입된다. 이 동작은 전체 캐시 블록의 기입을 포함하며, 일반적으로 캐시 메모리(16)에 이미 존재하는 캐시 블록의 교체에 연루한다. 따라서, 교체 관리기(44)가 동작한다(이 동작은 독출 액세스나 기입 액세스에 관련된 캐시 미스에 의해 촉발되고 실질적으로 이들 액세스에 대해 동일하기 때문에 동작을 독출 미스에 관해서만 기술한다).
전술한 바와 같이, PD_ADDRESS 주소신호는 액세스 동작의 캐시 블록을 식별한다. 미스일 때, 캐시블록은 캐시 메모리(16)에 없는 것으로 결정된다. 따라서, 존재하지 않는 캐시블록의 주소는 캐시 메모리(16)에 기입하기 위해 해당 블록을 독출하기 위해서 상위레벨 메모리에("A"에) 인가된다. 도시된 바와 같이 멀티플렉서(48) 다음에 주소가 인가될지라도, 이와는 달리 주소는 개략적이지만 본 발명의 원리에서 벗어남이 없이 분해기(45)로부터 혹은 처리장치(12)로부터 직접 인가될 수 있음을 알아야 한다.
미스에서, 히트신호(HIT)는 8개의 논리 0 스트링을 포함한다. 히트신호는 교체 관리기(44)에 인가된다. 교체 관리기(44)는 바람직하게 LRU 교체방법을 관리하며, 이 방법은 로킹된 블록의 교체를 제외하도록, 선택된 캐시 블록을 로킹하는 것을 제공하도록 수정된다. 히트신호 및 세트 필드에 응하여, 그리고 캐시 제어기(46)로부터 제어신호 하에서, 교체 관리기(44)는 REPLACE 벡터를 발생한다. REPLACE 벡터는 어느 캐시블록이 최근에 최소한으로 사용되었으며, 따라서 하이레벨 메모리(18)로부터 교체할 캐시블록으로 교체되도록 선택될 것인가를 나타내기 위해서 8비트이다. 태그 및 이의 연관된 캐시블록이 교체되는 것이기 때문에, REPLACE 벡터는 태그 메모리(40) 및 데이터 메모리(42)에 인가된다. 벡터를 세트필드와 더불어 태그 메모리(40)에 인가할 때, 연루된 세트(60) 내에 교체되는 캐시에 대응하는 위치가 태그 메모리(40)에 지정된다. 교체할 캐시블록의 태그필드가 이 위치에 기입되어, 미래의 캐시 동작을 위해 태그 메모리(40)를 갱신하게 된다.
REPLACE 벡터는 캐시 제어기(46)로부터 인가된 제어신호에 기초하여 벡터를 선택하는 멀티플렉서(50)를 통해 데이터 메모리(42)에 인가된다. 세트 필드와 더불어 데이터 메모리(42)에도 인가되며, 상위레벨 메모리(18)로부터 기입 데이터는 사용할 수 있는 엘리먼트(58)에 기입된다. 기입 데이터는 멀티플렉서(52, 51)를 통해 상위레벨 메모리(18)로부터 수신되며, 멀티플렉서는 캐시 제어기(36)로부터 인가되며 수행되는 기입동작에 응하는 제어신호에 의해 제어된다.
교체할 캐시블록을 캐시 메모리(16)에 기입하기 전에, 교체된 캐시블록의 더티 비트의 상태가 조사된다. 이러한 블록의 더티 비트는 세트필드 및 REPLACE 벡터를 더티 비트 관리기(47)에 인가함으로써 이 관리기로부터 독출된다. 이와 같이 하여 읽혀진 더티 비트 신호(DIRTY)는 캐시 제어기(46)에 인가된다. 교체된 캐시블록이 더티이면, 캐시 제어기(46)는 상위레벨 메모리(18)에 수정된 캐시블록의 카피-백을 개시한다. 수정된 캐시블록이 카피 백된 후에, 더티 비트가 리셋되며 교체동작이 완료된다.
카피-백 동작에서, 데이터 메모리는 세트필드 및 REPLACE 벡터에 응하여, 데이터 신호(DATA_OUT)를 출력한다. DATA_OUT 신호는 수정된 캐시 블록을 포함한다. DATA_OUT신호는 멀티플렉서(54)에 인가된다. 주소 분해기(45)에 의해 분할된 바이트 필드 및 오프셋 필드에 의해 제어되어, 전체 수정된 캐시 블록은 상위레벨 메모리(18)에 기입하기 위해 캐시 메모리(16)로부터 바람직하게 출력된다. 수정된 캐시 블록은 세트 필드 및 수정된 캐시 블록의 태그의 조합에 의해 지정된 주소에 상위레벨 메모리(18)에 기입된다. 세트 필드는 캐시 미스의 주소로부터 수반된다. 태그는 REPLACE 벡터를 태그 메모리(40)에 인가함으로써 얻어진다. 주소는 상위레벨 메모리("D"에) 인가된다.
데이터 메모리(42)는 8-웨이 세트 연관으로서 도 2에 도시되었으며, 각 세트(60)의 엘리먼트(58)는 4개 그룹(62)으로 분할되어 있다. 각 그룹(62)에 할당된 2개의 엘리먼트(58)가 있다. 8 웨이(64)가 있다.
이와 같이 예시되었어도, 데이터 메모리(42)는 본 발명의 원리로부터 벗어남이 없이 달리 조직될 수 있음을 알 것이다. 예를 들어, 도 6에 도시한 바와 같이, 데이터 메모리(42)는 그룹으로 분할함이 없이 세트-연관으로서 조직될 수 있다. 특히, 데이터 메모리(42)는 세트(60)당 8개의 웨이(64)가 존재하게 8-웨이 세트-연관일 수 있다.
도 2 및 도 6에서, 데이터 메모리(42)는 35개의 로킹된 엘리먼트(엘리먼트에서 "X"는 로킹됨을 표시한다)를 갖는 것으로서 예시되었다. 이 로크 방법은 캐시 메모리의 주소범위가 컴퓨팅 시스템(10)의 주소공간에서 정렬되었을 때 적용하며, 로크범위는 캐시 메모리의 주소범위에 정렬된 단일의 선형 주소범위이며, 로킹된 캐시 블록은 복수의 캐시 메모리의 용량에 대응하는 주소에서 시작한다(예를 들어, 이들은 캐시 메모리 경계에서 시작한다). 이와 같이 선호되어도, 로크는 본 발명의 원리에서 벗어남이 없이 베이스(66)부터 오프셋된 선택된(그리고, 분할되었다면, 선택된 그룹(62)의) 엘리먼트(58)에서 시작할 수 있음을 알 것이다
로킹하는 것은 선택된 웨이(64)의 엘리먼트로 한정된다. 도 2에 대해 예시된 바와 같이, 로킹하는 것은 각각의 2-웨이 그룹(64)의 기수(odd-numbered) 웨이의 엘리먼트에 적용한다. 이러한 로크 방법의 한 잇점은 교체 엘리먼트가 각 세트의 각 그룹에 보유된다는 것이다. 따라서, 각 세트의 모든 그룹의 엘리먼트를 로킹하였어도, 8-웨이 계층적 LRU는 4-웨이 LRU로 감소된다. 로크 방식이 예시되었으나, (i) 2웨이를 갖는 그룹에서, 기수 웨이 대신 우수 웨이의 엘리먼트를 로킹하도록 선택할 수 있고, (ii) 그룹당 웨이 수가 2개에서 벗어나면, 로킹될 수 있는 엘리먼트가 있는 웨이의 수는 1이 아닐 수 있음을 알 것이다. 예로서, 그룹당 웨이의 수가 16이면, 엘리먼트가 로킹될 수 있는 그룹당 웨이의 수는 1 내지 16 중 어느 것이 될 수 있다. 그러나, 이 경우 임의의 그룹의 모든 웨이가 다 로킹되지 않는 것이 바람직하다. 이러한 점에서, 임의의 그룹의 웨이의 단지 반만 로킹함으로써 그룹 조직에서, 로킹할 때 각 웨이 내의 교체할 엘리먼트를 교체방법이 보유하도록 하는 것이 바람직하다. 더구나, 모든 조직에서(그룹으로 분할된 또는 그 외), 데이터 메모리(42)의 웨이의 단지 반만 로킹하는 것이 바람직하며 어떠한 세트도 이의 모든 세트에 대해 로킹되지 않는 것이 바람직하다.
도 2 및 도 6에 도시한 바와 같이, 엘리먼트 로크의 인접성은 세분성이 바람직하게 서브웨이일지라도(예를 들어 도 2의 기수 웨이 및 도 6의 모든 웨이를 참조), 선택된 전체 웨이에 실시된다. 그러나, 인접성은 본 발명의 원리에서 벗어남이 없이, 전체 웨이와는 달리 실시될 수 있음을 알 것이다. 즉, 선택된 웨이의 모든 엘리먼트보단 적게 선택하는 것이 바람직할 수 있다. 예로서, 각각의 선택된 웨이의 단지 큰 숫자의 엘리먼트만을(예를 들어, 세트(28-31)의 엘리먼트) 사용하게 하는 것이 바람직할 수 있다. 또 다른 예로서, 중간 숫자의 엘리먼트(예를 들어 셋트(8-15)의 엘리먼트)를 사용하게 하는 것이 바람직할 수 있다. 임의의 인접성 방식에 대해서, 선택된 웨이는 본 발명의 원리에서 벗어남이 없이 순차적이거나(예를 들어, 도 6에서 웨이(0-7)) 아니면 그렇지 않을 수 있다(예를 들어 도 2에서 1, 3, 5, 7). 어쨌든, 전술한 바와 같이, 로킹하는 것은 바람직하게 (i) 전체 웨이(64) 보다 적은 세분성(예를 들어 한 엘리먼트/캐시블록에 의해 로크), 및 (ii) 엘리먼트 로크의 선택된 인접성이, 베이스(66)부터 시작하여 선택된 순서로(혹은 선택된 웨이(64)의 어떤 다른 선택된 엘리먼트(58)), 엘리먼트씩 데이터 메모리(42)의 선택된 웨이(64)를 통해 진행되는 것이 특징이다.
도 3에, 로크 방식을 초기화 및 재초기화하는데 사용되는 메모리 맵 I/O 레지스터(80)와 함께, 교체 관리기(44)의 실시예를 도시하였다. 메모리 맵 I/O 레지스터(80)는 LOCK_CONTROL 레지스터(82), LOCK_SIZE 레지스터(84) 및 LOCK_ADDRESS 레지스터(86)를 포함한다. LOCK_CONTROL 레지스터(82)는 로크방식에 관하여 제어동작을 알리기 위해 캐시 제어기(46)에 인가되는 LOCK_ENABLE을 포함한다. LOCK_SIZE 레지스터(84)는 로크 범위의 크기를 설정하며, 이 신호는 로크 벡터 관리기(88) 및 캐시 제어기(46)에 인가된다. 이 레지스터(84)에서, 도시된 바와 같이 비트 31:13 및 5:0은 논리 제로로 설정되며, 로크 범위의 크기는 비트 21:6에 의해 설정된다. 이것은 로크범위의 최대 크기가 8KB비트(213), 즉 캐시 크기의 반인 것과, 세분성이 64KB(26), 즉 하나의 캐시 블록의 크기임을 예시한 것이다. LOCK_ADDRESS 레지스터(86)는 로크범위의 하위 주소를 설정한다. 이 레지스터에서, 도시된 바와 같이, 비트 13:0은 각각의 하위주소가 캐시 크기 경계에 정렬되게 논리 0으로 설정된다(214 =16KB). 크기 및 하위주소를 전술한 바와 같이 예시하였으나, 이들 특징은 본 발명의 원리에서 벗어남이 없이 달리 선택될 수 있음을 알 것이다. 예를 들어, 하나 이상의 레지스터는 로크범위의 상위 및 하위주소를 보유하거나, 상위주소 및 로크범위의 크기를 보유하거나 아니면 그 외 다른 것을 보유하도록 지정될 수 있다.
교체 관리기(44)는 로크 벡터 관리기(88), LRU 관리기(90), LRU 저장기(92), 및 교체 선택기(94)를 포함한다. LOCK_ENABLE 비트가 로크를 하게 할 수 있고, 로크 벡터 관리기(88)는 각 세트(60)의 어느 엘리먼트(58)가 로크범위에 있는지 결정한다. 이 결정은 로크 벡터 관리기(88)에 의해 발생된 LOCK_VECTOR 신호로 나타내어진다. LOCK_VECTOR 신호, 히트신호 및 세트필드의 인가에 기초하여, LRU 관리기(90)는 세트에 대한 LRU 정보 갱신을 제공하며, 이 갱신은 LRU 관리기에 의해 발생되어 LRU 저장기(92)에 인가된 UPDATE 신호로 나타내어진다. LRU 저장기(92)는 전체 캐시 메모리(16)에 대한 LRU 정보를 저장하며, UPDATE 신호 및 세트필드의 인가에 응하여, 세트씩 정보를 갱신한다. LRU 저장기(92)는 교체 선택기(94)에 인가된 LRU 신호를 발생한다. 교체 선택기(94)는 LRU 신호에 기초하여, REPLACE 벡터를 발생한다. REPLACE 벡터의 인가는 도 2에 관하여 앞에 기술되어 있다.
로크 벡터 관리기(88)는 LOCK_SIZE 레지스터 및 세트필드의 내용에 기초하여 LOCK_VECTOR를 발생한다. LOCK_VECTOR 신호의 발생은 로킹된 엘리먼트(58)의 총수에 대응하는 LOCK_SIZE 레지스터의 제로가 아닌 비트들에 따라 행해진다. 예를 들어, 7비트[12:6]는 128(즉, 27)개의 로킹된 엘리먼트까지, 또는 메모리(42)의 전체 256 엘리먼트의 반까지를 제공한다(이 대응관계는 캐시 메모리(16)의 조직부터 일어남을 알 수 있는데, LOCK_SIZE 레지스터의 사용가능한 비트를 설정할 때, 데이터 메모리(42)의 단지 반만을 한 캐시 블록의 세분성에서, 로킹하는데 사용할 수 있다). 더구나, LOCK_VECTOR 신호의 발생은 로킹된 엘리먼트(58)가 알려진 방식으로 조직된 것에 따라 행해진다. 예를 들어, 로킹된 엘리먼트는 베이스(66)부터(세트 0, 엘리먼트 1에서) 시작하여 다음 기수 웨이의 임의의 엘리먼트를 로킹하기 전에, 엘리먼트씩, 세트 0부터 세트 31까지 각각의 기수의 웨이(64)를 거쳐 진행하여 인접하게 로킹된다. 도 2에 도시한 바와 같이, 엘리먼트 "1"을 포함하는 웨이(64)는 세트 "0"부터 세트 "31"까지 완전히 로킹되며, 엘리먼트 "3"을 포함하는 웨이(64)는 세트 "0"부터 세트 "2"까지 부분적으로 로킹된다.
상술한 조직 하에서 그리고 상술한 입력들을 사용하여, LOCK_VECTOR 신호는 임의의 모든 세트(60)마다 결정된다. 이 결정은 다음의 로직에 대응하는 임의의 하드웨어 및/또는 소프트웨어를 사용하는 것을 포함하여, 여러 가지 방식으로 실시될 수 있다.
input SET; //set field from the PD_ADDRESS
input[12:6] LOCK_SIZE;//total number of locked cache blocks
input LOCK_ENABLE;//lock mode activated
outpu[3:0] LOCK_VECTOR;//declares LOCK_VECTOR
assign LOCK_LAST=LOCK_SIZE[10:6]>SET;
cases
3'b0_xx:LOCK_VECTOR=4'b0;//LOCK_ENABLE=0>>no locking
3'b1_00:LOCK_VECTOR=(3'b0, LOCK_LAST);//locking edge in grp 0
3'b1_01:LOCK_VECTOR=(2'b0, LOCK_LAST, 1'b1);//grp 0 filled, edge in grp 1
3'b1_10:LOCK_VECTOR=(1'b0, LOCK_LAST, 2'b11);//grp 0/1 filled, edge in grp 2
3'b1_11:LOCK_VECTOR={LOCK_LAST, 3'b111);//grps 0/1/2 filled, edge in grp3
end
이러한 논리 표현에서, LOCK_VECTOR는 4비트를 갖는 것으로 선언된다. 4비트는 4개의 그룹에 대응하며, 비트가 논리 1일 때, 대응하는 그룹의 기수 엘리먼트가 로킹된다. 더욱이, 변수 LOCK_LAST는 LOCK_SIZE[10:6]의 최하위 5개의 비트값이 세트 필드의 값 SET을 초과할 때는 언제나, 논리 1의 값을 갖도록 식에 의해 결정된다. 그렇지 않으면, LOCK_LAST의 값은 논리 0이다. LOCK_LAST가 이와 같이 결정된 상태에서, 로직은 LOCK_VECTOR를 결정하기 위해 여러 가지 경우로 진행한다.
제1 경우에, LOCK_VECTOR는 LOCK_ENABLE 비트("b0")가 로킹하는 것을 못하게 하였기 때문에 0000(그룹 3, 2, 1, 0)이 된다. "3'b1_00:"으로 표기된 제2 경우, (i) "b1"은 로킹할 수 있음을 나타내며, (ii) "00"은 웨이 0의 엘리먼트 "1"만이 로킹될 수 있도록(예를 들어, 로크 끝이 그룹 0에 있음) LOCK_SIZE[12:11]의 최상위 비트에 대응한다. 따라서, LOCK_VECTOR는 그룹 3, 2, 1에 대해 "000"이며 그룹 0에 대해 LOCK_LAST이다. 마찬가지로, "3'b1_01"으로 표기된 제3의 경우, (i) "b1"은 로킹할 수 있음을 나타내며, (ii) "01"은 그룹 0의 모든 32개의 엘리먼트 "1"이 로킹되는 것과 웨이 1의 엘리먼트 "3"만이 로킹될 수 있는 것(예를 들어 로크 끝은 그룹 1에 있음)을 제공한다. 따라서, LOCK_VECTOR는 그룹 3, 2에 대해 "00"이며 그룹 1에 대해서는 LOCK_LAST이며 그룹 0에 대해서는 "1"이다. 다른 경우도 마찬가지로 분석된다.
이 설명에서, 4비트의 LOCK_VECTOR 신호의 사용은 (i) 선호된 LRU 교체 방식에 응하여 엘리먼트를 4개의 그룹으로 분할하는 것과 (ii) 각 그룹(62)의 기수 엘리먼트(58)에 연관된 웨이(64)만으로 로킹하는 것을 제어하도록 선택함을 반영한다. 로크가 그룹(62)의 선택된 웨이(64)로 한정될 때, 일반적으로 과다하게 되어 LOCK_VECTOR 신호에 비선택된 웨이(64)의 웨이(64)에 대응하는 임의의 비트를 포함하게 된다. 그럼에도 불구하고, LOCK_VECTOR 신호의 구성은 4비트 이상을 가질 수 있으며 본 발명의 원리에서 벗어남이 없이 다르게도 구현될 수 있음을 알 것이다. 비트수는 예를 들어 웨이가 그룹으로 분할되었는지 여부와, 그러하다면 로킹될 수 있는 그룹당 웨이의 수를 포함하여 여러 가지 엘리먼트에 달려있다.
상기 개시된 로직은 (i) 로크가 베이스(66), 즉 세트 0의 엘리먼트 1로 시작하도록 로크범위가 정렬되는 것과 (ii) 로크에 사용할 수 있는 선택된 웨이, 즉 4개의 웨이 1, 3, 5, 7을 갖는 것에 달려있다. 로크범위가 상기한 바와는 달리 정렬되어 있거나 사용할 수 있는 웨이가 상기한 바와는 달리 선택되었다면, 로직은 조정됨을 알 것이다. 예를 들어, 정렬 경우에, LOCK_ADDRESS 레지스터의 내용은 바람직하게 로크가 개시되는 선택된 웨이(64)의 선택된 엘리먼트를 식별하도록 로직에 도입된다.
더욱이, 상기 개시된 로직은 전체 웨이에 실시된 인접성에 달려있다. 인접성이 다르게 실시되면, 로직은 변경된다. 예를 들어, 사용할 수 있는 엘리먼트의 수 및 선두 엘리먼트(또는 종료 엘리먼트) 모두 선택된 웨이에 대해 공통이라고 하면, 이들 데이터점은 바람직하게 로직에 반영된다.
이와 같이 발생된 LOCK_VECTOR는 LRU 관리기에 인가되어, 사용할 수 있는 세트(60)의 로킹된 엘리먼트(58)가 LRU 관리기(90), LRU 저장기(92), 및 교체 선택기(94)에 의해 교체하는데 사용되는 것으로 지정되지 않게 한다. 상술한 8-웨이 세트-연관 캐시 메모리에서 선호된 LRU 교체방법은 2-웨이에 결합된 4-웨이인 계층적 LRU이다. 4-웨이 LRU는 4개의 그룹간에 LRU를 관리하기 위해서 각 세트의 8 엘리먼트를 4개의 그룹으로 분할한다. 2-웨이 LRU는 각 그룹의 3개의 엘리먼트간에 LRU를 관리한다. 교체로 말하면, 이와 같이 구현된 계층적 LRU는 연루된 세트 중 최근에 최소한으로 사용된 그룹을 선택하고 이러한 그룹 중 최근에 최소한으로 사용된 엘리먼트를 선택함으로써 미스 후에 교체될 것을 결정하고, 이에 의해 그 엘리먼트의 캐시블록이 교체된다.
4-웨이 LRU를 실시하기 위해서, 관리기(90)는 바람직하게, 도 4에 도시한 바와 같이 대각선 방향은 생략하고, 1비트 엔트리들의 4x4 행렬("R")(96)의 상위 좌측의 삼각행렬을 사용한다. 그룹 "p"를 액세스한 후, LRU 관리기(90)는 R[행, 렬], R[p,0...3] e' 1 및 R[0...3, p] e' 0, 즉 (i) 행 "p"에 대응하는 매트릭스 엔트리를 세팅하고 (ii) 열 "p"에 대응하는 매트릭스 엔트리를 클리어함으로써 그룹의 세트(60)에 대한 4-웨이 LRU를 갱신한다. 이러한 관리는 그룹 "p"를 최근에 가장 많이 사용된(MRL) 그룹으로서 설정한다. 비교해 보면, LRU 그룹 "q"는 행/렬 조합에 대응하며, R[행, 렬]:R[q,0...3] e' 1 및 R[0...3, q] e' 0, 즉 행 "q" 엔트리들은 모드 클리어되고 열 "q" 엔트리들은 모두 셋된다.
2-웨이 LRU를 실시하기 위해서, LRU 관리기(90)는 세트(60) 내에 각 그룹(62)에 대해 1비트를 사용한다. 이와 같이 함에 있어, LRU 관리기(90)는 바람직하게, 각 그룹의 비트값과 이에 의해 지정된 LRU 엘리먼트간에 미리 선택된 상관관계에 따른다. 상술한 실시예에서, LRU 비트는 기수 엘리먼트가 LRU이면 논리 1이고, 우수 엘리먼트가 LRU이면 논리 0이다.
이러한 계층하에서, LRU 관리기(90)는 갱신할 수 있으며, LRU 저장기(92)는 각 세트(60)에 대해 10비트를 유지한다. 2-웨이 계층은 세트당 4비트를 사용한다. 4-웨이 계층은 세트당 6비트를 사용한다. 4-웨이 계층에서, 삼각 행렬의 엔트리수는 n-웨이 LRU가, n*(n-1)/2로 숫자가 할당된 엔트리들의 상측 좌측의 삼각행렬를 갖는 n x n 관리 행렬을 갖는다. 상술한 실시예에서, LRU의 10비트는 도 5에 도시한 바와 같이 세트당 정해진다("GRPx"는 2-웨이 LRU에 대한 그룹 번호를 나타내며, "R[x,y]"는 삼각행렬(96)로부터의 엔트리를 나타낸다).
로크 동작에서, LOCK_VECTOR 신호는 어느 그룹이 로킹된 엘리먼트를 갖는지를 나타내며 이로서 LRU 관리기(90)는 이러한 그룹에 대해 2-웨이 LRU를 정지하게 된다. 4-웨이 LRU는 영향받지 않는다. 4-웨이는 그룹당 로킹할 수 있는 엘리먼트수에 대해 로크 관리의 제약에 기인하여 영향을 받지 않는데, 그 이유는 (i) 그룹당 적어도 한 엘리먼트는 로킹되지 않은 상태에 있으며, 각 그룹은 교체 후보를 가지며, (ii) 4-웨이 LRU는 그룹간에 LRU를 관리하기 때문이다.
2-웨이 LRU의 동작의 정지는 로킹된 엘리먼트를 갖는 그룹에 대해 2-웨이 LRU 정보의 갱신을 배제함으로써 달성된다. 상술한 실시예에서, 이 방식은 (a) 도 2에 도시한 바와 같이, 각 그룹(62)에 대해 기수 웨이(64)(예를 들어, 웨이 "1", "3", 및 "7")로 로크를 제한하고, (b) 기수 엘리먼트가 LRU이면 LRU 비트를 논리 1로 설정하고 우수 엘리먼트가 LRU이면 LRU 비트를 논리 0으로 설정하는 것에 응답한다. 이러한 상태하에서, 그룹 "k"가 로킹되었을 때, LRU는 우수번째의 로킹안된 엘리먼트를 지시하도록 0으로 설정되며, 이 로킹안된 엘리먼트의 캐시블록은 그럼으로써 교체하는데 사용될 수 있는 상태에 있게 된다. 로킹안된 엘리먼트가 이어서 액세스된다면, 2-웨이 LRU 비트는 그럼에도 불구하고 변경되지 않은 채로 있게 된다. 더구나, 이어서 4-웨이 LRU에 의해 그룹 "k"에 교체동작이 된다면, LRU 저장기(92)는 엘리먼트의 캐시블록이 교체된 후에도 우수번째의 로킹안된 엘리먼트를 교체하기 위한 것으로서 계속 확인할 것이다.
도 2의 계층적 실시예에서, LRU 관리기의 UPDATE 신호는 세트 필드의 세트(60)에 대해 LRU 저장기(92) 내의 LRU 정보를 갱신한다. 갱신은 캐시히트의 그룹(62)에 대해 행해진다. 상기 개시된 갱신 로직과 더불어 도 4를 살펴보면, 4-웨이 LRU는 3개의 비트를 갱신한다. 마찬가지로, 2-웨이 LRU는 1비트를 갱신하며, 로킹된 그룹의 경우엔 어떠한 비트도 갱신하지 않도록 실시될 수 있다.
이 동작은 다음의 예시한 논리에 대응하는 임의의 하드웨어 및/또는 소프트웨어를 사용하는 것을 포함하여, 여러 가지 방법으로 구현될 수 있다.
cases{LOCK_VECTOR, HIT}
12'bxxx0_00000001://LOCK_VECTOR=no locking;Hit at element 0, group 0
clear[0], clear[3], clear[5]//Update 4-way LRU for group 0
set[6]//Update 2-way LRU for group 0=group 0 locked;Hit at element 0, group 0
clear[0], clear[3], clear[5]//Update 4-way LRU for group 0//No 2-way update--element 0 remains LRU (bit 6 is logic 0)
12'bxxxx_00000010://LOCK_VECTOR=group 0 locked or not;Hit at element 1, grp 0
clear[0], clear[3], clear[5]//Update 4-way LRU for group 0
clear[6]//Update 2-way LRU for group 0:element 0 is LRU as bit 6 is logic 0
end
상기 로직은 그룹 0 내의 히트의 예이다. 그러나, 이 로직은 다른 그룹 내의 히트에 쉽게 적응할 수 있음을 알 것이며, 갱신하기 위한 비트들은 도 4 및 도 5에 도시되어 있다. 이 로직은 그룹으로 분할되지 않는 조직을 갖는 캐시 메모리 내의 히트에 쉽게 적응할 수 있음을 알 것이다.
상기 로직에서, 히트가 엘리먼트 1에서 발생하는 경우는 그룹이 로킹되거나 로킹되어 있지 않은 상황을 로직이 구별할 필요가 없음을 설명하고 있다. 어느 경우든, 전술한 이유로, 2-웨이 LRU는 엘리먼트 0(그룹 0의 우수 엘리먼트)을 LRU 엘리먼트로서 확인한다. 이와 같이 하기 위해서, 2-웨이 LRU는 비트 6을 클리어(논리 0으로)한다. 이 "클리어(clear)"는 그룹 0에 로킹하는 경우엔 필요 없으나 경우의 수를 최소화하기 위해서 존재한다.
비계층적 LRU 교체방법의 경우, LRU 동작은 세트의 로킹된 엘리먼트에 대해서는 중지되며, LRU 동작은 로킹되지 않은 엘리먼트에 대해 영향을 받지 않는다. 이것을 달성하는 한 과정은 로킹되지 않은 엘리먼트가 액스될 때에만 통상의 갱신동작을 수행하며, 이러한 동작후에 로킹된 각각의 엘리먼트에 대해 부가적인 갱신동작을 수행하는 것이며, 이에 의해서 모든 이러한 갱신동작은 임의의 교체동작에 앞서 완료된다. 이러한 부가적인 갱신동작은 임의의 로킹되지 않은 엘리먼트에 어떠한 액세스에도 불구하고, 최근에 가장 많이 사용된 로킹된 엘리먼트를 유지하는 효과가 있다.
전술한 바와 같이, LOCK_ENABLE 비트가 논리 1일 때, 로킹될 수 있다. 더욱이, 그 비트에 논리 1을 기입하는 것에 의해 로크방법의 초기화가 촉발된다. 그 비트에 논리 1을 기입하는 것은 또한 비트의 우세한 값이 논리 1일 때에도 재초기화를 촉발한다. 이와 같이 기입은 캐시 제어기(46)에 알려 대응하는 초기화동작을 시작하도록 함으로써 초기화 또는 재초기화를 시작한다. 논리 0을 LOCK_ENABLE 비트에 기입하는 것은 이전에 로킹된 모든 캐시블록을 교체에 사용하게 되었음을 반영하는 LOCK_VECTOR 신호 갱신이외의 어떠한 동작을 촉발시키기 않는다.
초기화 동작은 (i) 더티 비트가 셋된 경우 캐시블록이 먼저 상위레벨 메모리(18)에 카피 백된다고 하면, 로크범위 내의 주소를 갖는 캐시 메모리(16)에 있는 각각의 캐시블록을 무효화하며, (ii) 더티 비트가 세팅된 경우 캐시블록이 먼저 상위레벨 메모리(18)에 카피 백된다고 하면, 로크범위 내에 로킹된 엘리먼트(58) 내에 있는 각각의 캐시블록(이러한 캐시블록은 로크범위 내에 주소를 갖지 않는다)을 무효화하며, (iii) 로크범위 내의 주소를 갖는 상위레벨 메모리(18) 내의 각각의 블록에 대해 이러한 블록을 이의 각각의 자유롭게 된 로킹할 수 있는 엘리먼트(58)를 페치하며, (iv) 연루된 세트에 대해, LOCK_VECTOR를 포함하여, LRU 정보를 초기화하는 과정을 포함한다. 이들 과정은 여러 가지 방법 및 여러 가지 순서로 달성될 수 있다.
일실시예에서, 이들 초기화 동작을 도 7의 단계 100-128에 도시하였다. 단계 102-108은 로크범위의 자유 엘리먼트(58)에 지정된 과정(상기 "ii")에 대응한다. 단계 110-118은 캐시 메모리에 있으나, 로크 범위에 로딩되지 않은 캐시블록을 무효화하도록 지정된 과정(상기 "i")에 대응한다. 단계 120-122는 각각의 블록을 자유롭게 된 엘리먼트(58)에 페치하여 그에 관련하여 로킹하기 위해 지정된 과정(상기 "iii")에 대응한다. 단계 126은 LRU 정보를 초기화하도록 지정된 과정(상기 "iv")에 대응한다.
단계 100 및 128은 로크범위를 차례로 배열하는 것을 제공한다. 도 2에서, 단계 100 및 128은 시퀀서(43) 및 캐시 제어기(46)를 통해 실시된다. 이러한 점에서, 이들 단계는 LOCK_ADDRESS 신호를 시퀀서(43)에 기입함으로써 진행된다. 그 시작 주소부터, 시퀀서(43) 및 캐시 제어기(46)는 데이터 메모리(42) 내의 로킹된 엘리먼트의 인접성에 대응하게(즉, 베이스(66) 또는 선택된 웨이(64)의 어떤 다른 선택된 엘리먼트(58)부터 시작하여 선택된 순서로, 엘리먼트씩 데이터 메모리(42)의 선택된 웨이(64)를 통해 진행하여), 태그 메모리(40)에 저장하기 위해 선택된 인접성의 태그들을 제공한다. 즉, LOCK_ADDRESS 신호는 로크범위의 하위주소를 설정하며, 이로부터 시퀀스(43) 및 캐시 제어기(46)는 태그 메모리(40) 및 데이터 메모리(42)에 로킹될 대응하는 캐시블록에 로딩되게 캐시블록 주소를 차례로 정렬하도록 INIT 신호를 출력한다.
단계 110-118에 따라 수행되어, 세트 성분 및 태그 성분을 갖는 각각의 INIT 신호는 페치되는 캐시 블록의 주소가 태그 메모리 내에 어딘가에 있는지에 대해 태그 메모리(40)를 조사할 때 사용된다. 히트가 있다면, 캐시 제어기(46)는 카피-백 동작을 포함하여, 적합한 단계를 수행함으로써 결국 캐시 블록이 모두 무효화하게 된다. 단계 102-108을 수행하여, 캐시 제어기(46)는 로크범위의 각각의 엘리먼트(58)에 관련된 태그 메모리(40)의 내용의 조사를 제공한다. 이러한 내용의 블록상태가 각각의 엘리먼트(58)이 유효한, 더티 데이터임을 나타내면, 캐시 제어기(46)는 카피-백동작을 수행하여, 결국 엘리먼트의 현재의 데이터를 모두 무효화하게 된다.
로킹된 캐시블록을 더하거나 빼는 것은 본 발명의 원리에서 벗어남이 없이 여러 가지 방법으로 달성될 수 있다. 일실시예는 블록을 더하거나 빼는 것은 (i) 논리 0을 LOCK_ENALBE 비트에 기입함으로써 캐시 로크를 하지 못하게 하며, (ii) LOCK_SIZE 레지스터(84) 또는 LOCK_ADDRESS 레지스터(86)의 어느 하나 또는 이들에 기입함으로써 새로운 로크범위(예를 들어, 더 크거나 더 작으며 한 블록의 세분성으로 되는 것이 바람직하다)를 정하고, (iii) LOCK_ENABLE 비트에 논리 1을 기입함으로써 캐시 로킹하는 것을 다시 할 수 있게 하는 순서에 따르는 것을 제공한다. 또 다른 실시예에서, 캐시 메모리에 적합하게 둔 임의의 캐시 블록이 유지되며, 모든 다른 캐시 블록은 제거(예를 들어, 무효화) 및 교체된다.
본 발명을 바람직한 실시예에 관련하여 기술하였으나, 상기 개괄한 원리 내에 본 발명의 수정은 당업자에게 명백할 것이며 따라서 본 발명은 바람직한 실시예로 한정되는 것이 아니라 이러한 수정을 포함하도록 된 것임을 알 것이다.

Claims (14)

  1. 컴퓨터 시스템에 있어서,
    처리 장치와;
    상기 처리 장치에 결합되며 상위 레벨 메모리 및 캐시 메모리를 포함하는 메모리 시스템으로서, 상기 상위 레벨 메모리는 정보의 저장을 제공하고, 상기 캐시 메모리는 상기 상위 레벨 메모리로부터 복사된 캐시 블록들 내 정보의 저장을 제공하고, 상기 캐시 메모리는 세트들(sets) 및 웨이들(ways)로 조직된 엘리먼트들을 포함하며 교체방법(replacement policy)을 지원하는, 상기 메모리 시스템과;
    상기 메모리 시스템과 연관된 로크 순서할당 자원들을 포함하고, 상기 로크 순서할당 자원들은 전체 웨이보다 적은 세분성(granularity)과, 선택된 웨이들 중 한 웨이의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로 한 엘리먼트씩 상기 선택된 웨이들을 통해 진행되는 엘리먼트 로킹의 선택된 인접성(contiguity)을 지원하는, 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 캐시 메모리는 태그 메모리 및 데이터 메모리를 포함하고, 상기 로크 순서할당 자원들은 시퀀서(sequencer), 제1 저장장치 및 캐시 제어기를 포함하며, 상기 제1 저장장치는 로킹할 제1 캐시블록의 주소를 나타내는 데이터를 포함하고, 상기 시퀀서는 상기 제1 캐시블록의 상기 주소를 수신하여 로킹할 캐시블록들의 주소들을 나타내는 신호들의 시퀀스를 발생하며, 상기 주소들은 상기 태그 메모리에 저장되며, 로킹될 상기 캐시 블록들은 상기 데이터 메모리에 저장되며, 상기 캐시 제어기는 상기 태그의 엘리먼트들과 엘리먼트 로킹의 상기 선택된 인접성에 대응하는 데이터 메모리들과 상기 주소들 및 캐시블록들을 저장하기 위한 선택된 순서를 제공하는, 컴퓨터 시스템.
  3. 제2항에 있어서, 상기 로크 순서할당 자원들은 제2 저장장치를 더 포함하며, 상기 제2 저장장치는 상기 선택된 모든 웨이를 통한 엘리먼트 로킹의 인접성에서 로킹에 이용가능한 전체 엘리먼트의 로킹용 엘리먼트 수를 나타내는 데이터를 포함하며, 상기 데이터는 상기 대응하는 엘리먼트들을 제공하는 캐시 제어기에 인가되는, 컴퓨터 시스템.
  4. 제2항에 있어서, 상기 로크 순서할당 자원들은 로크 벡터 관리기(lock vector administrator)를 더 포함하고 상기 캐시 메모리는 LRU 관리기를 더 포함하며, 상기 로크 벡터 관리기는 세트의 캐시 메모리 액세스에 응답하여 상기 액세스된 세트의 로킹된 엘리먼트를 결정하며, 상기 LRU 관리기는 상기 로킹된 엘리먼트 결정에 응답하여 상기 로킹된 엘리먼트들과 연관된 캐시 블록들을 교체에 이용가능한 것으로서 지정하지 못하게 되는, 컴퓨터 시스템.
  5. 제4항에 있어서, 상기 로크 순서할당 자원들은 제2 저장장치를 더 포함하며, 상기 제2 저장장치는 상기 선택된 모든 웨이를 통한 엘리먼트 로킹의 인접성에서 로킹에 이용가능한 전체 엘리먼트를 로킹하기 위한 엘리먼트 수를 나타내는 데이터를 포함하며, 상기 로크 벡터 관리기는 상기 제2 저장장치의 데이터, 상기 엘리먼트 로킹의 선택된 인접성 및 상기 선택된 순서에 응답하여 상기 액세스된 세트의 로킹된 엘리먼트를 나타내는 로킹 상태 신호를 발생하는, 컴퓨터 시스템.
  6. 제5항에 있어서, 상기 로킹 상태 신호는 선택된 웨이들로 제한된 데이터로 구성되는, 컴퓨터 시스템.
  7. 상위레벨 메모리로부터 복사된 캐시 블록 내 정보의 저장을 제공하며, 세트 및 웨이로 조직된 엘리먼트를 포함하고 교체방법을 지원하는 캐시 메모리에 있어서,
    태그 메모리와;
    데이터 메모리와;
    로크 순서할당 자원들을 포함하고, 상기 로크 순서할당 자원들은 전체 웨이보다 적은 세분성과, 선택된 웨이들 중 한 웨이의 선택된 선두 엘리먼트부터 시작하여 선택된 순서로 한 엘리먼트씩 상기 선택된 웨이들을 통해 진행되는 엘리먼트 로킹의 선택된 인접성을 지원하는, 캐시 메모리.
  8. 제7항에 있어서, 상기 로크 순서할당 자원은 시퀀서, 제1 저장장치 및 캐시 제어기를 포함하고, 상기 제1 저장장치는 로킹할 제1 캐시블록의 주소를 나타내는 데이터를 포함하며, 상기 시퀀서는 상기 제1 캐시블록의 상기 주소를 수신하여 로킹할 캐시블록들의 주소들을 나타내는 신호들의 시퀀스를 발생하며, 상기 주소들은 상기 태그 메모리에 저장되고 상기 로킹될 캐시 블럭들은 상기 데이터 메모리에 저장되며, 상기 캐시 제어기는 상기 태그의 엘리먼트들과 엘리먼트 로킹의 선택된 인접성에 대응하는 데이터 메모리들과 상기 주소들 및 캐시블록들을 저장하기 위한 선택된 순서를 제공하는, 캐시 메모리.
  9. 제8항에 있어서, 상기 로크 순서할당 자원은 제2 저장장치를 더 포함하고, 상기 제2 저장장치는 상기 선택된 모든 웨이를 통한 엘리먼트 로킹의 인접성에서 로킹에 이용가능한 전체 엘리먼트의 로킹용 엘리먼트 수를 나타내는 데이터를 포함하며, 상기 데이터는 상기 대응하는 엘리먼트들을 제공하기 위해 상기 캐시 제어기에 인가되는, 캐시 메모리.
  10. 제8항에 있어서, LRU 관리기를 더 포함하고 상기 로크 순서할당 자원은 로크 벡터 관리기를 더 포함하며, 상기 로크 벡터 관리기는 세트의 캐시 메모리 액세스에 응답하여, 상기 액세스된 세트의 로킹된 엘리먼트들을 결정하며, 상기 LRU 관리기는 상기 로킹된 엘리먼트 결정에 응답하여, 상기 로킹된 엘리먼트들과 연관된 상기 캐시블록들을 교체에 이용가능한 것으로서 지정하지 못하게 되는, 캐시 메모리.
  11. 제10항에 있어서, 상기 로크 순서할당 자원은 제2 저장장치를 더 포함하며, 상기 제2 저장장치는 상기 선택된 모든 웨이를 통한 엘리먼트 로킹의 인접성에서 로킹에 이용가능한 전체 엘리먼트를 로킹하기 위한 엘리먼트 수를 나타내는 데이터를 포함하며, 상기 로크 벡터 관리기는 상기 제2 저장장치의 데이터, 상기 엘리먼트 로크의 선택된 인접성 및 상기 선택된 순서에 응답하여, 상기 액세스된 세트의 로킹된 엘리먼트들을 나타내는 로킹 상태 신호를 발생하는, 캐시 메모리.
  12. 제8항에 있어서, 상기 선택된 웨이들의 수는 전체 웨이들 수보다 적은, 캐시 메모리.
  13. 제12항에 있어서, 상기 선택된 웨이들은 홀수 또는 짝수 웨이들 중 하나로 제한되는, 캐시 메모리.
  14. 제13항에 있어서, 상기 선택된 웨이들은 순차적인, 캐시 메모리.
KR1019997006005A 1997-10-31 1998-09-24 로킹을 사용한 캐시 교체방법 KR100637610B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8/961,965 1997-10-31
US08/961,965 1997-10-31
US08/961,965 US6047358A (en) 1997-10-31 1997-10-31 Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
PCT/IB1998/001484 WO1999023567A1 (en) 1997-10-31 1998-09-24 Cache replacement policy with locking

Publications (2)

Publication Number Publication Date
KR20000069836A KR20000069836A (ko) 2000-11-25
KR100637610B1 true KR100637610B1 (ko) 2006-10-24

Family

ID=25505244

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997006005A KR100637610B1 (ko) 1997-10-31 1998-09-24 로킹을 사용한 캐시 교체방법

Country Status (6)

Country Link
US (1) US6047358A (ko)
EP (1) EP0950223B1 (ko)
JP (1) JP2001507846A (ko)
KR (1) KR100637610B1 (ko)
DE (1) DE69840960D1 (ko)
WO (1) WO1999023567A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW439380B (en) 1995-10-09 2001-06-07 Hitachi Ltd Terminal apparatus
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6801207B1 (en) 1998-10-09 2004-10-05 Advanced Micro Devices, Inc. Multimedia processor employing a shared CPU-graphics cache
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6542967B1 (en) * 1999-04-12 2003-04-01 Novell, Inc. Cache object store
US6560677B1 (en) * 1999-05-04 2003-05-06 International Business Machines Corporation Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory
US6425058B1 (en) * 1999-09-07 2002-07-23 International Business Machines Corporation Cache management mechanism to enable information-type dependent cache policies
US6434669B1 (en) * 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to dynamically update information-type dependent cache policies
US6629207B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US7000078B1 (en) * 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6421761B1 (en) 1999-11-09 2002-07-16 International Business Machines Corporation Partitioned cache and management method for selectively caching data by type
US6405287B1 (en) 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
AU2001234611A1 (en) * 2000-02-01 2001-08-14 Cirrus Logic, Inc. Methods and circuits for securing encached information
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
JP2002055879A (ja) * 2000-08-11 2002-02-20 Univ Hiroshima マルチポートキャッシュメモリ
US6598124B1 (en) 2000-09-29 2003-07-22 Sun Microsystems, Inc. System and method for identifying streaming-data
US6668307B1 (en) 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
GB2368150B (en) * 2000-10-17 2005-03-30 Advanced Risc Mach Ltd Management of caches in a data processing apparatus
US20020108021A1 (en) * 2001-02-08 2002-08-08 Syed Moinul I. High performance cache and method for operating same
US6988167B2 (en) * 2001-02-08 2006-01-17 Analog Devices, Inc. Cache system with DMA capabilities and method for operating same
US6748495B2 (en) * 2001-05-15 2004-06-08 Broadcom Corporation Random generator
KR100395758B1 (ko) * 2001-06-21 2003-08-21 삼성전자주식회사 새로운 블럭 교체 스킴을 채용한 캐쉬 메모리
US6922744B1 (en) * 2001-08-09 2005-07-26 Unisys Corporation Communal lock processing system for multiprocessor computer system
US6986003B1 (en) 2001-08-09 2006-01-10 Unisys Corporation Method for processing communal locks
US6823426B2 (en) * 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
US7073030B2 (en) * 2002-05-22 2006-07-04 International Business Machines Corporation Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
US6816952B1 (en) 2002-05-31 2004-11-09 Unisys Corporation Lock management system and method for use in a data processing system
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
KR100614639B1 (ko) * 2003-07-24 2006-08-22 삼성전자주식회사 쓰기 방지 가능한 버퍼 메모리를 갖는 메모리 장치 및그것을 포함하는 정보 처리 시스템
US9268831B2 (en) * 2004-01-12 2016-02-23 Lightfoot Solutions Group Limited System and method for extracting user selected data from a database
GB0400569D0 (en) * 2004-01-12 2004-02-11 Lightfoot Solutions Ltd System & methodology for identifying statistically signifcant events in monitored process
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
KR100617875B1 (ko) 2004-10-28 2006-09-13 장성태 다중 캐쉬 구조의 다중 프로세서 시스템 및 그 원격캐쉬의 교체 방법
JP2006338371A (ja) * 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
WO2007049284A1 (en) * 2005-10-25 2007-05-03 Hewlett-Packard Development Company Memory access control
US7523260B2 (en) 2005-12-22 2009-04-21 International Business Machines Corporation Propagating data using mirrored lock caches
US7461210B1 (en) * 2006-04-14 2008-12-02 Tilera Corporation Managing set associative cache memory according to entry type
US20080147989A1 (en) * 2006-12-14 2008-06-19 Arm Limited Lockdown control of a multi-way set associative cache memory
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US8060880B2 (en) * 2007-05-04 2011-11-15 Microsoft Corporation System using backward inter-procedural analysis for determining alternative coarser grained lock when finer grained locks exceeding threshold
US8180969B2 (en) * 2008-01-15 2012-05-15 Freescale Semiconductor, Inc. Cache using pseudo least recently used (PLRU) cache replacement with locking
US8271610B2 (en) * 2008-08-28 2012-09-18 Sycamore Networks, Inc. Distributed content caching solution for a mobile wireless network
US20100057926A1 (en) * 2008-08-28 2010-03-04 Sycamore Networks, Inc. Digital custom data content injection mechanism for a content delivery network
US9208104B2 (en) * 2008-08-28 2015-12-08 Citrix Systems, Inc. Content replacement and refresh policy implementation for a content distribution network
US9898411B2 (en) * 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
EP3230874B1 (en) * 2014-12-14 2021-04-28 VIA Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
WO2016097805A1 (en) 2014-12-14 2016-06-23 Via Alliance Semicoductor Co., Ltd. Cache memory budgeted by ways on memory access type
WO2016097808A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
US10719434B2 (en) 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
JP6207765B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
US9396120B2 (en) * 2014-12-23 2016-07-19 Intel Corporation Adjustable over-restrictive cache locking limit for improved overall performance
US9594689B2 (en) * 2015-02-09 2017-03-14 International Business Machines Corporation Designated cache data backup during system operation
US10657069B2 (en) 2017-05-15 2020-05-19 Seagate Technology Llc Fine-grained cache operations on data volumes

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619797A (ja) * 1992-04-29 1994-01-28 Sun Microsyst Inc キャッシュ内の記憶されている行を保護する装置及び方法
JPH06208505A (ja) * 1992-11-13 1994-07-26 Cyrix Corp アドレス領域によりメモリ・サブシステム動作を制御するための領域構成システム及び方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
US5185878A (en) * 1988-01-20 1993-02-09 Advanced Micro Device, Inc. Programmable cache memory as well as system incorporating same and method of operating programmable cache memory
US4977498A (en) * 1988-04-01 1990-12-11 Digital Equipment Corporation Data processing system having a data memory interlock coherency scheme
US5537574A (en) * 1990-12-14 1996-07-16 International Business Machines Corporation Sysplex shared data coherency method
US5493667A (en) * 1993-02-09 1996-02-20 Intel Corporation Apparatus and method for an instruction cache locking scheme
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
GB9307359D0 (en) * 1993-04-08 1993-06-02 Int Computers Ltd Cache replacement mechanism
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
US5694567A (en) * 1995-02-09 1997-12-02 Integrated Device Technology, Inc. Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
US5913224A (en) * 1997-02-26 1999-06-15 Advanced Micro Devices, Inc. Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619797A (ja) * 1992-04-29 1994-01-28 Sun Microsyst Inc キャッシュ内の記憶されている行を保護する装置及び方法
JPH06208505A (ja) * 1992-11-13 1994-07-26 Cyrix Corp アドレス領域によりメモリ・サブシステム動作を制御するための領域構成システム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101355892B1 (ko) * 2013-01-15 2014-01-28 한밭대학교 산학협력단 실시간 단일 메모리 동시 입출력을 위한 영상데이터 처리방법

Also Published As

Publication number Publication date
US6047358A (en) 2000-04-04
EP0950223B1 (en) 2009-07-08
DE69840960D1 (de) 2009-08-20
KR20000069836A (ko) 2000-11-25
JP2001507846A (ja) 2001-06-12
EP0950223A1 (en) 1999-10-20
WO1999023567A1 (en) 1999-05-14

Similar Documents

Publication Publication Date Title
KR100637610B1 (ko) 로킹을 사용한 캐시 교체방법
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6912623B2 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6339813B1 (en) Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
US6542965B2 (en) Cache line replacement using cable status to bias way selection
US5537573A (en) Cache system and method for prefetching of data
US5974508A (en) Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
JP2839060B2 (ja) データ処理システムおよびデータ処理方法
US6446188B1 (en) Caching dynamically allocated objects
JP4128642B2 (ja) キャッシュ・メモリの制御方法及びキャッシュ・コントローラ
US7120773B2 (en) Apparatus and method for memory management
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US5450563A (en) Storage protection keys in two level cache system
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US6996679B2 (en) Cache allocation mechanism for saving multiple elected unworthy members via substitute victimization and imputed worthiness of multiple substitute victim members
US6993628B2 (en) Cache allocation mechanism for saving elected unworthy member via substitute victimization and imputed worthiness of substitute victim member
US6438655B1 (en) Method and memory cache for cache locking on bank-by-bank basis
US20100088457A1 (en) Cache memory architecture having reduced tag memory size and method of operation thereof
US5471602A (en) System and method of scoreboarding individual cache line segments
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US7197620B1 (en) Sparse matrix paging system
US7103721B2 (en) Cache allocation mechanism for biasing subsequent allocations based upon cache directory state
US7143239B2 (en) Cache structure and methodology
US20030014581A1 (en) Method and apparatus for modifying cache address computation schemes
WO2001018653A9 (en) Dynamic memory caching

Legal Events

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

Payment date: 20110929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee