KR20110117267A - 정상 할당으로부터의 간섭이 없는 캐시 로킹 - Google Patents

정상 할당으로부터의 간섭이 없는 캐시 로킹 Download PDF

Info

Publication number
KR20110117267A
KR20110117267A KR1020117023069A KR20117023069A KR20110117267A KR 20110117267 A KR20110117267 A KR 20110117267A KR 1020117023069 A KR1020117023069 A KR 1020117023069A KR 20117023069 A KR20117023069 A KR 20117023069A KR 20110117267 A KR20110117267 A KR 20110117267A
Authority
KR
South Korea
Prior art keywords
cache
entries
instructions
bnca
locked
Prior art date
Application number
KR1020117023069A
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 KR20110117267A publication Critical patent/KR20110117267A/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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing

Landscapes

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

Abstract

블록 정상 캐시 할당(BNCA) 모드가 프로세서에 대해 정의된다. BNCA 모드에서는, 캐시 엔트리가 미리 결정된 명령에 의해서만 할당될 수 있다. 캐시 미스의 경우 (예를 들어 인터럽트 코드의 일부로서) 정상 메모리 액세스 명령들이 실행되어 메인 메모리로부터 데이터를 검색할 것이지만, 이들 명령들은 캐시의 엔트리들을 할당하도록 허용되지는 않는다. 미리 결정된 명령들(예를 들면, 로킹된 캐시 엔트리를 설정하는데 사용된 명령들)만이 엔트리들을 캐시에 할당할 수 있다. 상기 로킹된 엔트리들이 설정되는 경우, 상기 프로세서는 BNCA 모드로부터 나와서, 임의의 메모리 액세스 명령이 캐시 엔트리들을 할당할 수 있다. BNCA 모드는 하나의 구성 레지스터에 있는 한 비트를 설정함으로써 표시될 수 있다.

Description

