KR102536126B1 - 캐시 우회 - Google Patents

캐시 우회 Download PDF

Info

Publication number
KR102536126B1
KR102536126B1 KR1020197025355A KR20197025355A KR102536126B1 KR 102536126 B1 KR102536126 B1 KR 102536126B1 KR 1020197025355 A KR1020197025355 A KR 1020197025355A KR 20197025355 A KR20197025355 A KR 20197025355A KR 102536126 B1 KR102536126 B1 KR 102536126B1
Authority
KR
South Korea
Prior art keywords
cache
level
data access
data
cache level
Prior art date
Application number
KR1020197025355A
Other languages
English (en)
Other versions
KR20190112089A (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 KR20190112089A publication Critical patent/KR20190112089A/ko
Application granted granted Critical
Publication of KR102536126B1 publication Critical patent/KR102536126B1/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/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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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

전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 구비한 데이터 처리장치가 제공된다. 전송 캐시 레벨은, 지정된 데이터 값에 관한 데이터 액세스 요구를 수신기 캐시 레벨에 전송하여, 적어도 한 개의 우회된 캐시 레벨이 데이터 액세스 요구에 대해 응답하는 것을 금지한다. 수신기 캐시 레벨은, 지정된 데이터 값이 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하도록 구성된 존재 판정회로를 구비한다. 데이터 값이 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 판정에 응답하여, 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 데이터 액세스 요구에 대해 응답하게 된다.

Description

캐시 우회
본 발명은 데이터 처리에 관한 것이다. 특히, 본 발명은 캐시에 관한 것이다.
메모리 계층구조에서는, 다수의 캐시가 계층구조 내에 설치되는데, 일반적으로 더 작고 더 빠른 캐시는 계층구조의 상부에 놓이고 더 크고 더 느린 캐시는 계층구조의 하부에 놓인다. 계측구조의 하부는 일반적으로 시스템 메인 메모리(예를 들어, DRAM)를 포함한다. 데이터 액세스 요구는 보통 상부에서 들어온다. 각각의 캐시 레벨은 이 요구를 해결하려고 시도한다. 요구가 캐시에 "적중(hit)"하면, 데이터가 액세스될 수 있다. 요구가 "부적중(miss)"하면, 통상적으로, 이 요구가 캐시 아래로 더 전해진다. 그러나, 이와 같은 요구는 데이터를 발견하기 위해 복수의 레벨을 통과하는 것이 필요할 수 있다. 각각의 레벨은 룩업(lookup)을 필요로 하므로, 더 많은 캐시 레벨이 추가되어, 데이터 계층구조 내에서 요구된 데이터의 위치를 파악하는데 걸리는 시간이 증가할 수 있다. 메모리 계층구조 내부의 각각의 캐시 레벨도 데이터 일관성 문제를 피하기 위해 어드레스 장애를 처리해야만 한다. 데이터 액세스가 지정된 캐시 계층구조를 놓쳐, 다음 캐시 레벨로 가는 도중에 이미 존재하는 캐시 부적중 또는 캐시 퇴출(eviction)과 충돌할 때 어드레스 장애가 일어날 수 있다. 더 최신의 트랜잭션이 어드레스 장애를 우회하는 경우, 캐시 액세스가 다음 캐시 레벨로부터 오래된 데이터를 얻게 만들 수도 있다. 예를 들어, 더 최신의 요구가 캐시 부적중인 한편, 더티(dirty) 데이터를 갖는 캐시 퇴출이 이미 다음 캐시 레벨로 미처리되는 경우에, 캐시 퇴출을 우회하는 것은 데이터 장애를 일으킬 수 있다(예를 들어, 더 최신의 요구가 다음의 캐시 레벨로부터 오래된 데이터를 반환한다).
첫 번째 예시적인 구성에 따르면, 전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 구비하고, 상기 전송 캐시 레벨은, 상기 적어도 한 개의 우회된 캐시 레벨에서 캐시 룩업을 우회하여, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨에 전송하도록 구성되고, 상기 수신기 캐시 레벨은, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하도록 구성된 존재 판정회로를 구비하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리장치가 제공된다.
두 번째 예시적인 구성에 따르면, 전송 캐시 레벨 수단, 적어도 한 개의 우회된 캐시 레벨 수단 및 수신기 캐시 레벨 수단을 포함하는 복수의 캐시 레벨 수단을 갖는 메모리 계층구조 수단을 구비하고, 상기 전송 캐시 레벨 수단은, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨 수단에 전송하여, 상기 적어도 한 개의 우회된 캐시 레벨 수단이 상기 데이터 액세스 요구에 대해 응답하는 것을 금지하고, 상기 수신기 캐시 레벨 수단은, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨 수단에 존재하는지 여부에 관한 판정을 행하는 존재 판정수단을 구비하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨 수단에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 수단 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리장치가 제공된다.
세 번째 예시적인 구성에 따르면, 전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 위한 데이터 처리방법으로서, 상기 적어도 한 개의 우회된 캐시 레벨에서 캐시 룩업을 우회하여, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨에 전송하고, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리방법이 제공된다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다:
도 1은 일 실시예에 따른 데이터 처리장치를 나타낸 것이다.
도 2는 일 실시예에 따라 메모리 계층구조 내부의 캐시 레벨이 우회되고 있는 예를 나타낸 것이다.
도 3은 일 실시예에 따른 휴리스틱(heuristic) 데이터의 이용을 나타낸 것이다.
도 4a는 일 실시예에 따른 복수의 캐시 레벨을 우회하는 첫 번째 예를 나타낸 것이다.
도 4b는 일 실시예에 따른 복수의 캐시 레벨을 우회하는 두 번째 예를 나타낸 것이다.
도 5는 일 실시예에 따른 데이터 처리를 행하는 방법을 흐름도의 형태로 나타낸 것이다.
첨부도면을 참조하여 실시예를 설명하기 전에, 이하의 실시예의 설명이 주어진다.
예시적인 일 구성에 따르면, 전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 구비하고, 상기 전송 캐시 레벨은, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨에 전송하여, 상기 적어도 한 개의 우회된 캐시 레벨이 상기 데이터 액세스 요구에 대해 응답하는 것을 금지하도록 구성되고, 상기 수신기 캐시 레벨은, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하도록 구성된 존재 판정회로를 구비하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리장치가 제공된다.
상기한 실시예에서는, 메모리 계층구조의 각각의 캐시 레벨을 통해 지정된 데이터 값에 대한 데이터 액세스 요구를 전달하는 것이 아니라, 특정한 "전송 캐시 레벨"에서, 데이터 액세스 요구가 "수신기 캐시 레벨"로 송신된다. 이것은 적어도 한 개의 "우회된 캐시 레벨"이 데이터 액세스 요구에 대해 응답하는 것을 금지한다. 예를 들어, 전송 캐시 레벨과 수신기 캐시 레벨 사이의 중간 캐시 레벨에는 처음에 데이터 액세스 요구에 대해 응답할 기회가 주어지지 않는다. 수신기 캐시 레벨이 전송 캐시 레벨로부터 데이터 액세스 요구를 수신하면, 수신기 캐시 레벨 내부의 존재 판정회로가 지정된 데이터 값이 적어도 한 개의 우회된 캐시 레벨들 중에서 한 개 내에 존재하는지 여부를 판정한다. 이에 따르면, 전송 캐시 레벨로부터 수신기 캐시 레벨로의 데이터 액세스 요구의 전송이 일어나야만 하는지 여부를 존재 판정회로가 효율적으로 판정한다. 전송이 일어나야 한다고 존재 판정회로가 판정하는 경우, 즉 한 개 또는 적어도 한 개의 우회된 캐시 레벨이 지정된 데이터 값을 포함하는 것으로 간주되는 경우, 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨 중에서 한 개에 다시 전달된다(예를 들어, 반환된다). 이에 따르면, 메모리 계층구조의 한 개 이상의 캐시 레벨을 효율적으로 우회시킬 수 있다. 이와 같은 구성은, 지정된 데이터가 액세스되도록 하기 위해 데이터 액세스 요구에 필요한 룩업의 수를 줄여, 메모리 대기시간(latency)을 줄인다. 이와 같은 처리는 데이터 장애를 갖는 잠재적인 함정(pitfall)을 회피한다. 데이터가 우회된 캐시 레벨/레벨 등에 존재하여, 이 경우에는 데이터가 이 캐시 레벨에 반환되어 처리되거나(이 경우에는 데이터 장애가 정상적인 방식으로 해소된다), 또는 데이터가 우회된 캐시 레벨에 존재하지 않는다(이 경우에는 이 데이터 값에 대해 데이터 장애 처리가 발생하지 않는다).
일부 실시예에서, 상기 존재 판정회로는, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하지 않는다는 것을 나타내는 상기 판정에 응답하여, 상기 지정된 데이터 값이 상기 수신기 캐시 레벨에 존재하는 경우에는, 상기 수신기 캐시 레벨에게, 상기 데이터 액세스 요구에 대해 응답하게 하고, 그렇지 않은 경우에는, 상기 복수의 캐시 레벨 내부의 또 다른 캐시 레벨에 상기 데이터 액세스 요구를 전달하게 하도록 더 구성된다. 이들 실시예에서는, 지정된 데이터 값이 적어도 한 개의 우회된 캐시 레벨에 존재하지 않는 것으로 존재 판정회로가 판정하는 경우, 즉 전송이 일어나야 하는 경우, 수신기 캐시 레벨이 데이터 액세스 요구를 처리하게 된다. 이것은, 특정한 상황에서는, 데이터 액세스 요구에 대해 직접 응답함으로써 달성될 수 있다. 예를 들어, 지정된 데이터 값이 수신기 캐시 레벨에 존재하면, 수신기 캐시 레벨은 지정된 데이터 그 자체를 액세스할 수 있다. 그 이외의 경우, 즉 수신기 캐시 레벨 그 자체가 지정된 데이터 값을 포함하지 않는 경우에는, 데이터 액세스 요구가 메모리 계층구조 내부로 더 전송된다. 예를 들어, 데이터 액세스 요구가 하류측으로 더 전달되거나 메인 시스템 메모리를 향해 더 근접하게 전달될 수도 있다.
일부 실시예에서, 상기 전송 캐시 레벨은, 상기 지정된 데이터 값에 관한 또 다른 데이터 액세스 요구를 상기 적어도 한 개의 우회된 캐시 레벨에 전송하도록 더 구성된다. 이에 따르면, 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨을 우회하는 한편, 또 다른 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨에 전송된다. 이에 따르면, 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨로 다시 전달되어야 하는 것으로 수신기 캐시 레벨의 존재 판정회로가 판정하는 경우, 이 캐시 레벨이 이전에 이미 전달되었던 또 다른 데이터 액세스 요구의 덕분으로 헤드 스타트(head start)가 주어지게 된다. 따라서, 사실상, 전송 캐시 레벨은 한 개의 데이터 액세스 요구의 수신에 응답하여 2개의 데이터 액세스 요구를 생성해도 된다. 이와 같은 상황에서는, 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨에 전송된 후 삭제되거나, 데이터 액세스 요구가 수신기 캐시 레벨에 의해 간단히 폐기될 수도 있다. 그러나, 아무튼, 지정된 데이터에 대한 또 다른 데이터 액세스 요구가 이전에 적어도 한 개의 우회된 캐시 레벨로 제공된 덕분으로 인해, 적어도 한 개의 우회된 캐시 레벨이 여전히 데이터 액세스 요구에 대해 응답하게 된다.
일부 실시예에서, 상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송 중에서 적어도 한 개는 적어도 한 개의 조건에서 행해진다. 전송 캐시 레벨은 수신기 캐시 레벨에 데이터 액세스 요구를 항상 전송할 필요는 없으며 또 다른 데이터 액세스 요구를 항상 전송할 필요는 없다. 특히, 이들 조치들 중에서 어느 한 개 또는 양쪽이 적어도 한 개의 조건에 따라 취해져도 된다. 조건을 만족하지 않는 경우, (데이터 액세스 요구의 경우에) 우회가 일어나지 않거나, 또 다른 데이터 액세스 요구의 전송이 발생하지 않게 된다.
상기 적어도 한 개의 조건에 대한 다수의 예가 존재한다. 그러나, 일부 실시예에서, 상기 적어도 한 개의 조건은 휴리스틱(heuristic) 데이터에 의존한다. 휴리스틱 데이터는 데이터 처리장치의 한 개 이상의 부분들의 이전의 이력 거동에 근거하여 발생된다. 예를 들어, 일부 실시예에서, 상기 휴리스틱 데이터는 이전의 데이터 액세스 요구를 만족시켰던 상기 메모리 계층구조의 한 개 이상의 성분들의 속성에 의존한다. 예를 들어, 일부 실시예에서, 휴리스틱 데이터는 이전의 데이터 액세스 요구를 만족시켰던 메모리 계층구조의 특정한 캐시들 또는 캐시 레벨들의 속성에 의존한다. 메모리 계층구조의 한 개 이상의 성분들은, 예를 들어, 메모리 계층구조 내부의 캐시들 및 메모리들을 포함할 수도 있다. 예를 들어, 메모리 계층구조의 한 개 이상의 성분들은 메모리 계층구조의 캐시 레벨들과 대응될 수도 있다.
일부 실시예에서, 상기 속성은 상기 이전의 데이터 액세스 요구들을 만족시켰던 상기 메모리 계층구조의 상기 한 개 이상의 성분들의 유형을 식별한다. 메모리 계층구조의 한 개 이상의 성분들의 예시적인 유형으로는, 예를 들어, 메모리 계층구조 내부의 성분의 레벨, 계층구조의 레벨을 구현하는데 사용된 하드웨어, 및 메모리 계층구조의 성분의 물리적인 위치를 들 수 있다. 메모리 계층구조의 한 개 이상의 성분들의 유형을 이용하여, 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구의 전송에 관한 현명한 결정을 할 수 있다. 예를 들어, 예를 들어, 메모리 계층구조의 상위 레벨들, 예를 들어 메인 시스템 메모리로부터 더 멀리 떨어진 레벨들은 그들의 더 작은 사이즈로 인해 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구에서 참조된 지정된 데이터 값을 포함할 가능성이 더 적을 수도 있다. 따라서, 메모리 계층구조의 상위 레벨들(예를 들어, 레벨 1 캐시)을 구현하는데 사용된 성분들에 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구를 전송하는 것을 피하는 것이 바람직할 수도 있다.
일부 실시예에서, 상기 속성은 상기 이전의 데이터 액세스 요구들을 만족시켰던 상기 캐시 레벨들의 한 개를 나타낸다. 전술한 것과 같이, 속성은, 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구가 전송되어야 하는지 여부에 관한 현명한 결정을 하기 위해 이전의 데이터 액세스 요구를 만족시켰던 메모리 계층구조의 캐시 레벨들의 한 개를 나타낼 수도 있다.
일부 실시예에서, 상기 속성은, 이전의 데이터 액세스 요구들을 만족시켰던 상기 메모리 계층구조의 상기 한 개 이상의 성분들과, 상기 전송 캐시 레벨 사이의 데이터 전송 경로와 관련된다. 데이터 전송 경로는, 전송 캐리 레벨로의 경로를 구성하는 메모리 계층구조의 일련의 성분들을 포함할 수 있다. 예를 들어, (전송 캐시 레벨로서의) 지정된 레벨 1 캐시 성분과 시스템 캐시 성분 사이의 데이터 전송 경로는, 레벨 1 캐시 성분과, 그후의 레벨 2 캐시 성분과, 그후의 레벨 3 캐시 성분과, 개재하는 성분들을 포함하는, 그후의 시스템 캐시 성분을 포함할 수도 있다.
일부 실시예에서, 상기 속성은 상기 데이터 전송 경로의 대기시간을 나타낸다. 데이터 전송 경로의 대기시간은, 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구가 응답을 받기 위해 필요한 기간에 대한 표시를 제공한다. 예를 들어, 높은 대기시간은 긴 경로, 즉 느린/큰 성분을 나타낼 수 있다. 대기시간이 임계값을 초과하는 경우에 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구가 전송을 피하는 것이 바람직할 수도 있다. 특히, 또 다른 데이터 액세스 요구의 발생을 회피함으로써, 시스템의 요구의 수가 줄어들어, 대기시간을 향상시킬 수 있다. 마찬가지로, 일반적으로, 이미 높은 대기시간을 겪고 있는 성분의 부하를 추가하는 것은 바람직하지 않은데, 이것이 대기시간을 악화시킬 수 있기 때문이다.
일부 실시예에서, 상기 적어도 한 개의 조건은, 프리페치 동작에 대해 상기 데이터 액세스 요구가 행해진다는 요건을 포함한다. 데이터 액세스 요구는 응답형(solicited) 또는 비응답형(unsolicited)으로 생각할 수 있다. 프리페치 요구로도 자주 불리는 비응답형 데이터 액세스 요구에서는, 데이터의 사용이 필요하기 전에 데이터가 취득된다. 그 결과, 적절한 시기에, 데이터 값이 응답형 데이터 액세스 요구에 의해 능동적으로 요구될 때, 예를 들어, 메인 메모리로부터 데이터를 액세스하는 처리가 이미 시작되었을 것이다. 일부 경우에, 데이터가 이미 메모리 계층구조의 상위 레벨 캐시에서 이용가능할 수도 있으므로, 신속하게 액세스될 수 있다. 제안된 실시예에서는, 데이터 액세스 요구가 응답형일 때, 데이터가 이미 프리페치되었을 것이며, 그 결과 상위 레벨 캐시에 기억되었을 가능성이 더 크다는 합리적인 기대가 존재한다. 따라서, 캐시의 상부 내에서 데이터 액세스 요구가 만족될 가능성이 더 크므로, 상위 캐시 레벨을 우회하는 것이 덜 바람직하다. 이와 달리, 프리페치 동작에 대해서는, 데이터가 최근에 액세스되었을 가능성이 더 적으므로, 해당 데이터가 메모리 계층구조 내부의 더 깊은 곳에서 발견될 가능성이 더 크다. 그 결과, 전송이 더 적절하다.
일부 실시예에서, 상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송 모두는 적어도 한 개의 조건에서 행해진다. 그러나, 일부 다른 실시예에서는, 상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송 중에서 한 개만 적어도 한 개의 조건에서 행해진다. 한편, 다른 형태의 전송은 기본이 되는 조건에 무관하게 행해지거나 행해지지 않는다.
일부 실시예에서, 상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송은 서로 다른 세트의 조건들에서 행해진다. 한편, 일부 다른 실시예에서, 상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송은 동일한 세트의 조건들에서 행해진다. 예를 들어, 한가지 형태의 전송이 발생하면, 모든 형태의 전송이 일어난다.
일부 실시예에서, 상기 존재 판정회로는 스눕 필터를 구비한다. 예를 들어, 존재 판정회로가 스눕 필터이어도 된다. 전통적으로, 예를 들어, 캐시 블록들 사이의 트랜잭션을 감시하기 위해 버스 또는 인터컨넥트 내부에서 스누핑이 사용된다. 이에 따르면, 시스템의 2개의 구성요소가 특정한 데이터에 관해 통신하는 경우, 버스에 액세스하는 다른 구성요소들은 "스눕"하여 특정한 데이터의 위치에 관한 정보를 추론할 수 있다. 이와 같은 처리는, 시스템의 일관성을 도와서 2개의 다른 캐시들에서 데이터가 동시에 변경되는 상황을 피하기 위해 사용될 수 있다. 그러나, 버스가 다량의 트래픽을 겪으므로, 잠재적으로 무관한 데이터에 대해 다수의 룩업을 행하기 위해 각각의 스누퍼(snooper)가 필요하게 되기 때문에, 스누핑은 시간이 많이 소모될 수 있다. 이것을 제한하기 위해 스눕 필터를 사용할 수 있다. 예를 들어, 스눕 필터는 특정한 데이터 값을 포함하는 캐시의 디렉토리를 제공할 수 있다. 이에 따르면, 참조되고 있는 데이터 값을 포함하지 않는 캐시들에 대해서는 스누핑이 금지될 수 있다. 따라서, 마찬가지로, 적어도 한 개의 우회된 캐시 레벨이 데이터 액세스 요구에서 참조되고 있는 데이터 값을 포함하는지 여부를 판정하기 위해 스눕 필터를 사용할 수 있다. 따라서, 이것을 이용하여, 데이터 액세스 요구를 해결하기 위해 데이터 액세스 요구가 적어도 한 개의 우회된 캐시 레벨로 다시 전송되어야 하는지 여부를 판정할 수 있다.
일부 실시예에서, 상기 전송 캐시 레벨은 레벨 2 캐시이고, 상기 적어도 한 개의 우회된 캐시 레벨은 레벨 3 캐시이고, 상기 수신기 캐시 레벨은 시스템 캐시이다. 전통적으로, 레벨 2 캐시는 레벨 3 캐시보다 더 작고 더 빠르다. 마찬가지로, 레벨 3 캐시는 일반적으로 (레벨 4 캐시로도 불리는) 시스템 캐시보다 더 작고 더 빠르다.
일부 실시예에서, 상기 전송 캐시 레벨과 상기 적어도 한 개의 우회된 캐시 레벨은 동일하다. 일부 실시예에서, 전송 캐시 레벨은, 데이터 액세스 요구에 대해 그 자신의 캐시 내부에서 로컬 룩업을 행하기 전에 데이터 액세스 요구를 전송한다. 따라서, 전송 캐시 레벨은 적어도 한 개의 우회된 캐시 레벨이거나 적어도 한 개의 우회된 캐시 레벨 내부에 포함된다. 다른 실시예에서, 전송 캐시 레벨은 그 자신의 캐시에서 로컬 룩업을 행한 후 데이터 액세스 요구를 전송하므로, 적어도 한 개의 우회된 캐시 레벨은 전송 캐시 레벨과 완전히 분리된다. 후자의 실시예는, 예를 들어, 레벨 1 캐시가 레벨 3 캐시에 데이터 액세스 요구를 전송할 수 있도록 하기 위해서는 캐시 레벨들 사이의 추가적인 접속을 필요로 할 것이다.
이하, 첨부도면을 참조하여 특정한 실시예를 설명한다.
도 1은 일 실시예에 따른 데이터 처리장치(100)를 나타낸 것이다. 도시된 것과 같이, 데이터 처리장치(100)는 메모리 계층구조(110)를 포함한다. 메모리 계층구조(110)는 다수의 캐시 레벨 L1 L2, L3, SC를 포함한다. 메모리 계층구조 내에, 다수의 레벨 1 캐시들(120A-120H)이 존재한다. 본 실시예에서, 레벨 1 캐시들(120A-120H)은 메모리 계층구조의 상단에 해당한다. 그 결과, 데이터 액세스 요구가 발행되면, 먼저 레벨 1 캐시들(120A-120H) 중에서 한 개에 발행된다. 또한, 본 실시예에서는, 다수의 레벨 2 캐시들(130A-130D)이 제공된다. 레벨 2 캐시들(130A-130D)은, 레벨 1 캐시들(120A-120H)의 쌍들에 의해 공유되도록 배치된다. 예를 들어, 제1 레벨 1 캐시(120A)와 제2 레벨 1 캐시(120B)는 레벨 2 캐시 130A를 공유한다. 본 실시예에 있어서, 레벨 2 캐시들(130A-130D) 각각은 레벨 1 캐시들(120A-120H) 각각보다 더 크고 더 느리다. 다른 실시예에서, 레벨 2 캐시(130A-130D)는 레벨 1 캐시(120A-120H)와 같은 사이즈이거나 훨씬 더 작을 수도 있다. 한쌍의 레벨 3 캐시들(140A, 140B)이 더 설치된다. 이들은 레벨 2 캐시들(130A-130D)보다 더 크고 더 느리지만, 마찬가지로, 다른 실시예에서는, 이것이 성립하지 않는다. 마찬가지로, 레벨 3 캐시들(140A, 140b) 각각은 한쌍의 레벨 2 캐시들(130A-130D)에 의해 공유된다. 예를 들어, 제1 레벨 2 캐시(130A)와 제2 레벨 2 캐시(130B)는 한 개의 레벨 3 캐시(140A)에 의해 공유된다. 레벨 3 캐시들(140A, 140b) 각각은 인터컨넥트(150)를 거쳐 일련의 시스템 캐시들(160A-160D)에 접속된다. 시스템 캐시들(160A-160D)은 메모리 계층구조(110)의 추가적인 캐시 레벨을 구성하며, 레벨 4 캐시로도 불리는 경우가 많다. 최종적으로, 인터컨넥트(150)는 일련의 동적 메모리 콘트롤러들(170A-170D)에 접속된다. 동적 메모리 콘트롤러들(170A-170D)은 메인 시스템 메모리를 구현하는데, 즉 이들은 DRAM을 제공한다. 메인 시스템 메모리는 메모리 계층구조(110)의 최종 레벨이다. 이것은 메모리 계층구조(110) 내부의 다양한 레벨들 중에서 가장 크고 가장 느리다.
본 실시예에서는, 각각의 프로세서 코어에 대해, 레벨 2 캐시들(130A-130D) 중에서 한 개와 함께, 레벨 1 캐시들(120A-120H)의 쌍들이 제공된다. 각각의 레벨 3 캐시는 한 개의 프로세서 칩을 구성하는 프로세서 코어들의 쌍들 사이에 공유된다. 그후, 프로세서 칩들은 인터컨넥트(150)를 거쳐 서로 통신한다.
전술한 것과 같이, 데이터 액세스 요구가 프로세서 코어로부터 레벨 1 캐시들(120A-120H) 중에서 한 개를 거쳐 들어온다. 요구된 데이터 값이 레벨 1 캐시들(120A-120H) 중에서 로컬의 1개 내부에 놓이는 경우(즉, "적중"이 존재하는 경우), 데이터 값을 액세스(판독 또는 기록)할 수 있다. 데이터 값이 레벨 1 캐시들(120A-120H) 중에서 로컬의 1개 내부에 놓이지 않는 경우, "부적중"이 발생하며, 데이터 액세스 요구가 레벨 2 캐시(130A-130D)로 전송된다. 프로세스가 반복된다. 부적중이 일어날 때마다, 데이터 액세스 요구가 메모리 계층구조(110) 아래로 메인 시스템 메모리를 향해 더 전송된다.
도 2는 프로세서 코어(180)로부터 레벨 3 캐시9140A)로 데이터 액세스 요구가 전송되는 예를 나타낸 것이다. 본 실시예에서, 레벨 2 캐시(전송 캐시 레벨)는 요구된 데이터 값을 로컬에서 찾지 않고 요구를 전송한다. 따라서, 레벨 2 캐시는 우회된 캐시 레벨이기도 하다. 레벨 3 캐시(140A)(수신기 캐시 레벨)는 그 자신의 스눕 필터(190)를 이용하여, 데이터 액세스 요구에서 참조된 데이터 값이 우회된 레벨 2 캐시(130A)에 기억되어 있는지 아닌지 판정한다. 기억되어 있으면, 데이터 액세스 요구가 레벨 2 캐시(130A)로 다시 반환되어 수행된다. 그렇지 않으면, 레벨 3 캐시(140A)는, 데이터 값이 레벨 3 캐시(140A)의 로컬에서 기억되어 있으면 데이터 값을 반환하거나, 데이터 값이 로컬에서 발견되지 않으면 메모리 계층구조(110) 내에서 앞으로 데이터 액세스 요구를 전송함으로써, 요구 그 자체를 처리한다. 예를 들어, 레벨 3 캐시(140A)는 데이터 액세스 요구를 시스템 캐시들(160A-160D) 중에서 한 개에 전송할 수도 있다.
본 실시예에서는, 데이터 액세스 요구를 전송하는 것 이외에, 레벨 2 캐시(130A)가 로컬에서 처리되는 또 다른 데이터 액세스 요구를 발생한다. 이에 따라, 데이터 액세스 요구가 레벨 3 캐시(140A)에 의해 반환되는 경우, 요구된 데이터 값을 로컬에서 찾는 처리가 이미 시작되었으므로, 반환된 요구가 폐기되도록 할 수 있다. 따라서, 이와 같은 구성은, 레벨 2 캐시(130A)가 요구된 데이터 값을 포함하지 않는 것으로 레벨 3 캐시(140A)가 판정하는 경우에 시간을 절감한다. 따라서, 데이터 값이 실제로 레벨 2 캐시(130A)에 기억되어 있는지 또는 레벨 3 캐시(140A)에 기억되어 있는지에 상관없이, 데이터 값의 검색의 결과로써 대기시간의 상당한 증가가 존재하지 않는다. 사실상, 데이터 값이 레벨 2 캐시(130A)에 기억되어 있지 않을 때와 같은 일부 경우에, 레벨 2 캐시(130A)에 의해 행해지는 검색을 회피할 수 있으므로, 데이터 액세스 요구의 해결시의 시간을 절감할 수 있다. 일부 실시예에서는, 또 다른 요구가 우회된 캐시 레벨에도 발행되었을 경우에, 데이터 액세스 요구의 반환이 금지될 수 있다.
본 실시예에서도, 휴리스틱 분석회로(200)를 사용하여, 데이터 액세스 요구가 레벨 2 캐시 회로(130A)에서 행해지는 검색을 우회시키는 것인지를 판정한다. 더구나, 휴리스틱 분석회로(200)를 사용하여 또 다른 요구가 생성되어야 하는지 판정한다. 이에 따르면, 데이터 액세스 요구와 또 다른 데이터 액세스 요구의 각각이 특정한 조건에 따라 전송될 수 있다. 고려할 수 있는 다수의 다양한 조건과 휴리스틱이 존재한다. 이들의 일부를 도 3을 참조하여 나타낸다. 본 실시예에서, 레벨 2 캐시(130A)는 우회되고 레벨 3 캐시(140A)로 요구를 앞으로 전송하는 역할을 행한다. 그러나, 다른 실시예에서는, 우회되는 캐시 또는 캐시들은 전송을 행하는 캐시와 달라도 된다. 예를 들어, 본 실시예에서는, 레벨 1 캐시 120B에서의 검색이 행해진 후 레벨 1 캐시 120B에 의해 전송이 행해질 수도 있다. 이에 따르면, 레벨 2 캐시(130A)는 우회된 캐시로서 유지된다. 반환된 데이터 액세스 요구는 우회된 캐시, 즉 레벨 2 캐시(130A)로 반환된다.
이때, 이와 같은 처리는 데이터 장애와 관련된 문제를 회피한다. 특히, 모든 우회된 캐시 레벨들(이 경우에는, 레벨 2 캐시)은 요구된 데이터를 갖지 않고, 이 경우에 레벨 2 캐시를 우회한 결과로써 데이터 장애 관련 문제가 발생하지 않거나, 또는 레벨 2 캐시가 요구된 데이터를 가고, 이 경우에 요구가 통상적인 방법으로 (실패한 우회 시도 후에) 레벨 2 캐시에 의해 처리된다. 후자의 경우에는, 레벨 2 캐시가 통상적인 방법으로 데이터 액세스 요구에 대해 응답하기 때문에, 일상적인 데이터 장애 회피를 사용할 수 있다.
도 3은 데이터 액세스 요구 또는 또 다른 데이터 액세스 요구가 전송되어야 하는지 판정하기 위한 휴리스틱의 이용의 2가지 예를 나타낸 것이다. 이들 휴리스틱은, 예를 들어, 레벨 2 캐시(130A)에 의해 사용될 수도 있다.
실시예 1에서, 캐시는, (ID 번호에 의해 각각 식별되는) 2개의 상류측 레벨 1 캐시들(120A, 120B) 각각으로부터 발생된 이전의 데이터 액세스 요구에 대해, 이 요구가 로컬의 레벨 2 캐시(130A)에서 적중하는지 여부를 판정한다. 최종 8번의 시도 각각을 추적한다. 이에 따르면, 데이터 액세스 요구를 발생한 캐시에 근거하여, 추후의 데이터 액세스 요구가 레벨 2 캐시(130A)에서 적중할 가능성이 있는지 여부에 대해 평가를 내릴 수 있다. 예를 들면, 이전의 데이터 액세스 요구로부터 이전의 적중의 횟수가 4와 같은 소정의 임계값보다 큰 경우에 적중이 발생할 가능성이 있다고 판정할 수도 있다. 그 결과, 추후의 데이터 액세스 요구에 대해, 데이터 액세스 요구의 소스(즉, 제1 레벨 1 캐시(120A) 또는 제2 레벨 1 캐시(120B))와 이 레벨 1 캐시로부터의 이전의 적중의 횟수를 고려함으로써, 레벨 2 캐시(130A)에서 적중이 발생할 것인지 여부에 대한 판정을 할 수 있다. 레벨 2 캐시(130A)에서의 적중이 발생할 것 같으면, 우회가 발생하지 않고 통상시대로 데이터 액세스 요구가 진행된다. 이와 달리, 부적중이 발생할 것 같으면, 우회가 권장된다.
실시예 2에서, 레벨 2 캐시(130A)는 (특정한 ID 번호에 의해 각각 식별되는) 추가적인 하류층 캐시 레벨들 각각에 대해 대기시간을 추적한다. 이에 따르면, 취할 상당한 이득이 존재하는 것으로 현재의 대기시간이 표시하는 경우에, 특정한 캐시 레벨이 우회된다. 예를 들어, 레벨 2 캐시(130A)가 현재 특이하게 큰 대기시간을 갖는 경우에는, 레벨 2 캐시(130A)를 우회하는 것이 적절한 것으로 판정된다. 복수의 캐시에 대해 대기시간을 제공함으로써, 메모리 계층구조(110) 내부의 복수의 캐시 레벨을 우회하는 것이 가능하다. 예를 들어, 레벨 2 캐시와 레벨 3 캐시가 특이하게 큰 대기시간을 갖는 것으로 생각되면(즉, 대기시간이 소정의 값보다 큰 것으로 생각되면), 데이터 액세스 요구가 직접 시스템 캐시(160A)로 전송될 수도 있다.
이와 같은 휴리스틱을 이용하여 데이터 액세스 요구 및/또는 또 다른 데이터 액세스 요구를 전송하기 위한 조건을 판정할 수 있다. 예를 들어, 또 다른 데이터 액세스 요구의 전송은 데이터 액세스 요구의 응답이 증가하는 것으로 인해 대기시간이 증가하게 하기 때문에, 또 다른 데이터 액세스 요구의 전송은 해당 캐시의 낮은 대기시간에 의존한다. 그러나, 또 다른 데이터 액세스 요구의 발행은, 적어도 한 개의 우회된 캐시 레벨이 요구된 데이터를 포함할 합당한 가능성이 존재하는 것으로 생각되는 경우로 제한될 수도 있다.
도 4a는 일 실시예에 따른 다양한 캐시 레벨들 사이에서의 데이터 요구의 전달의 일례를 나타낸 것이다. 도 4a에서, X축은 캐시 레벨 1, 레벨 2, 레벨 3 및 시스템 캐시 각각을 나타낸다. Y축은 시간을 나타낸다. 그 결과, 처음에는, 레벨 1 캐시에서의 부적중의 결과로써, 데이터 액세스 요구가 레벨 2 캐시로 전송되는 것을 알 수 있다. 레벨 2 캐시는, 데이터 액세스 요구를 시스템 캐시로 전송하기 위한 적절한 조건을 만족한다고 판정한다. 따라서, 레벨 2 캐시 그 자체와 레벨 3 캐시가 모두 우회된다. 시스템 캐시에서 한번, 시스템 캐시의 스눕 필터는, 데이터 액세스 요구에서 요구되고 있는 데이터를 상류측 캐시들 중에서 한 개에서 찾을 수 있다고 판정한다. 본 실시예에서, 이것은 데이터 액세스 요구가 레벨 3 캐시로 전송되게 한다. 레벨 3 캐시에서, 스눕 필터는 요구되고 있는 데이터가 더 상류측의 캐시 레벨에 유지되어 있는 것으로 판정하고, 그 결과 데이터 액세스 요구가 레벨 2 캐시로 전송되어, 여기에서 데이터 액세스 요구가 해결될 수 있다.
도 4b에서는, 이와 유사한 처리가 발생한다. 그러나, 시스템 캐시에서, 데이터 액세스 요구에 의해 참조된 데이터 값이 상류측 캐시에 기억되어 있다고 판정되면, 데이터 액세스 요구가 우회된 캐시 레벨들 중에서 첫번째, 즉 레벨 2 캐시로 반환된다. 물론, 데이터가 실제로 레벨 3 캐시에 기억되었다면, 레벨 2 캐시에서 부적중이 발생할 것이고, 이것은 데이터 액세스 요구가 그후 레벨 3 캐시로 아래로 다시 전송되게 할 것이다.
이때, 사용가능한 다수의 다른 접근방법이 존재한다는 것은 자명하다. 예를 들어, 캐시들 각각을 가로질러 요구된 데이터를 검색하기 위해 걸리는 시간을 줄이기 위해 "이진 탐색"을 사용할 수도 있다. 더 낮은 레벨의 캐시가 더 크다는 것을 유념하면서 더 진보된 기술이 이와 같은 탐색을 왜곡해도 된다. 또 다른 기술이 사용되어도 된다. 예를 들어, 스눕 필터는 요구된 데이터를 포함한 상류측의 캐시 레벨에 관한 "힌트"를 제공할 수도 있다. 그후, 데이터 액세스 요구가 이 데이터가 유지되었던 캐시 레벨로 반환될 수도 있다.
도 5는 일 실시예에 따른 데이터 처리방법을 나타낸 흐름도(210)이다. 스텝 220에서 처리가 개시되며, 이때 현재의 캐시 레벨에서의 적중이 발생하였는지 아닌지 판정한다. 발생하지 않았으면, 스텝 240에서, 우회를 행하기 위한 조건 또는 조건들이 만족되었는지 아닌지 판정한다. 만족되지 않았으면, 스텝 250에서 다음의 캐시 레벨로의 데이터 액세스 요구가 발생/전송된다. 그후, 스텝 220으로 다시 처리가 진행하여, 이와 같은 다음 캐시 레벨에서 적중이 발생하는지 아닌지 판정한다. 그렇지 않고, 스텝 240에서 우회 조건이 만족되면, 스텝 260에서 동시 요구에 대한 조건 또는 조건들이 만족되는지 판정한다. 만족되는 경우에는, 스텝 270에서, 다음의 캐시 레벨에 대해 또 다른 요구가 발생된다. 어느 경우에서나 스텝 280에서, 2 캐시 레벨 아래의 캐시 레벨로 데이터 액세스 요구가 전송된다. 예를 들어, 레벨 2 캐시가 전송을 행하고 있었고 레벨 2 캐시에서 검색이 아직 행해지지 않은 경우에는, 2 레벨 아래는 레벨 3 캐시(즉, 검색할 다음 캐시 후의 캐시)에 해당할 것이다. 마찬가지로, 레벨 1 캐시에서 검색을 행한 후 레벨 1 캐시가 전송을 행하고 있었다면, 다음의 캐시 검색이 레벨 2 캐시가 되고 그 다음의 것은 레벨 3 캐시가 될 것이기 때문에, 2 레벨 아래는 여전히 레벨 3 캐시가 될 것이다. 그후, 처리가 스텝 290으로 진행하여, 데이터 액세스 요구에 의해 요구된 데이터가 우회된 캐시 레벨 또는 캐시 레벨들 내부에 놓이는지 여부를 판정한다. 놓이는 경우에는, 스텝 300에서, 동시 요구가 발생되었는지 아닌지 판정한다. 발생된 경우에는, 발생된 또 다른 요구가 이미 해당 캐시에 발행되었기 때문에, 이 요구를 단순히 무시한다. 또 다른 요구가 발생되지 않았다면, 스텝 320에서, 우회된 캐시 레벨에 대해 요구가 발생된다. 그후, 스텝 220으로 처리를 진행하여, 이 우회된 캐시 레벨에서 적중이 발생하는지 여부를 판정한다.
따라서, 상기한 실시예는 적어도 한 개의 캐시 레벨이 우회되는 것이 가능한 방법을 예시하고 있다. 해당하는 경우에만 캐시 레벨(들)의 우회가 발생하며, 해당하는 경우, 이것은, 메모리 계층구조(110) 내부의 모든 캐시 레벨이 차례로 액세스되어야 하는 경우에 비해, 메모리 계층구조(110) 내부의 더 하류측에 유지된 데이터 값의 검색이 더 신속하게 액세스될 수 있도록 할 수 있다. 그 결과, 더 낮은 평균 메모리 대기시간이 달성된다. 이와 같은 처리는, 데이터 장애의 가능성에 민감하며, 데이터가 캐시 레벨을 우회한 결과로써 데이터 장애의 도입을 회피한다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다."하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (20)

  1. 전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 구비하고,
    상기 전송 캐시 레벨은, 상기 적어도 한 개의 우회된 캐시 레벨에서 캐시 룩업을 우회하여, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨에 전송하도록 구성되고,
    상기 수신기 캐시 레벨은, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하도록 구성된 존재 판정회로를 구비하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 존재 판정회로는, 상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하지 않는다는 것을 나타내는 상기 판정에 응답하여,
    상기 지정된 데이터 값이 상기 수신기 캐시 레벨에 존재하는 경우에는, 상기 수신기 캐시 레벨에게, 상기 데이터 액세스 요구에 대해 응답하게 하고,
    그렇지 않은 경우에는, 상기 복수의 캐시 레벨 내부의 또 다른 캐시 레벨에 상기 데이터 액세스 요구를 전달하게 하도록 더 구성된 데이터 처리장치.
  3. 제 2항에 있어서,
    상기 또 다른 캐시 레벨은 메모리 콘트롤러 회로를 구비한 데이터 처리장치.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 전송 캐시 레벨은, 상기 지정된 데이터 값에 관한 또 다른 데이터 액세스 요구를 상기 적어도 한 개의 우회된 캐시 레벨에 전송하도록 더 구성된 데이터 처리장치.
  5. 제 4항에 있어서,
    상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송 중에서 적어도 한 개는 적어도 한 개의 조건에서 행해지는 데이터 처리장치.
  6. 제 5항에 있어서,
    상기 적어도 한 개의 조건은 휴리스틱(heuristic) 데이터에 의존하는 데이터 처리장치.
  7. 제 6항에 있어서,
    상기 휴리스틱 데이터는 이전의 데이터 액세스 요구를 만족시켰던 상기 메모리 계층구조의 한 개 이상의 성분들의 속성에 의존하는 데이터 처리장치.
  8. 제 7항에 있어서,
    상기 속성은 상기 이전의 데이터 액세스 요구들을 만족시켰던 상기 메모리 계층구조의 상기 한 개 이상의 성분들을 식별하는 데이터 처리장치.
  9. 제 7항에 있어서,
    상기 속성은 상기 이전의 데이터 액세스 요구들을 만족시켰던 상기 메모리 계층구조의 상기 한 개 이상의 성분들의 유형을 식별하는 데이터 처리장치.
  10. 제 9항에 있어서,
    상기 속성은 상기 이전의 데이터 액세스 요구들을 만족시켰던 캐시 레벨들 중에서 한 개를 나타내는 데이터 처리장치.
  11. 제 7항에 있어서,
    상기 속성은, 이전의 데이터 액세스 요구들을 만족시켰던 상기 메모리 계층구조의 상기 한 개 이상의 성분들과, 상기 전송 캐시 레벨 사이의 데이터 전송 경로와 관련되는 데이터 처리장치.
  12. 제 11항에 있어서,
    상기 속성은 상기 데이터 전송 경로의 대기시간을 나타내는 데이터 처리장치.
  13. 제 5항에 있어서,
    상기 적어도 한 개의 조건은, 프리페치 동작에 대해 상기 데이터 액세스 요구가 행해진다는 요건을 포함하는 데이터 처리장치.
  14. 제 5항에 있어서,
    상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송 모두는 적어도 한 개의 조건에서 행해지는 데이터 처리장치.
  15. 제 5항에 있어서,
    상기 데이터 액세스 요구의 전송과 상기 또 다른 데이터 액세스 요구의 전송은 서로 다른 세트의 조건들에서 행해지는 데이터 처리장치.
  16. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 존재 판정회로는 스눕 필터를 구비한 데이터 처리장치.
  17. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 전송 캐시 레벨은 레벨 2 캐시이고,
    상기 적어도 한 개의 우회된 캐시 레벨은 레벨 3 캐시이고,
    상기 수신기 캐시 레벨은 시스템 캐시인 데이터 처리장치.
  18. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 전송 캐시 레벨과 상기 적어도 한 개의 우회된 캐시 레벨은 동일한 데이터 처리장치.
  19. 삭제
  20. 전송 캐시 레벨, 적어도 한 개의 우회된 캐시 레벨 및 수신기 캐시 레벨을 포함하는 복수의 캐시 레벨을 갖는 메모리 계층구조를 위한 데이터 처리방법으로서,
    상기 적어도 한 개의 우회된 캐시 레벨에서 캐시 룩업을 우회하여, 지정된 데이터 값에 관한 데이터 액세스 요구를 상기 수신기 캐시 레벨에 전송하고,
    상기 지정된 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재하는지 여부에 관한 판정을 행하고, 상기 데이터 값이 상기 적어도 한 개의 우회된 캐시 레벨에 존재한다는 것을 나타내는 상기 판정에 응답하여, 상기 적어도 한 개의 우회된 캐시 레벨 중에서 한 개가 상기 데이터 액세스 요구에 대해 응답하게 하는 데이터 처리방법.
