KR101483931B1 - 캐시 로킹 디바이스 및 그 방법들 - Google Patents

캐시 로킹 디바이스 및 그 방법들 Download PDF

Info

Publication number
KR101483931B1
KR101483931B1 KR1020107002280A KR20107002280A KR101483931B1 KR 101483931 B1 KR101483931 B1 KR 101483931B1 KR 1020107002280 A KR1020107002280 A KR 1020107002280A KR 20107002280 A KR20107002280 A KR 20107002280A KR 101483931 B1 KR101483931 B1 KR 101483931B1
Authority
KR
South Korea
Prior art keywords
cache
cache line
state
data
bus
Prior art date
Application number
KR1020107002280A
Other languages
English (en)
Other versions
KR20100053540A (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 KR20100053540A publication Critical patent/KR20100053540A/ko
Application granted granted Critical
Publication of KR101483931B1 publication Critical patent/KR101483931B1/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/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means

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

캐시의 캐시 라인을 로킹하기 위한 방법 및 디바이스가 개시된다. 이 방법은 캐시 라인에 대응하는 캐시(104)의 외부의 메모리 위치(134)가 처리기(120) 또는 다른 데이터 액세스 모듈에 의한 액세스 요청과 연관된다는 표시를 수신하는 것에 응답하여, 유효한 로킹된 상태에서 무효한 로킹된 상태(508)로 캐시 라인의 상태를 자동으로 변경하는 단계를 포함한다. 따라서, 캐시 라인의 로킹된 상태는 로킹된 캐시 라인의 데이터가 무효하게 된 후에도 유지된다. 유효한 로킹된 상태를 유지함으로써, 캐시 라인은 캐시에 의한 재할당이 이용 가능하지 않다. 이것은, 캐시 라인의 무효로 인해 로크가 손상되었는지의 여부를 주기적으로 결정하기 위한 부가의 소프트웨어 오버헤드 없이, 로킹된 캐시 라인이 로킹된 상태로 남아 있기 위해 무효로 되도록 허용한다.

Description

캐시 로킹 디바이스 및 그 방법들{Cache locking device and methods thereof}
본 개시내용은 처리 디바이스들에 관한 것이며, 특히, 처리 디바이스들에 대한 캐시들에 관한 것이다.
처리 디바이스들은 처리기에 일시적이고 신속한 액세스 저장 위치를 제공하기 위해 하나 이상의 캐시들을 종종 이용한다. 처리기에서 실행되는 저장 명령에 응답하여, 캐시는 캐시의 캐시 라인이 저장 어드레스와 이미 연관되어 있는지의 여부를 결정한다. 캐시 적중(cache hit)의 경우, 캐시는 저장 어드레스와 연관된 캐시 라인에 데이터를 저장한다. 유효한 데이터를 포함하는 저장 어드레스와 연관된 캐시 라인이 없다면, 캐시 부적중(cache miss)이 발생한다. 캐시 부적중의 경우, 캐시는 캐시의 최근 사용이 가장 적은(LRU: least recently used) 캐시 라인을 식별함으로써, 저장 데이터를 저장할 캐시 라인을 결정한다. LRU 캐시 라인에 저장된 데이터는 저장되는 데이터로 대체되고, 캐시 라인의 태그는 저장 어드레스와 연관된다. 캐시 라인에 임계 데이터를 보존하기 위하여, 처리기의 루틴 또는 소프트웨어 프로그램은 캐시 라인을 로킹하도록 캐시에 명령할 수 있고, 그에 의해 캐시 라인이 특정 메모리 어드레스와 연관되게 하여, 로킹된 캐시 라인이 다른 메모리 어드레스와 연관된 데이터에 의해 캐시에서 대체되지 않을 것을 보장한다.
데이터를 저장하는 것 외에도, 캐시는 외부 메모리를 구비한 캐시 및 처리 시스템의 다른 캐시들에서 데이터의 일관성(coherency)을 유지하기 위하여 각 캐시 라인마다 일관성 상태 정보를 저장할 수 있다. 예를 들면, 캐시 라인과 연관된 유효한 비트는, 캐시 라인과 연관된 메모리 어드레스가 캐시의 외부의 메모리 위치에 액세스하기 위해 요청되었다는 표시를 수신하는 것에 응답하여 무효로 될 수 있다. 캐시 라인과 연관된 메모리 어드레스에 대한 외부 메모리 액세스에 응답하여, 현재 처리 디바이스들은 캐시 라인을 자동으로 언로킹된 상태로 둘 것이고, 그에 의해 임의의 어드레스로부터 데이터를 저장하기 위해 캐시 라인이 할당되도록 허용한다.
따라서, 무효로 되는 캐시 라인의 로킹된 상태를 유지하기 위하여, 소프트웨어 프로그램 또는 루틴은 로킹된 캐시 라인을 모니터링하고 그것이 무효로 되면 캐시 라인을 다시 로킹해야 한다. 이것은 소프트웨어 프로그램의 규모를 증가시켜 효율성을 감소한다. 따라서, 새로운 처리 디바이스가 필요하다.
캐시의 캐시 라인을 로킹하기 위한 방법 및 디바이스가 개시된다. 본 방법은, 캐시 라인에 대응하는 캐시의 외부의 메모리 위치가 처리기 또는 다른 데이터 액세스 모듈에 의한 액세스 요청과 연관된다는 표시를 수신하는 것에 응답하여, 유효한 로킹된 상태에서 무효한 로킹된 상태로 캐시 라인의 상태를 자동으로 변경하는 단계를 포함한다. 따라서, 로킹된 캐시 라인의 데이터가 무효로 된 후에도, 캐시 라인의 로킹된 상태가 유지된다. 무효한 로킹된 상태를 유지함으로써, 캐시 라인은 캐시에 의한 재할당이 이용 가능하지 않다. 이것은, 캐시 라인의 무효로 인해 로크가 손상되었는지의 여부를 주기적으로 결정하기 위한 부가적인 소프트웨어 오버헤드 없이, 로킹된 캐시 라인이 로킹된 상태로 남아 있기 위해 무효로 되도록 허용한다.
도 1은 처리 디바이스(100)의 특정 실시예의 블록도.
도 2는 처리 디바이스(100)의 일부의 특정 실시예의 블록도.
도 3은 도 1의 캐시의 특정 실시예의 블록도.
도 4는 도 1의 캐시에 대한 가능한 상태들의 특정 실시예의 도면.
도 5는 도 1의 캐시의 캐시 라인에 대한 가능한 상태들 사이의 변경들을 도시한 특정 실시예의 블록도.
도 6은 캐시에 데이터를 로드하고 저장하는 방법의 특정 실시예의 흐름도.
도 1을 참조하면, 특정 실시예의 디바이스(100)가 도시된다. 디바이스(100)는 처리기(102), 캐시(104), 일관성 제어 모듈(coherency control module; 110), 전면 캐시(frontside cache; 112), 처리기(120), 메모리 제어기(130), I/O 제어기(132) 및 메모리(134)를 포함한다. 디바이스(100)는 또한, 버스(103), 전면 버스(105) 및 I/O 버스(107)를 포함한다. 처리기(102)는 버스(103)를 통해 캐시(104)에 액세스한다. 처리기(102), 일관성 제어 모듈(110) 및 처리기(120)는 전면 버스(105)를 통해 서로 접속된다. 일관성 제어 모듈(110), 메모리 제어기(130) 및 I/O 제어기(132)는 I/O 버스(107)를 통해 서로 접속된다. 메모리 제어기(130)는 메모리(134)에 접속된다. 도 1에 도시된 모듈들의 다른 구성들이 가능함을 알 것이다. 예를 들면, 특정 실시예에서, 모든 모듈들은 공동 버스 또는 크로스바 스위치에 접속된다.
처리기(102)는 마이크로프로세서, 마이크로콘트롤러 등과 같은 처리기가 될 수 있다. 유사하게, 처리기(120)는 마이크로프로세서, 제어기, 마이크로콘트롤러 등과 같은 처리기가 될 수 있다.
캐시(104)는 데이터 캐시, 명령 캐시, 단일 캐시 등이 될 수 있다. 특정 실시예에서, 캐시(104)는 8-방식 세트 연관 캐시이다. 캐시(104)는 버스(103)를 통해 액세스되고, 처리기(102)에서 실행되는 명령들과 연관된 데이터를 저장한다.
캐시(104)는 다수의 캐시 라인들을 포함하며, 각 유효한 캐시 라인은 메모리 어드레스와 연관된다. 그 외에도, 캐시(104)는 각 캐시 라인마다 일관성 상태 정보를 포함하는 상태 정보를 유지한다. 예를 들면, 각 캐시 라인마다, 캐시(104)는 캐시 라인에 저장된 데이터가 유효한지의 여부, 그것이 공유되는 데이터인지의 여부, 데이터가 처리기(102)에 의해 수정되었는지의 여부 등을 표시한다. 상태 정보는 또한, 캐시 라인이 상이한 메모리 어드레스와 연관될 수 있는지의 여부를 나타내기 위하여 각 캐시 라인마다 로킹된 상태를 표시한다. 특정 실시예에서, 캐시(104)는 후기입 캐시(write-back cache)이다. 다른 특정 실시예에서, 캐시(104)는 연속 기입 캐시(write-through cache)이다.
메모리 제어기(130)는 I/O 버스를 통해 메모리 액세스 요청들을 수신하고, 메모리(134), 전면 캐시(112), 또는 외부 메모리가 이들 메모리 요청들에 기초하여 I/O 제어기(132)를 통해 액세스하는 것을 포함하여 메모리에 액세스한다. 특정 실시예에서, 메모리 제어기(130)에 의해 액세스되는 메모리(134)는 패키징 기판 또는 도 1에 도시된 다른 소자들을 구비한 공동 집적 회로 기판과 같은 공동 기판 상에 집적된다. 메모리(134)는 휘발성 또는 비휘발성 메모리가 될 수 있다.
I/O 제어기(132)는 디바이스(100)의 모듈들 사이의 통신들과 외부의 주변 디바이스들(도시되지 않음)과의 통신을 용이하게 하도록 구성된다. 예를 들면, I/O 제어기(132)는 메모리 제어기(130)가 주변 메모리 디바이스들을 액세스하도록 허용할 수 있다. 따라서, I/O 제어기는 디바이스(100)의 모듈들 및 메모리를 포함한 주변 디바이스들 사이의 정보의 통신을 관리한다.
전면 캐시(112)는 데이터 캐시, 명령 캐시, 단일 캐시 등이 될 수 있다. 전면 캐시(112)는, 처리기(102) 및 처리기(120)와 같이 전면 버스(105)에 대한 액세스를 갖는 디바이스(100)의 모듈들에 액세스 가능하다.
일관성 제어 모듈(110)은 전면 버스(105) 및 I/O 버스(107)로부터 일관성 정보를 수신하고, 데이터 일관성이 유지되는 것을 보장하기 위하여 수신된 일관성 정보에 기초하여 일관성 제어 정보를 디바이스(100)의 모듈들에 제공한다.
동작 동안, 처리기(102) 및 처리기(120)는 메모리(134) 및 캐시(112)에 각각 액세스할 수 있다. 예를 들면, 처리기(102)는 메모리 제어기(130)에 메모리 어드레스를 전송함으로써 메모리(134)의 위치를 판독할 수 있다. 응답하여, 메모리 제어기(130)는 메모리(134)로부터 메모리 어드레스와 연관된 데이터를 검색한다. 특정 실시예에서, 메모리 제어기(130)는 캐시(104)의 캐시 라인을 채우기에 충분한 데이터를 검색하고 그 데이터를 처리기(102)에 제공한다. 처리기(102)는 검색된 데이터를 수신하고 이것을 캐시(104)의 캐시 라인에 저장한다. 그 외에도, 캐시(104)는, 검색된 캐시 라인이 데이터가 검색되었던 메모리(134)의 메모리 어드레스와 연관되는 것을 표시하는 메모리 어드레스와 연관된 태그 정보를 저장한다. 처리기(120) 및 처리기(102)는 메모리(134)에 유사하게 액세스하고 전면 캐시(112)에 검색된 데이터를 저장할 수 있다.
일관성 제어 모듈(110)은 메모리(134), 전면 캐시(112), 캐시(104) 및 디바이스(100)의 임의의 다른 메모리들에 대한 액세스 관련 정보를 수신하고, 데이터 일관성을 유지하기 위해, 전면 캐시(112), 캐시(104) 및 다른 메모리들에 일관성 정보를 제공한다. 예를 들면, 캐시(104)의 캐시 라인과 연관된 메모리 어드레스가 외부 처리기 또는 다른 디바이스에 의해 메모리(134)에서 액세스되면, 일관성 제어 모듈(110)은 메모리 액세스를 캐시(104)에 통보한다.
메모리 어드레스와 연관된 메모리 액세스를 캐시(104)에 통보하기 위하여, 일관성(110)은 처리기(102)를 통해 캐시(104)에 일관성 제어 정보를 제공할 수 있다. 이 정보에 기초하여, 메모리 어드레스와 연관된 캐시(104)의 캐시 라인에 대한 일관성 정보의 상태가 유지될 수 있다. 예를 들면, 메모리 어드레스가 액세스를 위해 요청되었음을 표시하는 일관성 제어 정보에 응답하여, 캐시(104)는 캐시 라인에 저장된 데이터가 무효임을 표시하기 위해 메모리 어드레스와 연관된 캐시 라인에 대한 일관성 상태 정보를 변경할 수 있다.
처리기(102)는, 프로그램 또는 동작 시스템의 사용자 명령들에 기초하여 각 캐시 라인의 로크 상태를 설정하기 위한 명령을 실행함으로써 캐시 라인의 로킹된 상태를 제어할 수 있다. 예를 들면, 소프트웨어는 캐시(104)의 특정 캐시 라인을 명시적으로 로킹 또는 언로킹하기 위한 명령을 발행할 수 있다. 로킹된 상태에 있는 캐시 라인들은 처리기(102)에서의 메모리 액세스에 응답하여 캐시(104)에 의한 재할당이 이용 가능하지 않는다. 따라서, 로킹된 캐시 라인은 로킹된 상태에 있는 한 특정 어드레스로 할당된 상태로 남아 있다.
일단 로킹되면, 캐시(104)의 캐시 라인에 대한 로킹된 상태는 일관성 제어 모듈(110)에 의해 개시된 캐시 라인의 일관성 상태의 변경에 응답하여 변하지 않는다. 대신, 로킹된 상태는 처리기(102)에서 명령에 의해 명시적으로 변경될 때까지 캐시(104)에서 유지된다. 따라서, 로킹된 캐시 라인에 대한 일관성 상태가 메모리(134)에서의 메모리 액세스로 인해 유효한 상태에서 무효한 상태로 변경되면, 캐시 라인은 로킹된 상태로 남아 있다. 소프트웨어 개입이 로크를 유지하는데 필요하지 않으므로, 캐시 라인 상에 로크를 자동으로 유지하는 것이 종래 기술을 능가하는 이점이다.
도 2를 참조하면, 처리기(202)(도 1의 처리기(102)에 대응), 버스(203)(도 1의 버스(103)에 대응), 캐시(204)(도 1의 캐시(104)에 대응), 및 캐시 일관성 모듈(210)(도 1의 캐시 일관성 모듈(110)에 대응)의 특정 실시예의 블록도가 도시된다. 처리기(202) 및 캐시(204)는 버스(203)에 각각 접속된다. 캐시 일관성 모듈(210) 및 처리기(202)는 도 1의 전면 버스(105)에 대응하는 전면 버스(205)에 접속된다.
버스(203)는 어드레스 버스(280), 데이터 버스(281), 제어 버스(282)("CTRL") 및 적중/부적중 버스(283)("H/M": hit/miss)를 포함한다. 어드레스 버스(280)는 처리기(202)와 캐시(204) 사이의 어드레스 정보를 통신하고, 데이터 버스(281)는 로드되거나 저장될 데이터를 통신한다. 제어 버스(282)는 제어 정보를 통신하고, 적중/부적중 버스(283)는 처리기(202)와 캐시(204) 사이의 캐시 적중 정보를 통신한다.
처리기(202)는 로드/저장 제어 모듈(220), 메모리 서브시스템(MSS)(222), 및 버스 인터페이스 유닛(BIU)(224)을 포함한다. 로드/저장 제어 모듈(220)은 메모리 서브시스템(222)에 접속되고, 메모리 서브시스템(222)은 처리기(202)의 모듈들에 대한 버스(203)에 대한 인터페이스를 제공하며, 버스 인터페이스 유닛(224)은 처리기(202)의 모듈들에 대한 버스(205)에 대한 인터페이스를 제공한다.
로드/저장 제어 모듈(220)은, 처리기(202)에 대한 로드 및 저장 동작들을 제어하기 위하여 메모리 서브시스템(222)과 통신한다. 메모리 서브시스템(222)은, 필요시, CTRL 버스(282) 및 버스(205)에 제어 정보를 제공함으로써 로드 및 저장 동작들을 실행한다. 메모리 서브시스템(222)은 캐시 일관성 모듈(210)에 및 그로부터 버스 인터페이스 유닛(224)을 통해 일관성 제어 정보를 제공 및 수신한다.
캐시(204)는 어레이 제어 모듈(230), 데이터 어레이(232), 최근 사용이 가장 적은(LRU) 어레이(234), 및 태그/상태 어레이(236)를 포함한다. 데이터 어레이(232)는 캐시(204)에 대한 캐시 라인들을 포함한다. 캐시 라인들은 복수의 캐시 라인 세트들로서 저장되고, 각 캐시 라인 세트는 인덱스라고 칭해지는 메모리 어드레스의 특정 부분과 연관된다. LRU 어레이(234)는 캐시 라인 세트 내의 캐시 라인들이 최근 사용이 가장 적은 것을 표시하는 정보를 저장한다. 특정 실시예에서, LRU 어레이(234)는 의사-LRU로서 구현된다.
태그/상태 어레이(236)는 각 캐시 라인마다 태그 정보 및 일관성 정보를 저장한다. 어레이 제어 모듈(230)은 CTRL 버스(282)를 통해 로드 및 저장 제어 정보를 수신한다. 로드 및 저장 제어 정보에 기초하여, 어레이 제어 모듈은 로드 및 저장 동작들을 실행하기 위해 태그/상태 어레이(236), LRU 어레이(234) 및 데이터 어레이(232)에 액세스한다.
동작 동안, 메모리 서브시스템(222)은 제어 버스(282)를 통해 캐시(204)의 캐시 라인들에 대한 상태 제어 정보를 제공한다. 상태 제어 정보는, 캐시 일관성 모듈(210)로부터 수신된 일관성 정보에 기초할 수 있거나, 또는 캐시(204)의 위치가 로킹되어야 하는 것을 명시적으로 표시하는 명령들 및 로드/저장 명령들과 같은 로드/저장 모듈(220)에 의해 처리되는 명령들에 기초할 수 있다. 제어 정보에 기초하여, 어레이 제어 모듈(230)은 태그/상태 어레이(236)에서 연관된 캐시 라인들에 대한 상태 정보를 변경한다.
로드/저장 모듈(220)은, 처리기(202)에서 실행되는 소프트웨어 프로그램들 또는 루틴들에 의해 제공되는 로드 및 저장 명령들을 실행하기 위하여 메모리 서브시스템(222)과 인터페이싱한다. 로드 명령을 실행하기 위하여, 메모리 서브시스템(222)은 어드레스 버스(283)를 통해 캐시(204)에 어드레스를 제공한다. 어드레스를 수신하는 것에 응답하여, 어레이 제어 모듈(230)은 태그/상태 어레이(236)에 대한 어드레스에 기초하여, 인덱스 값을 제공하며, 태그/상태 어레이(236)는 인덱스에 대응하는 캐시 라인 세트의 캐시 라인들과 연관된 상태 정보 및 태그값들의 세트를 제공한다. 수신된 태그 및 상태값들에 기초하여, 어레이 제어 모듈(230)은 캐시 라인이 어드레스에 할당되었는지의 여부와, 캐시 라인이 유효한 데이터를 저장하는지의 여부를 결정한다. 유효한 데이터를 저장하는 캐시 라인이 어드레스(즉, 캐시 적중)에 할당되었으면, 어레이 제어 모듈(230)은 적중/부적중 버스(283) 상에 적중을 표시하고 데이터 어레이(232)로부터 요청된 데이터를 검색한다. 검색된 데이터는 데이터 버스(281)를 통해 처리기(202)에 제공된다.
태그/상태 어레이(236)가 제공된 어드레스와 연관된 데이터 어레이(232)에 캐시 라인이 없다고 표시하거나, 무효한 데이터를 가진 제공된 어드레스와 연관된 데이터 어레이(232)에 캐시 라인이 있다면, 캐시 부적중이 로드 명령에 대해 발생한다. 캐시 부적중의 경우, 어레이 제어 모듈(230)은 적중/부적중 버스(283) 상에 부적중을 표시하여, 요청된 데이터가 메모리로부터 검색되어야 하는 것을 메모리 서브시스템(222)에 통보한다. 캐시 부적중에 응답하여, 메모리 서브시스템(222)은 어디서라도 요청된 데이터를 검색하고, 데이터가 수신될 때 저장 동작을 실행함으로써 캐시(204)에 저장한다.
캐시 부적중의 경우 데이터를 검색한 후에 또는 로드/저장 제어 모듈(220)에 명령을 저장하는 것에 응답하여 저장 동작을 실행하기 위하여, 메모리 서브시스템은 어드레스 버스(280)를 통해 캐시(204)에 저장될 데이터와 연관된 어드레스를 제공한다. 저장될 데이터는 데이터 버스(281)를 통해 제공된다. 데이터를 저장하기 위하여, 어레이 제어 모듈(230)은 데이터 어레이(232)에 유효한 또는 로킹된 캐시 라인이 수신된 어드레스에 이미 할당되었는지를 결정하기 위해 태그/상태 어레이에 액세스한다. 그러하다면, 어레이 제어 모듈(230)은 캐시 적중을 유발할 때 액세스를 다루고, 태그/상태 어레이(236)에 의해 표시된 데이터 어레이(232)에서의 캐시 라인에 수신된 데이터를 저장한다. 어드레스와 이미 연관된 데이터 어레이(232)에 캐시 라인이 없다면, 어레이 제어 모듈(230)은 데이터를 저장할 데이터 어레이(232)에서의 캐시 라인을 결정하기 위해 LRU 어레이(234)를 저장한다.
메모리 어드레스를 명시적으로 로킹하는 명령의 실행에 응답하여, 로드/저장 제어 모듈(220)은, 메모리 어드레스와 연관된 캐시 라인이 로킹되어야 하는 것을 메모리 서브시스템(222)에 표시할 수 있다. 캐시 라인을 로킹하기 위하여, 메모리 서브시스템(222)은 CTRL 버스(282)를 통해 제어 정보를, 그리고 어드레스 버스(280)를 통해 메모리 어드레스를 전송한다. 메모리 어드레스를 수신하는 것에 응답하여, 어레이 제어 모듈(230)은 데이터 어레이(232)의 캐시 라인이 메모리 어드레스와 연관되는지의 여부를 결정한다. 그러하다면, 어레이 제어 모듈은 캐시 라인이 로킹되었음을 표시하기 위하여 태그/상태 어레이(236)에 저장된 캐시 라인과 연관된 상태 정보의 상태를 설정한다. 도 4에서 논의되는 전용 로크 비트와 같은 로크 상태 표시자는 태그/상태 어레이(236)에서 캐시 라인의 고정된 상태를 표시할 수 있다.
캐시 라인이 로킹될 메모리 어드레스와 연관되지 않으면, 어레이 제어 모듈(230)은 캐시(204) 이외의 위치로부터 메모리 어드레스와 연관된 데이터를 검색하기 위한 요청을 메모리 서브시스템(222)에 전송한다. 데이터가 검색되어 데이터 어레이(232)의 캐시 라인에 저장된 후에, 어레이 제어 모듈(230)은 캐시 라인이 로킹되었음을 표시하기 위하여 캐시 라인과 연관된 상태 정보의 상태를 설정한다.
로킹된 캐시 위치들은 저장 동작들 동안 다른 메모리 위치들과의 연관을 위해 LRU 어레이(234)에 의해 식별되기에 바람직하지 않을 수 있다. 그 외에도, 캐시 위치에 대한 로킹된 상태는, 태그/상태 어레이(236)가 그 위치의 데이터가 무효인 것을 표시하는 경우에도, 태그/상태 어레이(236)에 유지된다. 따라서, 로킹된 캐시 라인은 로드/저장 제어 모듈(220)에서 명령에 의해 명시적으로 언로킹될 때까지 로킹된 상태로 남아 있다.
도 3을 참조하면, 도 2의 캐시(204)의 특정 구현에 대응하는 캐시(304)의 특정 실시예의 블록도가 도시된다. 캐시(304)는 어레이 제어 모듈(330), 데이터 어레이(332), 최근 사용이 가장 적은(LRU) 어레이(334), 및 태그/상태 어레이(336)를 포함한다. 어레이 제어 모듈(330)은 진로 계산 모듈(way calculation module; 340), 태그 비교 모듈(342) 및 인덱스 생성 모듈(344)을 포함한다. 진로 계산 모듈(340)은 적중/부적중(H/M) 버스(383)에 접속된 입력, 버스(396)(T)에 접속된 입력, 버스(382)(CTRL)에 접속된 입력, 버스(398)(WAY_T)에 접속된 입력, 및 버스(393)(LRU)에 접속된 입력을 포함한다. 진로 계산 모듈(340)은 또한 버스(394)(WAY)에 접속된 출력을 포함한다.
태그 비교 모듈(342)은 버스(395)(TAG)에 접속된 입력 및 버스(392)(STATUS/TAGX8)에 접속된 입력을 포함한다. 태그 비교 모듈(342)은 또한 H/M 버스(383)에 접속된 출력, T 버스(396)에 접속된 출력, 및 WAY_T 버스(398)에 접속된 출력을 포함한다. 인덱스 생성 모듈(344)은 버스(380)(ADDRESS)에 접속된 입력, 및 버스(382)(CTRL)에 접속된 입력을 포함한다. 인덱스 생성 모듈(344)은 또한, 버스(391)(INDEX)에 접속된 출력, 및 TAG 버스(395)에 접속된 출력을 포함한다.
데이터 어레이(332)는 WAY 버스(394)에 접속된 입력 및 INDEX 버스(391)에 접속된 입력을 포함한다. 데이터 어레이(332)는 또한, 버스(381)(DATA)로의 입력/출력 접속을 포함한다. LRU 어레이(334)는 INDEX 버스(391)에 접속된 입력 및 LRU 버스(393)에 접속된 출력을 포함한다.
태그/상태 어레이(336)는 INDEX 버스(391)에 접속된 입력, CTRL 버스(382)에 접속된 입력, 및 STATUS/TAGX8 버스(392)에 접속된 출력을 포함한다. 태그/상태 어레이(336)는, 특정 캐시 라인에 대한 태그 정보 및 상태 정보를 표현하는 태그/상태 정보(350)와 같은 태그/상태 정보를 저장한다. 태그/상태 정보(350)는 태그 정보(352), 유효 정보(354), 수정된 정보(356), 공유된 정보(358), 및 로킹된 정보(360)를 포함한다.
태그/상태 어레이(336)의 상태 정보는 일관성 정보에 기초하여, 또는 처리기에서 실행된 명령에 기초하여, CTRL 버스(382) 상에 제공된 제어 정보에 의해 변경될 수 있다. 예를 들면, 일관성 제어 모듈(210)(도 2)은 CTRL 버스(382)를 통해, 태그 정보(350)와 연관된 캐시 라인이 무효인 것을 나타내기 위하여 유효한 정보(354)의 상태가 설정되어야 하는 것을 표시할 수 있다. 유사하게, 로드/저장 제어 모듈(220)(도 2)에서 실행된 명령은 CTRL 버스(382)를 통해 로킹된 정보(360)의 상태를 명시적으로 설정할 수 있다.
인덱스 생성 모듈(344)은 ADDRESS 버스(380) 상에 제공된 어드레스를 디코딩한다. 어드레스에 기초하여, 인덱스 생성 모듈(344)은 TAG 버스(395) 상의 태그와 INDEX 버스(391) 상의 인덱스를 제공한다. 인덱스 생성 모듈(344)은 또한, 수신된 어드레스가 로드 또는 저장 동작과 연관되는지의 여부를 표시하는 정보를 포함하여 제어 정보를 CTRL 버스(382)를 통해 수신한다. 인덱스 생성 모듈은 TAG 버스(395)를 통해 이러한 제어 정보를 제공할 수 있다.
태그/상태 어레이(336)는 INDEX 버스(391)를 통해 인덱스 정보를 수신한다. 인덱스 정보에 기초하여, 태그/상태 어레이(336)는 STATUS/TAGX8 버스(392)를 통해 인덱스 정보와 연관된 각 캐시 라인마다 태그 정보 및 상태 정보를 제공한다. 특정 실시예에서, 캐시(304)는 8-방식 연관 캐시이고, 따라서, 8개 세트의 태그 및 상태 정보가 STATUS/TAGX8 버스(392)를 통해 제공된다.
태그 비교 모듈(342)은, 캐시 적중 또는 캐시 부적중이 있는지를 결정하기 위하여, TAG 버스(395)를 통해 수신된 태그 정보를 STATUS/TAGX8 버스(392)를 통해 수신된 태그 정보와 비교한다. 태그 비교 모듈(342)은, H/M 버스(383)를 통해 캐시 적중 또는 캐시 부적중을 표시한다. 그 외에도, 캐시 적중의 경우, 태그 비교 모듈(342)은 WAY_T 버스(398)를 통해 적중 태그와 연관된 캐시 라인을 표시하는 정보를 제공한다. 그 외에도, 태그 비교 모듈(342)은, 적중 태그와 연관된 수신된 상태 정보에 기초하여 캐시 적중과 연관된 캐시 라인이 무효하고 로킹된 캐시 라인인지의 여부를 결정하고, T 버스(396)를 통해 캐시 라인의 무효하고 로킹된 상태를 표시하는 정보를 제공한다.
LRU 어레이(334)는 INDEX 버스(391)를 통해 제공된 인덱스를 수신한다. 수신된 인덱스에 기초하여, LRU 어레이(334)는 그 인덱스와 연관된 최근 사용이 가장 적은 캐시 라인을 결정하고, LRU 버스(393)를 통해 캐시 라인을 표시한다. 특정 실시예에서, LRU 어레이(334)는 최근 사용이 가장 적은 캐시 라인을 결정하기 위하여 의사-LRU 절차를 이용한다.
진로 계산 모듈(340)은, 로드 또는 저장 동작이 수행되고 있는지의 여부를 표시하는 CTRL 버스(382) 상의 정보와 로드 또는 저장 동작이 캐시 적중 또는 캐시 부적중을 유발했는지를 표시하는 H/M 버스(383) 상의 정보를 수신한다. 캐시 적중의 경우, 진로 계산 모듈(340)은, 로드되거나 저장되어야 하는 캐시 라인을 결정하기 위하여 WAY_T 버스(398)를 통해 수신되는 캐시 라인 정보에 액세스한다. 저장 동작을 위한 캐시 부적중의 경우, 진로 계산 모듈(340)은 저장되어야 하는 캐시 라인을 결정하기 위하여 LRU 버스(393)를 통해 제공된 정보를 액세스한다. 진로 계산 모듈(340)은 H/M 버스(383)에 의해 제공된 적중/부적중 정보, CTRL 버스(382)에 의해 제공된 로드/저장 정보 및 T 버스(396)에 의해 제공된 유효한 로킹된 정보에 기초하여 캐시 라인을 선택한다.
예를 들면, 수신된 정보가 로드 동작 및 캐시 적중을 표시한다면, 진로 계산 모듈(340)은 WAY_T 버스(398)를 통해 제공된 캐시 라인 정보를 선택한다. 수신된 정보가 로드 동작 및 캐시 부적중을 표시하면, 진로 계산 모듈(340)은, 요청된 데이터가 캐시에 저장되지 않고 메모리로부터 검색되어야 하므로, 캐시 라인 정보를 선택하지 않는다.
수신된 정보가 저장 동작, 캐시 부적중을 표시하고, T 버스(396)가 무효하고 로킹된 캐시 라인이 수신된 어드레스와 연관되지 않음을 표시한다면, 진로 계산 모듈(340)은 LRU 버스(393)를 통해 제공된 캐시 라인 정보를 선택한다. 수신된 정보가 저장 동작, 캐시 부적중을 표시하고, T 버스(396)가 무효한 로킹된 진로가 수신된 어드레스와 연관됨을 표시한다면, 진로 계산 모듈(342)은 WAY_T 버스(398)를 통해 제공된 캐시 라인 정보를 선택한다. 수신된 정보가 캐시 적중을 표시하면, 진로 계산 모듈(342)은 WAY_T 버스(398)를 통해 제공된 캐시 라인 정보를 선택한다.
데이터 어레이(332)는 로드 또는 저장 동작이 수행되고 있는지를 표시하는 정보와 함께 WAY 버스(394)를 통해 캐시 라인 정보를 수신한다. 로드 동작의 경우, 데이터 어레이(332)는 DATA 버스(381) 상의 표시된 캐시 라인에 저장된 데이터를 제공한다. 저장 동작의 경우, 데이터 어레이(332)는 표시된 캐시 라인에서 DATA 버스(381) 상에 제공된 데이터를 저장한다.
캐시 라인에 대한 상태 비트들은 캐시 라인이 어레이 제어 모듈(330)에 의해 다루어지는 방법을 결정하는데 이용될 수 있다. 예를 들면, 도 4를 참조하면, 유효한(V), 수정된(M), 공유된(S) 및 로킹된(L) 캐시 상태 비트들이 테이블(400)의 컬럼들(401 내지 404)에 나열된다. 예시된 바와 같이, 상태 비트값들의 세트가 본 명세서에 이용된 바와 같이 하나 이상의 상태 용어에 대응할 수 있음을 알 것이다. 예를 들면, 테이블(400)의 로우(410)에 예시된 상태 비트값들을 갖는 캐시 라인은 유효한 상태, 수정된 상태, 공유된 상태, 및 언로킹된 상태와, 이들의 조합들에 있는 것이라 칭해질 수 있다. 유사하게, 테이블(400)의 로우(412)에 예시된 상태 비트값들을 갖는 캐시 라인은 무효한 상태, 비수정된 상태, 독점된 상태, 및 로킹된 상태에 있는 것이라 칭해질 수 있다. 따라서, 상태 비트 상태들의 특정 세트에 기초하여, 캐시 라인은 컬럼(405)에 표시된 바와 같은 유효한 및 언로킹된(유효한/언로킹된) 상태, 컬럼(406)에 표시된 바와 같은 유효한 및 로킹된(유효한/로킹된) 상태, 컬럼(407)에 표시된 바와 같은 무효한 및 언로킹된(무효한/언로킹된) 상태, 컬럼(408)에 표시된 바와 같은 무효한 및 로킹된(무효한/로킹된) 상태에 있는 것이라 칭해질 수 있음을 알 것이다. 테이블에 기재된 모든 상태 세트가 모든 일관성 방식들에 대해 유효하지 않을 수 있음을 알 것이다.
캐시 라인에 대한 상태는 캐시가 캐시 라인을 다루는 방법을 결정하는데 이용될 수 있다. 예를 들면, 캐시 라인의 상태가 컬럼(408)에 표시된 바와 같이 무효하고 로킹되면, 캐시는 캐시 라인이 상이한 메모리 어드레스와 연관된 데이터에 의해 대체되는 것을 방지할 수 있고, 그에 의해 캐시 라인의 로킹된 상태를 방지할 수 있다.
도 5로 돌아가서, 캐시에서 캐시 라인에 대한 가능한 상태들의 특정 실시예를 묘사하는 상태도(500)가 도시된다. 상태도(500)는 캐시 라인에 대한 4개의 특정 상태들을 예시한다: 할당되지 않은 상태(502), 유효한/로킹된 상태(504), 무효한/로킹된 상태(506), 및 유효한/로킹된 상태(508). 예시된 바와 같이, 캐시 라인은 리셋 동작 후에 캐시 라인이 메모리 어드레스에 할당되지 않았음을 표시하는 할당되지 않은 상태(502)에서 시작할 수 있다. 할당되지 않은 상태는 또한, 캐시 라인이 무효한/언로킹된 상태에 있는 상태에 대응할 수 있다.
할당되지 않은 상태(502)에서, 캐시 라인이 로드 또는 저장 동작에 의해 메모리 어드레스에 할당된다면, 캐시 라인의 상태는 유효한/언로킹된 상태(504)로 이동하고, 예를 들면, 캐시 라인에 대한 유효한 비트(V)가 표명되고(assert) 캐시 라인에 대한 로크 비트가 무시된다. 할당되지 않은 상태(502)에서, 소프트웨어 로크 명령이 수신되면, 캐시 라인은 메모리 어드레스에 할당되고, 메모리 어드레스와 연관된 데이터는 캐시 이외의 메모리로부터 검색되어 캐시 라인에 저장되고, 캐시 라인의 상태는 유효한/로킹된 상태(508)로 설정되고, 예를 들면, 캐시 라인에 대한 유효한 비트(V) 및 로크 비트(L)가 둘다 표명된다. 대안적인 실시예(도시되지 않음)에서, 데이터는 소프트웨어 로크에 응답하여 검색되지 않고, 캐시 라인의 상태는 무효한/로킹된 상태(506)로 설정되고, 예를 들면, 캐시 라인에 대한 유효한 비트(V)가 무시되고, 캐시 라인에 대한 로크 비트(L)가 표명된다.
유효한/언로킹된 상태(504)에서, 외부 모듈에 의해 또는 무효한 소프트웨어 명령에 의해 메모리 어드레스와 연관된 데이터의 액세스로 인해서와 같이, 무효 표시가 수신되면, 캐시 라인의 상태는 무효한/언로킹된 상태(502)로 설정되고, 예를 들면, 캐시 라인에 대한 유효한 비트(V)는 무시된다. 유효한/언로킹된 상태(504)에서, 소프트웨어 로크 명령이 수신되면, 캐시 라인의 상태는 유효한/로킹된 상태(508)로 설정되고, 예를 들면 캐시 라인에 대한 로크 비트(L)가 표명된다.
유효한/로킹된 상태(508)에서, 메모리 어드레스를 언로킹하는 소프트웨어 명령이 수신되면, 캐시 라인의 상태는 유효한/언로킹된 상태(504)로 설정되고, 예를 들면 캐시 라인에 대한 로크 비트(L)가 무시된다. 유효한/로킹된 상태(508)에서, 외부 모듈 또는 무효한 소프트웨어 명령에 의해 메모리 어드레스와 연관된 데이터에 대한 액세스와 같은 무효 이벤트가 표시되면, 캐시 라인의 상태는 무효한 로킹된 상태(506)로 설정되고, 예를 들면 캐시 라인에 대한 유효 비트(V)가 무시된다.
무효한/로킹된 상태(506)에서, 로드/저장 동작이 수신되면, 캐시 라인의 상태는 유효한/로킹된 상태로 설정되고, 예를 들면 캐시 라인에 대한 유효한 비트(V)가 표명된다. 무효한/로킹된 상태(506)에서, 캐시 라인을 언로킹하는 소프트웨어 명령이 수신되면, 캐시 라인의 상태는 무효한/언로킹된 상태(502)로 설정되고, 예를 들면 캐시 라인에 대한 로크 비트(L)가 무시된다.
도 6을 참조하면, 캐시 액세스를 처리하는 방법의 특정 실시예의 흐름도가 도시된다. 블록(602)에서, 캐시 액세스가 로드 또는 저장 동작인지가 결정된다. 로드 동작의 경우, 그 방법은 블록(604)으로 이동하고, 로드 동작이 캐시 적중 또는 캐시 부적중을 유발하는지가 결정된다. 캐시 적중의 경우, 그 방법은 블록(606)으로 진행하고, 캐시 적중이 발생하는 캐시 라인으로부터 데이터가 제공되고, 그 방법은 블록(624)으로 진행하고 예시된 방법은 종료된다.
블록(604)에서, 캐시 부적중이 결정되면, 그 방법은 블록(608)으로 이동하고, 캐시 이외의 메모리로부터 데이터가 검색된다. 데이터가 검색되면, 그 방법은 블록(610)으로 진행하여, 검색된 데이터가 캐시에 저장될 수 있다.
블록(602)으로 돌아가서, 캐시 액세스가 저장 동작이라고 결정되면, 그 방법은 블록(610)으로 이동하고, 저장 동작과 연관된 어드레스가 캐시 적중, 캐시 부적중 또는 캐시 스테일 적중(cache stale hit)을 유발하는지가 결정된다. 캐시 스테일 적중은 저장 동작과 연관된 어드레스에 대응하는 로킹된 캐시 라인이 있지만, 로킹된 캐시 라인은 무효한 데이터를 저장함을 표시한다.
캐시 적중의 경우, 그 방법은 블록(620)으로 이동하고, 캐시 적중과 연관된 캐시 라인이 결정된다. 그 방법은 블록(622)으로 이동하고, 저장된 것과 연관된 데이터가 캐시 라인에 저장된다. 그 방법은 블록(624)으로 진행하고, 그 방법은 종료된다.
블록(610)으로 돌아가서, 캐시 액세스가 스테일 적중을 유발한다면, 그 방법은 블록(618)으로 이동하고, 어드레스와 연관된 무효한/로킹된 캐시 라인이 결정된다. 그 방법은 데이터가 캐시 라인에 저장되는 블록(622)으로 진행한다.
블록(610)에서, 캐시 부적중이 결정되면, 그 방법은 블록(612)으로 이동하고, 한 세트의 캐시 라인이 최근 사용이 가장 적은(LRU) 것에 기초하여 캐시 라인이 결정된다. 블록(622)에서, 캐시 액세스와 연관된 데이터는 결정된 캐시 라인에 저장된다.
따라서, 예시된 방법은, 캐시 라인과 연관된 데이터가 무효한 경우에도 캐시 라인의 로킹된 상태가 유지되도록 허용한다. 이것은 데이터가 무효로 될 때 이전에 로킹된 캐시 라인들을 다시 로킹하기 위한 소프트웨어의 필요성을 감소시키고, 그에 의해 소프트웨어 효율성을 개선한다.
이 문서에서, "제 1" 및 "제 2" 등과 같은 관계 용어들은 그러한 엔티티들 또는 동작들 사이의 임의의 실제 관계 또는 순서를 요구하거나 내포할 필요 없이, 한 엔티티 또는 동작을 다른 엔티티 또는 동작으로부터 구별하는데만 전적으로 이용될 수 있다. 용어들 "포함하다(comprises)", "포함하는(comprising)" 또는 임의의 다른 그 파생어는 배타적이지 않은 포함을 커버하도록 의도되어, 요소들의 리스트를 포함하는 처리, 방법, 물품 또는 장치가 그들 요소들만을 포함하는 것이 아니라, 그러한 처리, 방법, 물품 또는 장치에 명시적으로 나열되거나 고유한 것이 아닌 다른 요소들을 포함할 수 있다. "....를 포함하는"의 전제 요소는 더 많은 제약들 없이는, 요소를 포함하는 처리, 방법, 물품 또는 장치에 부가의 동일한 요소들의 존재를 배제하지 않는다. 용어 "또는"은 "또는" 조건의 두 조건들이 만족되면 조건이 만족되도록 총괄적인 "또는"을 커버하도록 의도된다. 용어 "범위"는 단일값만을 포함하는 범위를 포함할 수 있다.
본 명세서에 이용된 용어 "다른(another)"은 적어도 제 2 이상인 것으로 규정된다. 본 명세서에 이용된 용어들 "포함하는(including)", "갖는(having)" 또는 그 파생어는 포함하는(comprising) 것으로 규정된다. 전기-과학 기술을 참조하여 본 명세서에 이용된 용어 "결합된(coupled)"은 직접적일 필요는 없고 기계적일 필요도 없지만, 접속되는 것으로 규정된다.
용어들 "표명하다(assert)" 또는 "설정하다(set)" 및 "무시하다(negate)" (또는 "비표명하다(deassert)" 또는 "클리어하다(clear)")는 신호, 상태 비트 또는 유사한 장치를 논리적으로 참 또는 논리적으로 거짓 상태로 각각 렌더링하는 것을 의미할 때 이용된다. 논리적으로 참 상태가 논리 레벨 1이면, 논리적으로 거짓 상태는 논리 레벨 0이다. 그리고, 논리적으로 참 상태가 논리 레벨 0이면, 논리적으로 거짓 상태는 논리 레벨 1이다.
본 명세서에 이용된 바와 같이, 용어 "버스"는, 데이터, 어드레스, 제어 또는 상태와 같은 하나 이상의 다양한 형태의 정보를 전송하는데 이용될 수 있는 복수의 신호들 또는 도전체들을 의미하는데 이용된다. 본 명세서에 개시된 도전체들은, 단일 도전체, 복수의 도전체들, 단방향 도전체들 또는 양방향 도전체들인 것에 대해 예시되거나 기술될 수 있다. 그러나, 상이한 실시예들은 도전체들의 구현을 변경할 수 있다. 예를 들면, 양방향 도전체들보다는 별도의 단방향 도전체들이 이용될 수 있고 그 반대로도 가능하다. 또한, 복수의 도전체들은, 연속으로 또는 시간 다중화된 방식으로 다수의 신호들을 전송하는 단일 도전체로 대체될 수 있다. 마찬가지로, 다중 신호들을 전달하는 단일 도전체들은 이들 신호들의 서브세트들을 전달하는 다양한 상이한 도전체들로 분리될 수 있다. 따라서, 신호들을 전송하기 위한 많은 옵션들이 존재한다.
개시내용의 다른 실시예들, 이용들 및 이점들은 본 명세서에 개시된 개시내용의 명세 및 실시를 고려함으로써 본 기술분야의 통상의 지식을 가진 기술자에게 명백할 것이다. 예를 들면, 캐시의 저장 동작이 캐시 라인에 직접 데이터를 기록하는 것으로 기재되었지만, 다른 캐시들은 그 캐시로부터 캐시 라인을 판독하고, 저장될 데이터로 캐시 라인을 수정하고, 수정된 캐시 라인을 캐시에 기록함으로써 저장 동작을 수행할 수 있다. 따라서, 명세 및 도면들은 단지 예시적인 것으로 간주되어야 하고, 따라서 개시내용의 범위는 다음의 특허청구범위 및 그 등가에 의해서만 제한되는 것으로 의도된다.
134; 메모리
130; 메모리 제어기
132; I/O 제어기
110; 일관성 제어 모듈
112; 전면 캐시
120; 처리기
102; 처리기
104; 캐시

Claims (20)

  1. 캐시의 캐시 라인이 상기 캐시 라인에 대응하는 상기 캐시의 외부의 제 1 메모리 위치가 액세스 요청과 연관되는 제 1 상태에 있을 때 제 1 표시를 수신하는 단계로서, 상기 제 1 상태는 상기 캐시 라인이 유효하고 로킹되었음을 나타내는, 상기 제 1 표시를 수신하는 단계와,
    상기 제 1 표시를 수신하는 것에 응답하여, 상기 제 1 상태에서 상기 캐시 라인의 데이터가 무효하고 로킹되었음을 나타내는 제 2 상태로 상기 캐시 라인의 상태를 자동으로 변경하는 단계를 포함하고, 상기 캐시 라인이 무효하고 로킹되면 상기 캐시 라인은 제 2 메모리 위치에 할당할 수 없는, 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 디바이스에 있어서,
    처리기와,
    상기 처리기에 결합된 캐시를 포함하고, 상기 캐시는,
    캐시 라인을 저장하도록 구성된 데이터 어레이와,
    상기 캐시 라인과 연관된 상태 정보를 저장하도록 구성된 상태 모듈과,
    상기 상태 모듈에 결합된 어레이 제어 모듈을 포함하고, 상기 어레이 제어 모듈은 상기 처리기의 로크 명령의 실행에 응답하여 상기 캐시 라인이 유효하고 로킹되었음을 나타내는 제 1 상태로 상기 상태 정보를 변경하도록 구성되고, 상기 캐시 라인에 대응하는 캐시의 외부의 제 1 데이터 위치가 액세스 요청과 연관된다는 표시를 수신하는 것에 응답하여, 상기 제 1 상태에서 제 2 상태로 상기 상태 정보를 자동으로 변경하도록 구성되고, 상기 제 2 상태는 상기 캐시 라인의 데이터가 무효하고 로킹되었음을 나타내고, 상기 캐시 라인이 무효하고 로킹되면 상기 캐시 라인은 제 2 데이터 위치에 할당할 수 없는, 디바이스.
  18. 제 17 항에 있어서,
    상기 어레이 제어 모듈은 상기 처리기의 제 2 명령의 실행에 응답하여, 상기 제 2 상태에서 상기 제 1 상태로 상기 상태 정보를 자동으로 변경하도록 구성되는, 디바이스.
  19. 제 17 항에 있어서,
    상기 어레이 제어 모듈은 상기 처리기의 제 2 명령의 실행에 응답하여, 상기 제 2 상태에서 상기 캐시 라인이 무효하고 언로킹되었음을 나타내는 제 3 상태로 상기 상태 정보를 자동으로 변경하도록 구성되는, 디바이스.
  20. 제 18 항에 있어서,
    상기 캐시는 후기입 캐시인(write-back cache), 디바이스.
KR1020107002280A 2007-08-02 2008-06-17 캐시 로킹 디바이스 및 그 방법들 KR101483931B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/832,797 2007-08-02
US11/832,797 US7827360B2 (en) 2007-08-02 2007-08-02 Cache locking device and methods thereof
PCT/US2008/067225 WO2009017890A2 (en) 2007-08-02 2008-06-17 Cache locking device and methods thereof

Publications (2)

Publication Number Publication Date
KR20100053540A KR20100053540A (ko) 2010-05-20
KR101483931B1 true KR101483931B1 (ko) 2015-01-19

Family

ID=40305158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107002280A KR101483931B1 (ko) 2007-08-02 2008-06-17 캐시 로킹 디바이스 및 그 방법들

Country Status (5)

Country Link
US (1) US7827360B2 (ko)
JP (1) JP5419102B2 (ko)
KR (1) KR101483931B1 (ko)
CN (1) CN101772759B (ko)
WO (1) WO2009017890A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856448B2 (en) * 2009-02-19 2014-10-07 Qualcomm Incorporated Methods and apparatus for low intrusion snoop invalidation
US8301838B2 (en) * 2009-11-04 2012-10-30 Nokia Corporation Method and apparatus for providing an application-level cache with a locked region and a floating region
US9448938B2 (en) * 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8694737B2 (en) * 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US8613074B2 (en) 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8775863B2 (en) * 2011-05-31 2014-07-08 Freescale Semiconductor, Inc. Cache locking control
US8856587B2 (en) 2011-05-31 2014-10-07 Freescale Semiconductor, Inc. Control of interrupt generation for cache
TW201308079A (zh) * 2011-08-09 2013-02-16 Realtek Semiconductor Corp 快取記憶體裝置與快取記憶體資料存取方法
KR101291040B1 (ko) * 2011-08-12 2013-08-01 주식회사 에이디칩스 캐시메모리의 캐시 라인 락킹방법
KR101306623B1 (ko) * 2011-08-12 2013-09-11 주식회사 에이디칩스 캐시메모리의 캐시 웨이 락킹방법
CN103019954A (zh) * 2011-09-22 2013-04-03 瑞昱半导体股份有限公司 高速缓存装置与高速缓存数据存取方法
US9176885B2 (en) 2012-01-23 2015-11-03 International Business Machines Corporation Combined cache inject and lock operation
US9141544B2 (en) 2012-06-26 2015-09-22 Qualcomm Incorporated Cache memory with write through, no allocate mode
US20140164708A1 (en) * 2012-12-07 2014-06-12 Advanced Micro Devices, Inc. Spill data management
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
CN104641347B (zh) * 2013-03-11 2018-06-05 华为技术有限公司 函数调用方法、装置和终端设备
CN103136080B (zh) * 2013-03-12 2016-07-13 青岛中星微电子有限公司 一种缓存锁定功能的测试方法和装置
KR102116364B1 (ko) 2013-11-18 2020-05-28 삼성전자주식회사 메모리 시스템 및 그에 따른 반도체 메모리의 결함 메모리 셀 관리방법
US9268715B2 (en) * 2014-02-24 2016-02-23 Freescale Semiconductor, Inc. System and method for validation of cache memory locking
US9356602B1 (en) * 2015-05-14 2016-05-31 Xilinx, Inc. Management of memory resources in a programmable integrated circuit
US10810144B2 (en) * 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module
GB2566469B (en) * 2017-09-13 2021-03-24 Advanced Risc Mach Ltd Cache line statuses
CN109933543B (zh) * 2019-03-11 2022-03-18 珠海市杰理科技股份有限公司 Cache的数据锁定方法、装置和计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000090009A (ja) 1998-07-31 2000-03-31 Hewlett Packard Co <Hp> キャッシュメモリにおいてキャッシュラインを置き換えるための方法および装置

Family Cites Families (12)

* 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
JPH01255944A (ja) * 1988-04-05 1989-10-12 Mitsubishi Electric Corp キャッシュメモリ
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5493667A (en) * 1993-02-09 1996-02-20 Intel Corporation Apparatus and method for an instruction cache locking scheme
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
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
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
KR20000026339A (ko) * 1998-10-20 2000-05-15 윤종용 잠금 및 플러쉬 기능을 갖는 캐쉬 메모리 시스템
JP3495266B2 (ja) * 1998-11-13 2004-02-09 Necエレクトロニクス株式会社 キャッシュロック装置及びキャッシュロック方法
US6438655B1 (en) * 1999-04-20 2002-08-20 Lucent Technologies Inc. Method and memory cache for cache locking on bank-by-bank basis
US6629209B1 (en) * 1999-11-09 2003-09-30 International Business Machines Corporation Cache coherency protocol permitting sharing of a locked data granule
US7900023B2 (en) * 2004-12-16 2011-03-01 Intel Corporation Technique to enable store forwarding during long latency instruction execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000090009A (ja) 1998-07-31 2000-03-31 Hewlett Packard Co <Hp> キャッシュメモリにおいてキャッシュラインを置き換えるための方法および装置

Also Published As

Publication number Publication date
WO2009017890A3 (en) 2009-04-09
WO2009017890A2 (en) 2009-02-05
KR20100053540A (ko) 2010-05-20
CN101772759A (zh) 2010-07-07
JP5419102B2 (ja) 2014-02-19
US7827360B2 (en) 2010-11-02
US20090037666A1 (en) 2009-02-05
JP2010535387A (ja) 2010-11-18
CN101772759B (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
KR101483931B1 (ko) 캐시 로킹 디바이스 및 그 방법들
US5740400A (en) Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US8495308B2 (en) Processor, data processing system and method supporting a shared global coherency state
EP0434250B1 (en) Apparatus and method for reducing interference in two-level cache memories
US6185658B1 (en) Cache with enhanced victim selection using the coherency states of cache lines
US20080046736A1 (en) Data Processing System and Method for Reducing Cache Pollution by Write Stream Memory Access Patterns
US8117399B2 (en) Processing of coherent and incoherent accesses at a uniform cache
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
EP2224343B1 (en) Data processing system
US20100030966A1 (en) Cache memory and cache memory control apparatus
US6763433B1 (en) High performance cache intervention mechanism for symmetric multiprocessor systems
US7325102B1 (en) Mechanism and method for cache snoop filtering
US8473686B2 (en) Computer cache system with stratified replacement
EP0936552B1 (en) Pseudo precise I-cache inclusivity for vertical caches
JP3463292B2 (ja) キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム
US5987544A (en) System interface protocol with optional module cache
US6826656B2 (en) Reducing power in a snooping cache based multiprocessor environment
US7472226B1 (en) Methods involving memory caches
US6279086B1 (en) Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US8271733B2 (en) Line allocation in multi-level hierarchical data stores
US20060224834A1 (en) Write-back cache methods and apparatus
US20060015689A1 (en) Implementation and management of moveable buffers in cache system
US20150095583A1 (en) Data processing system with cache linefill buffer and method of operation

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: 20171219

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 6