정상 할당으로부터의 간섭이 없는 캐시 로킹{CACHE LOCKING WITHOUT INTERFERENCE FROM NORMAL ALLOCATION}
본 발명은 일반적으로는 프로세서 분야에 관한 것이며, 구체적으로는 정상 할당으로부터의 간섭이 없는 캐시 로킹(cache locking) 방법에 관한 것이다.
마이크로프로세서들은 휴대용 전자 디바이스들을 포함한 광범위한 어플리케이션들에서 계산적인 작업들을 수행한다. 추가 기능들 및 특징들이 휴대용 전자 디바이스들 및 다른 어플리케이션들에서 구현되는 것을 허용하기 위해 프로세서 성능을 최대화하는 것이 바람직하다.
컴퓨터 프로그램들에 있어서 공통적인 공간 구역성 및 시간 구역성의 특성들로 인해, 임의의 주어진 시점에서 처리되는 명령들 및 데이터는 통계적으로 매우 가까운 미래에 요청될 가능성이 있으며, 또한 상기 명령들 및 데이터는 신속하게 이용될 수 있는 고속의 캐시 메모리에서 유지될 수 있다. 메모리 액세스 명령들은 태그라고 알려진 (가상 또는 물리적) 어드레스의 일부를 캐시에 있는 CAM 구조에 제공하는데, 이러한 어드레스는 상기 캐시의 RAM 내에 저장된 명령들 및/또는 데이터의 대응하는 어드레스 비트들에 비교된다(본 명세서에서 상기 CAM 과 RAM 콘텐츠들은 함께 캐시 엔트리라고 지칭된다). 만약 상기 태그가 매치하거나 또는 "히트(hit)"한다면, 캐시 라인이 원하는 명령 및/또는 데이터를 포함하도록 되돌려진다(혹은 세트 연관 캐시들(set associative caches)인 경우, 복수의 캐시 라인들이 되돌려지고, 또한 하나의 캐시 라인이 인덱스(index)라고 알려진 상기 어드레스의 다른 부분에 의해 선택된다). 만약 상기 태그가 어떠한 CAM 엔트리와도 매치하지 않는다면, 상기 태그는 "미스(miss)"되고, 상기 메모리 액세스 명령은 메인 메모리로부터 원하는 명령 또는 데이터를 액세스하도록 진행한다.
전체적인 캐시 히트 레이트(hit rate)를 최대화함으로써, 지연(latency)을 발생시키고, 파이프라인을 중지(stall)시키며, 부가적인 전력을 소모할 수 있는 메인 메모리로의 오프-칩(off-chip) 액세스를 최소화하는 것이 보통 바람직하다. 추가적으로, 몇몇 어플리케이션들에서는, 중요한 혹은 자주 사용되는 명령들 및/또는 데이터가 알려질 수 있으며, 이러한 정보는 상기 캐시의 전체 성능에 관계없이, 캐시에서 유지될 수 있다. 일부 명령 설정 아키텍처들은 캐시 엔트리를 "로킹(lock)"하는 수단을 제공하고, 따라서 상기 엔트리는 정상 캐시 미스 처리동안 대체되지 않는다. 몇몇 경우들에 있어서, 로킹할 캐시 엔트리의 선택은 정상 캐시 할당 알고리즘들에 대한 로킹된 엔트리의 영향을 최소화하기 위해 명백하며 정확하다.
도 1은 캐시 엔트리들을 로킹하는 하나의 대표적인 수단을 도시하는 기능 블록도이다. 명령 캐시, 데이터 캐시 또는 통합 캐시를 포함할 수 있는 캐시(1)는 0 에서 n-1까지 번호매겨진 n개의 엔트리들을 포함한다. FLOOR 레지스터(2)는 상기 캐시의 "플로어(floor)", 또는 정상 할당을 위해 사용가능한 최하위 캐시 엔트리를 나타내는 엔트리 번호를 포함한다. 상기 플로어 아래의 캐시 엔트리들은 대체를 위해 사용가능하지 않으며, 따라서 "로킹"된다. 만약 어떠한 엔트리도 로킹되지 않는다면, 상기 FLOOR 레지스터는 한 개의 0을 포함하고, 그리고 상기 캐시 대체 알고리즘이 상기 캐시 전반에 걸쳐 수행된다. 만약, 도 1에 도시된 바와 같이, 하위 3개의 엔트리들이 로킹된다면, 상기 프로세서는 상기 FLOOR 레지스터를 재할당을 위해 사용가능한 세 개의 상기 제 1 캐시 엔트리로 증분시킬 것이다. 이 경우 정상 캐시 재할당 알고리즘은 상기 "플로어" 또는 3에서부터 상위 캐시 n-1까지 상기 캐시의 상기 부분에서 수행된다.
로킹된 캐시 엔트리를 한 장소에 그룹화하는 것은 상기 대체 알고리즘을 간소화시킨다. 예를 들어, 캐시 엔트리들이 라운드-로빈(round-robin) 기반으로 대체되는 경우, "롤오버(rollover)" 포인트만이 상기 로킹된 엔트리들에 의해 영향을 받는다(즉, 이전의 n-1을 증분시킬 때, 다음 엔트리는 0이 아닌 상기 FLOOR 레지스터(2)에 의해 지정된 엔트리이다). 라운드-로빈 할당에 의해 "스킵 오버(skipped over)"되어야 하는 캐시 공간에 걸쳐 분산된 비-인접한(non-contiguous) 로킹된 엔트리들은 존재하지 않는다. 캐시 엔트리들을 그룹화하고 그리고 로킹하는 상기 FLOOR 방법은 단지 대표적일 뿐이며 제한적이지 않다는 점을 주목하라. 캐시 엔트리들은 매우 다양한 방법들에 따라 함께 그룹화되고 그리고 재할당되지 못하게 로킹될 수 있다.
일반적으로 상기 프로세서 외부의 이벤트들에 의해 생성된 인터럽트(interrupt)들은 속성상 비-확정적(non-determinate)일 수 있다. 따라서, 로킹된 캐시 엔트리들을 주의깊게 배열하려는 코드 실행 기간동안 인터럽트들이 발생할 수 있다. 인터럽트-처리 코드는 메모리 액세스 명령들을 포함하는데, 이 메모리 액세스 명령들은 캐시 내에서 미스되기 쉬워서 메인 메모리로의 액세스들을 유발한다. 이들 메모리 액세스들은 정상적으로는 캐시에의 할당을 생성할 것이다. 즉, 상기 인터럽트들을 서비스하도록 페치된(fetched) 명령 및 데이터는 몇몇 캐시 라인들을 대체할 것이다. 만약 로킹된 캐시 엔트리 처리가 시작한 이후, 그러나 상기 로킹된 엔트리가 수립(establish)되고 배열되기 전에 상기 인터럽트들이 발생한 경우, 로킹되었어야 했던 캐시 엔트리들은 재할당될 수 있다. 더욱이, 로킹되지 않은(non-locked) 캐시 엔트리들이, 상기 FLOOR 레지스터 아래와 같이, 로킹된 엔트리들을 위해 의도된 영역 내에 할당될 수도 있다. 이는 비-인접하게 로킹된 엔트리들을 초래하여, 라운드 로빈과 같은 몇몇 캐시 대체 알고리즘들에 상당한 부담을 부과할 수 있다.
하나 이상의 실시예들에서, 블록 정상 캐시 할당(BNCA) 모드가 정의된다. 상기 프로세서가 BNCA 모드로 진입할때, 캐시 엔트리들은 미리 결정된 명령들에 의해서만 할당될 수 있다. (예를 들어, 인터럽트 코드의 일부로서) 정상 메모리 액세스 명령들이 실행되고, 그리고 캐시 미스의 경우 메인 메모리로부터 데이터를 검색할 수 있으나, 이들 명령들은 캐시에 엔트리를 할당하도록 허용되지 않는다. 단지 상기 미리 결정된 명령들(예를 들어, 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들)만이 캐시에 엔트리들을 할당할 수 있다. 로킹된 엔트리들이 설정되는 경우, 상기 프로세서는 BNCA 모드를 빠져나가고(exit), 임의의 메모리 액세스 명령이 캐시 엔트리들을 할당할 수 있다. BNCA 모드는 구성 레지스터에서 한 비트만을 설정함으로써 표시될 수 있다.
일 실시예는 캐시에서 할당들을 제한하기 위한 방법에 관한 것이다. 제한 모드에서, 미리 결정된 명령들의 세트만이 캐시 엔트리들을 할당하도록 허용된다. 비-제한 모드에서는, 임의의 메모리 액세스 명령이 캐시 엔트리들을 할당하도록 허용된다.
또 다른 실시예는 캐시를 관리(managing)하기 위한 방법에 관한 것이다. 제한 모드로 진입하면 미리 결정된 명령들만이 캐시 엔트리들을 할당할 수 있다. 캐시 엔트리들은 상기 미리 결정된 명령들을 사용하여 할당된다. 상기 제한 모드를 빠져나가면 임의의 메모리 액세스 명령을 위한 캐시 엔트리들이 할당된다.
또 다른 실시예는 프로세서에 관한 것이다. 상기 프로세서는 캐시 메모리와 블록 정상 캐시 할당(BNCA) 비트를 가지는 구성 레지스터를 포함한다. 상기 프로세서는, 메모리 액세스 명령들에 의해 캐시에 상기 엔트리들의 할당을 제어하도록 동작하며, 또한 상기 BNCA 비트가 설정되는 경우, 미리 결정된 명령들의 세트에 대한 경우를 제외하고, 상기 할당을 허용하지 않도록 동작하는 캐시 제어기를 부가적으로 포함한다.
도 1은 캐시 메모리 및 FLOOR 레지스터의 기능 블록도.
도 2는 프로세서의 기능 블록도.
도 3은 캐시 엔트리들을 로킹하는 방법에 대한 흐름도.
도 2는 파이프라인 아키텍처 및 계층적 메모리 구조를 모두 채택하는 대표적인 프로세서(10)의 기능 블록도이다. 상기 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)에서 명령들을 실행한다. 구성 레지스터(15)가 제어 로직(14)에 포함되는데, 상기 구성 레지스터(15)는 블록 정상 캐시 할당(BNCA) 비트(16)를 포함하며, 이는 아래에서 훨씬 더 자세히 설명된다. 상기 파이프라인은 파이프 스테이지들로 이루어진 다양한 레지스터들 혹은 래치들(17)과, 하나 이상의 산술 논리 유닛(ALU)(18)들을 포함한다. 범용 레지스터(GPR) 파일(20)은 상기 메모리 계층구조 중 상부를 포함하는 레지스터들을 제공한다.
상기 파이프라인은 명령-측 변환 색인 버퍼(Instruction-side Translation Lookaside Buffer(ITLB))(24)에 의해 관리되는 메모리 어드레싱(addressing) 및 허용들을 사용하여, 명령 캐시(I-캐시)(22)로부터 명령을 페치한다. 메인 변환 색인 버퍼(TLB)(28)에 의해 관리되는 메모리 어드레싱 및 허용들을 사용하여, 데이터 캐시(D-캐시)(26)로부터 데이터가 액세스된다. 다양한 실시예들에서, 상기 ITLB(24)는 상기 TLB(28) 중 일부의 복사본을 포함할 수 있다. 대안적으로, 상기 ITLB(24) 및 TLB(28)는 통합될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, 상기 I-캐시(22) 및 D-캐시(26)가 통합 또는 단일화될 수 있다. 상기 ITLB(24) 및 TLB(28)는 통합될 수 있다. 상기 I-캐시(22) 및/또는 D-캐시(26)에서의 미스들로 인해, 메모리 인터페이스(30)의 제어 하에, 메인 (오프-칩) 메모리(32)로의 액세스가 발생한다.
상기 프로세서(10)는 입출력(I/O) 인터페이스(34)를 포함하여, 다양한 주변 디바이스들(36)로의 액세스를 제어할 수 있다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자라면 상기 프로세서(10)의 수많은 변경들이 가능하다는 점을 인지할 것이다. 예를 들어, 상기 프로세서(10)는 I 캐시 및 D 캐시(22,26) 중 어느 하나 혹은 이 둘 모두에 대해 제 2 레벨(L2) 캐시를 포함할 수 있다. 더욱이, 프로세서(10)에 도시된 하나 이상의 기능 블록들은 특정 실시예로부터 생략될 수 있다.
일반적으로 명령 세트 아키텍처들이 명령들 또는 데이터를 파이프라인으로 판독하지 않고 오직 캐시 엔트리들만을 할당하는 메모리 액세스 명령들을 포함한다. 예를 들어, PLD(사전로드(preload)) 명령은 메인 메모리에서 어드레스를 판독한다. 만약 상기 PLD가 관련 캐시 내에서 미스되는 경우, 메모리로부터의 상기 데이터가 판독되어 캐시 내로 로드되어 기존 캐시 엔트리를 대체한다. 상기 PLD 명령은, 상기 명령들 및/또는 데이터를 액세스하는 후속 코드가 관련 캐시(22,26)에서 히트한다는 점을 보장하기 위해, 특정 중요 명령들 및/또는 데이터를 I-캐시(22) 및/또는 D-캐시(26)로 각각 사전로드하는 프로그램에 의해 사용될 수 있다. 상기 프로그램은 다른 메모리 액세스 동작들에 의한 대체를 막기 위해 상기 캐시(22,26)의 사전로드된 엔트리들을 로킹하도록 상기 FLOOR 레지스터로의 기록(또는 다른 로킹 메커니즘)과 관련하여 상기 PLD 명령들을 사용할 수 있다. 그러나, 이 처리동안 수신된 인터럽트는 원하는 사전로드 및 캐시 엔트리 로킹 동작을 방해할 수 있다.
하나 이상의 실시예들에 따라, 상기 프로세서(10)는 오직 미리 결정된 명령들만이 캐시 엔트리를 할당할 수 있는 모드로 진입할 수 있다. 예를 들어, 상기 모드는 블록 정상 캐시 할당(BNCA) 비트(16)를 예컨대 구성 레지스터(15)에 기록함으로써 진입될 수 있다. BNCA 표시자(16)가 설정되거나 액티브(active)한 경우, 공통 메모리 액세스 명령들이 상기 캐시(22,26)에 엔트리들을 할당하는(예를 들어 대체하는) 것이 금지된다. 단지 선택되고 미리 결정된 명령들만이 캐시 엔트리를 할당할 수 있다. 이들 명령들은, 예를 들어, 데이터를 파이프라인으로 판독하지 않고 캐시 엔트리들을 할당하기 위한 PLD 명령들을 포함할 수 있다. 이러한 명령들은 인터럽트 처리 코드에 의해 실행되지 않을 가능성이 있으며, 따라서 인터럽트 코드는 BNCA 모드에서 수행되는 사전로드 및 캐시 엔트리 로킹 동작들을 방해하지 않을 것이다. 대안적으로는, 예컨대 LPLD(로킹 사전로드) 명령과 같이, 명백한 캐시 로킹을 제공하는 명령 세트 아키텍처에 있어서, BNCA 모드 동안의 캐시 할당들은 이러한 로킹 캐시 할당 명령들로 제한될 수 있다.
BNCA 모드 동안 - 즉, 캐시 사전로드 및 로킹 동작 동안 - 인터럽트가 발생하는 경우, 임의의 메모리 액세스 명령들이 적절히 실행될 것이며, 이들 명령들은 단지 캐시 엔트리들을 할당하는 것을 방지한다. 즉, 메모리 액세스 명령이 캐시(22,26)에서 미스되는 경우, 메인 메모리 액세스가 수행되고, 그리고 상기 명령 또는 데이터가 상기 파이프라인에 반환될 것이다. 그러나, 상기 캐시 미스 처리는 캐시 엔트리를 할당할 수 없을 것이다. 결과적으로, 동일한 혹은 유사한 명령들 또는 데이터로의 액세스가 후속적으로 시도되는 경우, 캐시에서 또다시 미스되고, 메인 메모리로부터 상기 명령 또는 데이터를 검색할 것이다. 이는 반복된 장기적 메모리 액세스 지연들을 초래함으로써 상기 인터럽트 루틴의 실행 성능을 저하시킬 것이다. 그러나, 상기 인터럽트 루틴은 단기이며 드문 것으로 간주된다. 한편, 정확한 로킹된 캐시 엔트리들이 인터럽트 코드의 일부로서 실행하는 메모리 액세스 명령에 의한 방해 없이 수립됨을 보장함으로써 상당한 성능 이득들 및 설계 간편화가 달성된다.
일 실시예에 따라, 로킹된 캐시 엔트리들을 수립하는 과정이 도 3의 흐름도를 참조하여 설명된다. BNCA 비트(16)(또는 다른 BNACA 모드 표시자)가 설정된다(블록 40). 이는 오직 특정 미리 결정된 명령들(예, PLD)만이 캐시 엔트리들을 할당하도록 허용된다는 점을 I-캐시(22)와 D-캐시(26)를 제어하는 회로들에 표시한다(블록 42). 이는 상기 프로세서(10)가 상기 정상 캐시 할당 프로시저(procedure)를 최적화하도록 위치된 정확한 고정 캐시 엔트리를 수립하는 것을 허용한다. BNCA 모드동안 인터럽트가 발생하는 경우, 상기 인터럽트 코드가 실행되고, 그리고 (특히, 미리 결정된 명령들이 아닌) 모든 메모리 액세스 명령들이 캐시 엔트리들을 할당하는 것이 허용되지 않는다(블록 44). 상기 인터럽트 코드가 종료되면, 상기 프로세서(10)는 캐시 엔트리를 계속 사전로드하고 로킹한다. 원하는 로킹된 캐시 엔트리가 모두 수립된 경우(블록46), 상기 프로세서(10)는 BNCA 모드를 빠져나가서 상기 BNCA 비트(16)(또는 다른 BNCA 모드 표시자)를 삭제한다(블록 48). 이후 상기 프로세서(10)는 임의의 메모리 액세스 명령이 정상 할당 프로토콜마다 캐시 엔트리들을 할당하는 것을 허용하도록 계속 실행한다(블록 50). 이러한 방식으로, 정확한 로킹된 캐시 엔트리들의 수립은 메모리 액세스 명령이 인터럽트 코드에 의한 간섭으로부터 보호된다.
일 실시예에서, 단일 BNCA 비트(16)가 모든 캐시들(22,26)에 대해 BNCA 모드를 제어한다. 또 다른 실시예에 따라, 개별 BNCA 비트(16)는 I-캐시(22)와 D-캐시(26)에 대해 개별적으로 BNCA 모드를 제어한다. 또 다른 실시예에서, I-캐시(22)와 D-캐시(26) 중 하나 또는 이들 모두는 두 개 이상의 뱅크(bank)들로 분할될 수 있고, 각 캐시 뱅크는 대응하는 BNCA 비트들(16)에 의해 표시되는 바와 같이, 독립적으로 BNCA 모드로 진입할 수 있다. 또 다른 실시예에서, n-way 세트 연관 캐시(22,26)의 각각의 세트는 대응하는 BNCA 비트(16)에 의해 표시되는 바와 같이, 독립적으로 BNCA 모드로 진입하고 그리고 빠져나올 수 있다. 일반적으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 명세서에서 개시된 하나 이상의 실시예들의 교지들이 많은 대안적인 구현예들에 적용될 수 있다는 점을 쉽게 인지할 것이다.
비록 본 발명의 실시예들이 본 명세서에서는 이러한 실시예의 특정한 특징들, 양상들 및 실시예들에 관해 설명되었지만, 본 교지들의 넓은 범위 내에서 수많은 변형들, 수정들 및 다른 실시예들이 가능하다는 점이 명백할 것이다. 따라서, 본 실시예들은 모든 양상들에 있어서 제한적인 것이 아니라 예시적인 것으로 해석되어야 하며 첨부된 청구항들의 의미 및 등가 범위 내에 있는 모든 변경들이 이들 청구항에 포함되는 것으로 의도된다.

Claims (14)

  1. 캐시에서 할당들을 제한하기 위한 방법으로서,
    제한 모드에서, 로킹된 캐시 엔트리(locked cache entry)들을 수립(establish)하는데 사용되는 명령들만이 캐시 엔트리들을 할당하도록 허용하는 단계; 및
    비-제한 모드에서, 임의의 메모리 액세스 명령이 캐시 엔트리들을 할당하도록 허용하는 단계를 포함하는,
    캐시에서 할당들을 제한하는 방법.
  2. 제1항에 있어서,
    상기 제한 모드는 블록 정상 캐시 할당(Block Normal Cache Allocation(BNCA)) 표시자를 설정(setting)함으로써 진입되고, 그리고 상기 BNCA 표시자를 재설정(resetting)함으로써 나가는(exit),
    캐시에서 할당들을 제한하는 방법.
  3. 제2항에 있어서,
    상기 BNCA 표시자는 구성(configuration) 레지스터에서의 한 비트인,
    캐시에서 할당들을 제한하는 방법.
  4. 제1항에 있어서,
    상기 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들은 데이터를 상기 캐시로 로드(load)하고 그리고 대체(replacement)에 대비하여 상기 캐시 엔트리를 로킹(locking)하도록 동작시키는,
    캐시에서 할당들을 제한하는 방법.
  5. 제4항에 있어서,
    개별 명령들은 명령 캐시 및 데이터 캐시 엔트리들을 로드하고 로킹하도록 동작하는,
    캐시에서 할당들을 제한하는 방법.
  6. 제1항에 있어서,
    상기 제한 모드 및 상기 비-제한 모드는 데이터 캐시 및 명령 캐시에 개별적으로 적용될 수 있는,
    캐시에서 할당들을 제한하는 방법.
  7. 제1항에 있어서,
    상기 캐시는 둘 이상의 뱅크(bank)들로 분할되고, 제한 모드 및 비-제한 모드들은 각각의 뱅크에 개별적으로 적용될 수 있는,
    캐시에서 할당들을 제한하는 방법.
  8. 제1항에 있어서,
    상기 캐시는 세트 연관 캐시(set associative cache)이며, 제한 모드 및 비-제한 모드들은 각각의 세트에 개별적으로 적용될 수 있는,
    캐시에서 할당들을 제한하는 방법.
  9. 캐시 관리 방법으로서,
    로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들만이 캐시 엔트리들을 할당할 수 있는 제한 모드로 진입하는 단계;
    상기 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들을 사용하여 캐시 엔트리들을 할당하는 단계; 및
    상기 제한 모드로부터 나가는 단계 및 임의의 메모리 액세스 명령에 대해 캐시 엔트리들을 할당하는 단계를 포함하는,
    캐시 관리 방법.
  10. 제9항에 있어서,
    상기 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들을 사용하여 캐시 엔트리들을 할당하는 단계 이후에, 대체에 대비하여 상기 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들을 사용하여 할당된 캐시 엔트리들을 로킹하는 단계를 더 포함하는,
    캐시 관리 방법.
  11. 제9항에 있어서,
    상기 제한 모드 동안 수신된 인터럽트를 처리하는 단계; 및
    인터럽트 코드에 있는 메모리 액세스 명령들에 대해 임의의 캐시 엔트리들을 할당하지 않고, 상기 인터럽트 코드에 있는 상기 메모리 액세스 명령들에 대한 메모리 액세스들을 실행하는 단계를 더 포함하는,
    캐시 관리 방법.
  12. 제9항에 있어서,
    상기 제한 모드로 진입하는 단계는 구성 레지스터에 블록 정상 캐시 할당(BNCA) 비트를 설정하는 단계를 포함하고,
    상기 제한 모드로부터 나가는 단계는 상기 BNCA 비트를 삭제(clear)하는 단계를 포함하는,
    캐시 관리 방법.
  13. 캐시 메모리;
    블록 정상 캐시 할당(BNCA) 비트를 가지는 구성 레지스터; 및
    메모리 액세스 명령들에 의해 상기 캐시에의 엔트리들의 할당을 제어하도록 동작하고, 그리고 상기 BNCA 비트가 설정된 경우, 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들을 제외하고는, 상기 할당을 허용하지 않도록 추가로 동작하는 캐시 제어기를 포함하는,
    프로세서.
  14. 제13항에 있어서, 상기 로킹된 캐시 엔트리들을 수립하는데 사용되는 명령들은 로킹 할당 명령들을 포함하는,
    프로세서.