KR1020197025355A 2017-02-08 2018-01-25 캐시 우회 KR102536126B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/427,409 US10185663B2 (en) 2017-02-08 2017-02-08 Cache bypass
US15/427,409 2017-02-08
PCT/GB2018/050213 WO2018146449A1 (en) 2017-02-08 2018-01-25 Cache bypass

Publications (2)

Publication Number Publication Date
KR20190112089A KR20190112089A (ko) 2019-10-02
KR102536126B1 true KR102536126B1 (ko) 2023-05-24

Family

ID=61132822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197025355A KR102536126B1 (ko) 2017-02-08 2018-01-25 캐시 우회

Country Status (6)

Country Link
US (1) US10185663B2 (ko)
EP (1) EP3580660B1 (ko)
KR (1) KR102536126B1 (ko)
CN (1) CN110235112B (ko)
TW (1) TWI693519B (ko)
WO (1) WO2018146449A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782919B2 (en) * 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140156931A1 (en) * 2012-12-05 2014-06-05 Advanced Micro Devices, Inc. State encoding for cache lines

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797026A (en) * 1994-02-28 1998-08-18 Intel Corporation Method and apparatus for self-snooping a bus during a boundary transaction
US6684298B1 (en) * 2000-11-09 2004-01-27 University Of Rochester Dynamic reconfigurable memory hierarchy
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US7587556B2 (en) * 2006-03-29 2009-09-08 Arm Limited Store buffer capable of maintaining associated cache information
US7769955B2 (en) * 2007-04-27 2010-08-03 Arm Limited Multiple thread instruction fetch from different cache levels
US8874848B2 (en) 2011-09-30 2014-10-28 Net App, Inc. Intelligence for controlling virtual storage appliance storage allocation
US8949544B2 (en) 2012-11-19 2015-02-03 Advanced Micro Devices, Inc. Bypassing a cache when handling memory requests
US9785568B2 (en) * 2014-05-19 2017-10-10 Empire Technology Development Llc Cache lookup bypass in multi-level cache systems
US20160004644A1 (en) * 2014-07-02 2016-01-07 Lsi Corporation Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
US11237965B2 (en) * 2014-12-31 2022-02-01 Arteris, Inc. Configurable snoop filters for cache coherent systems
US20160210231A1 (en) * 2015-01-21 2016-07-21 Mediatek Singapore Pte. Ltd. Heterogeneous system architecture for shared memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140156931A1 (en) * 2012-12-05 2014-06-05 Advanced Micro Devices, Inc. State encoding for cache lines

