KR101095204B1 - 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치 - Google Patents
낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000004044 response Effects 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 6
- 230000015654 memory Effects 0.000 abstract description 59
- 230000005540 biological transmission Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 231100000863 loss of memory Toxicity 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing 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
Description
Claims (33)
- 명령 캐시 및 프리패치(prefetch) 시스템에서 명령 프리패치를 위한 방법으로서,제 1 캐시에서 패치될 명령의 어드레스 누락(miss) 표시를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산(operation)으로부터 발생하며 제 2 연산에 대응함 ―;상기 표시에 응답하여,상기 제 1 연산이 비순차적(non-sequential)임을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계; 및상기 제 1 연산이 순차적이라는 것에 응답하여, 상기 제 2 캐시로부터 상기 제 2 라인의 명령들을 프리패치하지 않고 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하는 단계를 포함하는, 명령 프리패치를 위한 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,상기 프리패치하는 단계는 상기 제 1 라인의 명령들의 패치와 상기 제 2 라인의 명령들의 프리패치를 결합함으로써 긴 데이터 전송을 가능하게 하는(enable) 단계를 더 포함하는, 명령 프리패치를 위한 방법.
- 삭제
- 삭제
- 제 1 항에 있어서,상기 제 1 연산은 상기 제 1 캐시에 연결되는 프로세서의 로직에 의해 비순차적인 것으로 식별되는, 명령 프리패치를 위한 방법.
- 제 1 항에 있어서,상기 제 1 연산은 상기 패치될 명령의 어드레스를 이전에 패치된 어드레스와 비교함으로써 비순차적인 것으로 식별되는, 명령 프리패치를 위한 방법.
- 시스템으로서,명령 캐시에서 패치될 명령의 어드레스가 누락되었다는 통지(notification)를 발생시키도록 구성된 상기 명령 캐시 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하도록 구성된 패치 로직; 및상기 제 1 연산이 비순차적 액세스임을 조건으로 하여 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하고, 그리고 상기 제 1 연산이 순차적 액세스라는 것에 응답하여 상기 제 2 캐시로부터 상기 제 2 라인의 명령들의 프리패치를 억제(refrain)하도록 구성된 프리패치 결정 로직을 포함하는, 시스템.
- 삭제
- 삭제
- 삭제
- 삭제
- 제 11 항에 있어서,상기 제 1 연산이 비순차적인지 여부를 결정하도록 구성된 캐시 제어 유닛을 더 포함하는, 시스템.
- 삭제
- 삭제
- 제 11 항에 있어서,상기 프리패치되는 제 2 라인의 명령들은 버스트 전송(burst transfer)으로 상기 명령 캐시에 제공되는, 시스템.
- 제 1 항에 있어서,상기 제 1 연산은 분기(branch) 연산인, 명령 프리패치를 위한 방법.
- 명령 캐시 및 프리패치 시스템에서의 방법으로서,제 1 캐시에서 패치될 명령의 어드레스가 누락되었다는 통지를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;상기 통지에 응답하여,상기 제 1 연산이 비순차적이고 패치 어드레스 캐시 라인 위치가 임계 캐시 라인 위치를 초과함을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계 ― 상기 패치 어드레스 캐시 라인 위치는 상기 패치될 명령의 어드레스와 관련되고 상기 임계 캐시 라인 위치는 상기 제 1 라인의 명령들과 관련됨 ―; 및상기 제 1 연산이 비순차적이고 상기 패치 어드레스 캐시 라인 위치가 상기 임계 캐시 라인 위치를 초과하지 않는다는 것에 응답하여, 상기 제 2 라인의 명령들을 프리패치하지 않고 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하는 단계를 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
- 명령 캐시 및 프리패치 시스템에서의 방법으로서,제 1 캐시에서 패치될 명령의 어드레스 누락 표시를 수신하는 단계 ― 상기 패치될 명령의 어드레스는 제 1 연산으로부터 발생하며 제 2 연산에 대응함 ―;상기 표시에 응답하여,상기 패치될 명령의 어드레스가 제 2 캐시의 짝수 캐시 라인에 대응함을 조건으로 하여, 상기 패치될 명령의 어드레스를 기초로 상기 패치될 명령을 포함하는 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 제 2 라인의 명령들을 프리패치하는 단계; 및상기 패치될 명령의 어드레스가 상기 제 2 캐시의 홀수 캐시 라인에 대응한다는 것에 응답하여, 상기 패치될 명령의 어드레스를 기초로 상기 제 1 라인의 명령들을 상기 제 2 캐시로부터 패치하고 상기 제 2 캐시로부터 상기 제 2 라인의 명령들의 프리패치를 억제하는 단계를 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
- 제 22 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
- 제 22 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
- 제 1 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에서의 규정된(predefined) 임계 위치에 대한 상기 제 1 라인의 명령들에서의 명령의 위치를 추가 조건으로 하여 프리패치되는, 명령 프리패치를 위한 방법.
- 제 1 항에 있어서,상기 제 2 라인의 명령들은 상기 패치될 명령의 어드레스가 상기 제 2 캐시의 짝수 캐시 라인에 대응함을 추가 조건으로 하여 프리패치되고, 상기 제 2 캐시는 하나 이상의 짝수 캐시 라인들과 하나 이상의 홀수 캐시 라인들을 포함하는, 명령 프리패치를 위한 방법.
- 제 1 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 프리패치를 위한 방법.
- 제 1 항에 있어서,상기 제 1 연산은 비순차적이고 서브루틴 호출(call) 연산을 포함하는, 명령 프리패치를 위한 방법.
- 제 1 항에 있어서,상기 제 1 연산은 비순차적이고 복귀(return) 연산을 포함하는, 명령 프리패치를 위한 방법.
- 제 11 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 연속적인, 시스템.
- 제 11 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 시스템.
- 제 21 항에 있어서,상기 제 2 라인의 명령들은 상기 패치될 명령의 어드레스가 상기 제 2 캐시의 짝수 캐시 라인에 대응함을 추가 조건으로 하여 프리패치되고, 상기 제 2 캐시는 적어도 하나의 짝수 캐시 라인 및 적어도 하나의 홀수 캐시 라인을 포함하는, 명령 캐시 및 프리패치 시스템에서의 방법.
- 제 21 항에 있어서,상기 제 2 라인의 명령들은 상기 제 1 라인의 명령들에 비연속적인, 명령 캐시 및 프리패치 시스템에서의 방법.
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)
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)
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 |
-
2006
- 2006-12-08 US US11/608,309 patent/US8060701B2/en active Active
-
2007
- 2007-12-03 KR KR1020097013847A patent/KR101095204B1/ko active IP Right Grant
- 2007-12-03 AT AT07865095T patent/ATE513261T1/de not_active IP Right Cessation
- 2007-12-03 CN CN2007800447776A patent/CN101548266B/zh active Active
- 2007-12-03 JP JP2009540408A patent/JP5859185B2/ja not_active Expired - Fee Related
- 2007-12-03 EP EP07865095A patent/EP2097809B1/en not_active Not-in-force
- 2007-12-03 WO PCT/US2007/086254 patent/WO2008073741A1/en active Application Filing
- 2007-12-03 CN CN201210397919.XA patent/CN102968294B/zh active Active
-
2015
- 2015-02-02 JP JP2015018674A patent/JP6030160B2/ja not_active Expired - Fee Related
Non-Patent Citations (2)
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 |