KR1020117023069A 2006-01-31 2007-01-31 정상 할당으로부터의 간섭이 없는 캐시 로킹 KR20110117267A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/343,765 US8527713B2 (en) 2006-01-31 2006-01-31 Cache locking without interference from normal allocations
US11/343,765 2006-01-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020087021051A Division KR101083192B1 (ko) 2006-01-31 2007-01-31 정상 할당으로부터의 간섭이 없는 캐시 로킹

Publications (1)

Publication Number Publication Date
KR20110117267A true KR20110117267A (ko) 2011-10-26

Family

ID=38123878

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087021051A KR101083192B1 (ko) 2006-01-31 2007-01-31 정상 할당으로부터의 간섭이 없는 캐시 로킹
KR1020117023069A KR20110117267A (ko) 2006-01-31 2007-01-31 정상 할당으로부터의 간섭이 없는 캐시 로킹

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020087021051A KR101083192B1 (ko) 2006-01-31 2007-01-31 정상 할당으로부터의 간섭이 없는 캐시 로킹

Country Status (6)

Country Link
US (1) US8527713B2 (ko)
EP (1) EP1979819B1 (ko)
JP (2) JP5123215B2 (ko)
KR (2) KR101083192B1 (ko)
CN (1) CN101375257B (ko)
WO (1) WO2007090175A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137060B (zh) * 2011-12-30 2018-03-06 英特尔公司 高速缓存协处理单元
CN102591799B (zh) * 2011-12-30 2015-04-15 华为技术有限公司 一种存放数据的方法和装置
US9141544B2 (en) 2012-06-26 2015-09-22 Qualcomm Incorporated Cache memory with write through, no allocate mode
KR102366808B1 (ko) 2014-10-22 2022-02-23 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US20230418753A1 (en) * 2022-06-28 2023-12-28 Advanced Micro Devices, Inc. Allocation control for cache

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0325422B1 (en) 1988-01-20 1996-05-15 Advanced Micro Devices, Inc. Integrated cache unit
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
US5249286A (en) * 1990-05-29 1993-09-28 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
US5371872A (en) * 1991-10-28 1994-12-06 International Business Machines Corporation Method and apparatus for controlling operation of a cache memory during an interrupt
US5822764A (en) 1996-03-04 1998-10-13 Motorola, Inc. Method and circuit for efficiently replacing invalid locked portions of a cache with valid data
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6438655B1 (en) * 1999-04-20 2002-08-20 Lucent Technologies Inc. Method and memory cache for cache locking on bank-by-bank basis
JP2001005658A (ja) 1999-06-18 2001-01-12 Toshiba Corp 組込型データ処理システムおよびシステムプログラム修正方法
JP4056768B2 (ja) * 2002-03-04 2008-03-05 富士通株式会社 マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法
US6868485B1 (en) 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US20050044320A1 (en) * 2003-08-19 2005-02-24 Sun Microsystems, Inc. Cache bank interface unit
US7055004B2 (en) * 2003-09-04 2006-05-30 International Business Machines Corporation Pseudo-LRU for a locking cache
US7360015B2 (en) * 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache

