KR101098689B1 - N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로 - Google Patents
N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로 Download PDFInfo
- Publication number
- KR101098689B1 KR101098689B1 KR1020067001662A KR20067001662A KR101098689B1 KR 101098689 B1 KR101098689 B1 KR 101098689B1 KR 1020067001662 A KR1020067001662 A KR 1020067001662A KR 20067001662 A KR20067001662 A KR 20067001662A KR 101098689 B1 KR101098689 B1 KR 101098689B1
- Authority
- KR
- South Korea
- Prior art keywords
- ruleset
- cache
- rulesets
- address
- paths
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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
다경로 캐시에서, 대체를 위하여 이용가능한 N개의 경로를 선택하는 방법은 다수의 룰셋들(102,108)을 제공하는 단계를 포함하며, 상기 다수의 룰셋들 각각은 대체를 위하여 이용가능한, 캐시 내의 N개의 경로를 특정한다(N은 0 이상임). 상기 방법은 액세스 어드레스를 수신하는 단계와, 상기 액세스 어드레스의 적어도 일부를 이용하여 다수의 룰셋들 중 하나를 선택하는 단계를 더 포함한다. 그 후에, 상기 다수의 룰셋들(110) 중 하나는 대체를 위하여 이용가능한 그러한 캐시 내의 N개의 경로를 선택하는 데에 이용될 수 있을 것이다. 일 실시예는 액세스 어드레스(40)의 고차 비트들을 이용하여 룰셋을 선택한다. 다른 실시예는 상기 액세스 어드레스의 적어도 일부 및 룰셋 선택자 제어 레지스터를 이용하여 룰셋을 선택한다. 또 다른 실시예는 액세스 어드레스 및 어드레스 범위 비교기들을 이용하여 룰셋을 선택한다.
다경로 캐시, 대체, 룰셋, 액세스 어드레스, 룰셋 선택자 제어 레지스터
Description
본 발명은 데이터 처리 시스템에 관한 것으로, 보다 구체적으로는 데이터 처리 시스템 내의 선택적인 캐시 대체 정책에 관한 것이다.
예컨대, 이동 및 핸드핼드 애플리케이션의 폭넓은 이용에 기인하여 데이터 처리 시스템에서 보다 낮은 전력 소비가 점점 더 중요해지고 있다. 오늘날의 많은 데이터 처리 시스템들이, (메인 메모리 또는 다른 내부 또는 외부 메모리와 같은)메모리에의 액세스의 수를 감소시키기 위하여 종종 캐시(cache)라고 불리는 집적 회로 상에 위치한 보다 작고, 보다 빠르고, 보다 효율적인 메모리를 이용한다. 캐시에의 액세스는 통상적으로 보다 적은 전력을 소비하며, 다른 내부 또는 외부 메모리에의 액세스와 비교할 때에 감소된 지연을 초래한다. 따라서, 전력을 감소시키고 성능을 향상시키기 위하여, 곧이어 다시 요청될 이들 아이템들을 보다 빠르고 보다 효율적인 캐시에 저장하는 것이 바람직하다.
캐시 오염은 보다 낮은 재이용 정도(degree)를 가지는 정보가, 캐시 내에 여전히 존재한다면 보다 높은 재이용 정도를 가졌을 정보를 대체하는 경우에 발생한다. 즉, 통상적으로 보다 높은 재이용 정도를 가지는 아이템들은 다시 요청될(즉, 수차례 재요청될) 가능성이 보다 높기 때문에 캐시 내에 남아야 한다. 예컨대, 몇몇 정보는 다른 정보와 비교할 때에 보다 짧은 수명을 가지며, 이러한 짧은 수명을 가지는 정보에 의한 캐시 오염은 전력 소비를 증가시키고 캐시의 성능을 감소시킬 수 있는데, 이는 보다 짧은 수명 정보에 의해서 대체된 이후에 보다 높은 수명을 가지는 정보가 보다 느리고 효율성이 떨어지는 내부 또는 외부 메모리로부터 재패치(refetch)되어야 할 가능성이 높아질 것이기 때문이다. 그러나, 보다 짧은 수명을 가지는 정보가 캐시 내에서의 재이용으로부터 혜택을 얻도록 허용하는 것은 여전히 바람직하다. 따라서, 캐시의 향상된 전력 소비와 성능을 획득하기 위하여 캐시 오염이 감소된 향상된 캐시에 대한 요구가 존재하게 된다.
본 발명은 예시적으로 설명되며, 첨부된 도면에 의해서 한정되지 않으며, 동일한 참조 부호는 동일한 요소를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 나타내는 블럭도.
도 2는 본 발명의 일 실시예에 따른 도 1의 캐시의 일부를 나타내는 블럭도.
도 3은 본 발명의 일 실시예에 따른 도 2의 캐시 제어 회로의 일부를 나타내는 블럭도.
도 4는 본 발명의 일 실시예에 따른 캐시 경로 제어 레지스터들의 일부를 나타내는 블럭도.
도 5는 본 발명의 다른 실시예에 따른 도 2의 캐시 제어 회로의 일부를 나타내는 블럭도.
도 6은 본 발명의 다른 실시예에 따른 도 2의 캐시 제어 회로의 일부를 나타내는 블럭도.
본 발명의 기술 분야의 당업자는 도면에서의 요소들은 간단명료하게 나타내기 위하여 반드시 실제 크기대로 나타내지는 않았음을 이해할 수 있을 것이다. 예컨대, 본 발명의 실시예의 향상된 이해를 돕기 위하여 도면에서의 몇몇 요소들의 치수는 다른 요소들에 비하여 과장될 수 있을 것이다.
본 명세서에서 사용된 "버스(bus)"라는 용어는 데이터, 어드레스, 제어 또는 상태와 같은 하나 이상의 다양한 타입의 정보를 전송하는 데에 이용될 수 있는 다수의 신호들 또는 도전체들을 일컫는 데에 사용된다. 본 명세서에서 사용되는 도전체들은 단일 도전체, 다수의 도전체들, 단방향 도전체들 또는 양방향 도전체들로 도시되거나 기술될 수 있을 것이다. 그러나, 상이한 실시예들은 이러한 도전체들의 구현을 변경할 수 있을 것이다. 예컨대, 양방향 도전체들 대신 개별적인 단방향 도전체들이 이용될 수 있을 것이며, 그 역 또한 가능할 것이다. 또한, 다수의 도전체들이 다수의 신호들을 직렬로, 또는 시분할 방식으로 전달하는 단일의 도전체로 대체될 수 있을 것이다. 또한, 다수의 신호들을 전달하는 단일의 도전체들이 이들 신호들의 서브세트(subset)들을 전달하는 다양한 상이한 도전체들로 분리될 수 있을 것이다. 따라서, 많은 신호들을 전송하는 선택사항이 존재한다.
통상적으로, 캐시의 성능 및 전력 소비는 캐시 오염을 감소시킴으로써 향상될 수 있다. 전술한 바와 같이, 캐시 오염은 보다 낮은 재사용 정도를 가지는 정보가 보다 높은 재사용 정도를 가졌을 정보를 대체하는 때에, 보다 낮은 재사용 정도를 가지는 정보가 여전히 캐시 내에 존재하는 경우에 발생한다. 본 발명의 일 실시예는 다양한 타입의 정보의 캐시 내로의 배치를 제어함으로써 캐시 오염을 감소시킨다. 예컨대, 상이한 타입의 정보는 상이한 수명을 가질 수 있을 것이다. 예컨대, 명령 및 스택(stack) 또는 힙(heap) 데이터는 멀티미디어, 그래픽 또는 스트리밍 데이터와 같은 일시적인 정보와 비교할 때에 통상적으로 보다 긴 수명을 가질 것이다. 또한, 다른 타입의 정보는 다른 수명을 가질 것이다. 보다 긴 수명을 가지는 정보는 동일한 정보가 다시 요청될 가능성이 높다는 점에서 통상적으로 보다 높은 재사용 확률을 가진다. 따라서, 요청시에 그 정보가 이미 캐시 내에 존재하는 경우에는 효율성이 향상될 수 있다. 그러나, 보다 짧은 수명을 가지는 정보가 계속하여 보다 긴 수명을 가지는 정보를 대체하는 경우에는, 그러한 보다 긴 수명을 가지는 정보에 대한 후속하는 요청시에, 더 이상 캐시 내에 존재하지 않을 가능성이 보다 커지며, 그리하여 보다 느리고 보다 비효율적인 메모리로부터 패치(fetch)하여야만 할 것이다. 그럼에도 불구하고, 보다 짧거나 중간 정도의 수명을 가지는 정보가 재사용으로부터 혜택을 얻는 것을 가능하게 하는 것 또한 여전히 바람직함에 주의하여야 한다. 따라서, 아래에서 보다 상세히 기술될 바와 같이, 본 발명의 상이한 실시예들은 프로그램가능하고 유연한 방식으로 캐시 내로의 정보의 배치를 제어하는 것을 가능하여, 향상된 캐시 성능을 가능하게 하고, 이로 인하여 보다 낮은 시스템 전력 소비를 가능하게 한다.
도 1을 참조하면, 데이터 처리 시스템(10)의 일 실시예가 도시되어 있다. 데이터 처리 시스템(10)은 집적 회로(12) 및 외부 메모리(14)를 포함한다. 집적 회로(12)는 프로세서(16), 캐시 메모리(18), 버스 인터페이스(22) 및 기타 모듈들(20)을 포함한다. 집적 회로(12)는 버스(24) 및 버스(26) 또한 포함한다. 버스(24)는 프로세서(16), 캐시(18), 버스 인터페이스(22) 및 기타 모듈들(20)을 결합한다. 버스(26)는 버스 인터페이스(22)를 외부 메모리(14)에 결합한다. 데이터 처리 시스템(10)의 특정한 예시적인 실시예가 도시되었지만, 이러한 처리 시스템의 다양한 구성들 및 다른 실시예들이 구현될 수 있음이 고려될 수 있다.
예컨대, 캐시(18)가 집적 회로(12)의 일부로서 나타났지만, 이와 달리 캐시(18)는, 예컨대 외부 메모리(14) 내부와 같이 집적 회로(12)의 외부에 배치될 수 있을 것이다. 또한, 집적 회로(12)는 멀티프로세서 데이터 처리 시스템과 같은 임의의 수의 프로세서를 포함할 수 있으며, 기타 모듈(20)은, 예컨대 기타 마스터, 슬레이브 또는 메모리와 같은 임의의 기타 주변 장치들을 포함할 수 있음에 주의하여야 한다. 또한, 집적 회로(12)는 집적 회로(12)의 상이한 부분들이 상이한 집적 회로들 상에 위치할 수 있도록 임의의 수의 집적 회로를 포함할 수 있을 것이다. 또는, 이와 달리 집적 회로(12)는 단일 집적 회로(12)일 수 있을 것이다. 또한, 외부 메모리(14)는 집적 회로(12)와 동일한 집적 회로 상에 위치하거나, 별도의 집적 회로 상에 위치할 수 있을 것이다. 데이터 처리 시스템(10)은 도 2 내지 5를 참조하여 아래에 기술될 본 발명의 실시예들을 이해하는 데에 필요한 정도까지만 논의될 것이다. 나머지 기능은 본 기술 분야에 공지되어 있으며, 따라서 본 기술 분야에 공지된 다양한 상이한 방식들로 구현될 수 있을 것이다.
도 2를 참조하면, 캐시(18)의 일부의 특정 실시예가 개시되어 있다. 캐시(18)의 일부는 레지스터(62), 다수의 경로를 위한 태그 메모리 어레이(42-48), 다수의 경로를 위한 데이터 메모리 어레이(50-56) 및 캐시 제어 회로(58)를 포함한다. 액세스 어드레스(40)는 버스(24)의 어드레스부로부터 수신되며, 태그 값부(64), 인덱스부(66) 및 워드 선택부(68)를 가진다. 예컨대, 판독 액세스에 대하여, 액세스 어드레스(40)는 (예컨대, 데이터 또는 명령과 같은)요청된 정보의 어드레스에 대응한다. 도시된 실시예에서, 액세스 어드레스(40)는 수신시에 레지스터(62) 내에 저장된다. 액세스 어드레스(40)의 태그부(64)는 다경로 태그 어레이(42-48)에 제공되는 태그 값 데이터를 포함한다. 인덱스부(66)로부터의 데이터는 다경로 태그 어레이(42-48)와 다경로 데이터 어레이(50-56) 모두에 제공되며, 태그 및 데이터 어레이들에 인덱스를 제공하는 데에 이용된다. 예컨대, 일 실시예에서 인덱스부(66)는 각각의 경로의 태그 및 데이터부 내의 소정의 수의 세트들 중 하나를 선택하는 세트 지시자를 포함한다. 데이터 어레이(경로 0)(50)와 같은 데이터 어레이 내의 데이터가 인덱스부(66) 및 워드 선택부(68) 모두에 의해서 지시되도록 워드 선택부(68)로부터의 데이터가 다경로 데이터 어레이(50-56)에 제공된다. 즉, 인덱스부(66)는 데이터 어레이(경로 0)의 하나의 엔트리를 식별하며, 그 후에 워드 선택부(68)는 그러한 엔트리의 일부를 식별할 수 있을 것이다. 다경로 데이터 어레이는 버스(24)의 양방향성 데이터부에 또한 결합되어, 버스(24)로부터 데이터를 수신하거나, 버스(24)에 데이터를 제공한다.
태그 어레이(경로 0)(42)와 같은 각각의 태그 어레이는 태그 값(64)과 인덱스 값(66)에 관련해 위치한 태그 어레이(경로 0)(42) 내의 데이터 사이의 비교에 근거하여 대응하는 데이터 어레이에 히트(hit) 신호를 제공한다. 예컨대, 동작시에, 태그부(64)는 인덱스부(66)를 통하여 태그 어레이(경로 0)(42)로부터 검색된 값과 비교되어 히트 신호(72)를 제공한다. 비교된 값들이 정합된 결과를 나타내는 경우에는 히트 신호(72)가 어써트(assert)되어 히트를 나타낸다. 데이터 어레이(경로 0)(50)는 다수의 데이터 블럭을 포함하며, 인덱스 값(66) 및 워드 선택 값(68) 모두에 의해서 어드레싱되며, 히트에 응답하여 어드레싱된 데이터 항목이 데이터 어레이(경로 0)(50)로부터 버스(24)의 데이터부에 출력된다. 그러나, 비교된 값들이 정합된 결과를 나타내지 않는 경우에는, 히트 신호(72)는 어써트되지 않으며, 이는 캐시(18)의 그러한 경로에서 미스(miss)된 것을 나타낸다. 태그 값(64)과 태그 어레이(42-48) 내의 임의의 태그들 사이에 정합이 존재하지 않는 경우에는 히트 신호들(72-78)은 어써트되지 않아, 액세스 어드레스(40)가 캐시(18) 내에서 미스되었음을 나타낸다.
도 2는 캐시(18)의 일부의 단지 일 예만을 나타냄에 주의하여야 한다. 그러나, 다른 실시예들에서, 레지스터(62), 태그 어레이(42-48) 및 데이터 어레이(50-56)는 원하는 기능을 달성하기 위하여 본 기술 분야에 공지된 다양한 상이한 방식으로 구현될 수 있음에 주의하여야 한다.
아래에서 보다 상세히 설명될 바와 같이, 캐시 제어 회로(58)는 액세스 어드레스(40)의 적어도 일부를 수신하고 현재 액세스에 대응하는 선택된 룰셋(ruleset)을 결정한다. 선택된 룰셋은, 만약 존재하는 경우에는 경로 0 내지 N의 어느 경로들이 대체용으로 이용가능한지를 나타낸다. 본 발명의 일 실시예에서, 각각의 룰셋은 캐시 내의 각각의 경로에 대하여 그러한 특정 경로가 그러한 룰셋이 선택되는 경우에 대체에 대한 후보인지 여부를 나타내는 단일의 제어 비트를 제공한다. 다른 실시예들은 소정의 경로가 소정의 룰셋에 관하여 대체를 위한 후보로서 고려되어야할지 여부를 나타내는 다른 방법을 이용할 수 있을 것이다.
동작의 일 예로서, 요청 장치로부터의 판독 액세스 요청에 응답하여, 요청된 정보의 어드레스가 액세스 어드레스(40)로서 캐시(18)에 제공된다. 액세스 어드레스(40)의 태그 값(64)이 태그 어레이(42,44,46,48) 내에서 어떠한 정합된 결과도 나타내지 않는 경우에는, 전술한 바와 같이 미스(miss)가 발생한다. 미스인 경우에, 요청된 정보는, 예컨대 외부 메모리(14) 또는 임의의 다른 (내부 또는 외부)메모리와 같은 메모리로부터 패치되어 캐시 내에 저장되며, 판독 요청에 응답하여 요청 장치에 제공된다. 일 실시예에서, 캐시 제어 회로(58)는 액세스 어드레스(40)의 적어도 일부에 근거하여 선택된 룰셋을 선택하고, 선택된 룰셋을 이용하여 어느 경로들이 패치된 정보를 수신하고 저장하는 데에 이용가능한지를 결정하며, 선택된 룰셋에 의해서 지시되는 이용가능한 경로를 선택하여 패치된 정보를 저장하고, 현재 선택된 경로 내에 존재하는 어떠한 정보가 패치된 정보와 대체될 것인지를 결정한다. 따라서, 캐시 제어 회로는 통신 경로(70)를 통해서 데이터 어레이(50-56)에 기록 인에이블(89)을 제공하여 선택된 경로가 갱신되는 것을 가능하게 한다. 캐시 제어 회로(58) 또한 통신 경로(61)를 통해서 태그 어레이(42-48)와 통신하며, 선택된 대응 데이터 어레이가 기록되는 때에는 필요한 경우 태그 어레이의 갱신을 제어한다. 이러한 기능은 본 기술 분야에 공지되어 있기 때문에, 추가적인 설명은 데이터 어레이(50-56)의 갱신에 촛점을 맞출 것이며, 태그 어레이(42-48)에 대한 적절한 대응하는 갱신은 더 이상 기술되지 않을 것이다. 캐시 제어 회로(58)는 또한 버스(24)의 데이터, 어드레스 및 제어부에 양방향으로 결합된다. 캐시 제어 회로(58)는 본 기술 분야에 공지된 다양한 다른 기능들을 수행할 수도 있으며, 따라서 도 3 내지 5의 실시예들에 적용가능한 캐시 제어 회로(58)의 이들 부분들만이 본 명세서에서 보다 상세히 기술될 것이다.
도 3은 도 2의 캐시 제어 회로(58)의 일부의 일 실시예를 도시한다. 도 3의 실시예는 캐시 경로 제어 레지스터(100) 및 대체 제어 회로(112)를 포함하는 룰셋 선택 회로(113)를 포함한다. 룰셋 선택 회로(113)는 액세스 어드레스(40)의 높은 차수의 비트들을 버스(24)의 어드레스부로부터 수신하여, 이들 높은 차수의 비트들을 룰셋들(102,104,106,108) 중 하나를 선택된 룰셋(110)으로서 선택하는 데에 이용한다. 그 후에, 선택된 룰셋(110)은 기록 인에이블(89)을 출력하는 대체 제어 회로에 제공된다. 도시된 실시예에서, 액세스 어드레스(40)의 2개의 최고차 비트들이 4개의 가능한 룰셋(102-108) 중 하나를 선택하는 데에 이용된다. 그러나, 다른 실시예들에서, 임의의 수의 보다 높은 차수의 비트들이 가능한 룰셋들의 보다 작거나 보다 큰 수 중에서의 선택을 허용하는 데에 이용될 수 있음에 주의하여야 한다. 예컨대, 액세스 어드레스(40)의 3가지 최고차 비트들이 8개 (또는 그보다 작은) 가능한 룰셋들 사이에서 선택하는 데에 이용될 수 있을 것이다. 일 실시예에서, 룰셋을 선택하는 데에 이용된 액세스 어드레스(40)의 고차 비트들은 그러한 경우가 아니라면 캐시(18) 및 데이터 처리 시스템(10) 내의 사용되지 않은 어드레스 비트들이다. 따라서, 이들은 상기와 같은 경우가 아니면 사용되지 않기 때문에, 이들은 (액세스 어드레스(40)의 잔여 비트들에 의해서 규정된)특정한 액세스 어드레스에 대하여 원하는 룰셋을 선택하도록 설정될 수 있다. 예컨대, 두드러지게 일시적인 데이터에 대응하는 어드레스들은 캐시(18)의 단지 특정 경로들만이 일시적인 데이터를 저장하도록 캐시(18)의 특정 경로에 할당될 수 있을 것이다. 이러한 예에서, 특정한 타입의 일시적인 데이터에 대하여 어느 경로들이 이용가능한지를 식별하는 룰셋(106)을 선택하기 위하여, 일시적인 데이터에 대한 어드레스들의 고차 비트들은 10과 같은 값으로 설정될 수 있을 것이다. 유사하게, 명령들 또는 다른 보다 긴 수명을 가지는 정보에 대응하는 이들 어드레스들의 보다 높은 차수의 비트들이 00과 같은 값으로 설정되어, 이러한 특정한 타입의 보다 긴 수명을 가지는 데이터에 대하여 어느 경로가 이용가능한지를 식별하는 데에 이용될 수 있는 룰셋(102)을 선택할 수 있을 것이다.
다른 실시예들에서, 적절한 룰셋을 선택하기 위하여 (다른 경우에는 사용되지 않는 비트들과 같은)다른 비트들이 최고차 비트들이 아닌 이용될 수 있는 액세스 어드레스 내에 존재할 수 있을 것이다. 즉, 다른 실시예들에서, 룰셋 선택 회로(113)는 액세스 어드레스(40)의 다른 부분을 수신하여 룰셋을 선택할 수 있을 것이다. 또한, 도 3의 실시예에서, 사용되지 않는 어드레스 비트들 또는 라인들을 가지는 기존의 데이터 처리 시스템 설계는 용이하게 개선되어 최소의 추가적인 회로를 가지고서 전술된 캐시 제어 회로(58)의 부분들을 구현할 수 있을 것이다.
도 3에 도시되지는 않았지만, 액세스 어드레스(40)의 고차 비트들을 복호화하는 데에 복호화기가 이용되어 캐시 경로 제어 레지스터들(100)에 선택 신호를 제공하여 적절한 룰셋을 선택할 수 있을 것이다. 따라서, 본 기술 분야의 당업자는 룰셋 선택 회로(113)가, 많은 어드레스 비트들이 N개의 엔트리들 중 하나를 선택하는 데에 이용되는 것을 가능하게 하는 다양한 상이한 방식들로 구현될 수 있음을 알 수 있을 것이다.
도 4는 본 발명의 일 실시예에 따른 룰셋(102)의 일례를 도시하는 도면이다. 도시된 실시예에서, 룰셋(102)은 캐시(18)의 (0 내지 N의)각각의 경로에 대한 하나의 대체 인에이블 필드를 포함한다. 예컨대, 룰셋(102)은 경로 0 대체 인에이블(114), 경로 1 대체 인에이블(116) 및 경로 N 대체 인에이블(118)을 포함한다. 일 실시예에서, 룰셋(102)과 같은 각각의 룰셋은 룰셋 내의 각각의 비트가 사용자 프로그램가능하도록 사용자 프로그램가능 레지스터 내에 저장된다. 룰셋(102)의 각각의 대체 인에이블 필드는 대응하는 경로가 대체를 위하여 이용가능한지 여부를 지시한다. 즉, 각각의 대체 인에이블 필드는 대응하는 경로가 미스를 야기하는 액세스 요청에 응답하여 메모리로부터 패치된 정보를 저장하는 데에 이용가능한지 여부를 지시한다. 예컨대, 이전 단락의 예에서 기술된 바와 같이, 룰셋(102)이 보다 긴 수명의 정보를 저장하는 이들 어드레스들에 대응하는 데에 이용될 수 있을 것이다. 이러한 예에서, 사용자는 이러한 타입의 보다 긴 수명의 정보에 사용하기 위하여 경로 0 및 5를 남겨둘 수 있을 것이며, 따라서 룰셋(102) 내의 경로 0 및 5를 위한 대체 인에이블 필드들을 어써트할 수 있다. 다른 예에서, 룰셋(102)은 시스템 내에 최단 수명의 정보를 저장하는 이들 어드레스들에 대응하는 데에 이용될 수 있을 것이며, 이는 사용자가 경로 0 내지 N 중 단지 하나만을 이러한 타입의 정보에 대하여 사용하기 위해서 할당하기를 원할 수 있음을 의미한다. 이러한 방식으로, 특정한 수의 경로들을 캐시 오염을 증가시킬 가능성이 높은 타입의 정보에만 할당함으로써 (룰셋(102)과 같은) 룰셋이 캐시 오염을 감소시키는 데에 이용될 수 있을 것이다. 일 실시예에서, 룰셋(102)의 각각의 대체 인에이블 필드는 경로가 인에이블되었는지 여부를 나타내는 단일 비트이다. 다른 실시예에서, 어써트된 비트는 특정 경로가 대체용으로 이용가능하지 않음을 나타낼 수 있을 것이다. 이와 달리, 보다 많거나 보다 적은 비트들이 이용될 수 있을 것이다. 특정 경로들을 위한 필드들이 결합되거나 상이하게 부호화될 수 있을 것이다.
다시 도 3을 참조하면, 일 실시예에서 캐시 경로 제어 레지스터들(100)은 다수의 레지스터들을 포함하며, 하나는 각각의 룰셋들(102-108)을 저장하며, 각각의 룰셋은 (도 4를 참조하여 전술된 바와 같이)룰셋(102)으로서 구현될 수 있을 것이다. 이와 달리, 캐시 경로 제어 레지스터들(100)은, 예컨대 원하는 구현을 위한 원하는 룰셋들의 수 및 크기에 따라 필요한 만큼의 다소의 레지스터들을 포함할 수 있을 것이다. 또한, 다른 실시예에서 이들은 레지스터로 구현되지 않고, 다른 내부 또는 외부 메모리 내에 위치할 수 있을 것이다. 일 실시예에서, 레지스터들은 사용자 프로그램가능하여 사용자가 이용가능한 룰셋들을 어떻게 사용하고, 상이한 타입의 정보에 대하여 캐시(18)의 상이한 경로들을 어떻게 할당할 것인지를 결정하게 하도록 사용자에게 유연성을 허용할 수 있다. 일단 특정한 룰셋이 액세스 어드레스(40)의 고차 비트들에 의해서 선택되면, 이는 제어 회로(112)를 대체하는 선택된 룰셋(110)으로서 제공된다.
대체 제어 회로(112)는 선택된 룰셋(110)에 근거하여, 캐시 미스에 응답하여 패치된 정보를 저장하기 위하여 어느 경로가 선택될 것인지를 결정한다. 예컨대, (룰셋들(102-108)에 대응하는)선택된 룰셋(110)은 둘 이상의 경로가 대체용으로 이용가능함을 나타낼 수 있을 것이며, 따라서 대체 제어 회로(112)가 선택된 룰셋(110)에 근거하여 어느 경로가 이용가능한지 결정할 수 있으며, 그 후에 이용가능한 경로 중 어느 것이 현재 대체를 위하여 이용될 것인지를 결정한다. 일 실시예에서, 대체 제어 회로(112)는 경로를 선택하는 데에 라운드 로빈 방식(a round robin approach)을 이용할 수 있을 것이며, 이와 달리 최근 최소 사용 방식(a least recently used approach)이 이용될 수도 있을 것이다. 본 기술 분야에 공지된 많은 다른 방법들이 대체를 위한 이용가능한 경로들의 경로를 선택하는 데에 이용될 수 있을 것이다. 더욱이, 일단 대체용 경로가 선택되면, 대체 제어 회로(112)는 (라운드 로빈 방식 또는 최근 최소 사용 방식과 같은)본 기술 분야에 공지된 다양한 방식을 이용하여 상태 정보를 변경할 수 있다. 일단 경로가 선택되면, 대체 제어 회로(112)는 기록 인에이블(89)을 제공하여 데이터 어레이(50-56)의 선택된 경로를 인에이블링할 수 있을 것이다. 일 실시예에서, 기록 인에이블(89)은 하나의 기록 인에이블 신호를 캐시(18)의 각각의 경로에 제공한다. 예컨대, 캐시(18)가 (예컨대, 0 내지 7의)8개의 경로를 포함한다면, 기록 인에이블(89)은 각각의 경로에 대하여 하나씩의 8개의 인에이블 신호를 포함할 것이다. 이와 달리, 대체 제어 회로(112)(또는 다른 제어 회로)는 기록 인에이블 신호를 부호화하여 기록 인에이블(89)을 제공할 것이다. 예컨대, 캐시(18)가 8개의 경로를 포함하는 경우에는, 8 경로 중 하나를 선택하는 데에 3비트의 기록 인에이블(89)이 이용될 수 있을 것이다. 캐시 제어 회로(58)는 대체를 수행하기 위하여 필요한 만큼 태그 어레이(42-48)에 액세스할 수도 있다. 또한, 다른 실시예에서, 선택된 룰셋은 대체를 위하여 경로들을 인에이블하지 않을 것이며, 대체 제어 회로(112)는 이용가능한 경로들로부터 경로를 전혀 선택하지 않을 수 있을 것이다.
도 5는 캐시 제어 회로(58)의 일부의 다른 실시예를 도시한다. 도 5의 실시예는 사용자가 액세스 어드레스(40)의 (연속적이거나 그렇지 않은)임의의 서브세트(subset)에 근거하여 프로그램가능한 룰셋을 선택하는 것을 가능하게 한다. 캐시 제어 회로(58)의 일부는 어드레스 라인 선택자(120), 어드레스 라인 선택 레지스터(124), 룰셋 선택자 제어 레지스터(126), 캐시 경로 제어 레지스터(100) 및 대체 제어 회로(112)를 포함하는 룰셋 선택 회로(136)를 포함한다. 어드레스 라인 선택자(120)는 어드레스 라인 선택 레지스터(124)에 근거하여 액세스 어드레스(40)의 일부를 선택하고, 데이터를 선택된 어드레스 라인들로부터 인덱스로서 룰셋 선택자 제어 레지스터(126) 내에 제공한다. 일 실시예에서, 사용자 프로그램가능 레지스터인 룰셋 선택자 제어 레지스터(126)는 룰셋들(102-108) 중 하나를 지시하는 룰셋 지시자(134)를 캐시 경로 제어 레지스터(100)에 제공한다. 그 후에, 선택된 룰셋이 선택된 룰셋(110)으로서 대체 제어 회로(112)에 제공되고, 그 후에 기록 인에이블(89)을 제공한다. 따라서, 룰셋 선택 회로(136)가 액세스 어드레스(40)(또는 액세스 어드레스(40)의 일부)를 수신하고 선택된 룰셋(110)을 제공함에 주의하여야 한다. 룰셋(102-108), 선택된 룰셋(110), 대체 회로(112) 및 기록 인에이블(89)을 포함하는 캐시 경로 제어 레지스터들(100)이 도 3 및 4를 참조하여 전술한 바와 같이 동작하며, 따라서 도 5의 실시예를 참조하여 다시 논의되지는 않을 것임에 주의하여야 한다.
일 실시예에서, 어드레스 라인 선택 레지스터(124)는 사용자가 액세스 어드레스(40)의 어느 라인들(또는 비트들)을 룰셋을 선택하는 데에 이용할지를 나타낼 수 있도록 하는 사용자 프로그램가능 레지스터이다. 그 후에, 어드레스 라인 선택 레지스터(124)에 근거하여, 어드레스 라인 선택자(120)는 (액세스 어드레스(40)의선택된 비트들 또는 라인들로부터)지시된 어드레스 값들을 인덱스(122)로서 룰셋 선택자 제어 레지스터(126)에 제공한다. 예컨대, 일 실시예에서, 어드레스 라인 선택 레지스터(124)는 액세스 어드레스(40)의 각각의 어드레스 비트에 대하여 하나의 비트를 가질 수 있을 것이며, 여기서 레지스터(124)의 하나의 비트가 어써트되면 액세스 어드레스(40)의 대응하는 어드레스 비트가 인덱스(122)의 일부로서 이용된다. 다른 실시예들은 사용자가 액세스 어드레스(40)의 서브세트(또는 모두)를 인덱스(122)로서 선택할 수 있도록 하는 다른 포맷의 어드레스 라인 선택 레지스터(124)를 이용할 수 있을 것이다. 일 실시예에서, 인덱스(122)는 룰셋 선택자 제어 레지스터(126)의 각각의 엔트리들을 구별하는 데에 필요한 비트들의 최소 수를 포함한다. 예컨대, 룰셋 선택자 제어 레지스터(126)가 단지 4개 이하의 엔트리들을 포함하는 경우에, 액세스 어드레스(40)의 (연속적이거나 그렇지 않은)2비트만이 각각의 엔트리를 어드레싱하는 데에 필요하다(그리하여 2 비트 인덱스(122)를 야기함). 그러나, 룰셋 선택자 제어 레지스터(126)가 8개의 엔트리를 포함하는 경우에, 적어도 3개의 라인의 액세스 어드레스(40)가 필요하다(따라서, 적어도 3개의 비트 인덱스(122)를 야기함). 또한, 인덱스(122)는 액세스 어드레스(40)의 선택된 비트들과는 상이한 방식으로 유도될 수 있음에 주의하여야 한다. 일 실시예에서, 인덱스(122)는 단순히 액세스 어드레스(40)의 선택된 비트들 또는 라인들의 연결일 수 있을 것이다. 다른 실시예에서, 복호화기 또는 다른 회로가 선택된 비트들에 근거하여 인덱스(122)를 생성하는 데에 이용될 수 있을 것이다.
(엔트리(128,130,132)와 같은)룰셋 선택자 제어 레지스터(126) 내의 각각의 엔트리는 어느 룰셋을 선택할지의 지시자를 제공한다. 예컨대, 도시된 실시예에서, 인덱스(122)가 엔트리(130)를 선택하는 경우에, "11" 값이 룰셋 지시자(134)로서 제공되어 룰셋(108)을 선택한다. 따라서, 도시된 실시예에서, "00" 값은 룰셋(102)을, "01" 값은 룰셋(104)을, "10"은 룰셋(106)을, 그리고 "11" 값은 룰셋(108)을 나타낸다. 도시된 실시예에서, 룰셋 선택자 제어 레지스터(126)는 룰셋(102)을 지시하는 엔트리(128), 룰셋(108)을 지시하는 엔트리(130) 및 룰셋(106)를 지시하는 엔트리(132)를 포함한다. 도 5의 도시된 실시예에서 캐시 경로 제어 레지스터들(100)은 4개의 가능한 룰셋을 포함하기 때문에, 룰셋 선택자 제어 레지스터(126)의 각각의 엔트리는 4개의 룰셋 중에서 선택하기 위하여 2 비트를 포함한다. 보다 많은 룰셋들이 존재하는 경우에는 룰셋 선택자 제어 레지스터(126)의 각각의 엔트리는 보다 많은 룰셋을 나타낼 수 있을 것이다. 또한, 룰셋 선택자 제어 레지스터(126)의 다수의 엔트리들은 동일한 룰셋을 나타낼 수 있다. 또한, 다른 실시예는 룰셋 선택자 제어 레지스터(126)의 엔트리들에 대하여 상이한 포맷을 이용하여 룰셋을 나타낼 수 있음에 주의하여야 한다.
다른 실시예에서, 인덱스(122)가 레지스터(126)의 인덱스에 대응하지 않는 경우에 디폴트 룰셋이 선택된 룰셋(110)으로서 제공될 수 있도록, 캐시 경로 제어 레지스터들(100)은 (룰셋들(102-108) 중 하나 또는 별도의 룰셋일 수 있는)디폴트(default) 룰셋을 포함할 수 있을 것이다. 예컨대, 인덱스(122)가 2비트 값이고, 단지 3 개의 엔트리들만이 룰셋 선택자 제어 레지스터(126) 내에 존재하는 경우에는 인덱스(122)의 값들 중 하나가 디폴트 룰셋에 대응할 수 있다. 유사하게, 다른 실시예에서, 인덱스(122)가 3 비트 값이며, 단지 6 개의 엔트리들만이 룰셋 선택자 제어 레지스터(126) 내에 존재하는 경우에는 인덱스(122)의 하나 또는 두 개의 값이 디폴트 룰셋에 대응할 수 있다.
따라서, 도 5의 실시예에 있어서, 액세스 어드레스(40)의 모두 또는 일부가 룰셋을 선택하는 데에 이용될 수 있으며, 여기서 사용자는 룰셋 선택자 제어 레지스터(126)의 값들을 프로그래밍함으로써 요청된 어드레스들의 소정의 어드레스 범위에 대하여 어느 룰셋을 사용할 것인지를 유연하게 프로그램할 수 있음에 주의하여야 한다. 액세스 어드레스(40)의 선택된 비트들은 연속적인 비트들이거나 그렇지 않을 수 있음 또한 주의하여야 한다. 도 5는 단지 하나의 실시예를 제공하지만, 본 기술 분야의 당업자는 룰셋을 선택하는 데에 이용될 수 있는 룰셋 지시자(134)와 같은 룰셋 지시자를 선택하기 위하여 액세스 어드레스(40)의 일부를 선택하는 다양한 방식들이 존재함을 이해할 수 있음에 주의하여야 한다.
도 6은 캐시 제어 회로(58)의 일부의 다른 실시예를 도시한다. 도 6의 실시예는 사용자가 액세스 어드레스(40)의 모두 또는 일부에 근거하여 룰셋을 선택할 수 있도록 한다. 예컨대, 도시된 실시예에서, 룰셋 선택 회로(138)는, 만약 존재한다면 액세스 어드레스(40)(또는 액세스 어드레스(40)의 일부)가 놓이는 어드레스 범위에 근거하여 룰셋을 선택한다. 도 6의 캐시 제어 회로(58)의 일부는, 어드레스 범위 비교기들(140), 디폴트 선택자(150) 및 캐시 경로 제어 레지스터(100)를 포함하는 룰셋 선택 회로(138) 및 대체 제어 회로(112)를 포함한다. 어드레스 범위 비교기들(140) 및 디폴트 선택자(150)는 룰셋들(102-108) 중 하나 또는 디폴트 룰셋(152)을 선택하는 데에 이용된다. 액세스 어드레스(40)가 어드레스 비교기들(142-148) 중 하나에 의해서 정의되는 어드레스 범위 내에 놓이는 경우에, 룰셋들(102-108) 중 하나가 선택된다. 그러나, 액세스 어드레스(40)가 어드레스 비교기들(142-148) 중 하나에 의해서 정의되는 어드레스 범위 중 하나 내에 놓이지 않는 경우에는 디폴트 룰셋(152)이 선택된다. (일 실시예에서, 디폴트 룰셋(152)은 룰셋들(102-108)에 추가되는 추가적인 룰셋이지만, 다른 실시예에서 디폴트 룰셋(152)은 룰셋들(102-108) 중 하나일 수 있을 것이다.) 그 후에 선택된 룰셋이 선택된 룰셋(110)으로서 대체 제어 회로(112)에 제공되며, 그 후에 기록 인에이블(89)을 제공한다. (디폴트 룰셋(152)을 제외한)캐시 경로 제어 레지스터들(100), 선택된 룰셋(110), 대체 회로(112) 및 기록 인에이블(89)은 도 3 및 4를 참조하여 전술한 바와 같이 동작하며, 따라서, 도 6의 실시예를 참조하여 다시 상세히 기술되지는 않을 것이다.
어드레스 범위 비교기들(140)은, 만약 존재한다면, 어느 어드레스 범위 내에 액세스 어드레스(40)가 놓이는지를 결정한다. 예컨대, 각각의 어드레스 비교기들(142-148)은 어드레스 범위를 정의하는 데에 이용될 수 있을 것이다. 일 실시예에서, 각각의 어드레스 비교기들(142-148)은 대응하는 범위의 개시 어드레스와 종료 어드레스를 저장하는 회로 및 액세스 어드레스(40)를 개시 및 종료 어드레스와 비교하여 그 범위 내에 놓이는지 여부를 결정하는 비교 회로를 포함한다. 이와 달리, 각각의 어드레스 비교기들(142-148)은 (어드레스 범위의 개시 어드레스를 정의하는)기준 어드레스 및 (기준 어드레스로부터의 범위를 정의하는)마스크 값(mask value)을 저장하는 회로와, 마스크 값에 의해서 마스킹되는 액세스 어드레스(40)를 마스크 값에 의해서 마스킹되는 기준 어드레스와 비교하여 그 범위 내에 놓이는지 여부를 결정하는 비교 회로를 포함할 수 있을 것이다. 따라서, 각각의 범위는 대응하는 룰셋을 나타낸다. 예컨대, 도 6의 도시된 실시예에서, 액세스 어드레스(40)가 어드레스 비교기(142)에 의해서 정의되는 어드레스 범위 내에 놓이는 경우에는, 룰셋(102)이 지시된다. 액세스 어드레스(40)가 어드레스 비교기(144)에 의해서 정의되는 어드레스 범위 내에 놓이는 경우에는, 룰셋(104)이 지시된다. 액세스 어드레스(40)가 어드레스 비교기(146)에 의해서 정의되는 어드레스 범위 내에 놓이는 경우에는, 룰셋(106)이 지시된다. 액세스 어드레스(40)가 어드레스 비교기(148)에 의해서 정의되는 어드레스 범위 내에 놓이는 경우에는, 룰셋(108)이 지시된다.
액세스 어드레스(40)가 어드레스 범위 비교기들(140)에 의해서 정의되는 범위 내에 놓이는 않는 경우에는, 디폴트 선택자(150)는 디폴트 룰셋(152)을 선택한다. 예컨대, 일 실시예에서, 디폴트 선택자(150)는 어드레스 범위 비교기들(140) 사이에 지시자가 결합되어 있지 않으며, 캐시 경로 제어 레지스터들(100)이 어써트되었는지 여부를 알기 위하여 모니터할 수 있을 것이며, 그 후에 응답하여 출력 지시자를 어써트하여 디폴트 룰셋(152)을 선택한다. 디폴트 룰셋(152)은 형태 및 기능에 있어서 도 4의 룰셋(102)과 같은 다른 룰셋들과 유사할 수 있다. 디폴트 룰셋(152)이 선택사항임에 또한 주목하여야 한다. 예컨대, 모든 범위들은 액세스 어드레스(40)가 항상 범위 내에 놓이도록 정의될 수 있다. 다른 실시예들은 필요한 만큼의 임의의 수의 어드레스 범위를 가질 수 있음에 주의하여야 한다. 더욱이, 다수의 어드레스 범위들이 동일한 룰셋에 대응할 수 있을 것이다. 일 실시예에서, 각각의 범위는 중첩되지 않는다. 그러나, 다른 실시예들에서는 이들은 중첩할 수 있을 것이다.
따라서, 어드레스 범위는 어드레스 범위 내의 정보의 타입에 따라 룰셋들이 캐쉬(18)의 상이한 경로들을 인에이블링하는 데에 이용될 수 있도록 어드레스 범위 비교기들(140)에 의해서 상이한 타입의 정보를 나타내도록 설정될 수 있을 것이다. 예컨대, 스트리밍 데이터에 있어서, 스트리밍 데이터를 저장하는 어드레스들의 어드레스 범위는 액세스 어드레스(40)가 범위 내에 놓이는 경우에 스트리밍 데이터가 지시되고, 따라서 룰셋(106)이 스트리밍 데이터를 저장하도록 인에이블링된(즉, 이용가능한) 이들 경로들을 가지도록 선택되도록 어드레스 비교기들(146)에 의해서 지시될 수 있다. 따라서, 사용자는 어떠한 어드레스 범위들이 캐쉬(18)의 경로에 대응하는지를 정의함에 있어서 유연성을 가지며, 따라서, 이러한 유연성을 캐시 성능을 향상시키고, 캐시 오염을 감소시키는 데에 이용할 수 있다.
상기 실시예들은 미스를 야기하는 판독 액세스에 응답하여 대체를 위하여 캐시(18) 내에 이용가능한 경로들을 나타내는 룰셋을 선택하는 것과 관련하여 기술되었음에 주의하여야 한다. 그러나, 다른 실시예들에서, 전술된 방법은 히트 또는 미스 또는 이들 모두에 응답하여 본 기술 분야에서 공지된 바로서 행해질 수 있는 다른 동작을 위한, 예컨대 프리패칭을 위한 대체를 위하여 캐시 내의 이용가능한 경로들을 나타내기 위하여 룰셋을 선택하는 데에 이용될 수 있음에 주의하여야 한다.
따라서, (룰셋 선택 회로(113,136,138)와 같은)룰셋 선택 회로의 상이한 구현이 액세스 어드레스의 적어도 일부에 근거하여 룰셋을 선택하는 데에 얼마나 이용될 수 있는지를 알 수 있을 것이다. 각각의 실시예에서, 예컨대 상이한 캐시 경로들을 상이한 타입의 정보에 할당함으로써 캐시 성능을 향상시키고 캐시 오염을 줄이기 위하여 룰셋들이 설계될 수 있다. 예컨대, 한가지 접근 방식에서 사용자는 보다 짧은 수명의 정보가 보다 긴 수명의 정보를 대체하지(또는 과도하게 대체하지) 않도록 정보의 수명에 따라 상이한 캐시 경로들을 할당할 수 있다. 이와 달리, (수명과는 다른 또는 수명에 덧붙여)상이한 정보의 속성이 상이한 캐시 경로들을 할당하는 데에 이용될 수 있을 것이다. 더욱이, 예컨대 캐시 경로 제어 레지스터들(100), 룰셋 선택자 제어 레지스터(126), 어드레스 범위 비교기들(140) 등과 같은 룰셋 선택 회로의 일부의 프로그램가능성은 사용자가 상이한 타입의 애플리케이션에 대하여 (캐시(18)와 같은)캐시를 최적화하는 것을 가능하게 한다. 또한, 도 5 및 6의 실시예들은 임의의 수의 룰셋들 및 어드레스 범위들이 최소의 오버헤드를 가지고서 필요한만큼 정의될 수 있도록 한다. 룰셋들은 업무(tasks) 또는 쓰레드(thread)를 수행하는 동안을 포함하는 임의의 시간에 필요한만큼 재프로그램될 수도 있다. 더욱이, 이러한 최적화는 특별한 소프트웨어를 할당할 필요없이, 또한 추가적인 소프트웨어 실행 오버헤드없이 수행될 수 있다. 또한 메모리 관리 유닛은 상이한 메모리 영역에 저장된 정보의 타입에 관하여 알고 있을 필요가 없다.
전술한 명세서에서, 본 발명은 특정 실시예들을 참조하여 기술되었다. 그러나, 본 기술 분야의 당업자는 아래에 청구의 범위에서 기술되는 본 발명의 범위로부터 벗어나지 않고서 다양한 변형 및 변경이 이루어질 수 있음을 알 것이다. 따라서, 명세서와 도면들은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 할 것이며, 이러한 모든 변형들은 본 발명의 범주 내에 놓이도록 의도되는 것이다.
이점들, 다른 장점들 및 문제점에 대한 해결책들이 특정한 실시예와 관련하여 전술되었다. 그러나, 발생하거나 보다 강조될 이러한 이점들, 장점들, 문제점들에 대한 해결책들 및 임의의 이점, 장점 또는 해결책은 임의의 또는 모든 청구항의 중대하고, 필수적이거나 본질적인 특징 또는 요소로 간주되어서는 안된다. 본 명세서에서 사용된 "하나의(a, an)"라는 용어는 하나 또는 그 이상으로 정의된다. 본 명세서에서 사용된 "포함하는" 및/또는 "가지는" 이라는 용어는 포함하는 것으로 정의된다(즉, 개방형 언어). 본 명세서에서 사용된 "포함하다", "포함하는" 또는 그의 임의의 다른 변형은 요소들의 목록을 포함하는 프로세스, 방법, 물건 또는 장치가 단지 이들 요소만을 포함하는 것이 아니라 명시적으로 열거되지 않거나, 그러한 프로세스, 방법, 물건 또는 장치에 본질적인 다른 요소들을 포함하도록 비배타적인 포함을 커버하도록 의도된 것이다.
Claims (19)
- 복수의 경로를 가지는 캐시에서, 대체(replacement)를 위하여 쓸 수 있는 N개의 경로를 선택하는 방법으로서 - 상기 캐시는 룰셋 선택 회로 및 대체 제어 회로를 가짐 -,상기 룰셋 선택 회로에서, 복수의 룰셋(ruleset)을 제공하는 단계와 - 상기 복수의 룰셋 각각은 대체를 위하여 쓸 수 있는, 상기 캐시 내의 N개의 경로를 특정하며, 상기 N은 0 이상의 정수임 -,상기 룰셋 선택 회로에서, 액세스 어드레스를 수신하는 단계와,상기 룰셋 선택 회로에서, 상기 액세스 어드레스의 적어도 일부를 이용하여 상기 복수의 룰셋 중 하나를 선택된 룰셋으로서 선택하는 단계와,상기 대체 제어 회로에서, 상기 복수의 룰셋 중 선택된 하나를 이용하여 대체를 위하여 쓸 수 있는, 상기 캐시 내의 N개의 경로를 선택하는 단계를 포함하는 N개의 경로 선택 방법.
- 삭제
- 제1항에 있어서,상기 복수의 경로 중 제1 경로의 대체를 인에이블링(enabling)하는 제1 프로그램가능 비트를 제공하는 단계를 더 포함하는 N개의 경로 선택 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 제1항에 있어서,상기 액세스 어드레스의 적어도 일부는 상기 캐시 내에서 추가적으로 이용되지 않는 N개의 경로 선택 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 복수의 경로를 가지는 캐시를 포함하는 집적 회로로서,상기 캐시는,복수의 룰셋을 저장하는 룰셋 저장 회로를 포함하는 룰셋 선택 회로와 - 상기 복수의 룰셋 각각은 대체를 위하여 쓸 수 있는, 상기 캐시 내의 N개의 경로를 특정하고, 상기 N은 0 이상의 정수이며, 상기 룰셋 선택 회로는 액세스 어드레스의 적어도 일부를 이용하여 적어도 하나의 선택된 룰셋 신호를 제공함 -,상기 룰셋 선택 회로에 결합되어 상기 적어도 하나의 선택된 룰셋 신호를 수신하는 대체 제어 회로 - 상기 대체 제어 회로는 상기 적어도 하나의 선택된 룰셋 신호를 이용하여 대체를 위하여 쓸 수 있는, 상기 캐시 내의 N개의 경로를 선택함 - 를 포함하는집적 회로.
- 삭제
- 캐시 제어 회로로서,복수의 룰셋을 저장하는 저장 회로와,상기 저장 회로에 결합되는 회로 - 상기 회로는 액세스 어드레스의 일부를 이용하여 룰셋 지시자를 생성하고, 상기 룰셋 지시자는 상기 복수의 룰셋 중 적어도 하나를 선택하는 데에 이용됨 - 를 포함하고,상기 복수의 룰셋 중 상기 하나는 대체를 위하여 쓸 수 있는, 상기 캐시 내의 적어도 0개 이상의 경로를 선택하는 데에 이용되는 캐시 제어 회로.
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/627,559 US6973540B2 (en) | 2003-07-25 | 2003-07-25 | Method and apparatus for selecting cache ways available for replacement |
US10/627,559 | 2003-07-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060055522A KR20060055522A (ko) | 2006-05-23 |
KR101098689B1 true KR101098689B1 (ko) | 2011-12-23 |
Family
ID=34080672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067001662A KR101098689B1 (ko) | 2003-07-25 | 2004-07-13 | N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6973540B2 (ko) |
EP (1) | EP1652095A2 (ko) |
JP (1) | JP4210698B2 (ko) |
KR (1) | KR101098689B1 (ko) |
CN (1) | CN100407172C (ko) |
TW (1) | TW200532450A (ko) |
WO (1) | WO2005013040A2 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070204107A1 (en) * | 2004-02-24 | 2007-08-30 | Analog Devices, Inc. | Cache memory background preprocessing |
US20060101208A1 (en) * | 2004-11-09 | 2006-05-11 | Intel Corporation | Method and apparatus for handling non-temporal memory accesses in a cache |
US7650466B2 (en) * | 2005-09-21 | 2010-01-19 | Qualcomm Incorporated | Method and apparatus for managing cache partitioning using a dynamic boundary |
US20080052467A1 (en) * | 2006-08-25 | 2008-02-28 | Advanced Micro Devices, Inc. | System for restricted cache access during information transfers and method thereof |
JP2010191754A (ja) * | 2009-02-19 | 2010-09-02 | Mitsubishi Electric Corp | キャッシュ記憶装置 |
US9086977B2 (en) | 2011-04-19 | 2015-07-21 | Freescale Semiconductor, Inc. | Cache memory with dynamic lockstep support |
US9208036B2 (en) | 2011-04-19 | 2015-12-08 | Freescale Semiconductor, Inc. | Dynamic lockstep cache memory replacement logic |
GB2505220A (en) * | 2012-08-23 | 2014-02-26 | Ibm | Efficient rule execution in decision services |
JP6207766B2 (ja) * | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | ヘテロジニアス置換ポリシーを用いるセット・アソシエイティブ・キャッシュ・メモリ |
US10783083B2 (en) * | 2018-02-12 | 2020-09-22 | Stmicroelectronics (Beijing) Research & Development Co. Ltd | Cache management device, system and method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5568632A (en) | 1993-12-17 | 1996-10-22 | Lsi Logic Corporation | Method and apparatus for cache memory |
US20030084247A1 (en) | 2001-10-26 | 2003-05-01 | Song Seungyoon Peter | Method and system for programmable replacement mechanism for caching devices |
US20030159003A1 (en) | 2001-10-23 | 2003-08-21 | Ip-First, Llc | Associative cache memory with replacement way information integrated into directory |
US6640286B2 (en) | 2000-11-02 | 2003-10-28 | Hitachi, Ltd. | Cache control system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809528A (en) * | 1996-12-24 | 1998-09-15 | International Business Machines Corporation | Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory |
US6434671B2 (en) | 1997-09-30 | 2002-08-13 | Intel Corporation | Software-controlled cache memory compartmentalization |
US6185657B1 (en) * | 1998-04-20 | 2001-02-06 | Motorola Inc. | Multi-way cache apparatus and method |
US6205519B1 (en) | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
GB9901933D0 (en) | 1999-01-28 | 1999-03-17 | Univ Bristol | Cache memory |
US6393525B1 (en) * | 1999-05-18 | 2002-05-21 | Intel Corporation | Least recently used replacement method with protection |
CN1282025A (zh) * | 2000-08-31 | 2001-01-31 | 后健慈 | 动态随机存取内存的记忆页运作方法及其架构 |
CN1165000C (zh) * | 2001-12-20 | 2004-09-01 | 中国科学院计算技术研究所 | 动态索引的微处理器高速缓存方法 |
TW556212B (en) * | 2002-01-14 | 2003-10-01 | Ip First Llc | L2 cache LRU generation method and apparatus |
-
2003
- 2003-07-25 US US10/627,559 patent/US6973540B2/en not_active Expired - Lifetime
-
2004
- 2004-07-13 KR KR1020067001662A patent/KR101098689B1/ko active IP Right Grant
- 2004-07-13 JP JP2006521113A patent/JP4210698B2/ja not_active Expired - Fee Related
- 2004-07-13 WO PCT/US2004/022439 patent/WO2005013040A2/en active Application Filing
- 2004-07-13 CN CN200480017397XA patent/CN100407172C/zh not_active Expired - Fee Related
- 2004-07-13 EP EP04778112A patent/EP1652095A2/en not_active Withdrawn
- 2004-07-23 TW TW093122204A patent/TW200532450A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5568632A (en) | 1993-12-17 | 1996-10-22 | Lsi Logic Corporation | Method and apparatus for cache memory |
US6640286B2 (en) | 2000-11-02 | 2003-10-28 | Hitachi, Ltd. | Cache control system |
US20030159003A1 (en) | 2001-10-23 | 2003-08-21 | Ip-First, Llc | Associative cache memory with replacement way information integrated into directory |
US20030084247A1 (en) | 2001-10-26 | 2003-05-01 | Song Seungyoon Peter | Method and system for programmable replacement mechanism for caching devices |
Also Published As
Publication number | Publication date |
---|---|
CN100407172C (zh) | 2008-07-30 |
EP1652095A2 (en) | 2006-05-03 |
TW200532450A (en) | 2005-10-01 |
WO2005013040A3 (en) | 2005-08-04 |
KR20060055522A (ko) | 2006-05-23 |
US20050021911A1 (en) | 2005-01-27 |
JP2006529034A (ja) | 2006-12-28 |
CN1809819A (zh) | 2006-07-26 |
JP4210698B2 (ja) | 2009-01-21 |
US6973540B2 (en) | 2005-12-06 |
WO2005013040A2 (en) | 2005-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100813370B1 (ko) | 캐시 메모리 및 그 제어방법 | |
US8250332B2 (en) | Partitioned replacement for cache memory | |
US6058456A (en) | Software-managed programmable unified/split caching mechanism for instructions and data | |
CN101097547B (zh) | 用智能最近最少使用方案在高速缓存中进行功率性能调整 | |
US6185657B1 (en) | Multi-way cache apparatus and method | |
US20160055100A1 (en) | System and method for reverse inclusion in multilevel cache hierarchy | |
WO2007068122A1 (en) | System and method for cache management | |
US6578065B1 (en) | Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
JP2005302034A (ja) | メモリを管理するためのシステムおよび方法 | |
KR101098689B1 (ko) | N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로 | |
CN102859504A (zh) | 有效分区存储缓存 | |
US6026470A (en) | Software-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels | |
US20220121576A1 (en) | Reduce Data Traffic between Cache and Memory via Data Access of Variable Sizes | |
US7376797B2 (en) | Cache memory system and method using reference bits | |
US8423719B2 (en) | Apparatus, processor and method of controlling cache memory | |
US11762772B2 (en) | Data processing apparatus and data accessing circuit | |
CN114691541B (zh) | 一种基于动态访问的dram-nvm混合内存预测器 | |
KR100302928B1 (ko) | 명령어및데이터에대한하드웨어-관리프로그래머블통합/분할된캐싱메카니즘 | |
CN114691542A (zh) | 数据处理装置与其数据存取电路 |
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: 20141205 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20151204 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20171211 Year of fee payment: 7 |