Also Published As

Publication number Publication date
KR20190112089A (ko) 2019-10-02
TWI693519B (zh) 2020-05-11
CN110235112B (zh) 2023-11-10
US20180225219A1 (en) 2018-08-09
TW201830252A (zh) 2018-08-16
EP3580660A1 (en) 2019-12-18
CN110235112A (zh) 2019-09-13
EP3580660B1 (en) 2023-11-01
US10185663B2 (en) 2019-01-22
WO2018146449A1 (en) 2018-08-16

Similar Documents

Publication Publication Date Title
JP4226057B2 (ja) 包含キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US6578116B2 (en) Snoop blocking for cache coherency
US6643747B2 (en) Processing requests to efficiently access a limited bandwidth storage area
US7600077B2 (en) Cache circuitry, data processing apparatus and method for handling write access requests
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
CN106326148B (zh) 数据处理系统及其操作方法
US6269428B1 (en) Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
JP2000250881A (ja) 不均等メモリ・アクセス・システム内で書き戻しの衝突によって生じるライブロックを避けるための方法およびシステム
US7844777B2 (en) Cache for a host controller to store command header information
US20060184747A1 (en) Bandwidth of a cache directory by slicing the cache directory into two smaller cache directories and replicating snooping logic for each sliced cache directory
KR20210041485A (ko) 데이터 신호 경로 및 태그 신호 경로를 갖는 메모리 인터페이스
KR102536126B1 (ko) 캐시 우회
US20040186964A1 (en) Snoop filtering
US11321233B2 (en) Multi-chip system and cache processing method
US7917700B2 (en) Method and cache control circuit for replacing cache lines using alternate PLRU algorithm and victim cache coherency state
US6615320B2 (en) Store collapsing mechanism for SMP computer system
US8195892B2 (en) Structure for silent invalid state transition handling in an SMP environment
US20200394141A1 (en) Snooping With Access Permissions
KR102476933B1 (ko) 인터커넥트 및 인터커넥트의 작동방법
KR100329969B1 (ko) 캐시 동일성 유지 메모리 시스템에서 캐시 충돌 방지 장치및 그 방법
JPS63111552A (ja) キヤツシユ・メモリ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal