KR101041647B1 - 캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템 - Google Patents

캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101041647B1
KR101041647B1 KR1020087030621A KR20087030621A KR101041647B1 KR 101041647 B1 KR101041647 B1 KR 101041647B1 KR 1020087030621 A KR1020087030621 A KR 1020087030621A KR 20087030621 A KR20087030621 A KR 20087030621A KR 101041647 B1 KR101041647 B1 KR 101041647B1
Authority
KR
South Korea
Prior art keywords
cache
victim
fifo
listing
way
Prior art date
Application number
KR1020087030621A
Other languages
English (en)
Other versions
KR20090025243A (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 KR20090025243A publication Critical patent/KR20090025243A/ko
Application granted granted Critical
Publication of KR101041647B1 publication Critical patent/KR101041647B1/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 태그 미스 할당에 후속하는 복수의 세트 방식들의 상주를 최대화하기 위해 캐시 메모리 할당을 교체하는 것을 포함하는, CDMA-기반 제품들 및 서비스들에서 사용하기 위한 기술들에 관한 것이다. 여기서, 캐시 메모리를 위한 희생 방식 들의 선입 선출(FIFO) 교체 리스팅을 형성하는 단계들을 포함하며, 상기 FIFO 교체 리스팅의 깊이는 상기 캐시 세트에서의 방식들의 수와 거의 같다. 본 발명의 방법 및 시스템은 태그 미스가 태그 미스 할당을 초래하는 경우에만 상기 FIFO 교체 리스팅에 희생 방식을 배치하며, 상기 희생 방식은 임의의 사전 선택된 희생 방식 이후에 상기 FIFO 교체 리스팅의 테일에서 배치된다. 상기 FIFO 교체 리스팅에서의 희생 방식의 사용은 상기 희생 방식의 불완전한 사전 할당이 발생하는 경우에 예를 들어, 희생 방식의 이러한 초기 할당이 완료될 때까지 재사용 요청을 중지하거나, 혹은 상기 희생 방식의 이러한 초기 할당이 완료될 때까지 재사용 요청을 재실행함으로써 방지된다.

Description

캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템{METHOD AND SYSTEM FOR MAXIMUM RESIDENCY REPLACEMENT OF CACHE MEMORY}
본 발명은 통신 제품들 및 서비스들의 지원시 디지털 신호 처리에 관한 것이다. 보다 구체적으로, 본 발명은 캐시 메모리의 최대 상주 교체를 위한 신규한 그리고 개선된 방법 및 시스템에 관한 것이며, 이는 핸드셋 혹은 다른 통신 시스템을 위한 디지털 신호 프로세서에서 사용됨을 알 수 있다.
전자 장비 및 지원 소프트웨어 어플리케이션들이 점점 더 디지털 신호 처리를 수반하고 있다. 홈 시어터, 컴퓨터 그래픽들, 의료 이미징 및 원격 통신들 모두 신호-처리 기술에 의존한다. 디지털 신호 처리는 복잡하지만 반복적인 알고리즘들에서의 빠른 계산을 요한다. 많은 어플리케이션들이 실시간 계산들을 요구하는데, 즉, 상기 신호는 시간의 연속 함수인데, 이는 수치 처리를 위해, 샘플링 되고 이진(binary)으로 변환되어야 한다. 따라서, 상기 프로세서는 샘플들이 도달할 때, 상기 샘플들에 대해 이산 계산들을 수행하는 알고리즘을 실행한다. 디지털 신호 프로세서, 혹은 DSP의 아키텍쳐는 이러한 알고리즘들을 처리하기 위해 최적화된다. 좋은 신호 처리 엔진의 특성들은 빠르고 플렉시블한(flexible) 산술 연산 유닛들, 상기 계산 유닛들로 그리고 상기 계산 유닛으로부터의 제약되지 않은 데이터 흐름, 상기 계산 유닛에서의 확장된 정밀도(precision) 및 동적 범위, 효율적인 프로그램 시퀀싱(sequencing), 및 프로그래밍의 편이성을 포함한다.
DSP 기술의 일 확정적인 어플리케이션은 코드 분할 다중 접속(CDMA) 시스템과 같은 통신 시스템들을 포함하는데, 상기 CDMA 시스템은 위성 혹은 지상 링크를 통해 사용자들 간의 음성 및 데이터 통신을 지원한다. 다중 접속 통신 시스템에서의 CDMA 프로세스들의 사용은 특허 출원 번호가 4,901,307이고, 발명의 명칭이 'SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS'인 미국 특허 및 특허 출원 번호가 5,103,459이고 발명의 명칭이 'SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM'인 미국 특허에 개시되며, 이들 모두는 본 발명의 양수인에게 양도되었다.
CDMA 시스템은 통상적으로 하나 이상의 원격 통신들 및, 현재는 스트리밍 비디오, 표준들에 따르도록 설계된다. 한 가지 이러한 제 1 세대 표준은 "듀얼 모드 광대역 확산 스펙트럼 셀룰러 시스템을 위한 TIA/EIA/IS-95 터미널-기지국 호환성 표준(TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-mode Wideband Spread Spectrum Cellular System)" 이며, 이하에서는 IS-95 표준이라 지칭된다. 상기 IS-95 CDMA 시스템들은 음성 데이터 및 패킷 데이터를 전송할 수 있다. 패킷 데이터를 더 효율적으로 전송할 수 있는 더 새로운 세대 표준이 "제 3 세대 파트너쉽 프로젝트"(3rd Generation Partnership Project(3GPP))라는 명칭의 컨소시엄에 의해 제공되며, 문서 번호 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, 및 3G TS 25.214를 포함하는 일련의 문서들에 포함되며 이들은 공중(public)에게 쉽게 사용가능하다. 상기 3GPP 표준은 이하에서 W-CDMA 표준이라 지칭된다. 또한, 예를 들어 MPEG-1, MPEG-2, MPEG-4, H.264, 및 WMV(윈도우 미디어 비디오)와 같은 비디오 압축 표준들, 및 이러한 무선 핸드셋들이 점점 더 많이 사용할 많은 다른 표준들 역시 존재한다.
디지털 신호 프로세서(DSP)들은 상기 표준들에 따라 무선 핸드셋들에서 가치있게 사용됨을 알 수 있다. 특히, 무선 핸드셋들은 DSP가 사용자-발신(orientation), 과학용 및 멀티미디어 어플리케이션 뿐만 아니라 많은 다른 타입들의 어플리케이션들로부터 명령들을 실행하는 것을 요구할 것이다. 상기 프로세서 자원 요건들은 예컨대, 텔레비전 브로드캐스트, 스트리밍 메시지 체크기(ticker)들, 전자 메일(첨부 문서들을 가지는 메시지들을 포함)와 같은 어플리케이션들 뿐만 아니라, 스트리밍 비디오(예를 들어, 화상회의), 사진, 및 문서(워드 프로세싱, 스프레드시트들, 프리젠테이션 등) 어플리케이션들과 같은 상주 어플리케이션들에 대해 광범위하게 그리고 동적으로 변경할 수 있으며, 상기 어플리케이션들 모두 동일한 DSP로부터 유래한다.
DSP의 동작시, 예를 들어, 이러한 휴대용 및 핸드헬드 어플리케이션들의 광범위한 사용 확산으로 인해, 데이터 처리 시스템에서 더 낮은 전력 소비의 중요성이 증가하고 있다. 오늘날 많은 DSP들은 더 소형화, 고속화되고, 때때로 캐시라고 지칭되는, 더 효율적인 메모리를 사용하여 주(main) 메모리로의 액세스들의 횟수를 감소시킨다. 캐시 메모리로의 액세스들은 일반적으로 더 적은 전력을 소모하여, 다른 내부 혹은 외부 메모리들로의 액세스들과 비교시 감소된 레이턴시(latency)들을 초래한다. 더 빠르고 더 효율적인 캐시에서 다시 후속적으로 요청될 이러한 항목들을 저장함으로써, 현저한 전력 감소 및 성능 개선이 일어날 수 있다.
캐시 메모리는 또한, DRAM과 같은 주 메모리 소스들과 연관된 대기-상태들의 발생 없이 데이터를 신속하게 패치(fetch)하는 방법을 상기 프로세서로 제공한다. 캐시 메모리의 사용은, 복잡한 버스 구조들 중 주 메모리의 버스로부터 야기되는 물리적 지연들 혹은 페이징 사이클들을 요구함이 없이 공통-사용 데이터를 사용가능하게 하여, 통상적으로 컴퓨터 시스템 성능을 개선한다.
통상적으로, 캐시 메모리는 "세트들(sets)" 혹은 "방식들(ways)"로 정렬된다(이하에서는 총체적으로 "방식들"이라 지칭됨). 캐시 메모리 방식은 공통 어드레스를 사용하여 액세스될 수 있는 다수의 캐시 메모리 엔트리 위치들을 포함한다. 세트-결합적인(associative) 캐시는, DRAM과 같은 주 메모리 소스들 내의 특정 위치에 할당되거나 "매핑되는" 캐시 방식들로 데이터를 정렬하는 캐시 메모리의 타입이다. 캐시 메모리 방식은 상기 방식 내에 저장된 데이터가 주 메모리 내의 또다른 위치로부터의 데이터에 의해 교체되는 경우 재-매핑된다. 더욱이, 캐시 방식들은 특정 주 메모리 위치 내에 연관된 데이터의 가장 최근 버전을 캐시에 유지하도록 보조하기 위해 동일한 주 메모리 위치에 매핑될 수 있다.
현재, 캐시 메모리는 통상적으로 주 메모리보다 더 작으며, 따라서, 캐시 방식들은 캐시 내에 저장되지 않은 새로 액세스된 데이터를 위한 공간을 만들기 위해 삭제될 필요가 있다. 이러한 교체될 캐시 방식들은 "희생 방식들(victim ways)"로 서 알려져 있다. 상기 희생 방식에 인가된 데이터는 일부 시간동안 상기 캐시 내에 있던 데이터보다는 가까운 미래에 다시 액세스될 가능성이 통계적으로 더 커야 한다. 통상적으로, 상기 캐시는 주어진 트랜잭션(transaction)에 대응하는 데이터를 저장하기에 적합한 하나 이상의 캐시 엔트리들을 선택한다. 세트 결합적인 캐시에서, 둘 이상의 엔트리들은 상기 데이터의 어드레스에 기반하여 데이터를 저장하기에 적합하다. 상기 둘 이상의 엔트리들 중 임의의 엔트리의 캐시 라인은 미스에 대해 축출(evict)될 수 있다. 세트 결합적인 캐시들은 축출을 위한 둘 이상의 적합한 엔트리들 중 하나를 선택하기 위해 교체 정책을 사용한다. 다양한 교체 정책들이 존재한다.
캐시 교체 프로세스들 중 두 가지 알려진 타입들은 가장 최근의 사용 횟수 방식(Last Recently Used("LRU")) 및 최근의 사용되지 않은 횟수 방식(Not Recently Used("NRU")) 캐시 교체 정책들이다. 이들 캐시 교체 방식들 각각은 상기 구현된 교체 방식의 상세한 지식(knowledge)에 따라, 상기 캐시에 제공되는 트랜잭션들의 복잡한 모니터링을 요구한다. 따라서, 상기 캐시 방식의 각각의 사용을 위해, 상기 캐시 방식과 연관된 저장 비트를 업데이트할 필요가 있다. 이러한 업데이트는 운영 자원 사용 및 에너지 소비의 측면에서 비싸다.
따라서, 상기 NRU 및 LRU 접근법들의 동일한 성능을 필수적으로 달성하는 저비용, 고효율의 캐시 교체 프로세스에 대한 필요성이 존재한다. 저비용 이점들은 캐시 교체 프로세스에서 저장 요건들을 감소시키는 것을 포함한다. 또한, 저장 요건들의 감소는 DSP 동작동안 개선된 에너지 사용을 프롬프팅한다.
상기 LRU 및 NRU 프로세스들의 사용시의 또다른 고려점은 멀티-스레드(multi-threaded) 처리를 수행하는 DSP에 특히 연관된다. 이러한 프로세서에서, LRU 및 NRU 캐시 교체 방식들과 함께, 하나의 파이프라인으로부터 다음 파이프파인으로 저장 비트 정보를 포워딩할 반복적인(recurring) 필요성이 존재한다. 파이프라인에서 파이프라인으로 상기 저장 비트 정보를 포워딩하는 비용은, 특히 각각의 파이프라인 스테이지에 대해 제한된 시간 비용이 존재하는 경우, 초과될 수 있다. 즉, 하나의 파이프라인 스테이지로부터 또다른 파이프라인 스테이지로의 상기 저장 비트 정보의 처리는 멀티-스레드 동작동안 원치 않는 비용을 강요할 수 있다.
또한, 전술된 바와 같이, 상기 저장 비트들의 처리는, 상기 LRU 및 NRU 교체 정책들에서 요구되는 바와 같이, 일반적으로 저장 비트 정보를 전달하기 위한 넓고 큰 버스들의 사용을 수반한다. 상기 저장 비트 정보를 전달하는 큰 버스들이 전력을 소모하고 성능 지연들을 초래하기 때문에, 캐시 방식 교체 정책에서 이러한 저장 비트 정보의 전달을 감소시키거나 제거하는 것이 바람직하다.
따라서, 알려진 LRU 및 NRU 캐시 교체 정책들에 대한 개선의 필요성이 존재한다. 특히, 이러한 필요성은 멀티 스레드 DSP 혹은 유사한 프로세서의 동작시에 존재한다.
DSP 혹은 유사한 프로세서에 대한 알려진 캐시 교체 프로세스들에서 존재하는 전력 소모 및 성능 지연들을 감소시키기 위한 추가적인 필요성이 존재한다.
따라서, 필수적으로, DSP 혹은 유사한 프로세서의 캐시 방식 교체 동작들 동안 저장 비트 정보의 처리를 제거할 필요성이 존재한다.
본 명세서에서 개시된 기술들은 디지털 신호 프로세서 내 캐시 메모리의 최대 상주 교체를 제공하는데, 상기 기술들은 상기 프로세서의 동작 및 디지털 신호 프로세서 명령들의 효율적이고 더 신속한 처리 모두를 개선한다. 본 발명은 예를 들어, n-웨이(way) 세트 결합적인 방법(여기서, n은 2 이상임)에서 복수의 프로세서 스레드들이 캐시 메모리를 공유하는 멀티-스레드 프로세서 시스템의 이익을 취할 수 있으며, 더 구체적으로는, 미스-히트(miss-hit)가 발생할 때 적용가능한 교체 제어 기술에 대해 이익을 취할 수 있다. 본 발명의 사용은 개인용 컴퓨터들, 개인 휴대용 정보 단말기(PDA)들, 무선 핸드셋들, 및 유사한 전자 디바이스를 위한 점점 더 로버스트한 소프트웨어 어플리케이션들을 허용할 뿐만 아니라, 프로세서 속도 및 서비스 품질을 증가시킨다.
본 발명의 일 양상에 따라, 태그 미스 할당에 후속하는 복수의 세트 방식들의 상주를 최대화하기 위해 캐시 메모리 할당을 대체하기 위한 방법 및 시스템이 제공된다. 본 발명은 상기 캐시 메모리를 위한 희생 방식들의 선입 선출(first-in, first-out : FIFO) 교체 리스팅의 형성 단계를 포함하는데, 상기 FIFO 교체 리스팅의 깊이(depth)는 상기 캐시 세트 내 방식들의 개수와 거의 같다. 상기 방법 및 시스템은 태그 미스가 태그-미스 할당을 초래하는 경우에만 상기 FIFO 교체 리스팅에 희생 방식을 배치하며, 상기 희생 방식은 임의의 이전에 선택된 희생 방식 이후에 상기 FIFO 교체 리스팅의 테일에 배치된다. 상기 FIFO 교체 리스팅에서의 희생 방식의 사용은, 예를 들어, 상기 희생 방식의 이러한 초기 할당이 완료될 때까지 재사용 요청을 중지하거나 혹은 상기 희생 방식의 이러한 초기 할당이 완료될 때까지 재사용 요청을 재실행(replaying)함에 의해, 희생 방식의 불완전한 사전(prior) 할당이 발생하는 경우가 방지된다.
본 발명의 이들 및 다른 양상들, 및 부가적인 신규한 특징들이 본 명세서에 제공된 설명으로부터 명확해질 것이다. 본 요약의 의도는 청구 대상의 이해를 위한 설명이라기 보다는, 청구 대상의 기능 중 몇몇의 짧은 개요를 제공하는 것이다. 본 명세서에서 제공된 다른 시스템들, 방법들, 특징들 및 이점들은 다음 도면들 및 상세한 설명의 검토시 당업자에게 명백할 것이다. 이러한 설명 내에 포함된 모든 이러한 부가적인 시스템들, 방법들, 특징들 및 이점들이 첨부되는 청구항의 범위 내에 있도록 의도된다.
본 발명의 특징들, 속성들 및 이점들은, 도면들과 연관되어 취해지는 경우 아래에 설명된 상세한 설명으로부터 명확해질 것이며, 상기 도면들에서 유사한 도면 부호들이 전체에 걸쳐 대응적으로 식별된다.
도 1은 본 발명을 구현할 수 있는 통신 시스템의 간략화된 블록도.
도 2는 본 발명의 교시내용(teaching)들을 실행하기 위한 DSP 아키텍쳐들을 예시한 도면.
도 3은 본 발명의 교시내용들을 사용하여 시스템에서 동작될 수 있는 제어 유닛(CU)의 블록도를 도시한 도면.
도 4는 본 발명의 캐시 방식 교체 프로세스를 사용할 수 있는 일 예시적인 회로로서 데이터 유닛(DU)의 블록도를 도시한 도면.
도 5는 도 3에서 나타난 바와 같이, 명령 유닛(IU)에서 본 발명의 사용을 교시하기 위한 흐름도의 일 구현예의 상세 항목들을 도시한 도면.
도 6은 도 3에서 예시된 바와 같은 데이터 유닛(DU)에서 본 발명의 또다른 사용을 위한 흐름도의 일 구현예의 상세 항목들을 도시한 도면.
본 명세서에서 제시된 바와 같은 캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템의 개시된 청구 대상이, 멀티-스레드(multi-threaded) 처리를 수반하는 어플리케이션들을 포함하여, 매우 광범위하고 다양한 디지털 신호 처리 어플리케이션에서 사용된다. 한가지 이러한 어플리케이션은 원격 통신들, 특히, 하나 이상의 DSP 회로들을 사용하는 무선 핸드셋들에 나타난다. 결과적으로, 다음 도면들은 본 발명의 교시내용이 사용될 수 있는 원격 통신 DSP를 설명한다. 그러나, 본 명세서에서 설명된 구현예는 본 발명이 적용될 수 있는 어플리케이션들의 가상적으로 제한없는 세트 중 단 하나만을 제공한다는 점을 기억하라.
이러한 무선 핸드셋이 사용될 수 있는 방법을 설명하기 위한 목적으로, 도 1은 개시된 데이터 처리 방법 및 시스템의 제시된 실시예들을 구현할 수 있는 통신 시스템(10)의 간략화된 블록도를 제공한다. 송신기 유닛(12)에서, 데이터가, 통상적으로는 블록으로, 데이터 소스(14)로부터 송신(TX) 데이터 프로세서(16)로 전송되는데, 상기 송신 데이터 프로세서(16)는 상기 데이터를 포맷하고, 코딩하고, 처리하여, 하나 이상의 아날로그 신호들을 생성한다. 상기 아날로그 신호들은 이후 기저대역 신호들을 변조하고, 필터링하고, 증폭하고, 상향변환하여 변조된 신호를 생성하는 송신기(TMTR)(18)로 제공된다. 상기 변조된 신호는 이후 안테나(20)를 통해 하나 이상의 수신기 유닛들로 전송된다.
수신기 유닛(22)에서, 전송된 신호는 안테나(24)에 의해 수신되어 수신기(RCVR)(26)로 제공된다. 수신기(26) 내에서, 상기 수신된 신호는 증폭되고, 필터링되고, 하향변환되고, 복조되고, 디지털화되어 동상(I) 및 직교(Q) 샘플들을 생성한다. 이후, 상기 샘플들은 수신(RX) 데이터 프로세서(28)에 의해 디코딩되고 처리되어 상기 전송된 데이터를 복원한다. 수신기 유닛(22)에서의 디코딩 및 처리는 송신기 유닛(12)에서 수행된 코딩 및 처리와 상보적인 방식으로 수행된다. 상기 복원된 데이터는 이후 데이터 싱크(30)에 제공된다.
전술된 신호 처리는 음성, 비디오, 패킷 데이터, 메시징 및 단방향인 다른 타입들의 통신을 지원한다. 양방향 통신 시스템은 양방향(2-way) 데이터 통신을 지원한다. 그러나, 다른 방향에 대한 신호 처리는 간략함을 위해 도 1에서는 도시되지 않는다. 통신 시스템(10)은 코드 분할 다중 접속(CDMA) 시스템, 시분할 다중 접속(TDMA) 통신 시스템(예를 들어, GSM 시스템), 주파수 분할 다중 접속(FDMA) 통신 시스템, 또는 지상 링크를 통해 사용자들 간의 음성 및 데이터 통신을 지원하는 다른 다중 접속 통신 시스템일 수 있다. 특정 실시예에서, 통신 시스템(10)은 W-CDMA 표준에 따르는 CDMA 시스템이다.
도 2는 도 1의 송신 데이터 프로세서(16) 및 수신 데이터 프로세서(28)로서 작용하는 DSP(40) 아키텍쳐를 예시한다. 한번 더, DSP(40) 아키텍쳐는 본 명세서에 제공된 교시내용들 및 개념들을 효율적으로 사용할 수 있는 매우 많은 가능한 디지털 신호 프로세서 실시예들 중 단 하나의 실시예를 나타낸다는 점을 강조한다. DSP(40)는 멀티-스레드 프로세서를 나타내며, 스레드들 T0:T5는 명령들의 세트들을 포함한다. 명령들은 명령 유닛(IU)(42)을 통해 명령 큐(IQ)(44)로 큐잉(queue)한다. IQ(44) 내의 명령들은 프로세서 파이프라인(46)으로 발행될 준비가 된다. 명령 큐(44)로부터, 싱글 스레드, 예를 들어, 스레드(T0)는 디코드&발행 논리 회로(48)에 의해 선택될 수 있다.
IU(42) 내의 IQ(44)는 명령 스트림의 슬라이딩 버퍼를 유지한다. DSP(40)가 지원하는 6개의 스레드들(T0:T5) 각각은 별도의 IQ(44)를 가지는데, 여기서 각각의 엔트리들은 하나의 VLIW 패킷 혹은 최대 4개의 개별적인 명령들을 저장할 수 있다. 디코드 및 발행 회로(48) 논리는 VLIW 패킷 혹은 최대 4개의 수퍼스칼라 명령들을 동시에 디코딩하고 발행하기 위한, 또한 각각의 파이프라인 슬롯0:슬롯3에 대한 제어 버스들 및 오퍼랜드들을 생성하기 위한 모든 스레드들에 의해 공유된다. PLC(50)는 또한 예외(exception)들을 결정하고 스레드 인에이블/디스에이블, 재실행 조건들, 유지 프로그램 흐름 등과 같은 파이프라인 중지 조건들을 검출하기 위해 모든 스레드들에 의해 공유된다.
동작시, 선택된 스레드의 범용 레지스터 파일(GRF)(52) 및 제어 레지스터 파일(CRF)(54)이 판독되고, 판독된 데이터는 슬롯0:슬롯3을 위한 실행 데이터 경로들로 전송된다. 본 예에서, 슬롯0:슬롯3은 본 발명의 실시예에 사용된 패킷 그룹핑(grouping) 조합에 제공된다. 슬롯0:슬롯3으로부터의 출력은 DSP(40)의 동작들로부터의 결과들을 반환시킨다.
본 명세서에 개시된 청구 대상은 싱글 스레드의 캐시 교체 정책을 처리한다. 싱글 스레드는 사용가능한 모든 레지스터들 및 명령들을 사용하여 완전한 유니-프로세서 DSP(40)를 관찰한다. 코히런트(coherent) 공유 메모리 장비들을 통해, 이러한 스레드는 다른 스레드들과 통신하고 동기화될 수 있다. 이들 다른 스레드들이 동일한 프로세서 혹은 또다른 프로세서에서 실행되는지의 여부는 사용자-레벨 소프트웨어에 대해 매우 투명하다.
도 3으로 돌아가면, DSP(40)를 위한 본 발명의 마이크로-아키텍쳐(60)는 제어 유닛(CU)(62)를 포함하는데, 상기 제어 유닛(62)은 프로세서 파이프라인(46)의 제어 기능들 중 많은 기능들을 수행한다. CU(62)는 스레드들을 스케줄링하고, IU(42)로부터 믹스된 16-비트 및 32-비트 명령들을 요청한다. 더욱이, CU(62)는 3개의 실행 유닛들인, 시프트 타입 유닛(SU)(64), 곱셈 타입 유닛(MU)(66), 및 로드/저장 유닛(DU)(68)으로 명령들을 스케줄링하고 발행한다. CU(62)는 또한 수퍼스칼라 의존도 체크들을 수행한다. 버스 인터페이스 유닛(BIU)(70)은 IU(42) 및 DU(68)를 시스템 버스(미도시)에 인터페이스한다.
슬롯0 및 슬롯1 파이프라인들은 DU(68) 내에 있고, 슬롯2는 MU(66) 내에 있고, 슬롯3은 SU(64) 내에 있다. CU(62)는 소스 오퍼랜드들 및 제어 버스들을 파이프라인들(슬롯0:슬롯3)으로 제공하고, GRF(52) 및 CRF(54) 파일 업데이트들을 처리한다. CU(62)는 인터럽트들 및 리셋과 같은 외부 입력들을 수용하고, 에뮬레이션 유닛(EU)(72)을 지원한다. CU(62)는 또한 어드레스 변환(translation)들 동안 발생한 보호 위배(violation)로 인한 예외들을 처리한다. 믹스된 16-비트 및 32-비트 명령들은 마이크로 아키텍쳐(60)의 일 실시예에서, 최대 4개까지 동시에, 병렬로 발행될 수 있다. 그러나, 16-비트, 32-비트에 대한 많은 상이한 변경들, 및 다른 길이의 명령들이 다른 실시예에서 구현될 수 있으며, 이들 모두는 본 발명의 범위 내에 있다. 마이크로-아키텍쳐(60)는 더욱이, 각 사이클동안 CU(62)로부터 두 개의 64-비트 더블 워드들의 이동을 지원할 수 있다.
DSP(40)는, 마이크로-아키텍쳐(60)를 사용하여, 구체적으로, 다음 어플리케이션들의 클래스들을 지원한다: (1) 통신 신호 처리(예를 들어, 모뎀들); (2) 비디오 처리(예를 들어, H.264 포맷); (3)이미지 처리; (4) 오디오 처리; (5)3-D 그래픽 프론트-엔드 소프트웨어; 및 (6) 지원 제어 코드, 프로토콜 스택들, RTOS, 등. 따라서 DSP(40)는 VLIW 명령 패킷들, 및 개별 수퍼스칼라 발행 명령들 모두를 발행한다. 개별 명령들에 대한 발행 폭은 발행 슬롯 당 하나의 명령으로부터 최대 VLIW 패킷까지의 범위일 수 있다. 일 예로서, DSP(40)는 발행 슬롯 당 하나의 VLIW 패킷에 최대 4개의 명령들을 발행할 수 있다. 또한, DSP(40)는 수퍼스칼라 발행을 이용하여 하나 또는 두 개의 명령들을 발행할 수 있다.
도 4는 본 발명에 적용될 수 있는 블록 구획(partition)하는, 대표적인 데이터 유닛인 DU(68)를 제시한다. DU(68)는 어드레스 생성 유닛(AGU(80))을 포함하고, 추가적으로 CU(62)로부터 입력을 수신하기 위한 AGU0(81) 및 AGU1(83)을 포함한다. 본 명세서에서 개시된 청구 대상은 DU(68)의 동작을 사용하는 기본(principal) 어플리케이션을 가진다. 로드/저장 제어 유닛(LCU(82))은 또한, CU(62)와 통신하고, 제어 신호들을 AGU(80) 및 ALU(84)에 제공하며, 또한 데이터 캐시 유닛(DCU(86))과 통신한다. ALU(84)는 또한 AGU(80) 및 CU(62)로부터 입력을 수신한다. AGU(80)로부터의 출력은 DCU(86)로 간다. DCU(86)는 메모리 관리 유닛("MMU")(87) 및 CU(62)와 통신한다. ALU(84)는 ALU0(85) 및 ALU1(89)를 각 슬롯당 하나씩 포함하고, DU(68) 내의 산술/전달/비교(ATC) 동작들을 수행하기 위해 상기 데이터 경로를 포함한다.
DCU(86)는 SRAM 상태 어레이 회로(88), 저장 정렬기 회로(90), CAM 태그 어레이(92), SRAM 데이터 어레이(94) 및 로드 정렬기 회로(96)를 포함한다. 본 발명의 청구 대상이 동작시킬 수 있는, DU(68)의 동작을 더 설명하기 위해, 후속하는 설명의 몇몇 구획들에 따라 DU(68)에서 수행된 기본 기능들에 대한 참조가 이제 이루어진다. 특히, DU(68)는 로드 타입, 저장 타입, 및 ALU(84)로부터의 32-비트 명령들을 실행한다.
DU(68)는 즉각적인 오퍼랜드들을 포함하는 상기 DE 파이프라인 스테이지에서 CU(60)로부터 사이클 당 최대 두 개의 디코딩된 명령들을 수신한다. RF 파이프라인 스테이지에서, DU(68)는 적절한 스레드 특정 레지스터들로부터 범용 레지스터(GPR) 및/또는 제어 레지스터(CR) 소스 오퍼랜드들을 수신한다. 상기 GPR 오퍼랜드는 CU(60) 내의 GPR 레지스터 파일로부터 수신된다. EX1 파이프라인 스테이지에서, DU(68)는 로드 혹은 저장 메모리 명령의 유효 어드레스(EA)를 생성한다. 상기 EA는 MMU(87)에 제공되는데, 상기 MMU(87)는 가상 대 물리적 어드레스 변환 및 페이지 레벨 허용 확인을 수행하여 페이지 레벨 속성들을 제공한다. 캐시가능한 위치들로의 액세스들을 위해, DU(68)는 물리적 어드레스를 사용하여 EX2 파이프라인 스테이지 내의 데이터 캐시 태그를 검색한다. 만약 액세스가 히트하면, DU(68) 는 EX3 파이프라인 스테이지에서 데이터 어레이 액세스를 수행한다.
캐시가능한 로드들을 위해, 상기 캐시로부터 판독된 데이터는 적절한 액세스 크기에 의해 정렬되고, WB 파이프라인 스테이지 내의 CU(60)에 특정되고 유도된 것으로서 확장된 제로/부호는 명령 특정된 GPR로 기록될 것이다. 캐시가능한 저장들을 위해, 저장될 데이터는 CU(60) 내의 스레드 특정 레지스터로부터 판독된다.
DU(68)은 또한 DCU(86)를 관리하기 위한 캐시 명령들을 실행한다. 상기 명령들은 특정 캐시 라인들이 고정(locked) 및 고정해제(unlocked)되고, 무효화되고, GPR 특정 캐시 라인으로 할당되도록 허용한다. 또한, 상기 캐시를 전체적으로 무효화시키는 명령 역시 존재한다. 이들 명령들은 상기 로드 및 저장 명령들과 유사하게 파이프라인화된다. 상기 데이터 캐시를 미스(miss)하는 캐시가능한 위치들로의 로드들 및 저장들을 위해, 그리고 캐시가능하지 않은 액세스들을 위해, DU(68)는 요청들을 BIU(70)에 제공한다. 캐시가능하지 않은 로드들은 판독 요청을 제공한다. 저장 히트들, 미스들, 및 캐시가능하지 않은 저장들은 판독/기록 요청을 저장한다. DU(68)는 미해결의(실행되지 않은, outstanding) 판독 및 BIU(70)로의 라인 필(line fill) 요청들을 트래킹(track)한다. DU(68)는 또한, 하나 이상의 스레드들이 블로킹되는 동안 다른 스레드들에 의한 액세스들을 허용하고, 미해결의 로드 요청들의 완료를 계류시킨다. 즉, DU(68)는 상기 DSP(40) 코어 프로세서로 및 상기 DSP(40) 코어 프로세서로부터 판독/기록 요청들을 지원한다. 따라서, BIU(70)는 이들 동작들을 위한 버스에 양방향 인터페이스를 제공한다.
두 가지 타입들의 저장들이 존재한다. 먼저, 캐시로 직접 저장하는 저장들, 즉, "라이트 백(write back)" 저장이 존재한다. 또한, 캐시에 저장할 수 있는 저장이 존재할 수 있지만, 이들은 또한 상기 트랜잭션을 상기 버스에 전송한다. 상기 "라이트-스루(write-through)" 및 "캐시되지 않은(uncached)" 저장들 모두는 데이터를 버스 뿐만 아니라 캐시로도 전송한다. 저장 히트는 상기 라이트-스루 저장을 위한 판독/기록 요청을 제공할 것이다. 라이트-백 저장이 발생하는 경우에 저장 미스가 발생하는 경우, 상기 버스를 통한 출현(appearing)이 판독 요청이 될 것이다. 만약 상기 요청이 라이트-스루라면, 상기 데이터는 상기 버스로 바로 가고, 상기 캐시에는 기록되지 않는다.
본 발명은 예컨대 DU(68)에서 발생하는 동작들과 같은 디지털 신호 처리 동안, 캐시 교체 동작들을 위해 "선입선출" 혹은 "FIFO" 리스팅 프로세스를 제공한다. 본 발명의 FIFO 캐시 교체 프로세스의 효율성의 분석시, 더 효율적이고 덜 방해되는 캐시 교체 프로세스가 존재한다. 이는 저장 비트들의 위치를 트래킹하고 전달하는 어떠한 프로세스도 존재하지 않음에도 불구하고 참(true)이다.
본 발명의 프로세스의 기술적인 이점은 어느 캐시 라인이 가장 최근에 사용되었는지를 트래킹할 필요성을 회피하는 것이다. 본 발명의 프로세스는 이러한 요건을 부과하지 않는다. 본 발명의 FIFO 캐시 교체 프로세스를 사용하여 사용가능한 캐시 자원들의 존재를 결정할 필요성만이 존재한다. 캐시 메모리로의 액세스 경로들의 실행 기록의 유지를 알기 위한 요건이 존재하지 않는다. 따라서, 각각의 캐시 로드를 사용하여, NRU 또는 LRU 프로세스들을 사용할 때, 사용할 캐시 방식을 결정하기 위해 이루어져야 하는 계산이 존재한다.
본 발명은 미스가 발생하는 경우 상기 캐시 방식을 업데이트한다. 따라서, 많은 미스들이 발생할 때, 본 발명의 프로세스는 다음 저장 요청이 발생하는 경우 사용할 캐시 방식을 계속 식별하도록 동작할 것이다. 반면, 만약 캐시 미스들이 발생하지 않는다면, 본 명세서에서 개시된 프로세스들은, 상기 LRU 혹은 NRU 프로세스들이 사용됨에 따라, 계속적으로 업데이트하지는 않을 것이다. 대신, 현재 FIFO 캐시 교체 프로세스는 다음 캐시 미스가 발생할 때까지 대기한다. 즉, 상기 NRU 및 LRU 프로세스들은 발생하는 캐시 히트들을 트래킹하는 반면, 본 명세서에서 개시된 상기 FIFO 캐시 교체 프로세스는 발생하는 캐시 미스들을 트래킹한다.
본 발명에 따라, 오직 미스가 발생할 때만 사용할 캐시 방식이 존재한다. 상기 FIFO 캐시 교체 프로세스는, 캐시가 교체되어야 할 시점에서 상기 리스트로부터 교체된 캐시 방식들에 따라 교체하기 위해 다음 캐시 방식에 기초한다. 따라서, 어떠한 방식도 교체되지 않는 경우, 교체될 캐시 방식들의 FIFO 리스팅은 변경되지 않을 것이다. 미스가 발생할 때, 가장 오래된 미스된 캐시는 상기 교체 프로세스에 대해 최소값인데, 왜냐하면, 상기 가장 오래된 미스된 캐시는 시간적으로 가장 일찍 교체되었기 때문이다. 따라서, 상기 FIFO 교체 리스트에 대한 방식이 오래될수록, 상기 FIFO 교체 리스트로부터 상기 캐시 방식이 제거될 가능성이 높아진다.
본 발명은 상기 FIFO 교체 프로세스에 대한 피드백 경로들의 필요성을 회피하여, 따라서, 양방향 방식에서 영역 요건들이 작아진다. 우선, 본 발명은 어떠한 저장 비트도 요구하지 않는다. 둘째, 상기 프로세스는 보다 에너지 효율적인데, 왜냐하면, 모든 캐시 판독을 사용하여 상기 저장 비트를 판독할 필요성이 존재하지 않기 때문이다. 더욱이, 상기 저장 비트 정보의 전달시 큰 버스 배선들을 사용할 필요가 없다.
본 발명에 따라, 요청 검색(lookup)은 캐시 태그 미스를 수신하며, 세트 방식들 중 하나는 교체되어야 한다. 교체를 위해 선택된 상기 캐시 방식은 희생 방식이라 지칭되는데, 왜냐하면, 특정 경우들에서, 상기 희생 방식의 캐시 콘텐츠가 태그-미스 할당을 위한 공간을 만들기 위해 상기 캐시로부터 제거되어야 하기 때문이다. 이러한 경우들은 캐시 내의 콘텐츠들이, 한가지 이유 혹은 또다른 이유로 인해, DSP(40) 주 메모리 내의 콘텐츠와 상이할 때 일어난다. 예를 들어, 라인 내 저장이 발생하는 경우, 상기 콘텐츠는 변경되고, 따라서, 교체에 대한 필요성을 요구할 수 있다.
각 방식이 캐시에서 유지되는 시간을 최대화하기 위해, 상기 희생 방식은 캐시 미스에 후속하는 세트-기반 FIFO 리스팅의 테일(tail)에 배치된다. 상기 교체 FIFO 리스팅의 깊이는 상기 캐시 세트에서의 방식들의 수와 동일하고, 이에 의해, 동일한 방식이 다시 축출되기 전에 미스 할당의 시간 혹은 상주를 최대화한다. 동일한 세트에 대한 후속적인 태그-미스들은 마찬가지로 희생 방식을 생성하고 상기 세트 FIFO의 테일에 배치될 것이다. 각각의 새로운 희생은 상기 교체 FIFO 리스팅 헤드 쪽으로 더 이른 희생들을 밀어낸다(force). 동일한-세트 희생들의 수가 캐시 방식들의 수와 동일한 경우, 희생 방식은 다음 태그-미스에 대해 재사용된다.
본 명세서에 개시된 상기 FIFO 교체 정책의 구현은 두 가지 규칙을 만족시킨 다. 첫째, 상기 구현은 각각의 세트 내 방식들의 수에 기반하여 캐시 상주를 최대화한다. 이는 태그 미스가 할당을 초래하는 경우에만 상기 세트 FIFO 리스팅에 희생 방식을 배치함으로써 달성된다. 미해결된 할당 요청이 더 이른 태그 미스에 대해 이미 존재하는 경우, 현재 태그 미스는 상기 FIFO 리스팅을 업데이트하지 않는다. 임의의 구현에 의해 강제되어야 하는 두번째 규칙은 캐시 코히런시(coherency)에 관련한다.
일 예로, 희생 방식이 상기 FIFO 리스팅 테일에 배치되는 경우, 동일한 방식이 상기 헤드에 도달하여 초기 할당이 완료되기 전에 재사용되는 것이 가능하다. 이러한 위험성(hazard)은 상기 희생 방식 재사용이 정정되지 않는 경우 태그와 데이터 캐시들간의 인코히런시(incoherency)를 야기할 수 있다. 상기 재사용 요청을 중지하거나 재실행하거나 혹은 재사용 방식이 상기 FIFO 리스팅 테일에 배치된 이후 두번째로 상기 FIFO 리스팅 헤드를 판독하는 것을 포함하여, 이러한 위험성에 대한 몇몇 가능한 해법들이 존재한다.
레이턴시가 매우 수용불가한 소프트웨어 어플리케이션들을 사용하는 처리 환경에 있어서, 본 발명은 처리 시간을 감소시키고, 저장 비트 위치들의 트래킹을 회피한다. 이러한 처리 환경들은, 무선 핸드셋 키패드를 누를 때, 스트리밍 비디오 및 데이터 어플리케이션들을 나타내는 환경, 및 즉각적인 톤 피드백, 예를 들어, a.wav 파일 테이블로부터의 데이터의 실행을 나타내는 환경을 포함할 수 있다.
스트리밍 비디오의 또다른 예로, 초당 20+ 이미지 프레임들의 흐름이 무선 핸드셋 스크린을 통해 나타날 수 있다. 상기 이미지 프레임에서, 흐르는 프레임들 의 일부분이 유용한 정보를 포함하는 한편, 상기 프레임의 다른 부분들은 리던던트(redundant) 정보들을 포함한다. 상기 정보가 리던던트한지 혹은 새로운 정보인지의 여부를 결정하기 위한 성능 및 타이밍 고려점들이 처리 자원들의 효율적 사용을 위해 중요할 수 있다.
이러한 소개에서, 두 개의 구현예들이 도 5 및 6에서 설명될 것이다. 이러한 구현예들은 도 5의 IU(42) 프로세스(100) 및 도 6의 DU(68) 프로세스(102)에서의 DSP(40)와 같은 디지털 신호 프로세서에서 사용될 수 있다. 따라서, 우선, IU(42) 프로세스(100)를 고려하면, IU(42)는 태그 룩업을 실행하고(단계 104) 태그-미스가 발생할 수 있다(단계 106). 이러한 경우, 상기 어드레스는 미해결 요청 버퍼(ORB)에 저장된 액티브한 요청들에 비교된다(단계 108). 만약 상기 검색 어드레스가 고유하다면(단계 110), 상기 요청은 1차 미스(PM)로 간주된다(단계 112). 상기 PM 어드레스는 할당을 위해 시스템 메모리로 전송되고(단계 114), 상기 교체 FIFO 리스팅은 희생 방식을 위해 판독된다(단계 116). 만약 희생 방식이 이러한 세트 어드레스에 대해 이미 사용중이고, 상기 어드레스가 이전 요청에 의해 시스템 메모리로 이전에 전송되었다면(단계 118), 상기 요청은 2차 미스(SM)로 간주된다(단계 120). 이러한 경우, 상기 교체 FIFO 리스팅은 판독되지 않으며, 캐시 상주가 최대화된다(단계 122).
질의(110)로부터, YES(예) 경로는 단계 112로 진행하는데, 여기서 상기 요청은 PM 혹은 1차 미스임이 결정된다. 상기 요청이 1차 미스라면, 상기 희생 방식은 단계 114에서의 할당을 위해 FIFO 버퍼에 저장된다. 이후, 단계 116에서, 상기 FIFO 리스팅은 다음 희생 방식을 위해 판독된다. 단계 116에서, 상기 FIFO 리스팅은 다음 희생 방식을 위해 판독된다. 단계 116으로부터, 프로세스 흐름(100)은 단계들(126 및 130) 모두로 진행한다. 단계 126에서, 상기 FIFO 리스팅 헤드는 상기 리스팅 테일에 배치되고, 단계 128에서, 상기 희생 방식은 라스트 방식(last way) 버퍼에 저장된다. 단계 130에서, 프로세스 흐름(100)은 희생 방식 재사용 위험성의 존재를 결정한다. 이는 현재/인입(incoming) 희생 방식을 다른 라스트 방식 버퍼들에 비교하는 단계를 포함한다(단계 132). 상기 희생 방식이 매치하고 세트 어드레스가 매치하는 경우 모두에 대해서는 재사용 위험성이 존재한다. 이는, 캐시 교체 알고리즘이 이미 할당된 캐시 방식을 사용하려고 시도함을 의미한다. 또한, 상기 프로세스(단계 136)는 인입 PM의 세트 어드레스를 다른 스레드 세트 어드레스들과 비교한다. 만약 단계 132에 대한 응답으로 질의 134에서 혹은 단계 136에 대한 응답으로 단계 138에서 히트가 검출되는 경우, 프로세스 흐름은 OR 단계(140)로 계속한다. OR 단계(140)는 상기 현재/인입 스레드가 재실행되는 단계(142)로 입력을 제공한다. 만약 상기 재실행된 스레드가 PM인 경우, 프로세스 흐름(100)은 단계(146)로 계속한다. 그렇지 않은 경우, 프로세스 흐름(100)은 상기 요청이 2차 미스(SM)라고 결정한다(단계 120). 프로세스 흐름(100)은 상기 FIFO 리스팅을 판독하여(단계 146), 새로운 희생 방식이 상기 FIFO 리스팅 헤드로부터 리트리브(retrieve)된다.
따라서, 재사용 위험성이 존재하는 경우, 프로세스 흐름(100)은 현재 스레드를 재실행한다. 다음번 정도에 스레드는 리턴(return)되고 다시 미스될 것이다. 프로세스 흐름(100)은 이후 FIFO가 지시하는 현재 방식이 이미 사용중이라고 결정 할 것이다. 프로세스 흐름(100)이 다시 동일한 방식으로 리턴되는 경우, 재사용 위험성이 존재한다. 상기 프로세스가 상기 FIFO 리스팅으로부터 다시 동일한 방식을 제공하는 경우, 상기 미해결 요청들은 상기 리턴된 방식이 이미 참조되고 있으며, 스레드가 재실행될 것이라고 결정할 것이다. 상기 스레드는 리턴될 것이며 다시 재실행할 것이다. 따라서, 상기 FIFO 리스팅은, 1만큼 증분된 마지막 사이클 내에 자신이 제공했었던 어떤 것이라도 제공한다. 재사용 위험성을 보여주지 않는 희생 방식이 존재할 때까지 동일한 프로세스가 진행된다. 재사용 위험성을 보여주지 않는 상기 제 1 희생 방식은 프로세스 흐름(100)이 사용하는 방식일 것이다.
희생 방식 할당에 대한 결정 이외의 교체 FIFO 리스팅 액세스를 파이프라인화함에 의해, IU(42)는 동일한 클록 내에서 상기 FIFO 리스팅의 헤드로부터 테일로 희생 방식을 즉시 이동시킬 수 있다. 이는 IU(42)로 하여금 재실행들 없이 상기 교체 FIFO 리스팅에서의 백-투-백(back-to-back) 멀티-스레드 액세스들을 지원하는 것을 허용한다.
만약 상기 세트 어드레스 및 희생 방식이 히트하고 이들 모두가 PM 요청들이라면(단계 140), 더 오래되지 않은(younger) 혹은 인입 스레드가 재실행된다(단계 142). 상기 스레드가 재실행되고, 다시 PM인 것으로 결정된다면(단계 144), 상기 교체 FIFO 리스팅이 판독되고(단계 146), 새로운 희생 방식이 상기 헤드로부터 리트리브된다(단계 148).
IU는 간단한 4-비트 카운터로서 상기 교체 FIFO 리스팅을 구현한다. 각각의 PM은 상기 교체 세트-카운터를 판독하고, 상기 세트-카운터를 1만큼 증분시킨다. 상기 세트-카운터는 PM에 대해 항상 증분되고, 상기 위험성을 히트하는 스레드가 재실행되기 전에 상기 재사용 위험성을 제거(clear)한다.
도 6은 DU(68)에 적용되는 것으로서 본 발명의 DU 프로세스(102)에서의 단계들을 상세화한다. DU(68)이 요청 룩업을 실행하는 경우(단계 150), 상기 태그, 상태 및 교체 FIFO 리스팅은 동시에 판독된다(단계 152). 히트 및 상태 벡터들은 1차 혹은 2차 미스를 결정하기 위해 사용된다(단계 154). 상태/FIFO 리스팅 판독 및 상태/FIFO 리스팅 기록 간의 지연이 존재하는 경우, 상기 요청 세트 어드레스는 더 오래되지 않은 스레드들과의 비교를 위해 파이프라인화된다(단계 156). 만약 세트 어드레스 히트가 두 요청들 사이에서 발생한다면(단계 158), 더 오래되지 않은 스레드가 재실행될 것이다(단계 160). 따라서, 태그 미스가 검출되는 경우(단계 162), 즉, 상기 상태가 예비되지 않은 경우, 상기 세트 어드레스는 더 오래된 스레드 세트 어드레스들과 비교되고(단계 164), 상기 더 오래되지 않은/인입 스레드가 재실행되어야 하는지의 여부가 결정된다(단계 166). 그렇지 않은 경우, 상기 FIFO 리스팅은 판독되지 않는다. 상기 희생 방식 재사용 위험성을 검출하기 위해, DU는 상기 희생 방식(즉, 상기 FIFO 리스팅 헤드에서의 방식)을 상기 상태 벡터와 비교한다(단계 168). 만약 상기 희생 방식이 동일한 방식으로 예비된 상태를 히트한다면(단계 170), 이전 요청은 상기 캐시 방식이 예비되도록 취해지고 상기 희생 방식 재사용이 검출된다(단계 170). 그렇지 않은 경우, 상기 FIFO 리스팅이 판독되지 않는다. 만약 상기 세트 어드레스가 고유하고, 어떠한 희생 방식 재사용 위험성도 존재하지 않는다면(단계 174), 상기 요청은 참 PM이고, 할당을 위해 시스템 메모리로 전송된다(단계 176). 그렇지 않은 경우, 상기 FIFO 리스팅은 판독되지 않는다.
본 발명의 실시예에 따라, DU(68)은 상기 교체 FIFO 리스팅을 업데이트하고, 최대 캐시 상주 및 캐시 코히런시를 유지한다. 그러나 다른 구현예는, 위에서 설명된 바와 같은, 상기 교체 FIFO 리스팅에서 백-투-백 멀티-스레드 액세스들을 지원하지 않을 수도 있다. 이는 상태 및 교체 바이패스의 부가가, 정확한 상태 및 FIFO 리스팅 정보가 세트에 라이트 백될 때까지, 이들을 유지하기 위해 서비스되는 경우 발생할 수 있다.
DU(68)은, IU(42)가 하는 것과 마찬가지로, 간단한 4-비트 카운터로서 상기 교체 FIFO 리스팅을 구현한다. 각각의 룩업은 상기 교체 세트-카운터를 판독하고, 이후 상기 요청이 PM인지의 여부를 결정한다. PM의 결정에 후속하여, 상기 교체 카운트는 1씩 증분되고 업데이트된 상태 정보에 따라 상기 세트-카운터로 라이트 백된다. 상기 세트-카운터는 재사용 위험성에 대해 증분될 것이다. 상기 희생 방식 재사용 스레드가 재실행되는 경우, 새로운 카운트가 상기 검색에 대해 리트리브될 것이고, 상기 위험성이 제거될 것이다.
따라서, 본 발명은 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 방법을 제공한다. 본 발명은 상기 캐시 미스에 대해 후속하는 캐시 세트 FIFO 리스팅의 테일(tail)에 희생 방식을 배치함으로써 교체될 캐시 방식으로서 상기 희생 방식을 선택하는 단계를 포함하고, 여기서 상기 FIFO의 깊이는 상기 캐시 세트 내의 방식들의 수와 거의 같다. 다음으로, 상기 프로세스는 상기 캐시 세트에 후속하는 캐시 태그 미스들을 상기 캐시 세트 FIFO 리스팅의 끝에 배치한다. 이후 상기 프로세스는 상기 캐시 세트에 대한 희생 방식들의 수가 상기 캐시 세트 방식들의 수와 동일한 경우 다음 캐시 태그 미스에 대해 희생 방식을 재사용하는 단계를 포함한다. 희생 방식의 재사용은 상기 희생 방식의 초기 할당이 완료될 때까지 방지될 것이다. 이는 상기 캐시 태그 및 캐시 세트 간의 인코히런시를 회피한다. 더욱이, 희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 중지시킴에 의해 상기 희생 방식의 이러한 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지한다. 상기 프로세스는 또한 희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 재실행함에 의해 상기 희생 방식의 이러한 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지한다. 이러한 프로세스, 그리고 실질적으로 이와 유사한 프로세스를 수행함에 의해, 본 발명은 구현 회로와 더불어, 효율적인 캐시 교체 방식을 제공하는데, 상기 방법은 알려진 LRU 및 NRU의 기존의 제한들을 회피한다.
본 명세서에서 설명된 처리 특징들 및 기능들은 다양한 방식들로 구현될 수 있다. 예를 들어, DSP(40)이 전술된 동작들을 수행할 수 있을 뿐 아니라, 본 발명의 실시예들은 또한 주문형 반도체(ASIC), 마이크로제어기, 마이크로프로세서, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 다른 전자 회로들로 구현될 수 있다. 바람직한 실시예들에 대한 전술된 설명은, 따라서, 당업자가 본 발명을 실시할 수 있도록 제공된다. 이들 실시예들에 대한 다양한 수정들이 당업자에게 명백하며, 본 명세서에서 한정된 포괄적인 원리들은 발명의 권한의 사용없이 다른 실시예들에 제공될 수 있다. 따라서, 본 발명은 본 명세서에서 나타난 실시예들에 제한되는 것으로 의도되지 않고, 본 명세서에서 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따른다.

Claims (29)

  1. 캐시 태그 미스(miss)가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 방법으로서,
    디지털 신호 프로세서의 동작시 사용을 위해 캐시 방식들의 FIFO 리스팅에 서 상기 캐시 방식의 위치에 따라 교체될 캐시 방식으로서 희생(victim) 방식을 선택하는 단계;
    상기 FIFO 리스팅의 끝에서 다음 캐시 태그 미스에 대해 희생 방식을 재사용하는 상기 캐시 세트로 후속하는 캐시 태그 미스들을 배치하는 단계;
    희생 방식의 초기 할당이 캐시 태그 및 상기 캐시 세트 사이의 인코히런시(incoherency)를 회피할 때까지 상기 희생 방식의 재사용을 방지하는 단계;
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청에 대한 응답을 중지함으로써, 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하는 단계; 및
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 재실행(replaying)함으로써, 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하는 단계를 포함하는,
    교체하기 위한 방법.
  2. 제1항에 있어서,
    상기 선택하는 단계는 상기 캐시 태그 미스에 후속하는 FIFO 리스팅의 테일(tail)에 희생 방식을 배치함으로써 교체될 캐시 방식으로서 상기 희생 방식을 선택하는 단계를 더 포함하고,
    상기 FIFO 리스팅의 깊이(depth)는 상기 캐시 세트 내의 방식들의 수와 같은,
    교체하기 위한 방법.
  3. 제1항에 있어서,
    디지털 신호 프로세서 데이터 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하는 단계를 더 포함하는,
    교체하기 위한 방법.
  4. 제1항에 있어서,
    디지털 신호 프로세서 명령 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하는 단계를 더 포함하는,
    교체하기 위한 방법.
  5. 제4항에 있어서,
    희생 방식 재사용 위험성이 발생하는 경우,
    상기 FIFO 리스팅에서 현재 인입(incoming) 1차 미스 희생 방식을 다른 방식들과 비교하는 단계;
    인입 1차 미스의 세트 어드레스를 다른 세트 어드레스들과 비교하는 단계; 및
    상기 비교하는 단계들에 응답하여, 재사용 위험성으로부터 벗어난 희생 방식이 발생할 때까지 현재 인입 스레드(thread)를 재실행하는 단계를 더 포함하는,
    교체하기 위한 방법.
  6. 제1항에 있어서,
    상기 FIFO 리스팅의 테일에 가장 최근 사용된 희생 방식을 부가하는 단계를 더 포함하는,
    교체하기 위한 방법.
  7. 제1항에 있어서,
    멀티-스레드 디지털 신호 프로세서에서 상기 희생 방식을 교체하는 단계를 더 포함하는,
    교체하기 위한 방법.
  8. 제1항에 있어서,
    사용된 희생 방식들을 기록하기 위한 저장 비트의 사용을 요청함이 없이 캐시 세트의 복수의 캐시 세트 방식들 중 하나의 교체를 수행하는 단계를 더 포함하는,
    교체하기 위한 방법.
  9. 제1항에 있어서,
    캐시 방식 미스가 발생하는 경우 상기 FIFO 리스팅을 증분시키기만 하는 단계를 더 포함하는,
    교체하기 위한 방법.
  10. 디지털 신호 프로세서와 연관된 동작을 위한 캐시 방식 교체 회로 ― 상기 캐시 방식 교체 회로는 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 것임 ― 로서,
    디지털 신호 프로세서의 동작시 사용을 위해 캐시 방식들의 FIFO 리스팅에 서 상기 캐시 방식의 위치에 따라 교체될 캐시 방식으로서 희생(victim) 방식을 선택하기 위한 희생 방식 선택 회로;
    상기 FIFO 리스팅의 끝에서 다음 캐시 태그 미스에 대해 희생 방식을 재사용하는 상기 캐시 세트로 후속하는 캐시 태그 미스들을 배치하기 위한 FIFO 리스팅 상주(populating) 회로; 및
    희생 방식의 초기 할당이 캐시 태그 및 상기 캐시 세트 사이의 인코히런시(incoherency)를 회피할 때까지 상기 희생 방식의 재사용을 방지하기 위한 캐시 방식 재사용 위험성 검출 회로를 포함하며,
    상기 캐시 방식 재사용 위험성 검출 회로는 추가적으로 희생 방식의 초기 할당이 완료될 때까지 재사용 요청에 대한 응답을 중지함으로써 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하고, 희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 재실행(replaying)함으로써 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하기 위한 것인,
    캐시 방식 교체 회로.
  11. 제10항에 있어서,
    상기 캐시 태그 미스에 후속하는 FIFO 리스팅의 테일(tail)에 희생 방식을 배치함으로써 교체될 캐시 방식으로서 상기 희생 방식을 선택하기 위한 희생 방식 선택 회로를 더 포함하고,
    상기 FIFO 리스팅의 깊이는 상기 캐시 세트 내의 방식들의 수와 같은,
    캐시 방식 교체 회로.
  12. 제10항에 있어서,
    디지털 신호 프로세서 데이터 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 데이터 유닛 회로를 더 포함하는,
    캐시 방식 교체 회로.
  13. 제10항에 있어서,
    디지털 신호 프로세서 명령 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 명령 유닛 회로를 더 포함하는,
    캐시 방식 교체 회로.
  14. 제10항에 있어서,
    상기 FIFO 리스팅에서 현재 인입 1차 미스 희생 방식을 다른 방식들과 비교하고, 인입 1차 미스의 세트 어드레스를 다른 세트 어드레스들과 비교하기 위한 비교 회로; 및
    재사용 위험성으로부터 벗어난 희생 방식이 발생할 때까지 상기 비교에 응답하여 현재 인입 스레드를 재실행하기 위한 캐시 방식 재실행 회로를 더 포함하는,
    캐시 방식 교체 회로.
  15. 제10항에 있어서,
    상기 FIFO 리스팅의 테일에 가장 최근 사용된 희생 방식을 부가하기 위한 FIFO 리스팅 회로를 더 포함하는,
    캐시 방식 교체 회로.
  16. 제10항에 있어서,
    멀티-스레드 디지털 신호 프로세서에서 상기 희생 방식을 교체하는 멀티-스레드 디지털 신호 처리 회로를 더 포함하는,
    캐시 방식 교체 회로.
  17. 제10항에 있어서,
    사용된 희생 방식들을 기록하기 위한 저장 비트의 사용을 요청함이 없이 캐시 세트의 복수의 캐시 세트 방식들 중 하나의 교체의 수행을 허용하는 교체 회로를 더 포함하는,
    캐시 방식 교체 회로.
  18. 제10항에 있어서,
    캐시 방식 미스가 발생하는 경우 상기 FIFO 리스팅을 증분시키기만 하기 위한 증분 회로를 더 포함하는,
    캐시 방식 교체 회로.
  19. 캐시 태그 미스(miss)가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 수단을 포함하는 디지털 신호 프로세서로서,
    상기 디지털 신호 프로세서의 동작시 사용을 위해 캐시 방식들의 FIFO 리스팅에서 상기 캐시 방식의 위치에 따라 교체될 캐시 방식으로서 희생(victim) 방식을 선택하기 위한 수단;
    상기 FIFO 리스팅의 끝에서 다음 캐시 태그 미스에 대해 희생 방식을 재사용하는 상기 캐시 세트로 후속하는 캐시 태그 미스들을 배치하기 위한 수단;
    희생 방식의 초기 할당이 캐시 태그 및 상기 캐시 세트 사이의 인코히런시(incoherency)을 회피할 때까지 상기 희생 방식의 재사용을 방지하기 위한 수단;
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청에 대한 응답을 중지함으로써, 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하기 위한 수단; 및
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 재실행(replaying)함으로써, 상기 희생 방식의 상기 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하기 위한 수단을 포함하는,
    디지털 신호 프로세서.
  20. 제19항에 있어서,
    상기 캐시 태그 미스에 후속하는 FIFO 리스팅의 테일(tail)에 희생 방식을 배치함으로써 교체될 캐시 방식으로서 상기 희생 방식을 선택하기 위한 수단을 더 포함하고,
    상기 FIFO 리스팅의 깊이는 상기 캐시 세트 내의 방식들의 수와 같은,
    디지털 신호 프로세서.
  21. 제19항에 있어서,
    디지털 신호 프로세서 데이터 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  22. 제19항에 있어서,
    디지털 신호 프로세서 명령 유닛 명령들의 실행과 연관하여 캐시 태그 미스가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  23. 제22항에 있어서,
    상기 FIFO 리스팅에서 현재 인입 1차 미스 희생 방식을 다른 방식들과 비교하기 위한 수단;
    인입 1차 미스의 세트 어드레스를 다른 세트 어드레스들과 비교하기 위한 수단; 및
    재사용 위험성으로부터 벗어난 희생 방식이 발생할 때까지 상기 비교에 응답하여 현재 인입 스레드를 재실행하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  24. 제19항에 있어서,
    상기 FIFO 리스팅의 테일에 가장 최근 사용된 희생 방식을 부가하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  25. 제19항에 있어서,
    멀티-스레드 디지털 신호 프로세서에서 상기 희생 방식을 교체하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  26. 제19항에 있어서,
    사용된 희생 방식들을 기록하기 위한 저장 비트의 사용을 요청함이 없이 캐시 세트의 복수의 캐시 세트 방식들 중 하나의 교체를 수행하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  27. 제19항에 있어서,
    캐시 방식 미스가 발생하는 경우 상기 FIFO 리스팅을 증분시키기만 하기 위한 수단을 더 포함하는,
    디지털 신호 프로세서.
  28. 캐시 태그 미스(miss)가 발생하는 경우 캐시 세트의 복수의 세트 방식들 중 하나를 교체하기 위해 디지털 신호 프로세서에서 명령들을 처리하기 위해 구현되는 컴퓨터 판독가능한 프로그램 코드를 포함하는 컴퓨터 판독가능한 기록 매체로서,
    상기 디지털 신호 프로세서의 동작시 사용을 위해 캐시 방식들의 FIFO 리스팅에서 상기 캐시 방식의 위치에 따라 교체될 캐시 방식으로서 희생(victim) 방식을 선택하기 위한 컴퓨터 판독가능한 프로그램 코드;
    상기 FIFO 리스팅의 끝에서 다음 캐시 태그 미스에 대해 희생 방식을 재사용하는 상기 캐시 세트로 후속하는 캐시 태그 미스들을 배치하기 위한 컴퓨터 판독가능한 프로그램 코드;
    희생 방식의 초기 할당이 캐시 태그 및 상기 캐시 세트 사이의 인코히런시(incoherency)을 회피할 때까지 상기 희생 방식의 재사용을 방지하기 위한 컴퓨터 판독가능한 프로그램 코드;
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청에 대한 응답을 중지함으로써, 상기 희생 방식의 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하기 위한 컴퓨터 판독가능한 프로그램 코드; 및
    희생 방식의 초기 할당이 완료될 때까지 재사용 요청을 재실행(replaying)함으로써, 상기 희생 방식의 초기 할당이 완료될 때까지 상기 희생 방식의 재사용을 방지하기 위한 컴퓨터 판독가능한 프로그램 코드를 포함하는,
    컴퓨터 판독가능한 기록 매체.
  29. 제28항에 있어서,
    상기 캐시 태그 미스에 후속하는 FIFO 리스팅의 테일(tail)에 희생 방식을 배치함으로써, 교체될 캐시 방식으로서 상기 희생 방식을 선택하기 위한 컴퓨터 판독가능한 프로그램 코드를 더 포함하고,
    상기 FIFO 리스팅의 깊이는 상기 캐시 세트 내의 방식들의 수와 같은,
    컴퓨터 판독가능한 기록 매체.
KR1020087030621A 2006-05-17 2007-05-17 캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템 KR101041647B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/437,501 2006-05-17
US11/437,501 US7673102B2 (en) 2006-05-17 2006-05-17 Method and system for maximum residency replacement of cache memory

Publications (2)

Publication Number Publication Date
KR20090025243A KR20090025243A (ko) 2009-03-10
KR101041647B1 true KR101041647B1 (ko) 2011-06-14

Family

ID=38659396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087030621A KR101041647B1 (ko) 2006-05-17 2007-05-17 캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템

Country Status (6)

Country Link
US (2) US7673102B2 (ko)
EP (1) EP2035937A2 (ko)
JP (2) JP5080564B2 (ko)
KR (1) KR101041647B1 (ko)
CN (1) CN101443740B (ko)
WO (1) WO2007137141A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600098B1 (en) * 2006-09-29 2009-10-06 Sun Microsystems, Inc. Method and system for efficient implementation of very large store buffer
US7975107B2 (en) * 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US20110238925A1 (en) * 2008-10-02 2011-09-29 Dan Robinson Cache controller and method of operation
US8249099B2 (en) * 2009-08-27 2012-08-21 Texas Instruments Incorporated External memory data management with data regrouping and channel look ahead
US8495299B2 (en) * 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
US8849345B2 (en) * 2011-09-29 2014-09-30 Samsung Electro-Mechanics Co., Ltd. Apparatus and method for super high-speed wireless communications
CN102521162B (zh) * 2011-11-30 2014-12-31 华为技术有限公司 用于缓存数据处理的方法和装置
EP2799997B1 (en) 2011-12-26 2020-01-22 Renesas Electronics Corporation Data processing device
US8806139B2 (en) * 2012-01-20 2014-08-12 International Business Machines Corporation Cache set replacement order based on temporal set recording
US9720847B2 (en) 2013-07-17 2017-08-01 Nxp Usa, Inc. Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
US9418019B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Cache replacement policy methods and systems
US10691463B2 (en) 2015-07-30 2020-06-23 Futurewei Technologies, Inc. System and method for variable lane architecture
US10223278B2 (en) * 2016-04-08 2019-03-05 Qualcomm Incorporated Selective bypassing of allocation in a cache
CN106383792B (zh) * 2016-09-20 2019-07-12 北京工业大学 一种基于缺失感知的异构多核缓存替换方法
CN109669881B (zh) * 2018-12-11 2023-04-14 中国航空工业集团公司西安航空计算技术研究所 一种基于Cache空间预约算法的计算方法
US11983538B2 (en) * 2022-04-18 2024-05-14 Cadence Design Systems, Inc. Load-store unit dual tags and replays

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU523670B2 (en) 1977-12-08 1982-08-12 Honeywell Information Systems Incorp. Cache memory location selection mechanism
US4901307A (en) * 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
US5103459B1 (en) * 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
JPH0683712A (ja) * 1992-09-03 1994-03-25 Nec Ic Microcomput Syst Ltd マイクロプロセッサ
JPH06149673A (ja) * 1992-11-12 1994-05-31 Kubota Corp キャッシュ制御方式
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6694408B1 (en) * 2000-05-01 2004-02-17 Javier Villagomez Scalable replacement method and system in a cache memory
US6772288B1 (en) * 2000-09-06 2004-08-03 Stmicroelectronics, Inc. Extended cache memory system and method for caching data including changing a state field value in an extent record
WO2002099652A1 (en) * 2001-06-06 2002-12-12 Sun Microsystems, Inc. Method and apparatus for facilitating flow control during accesses to cache memory
US6892285B1 (en) * 2002-04-30 2005-05-10 Cisco Technology, Inc. System and method for operating a packet buffer
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7237067B2 (en) * 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
JP2006119796A (ja) * 2004-10-20 2006-05-11 Matsushita Electric Ind Co Ltd キャッシュメモリシステムおよび動画処理装置

Also Published As

Publication number Publication date
US7673102B2 (en) 2010-03-02
KR20090025243A (ko) 2009-03-10
EP2035937A2 (en) 2009-03-18
US20070271416A1 (en) 2007-11-22
US20070271417A1 (en) 2007-11-22
JP5259866B2 (ja) 2013-08-07
JP5080564B2 (ja) 2012-11-21
JP2013030173A (ja) 2013-02-07
CN101443740B (zh) 2012-12-05
US7584326B2 (en) 2009-09-01
WO2007137141A3 (en) 2008-02-28
CN101443740A (zh) 2009-05-27
WO2007137141A2 (en) 2007-11-29
JP2009537912A (ja) 2009-10-29

Similar Documents

Publication Publication Date Title
KR101041647B1 (ko) 캐시 메모리의 최대 상주 교체를 위한 방법 및 시스템
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
US6523109B1 (en) Store queue multimatch detection
US8321634B2 (en) System and method for performing memory operations in a computing system
US7774522B2 (en) Cache stashing processor control messages
US20040139305A1 (en) Hardware-enabled instruction tracing
US20050160229A1 (en) Method and apparatus for preloading translation buffers
US6990558B2 (en) Microprocessor, apparatus and method for selective prefetch retire
KR20120024974A (ko) 스레드 이송 시의 캐시 프리필링
KR20080072852A (ko) 스케일링가능하고 프로그램가능한 순환 버퍼에 대한 포인터계산 방법 및 시스템
US6976148B2 (en) Acceleration of input/output (I/O) communication through improved address translation
JP2003519832A (ja) アントレーニングを備えるストア−ロード転送プレディクタ
GB2532545A (en) Processors and methods for cache sparing stores
US20080307169A1 (en) Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US9727483B2 (en) Tracking memory accesses when invalidating effective address to real address translations
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
US7783842B2 (en) Cache coherent I/O communication
US20030182539A1 (en) Storing execution results of mispredicted paths in a superscalar computer processor
US6694417B1 (en) Write pipeline and method of data transfer that sequentially accumulate a plurality of data granules for transfer in association with a single address
CN117940909A (zh) 基于处理器的设备中的追踪存储器块存取频率
US11500779B1 (en) Vector prefetching for computing systems
US8429383B2 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
US11379379B1 (en) Differential cache block sizing for computing systems
CN114661627A (zh) 单次再使用处理器缓存策略

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20140529

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 8