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

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

Info

Publication number
KR101095204B1
KR101095204B1 KR1020097013847A KR20097013847A KR101095204B1 KR 101095204 B1 KR101095204 B1 KR 101095204B1 KR 1020097013847 A KR1020097013847 A KR 1020097013847A KR 20097013847 A KR20097013847 A KR 20097013847A KR 101095204 B1 KR101095204 B1 KR 101095204B1
Authority
KR
South Korea
Prior art keywords
cache
line
instructions
instruction
address
Prior art date
Application number
KR1020097013847A
Other languages
English (en)
Other versions
KR20090095633A (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 캐시 및 시스템 메모리만을 사용할 수 있다.
명령 캐시들에 대해 메모리 계층 구조가 사용될 수 있는 이유 이면의 원리들 중 하나는 명령들이 메모리에서 순차적 위치들(sequential locations)로부터 액세스되는 경향이 있다는 것이다. 가장 최근에 사용된 코드 섹션들을 캐시들이 유지하게 함으로써, 프로세서들은 더 높은(higher) 성능 레벨로 실행될 수 있다. 또한, 프로그램들은 분기(branch), 호출(call) 및 복귀(return) 타입 명령들을 포함하며 인터럽트들(interrupts)과 같은 다른 비순차적인 동작들을 지원하기 때문에, 순차적 지역성(sequential locality)의 원리는 비교적 짧은 코드 섹션들에 대해서만 유지될 수 있다. 이러한 비순차적 연산들로 인해, 명령 캐시에 대한 명령 패치(fetch)가 누락(miss)될 수 있어, 명령 패치가 더 높은 메모리 용량 및 더 느린 액세스 시간으로 동작하는 다음으로 높은 메모리 레벨에 인가된다. 누락(miss)은 프로세서가 명령을 대기하게 할 수 있다. 프로세서 성능을 높게 유지하기 위해서, 캐시 누락률(miss rate)은 낮아야 한다.
일반적으로 명령 캐시는 명령 캐시에서 단일 어드레스에 위치된 다수의 명령들로 구성된다. 일반적으로, 이러한 다수의 명령들은 캐시 라인 또는 간단히 라인으로 칭한다. 누락은 캐시 라인의 어딘가에서 명령 액세스를 발생시킬 수 있다. 누락이 발생할 때, 요구되는 명령을 단순히 패치하기 보다는, 누락된 명령에서부터 캐시 라인의 끝까지 나머지 캐시 라인이 패치될 수도 있다. 일부 시스템들에서, 이러한 프리패치(prefetching) 기술은 누락에 대해 나머지 캐시 및 다음 캐시 라인을 항상 프리패치하도록 더 확장된다. 다음 캐시 라인을 항상 프리패치하는 이러한 종래의 기술은 다음 캐시 라인이 단기간(shortly) 요구될 명령들을 보유한다는 가정을 기초로 한다. 다음 캐시 라인에서 명령들의 사용에 대한 이러한 가정은 예를 들어, 라인에서 조건 분기(conditional branch)와 만나고 조건이 분기를 다음 순차적 명령에 대해 실패하게 하더라도 여전히 유효하다. 다음 캐시 라인을 항상 프리패치함으로써, 누락들이 감소할 수 있다.
분기들, 호출들 및 복귀들 등에 의해 야기되는 비순차적 연산들로 인해 프로그램의 어떤 포인트에서의 진행 실패들(course fails) 및 누락들의 명령들의 순차적 액세스의 국소성 원리(locality principle)가 발생한다. 예를 들어, 캐시 라인 끝에서 명령이 패치되고, 다음 순차적 명령 캐시 라인에 상주해야 하는 다음 순차적 명령이 캐시에 상주하지 않을 때, 순차적 액세스로 인한 누락이 발생할 수 있다. 예를 들어, 분기 명령(branch instruction)과 만나고 상기 분기가 프로그램 어드레스를 새로운 위치로 변경시키고 새로운 위치에서의 명령이 캐시에 상주하지 않을 때, 비순차적 액세스로 인한 누락이 발생할 수 있다. 다음 캐시 라인을 항상 프리패치하는 종래의 기술은 사용되지 않을 수도 있는 명령들을 패치하고, 결과적으로 메모리 액세스 대역폭의 불필요한 손실, 증가한 전력 사용, 및 더 낮은 프로세서 성능을 야기한다.
본 발명은 누락(miss)들이 발생할 때, 누락률, 메모리 액세스 대역폭 및 사용 전력을 감소시키는 프리패치 기술들에 대한 필요성이 존재한다는 것을 인식했다. 본 발명의 일 실시예는 명령 프리패치(instruction prefetch)를 위한 방법을 제공한다. 누락이 발생할 때, 명령 캐시에서 패치될 명령의 어드레스가 누락되었다는 통지(notification)가 수신된다. 누락이 발생한 패치될 명령 어드레스의 속성(attribute)이 결정되며, 상기 속성에 기초하여 한 라인의 명령들이 프리패치된다.
본 발명의 또 다른 실시예는 명령 캐시 및 프리패치 시스템에 관한 것이다. 명령 캐시는 패치될 명령의 어드레스가 누락되었다는 통지를 생성하도록 구성된다. 프리패치 결정 로직은 누락을 야기한 패치될 명령 어드레스의 속성을 결정하도록 구성되며 프리패치 로직은 상기 속성에 기초하여 한 라인의 명령들을 프리패치하도록 구성된다.
본 발명의 또 다른 실시예는 메모리 시스템에 관한 것이다. 메모리 시스템은 패치될 명령의 어드레스가 누락되었다는 통지를 발생시키도록 구성된 명령 캐시를 사용한다. 프리패치 결정 로직은 누락을 야기한 패치될 명령 어드레스의 속성을 결정하고 상기 속성과 누락된 패치될 명령 어드레스에 기초하여 누락 정보(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는 명령 캐시 라인의 프리패치가 메모리 유효 연산들에 대한 휴리스틱을 기초로 조절될 수 있는 프로세서 및 메모리 콤플렉스(200)의 기능 블록도이다. 프로세서 및 메모리 콤플렉스(200)는 프로세서(202), 레벨 1(Ll) 명령 캐시(Icache) 라인 어레이(204) 및 Ll Icache 제어 유닛(206)을 포함하는 직접 매핑된 L1 Icache(203), 및 시스템 메모리 계층 구조(208)를 포함한다. Ll Icache 제어 유닛(206)은 세트 연관 캐시(set associative cache)와 같이 다양한 타입의 캐시들에 이용될 수 있으므로, 명령 태그 매칭을 위한 명령 콘텐츠 어드레스 가능 메모리 및 프리패치 로직을 포함할 수 있다. 프로세서 콤플렉스에 접속할 수 있는 주변 디바이스들은 설명의 간결성을 위해 도시되지 않는다. 프로세서 및 메모리 콤플렉스(200)는 L1 Icache(203)에 저장된 프로그램 코드를 실행하기 위한 컴포넌트들(125A-C) 및 시스템 메모리 계층 구조(208)에 적절히 사용될 수 있다.
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 제어 유닛(206)으로 패치될 명령의 어드레스를 전송한다. 수신된 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)을 수행하기 위해 적절히 협력할 수 있는 방법을 나타냄으로써 도시된다.
블록(302)에서 프로세서(202)와 같은 프로세서가 명령을 패치한다. 결정 블록(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 (33)

  1. 명령 캐시 및 프리패치(prefetch) 시스템에서 명령 프리패치를 위한 방법으로서,
    제 1 캐시에서 패치될 명령의 어드레스 누락(miss) 표시를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산(operation)으로부터 발생하며 제 2 연산에 대응함 ―;
    상기 표시에 응답하여,
    상기 제 1 연산이 비순차적(non-sequential)임을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계; 및
    상기 제 1 연산이 순차적이라는 것에 응답하여, 상기 제 2 캐시로부터 상기 제 2 라인의 명령들을 프리패치하지 않고 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하는 단계를 포함하는, 명령 프리패치를 위한 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 프리패치하는 단계는 상기 제 1 라인의 명령들의 패치와 상기 제 2 라인의 명령들의 프리패치를 결합함으로써 긴 데이터 전송을 가능하게 하는(enable) 단계를 더 포함하는, 명령 프리패치를 위한 방법.
  7. 삭제
  8. 삭제
  9. 제 1 항에 있어서,
    상기 제 1 연산은 상기 제 1 캐시에 연결되는 프로세서의 로직에 의해 비순차적인 것으로 식별되는, 명령 프리패치를 위한 방법.
  10. 제 1 항에 있어서,
    상기 제 1 연산은 상기 패치될 명령의 어드레스를 이전에 패치된 어드레스와 비교함으로써 비순차적인 것으로 식별되는, 명령 프리패치를 위한 방법.
  11. 시스템으로서,
    명령 캐시에서 패치될 명령의 어드레스가 누락되었다는 통지(notification)를 발생시키도록 구성된 상기 명령 캐시 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;
    상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하도록 구성된 패치 로직; 및
    상기 제 1 연산이 비순차적 액세스임을 조건으로 하여 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하고, 그리고 상기 제 1 연산이 순차적 액세스라는 것에 응답하여 상기 제 2 캐시로부터 상기 제 2 라인의 명령들의 프리패치를 억제(refrain)하도록 구성된 프리패치 결정 로직을 포함하는, 시스템.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 제 11 항에 있어서,
    상기 제 1 연산이 비순차적인지 여부를 결정하도록 구성된 캐시 제어 유닛을 더 포함하는, 시스템.
  17. 삭제
  18. 삭제
  19. 제 11 항에 있어서,
    상기 프리패치되는 제 2 라인의 명령들은 버스트 전송(burst transfer)으로 상기 명령 캐시에 제공되는, 시스템.
  20. 제 1 항에 있어서,
    상기 제 1 연산은 분기(branch) 연산인, 명령 프리패치를 위한 방법.
  21. 명령 캐시 및 프리패치 시스템에서의 방법으로서,
    제 1 캐시에서 패치될 명령의 어드레스가 누락되었다는 통지를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;
    상기 통지에 응답하여,
    상기 제 1 연산이 비순차적이고 패치 어드레스 캐시 라인 위치가 임계 캐시 라인 위치를 초과함을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계 ― 상기 패치 어드레스 캐시 라인 위치는 상기 패치될 명령의 어드레스와 관련되고 상기 임계 캐시 라인 위치는 상기 제 1 라인의 명령들과 관련됨 ―; 및
    상기 제 1 연산이 비순차적이고 상기 패치 어드레스 캐시 라인 위치가 상기 임계 캐시 라인 위치를 초과하지 않는다는 것에 응답하여, 상기 제 2 라인의 명령들을 프리패치하지 않고 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하는 단계를 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
  22. 명령 캐시 및 프리패치 시스템에서의 방법으로서,
    제 1 캐시에서 패치될 명령의 어드레스 누락 표시를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;
    상기 표시에 응답하여,
    상기 패치될 명령의 어드레스가 제 2 캐시의 짝수 캐시 라인에 대응함을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계; 및
    상기 패치될 명령의 어드레스가 상기 제 2 캐시의 홀수 캐시 라인에 대응한다는 것에 응답하여, 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 상기 제 2 라인의 명령들의 프리패치를 억제하는 단계를 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
  23. 제 22 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
  24. 제 22 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
  25. 제 1 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에서의 규정된(predefined) 임계 위치에 대한 상기 제 1 라인의 명령들에서의 명령의 위치를 추가 조건으로 하여 프리패치되는, 명령 프리패치를 위한 방법.
  26. 제 1 항에 있어서,
    상기 제 2 라인의 명령들은 상기 패치될 명령의 어드레스가 상기 제 2 캐시의 짝수 캐시 라인에 대응함을 추가 조건으로 하여 프리패치되고, 상기 제 2 캐시는 하나 이상의 짝수 캐시 라인들과 하나 이상의 홀수 캐시 라인들을 포함하는, 명령 프리패치를 위한 방법.
  27. 제 1 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 프리패치를 위한 방법.
  28. 제 1 항에 있어서,
    상기 제 1 연산은 비순차적이고 서브루틴 호출(call) 연산을 포함하는, 명령 프리패치를 위한 방법.
  29. 제 1 항에 있어서,
    상기 제 1 연산은 비순차적이고 복귀(return) 연산을 포함하는, 명령 프리패치를 위한 방법.
  30. 제 11 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 연속적인, 시스템.
  31. 제 11 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 시스템.
  32. 제 21 항에 있어서,
    상기 제 2 라인의 명령들은 상기 패치될 명령의 어드레스가 상기 제 2 캐시의 짝수 캐시 라인에 대응함을 추가 조건으로 하여 프리패치되고, 상기 제 2 캐시는 적어도 하나의 짝수 캐시 라인 및 적어도 하나의 홀수 캐시 라인을 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
  33. 제 21 항에 있어서,
    상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
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 KR20090095633A (ko) 2009-09-09
KR101095204B1 true 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) CN101548266B (ko)
AT (1) ATE513261T1 (ko)
WO (1) WO2008073741A1 (ko)

Families Citing this family (10)

* 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 浙江大学 一种基于预取的处理器加速取指方法
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM journal of research and development, july 1993, vol.37, no.4, IBM, EICKEMEYER, R.J. et al A load-instruction unit for pipelined processors, pp.547-564
Porc. of MICRO 31, 1998, IEEE Computer Society, USA, LUK, C. et al, Cooperative prefetching: compiler and hardware support for effective instruction prefetching in modern processors

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101095204B1 (ko) 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
RU2438165C2 (ru) Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша
JP5323936B2 (ja) 推論的割込みベクトルプリフェッチのための装置および方法
US9396117B2 (en) Instruction cache power reduction
US7237065B2 (en) Configurable cache system depending on instruction type
KR101128160B1 (ko) N-웨이 캐시를 사용하는 시스템 및 방법
US20150143045A1 (en) Cache control apparatus and method
US9690707B2 (en) Correlation-based instruction prefetching
US7313655B2 (en) Method of prefetching using a incrementing/decrementing counter
CN104978284A (zh) 处理器子程序高速缓冲存储器
US11861367B2 (en) Processor with variable pre-fetch threshold
US20110202727A1 (en) Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache
US8219756B2 (en) Systems and methods for lookahead instruction fetching for processors utilizing tagless hit instruction caches
CN115563031A (zh) 指令高速缓存的预取控制方法、装置、芯片及存储介质
CN101697117B (zh) 用于实时Java处理器的字节码高速缓存装置及存取方法
KR20000003930A (ko) 명령어 캐시 미스 시 손실을 줄이기 위한 명령어 페치 장치

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