CN108874694B - 空间存储器串流预取引擎的设备和方法、制造和测试方法 - Google Patents
空间存储器串流预取引擎的设备和方法、制造和测试方法 Download PDFInfo
- Publication number
- CN108874694B CN108874694B CN201810379927.9A CN201810379927A CN108874694B CN 108874694 B CN108874694 B CN 108874694B CN 201810379927 A CN201810379927 A CN 201810379927A CN 108874694 B CN108874694 B CN 108874694B
- Authority
- CN
- China
- Prior art keywords
- program counter
- offset
- field
- entry
- region
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 230000006886 spatial memory Effects 0.000 title claims abstract description 71
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012360 testing method Methods 0.000 title claims abstract description 10
- 238000004519 manufacturing process Methods 0.000 title claims abstract description 8
- 238000012549 training Methods 0.000 claims abstract description 147
- 238000001514 detection method Methods 0.000 claims abstract description 9
- 230000001419 dependent effect Effects 0.000 claims abstract description 4
- 230000015654 memory Effects 0.000 claims description 111
- 238000010998 test method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000665848 Isca Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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
- 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/0877—Cache access modes
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Debugging And Monitoring (AREA)
- Mobile Radio Communication Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明描述用于空间存储器串流预取引擎的设备和方法、制造和测试方法。在一个方面中,空间存储器串流预取引擎使用触发器到触发器步幅检测来将训练表条目提升到图案历史表条目且驱动更远距离区域中的空间相关预取。在另一方面中,空间存储器串流预取引擎维持程序计数器值的黑名单以不用作触发器值。在又一方面中,空间存储器串流预取引擎使用例如过滤表、训练表以及图案历史表的条目中的如触发器程序计数器的特定字段的散列值作为表的索引值。
Description
优先权
本申请案请求2017年8月30日提交的美国申请案系列第15/690,931号的优先权,并请求2017年5月12日提交的美国临时专利申请案系列第62/505,318号和2017年7月21日提交的美国临时专利申请案系列第62/535,460号的优先权,所有申请案的全部内容以引用的方式并入本文中。
技术领域
本公开大体上涉及处理器存储器管理,且更确切地说,涉及空间存储器串流置信度机制。
背景技术
计算机处理器执行高速缓冲存储器预取以通过在实际上需要获取指令或数据之前将指令或数据从更慢存储器(即,具有更慢读取/写入时间)中的其初始存储装置获取到更快本地存储器(即,具有更快读取/写入时间且常常更接近指令/数据管道定位)来增强执行性能。大部分现代的计算机处理器具有一个或多个快速和本地的高速缓冲存储器,其中直到要求才持有预取的数据和/或指令。
然而,预取通过猜测来起作用。为了更技术地来说,预取通过处理引擎来使用用于数据/指令的当前系列的存储器需求,以基于例如过去的性能、机率模型、算法和/或处理引擎接下来将要求什么数据/指令而预测。因此,不准确的预取存在问题,因为错误资料必须从本地更快存储器去除,且正确数据必须存取并移动到本地更快存储器中。不准确的预取不必要地增大功率消耗、产生系统拥塞(至少由错误数据与正确数据的添加的移动/交换造成)且明显地污染高速缓冲存储器的正常运作和使所述正常运作不稳定。
存在不同预取方法,常常由用于预取数据/指令的其图案突出,如依序预取和步幅预取。尽管有些过于简化,但依序预取可视为预取连续相邻存储块,而步幅预取可视为向前跳(或“跨越”S数目的块)以便预取存储块。
还存在与跨越相关的被称为空间存储器串流的更特定的方案。参看例如索莫奇(Somogyi)等人,空间存储器串流(Spatial Memory Streaming),第33次计算机体系结构国际会议(Int’l Symposium on Computer Architecture)(ISCA2006),第252-263页(下文中简称为“索莫奇(Somogyi)2006”);以及索莫奇(Somogyi)等人,空间存储器串流(SpatialMemory Streaming),指令水平平行度期刊(Journal of Instruction-LevelParallelism)13(2011),第1-26页(下文中简称为“索莫奇(Somogyi)2011”),所述文献皆以全文引用的方式并入本文中。在空间存储器串流(spatial memory streaming;SMS)中,代码与存取图案之间的强相关性被检测和采用以预测具有类似相对间隔的组中的存储器存取图案(“空间相关性”)。在索莫奇的具体设计中,尽管空间存储器串流可以其它方式实现,但空间存储器串流全部以与处理器分离的硬件实现,如所属领域的技术人员将理解。
然而,空间存储器串流方案具有多种劣势。空间存储器串流无法处置图案关于高速缓冲存储器之间的线边界的移位对准。此外,空间位向量通常用于每次存取空间图案力更大粒度,且无法追踪时间次序。空间存储器串流还缺乏稳固置信度机制,且不具动态适应性,即,如当动态分支行为改变偏移图案时,空间存储器串流不能够适应程序相变。这些劣势导致覆盖度和准确度减小、损失及时性,由此减小性能且增大功率消耗。
发明内容
因此,已作出本公开以至少解决本文中所描述的问题和/或缺点且以至少提供下文所描述的优点。
根据本公开的方面,提供一种用于空间存储器串流(SMS)预取引擎的方法,包含维持图案历史表(pattern history table;PHT),所述图案历史表包含至少一个表,在所述表中,每个条目具有包含与区域内的基础偏移值的偏移值的子字段的偏移列表字段和包含对应于每个偏移值的每一偏移置信度水平的子字段的每一偏移置信度字段;以及当激活图案历史表条目时,通过将当前存取匹配到激活的图案历史表条目中的所存储的偏移值来更新对应于激活的图案历史表条目中的每个偏移值的每一偏移置信度值,其中连续学习至少通过每一偏移置信度水平提供到空间存储器串流引擎。
根据本公开的方面,提供一种用于空间存储器串流(SMS)预取引擎的方法,包含当重排序队列(reordered queue;ROQ)中的第一加载指令/存取导致失误时,分配过滤表中的新条目,其中当前加载/指令的程序计数器(program counter;PC)为过滤表中的新条目的程序计数器触发器字段值;当由重排序队列中的第二加载指令/存取指示的存储器位置在与第一加载指令/存取相同的区域内时,将新的过滤表条目提升到训练表中的条目;每当由重排序队列中的后一加载指令/存取指示的存储器位置在相同的区域内时,将偏移添加到训练表条目中的偏移的列表,其中所述偏移为区域内的存储器位置如所测量与基础偏移的偏移距离;以及当重排序队列中的后一加载指令/存取的程序计数器与程序计数器触发器相同时,通过分配图案历史表中的新条目来将训练表条目提升到图案历史表中的条目,其中第一加载指令/存取与具有与程序计数器触发器相同的程序计数器的加载指令/存取之间的触发器到触发器步幅存储在图案历史表中。
根据本公开的方面,提供一种空间存储器串流(SMS)预取引擎,包含:一个或多个过滤表,其中过滤表中的每个条目包括用于程序计数器(PC)触发器、区域地址以及基础偏移中的至少一个的字段;以及一个或多个训练表,其中训练表中的每个条目包括用于程序计数器触发器、区域地址、基础偏移以及偏移的列表中的至少一个的字段,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移,其中,当重排序队列(ROQ)中的第一加载指令/存取导致失误时,分配过滤表中的新条目,其中当前加载/指令的程序计数器包括过滤表中的新条目的程序计数器触发器;当由重排序队列中的第二加载指令/存取指示的存储器位置在与第一加载指令/存取相同的区域内时,将新的过滤表条目提升到训练表中的条目;每当由重排序队列中的后一加载指令/存取指示的存储器位置在相同的区域内时,将偏移添加到训练表条目中的偏移的列表;以及当重排序队列中的后一加载指令/存取的程序计数器与程序计数器触发器相同时,通过分配图案历史表中的新条目来将训练表条目提升到图案历史表中的条目,其中第一加载指令/存取与具有与程序计数器触发器相同程序计数器的加载指令/存取之间的触发器到触发器步幅存储在图案历史表中。
根据本公开的方面,提供一种设备,包含空间存储器串流(SMS)预取引擎,所述空间存储器串流预取引擎执行以下步骤:当重排序队列(ROQ)中的第一加载指令/存取导致失误时,分配过滤表中的新条目,其中当前加载/指令的程序计数器(PC)为过滤表中的新条目的程序计数器触发器字段值;当由重排序队列中的第二加载指令/存取指示的存储器位置在与第一加载指令/存取相同的区域内时,将新的过滤表条目提升到训练表中的条目;每当由重排序队列中的后一加载指令/存取指示的存储器位置在相同的区域内时,将偏移添加到训练表条目中的偏移的列表,其中所述偏移为区域内的存储器位置如所测量与基础偏移的偏移距离;以及当重排序队列中的后一加载指令/存取的程序计数器与程序计数器触发器相同时,通过分配图案历史表中的新条目来将训练表条目提升到图案历史表中的条目,其中第一加载指令/存取与具有与程序计数器触发器相同的程序计数器的加载指令/存取之间的触发器到触发器步幅存储在图案历史表中。
根据本公开的方面,提供一种制造芯片组的方法,包含执行以下步骤的电路:维持一个或多个过滤表,其中过滤表中的每个条目包含程序计数器(PC)触发器、区域地址以及基础偏移;维持一个或多个训练表,其中训练表中的每个条目包含程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移;当重排序队列(ROQ)中的当前加载指令/存取导致失误时,分配过滤表中的新条目,其中新条目的程序计数器触发器为当前加载/指令的程序计数器,且新条目的区域地址和基础偏移为由当前加载指令/存取指示的存储器位置;当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,通过分配新的训练表条目来将新的过滤表条目提升到训练表中的条目,所述新的训练表条目包含过滤表条目的程序计数器触发器、过滤表条目的区域地址、过滤表条目的基础地址以及偏移的列表中的第一偏移,其中第一偏移为区域内的存储器位置如所测量与基础偏移的距离;以及每当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将另一偏移添加到训练表条目中的偏移的列表,其中所述另一偏移为区域内的存储器位置如所测量与基础偏移的偏移距离。
根据本公开的方面,提供一种测试设备的方法,包含测试设备是否具有执行以下步骤的电路:维持一个或多个过滤表,其中过滤表中的每个条目包含程序计数器(PC)触发器、区域地址以及基础偏移;维持一个或多个训练表,其中训练表中的每个条目包含程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移;当重排序队列(ROQ)中的当前加载指令/存取导致失误时,分配过滤表中的新条目,其中新条目的程序计数器触发器为当前加载指令/存取的程序计数器,且新条目的区域地址和基础偏移包括由当前加载指令/存取指示的存储器位置;当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,通过分配新训练表条目来将新的过滤表条目提升到训练表中的条目,所述新训练表条目包括过滤表条目的程序计数器触发器、过滤表条目的区域地址、过滤表条目的基础地址以及偏移的列表中的第一偏移,其中第一偏移为区域内的存储器位置如所测量与基础偏移的距离;以及每当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将另一偏移添加到训练表条目中的偏移的列表,其中所述另一偏移为区域内的存储器位置如所测量与基础偏移的偏移距离。
附图说明
通过以下结合附图进行的详细描述将更加清楚地了解本公开的某些实施例的上述和其它方面、特性以及优点,其中:
图1为根据本公开的实施例的二级(L2)高速缓冲存储器内的区域的示范性视图。
图2为根据本公开的实施例的图案历史表(PHT)中的条目200的示范性视图。
图3示出根据本公开的实施例的示出此处内的信息移动的空间存储器串流引擎的相关组件的示范性框图。
图4A到图4C提供根据本公开的实施例的基于呈不完整流程图格式的过滤表状态和训练表状态的空间存储器串流训练结果的实例。
图5示出根据本公开的实施例的图案历史表条目如何从重排序队列(ROQ)中的一系列存取或加载指令或存取的高速缓冲存储器行产生的实例。
图6示出根据本公开的实施例的当所存储图案历史表条目的程序计数器(PC)触发器在重排序队列中识别时,图案历史表条目如何用于从由空间图案指示的存储器位置预取数据/指令,所述空间图案存储在其偏移列表字段中。
图7示出根据本公开的实施例的本发明设备的示范性框图。
图8示出根据本公开的实施例的用于制造和测试本发明设备的示范性流程图。
附图标号说明
100:区域;
200:条目;
210:程序计数器触发器字段;
220:区域字段;
230:基础偏移字段;
240:偏移列表字段;
250:每一偏移置信度字段;
260:总体置信度字段;
310:有效生成表;
313:过滤表;
315:训练(或内存页)表;
320:图案历史表;
400:空间存储器串流引擎;
410:步骤;
415:步骤;
420:步骤;
425:步骤;
427:步骤;
430:步骤;
435:步骤;
437:步骤;
440:步骤;
445:步骤;
447:步骤;
510:步骤;
520:步骤;
523:偏移;
525:偏移;
530:步骤;
540:步骤;
610:步骤;
620:步骤;
630:步骤;
640:步骤;
650:步骤;
700:设备;
710:处理器;
720:非暂时性计算机可读媒体;
850:步骤;
860:步骤;
1000:区域/存储器位置;
1044:存储器位置;
3000:区域;
3100:存储器位置;
Cf1:每一偏移置信度字段;
Cf2:每一偏移置信度字段;
Cf3:置信度水平;
Cfall:总体置信度水平;
O1:第一偏移;
O2:第二偏移;
O3:偏移。
具体实施方式
在下文中,将参考附图来详细描述本公开的实施例。应注意,尽管所述相同元件展示于不同附图中,但相同元件由相同参考编号指定。在以下描述中,仅提供如详细配置和组件的具体细节来帮助总体理解本公开的实施例。因此,显而易见的是,在不脱离本公开的范围的情况下,所属领域的技术人员可对本文中所描述的实施例进行各种变化和修改。另外,出于清楚和简洁起见,省略熟知的功能和构造的描述。下文所描述的术语为考虑本公开中的功能所定义的术语,且可根据用户、用户的意图或习惯而不同。因此,术语的定义应基于整个说明书中的内容来确定。
本公开可具有各种修改和各种实施例,在所述公开中在下文参考附图详细描述实施例。然而,应理解,本公开不限于实施例,但包含本公开的范围内的所有修改、等效物和替代例。
尽管包含如第一和第二的序数的术语可用于描述各种元件,但结构元件不受术语限制。术语仅用于将一个元件与另一元件区分开。举例来说,在不脱离本公开的范围的情况下,第一结构元件可称为第二结构元件。类似地,第二结构元件也可称作第一结构元件。如本文中所使用,术语“和/或”包含一个或多个相关联的项目的任何组合和所有组合。
本文中的术语仅用于描述本公开的各种实施例但并不意图限制本公开。除非上下文另外明确指示,否则单数形式意图包含复数形式。在本公开中,应理解,术语“包含”或“具有”指示特征、编号、步骤、操作、结构元件、份数或其组合的存在,且不排除一个或多个其它特征、编号、步骤、操作、结构元件、部件或其组合的存在或添加所述一个或多个其它特征、编号、步骤、操作、结构元件、部件或其组合的可能性。
除非不同定义,否则本文中所使用的所有术语具有与本公开所属领域的技术人员理解的那些术语相同的含义。如一般所使用的词典中所定义的那些术语的术语将解释为具有与相关技术领域中的上下文含义相同的含义,且除非在本公开中清楚地定义,否则将不解释为具有理想或过度正式的含义。
各种实施例可包含一个或多个元件。元件可包含被布置成执行特定操作的任何结构。尽管实施例可借助于实例使用呈一定布置的有限数目的元件来描述,但实施例可包含视需要用于给定实施方案的呈替代布置的更多或更少元件。值得注意的是,“一个实施例”或“实施例”的任何参考意指结合实施例所描述的特定特征、结构或特性包含于至少一个实施例中。短语“一个实施例”(或“实施例”)在本说明书中的各个地方呈现未必是指相同实施例。
本公开的实施例提供用于更新和控制预取引擎的系统、方法以及设备。根据一个实施例,本公开提供适应改变程序状态的连续学习。
根据一个实施例,本公开提供采集时间以及空间次序的偏移列表,由此导致改进及时性。根据一个实施例,代替在区域中每一高速缓冲存储器行存储一个位,本公开使用偏移的列表。在另一实施例中,偏移存储为空间位向量。
根据一个实施例,本公开提供字节粒度,所述字节粒度能够区分到前一行或后续高速缓冲存储器行的存取(高速缓冲存储器加载指令)。根据本公开的实施例可将起始偏移存储器位置存储小到字节。在一个实施例中,存取所要求的尺寸还存储在额外字段中。
根据各种实施例,本公开提供允许出于准确度评定个别偏移的每一偏移置信度。因此,根据本公开的系统适应例如由于分支改变的程序相位状态。根据本公开的一个实施例的本发明系统可使用存取队列以确认训练。根据本公开的一个实施例的本发明系统可使用置信度水平以例如按比例调整未处理预取的数目。根据一个实施例,本发明系统提供允许大部分预取从最佳经训练的条目发出的确认方案。
根据各种实施例,本公开还通过对触发器的第二次出现具有提升作用且使用触发器到触发器戳记来提供智能训练;提供对触发器(可为行内或行外的)黑名单;提供触发器到触发器步幅检测;以及提供对索引表条目的触发器的散列的使用。
根据一个实施例,本发明系统的相关组件包含一个或多个核心处理器,所述核心处理器执行涉及数据的指令,所述指令及数据皆存储在存储器中。为了这样做,一个或多个核心处理器在处理时存取一级(L1)高速缓冲存储器的数据和指令。L1高速缓冲存储器随后存取L2高速缓冲存储器。
就存取存储于L2高速缓冲存储器内的数据/指令而言,L2高速缓冲存储器分解为空间区域,所述空间区域在下文更详细地描述。预提取器在空间存储器串流引擎的控制下执行从L2高速缓冲存储器获取区域。如上文所论述,基于核心处理器将相当快地需要那个数据的预测,预提取器存取L2高速缓冲存储器中的存储地址且将数据加载到L1高速缓冲存储器中。针对关于这类组件的操作和交互的更多细节,参看拉达克利先(Radhakrishan)等人名称为《调谐预提取[sic]串流的程度的适应机制(Adaptive Mechanism to Tune theDegree of Pre-Fetches[sic]Streams)》的美国专利第9,665,491号和桑达拉姆(Sundaram)等人名称为《用于乱序处理器中的高效预取训练的地址重排序机制(AddressRe-Ordering Mechanism for Efficient Pre-Fetch Training in an Out-Of-OrderProcessor)》的申请中的美国专利公开第2017/0116128号,所述专利皆由与本申请案相同的受让人共同拥有且由此以引用的方式并入。
如上文所提及,空间存储器串流可整体以与处理器分离的硬件实现,但空间存储器串流可以其它方式实现,如所属领域的技术人员将理解。参看例如索莫奇(Somogyi)2006和索莫奇(Somogyi)2011。
空间存储器串流包含有效生成表(active generation table;AGT)和图案历史表(PHT)。基本上,有效生成表记录且查找空间图案,而图案历史表存储来自有效生成表的空间图案,如下文进一步论述,所述空间图案包含其触发器(即,开始空间图案的起始程序计数器(PC)值)。当识别触发器时,如由触发器指示的存储的空间图案所指示,基于核心处理器将需要这类数据的概率,图案历史表将来自L2高速缓冲存储器中的存储地址的数据存取和加载到L1高速缓冲存储器中。
取决于实施例,有效生成表自身可为单个表或多个表。共同结构含有至少两个表:过滤表和训练表,所述表用作学习/查找系列指令加载中的空间图案的处理的部分,如下文参考图3详细地论述。
因此,本公开可视为针对两种不同处理:由有效生成表执行的训练/学习和由图案历史表执行的实际操作。在阐释训练/学习处理之前,在下文提供空间存储器串流中的空间图案的存储装置的简短概述。
图1为根据本公开的实施例的L2高速缓冲存储器内的区域的示范性视图,而图2为图案历史表中的条目200的示范性视图。
如上文所论述,一旦空间图案由有效生成表识别,包含用于空间图案的触发器的空间图案存储在图案历史表中。在图2中,图案历史表条目200分解为若干字段。触发器存储为程序计数器触发器字段210,所述触发器呈用于特定空间图案的触发器的程序计数器(PC)的值的形式,且区域字段220为以程序计数器触发器字段210中的程序计数器触发器开始的空间图案的区域的位置。基础偏移字段230指示与程序计数器触发器字段210中所鉴别的程序计数器触发器相关的起始存储器位置(基础偏移),如从由区域字段220所鉴别的区域的区域边界所测量。
偏移列表字段240存储关于基础偏移字段230中的所鉴别的基础偏移的系列偏移值(或“偏移”),所述偏移值在触发器之后构成空间图案。如所属领域的普通技术人员将理解,这类偏移可例如存储为单个空间向量(也称为空间位向量)或按顺序存储为系列位置,所述位置在与程序计数器触发器字段210中的值相关的空间图案的区域字段220中所鉴别的区域内。在此实施例中,偏移存储为自基础偏移的一系列偏移,如图1的区域100中所示的一系列偏移的实例。在将偏移存储为空间位向量的实施例中,空间图案保持N次迭代。在每次迭代时,按位与(AND)功能(保守性)或或(OR)功能(积极性)使用(上一迭代的)旧图案在(本迭代的)新图案上执行。
返回至图2,每一偏移置信度字段250存储与存储在偏移列表字段240中的偏移中的每个相关的置信度水平,而总体置信度字段260存储全部系列偏移的置信度水平,即,存储与程序计数器触发器字段210中的值相关的空间图案。置信度水平为动态的且随着空间存储器串流向加载指令的持续串流学习而变化。
图3示出根据一个实施例的示出此处内的信息移动的空间存储器串流引擎的相关组件的示范性框图。如上文所论述,空间存储器串流引擎400拆分成有效生成表(AGT)310和图案历史表(PHT)320。尽管有效生成表310可概念上和逻辑上作为单个表(且以那种方式构建),但在此实施例中,有效生成表310被实现为两个表:过滤表313和训练(或内存页)表315。出于阐释方便起见,尽管当然,在此实施例中仅存在一个重排序队列,重排序队列(ROQ)展示在空间存储器串流引擎400的两侧,所述重排序队列采用当前可获得的各种高速缓冲存储器加载指令且将所述指令按正执行的程序中所需要的次序放置。
处理以重排序队列中的高速缓冲存储器加载指令行开始,其可为(或可不为)新空间图案的失误/触发器,所述新空间图案临时存储/分配在过滤表313中。在此实施例中,条目包含与图案历史表条目200中的前三个字段相同的字段,所述字段为程序计数器触发器字段、区域(即,区域的地址)字段以及基础偏移(即,与区域边界的基础偏移)字段,如下文所示:
过滤表条目字段
PC触发器 | 区域 | 基础偏移 |
如果下一加载指令在相同的区域内,其意指所述加载指令可通过仅仅当前区域内的偏移来获取而非获取另一区域,对应条目在训练表315中制作。在此实施例中,训练表条目包含与图案历史表条目200的前四个字段相同的字段,所述字段即,程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段。如下文所指示,偏移列表字段存储自基础偏移的一系列八个不同偏移。
训练表条目字段
一旦来自过滤表313的程序计数器触发器条目分配到训练表条目,如果高速缓冲存储器加载指令仍在相同的区域内,训练表条目存储偏移列表字段中的额外偏移。
在一个实施例中,如下文参考图5所示且描述,代替等待驱逐和无效,智能训练由触发器到触发器戳记的使用来提供,其中在程序计数器触发器再次呈现于重排序队列中时,出现训练表到图案历史表的提升。在此实现方案中,在第一个失误时使用程序计数器触发器、区域地址和基础偏移将条目分配于过滤表313中。在相同的区域(具有不同程序计数器)中的第二个失误时,过滤条目复制到训练表315,且计算与基础存取的偏移并且还存储在新训练表条目的偏移列表字段中。在与程序计数器触发器相同的程序计数器的值下一次出现时,训练表条目提升到图案历史表320中的条目,且预取使用作为基础区域和偏移的新地址来开始。在所述提升之前,相同的区域中的任何额外存取具有其偏移,所述偏移经计算且存储在训练表条目中。
学习/训练处理在上文大致描述,且现在下文简短描述空间存储器串流引擎400的有效操作。
如还在图3中示出,空间存储器串流引擎可从重排序队列中的当前高速缓冲存储器加载指令中识别图案历史表表320中的存储的图案的程序计数器触发器,且随后提供对应于来自图案历史表表320的程序计数器触发器的先前鉴别和存储的空间图案供用于基于存储在图案历史表表320条目中的空间图案来预取数据。
下文论述根据本公开的实施例的训练/学习和存储所查找的空间图案的示范性方法。
根据本公开的实施例的方法以重排序队列(ROQ)开始,所述方法将当前可获得的各种高速缓冲存储器加载指令放到实际上在程序中执行的次序中。本发明系统确定高速缓冲存储器加载指令中指示的存储器存取是否已在L1高速缓冲存储器中,在这种情况下,因为预提取器不必预取数据,所以方法可以重排序队列中的下一高速缓冲存储器加载指令继续。如果由高速缓冲存储器加载指令指示的存储器地址处存取的所要求的数据在L1高速缓冲存储器中不可用,本发明系统执行如下文所描述的空间存储器串流训练。
本发明系统确定含有由高速缓冲存储器加载指令指示的存储器地址处的所要求的数据的区域是否属于有效图案区域。如果含有由高速缓冲存储器加载指令指示的存储器地址处的所要求的数据的区域属于有效图案区域,本发明系统确定含有由高速缓冲存储器加载指令指示的存储器地址处所存取的所要求的数据的区域中的位置是否由本图案历史表条目中的任何偏移来鉴别。如果含有由高速缓冲存储器加载指令指示的存储器地址处所存取的所要求的数据的区域中的位置不能由本图案历史表条目中的任何偏移来鉴别,所要求的数据的位置的偏移添加到训练表或执行另一形式的重新训练。如果含有由高速缓冲存储器加载指令指示的存储器地址处所存取的所要求的数据的区域中的位置由本图案历史表条目中的(下一)偏移鉴别,所述偏移的每一偏移置信度水平增大。此增大还计数作为对总体置信度水平的“确认”,如下文进一步详细论述。
下表1示出在本公开的一个实施例中呈逻辑输入和逻辑输出形式的空间存储器串流训练的结果。更具体地说,基于过滤表和训练表的状态,或更准确地说,基于过滤表或训练表的程序计数器字段和区域字段是否匹配当前高速缓冲存储器行加载指令中的相同的值,表1示出结果。表1仅意图作为对阐释/描述的辅助,且不对应于硬件中的实际表(如查找表(lookup table;LUT)),而是示出硬件组件系统的输出,所述硬件组件系统基于输入(当前高速缓冲存储器行加载指令)和训练表以及过滤表状态来产生这类结果。
表1:空间存储器串流训练的结果
针对表1中的标记为“(不可能)”的条目,在代码/寄存器传递语言(RegisterTransfer Language;RTL)中存在防止结果一直出现的断言。条目n1n1(例如,0101和0111)列为“不可能”,因为区域对于过滤表或训练表中的条目是唯一的,且一旦过滤表条目提升到训练表条目,相同的区域中的任何稍后程序计数器存取只更新训练表条目。条目1n1n(例如,1010和1111)列为“不可能”,因为一旦给定程序计数器在训练表中,第二次出现使得条目提升到图案历史表,且由此稍后出现的程序计数器触发器无法分配给过滤表,而是用于再训练图案历史表条目。
图4A到图4C提供根据本公开的实施例的基于呈不完整流程图格式的过滤表状态和训练表状态提供空间存储器串流训练结果的实例。类似于表1,图4A到图4C中的流程图决定菱形为出于阐释/描述的目的,且不对应于以软件或硬件实现的决定点,而是基于输入(当前高速缓冲存储器行加载指令)和训练表状态以及过滤表状态示出根据本公开的硬件组件系统的特定输出。
参看图4A,在410处,本发明系统确定当前重排序队列高速缓冲存储器加载指令或存取的程序计数器是否匹配训练表条目的程序计数器。如果当前重排序队列高速缓冲存储器加载指令或存取的程序计数器匹配训练表条目的程序计数器(在410处,是=1),在415处训练表条目提升到图案历史表条目。如果当前重排序队列高速缓冲存储器加载指令或存取的程序计数器不匹配训练表条目的程序计数器(在410处,否=0),本发明系统确定当前重排序队列高速缓冲存储器加载指令在420处是否匹配过滤表条目的程序计数器。如果当前重排序队列高速缓冲存储器加载指令的程序计数器匹配过滤表条目的程序计数器(在420处,是=1),在425处过滤表条目重置到新的区域。如果当前重排序队列高速缓冲存储器加载指令的程序计数器不匹配过滤表条目的程序计数器(在420处,否=0),在427处不采取行动。
参看图4B,在430处,本发明系统确定当前重排序队列高速缓冲存储器加载指令的区域是否匹配过滤表条目的区域。如果当前重排序队列高速缓冲存储器加载指令的区域匹配过滤表条目的区域(在430处,是=1),这意味着下一存储器存取在相同的区域内且可由偏移定义,在435处过滤表条目提升到训练表条目。如果当前重排序队列高速缓冲存储器加载指令的区域不匹配过滤表条目的区域(在430处,否=0),在437处不采取行动。将过滤表的程序计数器值和区域值与当前重排序队列高速缓冲存储器加载指令(例如,图4A中的420和图4B中的430)进行比较/匹配的这些操作通常同时操作(并行地操作)。
参看图4C,在440处,本发明系统确定当前重排序队列高速缓冲存储器加载指令的区域是否匹配训练表条目的区域。如果当前重排序队列高速缓冲存储器加载指令的区域匹配训练表条目的区域(在440处,是=1),在445处将区域内的新的存储器位置的偏移添加到训练表条目。当在440处存在训练表区域匹配时,更新所有训练表条目。训练表条目根据其程序计数器触发器是唯一的,且可存在针对一个区域的多个程序计数器触发器。为处理这个情况,更新进入的区域的所有训练表条目。如果当前重排序队列高速缓冲存储器加载指令的区域不匹配训练表条目的区域(在440处,否=0),在447处不采取行动。
根据一个实施例,特定程序计数器触发器在黑名单上以避免污染训练结构,且能够甚至在嘈杂条件下进行优良训练。在黑名单上的程序计数器触发器无法用于预取,由此防止无价值的训练和发出不良预取。“行内”黑名单使用图案历史表条目自身所存储的置信度水平防止其自身的使用,而“行外”黑名单使用单独表来保持图案历史表容量。
此外,如下文参考图5中所示的实施例所示出和描述,触发器到触发器步幅检测允许预取串流获得更前面的需求。在触发器到触发器步幅检测中,在触发器程序计数器的第二次出现的情况下,步幅在触发器程序计数器的第一次出现与第二次出现之间计算且存储在图案历史表320中。在触发器程序计数器的每次新的出现的情况下,计算距前一触发器程序计数器的新步幅。这些步幅充当标准步幅检测算法的输入,所述标准步幅检测算法的输出可用于驱动更远距离区域中的空间相关预取。
根据一个实施例,训练表条目和/或图案历史表条目的程序计数器触发器为散列的且用作表条目的索引值(代替程序计数器触发器自身),由此减小存储同时维持用于训练和激活的存取图案的分离。完整程序计数器具有多个位—在64位架构中至少40个—且程序计数器的部分可以保持大部分信息(和散列版本可彼此识别的至少足够的信息)但使用更少位的方式在算术上组合(“散列”),而非存储完整40个位。在这些实施例中,更小“散列”值存储在表的“程序计数器触发器”字段而非程序计数器触发器的实际40个位中。此外,用于存储程序计数器值的任何字段可被其散列值置换,而非存储其完整值。
图5示出图案历史表条目如何根据上文所描述的步幅到步幅检测技术从重排序队列中的一系列高速缓冲存储器行加载指令或存取产生的实例。图5示出空间存储器串流的过滤表、训练表以及图案历史表、以及来自重排序队列的一系列高速缓冲存储器加载命令。图5中的训练表条目仅标注距基础偏移的前3个偏移(O1、O2、O3),其中其它子字段中的省略号指示可存在任何数目个偏移,所述偏移存储在训练表或图案历史表条目中。类似地,图5中的图案历史表表条目具有前3个偏移(O1、O2、O3)随后为具有省略号的子字段,并且,在所述字段下面,存在对应字段Cf1、Cf2、Cf3…,所述对应字段为每个偏移的对应置信度值。此配置仅为出于易于描述的目的,因此每个偏移邻近于其预偏移置信度水平呈现。用于全部空间图案的总体置信度水平Cfall为下一字段,而用于程序计数器触发器的呈现之间的步幅的触发器到触发器戳记为最后字段。
在图5中,具有程序计数器=x的第一命令为加载存储器位置103C中的数据/指令(呈十六进制表示法形式,其中每个数字可为0到F,即,0到15)。在此实施例中,每个区域假设为4kB=4,096字节,且因为十进制中的4,096等于十六进制表示法中的1,000,所以存储器位置的第一个数字识别其区域—在此情况下,区域1000。在510处,存在失误,并且因此条目在过滤表中产生,其中条目具有(可能的)程序计数器触发器、区域(1000)以及基础偏移(3C)。
下一加载指令针对存储器位置1044,所述存储器位置1044在与前一加载相同的区域内。因此,随着两个加载指令在区域形成空间图案,在520处在训练表中制作新条目。训练表中的条目具有程序计数器触发器(x)、区域(1000)、基础偏移(3C)以及偏移523,所述偏移523是当与基础偏移(在十进制中+8以从十六进制表示法的103C获得1044)组合时获得正加载的当前存储器位置的值。
下一加载在存储器位置1000处,所述存储器位置1000仍在新的训练表条目的区域内。因此,新的偏移525(十进制中的-60)添加到训练表条目,由此增大区域内的空间图案的长度。
下一加载在存储器位置5C0A处,所述存储器位置5C0A远在新的训练表条目的区域之外。因此,取消分配过滤表条目。
在将训练表条目提升到图案历史表条目之前,相同的区域中的任何额外存取具有在训练表条目中计算和存储的其偏移,如通过实例在530处所示出。当程序计数器触发器再次呈现在重排序队列中时,出现将训练表条目提升到图案历史表条目,如在540处所示出。程序计数器触发器还触发预取处理,如参考图6所论述,图5的540处的程序计数器触发器的第二次呈现的高速缓冲存储器加载指令(x LDR 30F0)从所述预取处理取得。如上文所论述,步幅在程序计数器触发器的第一次出现与第二次出现之间计算且存储在图案历史表条目中(例如,在步幅下,图5中的“x→x”)。因为图案历史表条目为新的,所以不存在每一偏移或总体置信度水平字段中的值。下文参考图6描述产生和改变多少值。
图6示出当所存储的图案历史表条目的程序计数器触发器在重排序队列中识别时,图案历史表条目如何用于从由空间图案指示的存储器位置预取数据/指令的实例,所述空间图案存储在其偏移列表字段中。另外,根据本公开的实施例,个别偏移和总体空间图案两个的准确度使用图案历史表条目中的每一偏移和总体置信度字段来追踪。
图6仅示出具有来自重排序队列的系列高速缓冲存储器加载命令与空间存储器串流的图案历史表,在来自图5的程序计数器触发器的第二次出现的情况下以加载命令/存取开始,且另一“预取/加载”栏被添加以示出加载指令如何根据本公开的实施例来实现。因为偏移以十进制为单位,因此预取/加载栏的部分展示从存储器位置的十进制值添加和减除。
在图6中,第一加载命令具有程序计数器=x,其匹配具有x的程序计数器触发器的图案历史表条目,其在610处激活用于预取的所述图案历史表条目。至少因为开始位置为任意的,且实际空间图案由距起点的相对偏移定义,所以在620处第一加载命令的区域和基础偏移值替代前一值。尽管此替代在620处展示为邻近于第二加载命令,在本实施例中,此替代将与激活的图案历史表条目同时出现,即,大致与第一加载命令同时。
根据图案历史表条目,下一加载在距第一加载指令+8偏移处。然而,通常,从L2高速缓冲存储器下载的高速缓冲存储器行(或块)为32字节、64字节或128字节长,从加载指令中的存储器位置开始。因此,+8偏移处的存储器位置已由前一加载指令下载。在根据本公开的实施例中,偏移的尺寸按顺序使用以防止不必要的加载,且因此,不存在从L2高速缓冲存储器到L1高速缓冲存储器的额外下载,因为+8偏移处的存储器位置已经在来自前一加载指令的L1高速缓冲存储器中。
然而,本公开的实施例的另一方面为以总体和每一偏移水平粒度两个来追踪空间图案的准确度。因为第二加载指令匹配图案历史表条目中的+8偏移(即,30F8)处的所预测的存储器位置,所以在630处正一(+1)添加到对应于第一偏移O1的每一偏移置信度字段Cf1。类似地,因为O2的-60偏移也匹配下一加载指令(30B4),且因此在640处正一(+1)添加到对应于第二偏移O2的每一偏移置信度字段Cf2。
尽管上文论述为一系列事件,但图案历史表条目的功能为预取,且在610处来自L2高速缓冲存储器的30B4高速缓冲存储器行/块下载以与图案历史表条目激活的大致相同的时间制作,因为偏移值可即刻在激活的图案历史表条目中获得。仅每一偏移置信度水平的分配必须等待重排序队列中的实际加载指令,以便评估所下载/预取的是否为实际上所需的。
用于存储器位置(3100)的下一加载指令在图案历史表条目的区域(3000)内。由此,在650处将下一存储器位置的偏移(+16)作为O3添加到图案历史表条目。因此,在本公开的实施例中,图案历史表条目在核心处理器的操作期间不断地被改善和评估。因为O3仅添加到图案历史表条目,所以其尚无对应置信度水平Cf3。根据本公开的其它实施例,新添加的偏移的置信度水平可最初被分配+1值或另一值,所述另一值已将自身展示为用于这个系列的指令的良好开始置信度水平。
在本公开的其它实施例中,特定偏移的每一偏移置信度水平随时间推移可用于消除预取,所述预取不具有匹配实际加载指令的合理的足够机率。在下文图案历史表条目的实例中,六个偏移的空间图案具有比其它偏移(O2、O3以及O5)具有更高置信度水平的一些偏移(O1和O6)。在本公开的一个实施例中,当激活图案历史表条目时,如O3的具置信度水平为0的任何偏移不与偏移的其余部分被预取。由错误预取造成的资源浪费超过不使用可能良好但也可能不良的预取的风险(即,因为正确预取的置信度水平过低,所以忽略所述正确预取的风险)。
作为另一实例,在本公开的另一实施例中,阈值设定在将不预取较低的任何偏移值。使用以下实例,如果确定阈值>1,将不预取由偏移O2、偏移O3以及偏移O5指示的存储器位置。以这种方式,本公开的实施例可消除由总体空间图案的较弱成员造成的错误的预取,同时保存随时间推移已展示为准确的预取。
图案历史表条目的实例
用于存储在图案历史表条目中的整个空间图案的总体置信度水平(CFall)可以许多不同方式计算和用于改进预取准确度。举例来说,总体置信度水平CFall可计算为饱和计数器,所述饱和计数器在确认时的值中增大且在触发器程序计数器使无对应确认的图案历史表条目激活时(在最差情况情境中)减小。如上文所论述,可在所存储的图案历史表条目的空间图案中的偏移展示为正确的且其每一偏移置信度水平递增+1时确认。
总体置信度水平CFall可用于通过例如确定在看见第一次确认之前应发出多少次预取且/或对每次确认发出多少次预取(这可为非线性的,例如,第一次确认触发另2个预取,而第二次确认触发3个预取等)来改进预取准确度。
如上文所详细描述,本公开尤其提供:适应改变程序状态的连续学习;采集时间次序的偏移列表;能够区分前一行或后续行的存取的字节粒度;允许追踪个别偏移随时间推移的准确度的每一偏移置信度;以及允许大部分预取从最佳经过训练的条目发出的确认方案。
本公开还尤其提供:通过对程序计数器触发器的第二次出现具有提升和如尤其由图5所展示使用触发器到触发器戳记来进行智能训练;图案历史表(其可为行内或行外的)中的程序计数器触发器的黑名单;触发器到触发器步幅检测;以及使用程序计数器触发器的散列以索引图案历史表条目。
图7示出根据一个实施例的本发明设备的示范性图。设备700包含至少一个处理器710和一个或多个非暂时性计算机可读媒体720。当执行存储在一个或多个非暂时性计算机可读媒体720上的指令时,至少一个处理器710执行以下步骤:维持用于空间存储器串流引擎的一个或多个过滤表,其中过滤表中的每个条目包括程序计数器触发器、区域地址以及基础偏移;维持用于空间存储器串流引擎的一个或多个训练表,其中训练表中的每个条目包括程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移;当空间存储器串流引擎的重排序队列中的当前加载指令/存取导致失误时,分配过滤表中的新条目,其中新条目的程序计数器触发器为当前加载/指令的程序计数器,且新条目的区域地址和基础偏移包括由当前加载指令/存取指示的存储器位置;当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将新的过滤表条目通过分配新的训练表条目来提升到训练表中的条目,所述新的训练表条目包括过滤表条目的程序计数器触发器、过滤表条目的区域地址、过滤表条目的基础地址以及偏移的列表中的第一偏移,其中第一偏移为区域内的存储器位置如所测量与基础偏移的距离;以及每当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将另一偏移添加到训练表条目中的偏移的列表,其中所述另一偏移为区域内的存储器位置如所测量与基础偏移的偏移距离。此外,一个或多个非暂时性计算机可读媒体720存储至少一个处理器710执行所述步骤的指令。
在另一实施例中,电路执行上述步骤。
在另一实施例中,当执行存储在一个或多个非暂时性计算机可读媒体720上的指令时,至少一个处理器710执行以下步骤:维持用于空间存储器串流预取引擎的图案历史表,图案历史表包括至少一个表,在所述表中,每个条目具有偏移列表字段和每一偏移置信度字段,所述偏移列表字段包括用于距区域内的基础偏移值的偏移值的子字段,所述每一偏移置信度字段包括用于对应于每个偏移值的每一偏移置信度水平的子字段;以及当激活图案历史表条目时,通过将当前存取匹配到激活的图案历史表条目中的所存储的偏移值来更新对应于激活的图案历史表条目中的每个偏移值的每一偏移置信度值。此外,一个或多个非暂时性计算机可读媒体720存储至少一个处理器710执行所述步骤的指令。连续学习可至少由每一偏移置信度水平提供到空间存储器串流引擎。
在另一实施例中,电路执行上述步骤。
图8示出根据一个实施例的用于制造和测试具有空间存储器串流预取引擎的设备的示范性流程图。
在850处,制造设备(在此实例中,芯片组),所述设备包含执行以下步骤的电路:维持用于空间存储器串流引擎的一个或多个过滤表,其中过滤表中的每个条目包括程序计数器触发器、区域地址以及基础偏移;维持用于空间存储器串流引擎的一个或多个训练表,其中训练表中的每个条目包括程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移;当空间存储器串流引擎的重排序队列中的当前加载指令/存取导致失误时,分配过滤表中的新条目,其中新条目的程序计数器触发器为当前加载/指令的程序计数器,且新条目的区域地址和基础偏移包括由当前加载指令/存取指示的存储器位置;当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将新的过滤表条目通过分配新的训练表条目来提升到训练表中的条目,所述新的训练表条目包括过滤表条目的程序计数器触发器、过滤表条目的区域地址、过滤表条目的基础地址以及偏移的列表中的第一偏移,其中第一偏移为区域内的存储器位置如所测量与基础偏移的距离;以及每当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将另一偏移添加到训练表条目中的偏移的列表,其中所述另一偏移为区域内的存储器位置如所测量与基础偏移的偏移距离。连续学习可由此提供到空间存储器串流引擎。
在860处,测试设备(在此实例中为芯片组)。测试860包含测试设备是否具有执行以下步骤的电路:维持用于空间存储器串流引擎的一个或多个过滤表,其中过滤表中的每个条目包括程序计数器触发器、区域地址以及基础偏移;维持用于空间存储器串流引擎的一个或多个训练表,其中训练表中的每个条目包括程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与区域地址相同的区域的存储器位置距基础偏移的偏移;当空间存储器串流引擎的重排序队列中的当前加载指令/存取导致失误时,分配过滤表中的新条目,其中新条目的程序计数器触发器为当前加载/指令的程序计数器,且新条目的区域地址和基础偏移包括由当前加载指令/存取指示的存储器位置;当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将新的过滤表条目通过分配新的训练表条目来提升到训练表中的条目,所述新的训练表条目包括过滤表条目的程序计数器触发器、过滤表条目的区域地址、过滤表条目的基础地址以及偏移的列表中的第一偏移,其中第一偏移为区域内的存储器位置如所测量与基础偏移的距离;以及每当由重排序队列中的下一加载指令/存取指示的存储器位置在相同的区域内时,将另一偏移添加到训练表条目中的偏移的列表,其中所述另一偏移为区域内的存储器位置如所测量与基础偏移的偏移距离。
在另一实施例中,制造芯片组,所述芯片组包含至少一个处理器和一个或多个非暂时性计算机可读媒体。当执行存储在一个或多个非暂时性计算机可读媒体上的指令时,至少一个处理器执行以下步骤:维持用于空间存储器串流预取引擎的图案历史表,图案历史表包括至少一个表,在所述表中,每个条目具有偏移列表字段和每一偏移置信度字段,所述偏移列表字段包括用于距区域内的基础偏移值的偏移值的子字段,所述每一偏移置信度字段包括用于对应于每个偏移值的每一偏移置信度水平的子字段;以及当激活图案历史表条目时,通过将当前存取匹配到激活的图案历史表条目中的所存储的偏移值来更新对应于激活的图案历史表条目中的每个偏移值的每一偏移置信度值。此外,一个或多个非暂时性计算机可读媒体存储用于至少一个处理器的指令来执行上述步骤。
在另一实施例中,制造芯片组,所述芯片组包含执行上述步骤的电路。
如所属领域的普通技术人员将理解,取决于具体实施例和/或实现方案,上文所描述的关于本公开的实施例的步骤和/或操作可以不同次序或并行地或在不同时期同时地等出现。不同实施例可以不同次序或以不同方式或手段执行动作。如所属领域的普通技术人员将理解,一些附图为所执行的动作的简化表示,在本文中其描述简化概貌图,且实际实施方案将更为复杂、需要更多阶段和/或组件,且还将取决于特定实施方案的需求而变化。作为简化表示,这些附图不展示其它要求的步骤,因为这些为所属领域的普通技术人员已知和理解的且可不与本描述相关和/或对本描述有帮助。
类似地,如所属领域的普通技术人员将理解,一些附图为仅展示相关组件的简化方块图,且这些组件中的一些仅表示本领域中所熟知的功能和/或操作,而非实际的硬件设备。在此情况下,组件/模块中的一些或全部可以多种及/或组合方式实现或提供,如至少部分以固件和/或硬件实现或提供,所述固件和/或硬件包含但不限于:一个或多个专用集成电路(“application-specific integrated circuits;ASIC”)、标准集成电路、执行适当指令的控制器,以及包含微控制器和/或嵌入的控制器、现场可编程门阵列(“field-programmable gate arrays;FPGA”)、复杂可编程逻辑装置(“complex programmablelogic device;CPLD”)等等。系统组件和/或数据结构中的一些或全部还可存储为非暂时性计算机可读媒体(例如,如硬盘;存储器;计算机网络或蜂窝式无线网络或其它数据传输媒体;或待由适当驱动器或经由适当连接件读取的便携式媒体制品,如DVD或闪存装置)上的内容(例如,为可执行或其它机器可读软件指令或结构化数据),以便启用或配置计算机可读媒体和/或一个或多个相关联的计算系统或装置,来执行或另外使用或提供内容,以执行所描述的技术中的至少一些。
无论单独或以多处理布置的一个或多个处理器、简单微控制器、控制器等可用于执行指令序列以实现本公开的实施例,所述指令序列存储在非暂时性计算机可读媒体上。在一些实施例中,硬连线电路可用于代替软件指令或与软件指令组合。因此,本公开的实施例不限于硬件电路、固件和/或软件的任何特定组合。
如本文中所使用的术语“计算机可读媒体”是指存储指令的任何媒体,所述指令可提供到处理器供用于执行。这种媒体可采取多种形式,包含但不限于非易失性媒体和易失性媒体。非暂时性计算机可读媒体的常见形式包含例如软性磁盘、软磁盘、硬盘、磁带或任何其它磁性媒体、CD-ROM、任何其它光学媒体、穿孔卡片、纸带、具有孔洞图案的任何其它物理媒体、RAM、PROM和EPROM、FLASH-EEPROM、任何其它存储器芯片或盒带、或存储可由处理器执行的指令的任何其它媒体。
本公开的一些实施例可至少部分地在便携式装置上实现。如本文中所使用的“便携式装置”和/或“移动装置”是指具有接收无线信号的能力的任何便携式或可移动电子装置,所述装置包含但不限于多媒体播放器、通信装置、计算装置、导航装置等。因此,移动装置包含(但不限于)用户装备(user equipment;UE)、笔记本电脑、平板电脑、便携式数字助理(Portable Digital Assistant;PDA)、mp3播放器、手持式个人计算机、即时通讯装置(Instant Messaging Device;IMD)、蜂窝式电话、全球导航卫星系统(GlobalNavigational Satellite System;GNSS)接收器、手表或一个人可穿戴和/或携带的任何这类装置。
鉴于本公开,本公开的各种实施例可在集成电路(integrated circuit;IC)中实现,所述集成电路也被称为微芯片、硅芯片、计算机芯片或仅如所属领域的普通技术人员将理解的“芯片”。这种IC可为例如宽带和/或基带调制解调器芯片。
本公开不限于本文中所论述的实施例,并且,如所属领域的普通技术人员将理解,特定实施方案的细节将取决于预定用途、环境等而变化,且由此本公开意图应用于其范围内的任何实现方案。
虽然已描述若干实施例,但应理解,可在不脱离本公开的范围的情况下进行各种修改。因此,对所属领域的技术人员而言显而易见的是,本公开不限于本文中所描述的实施例中的任一种,而相反,具有仅由所附权利要求书及其等效物所定义的覆盖范围。
Claims (24)
1.一种用于空间存储器串流预取引擎的方法,其特征在于,包括:
当重排序队列中的第一加载指令导致失误时,分配过滤表中的新条目,其中当前加载指令的程序计数器为所述过滤表中的所述新条目的程序计数器触发器字段的程序计数器触发器;
当由所述重排序队列中的第二加载指令指示的存储器位置在与所述第一加载指令相同的区域内时,将所述过滤表的所述新条目提升到训练表中的训练表条目;
每当由所述重排序队列中的后一加载指令指示的存储器位置在与所述当前加载指令相同的区域内时,将偏移添加到所述训练表条目中的偏移的列表,其中所述偏移为所述区域内的所述存储器位置如所测量与基础偏移的偏移距离;以及
当所述重排序队列中的后一加载指令的所述程序计数器与所述程序计数器触发器相同时,通过分配图案历史表中的新条目将所述训练表条目提升到所述图案历史表中的条目,其中将所述第一加载指令与具有与所述程序计数器触发器相同的程序计数器的加载指令之间的触发器到触发器步幅存储在所述图案历史表中,
其中所述图案历史表的图案历史表条目包含程序计数器触发器字段、区域字段、基础偏移字段、偏移列表字段、每一偏移置信度字段、以及总体置信度字段,
其中所述过滤表的过滤表条目包含程序计数器触发器字段、区域字段、以及基础偏移字段,所述过滤表条目的程序计数器触发器字段、区域字段、以及基础偏移字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、以及基础偏移字段相同,以及
所述训练表条目包含程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段,所述训练表条目的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段相同。
2.根据权利要求1所述的方法,其特征在于,还包括:
维持程序计数器值的黑名单,其不触发具有符合一定标准的总体置信度水平的空间图案。
3.根据权利要求2所述的方法,其特征在于,还包括:
防止使用匹配来自所述黑名单的程序计数器值的程序计数器触发器分配训练表条目。
4.根据权利要求2所述的方法,其特征在于,还包括:
防止通过激活的图案历史表条目使用所述黑名单上的程序计数器触发器来预取。
5.根据权利要求2所述的方法,其特征在于,所述黑名单包括所述图案历史表图案历史表的一部分以及一个单独的表中的至少一个。
6.根据权利要求1所述的方法,其特征在于,每个过滤表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
7.根据权利要求1所述的方法,其特征在于,每个训练表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
8.根据权利要求1所述的方法,其特征在于,每个图案历史表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
9.根据权利要求1所述的方法,其特征在于,还包括:
当所述重排序队列中的加载指令的程序计数器与图案历史表条目的程序计数器触发器相同时,基于所述图案历史表条目执行预取,
其中所述图案历史表条目的触发器到触发器步幅值用作标准步幅检测算法的输入,所述标准步幅检测算法的输出可用于驱动更远距离区域中的空间相关预取。
10.一种用于空间存储器串流预取引擎的系统,其特征在于,包括:
一个或多个过滤表,其中过滤表中的每个条目包括用于程序计数器触发器、区域地址以及基础偏移中的至少一个的字段;以及
一个或多个训练表,其中训练表中的每个条目包括用于程序计数器触发器、区域地址、基础偏移以及偏移的列表中的至少一个的字段,所述偏移为具有与所述区域地址所鉴别的区域的存储器位置距所述基础偏移的偏移,
其中:
当重排序队列中的第一加载指令导致失误时,分配所述过滤表中的新条目,其中当前加载指令的程序计数器包括所述过滤表中的所述新条目的所述程序计数器触发器;
当由所述重排序队列中的第二加载指令指示的所述存储器位置在与所述第一加载指令相同的区域内时,将所述过滤表的所述新条目提升到训练表中的条目;
每当由所述重排序队列中的后一加载指令指示的存储器位置在与所述当前加载指令相同的区域内时,将偏移添加到训练表条目中的所述偏移的列表;以及
当所述重排序队列中的后一加载指令的所述程序计数器与所述程序计数器触发器相同时,通过分配图案历史表中的新条目将所述训练表条目提升到所述图案历史表中的条目,其中将所述第一加载指令与具有与所述程序计数器触发器相同的程序计数器的加载指令之间的触发器到触发器步幅存储在所述图案历史表中,
其中所述图案历史表的图案历史表条目包含程序计数器触发器字段、区域字段、基础偏移字段、偏移列表字段、每一偏移置信度字段、以及总体置信度字段,
其中所述过滤表的过滤表条目包含程序计数器触发器字段、区域字段、以及基础偏移字段,所述过滤表条目的程序计数器触发器字段、区域字段、以及基础偏移字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、以及基础偏移字段相同,以及
所述训练表条目包含程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段,所述训练表条目的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段相同。
11.根据权利要求10所述的用于空间存储器串流预取引擎的系统,其特征在于,还包括:
程序计数器值的黑名单,其不触发具有符合一定标准的总体置信度水平的空间图案,
其中所述黑名单包括所述图案历史表的一部分以及一个单独的表中的至少一个。
12.根据权利要求11所述的用于空间存储器串流预取引擎的系统,其特征在于,所述黑名单用于防止使用匹配来自黑名单表的程序计数器值的程序计数器触发器分配训练表条目。
13.根据权利要求11所述的用于空间存储器串流预取引擎的系统,其特征在于,所述黑名单用于防止通过激活的图案历史表条目使用所述黑名单上的程序计数器触发器来预取。
14.根据权利要求10所述的用于空间存储器串流预取引擎的系统,其特征在于,每个过滤表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
15.根据权利要求10所述的用于空间存储器串流预取引擎的系统,其特征在于,每个训练表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
16.根据权利要求10所述的用于空间存储器串流预取引擎的系统,其特征在于,所述图案历史表包括至少一个表,其中每个条目从训练表条目提升以及具有用于所述程序计数器触发器、产生所述训练表条目的偏移的列表、对应于所述偏移的列表中的每个偏移值的每一偏移置信度水平、总体置信度水平以及触发器到触发器步幅值的字段。
17.根据权利要求16所述的用于空间存储器串流预取引擎的系统,其特征在于,每个图案历史表条目中的程序计数器触发器字段存储所述程序计数器触发器的值的散列值。
18.根据权利要求16所述的用于空间存储器串流预取引擎的系统,其特征在于,当所述重排序队列中的加载指令的程序计数器与图案历史表条目的程序计数器触发器相同时,基于所述图案历史表条目执行预取,
其中所述图案历史表条目的所述触发器到触发器步幅值用作标准步幅检测算法的输入,所述标准步幅检测算法的输出可用于驱动更远距离区域中的空间相关预取。
19.一种设备,其特征在于,包括:
空间存储器串流预取引擎,其执行以下步骤:
当重排序队列中的第一加载指令导致失误时,分配过滤表中的新条目,其中当前加载指令的程序计数器为所述过滤表中的所述新条目的程序计数器触发器字段的程序计数器触发器;
当由所述重排序队列中的第二加载指令指示的存储器位置在与所述第一加载指令相同的区域内时,将所述过滤表的所述新条目提升到训练表中的训练表条目;
每当由所述重排序队列中的后一加载指令指示的存储器位置在与所述当前加载指令相同的区域内时,将偏移添加到所述训练表条目中的偏移的列表,其中所述偏移为所述区域内的所述存储器位置如所测量与基础偏移的偏移距离;以及
当所述重排序队列中的后一加载指令的所述程序计数器与所述程序计数器触发器相同时,通过分配图案历史表中的新条目将所述训练表条目提升到所述图案历史表中的条目,其中将所述第一加载指令与具有与所述程序计数器触发器相同的程序计数器的加载指令之间的触发器到触发器步幅存储在所述图案历史表中,
其中所述图案历史表的图案历史表条目包含程序计数器触发器字段、区域字段、基础偏移字段、偏移列表字段、每一偏移置信度字段、以及总体置信度字段,
其中所述过滤表的过滤表条目包含程序计数器触发器字段、区域字段、以及基础偏移字段,所述过滤表条目的程序计数器触发器字段、区域字段、以及基础偏移字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、以及基础偏移字段相同,以及
所述训练表条目包含程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段,所述训练表条目的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段与所述图案历史表条目中的程序计数器触发器字段、区域字段、基础偏移字段以及偏移列表字段相同。
20.根据权利要求19所述的设备,其特征在于,所述空间存储器串流引擎包括与所述设备中的一个或多个核心处理器分离的电路。
21.一种制造方法,其特征在于,包括:
制造芯片组,包括:
电路,执行以下步骤:
维持一个或多个过滤表,其中过滤表中的每个条目包括程序计数器触发器、区域地址以及基础偏移,所述过滤表的每个条目的程序计数器触发器、区域地址以及基础偏移与图案历史表的条目中的程序计数器触发器、区域地址以及基础偏移相同;
维持一个或多个训练表,其中训练表中的每个条目包括程序计数器触发器、区域地址、基础偏移以及偏移的列表,所述偏移为具有与所述区域地址所鉴别的区域的存储器位置距所述基础偏移的偏移,所述训练表的条目的程序计数器触发器、区域地址、基础偏移以及偏移的列表与所述图案历史表的条目中的程序计数器触发器、区域地址、基础偏移以及偏移的列表相同;
当重排序队列中的当前加载指令导致失误时,分配所述过滤表中的新条目,其中所述新条目的所述程序计数器触发器为所述当前加载指令的程序计数器,以及所述新条目的所述区域地址以及基础偏移包括由所述当前加载指令指示的所述存储器位置;
当由所述重排序队列中的下一加载指令指示的所述存储器位置在与所述当前加载指令相同的区域内时,通过分配新训练表条目将所述过滤表的所述新条目提升到训练表中的条目,所述新训练表条目包括过滤表条目的所述程序计数器触发器、所述过滤表条目的所述区域地址、所述过滤表条目的所述基础地址以及所述偏移的列表中的第一偏移,其中所述第一偏移为所述区域内的所述存储器位置如所测量与所述基础偏移的距离;以及
每当由所述重排序队列中的所述下一加载指令指示的所述存储器位置在与所述当前加载指令相同的区域内时,将另一偏移添加到训练表条目中的所述偏移的列表,其中所述另一偏移为所述区域内的所述存储器位置如所测量与所述基础偏移的偏移距离。
22.根据权利要求21所述的方法,其特征在于,所述电路进一步执行以下步骤:
当所述重排序队列中的所述下一加载指令的所述程序计数器与所述程序计数器触发器相同时,通过分配所述图案历史表中的新条目来将所述训练表条目提升到所述图案历史表中的条目;以及
维持所述图案历史表,其中所述图案历史表中的每个条目包括程序计数器触发器、区域地址、基础偏移、具有所述区域地址所鉴别的区域的存储器位置距所述基础偏移的偏移的列表、对应于所述偏移的列表中的每个偏移值的每一偏移置信度水平、总体置信度水平以及触发器到触发器步幅。
23.一种测试设备的方法,其特征在于,包括:
测试所述设备是否具有电路,所述电路执行以下步骤:
维持一个或多个过滤表,其中过滤表中的每个条目包括程序计数器触发器、区域地址以及基础偏移,所述过滤表的每个条目的程序计数器触发器、区域地址以及基础偏移与图案历史表的条目中的程序计数器触发器、区域地址以及基础偏移相同;
维持一个或多个训练表,其中训练表中的每个条目包括所述程序计数器触发器、所述区域地址、所述基础偏移以及偏移的列表,所述偏移为具有与所述区域地址所鉴别的区域的存储器位置距所述基础偏移的偏移,所述训练表的条目的程序计数器触发器、区域地址、基础偏移以及偏移的列表与所述图案历史表的条目中的程序计数器触发器、区域地址、基础偏移以及偏移的列表相同;
当重排序队列中的当前加载指令导致失误时,分配过滤表中的新条目,其中所述新条目的所述程序计数器触发器为所述当前加载指存取令的程序计数器,以及所述新条目的所述区域地址以及基础偏移包括由所述当前加载指令指示的所述存储器位置;
当由所述重排序队列中的下一加载指令指示的所述存储器位置在与所述当前加载指令相同的区域内时,通过分配新训练表条目将所述过滤表的所述新条目提升到训练表中的条目,所述新训练表条目包括过滤表条目的所述程序计数器触发器、所述过滤表条目的所述区域地址、所述过滤表条目的所述基础地址以及所述偏移的列表中的第一偏移,其中所述第一偏移为所述区域内的所述存储器位置如所测量与所述基础偏移的距离;以及
每当由所述重排序队列中的所述下一加载指令指示的所述存储器位置在与所述当前加载指令相同的区域内时,将另一偏移添加到训练表条目中的所述偏移的列表,其中所述另一偏移为所述区域内的所述存储器位置如所测量与所述基础偏移的偏移距离。
24.根据权利要求23所述的方法,其特征在于,还包括:
测试所述设备是否具有电路,所述电路执行以下步骤:
当所述重排序队列中的所述下一加载指令的所述程序计数器与所述程序计数器触发器相同时,通过分配所述图案历史表中的新条目来将所述训练表条目提升到所述图案历史表中的条目;以及
维持所述图案历史表,其中所述图案历史表中的每个条目包括程序计数器触发器、区域地址、基础偏移、具有所述区域地址所鉴别的区域的存储器位置距所述基础偏移的偏移的列表、对应于所述偏移的列表中的每个偏移值的每一偏移置信度水平、总体置信度水平以及触发器到触发器步幅。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762505318P | 2017-05-12 | 2017-05-12 | |
US62/505,318 | 2017-05-12 | ||
US201762535460P | 2017-07-21 | 2017-07-21 | |
US62/535,460 | 2017-07-21 | ||
US15/690,931 US10540287B2 (en) | 2017-05-12 | 2017-08-30 | Spatial memory streaming confidence mechanism |
US15/690,931 | 2017-08-30 | ||
US15/729,068 | 2017-10-10 | ||
US15/729,068 US10417130B2 (en) | 2017-05-12 | 2017-10-10 | System and method for spatial memory streaming training |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874694A CN108874694A (zh) | 2018-11-23 |
CN108874694B true CN108874694B (zh) | 2023-11-28 |
Family
ID=64097810
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810355605.0A Active CN108874692B (zh) | 2017-05-12 | 2018-04-19 | 空间存储器流传输置信机制 |
CN201810379927.9A Active CN108874694B (zh) | 2017-05-12 | 2018-04-25 | 空间存储器串流预取引擎的设备和方法、制造和测试方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810355605.0A Active CN108874692B (zh) | 2017-05-12 | 2018-04-19 | 空间存储器流传输置信机制 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10540287B2 (zh) |
KR (2) | KR102657076B1 (zh) |
CN (2) | CN108874692B (zh) |
TW (2) | TWI791505B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055217B2 (en) * | 2018-06-01 | 2021-07-06 | Apple Inc. | Using additional intermediate buffer queues to identify interleaved media data to be read together |
US10817426B2 (en) * | 2018-09-24 | 2020-10-27 | Arm Limited | Prefetching techniques |
CN109446111B (zh) * | 2018-10-15 | 2021-01-26 | 上海兆芯集成电路有限公司 | 存储器集成电路及其预取地址决定方法 |
KR20200043842A (ko) | 2018-10-18 | 2020-04-28 | 주식회사 실리콘웍스 | 차량용 램프 제어 장치 |
US11249909B2 (en) * | 2018-12-28 | 2022-02-15 | Intel Corporation | Systems and methods for adaptive multipath probability (AMP) prefetcher |
US11106463B2 (en) * | 2019-05-24 | 2021-08-31 | Texas Instruments Incorporated | System and method for addressing data in memory |
US11520588B2 (en) | 2019-06-10 | 2022-12-06 | International Business Machines Corporation | Prefetch filter table for storing moderately-confident entries evicted from a history table |
JP6964829B2 (ja) * | 2019-07-18 | 2021-11-10 | 三菱電機株式会社 | ネットワークセキュリティ装置、ネットワークセキュリティシステムおよびネットワークセキュリティ方法 |
US11874773B2 (en) | 2019-09-20 | 2024-01-16 | Intel Corporation | Apparatuses, methods, and systems for dual spatial pattern prefetcher |
US11461101B2 (en) * | 2019-09-27 | 2022-10-04 | Arm Technology (China) Co. LTD | Circuitry and method for selectively controlling prefetching of program instructions |
CN112084122B (zh) * | 2019-09-30 | 2021-09-28 | 成都海光微电子技术有限公司 | 计算机存储器中对区域预取器的置信度和侵略性控制 |
US11809558B2 (en) * | 2020-09-25 | 2023-11-07 | Advanced Micro Devices, Inc. | Hardware security hardening for processor devices |
KR20220127504A (ko) * | 2021-03-11 | 2022-09-20 | 삼성전자주식회사 | 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법 |
US12045618B2 (en) * | 2021-03-23 | 2024-07-23 | Arm Limited | Data processing apparatus and method for generating prefetches based on a nested prefetch pattern |
US11630670B2 (en) | 2021-07-21 | 2023-04-18 | Apple Inc. | Multi-table signature prefetch |
WO2023129316A1 (en) * | 2021-12-31 | 2023-07-06 | SiFive, Inc. | Prefetcher with out-of-order filtered prefetcher training queue |
US20240111676A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Apparatus, system, and method for throttling prefetchers to prevent training on irregular memory accesses |
KR20240050567A (ko) | 2022-10-12 | 2024-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 호스트 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311260B1 (en) * | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
CN104115154A (zh) * | 2012-02-08 | 2014-10-22 | Arm有限公司 | 当在域之间切换时维持安全数据与不安全访问相隔离 |
CN104252426A (zh) * | 2013-06-28 | 2014-12-31 | 国际商业机器公司 | 利用自加密驱动器加密盘驱动器上的数据的方法和系统 |
CN106021128A (zh) * | 2016-05-31 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6229553B1 (en) | 1998-08-20 | 2001-05-08 | Apple Computer, Inc. | Deferred shading graphics pipeline processor |
US6934809B2 (en) | 2002-02-22 | 2005-08-23 | Sun Microsystems, Inc. | Automatic prefetch of pointers |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US20060190552A1 (en) * | 2005-02-24 | 2006-08-24 | Henze Richard H | Data retention system with a plurality of access protocols |
US7657729B2 (en) * | 2006-07-13 | 2010-02-02 | International Business Machines Corporation | Efficient multiple-table reference prediction mechanism |
US8769207B2 (en) * | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
US8166251B2 (en) * | 2009-04-20 | 2012-04-24 | Oracle America, Inc. | Data prefetcher that adjusts prefetch stream length based on confidence |
WO2011106458A1 (en) | 2010-02-24 | 2011-09-01 | Marvell World Trade Ltd. | Caching based on spatial distribution of accesses to data storage devices |
US10007523B2 (en) * | 2011-05-02 | 2018-06-26 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
US8856452B2 (en) | 2011-05-31 | 2014-10-07 | Illinois Institute Of Technology | Timing-aware data prefetching for microprocessors |
US8843690B2 (en) | 2011-07-11 | 2014-09-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Memory conflicts learning capability |
US9116815B2 (en) | 2012-06-20 | 2015-08-25 | Advanced Micro Devices, Inc. | Data cache prefetch throttle |
US9092341B2 (en) | 2012-07-10 | 2015-07-28 | International Business Machines Corporation | Methods of cache preloading on a partition or a context switch |
US10671535B2 (en) * | 2013-07-17 | 2020-06-02 | Advanced Micro Devices, Inc. | Stride prefetching across memory pages |
US10133678B2 (en) | 2013-08-28 | 2018-11-20 | Advanced Micro Devices, Inc. | Method and apparatus for memory management |
KR102077753B1 (ko) * | 2013-10-25 | 2020-04-07 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 레벨 1 명령 캐시 및 분기 예측 유닛에서의 대역폭 증가 |
US20150199276A1 (en) | 2014-01-13 | 2015-07-16 | Samsung Electronics Co., Ltd. | Pre-fetch confirmation queue |
US9542323B2 (en) | 2014-03-28 | 2017-01-10 | Samsung Electronics Co., Ltd. | Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor |
US9582282B2 (en) | 2014-07-17 | 2017-02-28 | Arm Limited | Prefetching using a prefetch lookup table identifying previously accessed cache lines |
US9665491B2 (en) * | 2014-07-17 | 2017-05-30 | Samsung Electronics Co., Ltd. | Adaptive mechanism to tune the degree of pre-fetches streams |
KR101681423B1 (ko) | 2015-08-11 | 2016-11-30 | 인하대학교 산학협력단 | 변위 히스토리 버퍼를 이용한 명령어 및 데이터 프리페치 방법 및 시스템 |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10866896B2 (en) | 2015-09-30 | 2020-12-15 | Arm Limited | Apparatus and method for prefetching access request addresses in an adjacent region of memory |
-
2017
- 2017-08-30 US US15/690,931 patent/US10540287B2/en active Active
- 2017-10-10 US US15/729,068 patent/US10417130B2/en active Active
-
2018
- 2018-03-12 KR KR1020180028546A patent/KR102657076B1/ko active IP Right Grant
- 2018-03-13 KR KR1020180029203A patent/KR102538139B1/ko active IP Right Grant
- 2018-04-02 TW TW107111669A patent/TWI791505B/zh active
- 2018-04-09 TW TW107112143A patent/TWI773749B/zh active
- 2018-04-19 CN CN201810355605.0A patent/CN108874692B/zh active Active
- 2018-04-25 CN CN201810379927.9A patent/CN108874694B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311260B1 (en) * | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
CN104115154A (zh) * | 2012-02-08 | 2014-10-22 | Arm有限公司 | 当在域之间切换时维持安全数据与不安全访问相隔离 |
CN104252426A (zh) * | 2013-06-28 | 2014-12-31 | 国际商业机器公司 | 利用自加密驱动器加密盘驱动器上的数据的方法和系统 |
CN106021128A (zh) * | 2016-05-31 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
Non-Patent Citations (1)
Title |
---|
胡同森 ; 刘敬伟 ; .片上多处理器中时空结合的数据预取.小型微型计算机系统.2012,(第08期),1856-1861. * |
Also Published As
Publication number | Publication date |
---|---|
TWI773749B (zh) | 2022-08-11 |
TW201901439A (zh) | 2019-01-01 |
TW201901438A (zh) | 2019-01-01 |
KR102657076B1 (ko) | 2024-04-15 |
US10540287B2 (en) | 2020-01-21 |
KR20180124709A (ko) | 2018-11-21 |
KR102538139B1 (ko) | 2023-05-30 |
CN108874692B (zh) | 2023-10-31 |
TWI791505B (zh) | 2023-02-11 |
CN108874694A (zh) | 2018-11-23 |
CN108874692A (zh) | 2018-11-23 |
US20180329823A1 (en) | 2018-11-15 |
US10417130B2 (en) | 2019-09-17 |
US20180329822A1 (en) | 2018-11-15 |
KR20180124712A (ko) | 2018-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874694B (zh) | 空间存储器串流预取引擎的设备和方法、制造和测试方法 | |
KR101699673B1 (ko) | 프로세서에 대한 액세스 맵-패턴 매치 기반 프리페치 유닛 | |
TWI506434B (zh) | 預取單元、資料預取方法、電腦程式產品以及微處理器 | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
KR101361928B1 (ko) | 스레드 이송 시의 캐시 프리필링 | |
US9489203B2 (en) | Pre-fetching instructions using predicted branch target addresses | |
US20180349144A1 (en) | Method and apparatus for branch prediction utilizing primary and secondary branch predictors | |
US9940139B2 (en) | Split-level history buffer in a computer processing unit | |
US9600418B2 (en) | Systems and methods for improving processor efficiency through caching | |
US10318172B2 (en) | Cache operation in a multi-threaded processor | |
US11163573B2 (en) | Hierarchical metadata predictor with periodic updates | |
CN106557304B (zh) | 用于预测子程序返回指令的目标的取指单元 | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
WO2018132652A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
US11194575B2 (en) | Instruction address based data prediction and prefetching | |
WO2018137257A1 (en) | Dynamic code execution location in heterogeneous memory | |
CN116194886A (zh) | 使用超矢量的分支预测 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |