KR101252744B1 - 캐시(cache) 라인 대체를 위한 시스템들 및 방법들 - Google Patents

캐시(cache) 라인 대체를 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101252744B1
KR101252744B1 KR1020107021738A KR20107021738A KR101252744B1 KR 101252744 B1 KR101252744 B1 KR 101252744B1 KR 1020107021738 A KR1020107021738 A KR 1020107021738A KR 20107021738 A KR20107021738 A KR 20107021738A KR 101252744 B1 KR101252744 B1 KR 101252744B1
Authority
KR
South Korea
Prior art keywords
cache
command
value
index
way
Prior art date
Application number
KR1020107021738A
Other languages
English (en)
Other versions
KR20100119820A (ko
Inventor
아제이 에이. 잉글
에리히 제이. 플론드케
루시안 코드레스쿠
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20100119820A publication Critical patent/KR20100119820A/ko
Application granted granted Critical
Publication of KR101252744B1 publication Critical patent/KR101252744B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

대체할 캐시 라인을 결정하기 위한 시스템이 설명된다. 일 실시예에서, 상기 시스템은 다수의 캐시 라인들로 구성되는 캐시를 포함한다. 상기 시스템은 대체하기 위한 캐시 라인을 식별하도록 구성되는 식별자를 더 포함한다. 상기 시스템은 또한 증분기, 캐시 유지(maintenance) 명령으로부터 선택된 식별자의 값을 결정하거나 또는 동일하게 유지하도록 구성되는 제어 로직을 포함한다.

Description

캐시(CACHE) 라인 대체를 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR CACHE LINE REPLACEMENT}
본 명세서에서 개시되는 신규한 개념들의 실시예들은 일반적으로 데이터 프로세싱 시스템들의 분야에 관한 것이다. 예를 들어, 본 명세서에서 개시되는 신규한 개념들에 대한 실시예들은 캐시 라인 대체를 위한 시스템들 및 방법들에 관한 것이다.
오늘날의 다수의 컴퓨팅 시스템들에서, 명령들의 컴퓨팅에 있어서 메모리(예를 들어, 랜덤 액세스 메모리)는 프로세서에 의해 사용될 데이터를 저장한다. 예를 들어, 메모리는 프로세서에 의해 합쳐지는 두 개의 오퍼랜드(operand)들을 저장할 수 있고, 상기 두 개의 오퍼랜드들의 합으로부터의 결과를 저장할 수 있다. 따라서, 예를 들어, 프로세서는 두 개의 오퍼랜드들을 판독하기 위해 메모리를 액세스하고 상기 결과를 기록하기 위해 상기 메모리를 다시 액세스할 수 있다.
메모리는 프로세서보다 낮은 동작 속도를 가질 수 있다. 그러므로, 메모리에 대한 액세스 동안에 프로세서는 대기할 수 있다. 따라서, 메모리에 대한 액세스를 기다리는 프로세서가 유휴상태(idle)일 수 있는 동안에 전력 및 시간은 컴퓨팅 디바이스에 의해 소비된다. 전체적인 프로세싱 속도를 증가시키고 컴퓨팅 시스템의 전력 소비를 감소시키기 위해, 메모리보다 더 빠른 처리 속도를 갖는 캐시가 프로세서와 연결될 수 있다. 상기 캐시는 다수의 캐시 라인들을 포함하며, 각각의 캐시 라인은 데이터의 일부를 메모리에 저장할 수 있다.
캐시가 메모리보다 빠르기 때문에, 프로세서에 의해 사용될 수 있는 데이터는 캐시의 일부분들(예를 들어, 캐시 라인들)로 프리로딩(preload)된다. 따라서, 프로세서가 프로세싱을 하기 위해 데이터를 검색(retrieve)할 때, 상기 프로세서는 데이터에 대하여 캐시를 액세스한다. 캐시가 데이터를 포함하지 않는 경우에는, 데이터에 대하여 메모리가 액세스된다.
더 많은 데이터가 캐시로 프리로딩됨에 따라, 이전에 저장된 데이터는 새롭게 컴퓨팅되거나 검색되는 데이터로 대체될 수 있다. 그 결과로, 캐시 라인들이 채워지거나(populate) 그리고/또는 대체될 시퀀스를 결정하도록 구성되는 시스템이 존재할 수 있다. 기존의 프로세서들에서, 상기 캐시의 캐시 라인들은 차례대로 사용되며, 상기 캐시의 마지막 캐시 라인에 도달하는 경우 프로세서는 제 1 캐시 라인으로 다시 루프(loop)할 수 있다. 프로세서에 의해 사용될 다음 캐시 라인을 결정하고 지시(point)하기 위해 시스템은 프로세서 내에서 존재할 수 있다. 이러한 시스템은 선입선출(FIFO) 캐시 대체 정책을 구현하며, 포인터들은 캐시의 다음 캐시 라인을 순차적으로 지시하기 위해 증가된다.
캐시 라인을 무효화(invalidate)하기 위해 프로그램은 캐시 유지(maintenance) 명령들을 포함하는 프로세서에 의해 실행될 수 있다. 명령들이 캐시 라인들을 무효화시킬 수 있기 때문에, 시스템이 프로세서에 의해 대체될 유효한 캐시 라인을 지시하는 동안 유효하지 않은 캐시 라인들이 캐시 내에서 존재할 수 있다. 그 결과, FIFO 대체 정책을 구현하는 캐시에서, 유효하지 않은 캐시 라인이 존재하는 동안 유효한 캐시 라인은 로드(load) 오퍼레이션(operation)에 의해 대체될 수 있다. 이러한 접근법에서의 문제점은 유효한 캐시 라인들의 감소가 프로세서로 하여금 메모리를 좀더 자주 액세스하도록 요구할 수 있고, 따라서 전력 소비의 증가 및 컴퓨팅 속도의 감소를 야기한다.
대체(replacement)할 캐시 라인을 결정하기 위한 시스템이 설명된다. 일 실시예에서, 상기 시스템은 다수의 캐시 라인들을 포함하는 캐시를 포함한다. 상기 시스템은 대체하기 위한 캐시 라인을 식별하도록 구성되는 식별자(identifier)를 더 포함한다. 상기 시스템은 또한 증분기(incrementer), 캐시 유지(maintenance) 명령으로부터 선택된 식별자의 값을 결정하거나 또는 동일하게 유지하도록 구성되는 제어 로직을 포함한다.
본 명세서에서 공개된 하나 이상의 실시예들의 장점들은 전력 절약 및 증가된 프로세서 속도를 가질 수 있다.
이러한 예시적인 실시예는 본 명세서에서 공개되는 신규한 개념들에 대한 이해를 돕기 위해 예시들을 제공하도록 기재되지만 본 발명을 제한하거나 한정하기 위한 것은 아니다. 본 개시내용의 다른 양상들, 장점들, 특징들은 후속하는 단락들인 도면의 간단한 설명, 상세한 설명, 및 청구항들을 포함하여 전체적인 명세서의 검토를 통해 명백해 질 것이다.
본 명세서에서 개시되는 신규한 개념들에 대한 이러한 그리고 다른 특징들, 양상들, 장점들은 첨부되는 도면들과 관련하여 후속하는 상세한 설명을 읽을 때 보다 양호하게 이해될 것이다.
도 1은 대체하기 위한 캐시 라인들을 결정하기 위한 기존의 시스템을 도시하는 종래의 개략도이다.
도 2는 인덱스 명령들에 의한 무효화가 존재하는 대체하기 위한 캐시 라인들을 결정하기 위한 예시적인 시스템을 도시하는 계략도이다.
도 3은 인덱스 명령들에 의한 무효화 및 어드레스 명령들에 의한 무효화가 존재하는 대체하기 위한 캐시 라인들을 결정하기 위한 예시적인 시스템을 도시하는 개략도이다.
도 4는 도 2의 개략도에서 도시되는 시스템의 동작에 대한 예시적인 방법을 도시하는 순서도이다.
도 5는 도 3의 개략도에서 도시되는 시스템의 동작에 대한 예시적인 방법을 도시하는 순서도이다.
도 6은 도 2-3에서 도시되는 바와 같은 캐시 대체 시스템을 포함할 수 있는 디지털 신호 처리기를 통합시킨 예시 휴대용 통신 디바이스를 도시하는 일반적인 다이어그램이다.
도 7은 도 2-3에서 도시된 바와 같은 캐시 대체 시스템을 포함할 수 있는 디지털 신호 처리기를 통합시킨 예시 셀룰러 전화기를 도시하는 일반적인 다이어그램이다.
도 8은 도 2-3에서 도시되는 바와 같은 캐시 대체 시스템을 포함할 수 있는 디지털 신호 처리기를 통합시킨 예시 무선 인터넷 프로토콜 전화기를 도시하는 일반적인 다이어그램이다.
도 9는 도 2-3에서 도시되는 캐시 대체 시스템을 포함할 수 있는 디지털 신호 처리기를 통합시킨 예시 휴대용 디지털 기기를 도시하는 일반적인 다이어그램이다.
도 10은 도 2-3에서 도시되는 바와 같은 캐시 대체 시스템을 포함할 수 있는 디지털 신호 처리기를 통합시킨 예시 오디오 파일 플레이어를 도시하는 일반적인 다이어그램이다.
설명의 의도를 위해, 발명의 상세한 설명 내내, 여기에서 개시되는 신규한 개념들의 완전한 이해를 제공하기 위해 다수의 특정 세부사항들이 제시된다. 그러나, 본 명세서에서 공개되는 신규한 개념들이 이러한 특정한 세부사항들 없이도 실시될 수 있다는 점은 당해 출원발명이 속하는 기술분야에 있어서 통상의 지식을 가진 자에게 명백할 것이다. 다른 예시들에서, 공지된 구조들 및 디바이스들은 본 명세서에서 개시되는 신규한 개념들에 대한 기본 원리들을 불명료하게 하는 것을 피하기 위해 블록 다이어그램 형태로 도시된다.
본 명세서에서 개시되는 신규한 개념들의 실시예들은 캐시 라인 대체를 위한 방법들 및 시스템들과 관련되어 있다. 도 1의 개략도에서 도시되는 기존의 시스템(100)은 캐시 내에서 존재하는 유효하지 않은 캐시 라인들의 수를 감소시키기 위해 수정될 수 있다. 그 결과로, 적은 캐시 미스(cache miss)들이 존재할 수 있다. 그리하여, 프로세서는 동작하는 동안에 메모리를 더 적게 액세스할 수 있다.
기존의 캐시 대체 시스템
도 1은 대체하기 위한 캐시 라인들을 결정하기 위한 기존의 시스템(100)을 도시하는 개략도이다. 시스템(100)에서, 프로세서는 캐시 라인들에 저장된 데이터를 대체하는데 있어서 캐시를 통해 진행하도록 순차적으로 구성된다.
도 1의 개략도에서 도시된 바와 같이, 시스템(100)은 태그 기억장치(110) 및 상태 기억장치(112)를 포함한다. 상기 태그 기억장치(110) 및 상태 기억장치(112)는 동일한 수의 세트들(예를 들어, 행들), 및 웨이(way)들(예를 들어, 열들)을 포함하는 어레이(array)일 수 있다. 상기 태그 및 상태 어레이들(110 및 112)의 각각의 셀은 프로세서의 캐시에 대한 캐시 라인과 대응한다. 시스템(100)에서, 각각의 세트는 16개의 웨이(0-15)들을 포함하며, 이는 프로세서에 의해 독립적으로 판독되고 기록되는 16개의 데이터 캐시 라인들에 대응한다.
태그 어레이(110)의 각각의 셀은 태그를 저장한다. 상기 태그는 현재 캐시 라인에 대응하는 메모리 위치의 어드레스일 수 있다. 예를 들어, 캐시 라인은 메모리 어드레스 A를 포함하는 메모리 위치로부터의 데이터를 저장할 수 있다. 그러므로, 상기 대응하는 태그 셀은 메모리 어드레스 A를 저장한다. 상태 어레이(112)의 각각의 셀은 대응하는 캐시 라인의 상태(예를 들어, 유효하거나 유효하지 않은 상태)를 저장한다. 위의 예를 계속보면, 캐시 라인에 저장된 값이 유효한 경우에, 상태 셀은 캐시 라인이 유효하다고 표시하는 정보를 저장한다. 프로세서에 의해 실행되는 프로그램은 무효화될 캐시 라인을 직접적으로 지시함으로써 또는 태그에 대응하는 메모리의 값을 저장하는 캐시 라인이 무효화될 태그를 지시함으로써 캐시 라인을 무효화시키는 명령들을 포함할 수 있는 캐시 유지 명령들을 포함할 수 있다. 캐시 라인을 무효화시키기 위해, 시스템(100)은 유효하지 않은 상태를 상태 어레이(112)의 대응하는 셀에 저장할 수 있다.
시스템(100)은 다수의 식별자들(114)(예를 들어, 포인터들)을 더 포함한다. 식별자(114)들의 수는 태그 및 상태 어레이들(110 및 112)에 있는 세트들의 수에 대응한다. 또한, 시스템(100)에서 세트당 웨이들의 수가 16이기 때문에, 각각의 식별자는 4비트일 수 있다. 따라서, 각각의 FIFO는 각각의 세트의 임의의 16개의 웨이들을 지시하도록 구성될 수 있고, 따라서 세트와 관련된 16개의 캐시 라인들을 지시할 수 있다.
시스템(100)에서, 명령(102)이 프로세서에 의해 실행될 경우, 상기 명령(102)은 시스템(100)에 의해 수신될 수 있다. 상기 명령(102)은 세트(104), 바이트(106), 태그(108)를 포함할 수 있다. 상기 바이트(106)는 명령(예를 들어, 로드(load), 추가(add) 등)을 실행하는 프로세서에 의해 수행될 동작의 타입일 수 있다. 상기 명령이 로드 또는 저장(store)인 경우, 세트(104)는 16개의 캐시 라인들 중 하나의 값이 로딩되거나 저장될 수 있는 세트일 수 있다. 태그(108)는 명령이 포함될 값을 저장하는 메모리의 메모리 어드레스이다. 일례에서, 상기 명령이 오퍼랜드 A의 로드인 경우에, 상기 명령은 오퍼랜드 A를 캐시의 어디로 저장할지에 대한 세트(104), 상기 명령이 로드 명령임을 나타내는 바이트(106), 및 오퍼랜드 A가 메모리의 어디에 저장되는지에 대한 태그(108)를 포함할 수 있다.
시스템(100)은 증분기들(120)을 더 포함한다. 시스템(100)에서, 증분기는 각각의 식별자들(114)을 위해 존재한다. 로딩될 캐시의 세트에 대한 다음 웨이는 세트에 대하여 대응하는 식별자(114)에 의해 지시된다. 그리고나서, 값이 캐시의 세트(104)에 대한 웨이로 로딩될 때, 세트(104)의 식별자(114)를 위해 증분기(120)는 캐시의 세트에 대한 다음 웨이를 지시하기 위해 식별자를 증가시킨다. 세트에 대한 마지막 웨이로 증가시키는 경우, 상기 증분기는 세트의 첫 번째 웨이를 지시하기 위해 상기 값(예를 들어 15부터 0)을 롤 오버(roll over)할 수 있다. 그리하여, 캐시 라인들은 순차적으로 로딩된다.
상기 명령(102)이 로드 명령이 아닌 경우, 시스템(100)은 상기 명령(102)의 태그(108)가 태그 어레이(110)에 저장되는지 여부를 결정한다. 상기 태그(108)가 태그 어레이(110)에 저장되는 경우, 상기 태그(108)에 대응하는 메모리 위치에 대한 메모리 값이 저장될 수 있다. 저장 위치는 태그(108)가 저장되는 태그 어레이(110)의 셀에 대한 각각의 캐시 라인일 수 있다.
시스템(100)은 태그(108)에 대응하는 메모리 위치에 저장된 메모리 값이 캐시의 캐시 라인에 저장되는지 여부를 결정하는 태그 비교기들(116)을 포함한다. 태그 비교기는 태그 및 상태 어레이의 각 웨이를 위해 존재할 수 있다. 따라서, 시스템(100)에 대하여, 16개의 태그 비교기들은 블록 116에서 존재할 수 있다. 자신의 대응하는 웨이에 대하여, 상기 태그 비교기는 태그(108)를 태그 어레이(110)에 있는 세트(104)의 웨이를 위해 저장된 태그와 비교한다. 상기 태그 비교기는 상태 어레이(112)의 셀에 대한 상태를 액세스함으로써 태그 어레이(110)에 저장된 태그가 유효한지 여부를 추가적으로 결정한다. 16개의 비교기들 중 아무도 유효한 상태를 포함하는 태그들 사이에서의 매치를 발견하지 못한 경우, 상기 태그 비교기들(116)은 메모리 값이 캐시에 저장되지 않는 미스 신호를 출력할 수 있다. 따라서, 상기 값은 메모리로부터 캐시로 로딩될 수 있다. 16개의 비교기들 중 하나가 유효한 상태를 포함하는 태그들 사이에서의 매치를 발견한 경우, 상기 태그 비교기들(116)은 메모리 값이 캐시에 저장된 히트(hit) 신호(118)를 출력할 수 있다. 따라서, 프로세서는 메모리를 액세스하는 대신에 캐시를 액세스할 수 있다.
명령(102)이 로드 명령인 경우, 시스템(100)은 어떠한 캐시 라인이 로딩될 것인지를 결정하기 위해 세트(104)에 대한 식별자(114)를 액세스할 수 있다. 그리고 나서 상기 식별자(114)는 로딩될 다음 캐시 라인을 지시하기 위해 증가된다.
명령들이 캐시의 캐시 라인들을 무효화(invalidate)시키기 위해 존재할 수 있기 때문에, 대응하는 식별자가 캐시의 다른 캐시 라인을 지시하는 동안 유효하지 않은 캐시 라인은 존재할 수 있다. 그 결과로, 기존의 시스템(100)을 포함하는 프로세서에서, 유효하지 않은 캐시 라인이 존재하는 동안 유효한 캐시 라인은 로드 오퍼레이션에 의해 대체될 수 있다.
캐시 유지 명령들
캐시 유지 명령들은 인덱스 명령에 의한 무효화(invalidate)를 포함할 수 있고 어드레스 명령에 의한 무효화를 포함할 수 있다. 인덱스 명령에 의한 무효화는 무효화될 캐시의 인덱스를 포함한다. 그러므로, 명령은 구체적으로 무효화될 캐시 라인을 지시한다. 따라서, 프로세서가 인덱스 명령에 의한 무효화를 실행할 때, 인덱스된 캐시 라인과 대응하는 상태 어레이의 셀은 유효하지 않은 상태를 저장한다.
어드레스 명령에 의한 무효화는 메모리의 어드레스(예를 들어, 태그)를 포함한다. 그러므로, 프로세서가 어드레스 명령에 의한 무효화를 실행할 때, 상기 프로세서는 메모리 어드레스와 관련된 캐시 라인을 무효화시킬 것이다. 그러므로, 상기 프로세서는 태그 어레이에서의 메모리 어드레스에 대해 탐색하고 매칭하는 태그를 저장하는 태그 셀과 관련된 캐시 라인을 무효화시킨다.
예시적인 시스템(200)(도 2) 및 예시적인 시스템(300)(도 3)에서, 무효화 명령을 통해 무효화된 캐시 라인에 대하여, 상기 시스템(200 및 300)이 유효하지 않은 캐시 라인에 대한 세트에 대응하는 식별자를 캐스팅하여 식별자는 무효화된 캐시 라인을 지시할 수 있다. 그 결과로, 동일한 세트의 유효한 캐시 라인보다 먼저 무효화된 캐시 라인이 대체되었다.
캐시 대체 시스템의 예시적인 실시예들
도 2-3에서의 개략도들은 캐시 라인들을 대체하기 위한 시스템들의 예시적인 실시예들을 도시한다. 도 2의 개략도는 프로세서가 동작하는 동안 인덱스 명령들에 의한 무효화가 존재하는 대체하기 위한 캐시의 캐시 라인들을 결정하기 위한 예시적인 시스템(200)을 도시한다. 도 3의 개략도는 프로세서가 동작하는 동안 인덱스 명령들에 의한 무효화 및 어드레스 명령들에 의한 무효화가 존재하는 대체하기 위한 캐시의 캐시 라인들을 결정하기 위한 예시적인 시스템(300)을 도시한다.
도 2를 참조하며, 시스템(200)은 도 1의 시스템(100)과 비교되는 선택기(202)를 포함한다. 비(non) 유지 명령들의 프로세싱 동안, 선택기(202)는 증가된 식별자 값(즉, 증분기들(120)의 출력)을 선택한다. 그리하여, 시스템(200)은 도 1에서의 시스템(100)과 유사하게 동작할 수 있다. 예를 들어, 로드 동작 동안, 상기 시스템(200)은 식별자(114), 상태 어레이(112)의 세트, 및 태그 어레이(110)의 세트를 선택하기 위해 명령(102)의 세트(104)를 사용한다. 그리고나서, 상기 프로세서는 메모리의 태그(108)에 저장된 값을 세트(104) 및 식별자(114)에 의해 식별된 캐시 라인으로 로딩한다. 바이트(106)가 상기 명령이 로드 명령임을 나타내기 때문에, 바이트(106)를 수신하는 상기 증분기(120)는 세트의 다음 캐시 라인을 지시하도록 선택된 식별자(114)를 증가시킨다. 그리고나서 명령이 캐시 유지/인덱스 명령에 의한 무효화가 아니기 때문에 선택기(202)는 증분기의 출력(증가된 식별자 값)을 선택한다. 다음에 식별자(114)는 증가된 식별자 값을 저장한다.
다른 예시에서, 저장 동작 동안, 상기 시스템(200)은 식별자(114), 상태 어레이(112)의 세트, 및 태그 어레이(110)의 세트를 선택하기 위해 명령(102)의 세트(104)를 사용한다. 프로세서는 저장을 위해 태그(108)에 의해 식별된 메모리의 메모리 위치로 세트(104)에 대응하는 캐시 라인의 값 및 사전 결정된 웨이를 송신한다. 명령이 로드 명령이 아니고 프로세서에 의해 실행되도록 메모리로부터 값을 요구하지도 않기 때문에, 증분기(120)는 식별자 값을 증가시키지 않는다. 명령이 인덱스에 의한 무효화가 아니기 때문에, 선택기(202)는 증분기(120)의 출력을 선택한다. 그리하여, 식별자의 식별자 값은 저장 명령의 실행 동안 동일하게 지속된다(stay).
합(add) 또는 곱(multiply)과 같은 몇몇의 명령들은 명령의 실행을 위해 사용될 오퍼랜드들을 포함할 수 있다. 상기 오퍼랜드는 통상적으로 메모리에 저장된다. 따라서, 상기 오퍼랜드는 캐시에 저장될 수 있다. 그러므로, 시스템(200)은 오퍼랜드가 캐시에 저장되는지 여부를 결정할 수 있다. 도 1에서의 시스템(100)과 유사하게, 오퍼랜드가 캐시에 저장되는 경우, 비교기들(116)로부터 히트 신호(118)가 출력된다. 오퍼랜드가 캐시에 저장되지 않은 경우, 태그 비교기들(116)로부터 미스 신호(118)가 출력된다. 상기 히트 또는 미스 신호(118)는 증분기(120)가 식별자 값을 증가시킬지 여부를 제어하도록 하기 위해 증분기들(120)로 라우팅된다.
신호(118)가 미스 신호인 경우, 오퍼랜드는 캐시에 저장되지 않고 메모리로부터 캐시로 로딩될 필요가 있다. 그러므로, 세트(104)에 대한 식별자(114)는 대체될 다음 캐시 라인을 식별한다. 상기 오퍼랜드는 식별된 캐시 라인으로 로딩된다. 미스 신호(118)를 수신하는 경우, 증분기(120)는 대체된 캐시 라인 이후에 다음 캐시 라인을 지시하기 위해 식별자 값을 증가시킨다. 신호(118)가 히트 신호인 경우, 오퍼랜드는 메모리로부터 캐시로 로딩될 필요가 없다. 그러므로, 상기 히트 신호(118)를 수신하는 경우, 증분기(120)는 식별자 값을 변화시키지 않는다.
시스템(200)의 동작은 캐시 유지 명령(예를 들어, 캐시 무효화 명령)들의 실행 동안 시스템(100)(도 1)의 동작을 전환시킨다. 캐시 유지 명령이 실행될 때, 상기 선택기(202)는 명령으로부터 인덱스 입력을 선택한다. 프로세서는 또한 인덱스된 캐시 라인을 무효화시킨다. 상기 선택기(202)가 명령으로부터 인덱스를 선택하기 때문에, 인덱스된 캐시 라인에 대한 식별자(114)는 무효화된 캐시 라인을 지시하기 위해 상기 인덱스와 동일하게 된다. 그 결과로, 캐시 라인이 무효화되는 경우, 상기 시스템(200)은 대체될 세트의 다음 캐시 라인으로 무효화된 캐시 라인을 설정한다.
도 3을 참조하며, 무효화는 인덱스 또는 어드레스에 의해 수행될 수 있다. 그러므로, 도 1에서의 시스템(100)과 비교되는 바와 같이, 시스템(300)은 인코더(302) 및 선택기(304)를 포함한다. 도 2에서의 시스템(200)과 유사하게, 시스템(300)은 비 유지 명령들을 실행하는 동안 도 1의 시스템(100)과 유사하게 동작한다. 하지만, 유지 명령이 실행될 때, 상기 유지 명령은 인덱스 명령에 의한 무효화 또는 어드레스 명령에 의한 무효화일 수 있다. 상기 캐시 유지 명령이 인덱스 명령에 의한 무효화인 경우, 선택기(304)는 명령(102)으로부터 인덱스를 선택하고 시스템(300)은 도 2에서의 시스템(200)과 유사하게 동작한다.
상기 캐시 유지 명령이 어드레스 명령에 의한 무효화인 경우, 선택기(304)는 인코더(302)의 출력을 선택한다. 앞서 설명된 바와 같이, 어드레스 명령에 의한 무효화는 프로세서가 태그(108)의 메모리 위치와 관련된 캐시 라인을 발견하고 상기 캐시 라인을 무효화시켜야 하는 메모리 어드레스를 포함한다. 그러므로, 인코더(302)는 메모리에 대한 태그(108)의 메모리 위치와 관련된 세트(104)에서의 캐시 라인의 식별자 값을 출력하도록 구성될 수 있으며, 그리하여 식별자는 프로세서에 의한 대체를 위해 무효화된 캐시 라인을 지시한다.
태그 비교기는 태그 어레이에 대한 세트의 각각의 웨이를 위해 존재한다. 그러므로, 예시적인 실시예에서, 16개의 태그 비교기들이 존재할 수 있다. 앞서 상술된 바와 같이, 태그 비교기가 태그들의 매치가 유효하다고 나타내는 경우, 상기 태그 비교기는 히트 신호를 출력한다. 일 실시예에서, 비교기가 태그들을 매칭하고 상태 어레이(112)에서의 대응하는 셀로부터 유효한 상태를 수신하는 경우, 비교기는 1(one)을 출력한다. 세트에서의 하나의 캐시 라인만이 메모리 어드레스(태그 (108))와 관련될 수 있다. 그러므로, 세트에 대한 16개의 태그 비교기들의 출력들은: (ⅰ) 미스를 표시하는 16개의 0(zero)들(즉, 각 태그 비교기로부터의 하나의 0)일 수 있고, (ⅱ) 히트를 표시하는 15개의 0들 및 하나의 1(즉, 태그들을 매칭하고 유효한 상태를 수신하는 태그 비교기로부터의 하나의 1, 및 남아있는 15개의 태그 비교기들 각각으로부터의 하나의 0)일 수 있다. 따라서, 16개의 비트들은 비교기들(116)로부터 인코더(302)로 송신된다.
일 실시예에서, 상기 인코더(302)는 수신된 16개의 비트 값들은 4개의 비트 식별자 값으로 인코딩하도록 구성된다. 예를 들어, 세트(104)의 (웨이 0-15로부터의) 웨이 10에 대한 상기 태그 비교기의 출력이 1인 경우, 인코더는 "1010"을 출력할 수 있다. 다른 예시에서, 웨이 3의 출력이 1인 경우, 상기 인코더(302)는 "0011"을 출력할 수 있다. 그러므로, 인코더(302)에 의해 출력된 식별자 값은 선택기(304)에 의해 선택되고 식별자(114)에 의해 저장되며, 그리하여 무효화된 캐시 라인은 대체될 다음 캐시 라인으로 지시된다.
캐시 대체 시스템들의 동작에 대한 예시적인 방법들
도 4-5는 캐시 대체 시스템들(200 및 300)의 동작에 대한 예시적인 방법들을 도시하는 순서도들이다. 도 4는 도 2의 개략도에서 도시되는 시스템(200)의 동작에 대한 예시적인 방법(400)을 도시하는 순서도이다. 도 5는 도 3의 개략도에서 도시되는 시스템(300)의 동작의 예시적인 방법(500)을 도시하는 순서도이다.
도 4를 참조하며, 시스템(200)은 실행될 명령이 블록 402에서의 캐시 유지 명령인지 여부를 결정한다. 시스템(200)에 대한 상기 캐시 유지 명령은 인덱스 명령에 의한 무효화이다. 상기 명령이 캐시 유지 명령이 아닌 경우, 상기 시스템(200)은 블록 404에서 증분기(120)의 출력으로서 세트(104)에 대한 식별자를 캐스팅한다. 일 실시예에서, 상기 선택기(202)는 상기 값들을 식별자들(114)로 피드백하기 위해 증분기(120)의 출력을 선택한다. 증분기(120)가 태그 비교기(116)로부터 히트 신호(118)를 수신하는 경우, 상기 증분기(120)는 식별자 값을 증가시키지 않는다. 증분기(120)가 미스 신호(118)를 수신하는 경우, 상기 증분기는 식별자 값을 증가시킨다. 따라서, 세트(104)에 대한 식별자는 동일하게 유지되거나 증가된다.
상기 명령이 캐시 유지 명령인 경우, 시스템(200)은 명령(102)으로부터의 무효화 인덱스를 검색한다. 그리고나서 블록 408에서 인덱스에 포지셔닝된(positioned) 캐시 라인은 무효화된다. 블록 410으로 진행하여, 시스템(200)은 상기 명령으로부터의 인덱스로서 세트(104)에 대한 식별자를 캐스팅(cast)한다. 일 실시예에서, 식별자(114)들로 피드백하기 위해 선택기(202)는 명령으로부터의 인덱스를 선택한다. 따라서, 상기 식별자는 대체될 다음 캐시 라인으로서 무효화된 캐시 라인을 지시한다.
도 3에서의 시스템(300)과 관련하여 도 5을 참조하며, 상기 시스템(300)은 실행될 명령이 캐시 유지 명령(502 및 510)인지 여부를 결정한다. 시스템(300)에 대한 캐시 유지 명령은 인덱스 명령에 의한 무효화 또는 어드레스 명령에 의한 무효화일 수 있다. 따라서, 블록 502에서 시작하는, 시스템(300)은 명령이 인덱스 명령에 의한 무효화인지 여부를 결정한다. 상기 명령이 인덱스 명령에 의한 무효화인 경우, 시스템(300)은 블록 504에서 명령(102)으로부터의 무효화 인덱스를 검색한다. 그리고나서 블록 506에서 인덱스에 포지셔닝된 캐시 라인은 무효화된다. 블록 508로 진행하여, 시스템(200)은 명령으로부터의 인덱스로서 세트(104)에 대한 식별자를 캐스팅한다. 일 실시예에서, 선택기(304)는 식별자들(114)을 피드백하기 위해 명령으로부터의 인덱스를 선택한다. 따라서, 상기 식별자는 대체될 다음 캐시 라인으로 무효화된 캐시 라인을 지시한다.
명령이 인덱스 명령에 의한 무효화가 아닌 경우, 시스템(300)은 상기 명령이 블록 510에서의 어드레스 명령에 의한 캐시 무효화인지 여부를 결정한다. 명령이 어드레스 명령에 의한 무효화인 경우, 시스템은 블록 512에서 상기 명령으로부터의 무효화 메모리 어드레스(예를 들어, 태그(108))를 검색한다. 블록 514로 진행하며, 시스템(300)은 세트(104)에 대한 임의의 캐시 라인이 명령(102)으로부터 검색되는 메모리 어드레스(예를 들어 태그(108))에서 메모리에 값을 저장하는지 여부를 결정한다.
시스템(300)이 캐시 라인이 어드레스에서 메모리로부터의 값을 저장하는 것으로 결정한 경우, 시스템(300)의 인코더(302)는 블록 516에서 캐시 라인 인덱스(예를 들어, 무효화된 캐시 라인을 지시하는 4 비트 식별자 값)를 생성하기 위해 태그 비교기들(116)로부터의 출력을 인코딩한다. 블록 518로 나아가며, 시스템(300)은 인코딩된 값으로 세트(104)에 대한 식별자를 캐스팅하며, 그리하여 세트(104)의 식별자는 무효화될 캐시 라인을 지시한다. 블록 520에서 상기 캐시 라인은 무효화된다.
시스템(300)이 블록 514에서 무효화 어드레스의 메모리 위치에 저장된 값이 캐시에 저장되지 않는 경우, 블록 522에서 어떠한 캐시 라인들도 무효화되지 않기 때문에 세트(104)에 대한 식별자는 동일하게 유지된다. 다시 블록 510을 참조하며, 상기 명령이 어드레스 명령에 의한 무효화가 아닌 경우, 상기 명령은 캐시 유지 명령이 아니다. 그러므로, 시스템(300)은 도 524에서 증분기(120)의 출력으로서 세트(104)에 대한 식별자를 캐스팅한다. 일 실시예에서, 선택기(304)는 상기 값을 식별자(114)들로 피드백하기 위해 증분기(120)의 출력을 선택한다. 증분기(120)가 태그 비교기(116)로부터 히트 신호(118)를 수신하는 경우, 상기 증분기(120)는 식별자 값을 증가시키지 않는다. 증분기(120)가 미스 신호(118)를 수신하는 경우, 상기 증분기(120)는 식별자 값을 증가시킨다. 따라서, 세트(104)에 대한 식별자는 동일하게 유지되거나 증가된다.
캐시 대체 시스템을 포함하는 예시적인 디바이스들
다중-모드 레지스터 파일들은 디지털 신호 처리기들과 같이 레지스터 파일들을 포함하는 임의의 프로세서들에 포함될 수 있다. 도 6-10에 대한 일반적인 다이어그램들은 도 2 및 3의 개략도들에서 도시되는 바와 같이 무효화된 캐시 라인들을 대체하기 위한 캐시 대체 시스템을 통합시킬 수 있는 예시 디바이스들을 도시한다.
도 6은 휴대용 통신 디바이스(600)의 예시적인 실시예를 도시하는 다이어그램이다. 도 6에 대한 일반적인 다이어그램에서 도시된 바와 같이, 상기 휴대용 통신 디바이스는 디지털 신호 처리기(DSP)(604)를 포함하는 온-칩 시스템(602)을 포함한다. 도 6에 대한 일반적인 다이어그램은 디지털 신호 처리기(604) 및 디스플레이와 연결되는 디스플레이 제어기(606)를 또한 도시한다. 게다가, 입력 디바이스(610)는 DSP(604)와 결합된다. 도시된 바와 같이, 메모리(612)는 DSP(604)와 결합된다. 또한, 코더/디코더(CODEC)(614)는 DSP(604)와 연결될 수 있다. 스피커(616) 및 마이크로폰(618)은 CODEC(614)과 연결될 수 있다.
도 6에 대한 일반적인 다이어그램은 디지털 신호 처리기(604) 및 무선 안테나(622)와 연결된 무선 제어기(620)를 추가적으로 도시한다. 특정한 실시예에서, 파워 서플라이(624)는 온-칩 시스템(602)과 연결된다. 게다가, 특정한 실시예에서, 도 6에서 도시된 바와 같이, 디스플레이(626), 입력 디바이스(630), 스피커(616), 마이크로폰(618), 무선 안테나(622) 및 파워 서플라이(624)는 온-칩 시스템(602)의 외부에 있다. 그러나, 각각은 온-칩 시스템(602)의 컴포넌트와 연결된다.
특정한 실시예에서, DSP(604)는 DSP(604)의 캐시의 어떠한 캐시 라인들을 메모리(612)로부터의 값들로 대체할지를 결정하기 위해 캐시 대체 시스템(680)을 포함한다.
도 7은 셀룰러 전화기(700)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 상기 셀룰러 전화기(700)는 서로 연결되는 디지털 기저대역 프로세서(704) 및 아날로그 기저대역 프로세서(706)를 포함하는 온-칩 시스템(702)을 포함한다. 특정 실시예에서, 디지털 기저대역 프로세서(704)는 디지털 신호 처리기이다. 도 7에 대한 일반적인 다이어그램에서 도시된 바와 같이, 디스플레이 제어기(708) 및 터치스크린 제어기(710)는 디지털 기저대역 프로세서(704)와 연결된다. 결과적으로, 온-칩 시스템(702)의 외부에 있는 터치스크린 디스플레이(712)는 디스플레이 제어기(708) 및 터치스크린 제어기(710)와 연결된다.
도 7에 대한 일반적인 다이어그램은 예를 들어, PAL(phase alternating line) 인코더, SECAM(sequential couleur a memoire) 인코더, 또는 NTCS(national television system(s) committee) 인코더와 같은, 비디오 인코더(714)가 디지털 기저대역 프로세서(704)와 연결됨을 추가적으로 도시한다. 또한, 비디오 증폭기(716)는 비디오 인코더(714) 및 터치스크린 디스플레이(712)와 연결된다. 또한 비디오 포트(718)는 비디오 증폭기(716)에 연결된다. 도 7에 대한 일반적인 다이어그램에서 묘사된 바와 같이, 범용 직렬 버스(USB) 제어기(720)는 디지털 기저대역 프로세서(704)와 연결된다. 또한 USB 포트(722)는 USB 제어기(720)에 연결된다. 메모리(724) 및 가입자 식별 모듈(SIM) 카드(726)는 또한 디지털 기저대역 프로세서(704)와 연결될 수 있다. 게다가, 도 7에 대한 일반적인 다이어그램에서 도시된 바와 같이, 디지털 카메라(728)는 디지털 기저대역 프로세서(704)와 연결될 수 있다. 예시적인 실시예에서, 상기 디지털 카메라(728)는 전하-결합 디바이스(CCD) 카메라 또는 상보형 금속 산화물 반도체(CMOS) 카메라이다.
도 7에 대한 일반적인 다이어그램에서 추가적으로 도시된 바와 같이, 스테레오 오디오 CODEC(730)은 아날로그 기저대역 프로세서(706)와 연결될 수 있다. 게다가, 오디오 증폭기(732)는 스테레오 오디오 CODEC(730)과 연결될 수 있다. 예시적인 실시예에서, 제 1 스테레오 스피커(734) 및 제 2 스테레오 스피커(736)는 오디오 증폭기(732)와 연결될 수 있다. 마이크로폰 증폭기(738)는 또한 스테레오 오디오 CODEC(730)과 연결될 수 있다. 또한, 마이크로폰(740)은 마이크로폰 증폭기(738)와 연결될 수 있다. 특정한 실시예에서, 주파수 변조(FM) 라디오 튜너(742)는 스테레오 오디오 CODEC(730)과 연결될 수 있다. 또한, FM 안테나(744)는 FM 라디오 튜너(742)와 연결될 수 있다. 게다가, 스테레오 헤드폰들(746)은 스테레오 오디오 CODEC과 연결될 수 있다.
도 7에 대한 일반적인 다이어그램은 무선 주파수(RF) 트랜시버(748)가 아날로그 기저대역 프로세서(706)와 연결될 수 있음을 추가적으로 도시한다. RF 스위치(750)는 RF 트랜시버(748) 및 RF 안테나(752)와 결합될 수 있다. 키패드(754)는 아날로그 기저대역 프로세서(706)와 결합될 수 있다. 또한, 마이크로폰(756)을 포함하는 모노 헤드셋은 아날로그 기저대역 프로세서(706)와 결합될 수 있다. 게다가, 진동기 디바이스(758)는 아날로그 기저대역 프로세서(706)와 결합될 수 있다. 도 7에 대한 일반적인 다이어그램은 또한 온-칩 시스템(702)과 연결될 수 있는 파워 서플라이(760)를 도시한다. 특정한 실시예에서, 상기 파워 서플라이(760)는 셀룰러 전화(700)의 다양한 컴포넌트들로 전력을 제공하는 직류 전류(DC) 파워 서플라이이다. 게다가, 특정한 실시예에서, 상기 파워 서플라이는 교류 전류(AC)로부터 AC 파워 서플라이와 연결된 DC 변압기로 유도되는 DC 파워 서플라이 또는 충전가능한 DC 배터리이다.
도 7에 대한 일반적인 다이어그램에서 묘사된 바와 같이, 터치스크린 디스플레이(712), 비디오 포트(718), USB 포트(722), 카메라(728), 제 1 스테레오 스피커(734), 제 2 스테레오 스피커(736), 마이크로폰(740), FM 안테나(744), 스테레오 헤드폰들(746), RF 스위치(750), RF 안테나(752), 키패드(754), 모노 헤드셋(756), 진동기(758), 및 파워 서플라이(760)는 온-칩 시스템(702)의 외부에 있을 수 있다. 특정한 실시예에서, 디지털 기저대역 프로세서(704)는 프로세서(704)에 대한 캐시의 어떤 캐시 라인들을 메모리(724)로부터의 값으로 대체할지를 결정하기 위해 캐시 대체 시스템(780)을 포함한다.
도 8은 무선 인터넷 프로토콜(IP) 전화기(800)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 무선 IP 전화기(800)는 디지털 신호 처리기(DSP)(804)를 포함하는 온-칩 시스템(802)을 포함한다. 디스플레이 제어기(806)는 DSP(804)와 연결될 수 있고 디스플레이(808)는 디스플레이 제어기와 연결된다. 예시적인 실시예에서, 디스플레이(808)는 액정 디스플레이(LCD)이다. 도 8은 DSP와 연결될 수 있는 키패드(810)를 추가적으로 도시한다.
플래시 메모리(812)는 DSP(804)와 결합될 수 있다. 동기식 동적 랜덤 액세스 메모리(SDRAM)(814), 정적 랜덤 액세스 메모리(SRAM)(816), 및 전기적 삭제가능한 프로그램어블 판독 전용 메모리(EEPROM)(818)는 또한 DSP(804)와 결합될 수 있다. 도 8에 대한 일반적인 다이어그램은 또한 발광 다이오드(LED)(820)가 DSP(804)와 결합될 수 있음을 도시한다. 또한, 특정한 실시예에서, 음성 CODEC(822)은 DSP(803)와 연결될 수 있다. 증폭기(824)는 음성 CODEC(822)과 연결될 수 있고 모노 스피커(826)는 증폭기(824)와 연결될 수 있다. 도 8에 대한 일반적인 다이어그램은 음성 CODEC(822)과 연결된 모노 헤드셋(828)을 추가적으로 도시한다. 특정한 실시예에서, 상기 모노 헤드셋(828)은 마이크로폰을 포함한다.
무선 로컬 지역 네트워크(WLAN) 기저대역 프로세서(830)는 DSP(804)와 결합될 수 있다. RF 트랜시버(832)는 WLAN 기저대역 프로세서(830)와 결합될 수 있고 RF 안테나(834)는 RF 트랜시버(832)와 결합될 수 있다. 특정한 실시예에서, 블루투스 제어기(836)는 또한 DSP(804)와 결합될 수 있고 블루투스 안테나(838)는 상기 제어기(836)와 결합될 수 있다. 도 8에 대한 일반적인 다이어그램은 또한 USB 포트(840)가 또한 DSP(804)와 결합될 수 있음을 도시한다. 게다가, 파워 서플라이(842)는 온-칩 시스템(802)과 연결되고 전력을 무선 IP 전화기(800)의 다양한 컴포넌트들로 제공한다.
도 8에 대한 일반적인 다이어그램에서 표시된 바와 같이, 디스플레이(808), 키패드(810), LED(820), 모노 스피커(826), 모노 헤드셋(828), RF 안테나(834), 블루투스 안테나(838), USB 포트(840), 및 파워 서플라이(842)는 온-칩 시스템(802)의 외부에 있을 수 있고 온-칩 시스템(802)의 하나 이상의 컴포넌트들과 결합될 수 있다. 특정한 실시예에서, 디지털 신호 처리기(804)는 프로세서(804)의 캐시의 어떠한 캐시 라인들을 플래시(812), SDRAM(814), SRAM(816), 및/또는 EEPROM(818)으로부터의 값으로 대체할지를 결정하기 위해 캐시 대체 시스템(880)을 포함한다.
도 9는 휴대용 디지털 기기(PDA)(900)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 상기 PDA(900)는 디지털 신호 처리기(DSP)(904)를 포함하는 온-칩 시스템(902)을 포함한다. 터치스크린 제어기(906) 및 디스플레이 제어기(908)는 DSP(904)와 연결된다. 또한, 터치스크린 디스플레이(910)는 터치스크린 제어기(906)와 연결되고 디스플레이 제어기(908)와 연결된다. 도 9에서의 일반적인 다이어그램은 또한 키패드(912)가 DSP(904)와 연결될 수 있음을 표시한다.
특정한 실시예에서, 스테레오 오디오 CODEC(926)은 DSP(904)와 연결된다. 제 1 스테레오 증폭기(928)는 스테레오 오디오 CODEC(926)과 연결되고 제 1 스테레오 스피커(930)는 제 1 스테레오 증폭기(928)와 연결된다. 추가적으로, 마이크로폰 증폭기(932)는 스테레오 오디오 CODEC(926)과 연결될 수 있고 마이크로폰(934)은 마이크로폰 증폭기(932)와 연결될 수 있다. 도 9에 대한 일반적인 다이어그램은 제 2 스테레오 증폭기(936)가 스테레오 오디오 CODEC(926)과 연결될 수 있고 제 2 스테레오 스피커(938)가 제 2 스테레오 증폭기(936)와 연결될 수 있음을 추가적으로 도시한다. 특정한 실시예에서, 스테레오 헤드폰들(940)은 또한 스테레오 오디오 CODEC(926)과 연결될 수 있다.
도 9에 대한 일반적인 다이어그램은 또한 802.11 제어기(942)가 DSP(904)와 연결될 수 있고 802.11 안테나(944)가 802.11 제어기(942)와 연결될 수 있음을 도시한다. 게다가, 블루투스 제어기(946)는 DSP(904)와 연결될 수 있고 블루투스 안테나(948)는 상기 블루투스 제어기(946)와 연결될 수 있다. USB 제어기(950)는 DSP(904)와 연결될 수 있고 USB 포트(952)는 상기 USB 제어기(950)와 연결될 수 있다. 추가적으로, 예를 들어, 멀티미디어 카드(MMC) 또는 보안 디지털 카드(SD)와 같은 스마트 카드(954)는 DSP(904)와 연결될 수 있다. 또한 파워 서플라이(956)는 온-칩 시스템(902)과 연결될 수 있고 PDA(900)의 다양한 컴포넌트들로 전력을 제공할 수 있다.
도 9에 대한 일반적인 다이어그램에서 표시된 바와 같이, 디스플레이(910), 키패드(912), IrDA 포트(922), 디지털 카메라(924), 제 1 스테레오 스피커(930), 마이크로폰(934), 제 2 스테레오 스피커(938), 스테레오 헤드폰들(940), 802.11 안테나(944), 블루투스 안테나(948), USB 포트(952), 및 파워 서플라이(956)는 온-칩 시스템의 외부에 있을 수 있고 상기 온-칩 시스템의 하나 이상의 컴포넌트들과 연결된다. 특정한 실시예에서, 디지털 신호 처리기(904)는 프로세서(904)의 캐시의 어떠한 캐시 라인들을 플래시(914), ROM(916), DRAM(918), 및/또는 EEPROM(920)으로부터의 값들로 대체할지를 결정하기 위해 캐시 대체 시스템(980)을 포함한다.
도 10은 오디오 파일 플레이어(예를 들어, MP3 플레이어)(1000)의 예시적인 실시예를 도시하는 다이어그램이다. 도시된 바와 같이, 오디오 파일 플레이어(1000)는 디지털 신호 처리기(DSP)(1004)를 포함하는 온-칩 시스템(1002)을 포함한다. 디스플레이 제어기(1006)는 DSP(1004)와 연결될 수 있고 디스플레이(1008)는 상기 디스플레이 제어기(1006)와 연결될 수 있다. 예시적인 실시예에서, 상기 디스플레이(1008)는 액정 디스플레이(LCD)이다. 키패드(1010)는 DSP(1004)와 연결될 수 있다.
도 10에 대한 일반적인 다이어그램에서 추가적으로 묘사된 바와 같이, 플래시 메모리(1012) 및 판독 전용 메모리(ROM)(1014)는 DSP(1004)와 결합될 수 있다. 추가적으로, 특정한 실시예에서, 오디오 CODEC(1016)은 DSP(1004)와 연결될 수 있다. 증폭기(1018)는 오디오 CODEC(1016)과 연결될 수 있고 모노 스피커(1020)는 상기 증폭기(1018)와 연결될 수 있다. 도 10에 대한 일반적인 다이어그램은 마이크로폰 입력(1022) 및 스테레오 입력(1024)이 또한 오디오 CODEC(1016)과 연결될 수 있음을 추가적으로 표시한다. 특정한 실시예에서, 스테레오 헤드폰들(1026)은 또한 오디오 CODEC(1016)과 연결될 수 있다.
USB 포트(1028) 및 스마트 카드(1030)는 DSP(1004)와 연결될 수 있다. 추가적으로, 파워 서플라이(1032)는 온-칩 시스템(1002)과 연결될 수 있고 오디오 파일 플레이어(1000)의 다양한 컴포넌트들로 전력을 제공할 수 있다.
도 10에 대한 일반적인 다이어그램에 표시되는 바와 같이, 디스플레이(1008), 키패드(1010), 모노 스피커(1020), 마이크로폰 입력(1022), 스테레오 입력(1024), 스테레오 헤드폰들(1026), USB 포트(1028), 및 파워 서플라이(1032)는 온-칩 시스템(1002)의 외부에 있을 수 있고 상기 온-칩 시스템(1002)의 하나 이상의 컴포넌트들과 연결될 수 있다. 특정한 실시예에서, 디지털 신호 처리기(1004)는 프로세서(1004)의 캐시의 어떠한 캐시 라인들을 플래시(1012) 및/또는 ROM(1014)로부터의 값들로 대체할지를 결정하기 위해 캐시 대체 시스템(1080)을 포함한다.
개괄
앞선 본 명세서에서 개시되는 신규한 개념들에 대한 실시예들의 설명은 오로지 예시 및 설명의 목적으로만 제시되며 본 명세서에서 개시되는 신규한 개념들을 포괄적이거나 개시되는 정확한 형태로 제한하도록 의도되지는 않는다. 일반적인 수정들 및 적용들은 본 명세서에서 개시되는 신규한 개념들의 범위 및 의도로부터 벗어남 없이 당해 출원발명이 속하는 기술분야에 있어서 통상의 지식을 가진 자에게 명백할 것이다.

