KR20090095633A - 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치 - Google Patents

낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20090095633A
KR20090095633A KR1020097013847A KR20097013847A KR20090095633A KR 20090095633 A KR20090095633 A KR 20090095633A KR 1020097013847 A KR1020097013847 A KR 1020097013847A KR 20097013847 A KR20097013847 A KR 20097013847A KR 20090095633 A KR20090095633 A KR 20090095633A
Authority
KR
South Korea
Prior art keywords
address
patch
instruction cache
prefetch
line
Prior art date
Application number
KR1020097013847A
Other languages
English (en)
Other versions
KR101095204B1 (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 KR20090095633A publication Critical patent/KR20090095633A/ko
Application granted granted Critical
Publication of KR101095204B1 publication Critical patent/KR101095204B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

명령 캐시에서 누락들이 발생할 때, 프리패칭 기술들은 누락률, 메모리 액세스 대역폭, 및 사용 전력을 최소화시키는데 이용된다. 프리패칭 기술들 중 하나는 누락이 발생될 때 동작한다. 패치 어드레스가 명령 캐시에서 누락되었다는 통지가 수신된다. 누락을 야기시키는 패치 어드레스는 패치 어드레스의 소성을 결정하도록 분석되고, 상기 속성에 기초하여 명령들의 라인이 프리패치된다. 속성은 패치 어드레스가 비순차적 동작의 타겟 어드레스임을 표시할 수 있다. 또 다른 속성은 패치 어드레스가 비순차적 동작의 타겟 어드레스이고 타겟 어드레스가 캐시 라인에서 X% 이상임을 표시할 수 있다. 또 다른 속성은 패치 어드레스가 명령 캐시의 짝수 어드레스임을 표시할 수 있다. 이러한 속성들은 프리패치에 대한 여불르 결정하도록 조합될 수 있다.

Description

낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치{METHODS AND APPARATUS FOR LOW-COMPLEXITY INSTRUCTION PREFETCH SYSTEM}
일반적으로, 본 발명은 명령 캐시들(instruction caches)의 분야, 특히 명령 캐시에서의 누락(miss)을 프리패치하는(prefetching) 명령에 관한 것이다.
휴대전화들(cell phones), 랩톱 컴퓨터들, 개인용 데이터 단말기들(PDAs) 등과 같은 다수의 휴대용 물건들은 이를 테면 통신 및 멀티미디어 프로그램들과 같은 프로그램을 실행하는 프로세서를 이용한다. 이러한 물건들을 위한 프로세싱 시스템은 명령들과 데이터를 저장하는 프로세서 및 메모리 콤플렉스(processor and memory complex)를 포함한다. 공통적으로 큰 용량의 메인 메모리(main memory)는 프로세서 사이클 시간에 비해 느린 액세스 시간들을 갖는다. 결과적으로, 메모리 콤플렉스는 통상적으로 캐시 메모리들의 용량 및 성능에 기초한 계층(hierarchy)으로 체계화되며, 최고 성능 및 최저 용량 캐시는 프로세서에 가깝게 위치된다. 예를 들어, 일반적으로 레벨 1 명령 캐시 및 레벨 1 데이터 캐시는 프로세서에 직접 부착되는 반면, 레벨 2 통합(unified) 캐시는 레벨 1(L1) 명령 및 데이터 캐시들에 연결된다. 또한, 시스템 메모리는 레벨 2(L2) 통합(unified) 캐시에 연결된다. 레벨 1 명령 캐시는 보편적으로 프로세서 속도로 동작하며 레벨 2 통합 캐시는 레 벨 1 캐시보다 느리게 동작하나, 시스템 메모리보다는 빠른 액세스 시간을 갖는다. 대안적 메모리 체계들(organizations) 예를 들어, L1 및 L2 캐시 이외에 레벨 3 캐시를 갖는 메모리 계층들은 많다. 다른 메모리 체계는 레벨 1 캐시 및 시스템 메모리만을 사용할 수 있다.
명령 캐시들에 대해 메모리 계층(hierarchy)이 사용될 수 있는 이유에 잠재디어 있는 원리들중 하나는 명령들이 메모리에서 순차적 위치들(sequential locations)로부터 액세스되는 경향이 있다는 것이다. 가장 최근에 코드 선택에 이용된 캐시들을 유지함으로써, 프로세서들은 높은(higher) 성능 레벨로 실행될 수 있다. 또한, 프로그램들은 분기(branch), 호출(call) 및 복귀(return) 타입 명령들을 포함하며 인터럽트들(interrupts)과 같은 다른 비순차적인 동작들을 지원하기 때문에, 순차적 지역성(sequential locality)의 원리는 비교적 짧은 코드 선택에 대해서만 유지될 수 있다. 이러한 비차적 동작들로 인해, 명령 캐시에 대한 명령 패치(fetch)가 누락될 수 있어(miss), 명령 패치가 높은 메모리 용량 및 느린 액세스 시간으로 동작하는 다음의 높은 메모리 레벨에 인가된다. 누락(miss)은 프로세서가 명령을 대기하게 할 수 있다. 높은 프로세서 성능을 유지하기 위해서, 캐시 누락률(miss rate)은 낮아야 한다.
일반적으로 명령 캐시는 명령 캐시의 단일 어드레스에 위치된 다수의 명령들로 구성된다. 일반적으로, 이러한 다수의 명령들은 캐시 라인 또는 간단히 라인으로 칭한다. 누락은 캐시 라인의 어딘가에서 명령 액세스를 발생시킬 수 있다. 누락이 발생될 때, 요구되는 명령을 단순히 패칭하기(fetching)하기 보다는, 누락된 명령으로부터 캐시 라인의 단부(end)로 나머지(rest) 캐시 라인이 패칭될 수 있다. 일부 시스템들에서, 이러한 프리패칭(prefetching) 기술은 누락에 대해 나머지 캐시 및 다음 캐시 라인을 항상 프리패치하도록 추가로 연장된다. 다음 캐시 라인을 항상 프리패칭하는 이러한 종래의 기술은 다음 캐시 라인이 단기간(shortly) 요구될 수 있는 명령들을 보유한다는 가정을 기초로한다. 다음 캐시 라인에서 명령들의 사용에 대한 이러한 가정은 예를 들어, 조건 분기(conditional branch)가 라인에서 대항되고(encountered) 상기 조건으로 인해 분기가 다음 순차적 명령을 누락하게 되더라도 유효하다. 다음 캐시 라인을 항상 프리패칭함으로써, 누락들이 감소될 수 있다.
프로그램에서 일부 포인트에서의 코스 결함들(course fails) 및 누락들의 명령들의 순차적 액세스의 국소성 원리(locality principle)는 분기들, 호출들 및 복귀들 등에 의해 야기되는 비순차적 동작들로 인해 발생된다. 또한, 예를 들어, 캐시 라인의 단부에서 명령이 패치되고, 다음 순차적 명령 캐시 라인에 상주하는 다음 순차적 명령이 캐시에 상주하지 않을 때, 순차적 액세스로 인한 누락이 발생될 수 있다. 예를 들어, 분기 명령(branch instruction)이 대항되고 상기 분기가 프로그램 어드레스를 새로운 위치로 변경시키고 새로운 위치에서의 명령이 캐시에 상주하지 않을 때, 비순차적 액세스로 인한 누락이 발생될 수 있다. 다음 캐시 라인을 항상 프리패칭하는 종래의 기술은 사용되지 않을 수 있는 명령들을 패치하고 결과적으로, 불필요한 메모리 액세스 대역폭 손실, 증가된 전력 사용, 및 프로세서 성능 저하가 야기된다.
본 발명은, 누락들(misses)이 발생할 때, 누락률, 메모리 액세스 대역폭 및 사용 전력을 감소시키는 프리패칭 기술들에 대한 필요성이 존재한다는 것을 인식했다. 본 발명의 일 실시예는 명령 프리패치(instruction prefetch)를 위한 방법을 제공한다. 누락이 발생할 때, 명령 캐시에서 패치 어드레스가 누락되었다는 통지(notification)가 수신된다. 누락이 야기되는 패치 어드레스의 속성(attribute)이 결정되며, 상기 속성에 기초하여 명령들의 라인이 프리패치된다.
본 발명의 또 다른 실시예는 명령 캐시 및 프리패치 시스템에 관한 것이다. 명령 캐시는 패치(fetch) 어드레스가 누락되었다는 통지(notification)를 생성하도록 구성된다. 프리패치 결정 로직은 누락을 야기시키는 패치 어드레스의 속성을 결정하도록 구성되며 프리패치 로직은 상기 속성에 기초하여 명령들의 라인을 프리패치하도록 구성된다.
본 발명의 또 다른 실시예는 메모리 시스템에 관한 것이다. 메모리 시스템은 패치 어드레스가 누락되었다는 통지를 발생시키도록 구성된 명령 캐시를 사용한다. 프리패치 결정 로직은 누락을 야기시키는 패치 어드레스의 속성을 결정하고 상기 속성과 누락된 패치 어드레스에 기초하여 누락 정보(miss information)를 발생시키도록 구성된다. 시스템 메모리 계층은 누락된 패치 어드레스와 연관된 명령들을 갖는 누락 정보에 응답하도록 구성된다.
본 발명의 다른 실시예들은 하기의 상세한 설명을 통해 당업자들이 쉽게 인식할 수 있을 것이라는 것이 이해될 것이며, 본 발명의 다양한 실시예들은 예로써 도시되고 개시된다. 본 발명의 범주를 벗어나지 않는 한, 본 발명은 다른 실시예 및 상이한 실시예들을 이용할 수 있으며 이들의 몇 가지 사항들은 다양한 다른 사항들에서의 변형을 가능케한다는 것이 인식될 것이다. 따라서, 도면들 및 상세한 설명은 제한되지 않지 않는 예로 참조된다.
도 1은 무선 통신 시스템을 나타낸다.
도 2는 명령 캐시 라인의 프리패칭이 메모리 유효 동작들(efficient operation)에 대한 휴리스틱스(heuristics)을 기초로 조절될 수 있는 프로세스 및 메모리 컴플렉스의 기능블록도이다.
도 3은 낮은 복잡도 프리패치 프로세스를 나타내는 흐름도이다.
첨부된 도면들과 관련하여 하기 개시되는 상세한 설명은 본 발명의 다양한 예시적 실시예들에 대한 설명으로 본 발명이 실행될 수 있는 실시예들만을 나타내도록 의도된 것이 아니다. 상세한 설명은 본 발명의 전반적 이해를 돕기 위해 특정된 사항들이다. 그러나, 당업자들은 본 발명이 이러한 특정 사항들 없이도 실행될 수 있다는 것을 인식할 것이다. 소정의 경우, 공지된 구조들 및 콤포넌트들은 본 발명의 개념들의 혼란을 방지하기 위해 블록도 형태로 도시된다.
도 1은 본 발명의 실시예가 바람직하게 사용될 수 있는 예시적인 무선 통신 시스템(100)을 나타낸다. 예시를 위해, 도 1은 3개의 원격 유니트들(120, 130, 150) 및 2개의 기지국들(140)을 나타낸다. 통상적인 무선 통신 시스템들이 보다 많은 수의 원격 유니트들 및 기지국들을 포함할 수 있다는 것이 인식될 것이다. 원격 유니트들(120, 130, 150)은 하드웨어 콤포넌트들, 소프트웨어 콤포넌트들, 또는 각각이, 하기에 개시되는 것처럼 본 발명을 구현하도록 조작되는 콤포넌트들(125A, 125C, 및 125B)로 표시된 것처럼 하드웨어 콤포넌트들 및 소프트웨어 콤포넌트들 모두를 포함한다. 도 1은 기지국들(140)로부터 원격 유니트들(120, 130, 150)로의 순방향 링크 신호들(180) 및 원격 유니트들(120, 130, 150)로부터 기지국들(140)로의 역방향 링크 신호들(190)을 나타낸다.
도 1에서, 원격 유니트(120)는 모바일 폰으로 도시되며, 원격 유니트(130)는 휴대용 컴퓨터로 도시되며, 원격 유니트(150)는 WLL(wireless local loop) 시스템에서 고정된 위치결정(location) 원격 유니트로 도시된다. 예를 들어, 원격 유니트들은 대안적으로, 셀 폰들, 페이저들, 워키토키들, 휴대용 개인용 통신 시스템들(PCS) 유니트들, 개인 휴대 단말기들과 같은 휴대용 데이터 유니트들, 또는 검침(meter reading) 장비와 같이 고정된 위치결정 데이터 유니트일 수 있다. 도 1은 본 발명의 설명들에 따른 예시적인 원격 유니트들을 나타냈지만, 본 발명은 이러한 예시적으로 도시된 유니트들로 제한되지 않는다. 본 발명은 시스템 메모리 및 명령 캐시를 갖는 프로세서를 포함하는 임의의 디바이스에서 적절히 사용될 수 있다.
도 2는 명령 캐시 라인의 프리패칭이 메모리 유효 동작들에 대한 휴리스틱스(heuristics)를 기초로 조절될 수 있는 프로세서 및 메모리 콤플렉스(200)의 기능 블록도이다. 프로세서 및 메모리 콤플렉스(200)는 프로세서(202), Ll Icache 라인 어레이(204) 및 Ll Icache 제어 유니트(206)를 포함하는 다이렉트 맵핑 레벨 1(L1) 명령 캐시(Icache)(203), 및 시스템 메모리 계층(208)을 포함한다. Ll Icache 제어 유니트(206)는 세트 연관 캐시(set associative cache)와 같이 다양한 캐시들의 형태들로 이용될 수 있지만, 명령 태그 매칭을 위한 명령 콘텐츠 어드레스가능 메모리 및 프리패치 로직을 포함할 수 있다. 프로세서 컴플렉스에 접속될 수 있는 주변 디바이스들은 설명의 명확성을 위해 도시되지 않는다. 프로세서 및 메모리 컴플렉스(200)는 L1 Icache(203) 및 시스템 메모리 계층(208)에 저장된 프로그램 코드를 실행하도록 콤포넌트들(125A-C)에서 적절히 사용될 수 있다.
Ll Icache 라인 어레이(204)는 캐시 라인들(210, 211)과 같은 다수의 라인들을 포함할 수 있다. 각각의 라인은 각각 다수의 명령들(I0, I1, ...I7)(212-219)로 구성된다. 각각의 라인에는 태그(220) 및 유효 비트와 같은 라인 상태(LS)(221)과 연관된다. 캐시 라인들(210, 211)은 각각 라인 어드레스들(222, 223)에서 Ll Icache 라인 어레이(204)에 상주한다. Ll Icache 제어 유니트(206)는 캐시 라인들을 어드세스하기 위해 IA 인터페이스(225)를 통해 수신된 명령 어드레스(IA)(224)에 응답하는 어드레스 제어 로직을 포함한다. IA(224)는 태그(226), 라인 어드레스(228), 명령 "I" 필드(232), 및 바이트 "B" 필드(234)로 구성될 수 있다. 라인 어드레스(228)는 "라인+" 필드(229) 및 짝수(even) "E" 비트(230)로 구성된다.
프로세서 및 메모리 콤플렉스(200)에서의 명령을 패치하기 위해, 프로세서(202)는 패치되는 원하는 명령의 명령 어드레스(IA)(224)를 발생시키고 Ll Icache 제어 유니트(205)로 패치 어드레스를 전송한다. 수신된 IA(224)에 기초하여, Ll Icache 제어 유니트(206)는 명령이 Ll Icache 라인 어레이(204)에 존재하는지를 식별하기 위해 검사된다. 예를 들어, IA(224)에 의해 선택된 것처럼 라인(210)에서 매칭 태그(236)에 대해 검사하는 비교 로직의 사용을 통해 이러한 검사가 완성된다. 또한, 유효 비트(238)와 같은, 라인 상태 비트들(LS)(221)을 검증함으로써, 라인이 유효 명령들을 포함하고 있는지에 대한 결정이 이루어진다. 명령이 존재할 때, 매치(match) 또는 히트(hit)가 발생되고 Ll Icache 제어 유니트(206)는 명령이 Ll Icache(203)에 존재한다는 것을 표시한다. 명령이 존재하지 않는다면, 매치 또는 누락들이 없다는 것으로 발견되며 Ll Icache 제어 유니트(206)는 Ll Icache(203)에 명령이 존재하지 않는다는 누락 표시를 제공한다.
명령이 존재한다면, 명령 패치 어드레스에서 명령은 Ll Icache 라인 어레이(204)로부터 선택된다. 그리고 나서, 명령은 명령 출력 버스(240)를 통해 프로세서(202)로 전송된다.
명령이 명령 캐시에 존재하지 않는다면, 누락이 발생했다는 것을 표시하는 누락 신호 경로(242)를 통해 시스템 메모리 계층(208)에 누락 정보가 제공된다. 레벨 1 Icache(203)에서 누락이 검출될 때, 프로세서 및 메모리 컴플렉스(200)는 원하는 명령의 패치를 시도하며, 하기에 설명되는 것처럼 시스템 메모리의 보다 높은 레벨로부터 추가의 명령들을 프리패치할 수 있다. 예를 들어, 명령들이 시스템 메모리 계층(208)에 위치된 레벨 2(L2) 통합 캐시로부터 프리패치될 수 있다. 누락으로 인한 원하는 명령 및 임의의 프리패치된 명령들은 시스템 메모리 계층(208) 으로부터 메모리 데이터 버스 인터페이스(244) 상에 제공된다.
누락이 발생할 때, 누락을 야기시키는 패치 어드레스와 연관된 하나 이상의 속성들이 결정될 수 있다. 예를 들어, 패치 어드레스는 순차적 액세스 또는 비순차적 액세스중 하나를 타겟으로 분류될 수 있다. 패치 어드레스는 예를 들어 어드레스가 캐시 라인의 X% 이상인지 여부에 따라 추가로 분류될 수 있다. 또한, 패치 어드레스는 패치 어드레스가 명령 캐시에서 짝수 어드레스(even address)인지 여부에 기초하여 분류될 수 있다. 이러한 분류들 및 다른 분류들은 프리패치되는 시기를 지적으로(intelligently) 결정하기 위해 휴리스틱스(heuristics) 형태로 조합될 수 있는 속성들을 정의한다. 지적인 프리패칭에 의해, 전력이 보존되고, 메모리 대역폭이 개선되며, 누락률이 감소되고, 일반적인 프로세서 및 시스템 성능이 개선될 수 있다.
누락을 야기시키는 패치 어드레스와 연관된 속성들은 패치 어드레스로부터 동적으로 결정될 수 있다. 예를 들어, 패치 어드레스를 모니터링함으로써, 순차적 패치 어드레스 또는 비순차적 패치 어드레스가 결정될 수 있다. 패치 어드레스 및 캐시 라인 길이에 기초하여, 캐시 라인에서의 어드레스 위치가 동적으로 결정될 수 있다. 예를 들어, 이러한 속성들은 결정된 위치의 비교가 X% 임계치 값과 동일하거나 또는 이를 초과하는 시기와 관련된다. 또한, 패치 어드레스 및 캐시 라인 길이에 기초하여, 패치 어드레스에서의 비트는 액세스가 짝수 캐시 라인에 대한 것인지 또는 홀수 캐시 라인에 대한 것인지 여부를 결정하는데 이용될 수 있다. 이러한 속성들은 하기에서 보다 상세히 설명된다.
일 실시예에서, 명령 캐시에서의 누락시, 하나 이상의 누락 속성들이 관련될 경우, 메모리 계층의 다음 레벨로부터 다음 연속하는 캐시 라인이 프리패치된다. 하나 이상의 누락 속성들이 관련되지 않는 경우, 다음 연속하는 캐시 라인은 프리패치되지 않는다. 일반적으로, 연속하지 않는 캐시 라인은 프리패치될 수 있다는 것이 주목된다. 프리패치를 위한 캐시 라인의 결정은 누락 속성들, 프로그램 속성들, 또는 이러한 속성들의 조합에 기초할 수 있다. 예를 들어, 분기 히스토리 테이블 또는 분기 예측 로직으로부터의 정보는 명령들의 연속 라인 또는 명령들의 비연속 라인의 프리패치 여부를 결정하기 위해 이용될 수 이는 프로그램의 실행 흐름의 속성들을 제공하는데 이용될 수 있다.
또 다른 실시예에서, 명령 캐시에서의 누락이 명령 캐시에 존재하지 않는 명령의 어드레스에 대한, 이를 테면, 분기(branch), 서브-루틴 호출 또는 이와 유사한 것과 같은 비순차적 누락으로 인한 것인 경우, 메모리 계층의 다음 레벨로부터의 명령들의 라인이 프리패치된다. 명령 캐시에서의 누락이 명령 캐시에 존재하지 않는 명령에 대한 순차적 어드레스와 같은 순차적 누락으로 인한 것인 경우, 프리패치 동작은 수행되지 않는다. 또한, 프리패치 동작의 어드레스가 명령들의 연속적 또는 비연속적 라인에 대한 것일 수 있다는 것이 주목된다.
또 다른 실시예에서, 명령 캐시에서의 누락이 짝수인 명령 캐시의 어드레스에서 발생할 경우, 메모리 계층의 다음 레벨로부터 명령들의 라인이 프리패치된다. 명령 캐시에서의 누락이 홀수인 명령 캐시의 어드레스에서 발생할 경우, 프리패치는 수행되지 않는다.
또 다른 실시예에서, 명령 캐시에서의 누락이 캐시 라인의 X% 이상인 어드레스에서의 비순차적 누락으로 인한 것인 경우, 메모리 계층의 다음 레벨로부터 명령들의 라인이 프리패치된다. 명령 캐시에서의 누락이 캐시 라인의 X% 미만인 어드레스에서의 누락으로 인한 것이거나, 또는 순차적 누락인 경우, 프리패치는 수행되지 않는다. 예를 들어, 캐시 라인의 단부 부근, 이를 테면 캐리 라인에 대해 75%인 패치 어드레스에서 누락이 발생할 경우, 메모리 계층의 다음 레벨로부터의 명령들의 라인이 프리패치된다. 캐시 라인에 대한 퍼센테이지(X)는 실험적 수단(experimental means)에 의해 선택된 값으로 고정되거나 또는 동작시 프로그램에 따라 X%가 조절되도록 프로그램가능할 수 있다. 예를 들어, X%가 8개의 명령 라인(210)을 갖는 도 2의 예시에 대해 62.5%이면, 라인의 62.5%는 라인의 5개 명령들에 해당하는 I4(216)과 연관된다. 누락이 I4(216) 또는 이보다 큰 패치 어드레스에서 발생할 경우, 프리패치 동작은 인에이블된다(enabled). 누락이 I3(215) 또는 이보다 작은 패치 어드레스에서 발생할 경우, 프리패치 동작은 인에이블되지 않는다(not enabled). 대안적 구현예에서, 명령 캐시에서의 누락이 캐시 라인의 X% 이상인 어드레스에서의 누락으로 인한 것인 경우, 프리패치가 수행된다. X% = 62.5%인 상기 예에 대해, I5(217) 또는 이보다 큰 패치 어드레스에서 누락이 발생할 경우 프리패치는 인에이블된다. 그렇지 않은 경우, 캐시 라인에 대해 I4(216) 이하의 어드레스에서 누락이 발생할 경우, 프리패치는 수행되지 않는다.
또 다른 실시예에서, 누락 속성들은 프리패치에 대한 여부와 상관없이 결정되도록 조합될 수 있다. 예를 들어, 명령 캐시에서의 누락이, 명령 캐시에 존재하 지 않는 명령의 어드레스에 대한, 분기, 서브-루틴 호출 또는 이와 유사한 것과 같은 비순차적 누락으로 인한 것인 경우, 또는 명령 캐시에서의 누락이 짝수인 명령 캐시의 어드레스에서 발생할 경우, 메몰 계층의 다음 레벨로부터 명령들의 라인이 프리패치된다. 그렇지 않다면, 누락시, 프리패치는 수행되지 않는다.
프리패치에 대한 여부 결정은 어드레스된 명령이 캐시에 있는지 또는 없는지에 대해 결정하기 위해 캐시 어드레스 프로브와 병렬로 동작할 수 있는 프리패치 결정 로직(246)으로 달성된다. 프리패치 결정 로직(246)은 누락 표시(248), 비순차적 동작이 분기, 호출 또는 복귀 동작과 같이, 누락을 야기시키는 비순차적 표시(250), X% 값(252)을 입력으로 취할 수 있으며, 예를 들어 프리패치된 명령의 IA(224)를 포함할 수 있다. 누락 표시(248), 비순차적 표시(250), 및 X% 값(252)은 Ll Icache 제어 유니트(206)에 의해 제공된다. 누락이 비순차적 패치 동작을 위한 패치 어드레스와 연관되었다는 결정은 프로세서(202)로부터의 제어(254)에 의해 얻어질 수 있다. 제어들(254)은 이를 테면, 분기들, 호출들, 복귀들 등과 같은 명령들과 연관된 비순차적 동작들(256)에 대한 로직으로부터 추가로 얻어질 수 있다. 대안적으로, Ll Icache 제어 유니트(206)는 비순차적 동작과 패치가 연관되었는지 여부를 결정하기 위해 이전의(previous) 패치 명령 어드레스와 현재의 패치 명령 어드레스를 비교할 수 있다. 프리패치 결정 로직(246)은 요구에 따라 접속되는 신호들을 갖는 명령 캐시 외부에 위치될 수 있다는 것이 주목된다. 예를 들어, 프리패치 결정 로직은 명령 어드레스(224)를 발생시키는 프로세서(202)와 보다 밀접하게 연관될 수 있다.
패치 어드레스가 짝수인 어드레스 캐시 라인에 대한 것인지를 결정하는 것과 같은 또 다른 속성들은 짝수 캐시 라인에 대해 E=0인 짝수 "E" 비트(230)을 기초로 할 수 있다. "E" 비트(230) 어드레스 비트 위치 또는 값은 명령 캐시 라인 어레이(204)의 라인 길이와 관련하여 변경될 수 있다. 도 2에 도시된 것처럼, 2 비트의 B 필드(234)는 워드(word)에서 4개의 바이트에 이르는 것으로 표시되며 3 비트의 I 필드(232)는 라인에서 8개 워드들에 이르는 것으로 표시된다. 이러한 배열에 따라, "E" 비트(230)는 32-바이트 캐시 라인에 대해 어드레스되는 8개 워드들 마다 상태를 변경시킨다.
또 다른 실시예에서, 프리패치 결정 로직(246)은 프리패치되는 캐시 라인이 이미 명령 캐시에 있는지 여부를 결정하기 위해 캐시의 프로브(probe)를 야기시킬 수 있다. 프리패치 타겟과 연관된 캐시 라인이 이미 캐시에 있는 경우, 프리패치 동작은 중단되거나 또는 시작이 차단된다.
일단 프리패치가 명령 캐시와 연관된 프리패치 로직에 의해 초기화되고 메모리 계층의 보다 높은 레벨에 의해 응답되면, 명령들의 다수의 라인들은 메모리 데이터 버스(244)와 같은 메모리 데이터 버스를 통해 Ll Icache로 전송될 수 있다. 메모리 데이터 버스 인터페이스(244)의 물리적 버스 폭과 구현되는 시그널링 프로토콜들에 따라, 데이터는 이를 테면, 32-바이트, 64-바이트, 128-바이트, 256-바이트, 512-바이트 등과 같이 고정된 사이즈량들 또는 패킷들로 전달될 수 있다. 일반적으로, 짧은 데이터 패킷들의 다수의 전송들은 데이터의 구성 및 전송시 오버헤드로 인해, 보다 큰 패킷 사이즈들의 버스트(burst) 전송들 보다 덜 효율적이다. 따라서, 또 다른 실시예에서, 프리패치에 대한 결정이 도달될 때, 예를 들어, 2개의 개별적인 데이터 전송들에서 명령들의 2개 라인들을 프리패칭하는 대신, 긴 데이터 전송이 요구된다. 프리패치 상에서 긴 데이터 전송은 짧은 개별적 전송들에서 명령들의 전송을 비교할 때, 전체 전송 시간을 최소화시킨다.
도 3은 낮은 복잡잡도의 프리패치 프로세스(300)를 나타내는 흐름도이다. 도 3의 블록도들과 도 2의 엘리먼트들 간의 예시적 관계는 프로세서 메모리 콤플렉스(200)로부터의 엘리먼트들이 방법(300)을 수행하기 위해 적절히 협력할 수 있는 방법을 나타냄으로써 도시된다.
프로세서(202)와 같은 프로세서는 블록(302)에서 명령을 패치한다. 결정 블록(304)에서, 패치되는 명령이 명령 캐시에 상주하는지를 결정한다. 예를 들어, 명령이 존재하는지를 식별하기 위해 Ll Icache 제어 유니트(206)가 검사된다. 명령이 명령 캐시에 있는 경우, 프로세스(300)는 블록(306)에서 캐시내의 명령을 패치하고 다음 명령 패치를 위해 대기되도록 블록(302)으로 복귀된다. 예를 들어, 선택된 명령은 버스(240)로부터의 명령상에 배치되고 프로세서(202)에서 수신된다.
명령이 명령 캐시에 있지 않다면, 누락 상황이 검출된다. 프로세스(300)는 결정 블록(308)으로 진행되며, 여기서는 현재의 명령 어드레스와 연관된 다음 연속하는 라인이 명령 캐시에 이미 존재하는지를 결정한다. 이러한 결정은 Ll Icache 라인 어레이(204)를 직접 액세스하지 않고, Ll Icache 제어 유니트(206)에서 달성될 수 있다. 다음 연속하는 라인이 이미 Ll Icache에 있는 경우, 블록(310)에서 패치는 현재의 명령 어드레스를 위해, 시스템 메모리 계층(208)과 같은, 메모리 계 층에 송출된다. 다음 프로세스(300)는 다음 명령 패치를 대기하도록 블록(302)으로 복귀된다. 동시에, 누락을 야기시키는 패치 어드레스의 속성들이 블록(312)에서 결정된다. 이러한 결정은 프리패치 결정 로직(246)에서 적절히 달성될 수 있다.
다음 연속적인 라인이 캐시에 있지 않은 경우, 프로세스는 결정 블록(314)으로 진행되며, 여기서는 블록(312)에서 결정되는 하나 이상의 누락 속성들이 관련되는지를 결정한다. 다수의 속성들이 결정될 수 있지만, 고정된 또는 프로그램가능한 기능(function)은 적용되는 속성들 전체 또는 속성들의 서브세트를 선택할 수 있다. 누락 속성들이 관련되면, 프로세스(300)는 명령 및 다음 레벨 메모리로부터 결정된 프리패치 캐시 라인을 패치하기 위해 블록(316)으로 진행되며 다음 명령 패치를 대기하기 위해 블록(302)으로 복귀된다. 따라서, 결정 블록(314)에서 결정이 프리패치에 도달했을 때, 예를 들어, 2개의 개별 데이터 전송들에서 명령들의 2개 라인들을 프리패칭하는 대신, 긴 데이터 전송이 요구된다. 누락 속성들이 관련되지 않는 경우, 현재의 명령 어드레스를 위해 블록(318)에서 패치는 시스템 메모리 계층(208)과 같은 메모리 계층에 송출된다. 다음 프로세스(300)는 다음 명령 패치를 대기하기 위해 블록(302)으로 복귀된다.
본 발명에 개시되는 실시예들의 예시적 논의는 직접 맵핑된 캐시 구현예로 도시된다. 직접 맵핑된 캐시는 한 방향 세트 연관 캐시(one way set associative cache)와 같은 특정한 케이스의 세트 연관 캐시가 고려될 수 있다는 것이 주목된다. 본 발명에 개시된 원리들은 N-방식 세트 연관 캐시, 이를 테면 예를 들어 4 방식 세트 연관 캐시 구현예에 적용될 수 있다. 유사한 방식으로, 본 발명에 개시된 원리들은 완전(fully) 연관 캐시 구현예에 적용될 수 있다.
본 발명에 개시된 실시예들과 관련하여 설명되는 다양한 예시적인 논리 블록들, 모듈들, 회로들, 엘리먼트들 및/또는 콤포넌트들은 범용성 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 로직 콤포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 콤포넌트들, 또는 본 발명에 개시되는 기능들을 수행하도록 설계된 이들의 임의의 조합물들로 구현 또는 실행될 수 있다. 범용성 프로세서는 마이크로프로세서일 수 있으나, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 또한, 프로세서는 컴퓨팅 콤포넌트들, 예를 들면 DSP와 마이크로프로세서의 조합, 다수의 마이크로프로세서들, DSP 코어와 결합되는 하나 이상의 마이크로프로세서들의 조합 또는 임의의 다른 구성으로 구현될 수 있다.
본 발명에 개시된 실시예들과 관련하여 개시되는 방법들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합물에서 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결될 수 있다. 대안적으로, 저장 매체는 프로세서와 일체형일 수 있 다.
본 발명은 실시예들과 관련하여 개시되었지만, 다양한 형태의 구현예들이 상기 설명 및 하기 청구항들과 일관된 방식으로 당업자들에 의해 이용될 수 있다는 것이 인식될 것이다. 예를 들어, 실시예들은 레벨 1 명령 캐시와 관련하여 주로 개시된다. 또한, 실시예들은 레벨 2 명령 캐시, 명령들을 프리패칭하기 위한 레벨 2 통합 캐시, 또는 프로세서 메모리 컴플렉스에 적합한 메모리 계층의 다른 레벨들을 이용할 수 있다는 것이 인식될 것이다. 명령 캐시는 프로세서 코어와 통합되거나 또는 프로세서 코어의 외부에 있을 수 있다는 것이 인식될 것이다.

Claims (20)

  1. 명령 프리패치 방법으로서,
    패치 어드레스(fetch address)가 명령 캐시에서 누락되었다(miss)는 통지를 수신하는 단계;
    상기 누락을 야기한 상기 패치 어드레스의 속성을 결정하는 단계; 및
    상기 속성에 기초하여 명령들의 라인을 프리패칭하는 단계
    를 포함하는, 명령 프리패치 방법.
  2. 제 1 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스임을 표시하는, 명령 프리패치 방법.
  3. 제 1 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스이며 상기 타겟 어드레스가 캐시 라인의 X% 이상임을 표시하는, 명령 프리패치 방법.
  4. 제 1 항에 있어서,
    상기 속성은 상기 패치 어드레스가 상기 명령 캐시에서 짝수(even) 어드레스임을 표시하는, 명령 프리패치 방법.
  5. 제 1 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스이거나 또는 상기 패치 어드레스가 상기 명령 캐시에서 짝수 어드레스임을 표시하는, 명령 프리패치 방법.
  6. 제 1 항에 있어서,
    상기 프리패칭하는 단계는 누락된 명령의 패칭 및 명령들의 연관된 라인을 명령들의 프리패치 라인과 조합함으로써 긴 데이터 전송을 인에이블하는 단계(enabling)를 더 포함하는, 명령 프리패치 방법.
  7. 제 1 항에 있어서, 상기 프리패칭하는 단계는,
    프리패칭될 명령들의 라인이 상기 명령 캐시에 존재하는지를 결정하는 단계; 및
    상기 프리패칭될 명령들의 라인이 상기 명령 캐시에 존재하지 않는 경우 명령들의 라인을 프리패칭하는 단계
    를 더 포함하는, 명령 프리패치 방법.
  8. 제 1 항에 있어서, 상기 프리패칭하는 단계는,
    상기 속성으로서, 순차적 동작의 타겟 어드레스에서 상기 누락을 야기한 상 기 패치 어드레스가 발행하였음을 결정하는 단계; 및
    상기 속성에 기초하여 명령들의 라인의 상기 프리패칭을 디스에이블시키는 단계(disabling)
    를 더 포함하는, 명령 프리패치 방법.
  9. 제 2 항에 있어서,
    상기 비순차적 동작은 상기 명령 캐시에 연결되는 프로세서의 로직으로부터 결정되는, 명령 프리패치 방법.
  10. 제 2 항에 있어서,
    상기 비순차적 동작은 상기 패치 어드레스를 이전의 패치 어드레스와 비교함으로써 결정되는, 명령 프리패치 방법.
  11. 명령 캐시 및 프리패치 시스템으로서,
    패치 어드레스가 누락되었다는 통지(notification)를 발생시키도록 구성된 명령 캐시(instruction cache);
    상기 누락을 야기한 상기 패치 어드레스의 속성을 결정하도록 구성된 프리패치 결정 로직; 및
    상기 속성에 기초하여 명령들의 라인을 프리패치하도록 구성된 프리패치 로직
    을 포함하는, 명령 캐시 및 프리패치 시스템.
  12. 제 11 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스임을 나타내는, 명령 캐시 및 프리패치 시스템.
  13. 제 11 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스이고 상기 타겟 어드레스가 캐시 라인에서 X% 이상임을 나타내는, 명령 캐시 및 프리패치 시스템.
  14. 제 11 항에 있어서,
    상기 속성은 상기 패치 어드레스가 상기 명령 캐시의 짝수(even) 어드레스임을 나타내는, 명령 캐시 및 프리패치 시스템.
  15. 제 11 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스이거나 또는 상기 패치 어드레스가 상기 명령 캐시의 짝수 어드레스임을 나타내는, 명령 캐시 및 프리패치 시스템.
  16. 제 11 항에 있어서,
    상기 명령 캐시에 연결되며 상기 패치 어드레스를 발생시키도록 구성되는 프로세서; 및
    비순차적 분기형(branch type) 동작을 나타내는 제어 신호들을 발생시키도록 구성되는 상기 프로세서 내의 로직
    을 더 포함하는, 명령 캐시 및 프리패치 시스템.
  17. 메모리 시스템으로서,
    패치 어드레스가 누락되었다는 통지(notification)를 발생시키기도록 구성된 명령 캐시;
    상기 누락을 야기한 상기 패치 어드레스의 속성을 결정하고 상기 누락된 패치 어드레스와 상기 속성에 기초하여 누락 정보를 발생시키도록 구성된 프리패치 결정 로직; 및
    을 포함하는, 메모리 시스템.
  18. 제 17 항에 있어서,
    상기 누락된 패치 어드레스와 연관된 명령들은 프리패치된 명령들을 포함하는, 메모리 시스템.
  19. 제 18 항에 있어서,
    상기 누락된 패치 어드레스와 연관된 명령들은 버스트 전송(burst transfer)시 상기 명령 캐시에 제공되는, 메모리 시스템.
  20. 제 17 항에 있어서,
    상기 속성은 상기 패치 어드레스가 비순차적 동작의 타겟 어드레스임을 나타내는, 메모리 시스템.
KR1020097013847A 2006-12-08 2007-12-03 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치 KR101095204B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/608,309 US8060701B2 (en) 2006-12-08 2006-12-08 Apparatus and methods for low-complexity instruction prefetch system
US11/608,309 2006-12-08
PCT/US2007/086254 WO2008073741A1 (en) 2006-12-08 2007-12-03 Methods and apparatus for low-complexity instruction prefetch system

Publications (2)

Publication Number Publication Date
KR20090095633A true KR20090095633A (ko) 2009-09-09
KR101095204B1 KR101095204B1 (ko) 2011-12-16

Family

ID=39226565

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013847A KR101095204B1 (ko) 2006-12-08 2007-12-03 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US8060701B2 (ko)
EP (1) EP2097809B1 (ko)
JP (2) JP5859185B2 (ko)
KR (1) KR101095204B1 (ko)
CN (2) CN102968294B (ko)
AT (1) ATE513261T1 (ko)
WO (1) WO2008073741A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US20110231634A1 (en) * 2010-03-22 2011-09-22 Fishel Liran System and method for grouping alternative possibilities in an unknown instruction path
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US10175987B2 (en) * 2016-03-17 2019-01-08 International Business Machines Corporation Instruction prefetching in a computer processor using a prefetch prediction vector
US20210081323A1 (en) * 2019-09-12 2021-03-18 Marvell International Ltd. Method of improving l1 icache performance with large programs
CN111399913B (zh) * 2020-06-05 2020-09-01 浙江大学 一种基于预取的处理器加速取指方法
US11422934B2 (en) * 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11561796B2 (en) 2020-07-15 2023-01-24 International Business Machines Corporation Linked miss-to-miss instruction prefetcher
CN112416438A (zh) * 2020-12-08 2021-02-26 王志平 一种流水线预分支的实现方法
US11822922B2 (en) 2021-12-31 2023-11-21 International Business Machines Corporation Miss-driven instruction prefetching
CN115480826B (zh) * 2022-09-21 2024-03-12 海光信息技术股份有限公司 分支预测器、分支预测方法、装置和计算设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS615357A (ja) * 1984-06-07 1986-01-11 Fujitsu Ltd デ−タ処理装置
JPS63146143A (ja) * 1986-12-10 1988-06-18 Hitachi Ltd 記憶装置の転送制御方式
JP2786886B2 (ja) * 1989-05-17 1998-08-13 富士通株式会社 プリフェッチ制御方法およびプリフェッチ制御装置
JPH0588891A (ja) * 1991-09-30 1993-04-09 Toshiba Corp キヤツシユメモリ制御装置
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
US5809529A (en) * 1995-08-23 1998-09-15 International Business Machines Corporation Prefetching of committed instructions from a memory to an instruction cache
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
JP2000242557A (ja) * 1999-02-25 2000-09-08 Nec Corp キャッシュプリフェッチ装置
JP2000347934A (ja) * 1999-06-02 2000-12-15 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JP2001142698A (ja) * 1999-11-12 2001-05-25 Mitsubishi Electric Corp メモリアクセス方式
US6584549B2 (en) * 2000-12-29 2003-06-24 Intel Corporation System and method for prefetching data into a cache based on miss distance
US20030105926A1 (en) * 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US7032076B2 (en) * 2002-09-16 2006-04-18 Intel Corporation Prefetching data in a computer system

Also Published As

Publication number Publication date
CN102968294B (zh) 2015-07-22
JP5859185B2 (ja) 2016-02-10
US8060701B2 (en) 2011-11-15
JP2015122094A (ja) 2015-07-02
KR101095204B1 (ko) 2011-12-16
ATE513261T1 (de) 2011-07-15
CN101548266B (zh) 2012-12-05
JP2010512580A (ja) 2010-04-22
WO2008073741A1 (en) 2008-06-19
US20080140996A1 (en) 2008-06-12
JP6030160B2 (ja) 2016-11-24
EP2097809B1 (en) 2011-06-15
EP2097809A1 (en) 2009-09-09
CN102968294A (zh) 2013-03-13
CN101548266A (zh) 2009-09-30

Similar Documents

Publication Publication Date Title
KR101095204B1 (ko) 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
US8683136B2 (en) Apparatus and method for improving data prefetching efficiency using history based prefetching
RU2438165C2 (ru) Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша
JP5323936B2 (ja) 推論的割込みベクトルプリフェッチのための装置および方法
US9396117B2 (en) Instruction cache power reduction
JP5254342B2 (ja) n−ウェイキャッシュを用いるシステムおよび方法
CN104978284A (zh) 处理器子程序高速缓冲存储器
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
US6823430B2 (en) Directoryless L0 cache for stall reduction
US20130262826A1 (en) Apparatus and method for dynamically managing memory access bandwidth in multi-core processor
US20110202727A1 (en) Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache
CN101697117B (zh) 用于实时Java处理器的字节码高速缓存装置及存取方法
CN201556199U (zh) 用于实时Java处理器的字节码高速缓存装置

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: 20141128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 9