RU2008147131A - Способ и устройство для кэширования команд переменной длины - Google Patents

Способ и устройство для кэширования команд переменной длины Download PDF

Info

Publication number
RU2008147131A
RU2008147131A RU2008147131/09A RU2008147131A RU2008147131A RU 2008147131 A RU2008147131 A RU 2008147131A RU 2008147131/09 A RU2008147131/09 A RU 2008147131/09A RU 2008147131 A RU2008147131 A RU 2008147131A RU 2008147131 A RU2008147131 A RU 2008147131A
Authority
RU
Russia
Prior art keywords
cache
instruction
segment
command
unaligned
Prior art date
Application number
RU2008147131/09A
Other languages
English (en)
Other versions
RU2435204C2 (ru
Inventor
Майкл Уилльям МОРРОУ (US)
Майкл Уилльям МОРРОУ
Original Assignee
Квэлкомм Инкорпорейтед (US)
Квэлкомм Инкорпорейтед
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 Квэлкомм Инкорпорейтед (US), Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед (US)
Publication of RU2008147131A publication Critical patent/RU2008147131A/ru
Application granted granted Critical
Publication of RU2435204C2 publication Critical patent/RU2435204C2/ru

Links

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
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

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

1. Способ кэширования команд переменной длины, содержащий этапы, на которых: ! записывают данные команд в строку кэша и ! сохраняют резервную копию данных команд для одной или более позиций границы кэша. ! 2. Способ по п.1, в котором этап сохранения резервной копии данных команд для одной или более позиций границы кэша содержит этап, на котором копируют во вспомогательное запоминающее устройство данные команд для одной или более позиций границы кэша. ! 3. Способ по п.2, в котором вспомогательное запоминающее устройство содержит одно из массива тегов, ассоциативно связанного с кэшем команд, одного или более элементов резервного запоминающего устройства, включенного или ассоциативно связанного с кэшем команд, отдельного массива памяти и кэша верхнего уровня. ! 4. Способ по п.2, в котором этап копирования во вспомогательное запоминающее устройство данных команд для одной или более позиций границы кэша содержит этап, на котором копируют данные команд для позиции границы внутри строки кэша во вспомогательное запоминающее устройство. ! 5. Способ по п.2, в котором этап копирования во вспомогательное запоминающее устройство данных команд для одной или более позиций границы кэша содержит этап, на котором копируют данные команд для позиции границы между строками кэша во вспомогательное запоминающее устройство. ! 6. Способ по п.1, в котором этап сохранения резервной копии данных команд для одной или более позиций границы кэша содержит этапы, на которых ! идентифицируют невыровненный сегмент команды, включенный в данные команды; и ! копируют невыровненный сегмент во вспомогательное запоминающее устройство. ! 7. Способ по п.6, �

Claims (37)

1. Способ кэширования команд переменной длины, содержащий этапы, на которых:
записывают данные команд в строку кэша и
сохраняют резервную копию данных команд для одной или более позиций границы кэша.
2. Способ по п.1, в котором этап сохранения резервной копии данных команд для одной или более позиций границы кэша содержит этап, на котором копируют во вспомогательное запоминающее устройство данные команд для одной или более позиций границы кэша.
3. Способ по п.2, в котором вспомогательное запоминающее устройство содержит одно из массива тегов, ассоциативно связанного с кэшем команд, одного или более элементов резервного запоминающего устройства, включенного или ассоциативно связанного с кэшем команд, отдельного массива памяти и кэша верхнего уровня.
4. Способ по п.2, в котором этап копирования во вспомогательное запоминающее устройство данных команд для одной или более позиций границы кэша содержит этап, на котором копируют данные команд для позиции границы внутри строки кэша во вспомогательное запоминающее устройство.
5. Способ по п.2, в котором этап копирования во вспомогательное запоминающее устройство данных команд для одной или более позиций границы кэша содержит этап, на котором копируют данные команд для позиции границы между строками кэша во вспомогательное запоминающее устройство.
6. Способ по п.1, в котором этап сохранения резервной копии данных команд для одной или более позиций границы кэша содержит этапы, на которых
идентифицируют невыровненный сегмент команды, включенный в данные команды; и
копируют невыровненный сегмент во вспомогательное запоминающее устройство.
7. Способ по п.6, в котором этап идентификации невыровненного сегмента команды, включенного в данные команды, содержит этап, на котором предварительно декодируют команду так, чтобы идентифицировать сегмент команды с пересечением границы.
8. Способ по п.6, в котором этап идентификации невыровненного сегмента команды, включенного в данные команды, содержит этап, на котором обрабатывают местоположение записи строки кэша команды так, чтобы идентифицировать сегмент команды с пересечением границы.
9. Способ по п.8, в котором местоположение записи строки кэша команды соответствует адресу выборки, ассоциативно связанному с командой.
10. Способ по п.6, в котором этап идентификации невыровненного сегмента команды, включенного в данные команды, содержит этап, на котором обрабатывают информацию длины, ассоциативно связанную с командой, так, чтобы идентифицировать сегмент команды с пересечением границы.
11. Способ по п.6, в котором этап идентификации невыровненного сегмента команды, включенного в данные команды, содержит этап, на котором обрабатывают архивные данные несовмещения команды так, чтобы идентифицировать сегмент команды с пересечением границы.
12. Способ по п.6, в котором этап идентификации невыровненного сегмента команды, включенного в данные команды, содержит этап, на котором обрабатывают часть команды, выбранную заранее из остатка команды, так, чтобы идентифицировать сегмент команды с пересечением границы.
13. Способ по п.12, в котором часть команды, выбранная заранее из остатка команды, содержит одно из части команды, выбранной в ответ на критическую операцию обращения к запоминающему устройству за первым словом, и части команды, выбранной в ответ на критическую операцию обращения к запоминающему устройству за первым двойным словом.
14. Устройство, содержащее контроллер кэша, выполненный с возможностью направлять сохранение данных команд в строку кэша, включенную в кэш команд, и направлять сохранение резервной копии данных команд для одной или более позиций границы кэша.
15. Устройство по п.14, в котором контроллер кэша выполнен с возможностью направлять сохранение резервной копии данных команд для одной или более позиций границы кэша посредством копирования во вспомогательное запоминающее устройство данных команд для одной или более позиций границы кэша.
16. Устройство по п.15, в котором вспомогательное запоминающее устройство содержит одно из массива тегов, ассоциативно связанного с кэшем команд, одного или более элементов резервного запоминающего устройства, включенного или ассоциативно связанного с кэшем команд, отдельного массива памяти и кэша верхнего уровня.
17. Устройство по п.15, в котором контроллер кэша выполнен с возможностью копировать во вспомогательное запоминающее устройство данные команд для одной или более позиций границы кэша посредством копирования данных команд для позиции границы внутри строки кэша во вспомогательное запоминающее устройство.
18. Устройство по п.14, в котором контроллер кэша выполнен с возможностью копировать во вспомогательное запоминающее устройство данные команд для одной или более позиций границы кэша посредством копирования данных команд для позиции границы между строками кэша во вспомогательное запоминающее устройство.
19. Устройство по п.14, в котором контроллер кэша выполнен с возможностью направлять сохранение резервной копии данных команд для одной или более позиций границы кэша посредством идентификации невыровненного сегмента команды, включенного в данные команды, и копирования невыровненного сегмента во вспомогательное запоминающее устройство.
20. Устройство по п.19, в котором контроллер кэша выполнен с возможностью идентифицировать невыровненный сегмент команды, включенный в данные команды, посредством обработки предварительно декодированной информации, ассоциативно связанной с командой, так, чтобы идентифицировать сегмент команды с пересечением границы.
21. Устройство по п.19, в котором контроллер кэша выполнен с возможностью идентифицировать невыровненный сегмент команды, включенный в данные команды, посредством обработки местоположения записи строки кэша команды так, чтобы идентифицировать сегмент команды с пересечением границы.
22. Устройство по п.21, в котором местоположение записи строки кэша команды соответствует адресу выборки, ассоциативно связанному с командой.
23. Устройство по п.19, в котором контроллер кэша выполнен с возможностью идентифицировать невыровненный сегмент команды, включенный в данные команды, посредством обработки информации длины, ассоциативно связанной с командой, так, чтобы идентифицировать сегмент команды с пересечением границы.
24. Устройство по п.19, в котором контроллер кэша выполнен с возможностью идентифицировать невыровненный сегмент команды, включенный в данные команды, посредством обработки архивных данных несовмещения команды так, чтобы идентифицировать сегмент команды с пересечением границы.
25. Устройство по п.19, в котором контроллер кэша выполнен с возможностью идентифицировать невыровненный сегмент команды, включенный в данные команды, посредством использования части команды, выбранной заранее из остатка команды, так, чтобы идентифицировать сегмент команды с пересечением границы.
26. Устройство по п.25, в котором часть команды, выбранная заранее из остатка команды, содержит одно из части команды, выбранной в ответ на критическую операцию обращения к запоминающему устройству за первым словом, и части команды, выбранной в ответ на критическую операцию обращения к запоминающему устройству за первым двойным словом.
27. Устройство по п.14, в котором контроллер кэша дополнительно выполнен с возможностью извлекать команду, включенную в данные кэша, из строки кэша посредством считывания сегмента команды из кэша команд и считывания невыровненного сегмента команды из вспомогательного запоминающего устройства.
28. Устройство по п.27, в котором контроллер кэша дополнительно выполнен с возможностью объединять сегмент команды, считанной из кэша команд, с невыровненным сегментом команды.
29. Устройство по п.28, в котором контроллер кэша выполнен с возможностью объединять сегмент команды, считанной из кэша команд, с невыровненным сегментом команды посредством присоединения невыровненного сегмента команды к сегменту команды, считанной из кэша команд.
30. Устройство по п.28, в котором контроллер кэша выполнен с возможностью объединять сегмент команды, считанной из кэша команд, с невыровненным сегментом команды посредством выбора одного из невыровненного сегмента команды или первой части сегмента команды, считанной из первого сектора кэша команд, и объединения выбранного одного из невыровненного сегмента команды или первой части сегмента команды, считанной из первого сектора кэша команд, со второй частью команды, считанной из второго сектора строки кэша.
31. Микропроцессор, содержащий
кэш команд, выполненный с возможностью сохранять данные команд в строку кэша, включенную в кэш команд; и
контроллер кэша, выполненный с возможностью направлять сохранение резервной копии данных команд для одной или более позиций границы кэша во вспомогательное запоминающее устройство.
32. Микропроцессор по п.31, в котором одна или более позиций границы кэша содержит одну или более из позиции границы внутри строки кэша в кэше команд и позиции границы между строками кэша в кэше команд.
33. Микропроцессор по п.31, в котором вспомогательное запоминающее устройство содержит одно из массива тегов, ассоциативно связанного с кэшем команд, одного или более элементов дополнительного запоминающего устройства, включенного или ассоциативно связанного с кэшем команд, отдельного массива памяти и кэша верхнего уровня.
34. Способ извлечения кэшированных команд переменной длины, содержащий этапы, на которых
считывают сегмент команды из строки кэша и
считывают невыровненный сегмент команды из вспомогательного запоминающего устройства.
35. Способ по п.34, дополнительно содержащий этап, на котором объединяют невыровненный сегмент команды с сегментом команды, считанной из строки кэша.
36. Способ по п.35, в котором объединение невыровненного сегмента команды с сегментом команды, считанной из строки кэша, содержит этап, на котором присоединяют невыровненный сегмент команды к сегменту команды, считанной из строки кэша.
37. Способ по п.35, в котором объединение невыровненного сегмента команды с сегментом команды, считанной из строки кэша, содержит этапы, на которых:
выбирают одно из невыровненного сегмента команды и первой части команды, считанной из первого сектора строки кэша; и
объединяют выбранное одно из невыровненного сегмента команды и первой части команды, считанной из первого сектора строки кэша, со второй частью команды, считанной из второго сектора строки кэша.
RU2008147131/08A 2006-05-01 2007-04-19 Способ и устройство для кэширования команд переменной длины RU2435204C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/381,038 2006-05-01
US11/381,038 US7337272B2 (en) 2006-05-01 2006-05-01 Method and apparatus for caching variable length instructions

Publications (2)

Publication Number Publication Date
RU2008147131A true RU2008147131A (ru) 2010-06-10
RU2435204C2 RU2435204C2 (ru) 2011-11-27

Family

ID=38561189

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2008147131/08A RU2435204C2 (ru) 2006-05-01 2007-04-19 Способ и устройство для кэширования команд переменной длины

Country Status (10)

Country Link
US (1) US7337272B2 (ru)
EP (1) EP2089801B1 (ru)
JP (1) JP4755281B2 (ru)
KR (1) KR101005180B1 (ru)
CN (1) CN101432703B (ru)
BR (1) BRPI0711166A2 (ru)
CA (1) CA2649476C (ru)
MX (1) MX2008013776A (ru)
RU (1) RU2435204C2 (ru)
WO (1) WO2007130789A2 (ru)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US8261019B2 (en) * 2009-02-13 2012-09-04 Oracle America, Inc. Conveying critical data in a multiprocessor system
US8086801B2 (en) * 2009-04-08 2011-12-27 International Business Machines Corporation Loading data to vector renamed register from across multiple cache lines
CN101699391B (zh) * 2009-09-30 2013-01-16 江南大学 提高Java处理器取指令带宽的字节码缓冲装置及使用方法
US9460018B2 (en) * 2012-05-09 2016-10-04 Qualcomm Incorporated Method and apparatus for tracking extra data permissions in an instruction cache
US8819342B2 (en) 2012-09-26 2014-08-26 Qualcomm Incorporated Methods and apparatus for managing page crossing instructions with different cacheability
US9495297B2 (en) 2014-07-22 2016-11-15 International Business Machines Corporation Cache line crossing load techniques for a caching system
US20160179540A1 (en) * 2014-12-23 2016-06-23 Mikhail Smelyanskiy Instruction and logic for hardware support for execution of calculations
US10133627B2 (en) 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
CN106227676B (zh) * 2016-09-22 2019-04-19 大唐微电子技术有限公司 一种高速缓存以及从高速缓存中读取数据的方法和装置
US11334491B1 (en) * 2020-11-18 2022-05-17 Centaur Technology, Inc. Side cache array for greater fetch bandwidth

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53109443A (en) * 1977-03-07 1978-09-25 Hitachi Ltd Data processor
JPS6020255A (ja) * 1983-07-15 1985-02-01 Fujitsu Ltd バツフア記憶制御方式
JPS63245745A (ja) * 1987-04-01 1988-10-12 Hitachi Ltd バツフア記憶制御装置
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US5802323A (en) * 1996-06-14 1998-09-01 Advanced Micro Devices, Inc. Transparent burst access to data having a portion residing in cache and a portion residing in memory
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
ATE297567T1 (de) * 1998-03-18 2005-06-15 Qualcomm Inc Digitaler signalprozessor zur reduzierung des zugriffswettbewerbs
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7340495B2 (en) * 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
JP3755661B2 (ja) * 2002-08-20 2006-03-15 日本電気株式会社 Vliwプロセッサにおける命令キャッシュ制御システム及び命令キャッシュ制御方法
US7243172B2 (en) * 2003-10-14 2007-07-10 Broadcom Corporation Fragment storage for data alignment and merger
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions

Also Published As

Publication number Publication date
EP2089801B1 (en) 2018-07-18
JP2009535743A (ja) 2009-10-01
CA2649476C (en) 2012-02-07
CN101432703B (zh) 2016-09-14
WO2007130789A3 (en) 2008-02-21
US7337272B2 (en) 2008-02-26
WO2007130789A2 (en) 2007-11-15
EP2089801A2 (en) 2009-08-19
JP4755281B2 (ja) 2011-08-24
CN101432703A (zh) 2009-05-13
KR101005180B1 (ko) 2011-01-04
CA2649476A1 (en) 2007-11-15
MX2008013776A (es) 2008-11-14
US20070255905A1 (en) 2007-11-01
RU2435204C2 (ru) 2011-11-27
KR20090018928A (ko) 2009-02-24
BRPI0711166A2 (pt) 2011-08-23

Similar Documents

Publication Publication Date Title
RU2008147131A (ru) Способ и устройство для кэширования команд переменной длины
US7055000B1 (en) Disk drive employing enhanced instruction cache management to facilitate non-sequential immediate operands
US10019369B2 (en) Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
CN101589374B (zh) 用于在处理器中设置高速缓存策略的方法和设备
US7793037B2 (en) Partial page scheme for memory technologies
US9672161B2 (en) Configuring a cache management mechanism based on future accesses in a cache
US10146545B2 (en) Translation address cache for a microprocessor
US20140237164A1 (en) Hybrid drive that implements a deferred trim list
JP2018163659A5 (ru)
JP5329234B2 (ja) 変換索引マニピェレーション
CN101223504B (zh) 高速缓存用于多状态处理器的指令
US20100185806A1 (en) Caching systems and methods using a solid state disk
EP1441284A3 (en) Apparatus and method for efficiently updating branch target address cache
US20070094476A1 (en) Updating multiple levels of translation lookaside buffers (TLBs) field
US20110320762A1 (en) Region based technique for accurately predicting memory accesses
TW201351145A (zh) 指令快取的減少耗能
JP6684266B2 (ja) 不揮発性メモリへの書き込み操作
US7657667B2 (en) Method to provide cache management commands for a DMA controller
RU2007139112A (ru) Глобальный индикатор изменений для уменьшения потребления энергии при кэш-промахах
RU2008111995A (ru) Запоминающее устройство и способ управления его работой
JP4666511B2 (ja) データ処理におけるメモリキャッシング
JP2001222468A5 (ru)
US5926841A (en) Segment descriptor cache for a processor
US20080155166A1 (en) Application specific processor for controlling data buffer manager
JP2009199665A (ja) データ記憶装置及びデータ記憶装置におけるデータ管理方法

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190420