Claims (20)

  1. 시스템으로서,
    다수의 캐시(cache) 라인들을 포함하는 캐시;
    대체(replacement)를 위한 상기 다수의 캐시 라인들 중의 캐시 라인을 식별하기 위해 식별자 값을 포함하는 식별자;
    인덱스 명령에 의한 캐시 무효화(invalidate)에 포함된 인덱스 값, 인코더에 의해 출력된 인코딩된 웨이(way) 값, 및 증분기(incrementer)에 의해 출력된 증분기 출력 값을 수신하는 선택기; 및
    상기 선택기로부터 상기 식별자 값을 할당하도록 구성되는 제어 로직 ― 상기 제어 로직은 상기 인덱스 명령에 의한 캐시 무효화를 수신한 것에 응답하여, 상기 인덱스 값을 상기 식별자 값에 할당함 ―
    을 포함하는,
    시스템.
  2. 방법으로서,
    식별자에서 대체를 위한 캐시 라인을 식별하는 단계 ― 상기 캐시 라인은 캐시의 다수의 캐시 라인들에 포함됨 ―;
    선택기에서 인덱스 명령에 의한 캐시 무효화에 포함된 인덱스 값, 인코더에 의해 출력된 인코딩된 웨이 값, 및 증분기에 의해 출력된 증분기 출력 값을 수신하는 단계; 및
    상기 선택기로부터 식별자 값을 상기 식별자에 할당하는 단계 ― 상기 인덱스 명령에 의한 캐시 무효화를 수신한 것에 응답하여, 상기 인덱스 값은 상기 식별자 값으로서 할당됨 ―
    을 포함하는,
    방법.
  3. 제 2 항에 있어서,
    상기 인코더에 의해 출력된 상기 인코딩된 웨이 값은 어드레스 명령에 의한 캐시 무효화 및 캐시 히트를 수신한 것에 응답하여 상기 식별자 값으로서 할당되는,
    방법.
  4. 시스템으로서,
    대체를 위한 캐시 라인을 표시하는 식별자를 식별하기 위한 수단 ― 상기 캐시 라인은 캐시의 다수의 캐시 라인들에 포함됨 ―;
    인덱스 명령에 의한 캐시 무효화에 포함된 인덱스 값, 인코더에 의해 출력된 인코딩된 웨이 값, 및 증분기에 의해 출력된 증분기 출력 값을 수신하기 위한 수단; 및
    상기 수신하기 위한 수단으로부터 식별자 값을 상기 식별자에 할당하기 위한 수단 ― 상기 인덱스 명령에 의한 캐시 무효화를 수신한 것에 응답하여, 상기 인덱스 값은 상기 식별자 값으로서 할당됨 ―
    을 포함하는,
    시스템.
  5. 제 2 항에 있어서,
    상기 식별자의 기존 값은 어드레스 명령에 의한 캐시 무효화 및 캐시 미스를 수신한 것에 응답하여 상기 식별자의 상기 식별자 값으로서 유지되는,
    방법.
  6. 제 2 항에 있어서,
    캐시 명령을 수신하는 단계를 더 포함하는,
    방법.
  7. 제 6 항에 있어서,
    상기 캐시 명령이 캐시 유지 명령인지 여부를 결정하는 단계 ― 상기 캐시 유지 명령은 상기 인덱스 명령에 의한 캐시 무효화 및 어드레스 명령에 의한 캐시 무효화 중 하나를 포함함 ―; 및
    상기 캐시 명령이 상기 캐시 유지 명령이라는 결정에 응답하여, 상기 캐시 유지 명령이 상기 인덱스 명령에 의한 캐시 무효화인지, 아니면 상기 어드레스 명령에 의한 캐시 무효화인지를 결정하는 단계
    를 더 포함하는,
    방법.
  8. 제 7 항에 있어서,
    상기 수신된 캐시 명령이 상기 캐시 유지 명령이 아니라는 결정에 응답하여, 상기 캐시 명령과 연관된 캐시 미스 및 상기 캐시 명령과 연관된 캐시 히트 중 하나를 식별하는 단계를 더 포함하는,
    방법.
  9. 제 8 항에 있어서,
    상기 캐시 명령과 연관된 상기 캐시 미스 및 상기 캐시 명령과 연관된 상기 캐시 히트를 식별하는 것은 비교기로부터의 비교기 출력에 적어도 부분적으로 기초하는,
    방법.
  10. 제 8 항에 있어서,
    상기 캐시 명령과 연관된 상기 캐시 미스의 식별에 응답하여, 상기 증분기 출력 값은 상기 식별자 값으로서 할당되고,
    상기 증분기 출력 값은:
    상기 캐시 유지 명령이 아닌 상기 캐시 명령에 기초한 캐시 미스에 응답한 상기 식별자 값 및 증분기 값의 합, 및
    상기 캐시 유지 명령과 연관된 캐시 미스 및 캐시 히트 양자 모두에 응답한, 그리고 상기 캐시 유지 명령이 아닌 상기 캐시 명령에 기초한 캐시 히트에 응답한, 상기 식별자 값
    과 동일한,
    방법.
  11. 제 10 항에 있어서,
    상기 캐시 명령과 연관된 캐시 히트의 식별에 응답하여, 상기 증분기 출력 값은 상기 식별자 값으로서 할당되는,
    방법.
  12. 제 3 항에 있어서,
    상기 인코딩된 웨이 값은 4 비트를 포함하는,
    방법.
  13. 제 3 항에 있어서,
    상기 인코더는 비교기로부터의 비교기 출력에 기초하여 상기 인코딩된 웨이 값을 출력하고, 상기 비교기 출력은 태그들의 인덱스를 포함하는 제 1 비교치 및 상태들의 인덱스를 포함하는 제 2 비교치에 적어도 부분적으로 기초하여 결정되는,
    방법.
  14. 제 13 항에 있어서,
    상기 제 1 비교치는 상기 어드레스 명령에 의한 캐시 무효화의 태그가 상기 태그들의 인덱스의 특정 태그와 매칭하는지 여부를 결정하고, 상기 태그들의 인덱스의 각각의 태그는 상기 다수의 캐시 라인들 중 특정 캐시 라인에 대응하는,
    방법.
  15. 제 14 항에 있어서,
    상기 특정 태그는 상기 태그들의 인덱스의 미리 정의된 세트와 연관되는,
    방법.
  16. 제 15 항에 있어서,
    상기 미리 정의된 세트는 상기 어드레스 명령에 의한 캐시 무효화로부터 획득되는,
    방법.
  17. 제 13 항에 있어서,
    상기 제 2 비교치는 상기 태그들의 인덱스의 특정 태그가 유효인지 여부를 결정하고, 상기 상태들의 인덱스의 각각의 상태는 상기 다수의 캐시 라인들 중 특정 캐시 라인에 대응하고, 상기 특정 캐시 라인의 유효성(validity)을 나타내는,
    방법.
  18. 제 13 항에 있어서,
    상기 비교기 출력은 16 비트를 포함하는,
    방법.
  19. 제 13 항에 있어서,
    상기 태그들의 인덱스 및 상기 상태들의 인덱스는 별개의 인덱스들인,
    방법.
  20. 제 19 항에 있어서,
    상기 다수의 캐시 라인들은 상기 태그들의 인덱스에 포함되지 않는,
    방법.