Also Published As

Publication number Publication date
JP5123215B2 (ja) 2013-01-23
CN101375257B (zh) 2014-06-18
JP2009525552A (ja) 2009-07-09
US8527713B2 (en) 2013-09-03
WO2007090175A1 (en) 2007-08-09
CN101375257A (zh) 2009-02-25
KR20080097206A (ko) 2008-11-04
JP2013016187A (ja) 2013-01-24
EP1979819B1 (en) 2019-12-18
EP1979819A1 (en) 2008-10-15
US20070180199A1 (en) 2007-08-02
KR101083192B1 (ko) 2011-11-11

Similar Documents

Publication Publication Date Title
US9747218B2 (en) CPU security mechanisms employing thread-specific protection domains
US7996644B2 (en) Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
US5829025A (en) Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US6434669B1 (en) Method of cache management to dynamically update information-type dependent cache policies
US6470422B2 (en) Buffer memory management in a system having multiple execution entities
US5974508A (en) Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
US8250332B2 (en) Partitioned replacement for cache memory
US7493451B2 (en) Prefetch unit
US7461209B2 (en) Transient cache storage with discard function for disposable data
US7389402B2 (en) Microprocessor including a configurable translation lookaside buffer
US6425058B1 (en) Cache management mechanism to enable information-type dependent cache policies
US7136967B2 (en) Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US20080189487A1 (en) Control of cache transactions
US6434668B1 (en) Method of cache management to store information in particular regions of the cache according to information-type
KR101083192B1 (ko) 정상 할당으로부터의 간섭이 없는 캐시 로킹
US8266379B2 (en) Multithreaded processor with multiple caches
US6785797B2 (en) Address predicting apparatus and methods
JP2011141754A (ja) キャッシュメモリ
CN111373385A (zh) 用于改进的进程切换的处理器和其方法
Dandamudi Cache Memory
Omondi et al. High-Performance Memory Systems

Legal Events

Date Code Title Description
A107 Divisional application of patent
WITB Written withdrawal of application