CN105278919A - 硬件数据预取器及执行硬件数据的方法 - Google Patents
硬件数据预取器及执行硬件数据的方法 Download PDFInfo
- Publication number
- CN105278919A CN105278919A CN201510683939.7A CN201510683939A CN105278919A CN 105278919 A CN105278919 A CN 105278919A CN 201510683939 A CN201510683939 A CN 201510683939A CN 105278919 A CN105278919 A CN 105278919A
- Authority
- CN
- China
- Prior art keywords
- characteristic
- proxy server
- looking ahead
- memory access
- memory block
- 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.)
- Granted
Links
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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种硬件数据预取器及执行硬件数据的方法,该硬件数据预取器包含于存储器存取代理器,该存储器存取代理器为共享一存储器的多个存储器存取代理器之一,该硬件数据预取器包含:一初始为互斥或共享的预取特性、利用该预取特性从该共享存储器的一存储器区块执行存取的硬件预取的预取模块以及一更新模块,该更新模块执行该多个存储器存取代理器对该存储器区块的存取分析,并依据该分析,当该预取模块利用该预取特性对该存储器区块执行硬件预取时,动态地更新该预取特性为互斥或共享。本发明可在运行时执行改变预取特性的分析,因而相对于软件预取而言,容易在编译时决定其他存储器存取代理器何时会对哪个存储器区块进行存取。
Description
技术领域
本发明有关于处理器的数据预取,并且主张2014年10月20日提出的美国临时申请案第62/066,131号的优先权,此案件整体引用为本发明的参考。
背景技术
由于处理器内部对快取存储器的存取时间相对于处理器对系统存储器的存取时间持续不对等成长,凸显处理器需要更好的预取方式。举例来说,Mowry描述一个对编译器做修改以使用互斥模式预取的方式,此编译器对分割存储器执行本地分析时,参考“等效分类,其可为单一参考的参考集合”,并插入“一互斥模式预取而非共享模式预取在一给定的等效分类上,如果至少一个等效分类的成员是写入的话”,请参阅“通过软件控制数据预取的延迟容忍”,Mowry,ToddCarl,史丹佛大学1994年博士论文,第89页的叙述。
以软件为主的预取方式的一个缺点就如Mowry所述,因为预取指令将写在程序里于是会增加微码大小,而增加微码大小可能需要在系统主要储存媒介(例如硬盘)上更多的储存空间以保留较大的程序,并且在较大的程序执行时也要在系统存储器中在维持更大的空间才行。额外的指令也消耗处理器的资源,诸如分派区域(dispatchslots)、保留站区域、以及执行单元区域等,这些都可能对处理器效能产生负面影响,而且更特别的是将减少指令区间有效的预视能力,因此对使用指令阶层的平行处理能力影响甚巨。另一个缺点是它不会对所有在处理器执行的程序提供好处,而只会对那些使用最佳化编译器所描述(profiled)与编译过的程序有所助益。
发明内容
本发明提供一种包含在一存储器存取代理器的硬件数据预取器,其中该存储器存取代理器为共享一存储器的多个存储器存取代理器之一。该硬件数据预取器包含一初始为互斥或共享的预取特性,该硬件数据预取器亦包含一预取模块,其使用该预取特性对共享的存储器的一存储器区块执行硬件预取,该硬件数据预取器还包括一更新模块,其执行一该多个存储器存取代理器对该存储器区块的存取分析,并依据该分析,当该预取模块利用该预取特性对该存储器区块执行硬件预取时,动态地更新该预取特性为互斥或共享。
本发明另一实施例提供一种存储器存取代理器的硬件数据预取器方法,其中存储器存取代理器为共享一存储器的多个存储器存取代理器之一,该方法包含初始化一预取特性为互斥或共享,该方法亦包含使用该预取特性对共享的存储器的一存储器区块执行硬件预取,该方法还包括执行一个该多个存储器存取代理器对该存储器区块的存取分析,该方法还包括依据该分析,当该预取模块利用该预取特性对该存储器区块执行硬件预取时,动态地更新该预取特性为互斥或共享。
本发明再一实施例提供一种由计算装置所使用的编码于至少一非转态计算机使用存储媒介的计算机程序产品,该计算机程序产品包含编码于该储存媒介的计算机使用程序编码,用以指示包含于一存储器存取代理器的硬件数据预取器,其中该存储器存取代理器为共享一存储器的多个存储器存取代理器之一。该计算机使用程序编码包含一第一程序编码,用以指示一初始化为互斥或共享的预取特性。该计算机使用程序编码亦包含一第二程序编码,用以指示一预取模块使用该预取特性对共享的存储器的一存储器区块执行硬件预取。该计算机使用程序编码还包括一第三程序编码,用以指示一更新模块,其执行一该多个存储器存取代理器对该存储器区块的存取分析,并依据该分析,当该预取模块利用该预取特性对该存储器区块执行硬件预取时,动态地更新该预取特性为互斥或共享。
本发明可在运行时观察其他存储器存取代理器对存储器区块的存取,即执行改变预取特性的分析,因而相对于软件预取而言,容易在编译时决定其他存储器存取代理器何时会对哪个存储器区块进行存取。
附图说明
图1是本发明一实施例的计算机系统的方块图。
图2是图1的硬件数据预取器的细部方块图。
图3是图1的系统的操作流程图。
图4至11是图1依据多个存储器存取代理器对一存储器区块的存取分析以动态地更新该预取特性的操作流程图。
图12是使用离线程序分析来决定预取特性以执行硬件预取的操作流程图。
图13描绘多个范围暂存器的方块图。
图14是图1依据多个存储器存取代理器对一存储器区块的存取分析以动态地更新该预取特性的操作流程图。
其中,附图中符号的简单说明如下:
100:计算系统
101:存储器存取代理器
102:核
103:处理器
104:绘图处理单元(GPU)
106:直接存储器存取(DMA)装置
108:系统存储器
112:总线
114:存储器区块
122:硬件数据预取器
124:末级快取存储器(LLC)
132:预取特性
202:存储器存取历史
204:更新模块
206:预取模块
212:存储器存取历史206的一部分
208:预取请求
232:微码撷取
234:程序加载/储存
236:窥探
1302:地址范围字段
1304:预取特性字段
302~312、402~406、502~506、602~608、702~712、802~812、902~912、1002~1008、1102~1112、1202~1208、1402~1408:步骤。
具体实施方式
<术语>
存储器存取代理器是一存取系统存储器的装置,举例来说,处理核、绘图处理单元、以及执行直接存储器存取的(DMA)周边装置都是存储器存取代理器。
硬件数据预取器基于存储器存取代理器未来将需要数据的预估而经由从系统存储器的数据读取,特别是,如本发明所述,硬件预取不是一软件预取,其指处理器因执行一架构预取指令而由处理器从系统存储器的数据读取。因此,处理器基于处理器在运转时的分析(亦即与硬件预取同时发生的存储器存取分析)来执行硬件预取。相反的,相关于插入在程序架构预取指令(例如在编译时间)的软件预取会在程序执行之前被执行,因此不会与软件预取同时发生。硬件预取执行所读取的数据可能是由处理器所执行的指令、或是非指令的数据,例如处理器执行指令时的数据运算元。
存储器区块是在系统存储器中一连串的存储位置,例如存储器页。
预取特性是用以指出数据读取者所要求的与相关快取线所有权互斥(互斥预取特性)的预取性质、或是所要求的是允许其他存储器区块可保留快取线副本(共享预取特性)的预取性质。当一预取使用互斥预取特性时,将包含一命令每个其他的存储器存取代理器无效其本地快取线副本(假使有修改则写回目前数据数值)的总线传输,其通常被当成是读取无效总线传输、具修改意图的读取总线传输、读取所有权、或是相似的技术名称;反之,当预取使用共享预取特性时,将包含一在共享状态下允许每个其他的存储器存取代理器保留其本地快取线副本的总线传输,其通常被当成是单纯的读取总线传输、或是读取共享OK总线传输、或是相似的技术名称。
图1绘示本发明一实施例的计算机系统100的方块图。计算机系统100包含存储器存取代理器101,其共享一系统存储器108并通过一总线112存取。存储器存取代理器101可包含一执行直接存储器存取(DMA)的周边装置106、一绘图处理单元(GPU)104、以及一处理器103。处理器103包含多个处理核102、一个由核102所共享的末级快取存储器(LLC)124、以及一硬件数据预取器122,GPU104与DMA106亦可包含一硬件数据预取器122。虽然在图1仅显示两核102,其他数量核的实施例亦可运用本发明的技术。
硬件数据预取器122包含一预取特性132,其系硬件数据预取器122用来从系统存储器108的一存储器区块114执行硬件预取,预取特性132具有一互斥或共享的值。硬件数据预取器122动态地且选择性地依据由存储器存取代理器101对该存储器区块114进行存取的分析来更新预取特性132。硬件数据预取器122将在下面的图2与其他图示做更进一步的描述。
处理器103可包含一作为处理器103与总线112的接口的总线接口单元,而每个核102包含一指令快取、指令解码器、指令分派器、存储子系统(例如加载/储存单元、存储缓冲区)、其他执行单元、以及一本地数据快取(例如第一级数据快取)。
当硬件数据预取器122对总线接口单元提出一硬件预取请求时,其将伴随预取特性132(亦即共享或互斥)。总线单元予以回应,并在总线112上执行传输而获得相关于该硬件预取请求的快取线所有权。如果该预取特性132是互斥,总线接口单元执行一指示其他存储器存取代理器101无效其本地快取线副本,并在本地快取线副本有修改时回写目前数据的数值。如果预取特性132为共享,总线接口单元执行一允许每个其他的存储器存取代理器保留其本地快取线副本的总线传输。
当一快取线对一处理器103的快取存储器做预取且快取线可被预取时,其状态为对其他核102为互斥、或是其状态为与其他共享系统存储器108的其他存储器存取代理器101所共享。举例来说,如果一快取线将被多个核102所共享,它可有效地在共享状态下使快取线被预取;然而,如果一快取线将被预取核102执行写入时,它可有效地在互斥而非共享之下预取快取线。
请参阅图2,其描图1的硬件数据预取器122的方块结构图。该硬件数据预取器122包含一更新模块204,用以接收由存储器存取历史202而来的信息。存储器存取历史202包含由存储器存取代理器101对系统存储器108进行存取的信息,特别的是,该存储器存取历史202包含由每个核102从系统存储器108所执行的微码撷取232(亦即指令撷取232)信息、由核102对系统存储器108所执行的程序加载/储存234、以及响应产生在总线112上的对系统存储器108执行存取而产生的窥探236(该系统存储器108存取系由包含该硬件数据预取器122之外的多个存储器存取代理器101之一所产生)。该信息可包含,但不限定于,存储器地址、存取类型(例如指令撷取、加载、储存)、以及每个存储器存取代理器101的识别码(其亦包含产生该存取的核102辨识码)。较佳者,该硬件数据预取器122对系统存储器108中被处理器103所存取的有源区块114维持一分离的预取特性132与分离的存储器历史202。该更新模块204依据存储器存取历史202的分析来更新预取特性132,相关实施例将阐述如下。
硬件数据预取器122亦包含一接收预取特性132的预取模块206。当启动预取模块206去分析核102的存储器存取历史,并依据该分析预估那些数据在将来会被核102需要时,该预取模块206也接收一与核102相关的存储器存取历史202的一部分212。预取模块206经由对总线接口单元产生包含该预取特性132的预取请求208,来执行对该预取数据的硬件预取,该预取特性可包含一预设值,亦即共享或互斥。举例来说,预设值可通过当核102在制造时选择性地烧断镕丝并以其状态做预设、或经由核102微码的常数值做预设。预取模块206可从系统存储器108预取一或多个有价值的快取线,并存入快取存储器124、及/或处理器103在快取存储器阶层中较低阶的快取存储器(例如核102的私人快取存储器)里。
请参阅图3,其描绘图1所示系统的操作流程图。
在步骤302中,存储器存取代理器101存取系统存储器108中的一存储器区块114,该存取可包含核102对存储器区块104的存取,如步骤306所述者。硬件数据预取器122累积相关于每个有源存储器区块114的存储器存取历史202中的存取信息。流程前往步骤304。
在步骤304中,更新模块204分析该存储器存取代理器101对存储器区块114的存取,并依据该分析动态地更新相关于该存储器区块114的预取特性132。更新模块204在步骤312中,当预取模块206持续对存储器区块114执行硬件预取时,继续分析并更新预取特性132。图3的步骤304至312已显示操作流程,而分析的实施例将随后搭配后续图示做说明。
在步骤306中,核102执行程序,其包含从系统存储器108撷取程序指令,并响应于所撷取程序指令的执行而对系统存储器108执行加载/储存。此外,指令存取、加载与储存对系统存储器108的存储器区块114(例如存储器页)做存取。基本上,存取将对多个存储器区块114执行。硬件数据预取器122累积相关于每个有源存储器区块114的存储器存取历史202中的存取信息。流程由步骤306前往步骤308。
在步骤308中,预取模块206依据在步骤306所累积的核102对存储器区块114的存储器存取历史202的一部分212,来预估存储器区块114的那些数据将是核102需要的。流程从步骤308前往步骤312。
在步骤312中,预取模块206执行在步骤308所预估数据的硬件预取,此硬件预取使用在步骤304所动态更新的预取特性132。虽然步骤302至304所显示的是存储器存取代理器101来驱动预取特性的更新,应注意的是,在步骤302由存储器存取代理器101进行的存储器存取以及步骤304所进行的预取特性132动态更新可同时发生。此外,尽管在流程的步骤306、308、至312因核102的存储器存取来驱动预估,且此预估使用动态更新的预取特性来驱动硬件预取,应注意的是,在步骤306由核102进行的存储器存取以及步骤308所进行的预取与在步骤312的硬件预取可同时发生。如图3所示,由步骤312返回至步骤302与306,因为流程在步骤302与304、以及步骤306、308与312是同时发生的,所以在步骤312所执行的预取为硬件预取而非软件预取。
应注意的是,虽然上述流程仅描绘关于单一存储器区块的操作情形,但硬件数据预取器122可对多个存储器区块114执行硬件数据预取,亦可同时使用动态更新的预取特性132来进行预取。较佳者,硬件数据预取器122可对其执行硬件预取的每个存储器区块144维持一个相关的动态更新预取特性132。
互斥而非共享预取快取线的一个好处,是这样做可导致一单一总线传输而非两个总线传输,亦即,并非是一请求数据的第一传输之后,跟随着一取得与所有权互斥的数据的第二传输,互斥预取是一结合两个请求并要求数据互斥的单一传输,这个做法对多芯片多核处理器且每个核具有自己的末级快取的架构特别有好处。
此处所描述的基于预取特性以动态在共享或互斥间改变的硬件预取相对于软件预取解决方式的好处在于,硬件预取的解决方式可在运行时观察其他存储器存取代理器该对存储器区块的存取,亦即当它们发生时执行改变预取特性的分析,然而对软件预取的解决方式而言,很难在编译时去决定其他存储器存取代理器何时会对哪个存储器区块进行存取。
请参阅图4,其描绘对图1中依据存储器存取代理器101对一存储器区块114做存取的分析,来进行预取特性132的动态更新的操作流程图。流程开始于步骤402。
在步骤402中,存储器区块114的预取特性132初始值为互斥,这是因为预设值是互斥的(如上所述),或者是依据一个对该存储器区块114的初始存取(例如依据图6或图10所述)而对该存储器区块114的预取特性132初始化为互斥。一般来说,如果核102读取数据极可能也会更新该数据,而且就一般而言,在存储器区块114中的数据通常具有相似的性质。因此,如前所述,互斥地预取快取线来执行单一总线传输而非多个总线传输,可以降低总线112的运载量并减少延迟。流程前往步骤404。
在步骤404中,硬件数据预取器122被通知该存储器区块114中的一快取线已被其他存储器存取代理器101所窥探,并具有写入该存储器线的意图而将导致存储器历史202的更新,这也表示在该存储器区块114中其他快取线的数据将被其他存储器存取代理器所写入。在这种情形下,因为可能影响核102与其他存储器存取代理器101之间对该快取线的预取,因此可能对这些快取线的互斥预取产生不利的影响。流程前往步骤406。
在步骤406中,更新模块204响应于步骤404的窥探而更新预取特性132为共享。流程在步骤406结束。
请参阅图5,其描述图1中,依据存储器存取代理器对存储器区块114的存取分析而动态更新预取特性132的操作流程图。流程开始于步骤502。
在步骤502中,每个存储器区块114的预取特性132被初始设定为共享,这是因为预设值是共享的(如上所述),或者是基于一个对存储器区块114的初始存取(例如依据图6或图10所述)而对存储器区块114的预取特性132初始化为共享。流程前往步骤504。
在步骤504中,硬件数据预取器122持续追踪(例如记录在存储器存取历史202中)在存储器区块114中的快取线已被核102写入的数量并侦测到该数量已超过一临界值。这可能表示在该存储器区块114中其他快取线的数据将被核102所写入,而在这种情形下对这些存储器线的互斥预取产生不利影响的理由如下。临界值可为一预先决定的数值、或是经由系统软件程序化、或是依据预取执行成效分析并由硬件数据预取器122所动态更新的数值。在一实施例中,临界值是1,亦即依据第一次对存储器区块114的写入而将预取特性132更新为互斥。流程前往步骤506。
在步骤506中,更新模块204响应于在步骤504中临界值被超越而更新预取特性132为互斥。流程终止于步骤506。
请参阅图6,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析以进行预取特性132的动态更新的操作流程图。流程开始于步骤602。
在步骤602中,更新模块204测得核102对存储器区块114的初始存取。流程前进至步骤604。
在决策步骤604中,更新模块204判断该初始存取是指令撷取或加载/储存。如果是指令撷取则流程前往步骤606,否则前往步骤608。
在步骤606中,更新模块204响应于在步骤604判断该初始存取为指令撷取而更新预取特性132为共享,这样做是有益处的,因为对一存储器区块114执行指令撷取时,剩余对存储器区块114的存取也可能是指令撷取,且基本上包含指令的存储器位置一旦被载入存储器后就不会再被写入。在一实施例中,硬件数据预取器122持续使用在步骤606所动态更新的共享预取特性132来从存储器区块114执行硬件预取,然而,如同在说明书所描述的其他实施例中,当硬件数据预取器122对存储器区块的存取做监控与分析时,初始预取特性132可从共享被更新为互斥(反之亦然)。流程终止于步骤606。
在步骤608中,更新模块204响应于在步骤604判断该初始存取为加载/储存而更新预取特性132为互斥。在一实施例中,硬件数据预取器122持续使用在步骤608所动态更新的互斥预取特性132来从存储器区块114执行硬件预取,然而,如同在说明书所描述的其他实施例中,当硬件数据预取器122对存储器区块的存取做监控与分析时,初始预取特性132可从互斥被更新为共享(反之亦然)。流程结束于步骤608。
请参阅图7,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析,以进行预取特性132的动态更新的操作流程图。流程开始于步骤702。
在步骤702中,更新模块204维持核102从存储器区块114所撷取的指令计数值(例如记录在存储器存取历史202中),并以fetch_cnt来表示、以及从存储器区块114而来的程序加载/储存计数值,并以load_store_cnt来表示。流程前进至步骤704。
在决策步骤704中,更新模块204判断fetch_cnt是否大于load_store_cnt。如果是则流程前往步骤706,否则流程前往步骤708。
在步骤706中,更新模块204响应于在步骤704中fetch_cnt大于load_store_cnt的判断而更新预取特性132为共享。流程前往步骤706。
在步骤708中,更新模块204判断fetch_cnt是否小于load_store_cnt,如果是则流程前往步骤712,否则流程结束。
在步骤712中,更新模块204响应于在步骤708中fetch_cnt小于load_store_cnt的判断而更新预取特性132为互斥。流程结束于步骤712。
请参阅图8,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析,以进行预取特性132的动态更新的操作流程图。流程开始于步骤802。
在步骤802中,硬件数据预取器122维持一核102从存储器区块114所撷取的指令计数值(例如记录在存储器存取历史202中),并以fetch_cnt来表示、以及从存储器区块114而来的程序加载/储存计数值,并以load_store_cnt来表示。流程前进至步骤804。
在决策步骤804中,更新模块204判断fetch_cnt与load_store_cnt的差值是否大于一临界值。如果是则流程前往步骤806,否则流程前往步骤808。临界值可为一预先决定的数值、或是经由系统软件程序化、或是依据预取执行成效分析并由硬件数据预取器122所动态更新的数值。
在步骤806中,更新模块204响应于在步骤804中fetch_cnt与load_store_cnt之间的差值大于该临界值的判断而更新预取特性132为共享。流程前往步骤806。
在决策步骤808中,更新模块204判断load_store_cnt与fetch_cnt的差值是否大于一临界值。如果是则流程前往步骤812,否则流程结束。在步骤808的临界值数值可与步骤804所使用的临界值相同或不同。
在步骤812中,更新模块204响应于在步骤808中load_store_cnt与fetch_cnt之间的差值大于临界值的判断而更新预取特性132为互斥。流程结束于步骤812。
请参阅图9,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析,以进行预取特性132的动态更新的操作流程图。流程开始于步骤902。
在步骤902中,硬件数据预取器122维持一核102从存储器区块114所撷取的指令计数值(例如记录在存储器存取历史202中),并以fetch_cnt来表示、以及从存储器区块114而来的程序加载/储存计数值,并以load_store_cnt来表示。流程前进至步骤904。
在决策步骤904中,更新模块204判断fetch_cnt与load_store_cnt的差值是否大于一临界值。如果是则流程前往步骤906,否则流程前往步骤908。
在步骤906中,更新模块204响应于在步骤904中fetch_cnt与load_store_cnt之间的差值大于该临界值的判断而更新预取特性132为共享。流程结束于步骤906。
在决策步骤908中,更新模块204判断fetch_cnt与load_store_cn之间的差值是否小于一临界值。如果是则流程前往步骤912,否则流程结束。在步骤908的临界值数值可与步骤904所使用的临界值相同或不同。
在步骤912中,更新模块204响应于在步骤908中fetch_cnt与load_store_cnt之间的差值小于临界值的判断而更新预取特性132为互斥。流程结束于步骤912。
请参阅图10,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析,以进行预取特性132的动态更新的操作流程图。流程开始于步骤1002。
在步骤1002中,更新模块204测得核102对存储器区块114的初始存取。流程前进至步骤1004。
在决策步骤1004中,更新模块204判断该初始存取是加载或储存。如果是加载则流程前往步骤1006,否则前往步骤1008。在本文中,一加载存取包含一个程序指令的撷取与一个由该程序加载指令所执行的加载。
在步骤1006中,更新模块204响应于在步骤1004判断该初始存取为加载而更新预取特性132为共享,在一实施例中,硬件数据预取器122持续使用在步骤1006所动态更新的共享预取特性132来从存储器区块114执行硬件预取,然而,如同在说明所描述的其他实施例中,当硬件数据预取器122对存储器区块的存取做监控与分析时,初始预取特性132可从共享被更新为互斥(反之亦然)。流程前往步骤1006。
在步骤1008中,更新模块204响应于在步骤1004判断该初始存取为储存而更新预取特性132为互斥。这样做是有益处的,因为对一个从存储器区块114执行储存时,剩余对存储器区块114的存取也可能是储存。在一实施例中,硬件数据预取器122持续使用在步骤1008所动态更新的互斥预取特性132来从存储器区块114执行硬件预取,然而,如同在说明书所描述的其他实施例中,当硬件数据预取器122对存储器区块的存取做监控与分析时,初始预取特性132可从互斥被更新为共享(反之亦然)。流程结束于步骤1008。
请参阅图11,其描绘图1中,依据存储器存取代理器101对存储器区块114做存取分析,以进行预取特性132的动态更新的操作流程图。流程开始于步骤1102。
在步骤1102中,硬件数据预取器122维持一核102从存储器区块114而来的加载计数值(例如记录在存储器存取历史202),并以load_cnt来表示、以及从存储器区块114而来的程序储存计数值,并以store_cnt来表示。流程前进至步骤1104。
在决策步骤1104中,更新模块204判断load_cnt与store_cnt的比例值是否大于一临界值。如果是则流程前往步骤1106,否则流程前往步骤1108。临界值可为一预先决定的数值、或是经由系统软件程序化、或是依据预取成效分析并由硬件数据预取器122所动态更新的数值。
在步骤1106中,更新模块204响应于在步骤1104中load_cnt与store_cnt的比例值大于该临界值的判断而更新预取特性132为共享。流程结束于步骤1106。
在决策步骤1108中,更新模块204判断store_cnt与load_cnt的比例值是否大于一临界值。如果是则流程前往步骤1112,否则流程结束。在步骤1108的临界值数值可与步骤1104所使用的临界值相同或不同。
在步骤1112中,更新模块204响应于在步骤1008判断store_cnt与load_cnt的比例值大于该临界值而更新预取特性132为互斥。流程结束于步骤1112。
请参阅图12,其描绘使用离线程序分析来决定预取特性以执行硬件预取的操作流程图。流程开始于步骤1102。
在步骤1202中,一程序被分析以判断当处理器在共享预取特性或互斥预取特性时的执行硬件预取执行成效较佳。该分析对多个有兴趣的不同程序(例如常执行的程序、或已知在一般情形下需要较长时间来执行的程序,因此它们的执行成效相当重要而需要被最佳化)而进行。较佳者,当处理器使用共享预取特性来执行硬件预取时程序会被执行许多次,且当处理器使用互斥预取特性来执行硬件预取时程序会被执行许多次执行时,其执行成效都会加以记录,例如对每个共享或互斥的组态而言,多次执行结果的平均值将被计算出来。在另一个实施例中,该分析会使用在多个系统与伺服器通信时的共同实验值,其中伺服器提供当系统使用一组态信息并动态决定系统的改良组态时所需的组态信息与执行成效数据。这类的实施如申请日为2014年9月2日的美国专利编号第14/474,623与14/474,699的申请案,其皆引用申请日为2014年5月20日且编号是62/000,808的美国暂时申请案做优先权,而它们全部都合并在此作参考用。在这个实例中,动态系统组态包含对预取特性132的动态更新。流程前往步骤1204。
在步骤1204中,一个对每个程序配置一项目(entry)的表格被编译。较佳者,每个项目包含程序的识别特性以及在步骤1202中提供最佳执行成效的预取特性。该识别特性可包含一程序名称(例如已被操作系统所知的程序名称)、存储器存取态样(pattern)及/或程序所使用的不同指令类型的数量。该表格亦可包含在处理器103上最后执行的系统软件,诸如装置驱动程序。流程前往步骤1206。
在步骤1206中,在表格中的程序被侦测是否正在处理器103中执行。在一实施例中,系统软件侦测该程序正在执行中,例如操作系统可查询执行中程序的程序名称,其好比操作系统在它的执行程表格中查询每个程序的名称般。在另一个实施例中,该表格会在启动时间里被操作系统下载至处理器103,而且处理器103会测得该程序正被执行中。举例来说,处理器103可在程序执行时收集与程序相关的识别特性(例如存储器态样及/或程序所使用的不同指令类型的数量),以及将识别特性与步骤1204所编译表格的项目作比对并下载至处理器103。流程前往步骤1208。
在步骤1208中,硬件数据预取器122对在步骤1206中所测得的程序执行硬件预取,其使用该表格项目中与该所测得程序相关的预取特性来进行。流程结束于步骤1208。
请参阅图13,其描绘多个范围暂存器1300的方块图。范围暂存器1300包含于硬件数据预取器122。在一实施例中,硬件数据预取器122包含一相关于每个核102的范围暂存器1300集合,每个范围暂存器1300包含一地址范围字段1302与一预取特性字段1304。每个地址范围字段1302可经由程序化以指示位于处理器103地址空间中的一个地址范围。预取特性1304指示一预取特性,其共享或互斥。如预取模块206对硬件预取所预测的数据地址,该预取模块206判断该预取地址是否位于所指示范围暂存器1300的地址范围中。如果正确,预取模块206依据在相关的预取特性字段1304所指示的预取特性来产生该预取请求208;如果不正确,在一实施例中,该预取模块206以预设的预取特性来产生该预取请求208。在一实施例中,该预设的预取特性为共享,因此范围暂存器1300仅需要用来指示互斥硬件预取所需的地址范围。在另一实施例中,该预设的预取特性为互斥,所以范围暂存器1300仅需要用来指示共享硬件预取所需的地址范围。在这些实施例中,由于暗示所指示的预取特性与预设的预取特性相反,因此该预取特性字段1304可能不需要。
请参阅图14,其描绘使用由图13的范围暂存器1300所决定的预取特性来执行硬件预取的操作流程图。流程开始于步骤1402。
在步骤1402中,一程序被分析以当处理器使用共享预取特性或互斥预取特性执行硬件预取时,判断不同程序中的哪些程序在处理器103上执行时有较佳的执行成效,其类似于上述图12所述的方式,然而在步骤1402所执行的分析包含较执行于步骤1202的分析具更细的区间(finergranularity)。更特别的是,此分析包含以相关于被程序化在地址暂存器1300之内的地址范围,来评估每个程序以共享或互斥预取特性的执行成效。举例来说,包含由多个存储器存取代理器101所存取数据的地址范围,可通过共享预取特性而有效地包含于表格中;反之,包含由一单一核102所写入数据的地址范围,可经由互斥预取特性而有效地包含于表格中。流程前往步骤1404。
在步骤1404中,一个对每个程序配置一项目的表格被编译,其类似于步骤1204所述的方式。然而在步骤1404所编译的表格包含地址范围以及将被推入范围暂存器1300的相关预取特性。流程前往步骤1406。
在步骤1406中,在表格中的程序被侦测是否正在处理器103上执行,其类似于步骤1206所述的方式。然而,当程序被测到正在执行时,使用该表格项目中相关于该程序的信息来额外地程序化范围暂存器1300。在一实施例中,由操作系统程序化该范围暂存器1300。在另一个实施例中,处理器103将响应于侦测到该程序的执行而自己本身程序化该范围暂存器1300,举例来说,处理器103的微码可程序化范围暂存器1300。流程前往步骤1408。
在步骤1408中,硬件数据预取器122使用范围暂存器1300的预取特性并结合预设的预取特性,对在步骤1406所测到的程序执行硬件预取。流程结束于步骤1408。
虽然上文已描述许多动态更新预取特性132的不同实施例,其他不脱离本发明精神的实施例亦被考量在本发明中,举例来说,在一实施例中,将对每个有源存储器区块114维持一饱和计数值。当存储器存取代理器101的一个对存储器区块114做存取,并意图从互斥硬件预取得(例如一储存或加载/储存)获得好处时,更新模块204用饱和的方式增加计数值;反之,当存储器存取代理器101的一个对存储器区块114做存取,并意图从共享硬件预取(例如一加载或指令撷取)获得好处时,更新模块204用饱和的方式减少计数值。较佳者,预取特性132是饱和计数值的最重要位,举例来说,更新模块204维持一队列(例如移位暂存器)用以储存关于对每个存储器区块114的最近N个存取的信息(例如储存、加载/储存、指令撷取),其中N大于1。更新模块204依据储存在队列且希望从互斥或共享硬件预取获得好处的信息,来动态地更新预取特性132为互斥或共享。举例而言,若大部分的最近N个存取是储存时则更新为互斥,反之,若大部分的最近N个存取是指令撷取时则更新为共享。在另一个例子中,对预取模块206从存储器区块114执行的每个硬件预取而言,更新模块204维持所使用预取特性132的指示。对每个发生在预取快取线的存取来说,若正在做存取的存储器存取代理器101对相关于指示的快取线进行写入时,更新模块204将更新该指示为互斥,且若该快取线被窥探时则更新模块204更新该指示为共享。在这个方式下,一个在存储器区块114中的快取线位图示(bitmap)将被维护,用以指出存储器区块114中,不同快取线可能用到的最接近最佳预取特性的信息。更新模块204在位图示中搜寻态样并判断下一个快取线的地址是否硬件预取命中样态中的任一个,并使用位图示以动态判断该预取特性132是否可用于硬件预取该快取线。最后,虽然本文已揭露包含于一多核处理器的硬件数据预取器的实施例,包含于单一核的硬件数据预取器的其他实施例也属于不脱离本发明精神的范畴。
本发明已通过各种实施例描述于此,上述实施例应理解为本发明所呈现的范例,而不应对本发明产生任何限制。所属技术领域人员应明显的了解到,在不偏离本发明的精神和范围内,当可进行任何形式上或细节的改变或润饰。举例而言,可用软件实现,如本文所述的装置与方法的功能、制造、建模、模拟、描述及/或测试。上述可通过使用一般程序语言(例如C、C++)、包括VerilogHDL、VHDL等的硬件描述语言(HDL)或其他可用的程序而加以实现。上述软件可被设置于任何已知的计算机可用介质,例如磁带(magnetictape)、半导体、磁盘或光盘(例如CD-ROM、DVD-ROM等)、一网络、有线或无线或其他通讯介质。本文所述的装置与方法的各种实施例可包括一半导体知识产权核(semiconductorintellectualpropertycore),例如一处理器核(例如通过HDL实现或指定)以及通过集成电路制造而转换为硬件。此外,本文所述的装置与方法可通过硬件与软件的组合而加以实现。因此,本发明的范围不应受限于本文的任何示范性实施例,而只应以本发明权利要求书的范围与其等效范围为准。应特别注意,本发明可实现于处理器装置中,而该处理器可使用于一般计算机之中。最后,所属技术领域人员应理解,基于本文所公开的概念与实施例,任何设计或修饰其他架构以具备与本发明相同目的的应用,皆已包含于本发明的范围且皆已定义于本发明权利要求书的范围中。
Claims (24)
1.一种包含于一存储器存取代理器的硬件数据预取器,其特征在于,该存储器存取代理器共享一存储器的多个存储器存取代理器之一,该硬件数据预取器包含:
一预取特性,被初始化为互斥或共享;
一预取模块,使用该预取特性以从共享的存储器的一存储器区块执行硬件预取;以及
一更新模块,执行该多个存储器存取代理器对该存储器区块的存取分析,以及当该预取模块使用该预取特性对该存储器区块执行硬件预取时,依据该分析动态地更新该预取特性为互斥或共享。
2.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块在当该分析指示该存储器区块的一快取线被该存储器存取代理器之外的其他该多个存储器存取代理器的其中一个所窥探时,更新该预取特性为共享。
3.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块在当该分析指示该存储器存取代理器对该存储器区块中所写入的快取线数量超过一临界值时,更新该预取特性为互斥。
4.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块在当该分析指示该存储器存取代理器对该存储器区块的初始存取为指令撷取时,更新该预取特性为共享,并在当该分析指示该存储器存取代理器对该存储器区块的初始存取为程序加载/储存时,更新该预取特性为互斥。
5.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块依据该存储器存取代理器对该存储器区块撷取指令的计数值相对于该存储器存取代理器对该存储器区块的程序加载/储存计数值的分析,来更新该预取特性。
6.根据权利要求5所述的硬件数据预取器,其特征在于,该更新模块在当该存储器存取代理器对该存储器区块的撷取指令的计数值大于该存储器存取代理器对该存储器区块的程序加载/储存计数值时,更新该预取特性为共享,并在当该存储器存取代理器对该存储器区块的撷取指令的计数值小于该存储器存取代理器对该存储器区块的程序加载/储存计数值时,更新该预取特性为互斥。
7.根据权利要求5所述的硬件数据预取器,其特征在于,该更新模块在当该存储器存取代理器对该存储器区块撷取指令的计数值与该存储器存取代理器对该存储器区块的程序加载/储存计数值的差值超过一第一临界值时,更新该预取特性为共享,并在当该存储器存取代理器对该存储器区块的程序加载/储存计数值与该存储器存取代理器对该存储器区块的撷取指令计数值的差值超过一第二临界值时,更新该预取特性为互斥。
8.根据权利要求5所述的硬件数据预取器,其特征在于,该更新模块在当该存储器存取代理器对该存储器区块的撷取指令计数值与该存储器存取代理器对该存储器区块的程序加载/储存计数值的差值超过一第一临界值时,更新该预取特性为共享,并在当该差值低于一第二临界值时,更新该预取特性为互斥。
9.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块在当该分析指示该存储器存取代理器对该存储器区块的初始存取为加载时,更新该预取特性为共享,并在当该分析指示该存储器存取代理器对该存储器区块的初始存取为储存时,更新该预取特性为互斥。
10.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块依据该存储器存取代理器对该存储器区块的加载计数值相对于该存储器存取代理器对该存储器区块的储存计数值的分析,来更新该预取特性。
11.根据权利要求10所述的硬件数据预取器,其特征在于,该更新模块在当该加载计数值与该储存计数值的比例超过一第一临界值时,更新该预取特性为共享,并在当该储存计数值与该加载计数值的比例超过一第二临界值时,更新该预取特性为互斥。
12.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块响应于对该存储器区块的存取以意图从互斥硬件预取获得好处时,朝一方向饱和地计数一饱和计数值,该更新模块并响应于对该存储器区块的存取以意图从共享硬件预取获得好处时,朝另一方向饱和地计数该饱和计数值。
13.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块维持一队列,用以储存关于对每个该存储器区块的最近N个存取的信息,其中N大于1,其中该更新模块依据储存在该队列且希望从互斥或共享硬件预取获得好处的信息,来动态地更新该预取特性为互斥或共享。
14.根据权利要求1所述的硬件数据预取器,其特征在于,该更新模块对每个该存储器区块的硬件快取维持一所使用预取特性的指示,其中该更新模块更新该指示为互斥如果相关于该指示的地址被该存储器存取代理器所写入,该更新模块更新该指示为共享如果该地址被其他的该存储器存取代理器所窥探,其中该更新模块使用该指示以动态地该预取特性。
15.一种存储器存取代理器执行硬件数据的方法,其特征在于,该存储器存取代理器共享一存储器的多个存储器存取代理器之一,该方法包含:
初始化一预取特性为互斥或共享;
使用该预取特性从共享的存储器的一存储器区块执行硬件预取;
针对该多个存储器存取代理器对该存储器区块的存取执行分析;以及
当使用该预取特性对该存储器区块执行该硬件预取时,依据该分析以动态更新该预取特性为互斥或共享。
16.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含当该分析指出该存储器区块的一快取线被该多个其他存储器存取代理器之一所窥探时,更新该预取特性为共享。
17.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含当该存储器存取代理器对该存储器区块中所写入的快取线数量超过一临界值时,更新该预取特性为互斥。
18.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含当该分析指示该存储器存取代理器对该存储器区块的初始存取为指令撷取时更新该预取特性为共享,以及当该分析指示该存储器存取代理器对该存储器区块的初始存取为程序加载/储存时,更新该预取特性为互斥。
19.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含依据该存储器存取代理器对该存储器区块的撷取指令计数值与该存储器存取代理器对该存储器区块的程序加载/储存计数值的分析来更新该预取特性。
20.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含当该分析指示该存储器存取代理器对该存储器区块的初始存取为加载时,更新该预取特性为共享,并在当该分析指示该存储器存取代理器对该存储器区块的初始存取为储存时,更新该预取特性为互斥。
21.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,该动态更新该预取特性的步骤,包含依据该存储器存取代理器对该存储器区块的加载计数值相对于该存储器存取代理器对该存储器区块的储存计数值的分析,来更新该预取特性。
22.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,还包括:
响应于对该存储器区块的存取以意图从互斥硬件预取获得好处时,朝一方向饱和地计数一饱和计数值;
响应于对该存储器区块的存取以意图从共享硬件预取获得好处时,朝另一方向饱和地计数该饱和计数值;以及
其中该动态更新该预取特性的步骤包含从该饱和计数值获得该预取特性的步骤。
23.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,还包括:
维持一队列,用以储存关于对每个该存储器区块的最近N个存取的信息,其中N大于1;以及
其中该动态更新该预取特性的步骤,包含依据储存在该队列且希望从互斥或共享硬件预取获得好处的信息,来动态地更新该预取特性为互斥或共享的步骤。
24.根据权利要求15项所述的存储器存取代理器执行硬件数据的方法,其特征在于,还包括:
对每个该存储器区块的硬件快取维持一所使用预取特性的指示;
更新该指示为互斥如果相关于该指示的地址被该存储器存取代理器所写入;
更新该指示为共享如果该地址被其他的该存储器存取代理器所窥探;以及
其中该动态更新该预取特性的步骤,包含使用该指示以动态地该预取特性的步骤。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462066131P | 2014-10-20 | 2014-10-20 | |
US62/066,131 | 2014-10-20 | ||
US14/625,124 US10514920B2 (en) | 2014-10-20 | 2015-02-18 | Dynamically updating hardware prefetch trait to exclusive or shared at program detection |
US14/624,981 US9891916B2 (en) | 2014-10-20 | 2015-02-18 | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
US14/624,981 | 2015-02-18 | ||
US14/625,124 | 2015-02-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105278919A true CN105278919A (zh) | 2016-01-27 |
CN105278919B CN105278919B (zh) | 2018-01-19 |
Family
ID=55147989
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510683939.7A Active CN105278919B (zh) | 2014-10-20 | 2015-10-20 | 硬件数据预取器及执行硬件数据的方法 |
CN201510683936.3A Active CN105354010B (zh) | 2014-10-20 | 2015-10-20 | 处理器及由处理器执行硬件数据的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510683936.3A Active CN105354010B (zh) | 2014-10-20 | 2015-10-20 | 处理器及由处理器执行硬件数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN105278919B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109272594A (zh) * | 2018-10-17 | 2019-01-25 | 重庆扬升信息技术有限公司 | 一种海量数据环境下无纸化会议签到判断工作方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487409A (zh) * | 2003-02-11 | 2004-04-07 | 智慧第一公司 | 高速缓存数据区段的配置与初始化机制 |
CN101002178A (zh) * | 2004-08-17 | 2007-07-18 | 辉达公司 | 用于管理对与高速缓冲存储器相关联的存储器的各种访问类型的预测的系统、装置和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915415B2 (en) * | 2002-01-07 | 2005-07-05 | International Business Machines Corporation | Method and apparatus for mapping software prefetch instructions to hardware prefetch logic |
US7089368B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory |
US7318125B2 (en) * | 2004-05-20 | 2008-01-08 | International Business Machines Corporation | Runtime selective control of hardware prefetch mechanism |
US8566565B2 (en) * | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
GB2458005B (en) * | 2009-02-12 | 2010-01-20 | Gzero Ltd | Removing non-essential programs identified by a server from memory |
KR101636634B1 (ko) * | 2011-12-21 | 2016-07-05 | 인텔 코포레이션 | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 |
US9817763B2 (en) * | 2013-01-11 | 2017-11-14 | Nxp Usa, Inc. | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products |
-
2015
- 2015-10-20 CN CN201510683939.7A patent/CN105278919B/zh active Active
- 2015-10-20 CN CN201510683936.3A patent/CN105354010B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158682A1 (en) * | 2002-02-12 | 2004-08-12 | Ip-First Llc | Cache data block allocation and initialization mechanism |
CN1487409A (zh) * | 2003-02-11 | 2004-04-07 | 智慧第一公司 | 高速缓存数据区段的配置与初始化机制 |
CN101002178A (zh) * | 2004-08-17 | 2007-07-18 | 辉达公司 | 用于管理对与高速缓冲存储器相关联的存储器的各种访问类型的预测的系统、装置和方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109272594A (zh) * | 2018-10-17 | 2019-01-25 | 重庆扬升信息技术有限公司 | 一种海量数据环境下无纸化会议签到判断工作方法 |
CN109272594B (zh) * | 2018-10-17 | 2020-10-13 | 重庆扬升信息技术有限公司 | 一种海量数据环境下无纸化会议签到判断工作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105354010B (zh) | 2018-10-30 |
CN105278919B (zh) | 2018-01-19 |
CN105354010A (zh) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200293295A1 (en) | Method and System of Intelligent Iterative Compiler Optimizations Based on Static and Dynamic Feedback | |
US9886384B2 (en) | Cache control device for prefetching using pattern analysis processor and prefetch instruction and prefetching method using cache control device | |
Jin et al. | Exploring data staging across deep memory hierarchies for coupled data intensive simulation workflows | |
US7401329B2 (en) | Compiling computer programs to exploit parallelism without exceeding available processing resources | |
CN100447744C (zh) | 堆栈管理系统及方法 | |
US20050246700A1 (en) | Compiler with cache utilization optimizations | |
CN112148570A (zh) | 改进在异构系统上执行的软件的运行时性能的方法和设备 | |
JP2011527788A (ja) | 依存問題の効率的並列計算 | |
US7243195B2 (en) | Software managed cache optimization system and method for multi-processing systems | |
Bai et al. | Efficient data loader for fast sampling-based GNN training on large graphs | |
KR102161192B1 (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
US7480768B2 (en) | Apparatus, systems and methods to reduce access to shared data storage | |
EP4035089A1 (en) | Methods and apparatus to process machine learning model in web-browser environment | |
TW201629775A (zh) | 在程式偵測時動態更新硬體預取特性為互斥或共享的裝置與方法 | |
JP2020500368A (ja) | データプリフェッチング方法、装置、およびシステム | |
JP5773493B2 (ja) | 情報処理装置 | |
US8359435B2 (en) | Optimization of software instruction cache by line re-ordering | |
CA2762563A1 (en) | Data prefetching and coalescing for partitioned global address space languages | |
CN105278919A (zh) | 硬件数据预取器及执行硬件数据的方法 | |
JP6763411B2 (ja) | 設計支援装置、設計支援方法、および設計支援プログラム | |
KR101681423B1 (ko) | 변위 히스토리 버퍼를 이용한 명령어 및 데이터 프리페치 방법 및 시스템 | |
CN109213698A (zh) | Vivt缓存访问方法、仲裁单元及处理器 | |
CN108563450A (zh) | 一种java虚拟机自适应优化方法、装置以及可读存储介质 | |
EP3391192A1 (en) | Broadening field specialization | |
CN116974710A (zh) | 一种数据处理的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |