KR100389549B1 - 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 - Google Patents
템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 Download PDFInfo
- Publication number
- KR100389549B1 KR100389549B1 KR10-2000-7010799A KR20007010799A KR100389549B1 KR 100389549 B1 KR100389549 B1 KR 100389549B1 KR 20007010799 A KR20007010799 A KR 20007010799A KR 100389549 B1 KR100389549 B1 KR 100389549B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- cache
- temporal
- bit
- cache memory
- Prior art date
Links
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
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
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
프로세서에 있어서 캐시 메모리의 사용은 메모리 액세스 시간의 감소를 용이하게 한다. 캐시 구조의 기본적인 아이디어는 가장 빈번하게 액세스되는 명령어 및 데이터를 고속의 캐시 메모리에 저장함으로써, 평균 메모리 액세스 시간을 캐시 액세스 시간에 근접시키고자 하는 것이다. 가능한 최고의 동작 속도를 달성하기 위하여, 통상의 프로세서는 캐시 계층(hierarchy), 즉 캐시 메모리의 각기 다른 레벨을 구현한다. 캐시의 각기 다른 레벨은 프로세서 코어(core)로부터의 거리에 대응된다. 프로세서에 가까운 캐시일수록 데이터 액세스가 빠르다. 그러나, 데이터 액세스가 빠를수록 데이터 저장 비용이 많이 든다. 결과적으로, 캐시 레벨이 가까울수록 보다 빠르고 작은 캐시이다.
캐시 메모리의 성능은 적중률(hit ratio)로 종종 측정된다. 프로세서가 메모리를 조회하여 캐시에서 워드를 찾은 경우, 이를 적중(hit)이 되었다고 말한다. 만일, 캐시에서 단어를 찾지 못한 경우, 그것은 주 메모리에 있으며, 이를 적중실패(miss)로 간주한다. 적중실패가 발생하면, 액세스에 의해 색인(index)된 엔트리(entry)의 할당(allocation)이 이루어진다. 상기 액세스는 데이터를 프로세서로 로딩(loading) 하거나, 또는 프로세서로부터 메모리로 데이터를 저장하기 위한 것일 수 있다. 캐싱된 정보는, 더이상 필요하지 않거나, 무효화 되거나 또는 다른 데이터로 교체되어질 때까지 캐시 메모리에 의해 보존되는데, 상기의 경우에 캐시 엔트리는 할당 해제(de-allocate)된다.
L1 및 L2 캐시를 구비한 펜티엄 ProTM프로세서와 같이 캐시 계층을 구현한 프로세서에서는, 보다 빠르고 작은 L1 캐시가 L2 캐시보다 프로세서에 더 가깝다. 프로세서가 캐시 가능한 데이터, 일례로 로드 명령어를 요구하면, 이 요구(request)는 먼저 L1 캐시로 전송된다. 만약, 요구된 데이터가 L1 캐시에 있으면, 이것은 프로세서로 제공된다. 그렇지 않은 경우, L1 적중실패(miss)가 되고, 상기 요구는 L2 캐시로 전송된다. 마찬가지로, L2 캐시 적중(hit)인 경우, 데이터는 L1 캐시 및 프로세서 코어로 전달된다. 만약, L2 캐시 적중실패(miss)인 경우에는, 상기 요구는 주 메모리로 전송된다. 주 메모리는 요구된 데이터를 L2 캐시, L1 캐시 및 프로세서 코어로 제공함으로써, L2 캐시 적중실패에 응답한다.
통상적으로, 캐시에 저장되는 데이터의 형태는 프로그램 및 데이터의액티브(active) 부분을 포함한다. 캐시가 가득찬 경우, 새로 요구된 데이터 라인을 위한 공간을 만들기 위하여, 저장된 데이터의 현재의 라인을 교체할 필요가 있다. 이러한 교체 기술의 하나로, 최근에 가장 적게 사용된 데이터 라인을 새로 요구된 라인으로 교체하는 최근 최소 사용(Least Recently Used : 이하, 'LRU'라 칭함) 알고리즘의 사용이 포함된다. 펜티엄 ProTM프로세서에서는, L2 캐시가 L1 캐시보다 크기 때문에, 통상적으로, L2 캐시는 L1 캐시에 있는 모든 것과, L1 캐시에서 LRU 알고리즘에 의해 교체된 일부 부가적인 라인들을 저장한다.
Milland Mittal에 의해 발명되고 1996년 12월 17일에 출원되어 현재 미합중국 특허 번호 5,829,025로 특허된 미합중국 특허 출원 번호 08/767,950의 "Computer System and Method of Allocating Cache Memories in a Multilevel Cache Hierarchy utilizing a Locality Hint within an Instruction"에서는, 명령어에 연관된 집약성 힌트(locality hint)의 사용을 통해 캐시 메모리를 할당하기 위한 기술을 개시하고 있다. 프로세서와 메모리 사이의 데이터 전송을 위해 프로세서가 메모리에 액세스하는 경우, 명령어에 연관된 집약성 힌트에 따라 상기 액세스는 캐시의 여러 레벨로 할당되거나, 또는 캐시 메모리에 할당되지 않을 수 있다. 어떤 명령어는 드물게 사용된다. 예를 들어, 프로세서가 즉시 요구하지는 않지만, 가까운 미래에 요구될 것으로 예상되는 넌템포럴(non-temporal) 사전인출(prefetch) 명령어는 데이터를 예비적재(preload)한다. 이러한 데이터는, 통상적으로, 한번만 사용되거나 가까운 미래에 재사용되지 않으며, 이를 "넌템포럴 데이터(non-temporal data)"라고 부른다. 자주 사용되는 명령어는 "템포럴 데이터(temporal date)"라고 부른다. 넌템포럴 데이터에 대하여, 이 데이터는 자주 사용되지 않기 때문에, 최적의 성능이란 캐싱된 데이터를 이렇게 드물게 사용되는 데이터로 겹쳐쓰지(overwrite) 않는 것을 말한다. 미합중국 특허 번호 5,829,025에서는, 넌템포럴 사전인출 데이터와 같이 드물게 사용되는 데이터를 저장하기 위한 버퍼를 캐시 메모리와 분리하여 제공함으로써, 이러한 문제를 해결하고 있다. 그러나, 이러한 분리된 버퍼의 추가 사용은 비용 및 공간에 대해 모두 낭비적이다.
따라서, 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조를 제공하는 기술이 요구되며, 이것으로 별도의 버퍼 사용을 없앨 수 있다.
본 발명은 일반적인 프로세서 분야에 관한 것으로, 특히, 템포럴(temporal) 및 넌템포럴(non-temporal) 명령어(instruction)에 대한 공유 캐시(cache) 구조를 제공하는 기술에 관한 것이다.
본 발명은 도면에서 한 예로서 도시되고, 이에 한정되지 않는다. 같은 참조부호는 동일한 구성요소를 나타낸다
도1은 본 발명을 적용한 컴퓨터 시스템의 제1 실시예를 도시한 회로 블록도로서, 여기서 캐시 메모리는 상기 컴퓨터 시스템의 주 메모리와 프로세서 간의 데이터 액세스를 위해 사용됨.
도2는 본 발명을 적용한 컴퓨터 시스템의 제2 실시예를 도시한 회로 블록도로서, 여기서 두 캐시 메모리는 상기 컴퓨터 시스템의 주 메모리와 프로세서 간의 데이터 액세스를 위한 캐시 메모리 레벨로 배열됨.
도3은 본 발명이 적용된 기술에서의 캐시 메모리의 조직적 구조의 일실시예를 도시한 불록도.
도4는 본 발명의 제1 실시예에 따른 캐시 관리 기술을 도시한 테이블.
도5A 및 도5B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도6A 및 도6B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 다른 예를 도시한 도면.
도7A 내지 도7D는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도8A 내지 도8D는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 다른 예를 도시한 도면.
도9A 및 도 9B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중실패하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도10A 및 도10B는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중실패하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
발명의 요약
캐시 메모리 관리를 위한 방법 및 시스템이 제공된다. 상기 시스템은 주 메모리, 상기 주 메모리에 연결된 프로세서, 및 상기 프로세서에 연결되고, 데이터를 캐싱하기 위한 적어도 하나의 캐시 메모리를 포함한다. 상기 적어도 하나의 캐시 메모리는 각각 다수의 세트를 포함하는 적어도 두 개의 캐시 경로를 구비한다(The at least one cache memory has at least two cache ways, each comprising a plurality of sets). 상기 다수의 세트는 각각 상기 적어도 두 개의 캐시 경로 중에서 어느 하나의 경로가 넌템포럴 데이터를 포함하는지 여부를 나타내는 비트를 구비한다(Each of the plurality of sets has a bit which indicates whether one of the at least two cache ways contains non-temporal data). 상기 프로세서는 상기 주 메모리 또는 상기 적어도 하나의 캐시 메모리 중의 하나(one of the main memory or the at least one cache memory)로부터 데이터를 액세스한다.
캐시 메모리의 관리를 제공하기 위한 기술이 설명되는데, 여기서 캐시 할당은 데이터 이용율에 의해 결정된다. 다음의 설명에서는, 본 발명의 완전한 이해를 제공하기 위해, 특정 메모리 장치, 회로도, 프로세서 명령어 등과 같은 여러 특정 세부사항을 설명한다. 그러나, 이 기술분야의 통상의 지식을 가진 자에게는, 본 발명이 이러한 특정한 세부사항 없이 실시될 수 있음이 이해될 것이다. 다른 경우에서, 본 발명을 모호하지 않게 하기 위해 잘 알려진 기술 및 구조는 상세하게 기재되지 않았다. 본 발명의 바람직한 실시예로서 특정한 구현이 기술되었지만, 본 발명의 정신 및 범위로부터 동떨어지지 않은 그 외의 실시예가 설계되고 구현될 수 있음을 알 수 있다. 또한, 본 발명은 직렬로 배열된 캐시 계층 시스템을 참조하여 기술되고 있지만, 이러한 계층에 엄밀히 제한될 필요는 없다.도1을 참조하면, 통상의 컴퓨터 시스템이 도시되어 있으며, 여기서, 상기 컴퓨터 시스템의 중앙 처리 장치(이하, 'CPU'라 칭함)를 형성하는 프로세서(10)는 버스(14)에 의해 주 메모리(11)에 연결된다. 상기 주 메모리(11)는 통상적으로 임의 접근 메모리(random-access-memory)로 구성되고, 일반적으로 RAM으로 부른다. 이어, 상기 주 메모리(11)는, 일반적으로, 정보의 대용량 기억(저장)을 위한 자기(magnetic) 또는 광(optical) 기억 장치와 같은 대용량 기억 장치(22)에 연결된다. 캐시 메모리(이하, '캐시'로 약칭함)(13)도 역시 버스(14)에 연결된다. 상기 캐시(13)는, 기능적 이용율 및 캐시(13)에 연관된 데이터 전송을 예시하기 위하여. CPU(11)와 주 메모리(11) 사이에 위치하는 것으로 도시된다. 상기 캐시(13)의 실제 물리적 배치는 시스템 및 프로세서 구조에 따라 변경할 수 있다. 또한, 캐시 제어기(15)는, 캐시(13)의 동작을 제어하기 위하여, 캐시(13) 및 버스(14)와 연결되도록 도시된다. 상기 제어기(15)와 같은 캐시 제어기의 동작은, 이 기술 분야에서 잘 알려져 있기 때문에, 다음의 도면들에 캐시 제어기는 도시되지 않는다. 일부 제어기는 도시된 캐시의 동작을 제어하기 위한 CPU(10)의 제어하에 있는 것으로 가정된다.
동작 중, 메모리(11)와 CPU(10) 간의 정보 전송은 CPU(10)로부터의 메모리 액세스에 의해 달성된다. CPU(10)에 의해 캐싱 가능한 데이터가 현재 또는 곧 액세스될 경우, 그 데이터는 먼저 캐시(13)에 할당된다. 즉, CPU(10)가 메모리(11)로부터 임의의 정보를 액세스하는 경우, 캐시(13)로부터 그 정보를 구한다. 만일, 액세스된 데이터가 캐시(13)에 있다면, "적중(hit)"이 발생한다. 그렇지 않으면, "적중실패(miss)"가 발생하고, 그 데이터에 대한 캐시 할당이 시도된다. 일반적인 실례에 따르면, 대부분의 액세스(로드 또는 저장)는 캐시(13)의 할당을 요구한다. 다만 캐싱 불가능한 액세스는 캐시에 할당되지 않는다.도2를 참조하여, 다중 캐시 배열을 적용한 컴퓨터 시스템이 도시된다. 역시, CPU(10)는 버스(14)에 의해 주 메모리(11)에 연결되고, 상기 주 메모리(11)는 대용량 기억 장치(12)에 연결된다. 도2의 예에서는, 두 개의 분리된 캐시 메모리(21, 22)가 도시된다. 상기 캐시(21, 22)는 직렬로 배열되고, 각각은 레벨1(L1) 캐시 및 레벨2(L2) 캐시라 불리는 캐시 레벨을 나타낸다. 또한, L1 캐시(21)는 CPU(10)의 일부분으로 도시되고, 반면에 L2 캐시(22)는 CPU(10)의 외부에 도시된다. 낮은 레벨의 캐시는 프로세서의 외부에 배치되는 반면, L1 캐시는 프로세서 칩 상에 배치하는 일반적인 실례를 예시하는데, 여기서, 상기 낮은 레벨의 캐시는 프로세서 코어로부터 멀리 떨어져 있다. 여러 캐시 메모리의 실제 배치는 프로세서 구조에 따라 선택 설계되거나 규정된다. 따라서, L1 캐시가 CPU(10)의 외부에 배치될 수 있다는 것을 알 수 있다.
일반적으로, CPU(10)는 실행 유닛(23), 레지스터 파일(24) 및 페치/디코더 유닛(25)을 포함한다. 상기 실행 유닛(23)은 다양한 산술적(또는 비메모리) 프로세서 명령어를 수행하기 위한 CPU(10)의 프로세싱 코어이다. 상기 레지스터 파일(24)은 실행 유닛(23)에 의해 요구된 다양한 정보를 저장(또는 축적)하기 위한 일반적 목적의 레지스터 세트이다. 보다 진보된 시스템에서는 하나 이상의 레지스터가 존재할 수 있다. 상기 페치/디코더 유닛(25)은 실행될 프로그램의 명령어를 보존하는 기억 장소(주 메모리(11)와 같은)로부터 명령을 인출하고, 실행 유닛(23)에 의해 실행하도록 상기 명령을 복호화한다. 파이프라인형 구조를 사용하는 보다 진보된 프로세서에서는, 명령어가 실제적으로 요구되기 전에 미래의 명령어가 사전인출되고 복호화되어, 필요시 프로세서가 인출되어질 명령어를 기다리는 유휴 상태(idle)가 되지 않도록 한다.
상기 CPU(10)의 여러 유닛(23-25)은 내부 버스 구조(27)에 연결된다. 버스 인터페이스 유닛(BIU)(26)은 CPU(10)의 여러 유닛을 버스(14)에 연결하기 위한 인터페이스를 제공한다. 도2에 도시된 바와 같이, L1 캐시는 내부 버스(27)에 연결되고, CPU(10)에 대한 내부 캐시로서 기능을 한다. 그러나, L1 캐시는 CPU(10)의 외부에 위치하여 버스(14)에 연결될 수 있다는 것을 다시 한번 강조한다. 캐시는 데이터, 명령 또는 양쪽 모두를 캐싱하는데 사용되어 진다. 일부 시스템에서, 실제적으로, L1 캐시는 데이터를 캐싱하기 위한 섹션 및 명령을 캐싱하기 위한 섹션의 두 섹션으로 나뉜다. 그러나, 설명의 간소화를 위해, 상술한 다양한 캐시는, 이하에서 데이터로 통칭된 데이터, 명령어 및 다른 정보를 갖는 단일 캐시로 도면에 도시된다. 도2에 도시된 유닛들의 동작은 알려진 것으로 간주한다. 또한, CPU(10)는 도시된 소자들 뿐만 아니라 실제로는 더 많은 소자들을 포함한다고 여겨진다. 따라서, 본 발명의 이해를 위해 관련되는 구조들만이 도2에 도시되었다. 일실시예에서, 본 발명은 데이터 캐시를 갖는 시스템에서 이용된다. 그러나, 본 발명은 어떤 형태의 캐시에도 적용할 수 있다.
또한, 상기 컴퓨터 시스템은 하나 이상의 CPU(도2에서 점선으로 표시된 바와 같이)를 포함할 수 있다. 이러한 시스템에서, 통상적으로 다중 CPU는 주 메모리(11) 및/또는 대용량 저장 장치(12)를 공유한다. 따라서, 이 컴퓨터 시스템에 연관된 일부 또는 모든 캐시는 컴퓨터 시스템의 여러 프로세서에 의해 공유될 수 있다. 예를 들어, 도2의 시스템에 있어서, 각 프로세서의 L1 캐시(21)는 각자의프로세서에서만 사용되지만, 주 메모리(11)는 시스템의 모든 CPU에 의해 공유된다. 추가로, 각 CPU는 연관된 외부의 L2 캐시(22)를 구비한다.
본 발명은 단일 CPU 컴퓨터 시스템 또는 다중 CPU 컴퓨터 시스템에서 실행될 수 있음을 알수 있다. 또한, 메모리를 액세스하는 다른 형태의 유닛(이외의 프로세서)이 여기서 기술된 CPU에 상응하는 기능을 할 수 있으며, 이에 따라, 기술된 CPU와 유사한 메모리 액세스 기능을 수행할 수 있음을 알 수 있다. 예를 들어, 직접 메모리 액세스(DMA) 장치는 여기서 기재된 프로세서와 유사하게 메모리를 액세스할 수 있다. 따라서, 하나의 프로세서(CPU)를 구비하고, 하나 또는 그 이상의 메모리 액세스 장치를 구비한 컴퓨터 시스템은, 여기서 기술된 다중 프로세서 시스템에 상응하는 기능을 수행하게 된다.
기술한 바와 같이, 단지 두 개의 캐시(21, 22)가 도시된다. 그러나, 상기 컴퓨터 시스템은 단지 캐시의 두 레벨에 대해 한정될 필요는 없다. 현재, 보다 진보된 시스템에서는 제3 레벨(L3) 캐시를 사용하는 것이 관례이다. 또한, 캐시 메모리를 직렬로 배열하여, 데이터는 L1 캐시에서 캐싱되고, L2 캐시에도 캐싱되는 것이 관례이다. 만일, L3 캐시가 존재한다면, 통상적으로, L2 캐시에서 캐싱된 데이터는 L3 캐시에도 캐싱된다. 이에 따라, 특정 캐시 레벨에서 캐싱된 데이터는 더 높은 레벨의 캐시 계층 전부에서도 캐싱된다.도3은 본 발명 기술이 구현된 캐시 메모리의 조직적 구조의 일실시예를 도시한 블록도이다. 캐시 구조에는, 일반적으로, "x"개의 세트가 있고, 각 세트 당 "y"개의 경로(여기서, y≥2)가 있으며, 각 경로는 하나의 데이터 엔트리 또는 하나의 캐시 라인을 포함한다. 본 발명은 세트 내의 경로 중 하나가 넌템포럴(NT) 데이터를 포함하는지를 나타내는, 캐시 세트당 LRU 로크 비트(lock bit)를 제공한다. 그렇게 되면, 정규 또는 의사 LRU 비트는 NT 데이터를 가리키도록 업데이트 된다. 또한, 각 세트마다 "z"개의 정규 또는 의사 LRU 비트가 있다. 만약, 상기 LRU 로크 비트가 설정되지 않았다면, 상기 정규 또는 의사 LRU 비트가, 적용된 LRU 기술에 따른 세트 내의 경로를 지시한다. 세트당 정규 또는 의사 LRU 비트의 수는 세트당 경로의 수 및 적용된 LRU(정규 또는 의사) 기술에 따라 달라진다.
도시된 실시예에서와 같이, 상기 캐시(50)는 4-경로 세트 관련 캐시(four-way set associative cache)로 구성된다. 도3의 예에서, 각 페이지는 1/4 캐시 사이즈와 동일한 것으로 도시된다. 특히, 캐시(50)는 동일한 사이즈의 네가지 경로(예를 들어, 경로0(52), 경로1(54), 경로2(56) 및 경로3(58))로 나누어지고, 주 메모리(11)(도1 및 도2 참조)는 페이지(일례로, 페이지0 ~ 페이지n)로 나누어지는 것으로 보여진다. 다른 실시예에서, 각 페이지는 캐시의 사이즈보다 크거나 또는 작을 수 있다. 캐시의 조직적 구조(도3에 도시된 바와 같은)는, 도1의 캐시(13), 도2의 L1 캐시 및/또는 L2 캐시(22) 내에서 적용될 수 있다.
또한, 상기 캐시(50)는, 최근 최소 사용된 데이터(또는, NT 데이터, 바이어스 LRU 기술이 적용된 경우)를 갖는 세트 내의 경로를 각각 나타내는 LRU 비트(600- 60n) 어레이를 포함한다. 이러한 리스팅은, 캐시 세트가 가득찬 경우에 어떤 캐시 엔트리를 겹쳐쓸 것인지를 결정하기 위하여, 캐시 제어기(15)의 제어하에 LRU 기술에 따라 수행된다. 일실시예에서는, 최근 최소 사용된 디렉토리 알고리즘을 정확히 추적하는 LRU 기술이 적용될 수 있다. 다른 실시예에서는, 최근 최소 사용된 디렉토리 구성요소를 추적하도록 최선의 시도를 수행하는 의사 LRU 알고리즘이 적용된다. 또한, 상기 비트(600- 60n)는 LRU 비트(600- 60n)를 나타내고, LRU 비트(600- 60n) 어레이는 LRU 비트(60)로 나타낼 수 있다.
또한, 캐시(50)는, 임의의 세트 내의 경로(52, 54, 56, 58) 중 어느 것이 캐시(50)를 오염시켜서는 안되는 테이터(즉, 드물게 사용되는 데이터)를 포함하는지를 나타내는 LRU 로크 비트(700- 70n) 어레이를 포함하는데, 이는 다음 부분에서 상세히 기술된다,
도4는 본 발명의 원리에 따른 캐시 관리 기술을 도시한 테이블이다. 본 발명은, 해당 캐싱된 데이터 중 어느 것이 스트리밍 또는 넌템포럴로서, 해당 세트에 캐시 적중실패가 발생하면 교체되는 첫번째 엔트리가 될 데이터인지를 나타내는 LRU 로크 비트(700- 70n) 어레이를 사용한다. 일실시예에서, LRU 로크 비트(70)가 1로 설정(set)되었다는 것은 해당 세트가 넌템포럴 엔트리를 가지고 있음을 나타낸다. 만약, LRU 로트 비트(70)가 설정 해제(clear)된 상태라면, 템포럴 명령어에 의해 캐시 적중이 발생하였을 경우, 적용된 LRU 기술에 따라 해당 LRU 비트(60)가 업데이트되고(도4의 항목1 참조), 관련된 LRU 로크 비트는 업데이트 되지 않는다. 그러나, 만약, LRU 로크 비트(70)가 이미 1로 설정된 경우(해당 세트가 넌템포럴 명령어를 가지고 있음을 나타냄)에는, LRU 로크 비트(70)는 업데이트되지 않고, LRU 비트(60)도 업데이트되지 않는다(항목2 참조).
넌템포럴 명령어에 의해 캐시 적중된 경우에는, LRU 로크 비트(70)의 상태에 관계없이, LRU 비트(60) 및 LRU 로크 비트(70)는 업데이트 되지 않는다(항목3 참조). 다른 실시예에서는, L1 캐시 제어기의 제어 레지스터에서의 모드 비트를 통해 제어됨에 따라, 스트리밍 또는 넌템포럴 명령어에 의해 캐시 적중이 발생하면 LRU 비트를 적중된 경로로 만든다(항목4 참조). 또한, LRU 로크 비트(70)는 1로 설정된다. 이러한 실시예에서, 스트리밍 또는 넌템포럴 명령어에 의해 적중된 데이터는 해당 세트에 대한 캐시 적중실패가 발생하면 첫 번째로 교체된다.
템포럴 명령어에 의해 캐시 적중실패가 발생하면, LRU 로크 비트는 설정 해제되고, LRU 비트(60)는 의사 LRU 기술을 바탕으로 업데이트 된다(항목5). 그러나, 스트리밍 또는 넌템포럴 명령어에 의해 캐시 적중실패가 되면, LRU 로크 비트(70)는 1로 설정되고, 해당 LRU 비트(60)는 업데이트 되지 않는다(항목6).이제, 도4의 테이블에 제공된 각 항목의 예들이 토의될 것이다. 도5A 및 도5B는 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리 구성의 일례를 도시한다. 이 예는 도4의 항목1에 해당한다. 여기서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이고, 캐시 세트0이 템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700)는 업데이트 되지 않는다. 그러나, LRU 비트(600)는 적용된 LRU 기술에 따라 업데이트된다. 이 예에서, 의사 LRU 기술은, 경로3이 최근 최소 사용된 엔트리임을 나타내는 것으로 가정한다.도6A 및 6B는 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리 구성의 다른 예를 도시한다. 이 예는 도4의 항목2에 해당한다. 여기서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정되어 있는데, 이것은 해당 세트가 넌템포럴 데이터를 포함하고 있음을 나타낸다. 따라서, LRU 로크 비트(700) 및 LRU 비트(600)는 모두 업데이트 되지 않는다.도7A 내지 도7D는 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목3에 해당하며, L1 캐시 제어기에 위치한 모드 비트를 0으로 설정함으로써 구현될 수 있다(도4 참조). 첫 번째 경우(7A 및 7B)에서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이다. 이러한 실시예에서, 넌템포럴 캐시 적중은 LRU 로크 비트(70)를 업데이트 하지 않는다. 따라서, 캐시 세트0이 넌템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700) 및 LRU 비트(600)는 모두 업데이트되지 않는다. 두 번째 경우(도7C 및 도7D)에서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정된 상태인데, 이것은 해당 세트가 넌템포럴 데이터를 포함하고 있음을 나타낸다. 따라서, LRU 로크 비트(70) 및 LRU 비트(600)는 모두 업데이트되지 않는다.도8A 내지 도8D는 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리의 구성의 다른 예를 도시한다. 이 예는 도4의 항목4에 해당하며, L1 캐시 제어기에 위치한 모드 비트를 1로 설정함으로써 구현될 수 있다(도4참조). 첫 번째 경우(도8A 및 도8B)에서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이다. 도7A 내지 도7D에 도시된 예에 대한 다른 실시예에서는, 넌템포럴 캐시 적중이 LRU 로크 비트(70)를 업데이트한다. 따라서, 도8A에 도시된 바와 같이, 캐시 세트0이 넌템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700)는, 도8B에 도시된 바와 같이 업데이트된다(1로 설정됨). 또한, LRU 비트(600)는 적중된 경로를 나타내도록 업데이트 된다. LRU 로크 비트(700)가 캐시 세트0에 대해 이미 설정된 경우(도8C 및 도8D), LRU 로크 비트(700)는 1로 설정된 상태로 남는다. 또한, LRU 비트(600)는 세트 내의 적중된 경로를 나타내도록 업데이트된다.도9A 및 도9B는 템포럴 명령어가 캐시 세트0에 대해 적중실패되기 전과 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목5에 해당한다. 여기서 LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정된 상태이고, 템포럴 명령어에 의해 목표 세트0에 적중실패가 되었으므로, 캐시에서 상기 템포럴 적중실패를 교체함에 따라, LRU 로크 비트(700)는 상기 세트에 대해 설정 해제된다. 그러나, LRU 비트(600)는 적용된 LRU 기술에 따라 업데이트된다. 이 예에서, 의사 LRU 기술은 경로3이 최근 최소 사용된 엔트리임을 나타낸다.도10A 및 도10B는 넌템포럴 명령어가 캐시 세트0에 대해 적중실패 되기 전 또는 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목6에 해당한다. 이 경우에서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정 해제된 상태이다. 캐시세트0에 대해 넌템포럴 적중실패가 발생했기 때문에, LRU 로크 비트(700)는 1로 설정되고, LRU 비트(600)는 해당 세트0에 넌템포럴 데이터를 나타내도록 그대로 남는다.본 발명의 장치 및 방법을 구현함으로써, 캐시 또는 캐시 계층에서 데이터 오염을 최소화 하고, 템포럴 및 넌템포럴 명령어를 관리하기 위한 공유 캐시 구조가 제공된다. 또한, 본 발명의 구현예는 별도의 버퍼의 사용을 제거함으로써, 효과 적인 비용 및 능률성을 향상시킨다.본 발명은 본 발명의 정신 또는 필수적인 특성으로부터 동떨어지지 않는 다른 특정한 형식에서 실시될 수 있다. 상술한 실시예는 실례로써 간주될 뿐 이에 한정되지는 않는다. 이에 따라, 본 발명의 진정한 범위는 앞의 설명이라기 보다는 첨부된 청구항에 의해 나타난다. 상기 청구항과 동등한 의미 및 범위 내에서 가능한 모든 변경은 본 발명의 범위에 포함되어질 것이다.
Claims (26)
- 캐시 메모리 관리를 갖는 컴퓨터 시스템에 있어서,주 메모리;상기 주 메모리에 연결되는 프로세서; 및상기 프로세서에 연결되는 적어도 하나의 캐시 메모리를 포함하되,상기 프로세서는넌템포럴 데이터 및 텀포럴 데이터를 처리하도록 명령어를 실행하고, 상기 주 메모리 또는 상기 적어도 하나의 캐시 메모리 중에서 어느 하나로부터 데이터를 액세스하며,상기 적어도 하나의 캐시 메모리는적어도 두개의 캐시 경로(cache way)를 갖고,상기 적어도 두개의 캐시 경로 각각은 상기 적어도 하나의 캐시 메모리에 저장되어 있는 복수의 데이터 세트로 구성되고,상기 복수의 데이터 세트 각각은 상기 적어도 하나의 캐시 메모리에 제1비트 및 제2비트를 갖고,상기 복수의 데이터 세트 각각의 상기 제1비트는 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로가 제일 먼저 교체될 수 있는 넌템포럴 데이터 - 상기 넌템포럴 데이터는 상기 프로세서에 의해 드물게 사용됨 - 를 포함하는지 여부를 나타내고,상기 제2비트는 대응 경로의 데이터 엔트리의 오더(order)를 나타내는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 관련 데이터 세트는상기 넌템포럴 데이터를 포함하지 않고,상기 오더는상기 관련 데이터 세트의 다른 데이터 엔트리에 관하여 상기 데이터 엔트리가 상기 프로세서에 의해 최근 최소 사용된(least recently used) 엔트리인지 여부를 나타내는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 제1비트는상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로가 캐시 적중실패(miss)에 따라 교체되는 상기 넌템포럴 데이터를 포함한다는 것을 나타내도록 설정(set)되는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제3항에 있어서,상기 관련 데이터 세트는상기 넌템포럴 데이터를 포함하고,상기 제2비트는상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로에 있는 상기 넌템포럴 데이터를 가리키는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 제1비트는상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 경로도 상기 넌템포럴 데이터를 포함하지 않는다는 것을 나타내도록 설정 해제(cleared)되는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 적어도 하나의 캐시 메모리 및 상기 프로세서에 연결되는 캐시 제어 로직을 더 포함하되,상기 캐시 제어 로직은 상기 적어도 하나의 캐시 메모리를 제어하는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제6항에 있어서,상기 프로세서는데이터 액세스를 위한 명령어를 수신하되,상기 프로세서는상기 데이터가 상기 적어도 하나의 캐시 메모리에 위치하고 있는지 여부를 판단하여, 상기 데이터가 상기 적어도 하나의 캐시 메모리에 위치하고 있으면 상기 적어도 하나의 캐시 메모리로부터 상기 데이터를 액세스하고, 그렇지 않으면 상기 주 메모리로부터 상기 데이터를 액세스하는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제7항에 있어서,상기 적어도 하나의 캐시 메모리로부터 상기 데이터가 액세스되는 경우에,상기 캐시 제어 로직은상기 데이터가 템포럴인지 여부를 판단하여, 상기 데이터가 템포럴이고 상기 제1비트가 넌템포럴 데이터를 나타내도록 설정되어 있지 않으면 액세스되고 있는 상기 경로에 대응하는 상기 제2비트의 오더를 업데이트하고, 그렇지 않으면 상기 오더를 변경하지 않고 그대로 두는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제8항에 있어서,상기 액세스되고 있는 경로의 데이터 세트와 관련된 상기 제1비트는변경되지 않는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제7항에 있어서,상기 적어도 하나의 캐시 메모리로부터 액세스되는 상기 데이터가 넌템포럴인 경우에,상기 캐시 제어 로직은생기 액세스되는 데이터가 넌템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 업데이트하는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제7항에 있어서,상기 주 메모리로부터 상기 데이터가 액세스되는 경우에,상기 캐시 제어 로직은상기 데이터가 넌템포럴인지 여부를 판단하여, 상기 데이터가 넌템포럴인 경우에는 상기 액세스되는 데이터가 넌템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 변경하지 않고 그대로 두는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제11항에 있어서,상기 캐시 제어 로직이 상기 데이터가 템포럴이라고 판단한 경우에,상기 캐시 제어 로직은상기 액세스되는 데이터가 템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 업데이트하는캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 복수의 데이터 세트 각각의 상기 제1비트는로크 비트(lock bit)인캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 넌템포럴 데이터는상기 프로세서에 의해 드물게 사용되도록 미리 결정되어 있는 데이터 타입인캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 제1항에 있어서,상기 넌템포럴 데이터는캐싱될 필요가 없는 스트리밍 데이터 타입인캐시 메모리 관리를 갖는 컴퓨터 시스템.
- 템포럴 데이터 및 넌템포럴 데이터를 저장하는 데이터 캐시 메모리에서 넌템포럴 데이터 오염(pollution)을 제거하는 방법에 있어서,넌템포럴 명령어가 실행되는 동안 상기 데이터 캐시 메모리의 데이터 캐시 세트에 대한 캐시 적중실패(miss)에 응하여 상기 캐시 세트에 있는 제1비트를 동적으로 설정(set)하는 단계;템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중실패 및 설정되어 있는 상기 제1비트에 응하여 상기 적어도 두개의 경로 중에서 하나의 경로에 있는 상기 넌템포럴 데이터를 상기 템포럴 데이터로 교체하는 단계; 및상기 적어도 두개의 경로 중에서 하나의 경로에 있는 상기 넌템포럴 데이터를 상기 템포럴 데이터로 교체하는 것에 응하여 상기 데이터 캐시 세트의 상기 제1비트를 동적으로 설정해제(clear)하는 단계를 포함하되,상기 제1비트는 상기 데이터 캐시 세트에 있는 적어도 두개의 경로 중에서 어느 하나의 경로가 넌템포럴 데이터를 포함하는지 여부를 나타내고, 상기 데이터 캐시 세트에 있는 제2비트는 상기 데이터 캐시 세트에 있는 상기 적어도 두개의 경로의 데이터 엔트리 오더(order)를 나타내는방법.
- 제16항에 있어서,상기 넌템포럴 데이터는드물게 사용되도록 미리 결정되어 있는 데이터 타입인방법.
- 제16항에 있어서,상기 넌템포럴 데이터는캐싱될 필요가 없는 스트리밍 데이터 타입인방법.
- 제16항에 있어서,상기 데이터 캐시 메모리는복수의 데이터 캐시 세트를 포함하고,상기 제1비트를 동적으로 설정하는 단계, 상기 제1비트를 동적으로 설정해제하는 단계, 및 넌템포럴 데이터를 교체하는 단계는상기 데이터 캐시 메모리 내의 상기 복수의 데이터 캐시 세트의 각 캐시 세트에 대한 명령어 액세스 동안 하나의 캐시 세트에서 동시에 실행되는방법.
- 제16항에 있어서,상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중실패에 응하여 상기 적어도 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 가리키도록 상기 데이터 캐시 세트의 상기 제2비트를 갱신하는 단계를 더 포함하는 방법.
- 제20항에 있어서,상기 제1비트의 세팅을 유지하는 단계; 및상기 템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중(hit)에 응하여 상기 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 가리키도록 상기 제2비트를 유지하는 단계를 더 포함하는 방법.
- 제20항에 있어서,설정되어 있는 제1비트를 유지하여, 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 계속 가리키도록 상기 제2비트를 업데이트하지 않고 모드 비트(mode bit)을 설정해제하는 단계를 더 포함하는 방법.
- 제20항에 있어서,설정되어 있는 모드 비트 및 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 제1비트를 설정하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 설정되어 있는 모드 비트 및 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 두개의 경로 중에서 어느 경로가 적중되었는지를 가리키도록 상기 데이터 캐시 세트의 상기 제2비트를 업데이트하는 단계를 더 포함하는 방법.
- 제16항에 있어서,상기 템포럴 명령어가 실행되는 동안 상기 캐시 세트의 캐시 적중에 응하여 상기 데이터 캐시 세트의 상기 제1비트의 세팅을 유지하는 단계를 더 포함하는 방법.
- 제16항에 있어서,상기 제1비트는로크 비트(lock bit)인방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/053,386 US6202129B1 (en) | 1998-03-31 | 1998-03-31 | Shared cache structure for temporal and non-temporal information using indicative bits |
US09/053,386 | 1998-03-31 | ||
US9/053,386 | 1998-03-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010042262A KR20010042262A (ko) | 2001-05-25 |
KR100389549B1 true KR100389549B1 (ko) | 2003-06-27 |
Family
ID=21983863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2000-7010799A KR100389549B1 (ko) | 1998-03-31 | 1999-03-24 | 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 |
Country Status (10)
Country | Link |
---|---|
US (2) | US6202129B1 (ko) |
EP (1) | EP1066566B1 (ko) |
JP (1) | JP4486750B2 (ko) |
KR (1) | KR100389549B1 (ko) |
CN (1) | CN1230750C (ko) |
AU (1) | AU3364599A (ko) |
BR (1) | BR9909295A (ko) |
RU (1) | RU2212704C2 (ko) |
TW (1) | TW573252B (ko) |
WO (1) | WO1999050752A1 (ko) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978379A (en) * | 1997-01-23 | 1999-11-02 | Gadzoox Networks, Inc. | Fiber channel learning bridge, learning half bridge, and protocol |
US6202129B1 (en) * | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
US6216215B1 (en) | 1998-04-02 | 2001-04-10 | Intel Corporation | Method and apparatus for senior loads |
US6542966B1 (en) * | 1998-07-16 | 2003-04-01 | Intel Corporation | Method and apparatus for managing temporal and non-temporal data in a single cache structure |
US7430171B2 (en) | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US6560677B1 (en) * | 1999-05-04 | 2003-05-06 | International Business Machines Corporation | Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory |
US6728835B1 (en) * | 2000-08-30 | 2004-04-27 | Unisys Corporation | Leaky cache mechanism |
US6681295B1 (en) * | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
US6668307B1 (en) * | 2000-09-29 | 2003-12-23 | Sun Microsystems, Inc. | System and method for a software controlled cache |
US6598124B1 (en) * | 2000-09-29 | 2003-07-22 | Sun Microsystems, Inc. | System and method for identifying streaming-data |
AU2001294856A1 (en) * | 2000-09-29 | 2002-04-08 | Sun Microsystems, Inc. | System and method for identifying and managing streaming-data |
US6578111B1 (en) * | 2000-09-29 | 2003-06-10 | Sun Microsystems, Inc. | Cache memory system and method for managing streaming-data |
US6766413B2 (en) * | 2001-03-01 | 2004-07-20 | Stratus Technologies Bermuda Ltd. | Systems and methods for caching with file-level granularity |
US6574708B2 (en) * | 2001-05-18 | 2003-06-03 | Broadcom Corporation | Source controlled cache allocation |
US7287649B2 (en) * | 2001-05-18 | 2007-10-30 | Broadcom Corporation | System on a chip for packet processing |
US6766389B2 (en) | 2001-05-18 | 2004-07-20 | Broadcom Corporation | System on a chip for networking |
US7239636B2 (en) | 2001-07-23 | 2007-07-03 | Broadcom Corporation | Multiple virtual channels for use in network devices |
US6823426B2 (en) * | 2001-12-20 | 2004-11-23 | Intel Corporation | System and method of data replacement in cache ways |
US7328328B2 (en) * | 2002-02-19 | 2008-02-05 | Ip-First, Llc | Non-temporal memory reference control mechanism |
US7295555B2 (en) | 2002-03-08 | 2007-11-13 | Broadcom Corporation | System and method for identifying upper layer protocol message boundaries |
US7114043B2 (en) * | 2002-05-15 | 2006-09-26 | Broadcom Corporation | Ambiguous virtual channels |
US7269709B2 (en) * | 2002-05-15 | 2007-09-11 | Broadcom Corporation | Memory controller configurable to allow bandwidth/latency tradeoff |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
US7035979B2 (en) * | 2002-05-22 | 2006-04-25 | International Business Machines Corporation | Method and apparatus for optimizing cache hit ratio in non L1 caches |
US7073030B2 (en) | 2002-05-22 | 2006-07-04 | International Business Machines Corporation | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio |
US6904501B1 (en) * | 2002-06-17 | 2005-06-07 | Silicon Graphics, Inc. | Cache memory for identifying locked and least recently used storage locations |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7411959B2 (en) | 2002-08-30 | 2008-08-12 | Broadcom Corporation | System and method for handling out-of-order frames |
US7934021B2 (en) | 2002-08-29 | 2011-04-26 | Broadcom Corporation | System and method for network interfacing |
US7313623B2 (en) | 2002-08-30 | 2007-12-25 | Broadcom Corporation | System and method for TCP/IP offload independent of bandwidth delay product |
US8180928B2 (en) | 2002-08-30 | 2012-05-15 | Broadcom Corporation | Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney |
US7512498B2 (en) * | 2002-12-31 | 2009-03-31 | Intel Corporation | Streaming processing of biological sequence matching |
EP1686485A4 (en) * | 2003-11-18 | 2008-10-29 | Matsushita Electric Ind Co Ltd | CACHE MEMORY AND ASSOCIATED CHECK |
US7321954B2 (en) * | 2004-08-11 | 2008-01-22 | International Business Machines Corporation | Method for software controllable dynamically lockable cache line replacement system |
US20060101208A1 (en) * | 2004-11-09 | 2006-05-11 | Intel Corporation | Method and apparatus for handling non-temporal memory accesses in a cache |
US7356650B1 (en) * | 2005-06-17 | 2008-04-08 | Unisys Corporation | Cache apparatus and method for accesses lacking locality |
US7437510B2 (en) * | 2005-09-30 | 2008-10-14 | Intel Corporation | Instruction-assisted cache management for efficient use of cache and memory |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US20070150658A1 (en) * | 2005-12-28 | 2007-06-28 | Jaideep Moses | Pinning locks in shared cache |
US8527713B2 (en) * | 2006-01-31 | 2013-09-03 | Qualcomm Incorporated | Cache locking without interference from normal allocations |
GB0603552D0 (en) | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
JP4369524B2 (ja) * | 2006-02-27 | 2009-11-25 | 富士通株式会社 | Lru制御装置およびlru制御プログラム |
US20080147989A1 (en) * | 2006-12-14 | 2008-06-19 | Arm Limited | Lockdown control of a multi-way set associative cache memory |
WO2008095025A1 (en) | 2007-01-31 | 2008-08-07 | Qualcomm Incorporated | Apparatus and methods to reduce castouts in a multi-level cache hierarchy |
US7793049B2 (en) * | 2007-10-30 | 2010-09-07 | International Business Machines Corporation | Mechanism for data cache replacement based on region policies |
US8108614B2 (en) * | 2007-12-31 | 2012-01-31 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
MX2011000292A (es) * | 2008-07-23 | 2011-02-23 | Micro Motion Inc | Sistema de procesamiento con cotrol de acceso a memoria externa. |
US8364898B2 (en) * | 2009-01-23 | 2013-01-29 | International Business Machines Corporation | Optimizing a cache back invalidation policy |
US8312219B2 (en) * | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US8560777B2 (en) * | 2009-12-16 | 2013-10-15 | Telefonaktiebolaget L M Ericsson (Publ) | Method, server, computer program and computer program product for caching |
US9323527B2 (en) * | 2010-10-15 | 2016-04-26 | International Business Machines Corporation | Performance of emerging applications in a virtualized environment using transient instruction streams |
EP2761466B1 (en) | 2011-09-30 | 2020-08-05 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN103946826B (zh) | 2011-09-30 | 2019-05-31 | 英特尔公司 | 用于在公共存储器通道上实现多级存储器层级的设备和方法 |
WO2013080426A1 (ja) * | 2011-12-01 | 2013-06-06 | パナソニック株式会社 | 熱を考慮した構造を持つ集積回路装置、三次元集積回路、三次元プロセッサ装置、及びプロセススケジューラ |
US9519549B2 (en) * | 2012-01-11 | 2016-12-13 | International Business Machines Corporation | Data storage backup with lessened cache pollution |
US8856455B2 (en) | 2012-03-28 | 2014-10-07 | International Business Machines Corporation | Data cache block deallocate requests |
US8874852B2 (en) | 2012-03-28 | 2014-10-28 | International Business Machines Corporation | Data cache block deallocate requests in a multi-level cache hierarchy |
CN103577480B (zh) * | 2012-08-07 | 2017-05-31 | ***股份有限公司 | 一种参数划分***及其方法、一种业务处理***及其方法 |
US9558121B2 (en) * | 2012-12-28 | 2017-01-31 | Intel Corporation | Two-level cache locking mechanism |
US9256539B2 (en) | 2013-03-07 | 2016-02-09 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Sharing cache in a computing system |
US9311239B2 (en) | 2013-03-14 | 2016-04-12 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
US20150095586A1 (en) * | 2013-09-30 | 2015-04-02 | Advanced Micro Devices , Inc. | Storing non-temporal cache data |
US11580125B2 (en) * | 2015-05-08 | 2023-02-14 | Adp, Inc. | Information system with temporal data |
US10379827B2 (en) | 2016-12-29 | 2019-08-13 | Intel Corporation | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment |
US11681627B1 (en) * | 2021-10-18 | 2023-06-20 | Meta Platforms Technologies, Llc | Distributed temporal cache for Systems on a Chip |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471605A (en) * | 1992-08-27 | 1995-11-28 | Intel Corporation | Apparatus for updating a multi-way set associative cache memory status array |
US5493667A (en) * | 1993-02-09 | 1996-02-20 | Intel Corporation | Apparatus and method for an instruction cache locking scheme |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5119453A (en) * | 1974-08-08 | 1976-02-16 | Fujitsu Ltd | Patsufua memoriseigyohoshiki |
JPS5534336A (en) * | 1978-08-31 | 1980-03-10 | Fujitsu Ltd | Buffer memory control method |
JPS58159285A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | バツフアメモリ制御方式 |
JPH01133162A (ja) * | 1987-11-18 | 1989-05-25 | Fujitsu Ltd | キャッシュメモリ制御方式 |
US4905141A (en) | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
JPH0358151A (ja) * | 1989-07-26 | 1991-03-13 | Nec Corp | キャッシュメモリ装置 |
JPH0358252A (ja) * | 1989-07-27 | 1991-03-13 | Nec Corp | キャッシュメモリ制御装置 |
JPH041838A (ja) * | 1990-04-18 | 1992-01-07 | Nec Corp | キャッシュメモリ制御回路 |
JPH04215151A (ja) * | 1990-12-13 | 1992-08-05 | Nec Commun Syst Ltd | キャッシュ制御方式 |
EP0496439B1 (en) * | 1991-01-15 | 1998-01-21 | Koninklijke Philips Electronics N.V. | Computer system with multi-buffer data cache and method therefor |
GB2255211B (en) * | 1991-04-25 | 1995-05-17 | Intel Corp | LRU pointer updating in a controller for two-way set associative cache |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
JPH05165726A (ja) * | 1991-12-12 | 1993-07-02 | Nec Corp | データ処理装置 |
JPH05233454A (ja) * | 1992-02-24 | 1993-09-10 | Hitachi Ltd | キャッシュメモリ装置 |
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 |
US5434992A (en) | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
JPH06348595A (ja) * | 1993-06-07 | 1994-12-22 | Hitachi Ltd | キャッシュ装置 |
JPH07281957A (ja) * | 1994-04-15 | 1995-10-27 | Hitachi Ltd | キャッシュ記憶装置およびアクセス命令生成方法 |
US5826052A (en) | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
JPH07334428A (ja) * | 1994-06-14 | 1995-12-22 | Toshiba Corp | キャッシュメモリ |
US5584014A (en) * | 1994-12-20 | 1996-12-10 | Sun Microsystems, Inc. | Apparatus and method to preserve data in a set associative memory device |
US5701426A (en) * | 1995-03-31 | 1997-12-23 | Bull Information Systems Inc. | Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio |
US5845317A (en) * | 1995-11-17 | 1998-12-01 | Micron Technology, Inc. | Multi-way cache expansion circuit architecture |
GB2311880A (en) * | 1996-04-03 | 1997-10-08 | Advanced Risc Mach Ltd | Partitioned cache memory |
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
JPH10207767A (ja) * | 1997-01-16 | 1998-08-07 | Toshiba Corp | ロック機能付キャッシュメモリ及びこのキャッシュメモリを備えたマイクロプロセッサ |
US6434671B2 (en) * | 1997-09-30 | 2002-08-13 | Intel Corporation | Software-controlled cache memory compartmentalization |
US6105111A (en) * | 1998-03-31 | 2000-08-15 | Intel Corporation | Method and apparatus for providing a cache management technique |
US6223258B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Method and apparatus for implementing non-temporal loads |
US6205520B1 (en) * | 1998-03-31 | 2001-03-20 | Intel Corporation | Method and apparatus for implementing non-temporal stores |
US6202129B1 (en) * | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
-
1998
- 1998-03-31 US US09/053,386 patent/US6202129B1/en not_active Expired - Lifetime
-
1999
- 1999-03-24 AU AU33645/99A patent/AU3364599A/en not_active Abandoned
- 1999-03-24 RU RU2000127102/09A patent/RU2212704C2/ru not_active IP Right Cessation
- 1999-03-24 KR KR10-2000-7010799A patent/KR100389549B1/ko not_active IP Right Cessation
- 1999-03-24 WO PCT/US1999/006501 patent/WO1999050752A1/en active IP Right Grant
- 1999-03-24 CN CNB998047333A patent/CN1230750C/zh not_active Expired - Lifetime
- 1999-03-24 BR BR9909295-6A patent/BR9909295A/pt not_active Application Discontinuation
- 1999-03-24 JP JP2000541596A patent/JP4486750B2/ja not_active Expired - Fee Related
- 1999-03-24 EP EP99915030A patent/EP1066566B1/en not_active Expired - Lifetime
- 1999-03-31 TW TW88105070A patent/TW573252B/zh not_active IP Right Cessation
-
2001
- 2001-03-09 US US09/803,357 patent/US6584547B2/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471605A (en) * | 1992-08-27 | 1995-11-28 | Intel Corporation | Apparatus for updating a multi-way set associative cache memory status array |
US5493667A (en) * | 1993-02-09 | 1996-02-20 | Intel Corporation | Apparatus and method for an instruction cache locking scheme |
Also Published As
Publication number | Publication date |
---|---|
US20020007441A1 (en) | 2002-01-17 |
BR9909295A (pt) | 2000-12-05 |
EP1066566A1 (en) | 2001-01-10 |
RU2212704C2 (ru) | 2003-09-20 |
WO1999050752A9 (en) | 2000-05-25 |
JP4486750B2 (ja) | 2010-06-23 |
EP1066566A4 (en) | 2002-10-23 |
US6202129B1 (en) | 2001-03-13 |
CN1295687A (zh) | 2001-05-16 |
TW573252B (en) | 2004-01-21 |
KR20010042262A (ko) | 2001-05-25 |
CN1230750C (zh) | 2005-12-07 |
AU3364599A (en) | 1999-10-18 |
US6584547B2 (en) | 2003-06-24 |
WO1999050752A1 (en) | 1999-10-07 |
JP2002510085A (ja) | 2002-04-02 |
EP1066566B1 (en) | 2006-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100389549B1 (ko) | 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 | |
US6105111A (en) | Method and apparatus for providing a cache management technique | |
US6219760B1 (en) | Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
JP4028875B2 (ja) | メモリを管理するためのシステムおよび方法 | |
US6912623B2 (en) | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy | |
US6990557B2 (en) | Method and apparatus for multithreaded cache with cache eviction based on thread identifier | |
US6292871B1 (en) | Loading accessed data from a prefetch buffer to a least recently used position in a cache | |
US8140759B2 (en) | Specifying an access hint for prefetching partial cache block data in a cache hierarchy | |
US20100217937A1 (en) | Data processing apparatus and method | |
US20070239938A1 (en) | Area effective cache with pseudo associative memory | |
JPH0364893B2 (ko) | ||
EP1012723A1 (en) | Cache hierarchy management with locality hints for different cache levels | |
US20060069843A1 (en) | Apparatus and method for filtering unused sub-blocks in cache memories | |
KR100320974B1 (ko) | 수직 캐시 계층구조에서 의사 정밀 아이-캐시의 포함 방법 | |
US20080059714A1 (en) | System, method and storage medium for prefetching via memory block tags | |
US7293141B1 (en) | Cache word of interest latency organization | |
US8176254B2 (en) | Specifying an access hint for prefetching limited use data in a cache hierarchy | |
US11397680B2 (en) | Apparatus and method for controlling eviction from a storage structure | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
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: 20120601 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |