KR102354990B1 - 캐시 메모리 시스템 및 그 동작방법 - Google Patents
캐시 메모리 시스템 및 그 동작방법 Download PDFInfo
- Publication number
- KR102354990B1 KR102354990B1 KR1020140123704A KR20140123704A KR102354990B1 KR 102354990 B1 KR102354990 B1 KR 102354990B1 KR 1020140123704 A KR1020140123704 A KR 1020140123704A KR 20140123704 A KR20140123704 A KR 20140123704A KR 102354990 B1 KR102354990 B1 KR 102354990B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- tag
- cache
- bits
- address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
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
본 발명의 일 실시예에 따른 캐시 메모리 시스템은 메인 메모리에 저장된 데이터들 중 일부에 해당하는 캐시 데이터들을 저장하는 데이터 메모리, 복수의 웨이를 가지는 적어도 하나의 세트를 포함하고, 상기 캐시 데이터들에 각각 대응하는 N 비트의 태그 데이터들을 상기 적어도 하나의 세트로 저장하는 태그 메모리, 외부로부터 수신한 세트 어드레스가 가리키는 세트에 포함되는 상기 태그 데이터들 각각의 상위 K(1≤K<N) 비트와 상기 외부로부터 수신한 N 비트의 태그 어드레스의 상위 K 비트를 비교하고, 상기 태그 데이터들 각각의 나머지 (N-K) 비트와 상기 태그 어드레스의 나머지 (N-K) 비트를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 태그 비교부 및 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과에 따라, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하고, 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 업데이트 제어부를 포함할 수 있다.
Description
본 발명의 다양한 실시예들은 캐시 메모리 시스템 및 그 동작방법에 관한 것이다.
일반적으로 CPU나 GPU와 같은 처리 장치는 대용량의 외부 메모리에 저장된 명령어나 데이터를 가져와서 처리한다. 대부분의 대용량 외부 메모리의 처리 속도는 처리 장치에 비해서 매우 느리기 때문에 동작 속도를 개선하기 위해 캐시 메모리 시스템을 사용하고 있다.
캐시 메모리 시스템은 처리 장치가 최근에 액세스(access)한 데이터를 저장하고 있다가, 처리 장치가 동일한 데이터를 다시 요구하는 경우, 외부 메모리를 액세스(access)하지 않고, 고속의 캐시 메모리를 액세스(access)하도록 함으로써, 데이터 전송 속도를 향상시키는 역할을 한다.
처리 장치가 요청한 데이터가 캐시 메모리 시스템의 데이터 메모리에 적재되어 있는 경우(캐시 히트, cache hit)에는 데이터 메모리의 데이터가 처리 장치로 전달되고, 처리 장치가 요청한 데이터가 없는 경우(캐시 미스, cache miss)에는 외부 메모리로부터 데이터를 읽어온다. 또한, 캐시 메모리 시스템은 데이터 메모리에 저장되어 있는 캐시 데이터들 중 어느 하나를 삭제하고, 읽어온 데이터로 업데이트 하며, 읽어온 데이터는 처리 장치로 전달된다.
이러한 캐시 메모리 시스템은 매핑(mapping) 방식에 따라서 세트 연관 매핑 방식을 이용하는 세트 연관 캐시 메모리와, 직접 매핑 방식을 이용하는 직접 맵 캐시 메모리(Direct Mapped Cache Memory)로 구현할 수 있다. 세트 연관 캐시 메모리는 복수의 웨이(Way)를 가지며, 캐시 미스의 경우, 교체 정책(replacement status)에 따라 어느 하나의 웨이에 대응하는 캐시 데이터를 외부 메모리로부터 읽어온 새로운 데이터로 업데이트 한다.
캐시 미스(cache miss) 발생시, 교체할 캐시 데이터를 효율적으로 결정하기 위한 캐시 메모리 시스템 및 그 동작방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템은 메인 메모리에 저장된 데이터들 중 일부에 해당하는 캐시 데이터들을 저장하는 데이터 메모리, 복수의 웨이를 가지는 적어도 하나의 세트를 포함하고, 상기 캐시 데이터들에 각각 대응하는 N 비트의 태그 데이터들을 상기 적어도 하나의 세트로 저장하는 태그 메모리, 외부로부터 수신한 세트 어드레스가 가리키는 세트에 포함되는 상기 태그 데이터들 각각의 상위 K(1≤K<N) 비트와 상기 외부로부터 수신한 N 비트의 태그 어드레스의 상위 K 비트를 비교하고, 상기 태그 데이터들 각각의 나머지 (N-K) 비트와 상기 태그 어드레스의 나머지 (N-K) 비트를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 태그 비교부 및 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과에 따라, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하고, 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 업데이트 제어부를 포함할 수 있다.
본 발명의 일 실시예에 따른 업데이트 제어부는, 상기 태그 데이터들 중 어느 하나의 상위 K 비트가 상기 태그 어드레스의 상위 K 비트와 일치하지 않는 경우, 상기 어느 하나에 대응하는 캐시 데이터를 상기 업데이트 후보로 결정할 수 있다.
본 발명의 일 실시예에 따른 태그 비교부는, 상기 태그 데이터들 중 어느 하나도 상기 태그 어드레스와 일치하지 않는 경우, 상기 캐시 미스로 판단하고, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과를 상기 업데이트 제어부로 출력할 수 있다.
본 발명의 일 실시예에 따른 태그 비교부는, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 상기 캐시 히트로 판단할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템은, 상기 캐시 히트로 판단한 경우, 상기 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 읽어서, 상기 외부로 출력하는 데이터 출력부를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템이 상기 세트 어드레스가 동일한 복수의 데이터 요청을 수신하는 경우, 상기 업데이트 제어부는, 상기 복수의 데이터 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트를 비교한 결과에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하고, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 태그 비교부는, 상기 복수의 데이터들에 각각 대응하는 비교 벡터들을 출력하고, 상기 비교 벡터들 각각은 상기 웨이의 개수와 동일한 개수의 성분을 포함하며, 상기 성분은 해당 데이터의 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트를 비교하여, 일치하는 경우, 제1 값을, 일치하지 않는 경우, 제2 값을 나타내며, 상기 업데이트 제어부는, 상기 비교 벡터의 상기 성분 값들을 상기 웨이 별로 합산하고, 상기 합산한 결과값들에 기초하여, 상기 복수의 웨이들 중 어느 하나에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 제1 값은 1이고, 제2 값은 0이며, 상기 업데이트 제어부는, 상기 웨이 별로 합산한 결과값들 중 가장 작은 값을 가지는 웨이에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템은 메인 메모리에 저장된 데이터들 중 일부에 해당하는 캐시 데이터들을 저장하는 데이터 메모리, 복수의 웨이를 가지는 적어도 하나의 세트를 포함하고, 상기 캐시 데이터들에 각각 대응하는 N 비트의 태그 데이터들을 상기 적어도 하나의 세트로 저장하는 태그 메모리, 외부로부터 수신한 세트 어드레스가 가리키는 세트에 포함되는 상기 태그 데이터들 각각의 상위 K(1≤K<N) 비트와 상기 외부로부터 수신한 N 비트의 태그 어드레스의 상위 K 비트의 차이 값을 계산하고, 상기 태그 어드레스와 상기 태그 데이터들 각각을 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 태그 비교부 및 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값에 기초하여, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하고, 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 업데이트 제어부를 포함할 수 있다.
본 발명의 일 실시예에 따른 업데이트 제어부는 상기 차이 값이 임계 값 이상인 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정할 수 있다.
본 발명의 일 실시예에 따른 태그 비교부는, 상기 태그 데이터들 중 어느 하나도 상기 태그 어드레스가 일치하지 않는 경우, 상기 캐시 미스로 판단하고, 상기 업데이트 제어부로 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값을 상기 업데이트 제어부로 출력할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템이 상기 세트 어드레스가 동일한 복수의 데이터 요청을 수신하는 경우, 상기 업데이트 제어부는, 상기 복수의 데이터 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트의 차이값에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하고, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 외부로부터 요청되는 데이터에 대응하는 세트 어드레스 및 N 비트의 태그 어드레스를 수신하는 단계, 수신한 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들 각각의 상위 K(1≤K<N) 비트와 상기 외부로부터 수신한 N 비트의 태그 어드레스의 상위 K 비트를 비교하고, 상기 태그 데이터들 각각의 나머지 (N-K) 비트와 상기 태그 어드레스의 나머지 (N-K) 비트를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계, 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과에 따라, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 단계 및 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 업데이트 후보를 결정하는 단계는, 상기 태그 데이터들 중 어느 하나의 상위 K 비트가 상기 태그 어드레스의 상위 K 비트와 일치하지 않는 경우, 상기 어느 하나에 대응하는 캐시 데이터를 상기 업데이트 후보로 결정하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 미스인지 여부를 판단하는 단계는, 상기 태그 데이터들 중 어느 하나도 상기 태그 어드레스와 일치하지 않는 경우, 상기 캐시 미스로 판단하는 단계를 포함하고, 상기 방법은, 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과를 출력하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계는, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 상기 캐시 히트로 판단하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 상기 캐시 히트로 판단한 경우, 상기 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 읽어서, 상기 외부로 출력하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 상기 세트 어드레스가 동일한 복수의 데이터 요청을 수신하는 단계를 더 포함하고, 상기 업데이트 후보를 결정하는 단계는, 상기 복수의 데이터 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트를 비교한 결과에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하는 단계이며, 상기 업데이트 하는 단계는, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계일 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 상기 복수의 데이터들에 각각 대응하는 비교 벡터들을 출력하는 단계를 더 포함하고, 상기 비교 벡터들 각각은 상기 웨이의 개수와 동일한 개수의 성분을 포함하며, 상기 성분은 해당 데이터의 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트를 비교하여, 일치하는 경우, 제1 값을, 일치하지 않는 경우, 제2 값을 나타내며, 상기 업데이트 하는 단계는, 상기 비교 벡터의 상기 성분 값들을 상기 웨이 별로 합산하고, 상기 합산한 결과값들에 기초하여, 상기 복수의 웨이들 중 어느 하나에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계일 수 있다.
본 발명의 일 실시예에 따른 제1 값은 1이고, 상기 제2 값은 0이며, 상기 업데이트 하는 단계는, 상기 열 별로 합산한 결과값들 중 가장 작은 값을 가지는 열에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계일 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 외부로부터 요청되는 데이터에 대응하는 세트 어드레스 및 N 비트의 태그 어드레스를 수신하는 단계, 수신한 세트 어드레스가 가리키는 세트에 포함되는 상기 태그 데이터들 각각의 상위 K(1≤K<N) 비트와 상기 외부로부터 수신한 N 비트의 태그 어드레스의 상위 K 비트의 차이 값을 계산하고, 상기 태그 어드레스와 상기 태그 데이터들 각각을 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계, 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값에 기초하여, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 단계 및 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 업데이트 후보를 결정하는 단계는 상기 차이 값이 임계 값 이상인 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 단계일 수 있다.
본 발명의 일 실시예에 따른 캐시 미스인지 여부를 판단하는 단계는, 상기 태그 데이터들 중 어느 하나도 상기 태그 어드레스가 일치하지 않는 경우, 상기 캐시 미스로 판단하는 단계를 포함하고, 상기 방법은, 상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값을 출력하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 상기 세트 어드레스가 동일한 복수의 데이터 요청을 수신하는 단계를 더 포함하고, 상기 업데이트 후보를 결정하는 단계는, 상기 복수의 데이터 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터들 각각의 상위 K 비트의 차이값에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하는 단계이며, 상기 업데이트 하는 단계는, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계일 수 있다.
캐시 미스(cache miss) 발생시, 교체할 캐시 데이터를 결정하기 위한 부가적인 정보를 필요로 하지 않아 메모리를 최소화할 수 있다. 또한, 교체할 캐시 데이터를 결정하기 위한 로직(logic)의 복잡도 증가를 최소화할 수 있다.
도 1은 데이터 처리 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 4-웨이 세트 연관 캐시 메모리의 구조를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 5는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 6은 본 발명의 일 실시예에 따른 벡터(hit_results_h[M-1:0])의 일 예를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 복수의 데이터에 대한 벡터(hit_results_h[M-1:0])들의 일 예를 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 11은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 12는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 13은 본 발명의 일 실시예에 따른 복수의 데이터에 대한 벡터(hit_results_d[M-1:0])들의 일 예를 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 4-웨이 세트 연관 캐시 메모리의 구조를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 5는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 6은 본 발명의 일 실시예에 따른 벡터(hit_results_h[M-1:0])의 일 예를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 복수의 데이터에 대한 벡터(hit_results_h[M-1:0])들의 일 예를 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 11은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 12는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 13은 본 발명의 일 실시예에 따른 복수의 데이터에 대한 벡터(hit_results_d[M-1:0])들의 일 예를 나타내는 도면이다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 데이터 처리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 데이터 처리 시스템은, 데이터 처리 장치(10) 및 메인 메모리(200)를 포함할 수 있으며, 데이터 처리 장치(10)는 코어(core, 50) 및 캐시 메모리 시스템(100)을 포함할 수 있다. 또한, 시스템 버스(60)에는 캐시 메모리 시스템(100)의 라인과 메인 메모리(50)의 라인이 연결될 수 있다.
도 1에서는 설명의 편의를 위해 캐시 메모리 시스템(100)이 코어(50)와 별도로 위치하는 경우를 도시하였으나, 이에 한정되지 않으며, 캐시 메모리 시스템(100)은 코어(50)와 동일한 하나의 칩 내에 포함될 수 있다. 또한, 도 1의 데이터 처리 장치(10)는 그래픽스 처리 장치(GPU: Graphics Processing Unit)일 수 있으나, 이에 한정되는 것은 아니다.
코어(50)는 데이터 프로세싱 중에 필요로 하는 데이터를 요청하기 위해, 메인 메모리(200)를 액세스하기 전에, 먼저 캐시 메모리 시스템(100)을 액세스할 수 있다. 예를 들어, 데이터 처리 장치(10)가 GPU로 구성되는 경우, 코어(core)는 픽셀 쉐이더 코어로 구성될 수 있다. 픽셀 쉐이더 코어는 렌더링 시, 픽셀의 색상 값을 결정하는 픽셀 쉐이딩을 수행할 수 있으며, 픽셀 쉐이더 코어는 픽셀의 색상 값 결정에 사용하기 위해 텍스쳐(texture) 데이터를 캐시 메모리 시스템(100)에 요청할 수 있다. 또한, 코어(50)는 복수로 구성될 수 있으며, 복수의 코어는 동시에 캐시 메모리 시스템(100)에 데이터를 요청할 수 있다.
캐시 메모리 시스템(100)에 코어(50)가 요청한 데이터나 명령(이하, 타겟 데이터라 한다)이 존재하는 경우, 캐시 히트(cache hit)에 따른 동작이 수행된다. 캐시 히트 시에는 캐시 메모리 시스템(100)으로부터 출력된 캐시 데이터(타겟 데이터)가 코어(50)로 출력된다.
코어(50)가 메인 메모리(200)보다 캐시 메모리 시스템(100)에 먼저 액세스하는 이유는 빈번하게 사용되는 메인 메모리(200)의 데이터의 경우, 캐시 메모리 시스템(100)에 저장되어 있을 확률이 크기 때문이다. 따라서, 메인 메모리(200)보다 캐시 메모리 시스템(100)에 먼저 액세스함으로써, 데이터 전송 속도를 향상시킬 수 있다.
한편, 캐시 메모리 시스템(100)에 타겟 데이터가 존재하지 않는 경우에는 캐시 미스(cache miss)에 따른 동작이 수행된다. 즉, 이 경우에 캐시 메모리 시스템(100)은 메인 메모리(200)에 액세스하여, 메인 메모리(200)로부터 출력된 데이터가 상기 시스템 버스(60)를 거쳐 캐시 메모리 시스템(200)으로 인가된다.
이때, 캐시 메모리 시스템(100)은 기존에 저장되어 있는 캐시 데이터들 중 어느 하나를 삭제하고, 메인 메모리(200)로부터 출력된 데이터를 저장할 수 있다.
도 2는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 구성을 나타내는 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 캐시 메모리 시스템(100)은, 태그 비교부(110), 캐시 메모리(120) 및 업데이트 제어부(130)를 포함할 수 있다.
캐시 메모리(120)는 태그 메모리(123)와 데이터 메모리(125)를 포함할 수 있다. 데이터 메모리(125)는 메인 메모리(200)에 저장되어 있는 데이터의 일부 데이터들(캐시 데이터들)을 저장한다. 즉, 캐시 데이터는 메인 메모리(200)에 저장되어 있는 메인 데이터들 중 어느 하나와 동일하다. 태그 메모리(123)는 데이터 메모리(125)에 저장된 캐시 데이터들에 각각 대응하는 태그 데이터들을 저장할 수 있다. 태그 데이터는 캐시 데이터가 저장되어 있는 메인 메모리(200)의 실제 어드레스를 나타낼 수 있다. 태그 메모리(123)와 데이터 메모리(125)의 구조에 대해서는 이하, 도 3을 참조하여, 자세히 설명하기로 한다.
도 3을 참조하면, 태그 메모리(123)와 데이터 메모리(125)는 적어도 하나의 세트(310)를 포함할 수 있으며, 하나의 세트는 복수의 웨이(way)를 가질 수 있다. 태그 메모리(123)와 데이터 메모리(125)의 로우(row)는 세트를 나타내며, 칼럼(column)은 웨이를 나타낼 수 있다. 즉, 하나의 세트는 태그 메모리(123)와 데이터 메모리(125)의 동일한 로우에 저장될 수 있다.
도 3은 4개의 웨이를 가지는 4-웨이 세트 연관 캐시 메모리의 구조를 나타내는 도면이다. 도 3에 도시된 바와 같이, 캐시 메모리가 4-way 세트 연관 캐시 메모리로 구성되는 경우, 하나의 세트는 제1 내지 제4 캐시 데이터(CD1, CD2, CD3, CD4)와 제1 내지 제4 캐시 데이터 각각의 어드레스를 나타내는 제1 내지 제4 태그 데이터(TD1, TD2, TD3, TD4)를 포함할 수 있다.
또한, 제1 내지 제4 태그 데이터들(TD1, TD2, TD3, TD4)은 태그 메모리(123)의 동일한 로우에 저장될 수 있다. 이때, 제1 태그 데이터(TD1)는 제1 웨이(1-way)에 대응되며, 제2 태그 데이터(TD2)는 제2 웨이(2-way)에 대응되며, 제3 태그 데이터(TD3)는 제3 웨이(3-way)에 대응되며, 제4 태그 데이터(TD4)는 제4 웨이(4-way)에 대응될 수 있다. 제1 내지 제4 태그 데이터들(TD1, TD2, TD3, TD4)에 각각 대응하는 제1 내지 제4 캐시 데이터들(CD1, CD2, CD3, CD4)도 태그 데이터들(TD1, TD2, TD3, TD4)과 동일한 방식으로 데이터 메모리(125)에 저장될 수 있다.
한편, 캐시 메모리 시스템(100)은 외부로부터 요청 데이터에 대응하는 어드레스 비트(320)를 수신할 수 있다. 이때, 어드레스 비트(320)는 도 3에 도시된 바와 같이, 태그 어드레스(Tag add)와 세트 어드레스(Set add)를 포함할 수 있다. 이때, 세트 어드레스(Set add)는 캐시 메모리의 로우(row) 어드레스를 나타내는 데이터이다. 즉, 세트 어드레스(Set add)는 캐시 메모리(120)에 포함되는 복수의 세트 중 어느 하나의 세트를 가리킨다.
한편, 태그 비교부(110)는 외부(예를 들어, 코어)로부터 데이터 요청이 있는 경우, 요청된 데이터가 캐시 메모리(120)에 저장되어 있는지 여부를 판단할 수 있다. 즉, 캐시 히트인지 캐시 미스인지 여부를 판단한다.
태그 비교부(110)는 세트 어드레스(Set add)가 가리키는 세트(310)에 포함되는 태그 데이터들 각각을 태그 어드레스와 일치하는지 여부를 비교한다. 태그 비교부(110)는 태그 어드레스(Tag add)의 N 비트가 태그 데이터들 중 어느 하나의 N 비트와 일치하는 경우, 캐시 히트로 판단한다. 즉, 캐시 히트는 외부로부터 요청된 타겟 데이터가 데이터 메모리 내에 존재하고 있음을 나타낸다.
태그 비교부(110)는 태그 어드레스(Tag add)의 N 비트 중 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터의 N 비트 중 상위 K 비트(tagway[N-1:N-K])를 비교할 수 있다. 또한, 태그 비교부(110)는 태그 어드레스(Tag add)의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트 tagway[N-K-1:0])를 비교할 수 있다. 태그 비교부(110)는 비교 결과들에 기초하여, 캐시 히트인지, 캐시 미스인지 여부를 판단한다. 이에 대해서는, 도 4 및 5를 참조하여, 자세히 후술하기로 한다.
태그 비교부(110)가 캐시 히트로 판단한 경우, 태그 어드레스(Tag add)와 일치하는 태그 데이터에 대응하는 캐시 데이터가 외부로 출력될 수 있다. 태그 비교부(110)는 데이터 출력부(150)로 캐시 히트 신호를 출력할 수 있으며, 데이터 출력부(150)는 데이터 메모리(125)에 저장되어 있는 캐시 데이터를 읽어와 외부로 출력할 수 있다. 반면에, 태그 비교부(110)가 캐시 미스로 판단한 경우, 태그 비교부(110)는 메인 메모리(200)로 캐시 미스 신호를 출력하고, 타겟 데이터를 요청할 수 있다. 또한, 태그 비교부(110)는 태그 어드레스(Tag add)의 나머지 (N-K) 비트와 태그 데이터의 나머지 (N-K) 비트를 비교한 결과들을 업데이트 제어부(130)로 출력할 수 있다.
업데이트 제어부(130)는 태그 어드레스의 나머지 (N-K) 비트와 태그 데이터의 나머지 (N-K) 비트를 비교한 결과들에 기초하여, 업데이트 후보를 결정할 수 있다. 업데이트 제어부(130)는 업데이트 후보로 결정된 캐시 데이터들 중 어느 하나를 삭제하고, 메인 메모리(200)로부터 수신한 새로운 데이터로 업데이트 할 수 있다.
도 4는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 4를 참조하면, 태그 메모리(123)에 저장된 태그 데이터와 태그 어드레스는 N 비트로 나타낼 수 있다. 또한, 태그 비교부(110)는 제1 비교기(410), 제2 비교기(420) 및 AND 연산기(430)를 포함할 수 있다. 제1 비교기(410)는 K 비트 비교기일 수 있으며, 제2 비교기(420)는 (N-K) 비트 비교기일 수 있다.
태그 비교부(110)는 제1 비교기(410)를 이용하여, 태그 어드레스(Tag add)의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K 비트(tagway[N-1:N-K])를 비교할 수 있다. 또한, 태그 비교부(110)는 제2 비교기(420)를 이용하여, 태그 어드레스(Tag add)의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])를 비교할 수 있다.
제1 비교기(410)는 태그 어드레스의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터들 각각의 상위 K 비트(tagway[N-1:N-K])가 일치하는 경우, ‘1’을 출력하고, 일치하지 않는 경우, ‘0’을 출력할 수 있다. 또는, 반대로, 태그 어드레스의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 일치하는 경우, ‘0’을 출력하고, 일치하지 않는 경우, ‘1’을 출력할 수 있다. 다만, 이에 한정되는 것은 아니다.
또한, 제2 비교기(420)는 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])가 일치하는 경우, ‘1’을 출력하고, 일치하지 않는 경우, ‘0’을 출력할 수 있다. 또는, 반대로, 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])가 일치하는 경우, ‘0’을 출력하고, 일치하지 않는 경우, ‘1’을 출력할 수 있다. 다만, 이에 한정되는 것은 아니다.
이하에서는 설명의 편의를 위하여, 제1 비교기(410) 및 제2 비교기(420)는 입력되는 비트 데이터들이 일치하는 경우, ‘1’을 출력하는 것으로 설명하기로 한다.
AND 연산기(430)는 제1 비교기(410)의 출력값과 제2 비교기(420)의 출력값을 입력값으로 하여, AND 연산을 수행할 수 있다. 예를 들어, 태그 어드레스의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터들 각각의 상위 K 비트(tagway[N-1:N-K])가 일치하고(제1 비교기(410)에서 ‘1’이 출력되고), 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])가 일치하는(제2 비교기(420)에서 ‘1’이 출력되는) 경우, AND 연산기(430)는 ‘1’을 출력할 수 있다.
반대로, 태그 어드레스의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터들 각각의 상위 K 비트(tagway[N-1:N-K])가 일치하지 않거나, 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])가 일치하지 않는 경우, AND 연산기(430)는 ‘0’을 출력할 수 있다.
즉, AND 연산기(430)에서 1이 출력되는 경우, 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway[N-1:0])와 일치하는 것으로 판단되고, AND 연산기(430)에서 0이 출력되는 경우, 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway[N-1:0])가 일치하지 않는 것으로 판단될 수 있다.
도 5는 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 5를 참조하면, 웨이가 M개인 경우, 태그 비교부(110)는 M개의 제1 비교기들과 M개의 제2 비교기들을 포함하며, 2M개의 AND 연산기들을 포함할 수 있다.
태그 비교부(110)는 도 4에서 설명한 바와 같이, 복수의 웨이에 대응하는 태그 데이터들 각각을 태그 어드레스(Tag add)와 비교할 수 있다. 태그 데이터와 태그 어드레스(Tag add)를 비교하는 방법에 대해서는 도 4에서 자세히 설명하였으므로, 여기서는 설명을 생략하기로 한다.
한편, 태그 비교부(110)는 제2 AND 연산기(510)를 더 포함할 수 있다. 제2 AND 연산기(510)는 데이터 메모리(125)의 해당 웨이(way)에 캐시 데이터가 저장되어 있는지 여부를 나타내는 값(valid_way)과 해당 웨이의 태그 데이터와 태그 어드레스가 일치하는지 여부를 나타내는 값을 입력으로 받을 수 있다. 이때, 캐시 데이터가 저장되어 있는지 여부를 나타내는 값(valid_way)은 해당 웨이에 캐시 데이터가 저장되어 있는 경우, ‘1’, 해당 웨이에 캐시 데이터가 저장되어 있지 않은 경우 ‘0’을 나타낼 수 있다.
이에 따라, 해당 웨이에 캐시 데이터가 저장되어 있지 않거나(valid_way는 ‘0’), 해당 웨이의 태그 데이터와 태그 어드레스(Tag add)가 일치하지 않는 경우, 제2 AND 연산기(510)는 ‘0’을 출력할 수 있다. 또한, 해당 웨이에 캐시 데이터가 저장(valid_way는 ‘1’)되어 있고, 해당 웨이의 태그 데이터와 태그 어드레스가 일치하는 경우, 제2 AND 연산기(510)는 ‘1’을 출력할 수 있다. 태그 비교부(110)는 웨이들에 각각 대응하는 M개의 제2 AND 연산기들에서 출력되는 값들을 벡터(hit_results[M-1:0])로 출력할 수 있으며, 이때, 벡터의 크기는 웨이의 수(M)와 동일하다.
예를 들어, 도 5에 도시된 바와 같이, 캐시 메모리가 4-웨이 캐시 메모리로 구성되는 경우, 제1 웨이에 대응하는 제2 AND 연산기에서 1을, 제2 웨이에 대응하는 제2 AND 연산기에서 0을, 제3 웨이에 대응하는 제2 AND 연산기에서 0을, 제4 웨이에 대응하는 제2 AND 연산기에서 0이 출력할 수 있다. 또한, 출력되는 벡터(hit_results)는 [1,0,0,0]로 나타날 수 있다.
이때, 태그 비교부(110)는 벡터의 성분들 중 어느 하나가 1을 나타내는 경우, 캐시 히트로 판단한다. 즉, 1을 나타내는 성분이 있는 경우, 해당 성분에 대응하는 웨이의 태그 데이터가 태그 어드레스와 일치하고, 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터가 외부(예를 들어, 코어(50))로부터 요청된 타겟 데이터임을 나타낸다.
캐시 히트로 판단되면, 데이터 출력부(150)는 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 데이터 메모리로부터 읽어와서, 외부로 출력할 수 있다.
반면에, 태그 비교부(110)는 벡터의 성분들 모두가 0을 나타내는 경우, 캐시 미스로 판단한다. 즉, 모든 웨이의 태그 데이터들이 태그 어드레스(Tag add)와 일치하지 않으며, 코어(50)로부터 요청된 타겟 데이터가 캐시 메모리(125)에 저장되어 있지 않음을 나타낸다.
캐시 미스로 판단되면, 태그 비교부(110)는 웨이들에 각각 대응하는 제1 비교기들에서 출력되는 값들을 벡터(hit_result_h[M-1:0])로 출력할 수 있다.
도 6은 본 발명의 일 실시예에 따른 벡터(hit_result_h[M-1:0])의 일 예를 나타내는 도면이다.
이때, 벡터의 크기는 웨이의 수(M)와 동일하며, 도 6은 4개의 웨이를 가지는 경우의 벡터(hit_results_h[M-1:0])를 나타내는 도면이다. 벡터(hit_results_h[M-1:0])의 성분들 중 ‘0’을 나타내는 성분은, 해당 성분에 대응하는 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 일치하지 않음을 나타낸다. 반면에, 벡터(hit_result_h[])의 성분들 중 ‘1’을 나타내는 성분은, 해당 성분에 대응하는 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 일치함을 나타낸다.
업데이트 제어부(130)는 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 일치하지 않는 경우, 해당 태그 데이터에 대응하는 캐시 데이터와 외부로부터 요청된 데이터(타겟 데이터)의 공간적 지역성(spatial locality)이 없다고 판단할 수 있다. 이에 따라, 벡터(hit_results_h[])의 성분들 중 ‘0’을 나타내는 성분에 대응하는 웨이의 캐시 데이터를 업데이트 후보로 결정할 수 있다.
업데이트 제어부(130)는 캐시 미스의 경우, 타겟 데이터를 메인 메모리(200)로부터 수신하고, 업데이트 후보로 결정된 캐시 데이터들 중 어느 하나를 삭제하고, 메인 메모리(200)로부터 수신한 새로운 데이터로 업데이트 할 수 있다.
데이터 출력부(150)는 메인 메모리(200)로부터 수신한 새로운 데이터를 외부(예를 들어, 코어(50))로 출력할 수 있다.
도 7은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 7을 참조하면, 캐시 메모리 시스템(100)은 N 비트의 태그 어드레스(Tag add[N-1:0])를 수신할 수 있다(S710).
예를 들어, 도 3에서 설명한 바와 같이, 캐시 메모리 시스템(100)은 외부로부터 데이터 요청을 수신할 수 있으며, 요청되는 데이터에 대응하는 세트 어드레스(Set add) 및 태그 어드레스(Tag add)를 포함하는 어드레스 비트를 수신할 수 있다. 세트 어드레스(Set add)는 캐시 메모리의 로우(row) 어드레스를 나타내는 데이터이고, 태그 어드레스(Tag add)는 요청되는 데이터의 메인 메모리(200)에서의 실제 어드레스일 수 있다.
또한, 태그 어드레스(Tag add)는 N 비트일 수 있다. 어드레스 비트가 수신되면, 캐시 메모리 시스템(100)은 세트 어드레스(Set add)가 가리키는 세트에 포함되는 태그 데이터들을 출력할 수 있다. 이때, 태그 데이터는 태그 어드레스(Tag add)와 동일하게 N 비트일 수 있다.
캐시 메모리 시스템(100)은 출력된 태그 데이터들 각각의 상위 K 비트와 태그 어드레스의 상위 K 비트를 비교하고, 태그 데이터들 각각의 나머지 (N-K) 비트와 태그 어드레스의 나머지 (N-K) 비트를 비교할 수 있다(S720).
예를 들어, 캐시 메모리 시스템(100)은 제1 비교기(410) 및 제2 비교기(420)를 포함할 수 있다. 캐시 메모리 시스템(100)은 제1 비교기(410)를 이용하여, 태그 어드레스의 상위 K(1≤K<N) 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K 비트(tagway[N-1:N-K])를 비교할 수 있다. 또한, 캐시 메모리 시스템(100)은 제2 비교기(420)를 이용하여, 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터의 나머지 (N-K) 비트(tagway[N-K-1:0])를 비교할 수 있다.
캐시 메모리 시스템(100)은 비교 결과들에 기초하여, 캐시 히트인지, 캐시 미스인지 여부를 판단할 수 있다(S730).
예를 들어, 출력된 태그 데이터들 중 어느 하나의 태그 데이터가 태그 어드레스와 일치하는 경우, 캐시 메모리 시스템(100)은 캐시 히트로 판단한다. 반면에, 출력된 태그 데이터들 중 태그 어드레스와 일치하는 태그 데이터가 존재하지 않는 경우, 캐시 메모리 시스템(100)은 캐시 미스로 판단한다.
이때, 세트 어드레스(Set add)가 가리키는 세트의 캐시 데이터들 중 유효하지 않은 데이터가 존재하는 경우(적어도 하나의 캐시 라인이 비어 있는 경우), 캐시 메모리 시스템(100)은 메인 메모리로부터 수신한 타겟 데이터를 비어있는 캐시 라인에 저장할 수 있다.
반면에, 세트 어드레스(Set add)가 가리키는 세트의 캐시 데이터들이 모두 유효한 경우(모든 캐시 라인에 캐시 데이터들이 저장되어 있는 경우), 캐시 메모리 시스템(100)은 태그 데이터들 각각의 상위 K 비트와 태그 어드레스의 상위 K 비트를 비교한 결과에 따라, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정할 수 있다(S740).
예를 들어, 캐시 메모리 시스템(100)은 캐시 미스로 판단되는 경우, 출력된 태그 데이터들 각각에 대하여, 태그 데이터의 상위 K 비트(tagway[N-1:N-K])와 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])가 일치하는 경우, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보에 포함시킬 수 있다. 반면에, 태그 데이터의 상위 K 비트(tagway[N-1:N-K])와 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])가 일치하지 않는 경우, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보에서 제외시킬 수 있다.
캐시 메모리 시스템(100)은 결정된 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다(S750).
캐시 메모리 시스템(100)은 캐시 미스로 판단되는 경우, 캐시 미스 신호를 출력하여, 메인 메모리로부터 타겟 데이터를 수신할 수 있다. 캐시 메모리 시스템(100)은 결정된 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 메인 메모리(200)로부터 수신한 데이터로 업데이트 할 수 있다.
도 8은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 캐시 데이터 업데이트 방법을 나타내는 흐름도이다.
도 8을 참조하면, 캐시 메모리 시스템은 세트 어드레스가 동일한 복수의 데이터 요청을 수신할 수 있다(S810).
예를 들어, 도 1의 코어(50)가 멀티 코어로 구성되는 경우, 캐시 메모리 시스템(100)은 동시에 복수의 데이터 요청을 수신할 수 있다. 캐시 메모리 시스템(100)은 복수의 데이터 각각에 대응하는 태그 어드레스(Tag add) 및 세트 어드레스(Set add)를 수신할 수 있으며, 이때, 복수의 데이터에 각각 대응하는 세트 어드레스들이 동일할 수 있다.
캐시 메모리 시스템(100)은 복수의 데이터 각각에 대하여, 도 4에서 설명한 바와 같이, 수신한 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 세트 어드레스(Set add)가 가리키는 세트에 포함된 태그 데이터들 각각의 상위 K 비트(tagway[N-1:N-K])를 비교하고, 태그 어드레스의 나머지 (N-K) 비트(Tag add[N-K-1:0])와 태그 데이터들 각각의 (N-K) 비트(tagway[N-K-1:0])를 비교할 수 있다. 캐시 메모리 시스템(100)은 비교 결과들에 기초하여, 요청된 복수의 데이터 각각에 대하여, 캐시 히트인지, 캐시 미스인지 여부를 판단할 수 있다. 이에 대해서는, 도 5에서 자세히 설명하였으므로, 구체적인 설명은 생략하기로 한다.
또한, 캐시 미스인 경우, 캐시 메모리 시스템(100)은 복수의 데이터 각각에 대하여, 도 9에 도시된 바와 같이, 벡터(hit_results_h[])를 출력할 수 있다.
예를 들어, 캐시 메모리 시스템(100)이 4개의 데이터를 동시에 요청 받은 경우, 제1 데이터에 대응하는 벡터(hit_result_h[0][M-1:0]=[1 0 0 0]), 제2 데이터에 대응하는 벡터(hit_result_h[1][M-1:0]=[0 0 0 0]), 제3 데이터에 대응하는 벡터(hit_result_h[2][M-1:0]=[0 1 1 0]) 및 제4 데이터에 대응하는 벡터(hit_result_h[3][M-1:0]=[0 0 0 0])를 출력할 수 있다.
이때, 벡터의 성분 값이 1을 나타내면, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 해당 웨이의 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 일치한다는 의미이고, 벡터의 성분 값이 0을 나타내면, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 해당 웨이의 태그 데이터의 상위 K 비트(tagway[N-1:N-K])가 일치하지 않음을 의미할 수 있다. 이에 대해서는, 도 6에서 자세히 설명하였으므로 구체적인 설명은 생략하기로 한다.
이에 따라, 캐시 메모리 시스템(100)은, 벡터의 성분 값에 기초하여, 복수의 데이터 각각에 대한 업데이트 후보를 결정할 수 있다(S820).
예를 들어, 벡터의 성분 값이 0인 경우(해당 웨이의 태그 데이터의 상위 K 비트와 태그 어드레스의 상위 K 비트가 일치하지 않는 경우), 캐시 메모리 시스템(100)은 외부(예를 들어, 코어(50))로부터 요청된 데이터와 해당 태그 데이터에 대응하는 캐시 데이터는 공간적 지역성(spatial locality)이 없다고 판단할 수 있다. 이에 따라, 캐시 메모리 시스템(100)은 벡터(hit_results_h[])의 성분들 중 ‘0’을 나타내는 성분에 대응하는 웨이의 캐시 데이터를 업데이트 후보로 결정할 수 있다.
도 9를 참조하면, 캐시 메모리 시스템(100)은 제1 데이터에 대하여, 제2 웨이에 대응하는 캐시 데이터(제2 캐시 데이터), 제3 웨이에 대응하는 캐시 데이터(제3 캐시 데이터) 및 제4 웨이에 대응하는 캐시 데이터(제4 캐시 데이터)를 업데이트 후보로 결정할 수 있다. 또한, 캐시 메모리 시스템(100)은 제2 데이터 및 제4 데이터에 대하여, 제1 내지 제4 웨이 각각에 대응하는 캐시 데이터(제1 내지 제4 캐시 데이터)를 업데이트 후보로 결정할 수 있으며, 제3 데이터에 대하여, 제1 캐시 데이터 및 제4 캐시 데이터를 업데이트 후보로 결정할 수 있다.
복수의 데이터 각각에 대해 업데이트 후보가 결정되면, 캐시 메모리 시스템(100)은 복수의 데이터에 대하여, 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다(S830).
예를 들어, 도 9를 참조하면, 제1 캐시 데이터의 경우, 제2 내지 제4 데이터에 대한 업데이트 후보로 결정되어, 업데이트 후보로 결정된 횟수가 3회이다. 또한, 제2 캐시 데이터의 경우도, 제2 내지 제4 데이터에 대한 업데이트 후보로 결정되어, 업데이트 후보로 결정된 횟수가 3회이다. 또한, 제3 캐시 데이터의 경우, 제1, 제2 및 제4 데이터에 대한 업데이트 후보로 결정되어, 업데이트 후보로 결정된 횟수가 3회이다. 제4 캐시 데이터의 경우, 제1 내지 제4 데이터에 대한 업데이트 후보로 결정되어, 업데이트 후보로 결정된 횟수가 4회이다.
이에 따라, 캐시 메모리 시스템(100)은 제4 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
한편, 캐시 메모리 시스템(100)은 도 9에 도시된 바와 같이, 복수의 벡터들이 출력되는 경우, 복수의 벡터들의 성분 값을 웨이 별로 합산할 수 있다. 이때, 캐시 메모리 시스템(100)은 복수의 웨이들 중 합산 값이 가장 작은 웨이를 선택할 수 있으며, 선택된 웨이에 대응하는 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
예를 들어, 각 데이터에 대하여, 제1 웨이의 합산값은 1, 제2 웨이의 합산 값은 1, 제3 웨이의 합산 값은 1, 제4 웨이의 합산값은 0 이 된다. 캐시 메모리 시스템(100)은 합산 값이 가장 작은 제4 웨이를 선택할 수 있으며, 선택된 제4 웨이에 대응하는 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
도 10은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이 중 하나의 웨이에 대응하는 태그 데이터를 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 10을 참조하면, 태그 메모리에 저장된 태그 데이터와 태그 어드레스는 N 비트로 나타낼 수 있다. 또한 태그 비교부(110)는 제3 비교기(1010), 뺄셈기(1020)를 포함할 수 있다. 제3 비교기(1010)는 N 비트 비교기일 수 있으며, 뺄셈기(1020)는 K 비트 뺄셈기일 수 있다.
태그 비교부(110)는 제3 비교기(1010)를 이용하여, 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway[N-1:0])를 비교할 수 있다. 제3 비교기(1010)는 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway[N-1:0])가 일치하는 경우, ‘1’을 출력하고, 일치하지 않는 경우, ‘0’을 출력할 수 있다. 또는, 반대로, 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway[N-1:0])가 일치하는 경우, ‘0’을 출력하고, 일치하지 않는 경우, ‘1’을 출력할 수 있다. 다만, 이에 한정되는 것은 아니다. 이하에서는 설명의 편의를 위하여, 제3 비교기(1010)가 입력되는 비트 데이터들이 일치하는 경우에 ‘1’을 출력하는 것으로 설명하기로 한다.
또한, 태그 비교부(110)는 뺄셈기(1020)를 이용하여, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K(1≤K<N)비트(tagway[N-1:N-K])의 차이값을 연산할 수 있다.
또한, 태그 비교부(110)는 제4 비교기(1030)를 더 포함하고, 제4 비교기(1030)는 뺄셈기(1020)에서 출력된 차이값이 임계값 이하이면, 1을 출력하고, 뺄셈기(1020)에서 출력된 차이값이 임계값 초과이면, 0을 출력할 수 있다. 다만, 이에 한정하는 것은 아니다.
도 11은 본 발명의 일 실시예에 따른 하나의 세트에 포함되는 복수의 웨이에 대응하는 태그 데이터들을 각각 태그 어드레스와 비교하는 방법을 설명하기 위해 참조되는 도면이다.
도 11을 참조하면, 웨이가 M개인 경우, 태그 비교부(110)는 M개의 제3 비교기들과 M개의 뺄셈기들을 포함하며, M개의 제2 AND 연산기들을 포함할 수 있다.
태그 비교부(110)는 도 10에서 설명한 바와 같이, 복수의 웨이에 대응하는 태그 데이터들 각각을 태그 어드레스와 비교할 수 있다. 태그 데이터와 태그 어드레스를 비교하는 방법에 대해서는 도 10에서 자세히 설명하였므로, 여기서는 설명을 생략하기로 한다.
한편, 태그 비교부(110)는 제2 AND 연산기(510)를 더 포함할 수 있다. 제2 AND 연산기(510)는 데이터 메모리(125)의 해당 웨이에 캐시 데이터가 저장되어 있는지 여부를 나타내는 값(valid_way)과 해당 웨이의 태그 데이터와 태그 어드레스가 일치하는지 여부를 나타내는 값을 입력으로 받을 수 있다. 이때, 캐시 데이터가 저장되어 있는지 여부를 나타내는 값(valid_way)은 해당 웨이에 캐시 데이터가 저장되어 있는 경우, ‘1’을, 해당 웨이에 캐시 데이터가 저장되어 있지 않은 경우 ‘0’을 나타낼 수 있다.
이에 따라, 해당 웨이에 캐시 데이터가 저장되어 있지 않거나(valid_way는 ‘0’), 해당 웨이의 태그 데이터와 태그 어드레스가 일치하지 않는 경우, 제2 AND 연산기(510)는 ‘0’을 출력할 수 있다. 또한, 해당 웨이에 캐시 데이터가 저장(valid)되어 있고, 해당 웨이의 태그 데이터와 태그 어드레스가 일치하는 경우, 제2 AND 연산기(510)는 ‘1’을 출력할 수 있다.
태그 비교부(110)는 웨이들에 각각 대응하는 M개의 제2 AND 연산기들에서 출력되는 값을 벡터(hit_results[])로 출력할 수 있으며, 이때, 벡터의 크기는 웨이 수(M)와 동일하다. 예를 들어, 제1 웨이에 대응하는 제2 AND 연산기에서 1을, 제2 웨이에 대응하는 제2 AND 연산기에서 0을, 제3 웨이에 대응하는 제2 AND 연산기에서 0을, 제4 웨이에 대응하는 제2 AND 연산기에서 0이 출력되면, 벡터(hit_result)는 [1,0,0,0]로 나타날 수 있다.
이때, 태그 비교부(110)는 벡터의 성분들 중 어느 하나가 1을 나타내는 경우, 캐시 히트로 판단한다. 즉, 1을 나타내는 성분이 있는 경우, 해당 성분에 대응하는 웨이의 태그 데이터가 태그 어드레스와 일치하며, 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터가 외부(예를 들어, 코어(50))로부터 요청된 타겟 데이터임을 나타낸다.
캐시 히트로 판단되면, 데이터 출력부(150)는 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 데이터 메모리로부터 읽어와서, 외부로 출력할 수 있다.
반면에, 태그 비교부(1110)는 벡터의 성분들 모두가 0을 나타내는 경우, 캐시 미스로 판단한다. 즉, 모든 웨이의 태그 데이터들이 태그 어드레스와 일치하지 않으며, 외부(예를 들어, 코어(50))로부터 요청된 타겟 데이터가 캐시 메모리에 저장되어 있지 않음을 나타낸다.
캐시 미스로 판단되면, 태그 비교부(110)는 웨이들에 각각 대응하는 제4 비교기(1030)들에서 출력되는 값들을 벡터(hit_results_d[])로 출력할 수 있다.
이때, 벡터의 크기는 웨이의 수(M)와 동일하다. 벡터의 성분들 중 0을 나타내는 성분은, 해당 성분에 대응하는 태그 데이터의 상위 K 비트와 태그 어드레스의 상위 K 비트의 차이가 임계값보다 크다는 것을 나타낸다. 반면에 벡터의 성분들 중 ‘1’을 나타내는 성분은 해당 성분에 대응하는 태그 데이터의 상위 K 비트와 태그 어드레스의 상위 K 비트의 차이가 임계값 이하임을 나타낸다.
업데이트 제어부(130)는 태그 어드레스의 상위 K 비트와 태그 데이터의 상위 K 비트의 차이가 임계값보다 큰 경우, 해당 태그 데이터에 대응하는 캐시 데이터와 외부로부터 요청된 데이터(타겟 데이터)의 공간적 지역성(spatial locality)이 없다고 판단할 수 있다. 이에 따라, 벡터(hit_result_h[])의 성분들 중 ‘0’을 나타내는 성분에 대응하는 웨이의 캐시 데이터를 업데이트 후보로 결정할 수 있다.
업데이트 제어부(130)는 캐시 미스의 경우, 타겟 데이터를 메인 메모리(200)로부터 수신하고, 업데이트 후보로 결정된 캐시 데이터들 중 어느 하나를 삭제하고, 메인 메모리(200)로부터 수신한 새로운 데이터로 업데이트 할 수 있다. 또한, 데이터 출력부(150)는 메인 메모리(200)로부터 수신한 새로운 데이터를 외부로 출력할 수 있다.
도 12는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 데이터 업데이트 방법을 나타내는 흐름도이다.
도 12를 참조하면, 캐시 메모리 시스템(100)은 N 비트의 태그 어드레스를 수신할 수 있다(S1210).
예를 들어, 도 3에서 설명한 바와 같이, 캐시 메모리 시스템(100)은 외부로부터 데이터 요청을 수신할 수 있으며, 요청되는 데이터에 대응하는 세트 어드레스(Set add) 및 태그 어드레스(Tag add)를 포함하는 어드레스 비트를 수신할 수 있다. 세트 어드레스(Set add)는 캐시 메모리의 로우(row) 어드레스를 나타내는 데이터이고, 태그 어드레스(Tag add)는 요청되는 데이터의 메인 메모리(200)에서의 실제 어드레스일 수 있다.
또한, 태그 어드레스(Tag add)는 N 비트일 수 있다. 어드레스 비트가 수신되면, 캐시 메모리 시스템(100)은 세트 어드레스(Set add)가 가리키는 세트에 포함되는 태그 데이터들을 출력할 수 있다. 이때, 태그 데이터는 태그 어드레스(Tag add)와 동일하게 N 비트일 수 있다.
캐시 메모리 시스템(100)은 출력된 태그 데이터들 각각의 N 비트와 태그 어드레스의 N 비트를 비교하고, 태그 데이터들 각각의 상위 K 비트와 태그 어드레스의 상위 K 비트의 차이값을 연산하여, 임계값과 비교할 수 있다(S1220).
예를 들어, 캐시 메모리 시스템(100)은 제3 비교기(1010), 뺄셈기(1020) 및 제4 비교기(1030)를 포함할 수 있다. 캐시 메모리 시스템(100)은 제3 비교기(1010)를 이용하여, 태그 어드레스의 N 비트(Tag add[N-1:0])와 태그 데이터의 N 비트(tagway [N-1:0])를 비교할 수 있다. 또한, 캐시 메모리 시스템(100)은 뺄셈기(1020)를 이용하여, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 태그 데이터의 상위 K 비트(tagway[N-1:N-K])의 차이값을 연산할 수 있다. 또한, 캐시 메모리 시스템(100)은 제4 비교기(1030)를 이용하여, 연산된 차이값이 임계값 이하인지를 판단할 수 있다.
캐시 메모리 시스템(100)은 출력된 태그 데이터들 각각의 N 비트와 태그 어드레스의 N 비트를 비교한 결과에 기초하여, 캐시 히트인지, 캐시 미스인지 여부를 판단할 수 있다(S1230).
예를 들어, 출력된 태그 데이터들 중 어느 하나의 태그 데이터가 태그 어드레스와 일치하는 경우, 캐시 메모리 시스템은 캐시 히트로 판단한다. 반면에, 출력된 태그 데이터들 중 태그 어드레스와 일치하는 태그 데이터가 존재하지 않는 경우, 캐시 미스로 판단한다.
이때, 세트 어드레스(Set add)가 가리키는 세트의 캐시 데이터들 중 유효하지 않은 데이터가 존재하는 경우(적어도 하나의 캐시 라인이 비어 있는 경우), 메인 메모리로부터 수신한 타겟 데이터를 비어있는 캐시 라인에 저장할 수 있다.
반면에, 세트 어드레스(Set add)가 가리키는 세트의 캐시 데이터들이 모두 유효한 경우(모든 캐시 라인에 캐시 데이터들이 저장되어 있는 경우), 태그 데이터들 각각의 상위 K 비트와 태그 어드레스의 상위 K 비트의 차이값에 따라, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정할 수 있다(S1240).
예를 들어, 캐시 메모리 시스템(100)은 캐시 미스로 판단되는 경우, 출력된 태그 데이터들 각각에 대하여, 태그 데이터의 상위 K 비트(tagway[N-1:N-K])와 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])의 차이값이 임계값 초과인 경우, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보에 포함시킬 수 있다. 반면에, 태그 데이터의 상위 K 비트(tagway[N-1:N-K])와 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])의 차이값이 임계값 이하인 경우, 해당 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보에서 제외시킬 수 있다.
캐시 메모리 시스템(100)은 결정된 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다(S1250).
캐시 메모리 시스템(100)은 캐시 미스로 판단되는 경우, 캐시 미스 신호를 출력하여, 메인 메모리(200)로부터 타겟 데이터를 수신할 수 있다. 캐시 메모리 시스템(100)은 결정된 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 메인 메모리(200)로부터 수신한 데이터로 업데이트 할 수 있다.
또한, 본 발명의 일 실시예에 따른 캐시 메모리 시스템(100)은 세트 어드레스가 동일한 복수의 데이터 요청을 수신할 수 있다. 이러한 경우, 캐시 메모리 시스템(100)은 복수의 데이터 각각에 대하여, 도 10 및 11에서 설명한 바와 같이, 태그 어드레스와 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들 각각을 비교할 수 있다. 또한, 캐시 메모리 시스템(100)은 복수의 데이터 각각에 대하여, 도 10 및 11에서 설명한 바와 같이, 태그 어드레스의 상위 K 비트와 태그 데이터들 각각의 상위 K 비트의 차이 값을 연산할 수 있다.
캐시 메모리 시스템(100)은 캐시 미스인 경우, 복수의 데이터 각각에 대하여, 도 13에 도시된 바와 같이, 벡터(hit_results_d[])를 출력할 수 있다.
예를 들어, 캐시 메모리 시스템(100)이 4개의 데이터를 동시에 요청 받은 경우, 제1 데이터에 대응하는 벡터(hit_results_d[0][M-1:0]=[0 0 0 1]), 제2 데이터에 대응하는 벡터(hit_results_d[1][M-1:0]=[0 0 0 0]), 제3 데이터에 대응하는 벡터(hit_results_d[2][M-1:0]=[1 1 0 0]) 및 제4 데이터에 대응하는 벡터(hit_results_d[3][M-1:0]=[0 0 0 0])를 출력할 수 있다.
이때, 벡터의 성분 값이 1을 나타내면, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 해당 웨이의 태그 데이터의 상위 K 비트(tagway[N-1:N-K])의 차이값이 임계값 이하라는 의미할 수 있다. 반면에, 벡터의 성분 값이 0을 나타내면, 태그 어드레스의 상위 K 비트(Tag add[N-1:N-K])와 해당 웨이의 태그 데이터의 상위 K 비트(tagway[N-1:N-K])의 차이값이 임계값보다 크다는 것을 의미할 수 있다.
이에 따라, 캐시 메모리 시스템(100)은, 벡터의 성분 값에 기초하여, 복수의 데이터 각각에 대한 업데이트 후보를 결정할 수 있다. 예를 들어, 벡터의 성분 값이 0인 경우(해당 웨이의 태그 데이터의 상위 K 비트와 태그 어드레스의 상위 K 비트의 차이값이 임계값보다 큰 경우), 캐시 메모리 시스템(100)은 외부로부터 요청된 데이터와 해당 태그 데이터에 대응하는 캐시 데이터는 공간적 지역성(spatial locality)이 없다고 판단할 수 있다.
이에 따라, 캐시 메모리 시스템(100)은 벡터(hit_result_d[])의 성분들 중 ‘0’을 나타내는 성분에 대응하는 웨이의 캐시 데이터를 업데이트 후보로 결정할 수 있다.
도 13을 참조하면, 캐시 메모리 시스템(100)은 제1 데이터에 대하여, 제1 웨이에 대응하는 캐시 데이터(제1 캐시 데이터), 제2 웨이에 대응하는 캐시 데이터(제2 캐시 데이터) 및 제3 웨이에 대응하는 캐시 데이터(제3 캐시 데이터)를 제1 데이터에 대한 업데이트 후보로 결정할 수 있다. 또한, 캐시 메모리 시스템(100)은 제2 데이터 및 제4 데이터에 대하여, 제1 내지 제4 웨이 각각에 대응하는 캐시 데이터(제1 내지 제4 캐시 데이터)를 제2 데이터 및 제4 데이터에 대한 업데이트 후보로 결정할 수 있으며, 제3 데이터에 대하여, 제1 캐시 데이터 및 제2 캐시 데이터를 제3 데이터에 대한 업데이트 후보로 결정할 수 있다.
복수의 데이터 각각에 대해 업데이트 후보가 결정되면, 캐시 메모리 시스템(100)은 복수의 데이터에 대하여, 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
업데이트 후보 중 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 선택하는 방법에 대해서는 도 9에서 자세히 설명하였으므로, 구체적인 설명은 생략하기로 한다.
또한, 캐시 메모리 시스템(100)은 복수의 벡터들이 출력되는 경우, 복수의 벡터들의 성분 값을 웨이 별로 합산할 수 있다. 이때, 캐시 메모리 시스템(100)은 복수의 웨이들 중 합산 값이 가장 작은 웨이를 선택할 수 있으며, 선택된 웨이에 대응하는 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 할 수 있다.
업데이트 후보 중 웨이 별 합산 값에 기초하여, 캐시 데이터를 선택하는 방법에 대해서도, 도 9에서 자세히 설명하였으므로, 구체적인 설명은 생략하기로 한다.
본 발명에 따른 캐시 메모리 시스템 및 그 동작방법은, 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
한편, 본 발명의 캐시 메모리 시스템 및 그 동작방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
Claims (25)
- 캐시 메모리 시스템에 있어서,
메인 메모리에 저장된 데이터들 중 일부에 해당하는 캐시 데이터를 저장하는 데이터 메모리;
상기 캐시 데이터에 대응하는 N 비트의 태그 데이터를 저장하는 태그 메모리;
수신된 세트 어드레스에 대응하는 태그 데이터의 상위 K(1≤K<N) 비트와 수신된 N 비트의 태그 어드레스의 상위 K 비트를 비교하고, 상기 태그 데이터의 나머지 (N-K) 비트와 상기 태그 어드레스의 나머지 (N-K) 비트를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 태그 비교부; 및
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과에 따라, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하고, 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 업데이트 제어부를 포함하고,
상기 캐시 메모리 시스템이 상기 세트 어드레스가 동일한 복수의 데이터 요청들을 수신하는 경우,
상기 업데이트 제어부는,
상기 복수의 데이터 요청들의 복수의 데이터들 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트를 비교한 결과에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하고, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트하는 캐시 메모리 시스템. - 제1항에 있어서,
상기 업데이트 제어부는,
상기 태그 데이터의 상위 K 비트가 상기 태그 어드레스의 상위 K 비트와 일치하지 않는 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 상기 업데이트 후보로 결정하는 캐시 메모리 시스템. - 삭제
- 제1항에 있어서,
상기 태그 비교부는,
상기 세트 어드레스에 대응하는 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 상기 캐시 히트로 판단하는 캐시 메모리 시스템. - 제1항에 있어서,
상기 캐시 메모리 시스템은,
상기 캐시 히트로 판단한 경우, 상기 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 읽어서, 외부로 출력하는 데이터 출력부를 더 포함하는 캐시 메모리 시스템. - 삭제
- 제1항에 있어서,
상기 태그 비교부는,
상기 복수의 데이터들에 각각 대응하는 비교 벡터들을 출력하고,
상기 비교 벡터들 각각은 상기 태그 메모리의 웨이의 개수와 동일한 개수의 성분을 포함하며, 상기 성분은 해당 데이터의 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트를 비교하여, 일치하는 경우, 제1 값을, 일치하지 않는 경우, 제2 값을 나타내며,
상기 업데이트 제어부는,
상기 비교 벡터들의 상기 성분 값들을 상기 웨이 별로 합산하고, 상기 합산한 결과값들에 기초하여, 상기 웨이들 중 어느 하나에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 캐시 메모리 시스템. - 제7항에 있어서,
상기 제1 값은 1이고, 상기 제2 값은 0이며,
상기 업데이트 제어부는,
상기 웨이 별로 합산한 결과값들 중 가장 작은 값을 가지는 웨이에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 캐시 메모리 시스템. - 캐시 메모리 시스템에 있어서,
메인 메모리에 저장된 데이터들 중 일부에 해당하는 캐시 데이터를 저장하는 데이터 메모리;
상기 캐시 데이터에 대응하는 N 비트의 태그 데이터를 저장하는 태그 메모리;
수신된 세트 어드레스에 대응하는 태그 데이터의 상위 K(1≤K<N) 비트와 수신된 N 비트의 태그 어드레스의 상위 K 비트의 차이 값을 계산하고, 상기 태그 어드레스와 상기 태그 데이터를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 태그 비교부; 및
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값에 기초하여, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하고, 상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 업데이트 제어부를 포함하고,
상기 캐시 메모리 시스템이 상기 세트 어드레스가 동일한 복수의 데이터 요청들을 수신하는 경우,
상기 업데이트 제어부는,
상기 복수의 데이터 요청들의 복수의 데이터들 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트의 차이값에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하고, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 캐시 메모리 시스템. - 제9항에 있어서,
상기 업데이트 제어부는
상기 차이 값이 임계 값 이상인 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 캐시 메모리 시스템. - 제9항에 있어서,
상기 태그 비교부는,
상기 세트 어드레스에 대응하는 태그 데이터들 중 어느 하나도 상기 태그 어드레스가 일치하지 않는 경우, 상기 캐시 미스로 판단하고, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값을 상기 업데이트 제어부로 출력하는 캐시 메모리 시스템. - 삭제
- 캐시 메모리 시스템의 동작방법에 있어서,
외부로부터 요청되는 데이터에 대응하는 세트 어드레스 및 N 비트의 태그 어드레스를 수신하는 단계;
상기 세트 어드레스에 대응하는 태그 데이터의 상위 K(1≤K<N) 비트와 상기 N 비트의 태그 어드레스의 상위 K 비트를 비교하고, 상기 태그 데이터의 나머지 (N-K) 비트와 상기 태그 어드레스의 나머지 (N-K) 비트를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계;
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과에 따라, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 단계; 및
상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계를 포함하고,
상기 동작방법은,
상기 세트 어드레스가 동일한 복수의 데이터 요청들을 수신하는 단계를 더 포함하고,
상기 업데이트 후보를 결정하는 단계는,
상기 복수의 데이터 요청들의 복수의 데이터들 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트를 비교한 결과에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하는 단계이며,
상기 업데이트 하는 단계는,
상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계인 캐시 메모리 시스템의 동작방법. - 제13항에 있어서,
상기 업데이트 후보를 결정하는 단계는,
상기 태그 데이터의 상위 K 비트가 상기 태그 어드레스의 상위 K 비트와 일치하지 않는 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 상기 업데이트 후보로 결정하는 단계를 포함하는 캐시 메모리 시스템의 동작방법. - 제13항에 있어서,
상기 캐시 미스인지 여부를 판단하는 단계는,
상기 세트 어드레스에 대응하는 태그 데이터들 중 어느 하나도 상기 태그 어드레스와 일치하지 않는 경우, 상기 캐시 미스로 판단하는 단계를 포함하고,
상기 동작방법은,
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 비교 결과를 출력하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법. - 제13항에 있어서,
상기 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계는,
상기 세트 어드레스에 대응하는 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 상기 캐시 히트로 판단하는 단계를 포함하는 캐시 메모리 시스템의 동작방법. - 제13항에 있어서,
상기 동작방법은,
상기 캐시 히트로 판단한 경우, 상기 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 읽어서, 상기 외부로 출력하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법. - 삭제
- 제13항에 있어서,
상기 동작방법은,
상기 복수의 데이터들에 각각 대응하는 비교 벡터들을 출력하는 단계를 더 포함하고,
상기 비교 벡터들 각각은 태그 메모리의 웨이의 개수와 동일한 개수의 성분을 포함하며, 상기 성분은 해당 데이터의 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트를 비교하여, 일치하는 경우, 제1 값을, 일치하지 않는 경우, 제2 값을 나타내며,
상기 업데이트 하는 단계는,
상기 비교 벡터의 상기 성분 값들을 상기 웨이 별로 합산하고, 상기 합산한 결과값들에 기초하여, 상기 웨이들 중 어느 하나에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계인 캐시 메모리 시스템의 동작방법. - 제19항에 있어서,
상기 제1 값은 1이고, 상기 제2 값은 0이며,
상기 업데이트 하는 단계는,
상기 웨이 별로 합산한 결과값들 중 가장 작은 값을 가지는 웨이에 대응하는 캐시 데이터를 삭제하고 새로운 데이터로 업데이트 하는 단계인 캐시 메모리 시스템의 동작방법. - 캐시 메모리 시스템의 동작방법에 있어서,
외부로부터 요청되는 데이터에 대응하는 세트 어드레스 및 N 비트의 태그 어드레스를 수신하는 단계;
상기 세트 어드레스에 대응하는 태그 데이터의 상위 K(1≤K<N) 비트와 상기 N 비트의 태그 어드레스의 상위 K 비트의 차이 값을 계산하고, 상기 태그 어드레스와 상기 태그 데이터를 비교하여, 캐시 히트인지, 캐시 미스인지 여부를 판단하는 단계;
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값에 기초하여, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 단계; 및
상기 업데이트 후보 중 어느 하나의 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계를 포함하고,
상기 동작방법은,
상기 세트 어드레스가 동일한 복수의 데이터 요청들을 수신하는 단계를 더 포함하고,
상기 업데이트 후보를 결정하는 단계는,
상기 복수의 데이터 요청들의 복수의 데이터들 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트의 차이값에 따라, 상기 복수의 데이터들 각각의 상기 업데이트 후보를 결정하는 단계이며,
상기 업데이트 하는 단계는,
상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트 하는 단계인 캐시 메모리 시스템의 동작방법. - 제21항에 있어서,
상기 업데이트 후보를 결정하는 단계는
상기 차이 값이 임계 값 이상인 경우, 상기 태그 데이터에 대응하는 캐시 데이터를 업데이트 후보로 결정하는 캐시 메모리 시스템의 동작방법. - 제21항에 있어서,
상기 캐시 미스인지 여부를 판단하는 단계는,
상기 세트 어드레스에 대응하는 태그 데이터들 중 어느 하나도 상기 태그 어드레스가 일치하지 않는 경우, 상기 캐시 미스로 판단하는 단계를 포함하고,
상기 동작방법은,
상기 캐시 미스로 판단되는 경우, 상기 태그 데이터들 각각의 상위 K 비트와 상기 태그 어드레스의 상위 K 비트의 차이 값을 출력하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법. - 삭제
- 캐시 메모리 시스템에 있어서,
메인 메모리에 저장된 데이터 중 일부에 해당하는 캐시 데이터를 저장하는 데이터 메모리;
상기 캐시 데이터에 대응하는 태그 데이터를 저장하는 태그 메모리;
수신된 태그 어드레스와 상기 태그 데이터를 비교하여 캐시 히트 또는 캐시 미스를 판단하는 태그 비교부로서, 상기 태그 어드레스와 상기 태그 데이터의 비교는, 상기 태그 어드레스의 상위 K(1≤K<N) 비트와 상기 태그 데이터의 상위 K 비트를 비교하는 제 1 비교단계, 및 상기 태그 어드레스의 나머지 (N-K) 비트와 상기 태그 데이터의 나머지 (N-K) 비트를 비교하는 제 2 비교단계를 통해 수행되는, 태그 비교부; 및
상기 캐시 미스로 판단되는 경우, 상기 제 1 비교단계 결과에 기초하여 교체될 캐시 라인을 결정하는 업데이트 제어부를 포함하고,
상기 캐시 메모리 시스템이 세트 어드레스가 동일한 복수의 데이터 요청을 수신하는 경우,
상기 업데이트 제어부는,
상기 복수의 데이터 요청의 복수의 데이터들 각각에 대하여 수신한 상기 태그 어드레스의 상위 K 비트와 상기 태그 데이터의 상위 K 비트를 비교한 결과에 따라, 상기 복수의 데이터들 각각의 업데이트 후보를 결정하고, 상기 업데이트 후보에 포함되는 캐시 데이터들 중 상기 업데이트 후보로 결정된 횟수가 가장 많은 캐시 데이터를 삭제하고, 새로운 데이터로 업데이트하는 캐시 메모리 시스템.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140123704A KR102354990B1 (ko) | 2014-09-17 | 2014-09-17 | 캐시 메모리 시스템 및 그 동작방법 |
US14/692,828 US9852070B2 (en) | 2014-09-17 | 2015-04-22 | Cache memory system using a tag comparator to determine update candidates and operating method thereof |
EP15176630.0A EP2998868B1 (en) | 2014-09-17 | 2015-07-14 | Cache memory system and operating method thereof |
CN201510463551.6A CN106201915B (zh) | 2014-09-17 | 2015-07-31 | 高速缓冲存储器系统及其操作方法 |
JP2015181168A JP6339987B2 (ja) | 2014-09-17 | 2015-09-14 | キャッシュメモリ・システム及びその動作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140123704A KR102354990B1 (ko) | 2014-09-17 | 2014-09-17 | 캐시 메모리 시스템 및 그 동작방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160032934A KR20160032934A (ko) | 2016-03-25 |
KR102354990B1 true KR102354990B1 (ko) | 2022-01-24 |
Family
ID=53719643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140123704A KR102354990B1 (ko) | 2014-09-17 | 2014-09-17 | 캐시 메모리 시스템 및 그 동작방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9852070B2 (ko) |
EP (1) | EP2998868B1 (ko) |
JP (1) | JP6339987B2 (ko) |
KR (1) | KR102354990B1 (ko) |
CN (1) | CN106201915B (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912476A (zh) * | 2016-04-06 | 2016-08-31 | 中国科学院计算技术研究所 | 片上重复寻址的方法及装置 |
KR102636925B1 (ko) | 2017-05-19 | 2024-02-16 | 모비디어스 리미티드 | 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치 |
KR20190006314A (ko) | 2017-07-10 | 2019-01-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
KR20190040614A (ko) | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
KR20200083048A (ko) * | 2018-12-31 | 2020-07-08 | 삼성전자주식회사 | 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법 |
CN109933543B (zh) * | 2019-03-11 | 2022-03-18 | 珠海市杰理科技股份有限公司 | Cache的数据锁定方法、装置和计算机设备 |
US11263015B1 (en) * | 2019-12-05 | 2022-03-01 | Marvell Asia Pte, Ltd. | Microarchitectural sensitive tag flow |
US11307857B2 (en) | 2019-12-05 | 2022-04-19 | Marvell Asia Pte, Ltd. | Dynamic designation of instructions as sensitive for constraining multithreaded execution |
US11372647B2 (en) | 2019-12-05 | 2022-06-28 | Marvell Asia Pte, Ltd. | Pipelines for secure multithread execution |
CN117130663B (zh) * | 2023-09-19 | 2024-06-11 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090182951A1 (en) | 2003-11-21 | 2009-07-16 | International Business Machines Corporation | Cache line replacement techniques allowing choice of lfu or mfu cache line replacement |
US20110022773A1 (en) | 2009-07-27 | 2011-01-27 | International Business Machines Corporation | Fine Grained Cache Allocation |
US20140189473A1 (en) | 2012-12-28 | 2014-07-03 | Ariel Szapiro | Apparatus and Method For Fast Tag Hit With Double Error Correction and Triple Error Detection |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086857A (ja) * | 1994-06-17 | 1996-01-12 | Mitsubishi Electric Corp | キャッシュメモリ |
JPH10340226A (ja) * | 1997-06-09 | 1998-12-22 | Nec Corp | 連想記憶方式のキャッシュメモリ |
TW374873B (en) | 1997-06-30 | 1999-11-21 | Hyundai Electronics Ind | A high-performance LRU memory capable of supporting multiple ports |
US6122709A (en) * | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
JP2000330869A (ja) * | 1999-05-19 | 2000-11-30 | Hitachi Ltd | キャッシュメモリ装置 |
US6449694B1 (en) * | 1999-07-27 | 2002-09-10 | Intel Corporation | Low power cache operation through the use of partial tag comparison |
US6687789B1 (en) | 2000-01-03 | 2004-02-03 | Advanced Micro Devices, Inc. | Cache which provides partial tags from non-predicted ways to direct search if way prediction misses |
US6493797B1 (en) * | 2000-03-31 | 2002-12-10 | Intel Corporation | Multi-tag system and method for cache read/write |
US6581140B1 (en) * | 2000-07-03 | 2003-06-17 | Motorola, Inc. | Method and apparatus for improving access time in set-associative cache systems |
US6912623B2 (en) | 2002-06-04 | 2005-06-28 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy |
US6950904B2 (en) | 2002-06-25 | 2005-09-27 | Intel Corporation | Cache way replacement technique |
US7020748B2 (en) | 2003-01-21 | 2006-03-28 | Sun Microsystems, Inc. | Cache replacement policy to mitigate pollution in multicore processors |
US7069390B2 (en) * | 2003-09-04 | 2006-06-27 | International Business Machines Corporation | Implementation of a pseudo-LRU algorithm in a partitioned cache |
WO2005066796A1 (ja) | 2003-12-22 | 2005-07-21 | Matsushita Electric Industrial Co., Ltd. | キャッシュメモリ及びその制御方法 |
KR100851298B1 (ko) | 2005-12-28 | 2008-08-08 | 엠텍비젼 주식회사 | 캐시 메모리 컨트롤러 및 이를 이용한 캐시 메모리 관리방법 |
US7512739B2 (en) | 2006-07-05 | 2009-03-31 | International Business Machines Corporation | Updating a node-based cache LRU tree |
US7545702B2 (en) | 2006-07-21 | 2009-06-09 | Freescale Semiconductor, Inc. | Memory pipelining in an integrated circuit memory device using shared word lines |
US8364900B2 (en) | 2008-02-12 | 2013-01-29 | Oracle America, Inc. | Pseudo-LRU cache line replacement for a high-speed cache |
US7546417B1 (en) * | 2008-07-15 | 2009-06-09 | International Business Machines Corporation | Method and system for reducing cache tag bits |
TW201015319A (en) * | 2008-09-17 | 2010-04-16 | Panasonic Corp | Cache memory, memory system, data copying method and data rewriting method |
US8825955B2 (en) | 2011-11-22 | 2014-09-02 | The Regents Of The University Of Michigan | Data processing apparatus having a cache configured to perform tag lookup and data access in parallel, and a method of operating the data processing apparatus |
WO2013095636A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Address range priority mechanism |
-
2014
- 2014-09-17 KR KR1020140123704A patent/KR102354990B1/ko active IP Right Grant
-
2015
- 2015-04-22 US US14/692,828 patent/US9852070B2/en active Active
- 2015-07-14 EP EP15176630.0A patent/EP2998868B1/en active Active
- 2015-07-31 CN CN201510463551.6A patent/CN106201915B/zh active Active
- 2015-09-14 JP JP2015181168A patent/JP6339987B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090182951A1 (en) | 2003-11-21 | 2009-07-16 | International Business Machines Corporation | Cache line replacement techniques allowing choice of lfu or mfu cache line replacement |
US20110022773A1 (en) | 2009-07-27 | 2011-01-27 | International Business Machines Corporation | Fine Grained Cache Allocation |
US20140189473A1 (en) | 2012-12-28 | 2014-07-03 | Ariel Szapiro | Apparatus and Method For Fast Tag Hit With Double Error Correction and Triple Error Detection |
Also Published As
Publication number | Publication date |
---|---|
CN106201915A (zh) | 2016-12-07 |
KR20160032934A (ko) | 2016-03-25 |
JP6339987B2 (ja) | 2018-06-06 |
EP2998868B1 (en) | 2017-08-30 |
EP2998868A1 (en) | 2016-03-23 |
CN106201915B (zh) | 2020-06-09 |
US9852070B2 (en) | 2017-12-26 |
US20160077969A1 (en) | 2016-03-17 |
JP2016062613A (ja) | 2016-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102354990B1 (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
US11163828B2 (en) | Building and querying hash tables on processors | |
US9274959B2 (en) | Handling virtual memory address synonyms in a multi-level cache hierarchy structure | |
US9971700B2 (en) | Cache with address space mapping to slice subsets | |
US7089398B2 (en) | Address translation using a page size tag | |
JP6708019B2 (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
EP2275939B1 (en) | Processor and address translating method | |
US10915459B2 (en) | Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes | |
KR20150037367A (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
US20210109920A1 (en) | Method for Validating Transaction in Blockchain Network and Node for Configuring Same Network | |
US20180074957A1 (en) | Method and device for accessing a cache memory | |
US20140289475A1 (en) | Cache memory device, information processing device, and cache memory control method | |
CN108431831A (zh) | 循环代码处理器优化 | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
CN101727406B (zh) | 组相联方式的高速缓存装置、高速缓存方法及处理器系统 | |
CN103777898A (zh) | 操作存储器设备的方法及系统 | |
CN118020064A (zh) | 具有伪lru补充年龄信息的重新引用区间预测(rrip) | |
KR102355374B1 (ko) | 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법 | |
JP7022497B2 (ja) | メモリ管理 | |
JP2015049844A (ja) | ストアマージ処理装置、ストアマージ処理システム、ストアマージ処理方法、及び、ストアマージ処理プログラム | |
US8112588B2 (en) | Sorting cache objects based on access counters reset upon garbage collection | |
KR20240007582A (ko) | Pim 장치 기반의 쿠쿠 해시 쿼리 방법, pim 장치 및 시스템 | |
WO2020066148A1 (ja) | 記憶装置、High Dimensional Gaussian Filtering回路、Stereo Depth計算回路、並びに情報処理装置 | |
JP5206385B2 (ja) | バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム | |
KR102356704B1 (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 |
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 |