KR1020107021738A 2008-02-29 2009-02-03 캐시(cache) 라인 대체를 위한 시스템들 및 방법들 KR101252744B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/039,954 2008-02-29
US12/039,954 US8464000B2 (en) 2008-02-29 2008-02-29 Systems and methods for cache line replacements
PCT/US2009/032920 WO2009108463A1 (en) 2008-02-29 2009-02-03 Systems and methods for cache line replacement

Publications (2)

Publication Number Publication Date
KR20100119820A KR20100119820A (ko) 2010-11-10
KR101252744B1 true KR101252744B1 (ko) 2013-04-09

Family

ID=40565113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021738A KR101252744B1 (ko) 2008-02-29 2009-02-03 캐시(cache) 라인 대체를 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (2) US8464000B2 (ko)
EP (1) EP2260388B1 (ko)
JP (2) JP5474836B2 (ko)
KR (1) KR101252744B1 (ko)
CN (2) CN101960433B (ko)
TW (1) TW200945051A (ko)
WO (1) WO2009108463A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464000B2 (en) 2008-02-29 2013-06-11 Qualcomm Incorporated Systems and methods for cache line replacements
US9170955B2 (en) * 2012-11-27 2015-10-27 Intel Corporation Providing extended cache replacement state information
US9158702B2 (en) 2012-12-28 2015-10-13 Intel Corporation Apparatus and method for implementing a scratchpad memory using priority hint
WO2015075674A1 (en) 2013-11-21 2015-05-28 Green Cache AB Systems and methods for direct data access in multi-level cache memory hierarchies
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US10019368B2 (en) 2014-05-29 2018-07-10 Samsung Electronics Co., Ltd. Placement policy for memory hierarchies
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10331561B1 (en) * 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875465A (en) * 1996-04-03 1999-02-23 Arm Limited Cache control circuit having a pseudo random address generator
US6405287B1 (en) * 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
US20040143711A1 (en) * 2002-09-09 2004-07-22 Kimming So Mechanism to maintain data coherency for a read-ahead cache

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS579155B2 (ko) * 1975-02-04 1982-02-19
JPS63178354A (ja) 1987-01-20 1988-07-22 Hitachi Ltd バツフアメモリのリプレ−ス制御方式
JPH05189356A (ja) 1992-01-14 1993-07-30 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2005108262A (ja) 1994-09-09 2005-04-21 Renesas Technology Corp データ処理装置
JP3740195B2 (ja) 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US6408364B1 (en) * 2000-03-17 2002-06-18 Advanced Micro Devices, Inc. Apparatus and method for implementing a least recently used cache replacement algorithm
US6725337B1 (en) * 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US7669009B2 (en) * 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US8464000B2 (en) 2008-02-29 2013-06-11 Qualcomm Incorporated Systems and methods for cache line replacements

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875465A (en) * 1996-04-03 1999-02-23 Arm Limited Cache control circuit having a pseudo random address generator
US6405287B1 (en) * 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
US20040143711A1 (en) * 2002-09-09 2004-07-22 Kimming So Mechanism to maintain data coherency for a read-ahead cache

Also Published As

Publication number Publication date
JP2011513844A (ja) 2011-04-28
CN101960433A (zh) 2011-01-26
KR20100119820A (ko) 2010-11-10
TW200945051A (en) 2009-11-01
US20090222626A1 (en) 2009-09-03
US20130254489A1 (en) 2013-09-26
US8464000B2 (en) 2013-06-11
JP2013232210A (ja) 2013-11-14
US8812789B2 (en) 2014-08-19
EP2260388A1 (en) 2010-12-15
EP2260388B1 (en) 2016-08-31
WO2009108463A1 (en) 2009-09-03
JP5722389B2 (ja) 2015-05-20
JP5474836B2 (ja) 2014-04-16
CN105868128B (zh) 2018-05-18
CN105868128A (zh) 2016-08-17
CN101960433B (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
KR101252744B1 (ko) 캐시(cache) 라인 대체를 위한 시스템들 및 방법들
US8250332B2 (en) Partitioned replacement for cache memory
KR101302611B1 (ko) 분기 예측에 이용하기 위한 다중-모드 레지스터 파일
US8601234B2 (en) Configurable translation lookaside buffer
US9239799B2 (en) Memory management unit directed access to system interfaces
US8429378B2 (en) System and method to manage a translation lookaside buffer
JP5254342B2 (ja) n−ウェイキャッシュを用いるシステムおよび方法
EP3023878B1 (en) Memory physical address query method and apparatus
CN102884506B (zh) 使用用于转换并存储数据值的指令来配置替代存储器存取代理
KR101239272B1 (ko) 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기
US20130145097A1 (en) Selective Access of a Store Buffer Based on Cache State
US20210089459A1 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
US20150286270A1 (en) Method and system for reducing power consumption while improving efficiency for a memory management unit of a portable computing device
US20150286269A1 (en) Method and system for reducing power consumption while improving efficiency for a memory management unit of a portable computing device

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 7