CN112136142A - 计算机系统预测机器学习模型 - Google Patents
计算机系统预测机器学习模型 Download PDFInfo
- Publication number
- CN112136142A CN112136142A CN201980026107.4A CN201980026107A CN112136142A CN 112136142 A CN112136142 A CN 112136142A CN 201980026107 A CN201980026107 A CN 201980026107A CN 112136142 A CN112136142 A CN 112136142A
- Authority
- CN
- China
- Prior art keywords
- future
- memory
- data
- memory address
- neural network
- 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.)
- Pending
Links
- 238000010801 machine learning Methods 0.000 title description 4
- 230000015654 memory Effects 0.000 claims abstract description 217
- 238000013528 artificial neural network Methods 0.000 claims abstract description 112
- 238000004590 computer program Methods 0.000 claims abstract description 82
- 230000000306 recurrent effect Effects 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000009826 distribution Methods 0.000 claims abstract description 26
- 238000003860 storage Methods 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 16
- 210000004027 cell Anatomy 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 238000012549 training Methods 0.000 description 13
- 210000002569 neuron Anatomy 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000003064 k means clustering Methods 0.000 description 3
- 230000006403 short-term memory Effects 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 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
- 238000005265 energy consumption Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Probability & Statistics with Applications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
使用神经网络从存储器预取数据的、包括在计算机存储介质上进行编码的计算机程序的方法、系统和设备。一种示例系统接收计算机程序的在先程序计数器地址和相应增量值的序列。所述系统基于序列来创建输入表示。所述系统将输入表示作为输入提供给循环神经网络。所述系统从循环神经网络接收输出,该输出定义未来增量值的概率分布。分布中的每个概率表示计算机程序的未来指令的执行将导致从特定的未来存储器地址提取数据的可能性。
Description
背景技术
本说明书涉及用于使用神经网络从存储器预取数据的技术。
数据预取器利用硬件和/或软件来预测未来的存储器地址,并基于过去的存储器访问历史从该存储器地址中提取数据。
神经网络是机器学习模型,其采用多层操作来从一个或多个输入预测一个或多个输出。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每一层的输出用作另一层的输入,例如,该另一层可以为下一隐藏层或输出层。
每一层神经网络指定对该层的输入所要执行的一个或多个变换操作。一些神经网络层具有称为神经元的操作。每个神经元接收一个或多个输入,并产生由另一神经网络层接收的输出。通常,每个神经元从其他神经元接收输入,且每个神经元向一个或多个其他神经元提供输出。
神经网络的架构指定了网络中包括哪些层及其属性以及每一层网络的神经元如何连接。换言之,该架构指定了哪些层将其输出作为输入提供给其他哪些层以及如何提供输出。
每层使用该层的一组参数的当前值生成一个或多个输出。因此,训练网络包括连续地对输入进行正向传递,计算梯度值,并且更新每一层的一组参数的当前值。一旦训练好神经网络,可以使用最终的一组参数来在生产系统中进行预测。
发明内容
本说明书涉及用于使用神经网络从存储器预取数据的技术。
一种用于从存储器预取数据的系统接收计算机程序的在先程序计数器地址和相应增量值的序列。每个增量值定义了相应的第一存储器地址和相应的第二存储器地址之间的差。第一存储器地址是当执行相应的程序计数器地址指向的指令时被访问的存储器地址。第二存储器地址是在访问第一存储器地址之前被访问的存储器地址。例如,第二存储器地址可以是之前刚刚被访问的存储器地址,或者可以是通过之前几次或更多次存储器操作而被访问的存储器地址。
然后,系统将程序计数器地址序列转换为输入表示。该系统将输入表示作为输入提供给循环神经网络。在一些实施方式中,输入表示是高维嵌入空间中的数字嵌入序列。在其他实施方式中,输入表示是通过“k均值聚类”操作的一组程序计数器地址和增量值对。
该系统从循环神经网络接收输出,该输出定义未来增量值的概率分布。分布中的每个概率表示计算机程序的未来指令的执行将导致从未来存储器地址提取数据的可能性,该未来存储器地址等于:(i)当执行被序列中最近的程序计数器地址指向的指令时而被访问的相应的第一存储器地址,加上(ii)对应于该概率的未来增量值。
可以在特定实施例中实施本说明书中描述的主题,以便实现一个或多个以下优点。所描述的系统可以通过使用循环神经网络来识别对程序计数器地址和相应增量值的序列长期依赖性,从而更准确地预测将从中提取数据的未来存储器地址。系统可以从其预测的未来存储器地址预取数据,并将该数据存储在本地缓存中。精确的预取减少了计算系统中缓存未命中的数量。因为从本地缓存提取数据比从主存储器提取数据更快,所以在计算系统上执行的计算机程序的运行时间减少。即使当传统的预取方法不能实现显著的改进时,系统仍然可以通过使用如本说明书中所述的循环神经网络识别复杂和无规律的存储器访问模式,并因此减少计算机程序的运行时间。
减少缓存未命中的数量也降低了计算系统的能量消耗,这是因为与从本地缓存提取数据相比,从主存储器提取数据是能量密集型的。
循环神经网络可以被离线训练。换言之,可以在计算系统中实施之前训练循环神经网络。在计算系统中实施后,循环神经网络的参数保持静态。离线训练是有利的,这是因为它将与训练相关的计算开销与和运行计算机程序本身相关的计算开销分开。这进一步减少了计算机程序的运行时间。
循环神经网络可以被配置为接收和预测增量,而不是存储器地址。增量是两个存储器地址之间的差。增量比存储器地址更容易预测,因为物理地址空间非常大且稀疏。另一方面,给定计算机程序中增量的数量更受限制。一旦系统预测到一个增量,就可以通过简单的减法计算出与该增量相关的未来存储器地址。预测增量并根据这些增量计算未来存储器地址比直接预测未来存储器地址更准确。因此,所描述的系统可以更精确地从主存储器预取数据,由此减少了计算机程序在计算系统上的运行时间。
循环神经网络的输入也可以聚类。对程序计数器地址和增量值对进行聚类的优点在于,族群内的存储器访问模式比整组程序计数器地址和增量值内的存储器访问模式更可预测。因此,输入聚类增加了所描述的系统的预测精度,这进一步减少了在计算系统上执行的计算机程序的运行时间。
最后,循环神经网络可以预测在下一步时间步骤中从中提取数据的多个未来的存储器地址。每个预测都是利用特定的置信度进行。所描述的系统可以从满足预定阈值置信度的所有未来存储器地址预取数据。如此,增加了预取正确数据的可能性。并且,这样减少了在计算系统上执行的计算机程序的运行时间。
在附图和以下描述中阐述本说明书主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是用于从存储器预取数据的示例系统的示图。
图2是用于从存储器预取数据的示例处理的流程图。
图3是用于从在先程序计数器地址及其相应增量值的序列生成高维嵌入的示例处理的流程图。
图4描绘了示例计算机程序。
图5描绘了用于预测未来存储器地址的示例预测子系统。
不同附图中相同的附图标记和名称表示相同的元件。
具体实施方式
计算机程序可以使计算系统对存储在计算系统的各种存储位置的数据进行操作。通常,计算系统在对其他位置的数据进行操作之前,必须将该数据加载到本地寄存器中。计算系统可以例如从本地缓存或主存储器加载数据。从主存储器加载数据特别慢,因为通常,主存储器很大,并且物理上远离本地寄存器。因此,通常促使计算系统从主存储器中提取数据的计算机程序的执行速度比其他情况下要慢。计算系统通过从主存储器中预取数据,并在需要之前将数据存储在更快的本地缓存中,从而减少计算机程序的运行时间。
数据预取器利用硬件和/或软件来预测未来的存储器地址,从而基于过去的存储器访问历史从该存储器地址提取数据。本说明书尤其涉及用于使用神经网络从存储器预取数据的技术。
图1是示例计算系统100的示图。
计算系统100通过使用一个或多个处理器执行计算机程序的计算机程序指令来运行该计算机程序。特别地,计算系统100将计算机程序指令存储在指令存储器中,然后按照计算机程序定义的顺序执行指令。
计算系统100具有程序计数器110。程序计数器,即指令地址寄存器,是存储“指向”要执行的下一个计算机程序指令的值的寄存器。换言之,程序计数器110存储要执行的下一个计算机程序指令所在的地址。因为计算机程序指令通常存储在存储器中的顺序位置,所以程序计数器110包括数字计数器115。每当执行新指令时,该数字计数器115递增存储在程序计数器110中的地址。
在一些情况下,计算系统100不以存储在存储器中的相同顺序执行计算机程序。例如,一组特定的机器代码指令可能对应于一个条件语句,例如,“如果-那么-否则”语句或函数调用。如果满足与条件语句相关联的条件,则计算系统执行一个指令序列。如果不满足与条件语句相关联的条件,则计算系统执行不同的指令序列。如果当前指令序列不同于条件语句之后的指令序列,则计算系统100必须将新值写入程序计数器110的寄存器中。新值是新指令序列中的第一指令所在的地址。
当指令周期开始时,计算系统100从程序计数器110指定的地址提取下一个计算机程序指令。存储在程序计数器110中的地址对应于指令存储器122中的位置,指令存储器122是存储器120中的一个存储器块。在一些实施方式中,存储器120是易失性存储器,例如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在另一实施方式中,存储器120是非易失性存储器,例如,只读存储器(ROM)、闪存或磁存储器。在又一实施方式中,存储器120是易失性和非易失性存储器的某种组合。
通常,给定的计算机程序指令指定一个操作,例如,加载、存储、加法、减法、或非、分支等、一个或多个源寄存器和一个目的寄存器。计算系统100对存储在源寄存器中的数据执行指定的操作,并将结果存储在目的寄存器中。例如,一个计算机程序指令可规定存储在寄存器A中的数据应该添加到存储在寄存器B中的数据中,并且结果应该存储在寄存器C中。
源寄存器通常具有一定大小,因此要被操作的数据通常必须存储在存储器中,并且只有在需要时才加载到源寄存器中。但是从存储器中提取数据非常耗时,并且降低了计算机程序的执行速度。这个问题的一个解决方案是对未来需要操作的数据进行预测,,预取该数据,并将其存储在例如本地缓存130等更快的本地存储器中。从本地缓存提取数据比从主存储器提取数据更快,这是因为本地缓存通常比主存储器在物理上更靠近系统,且也比主存储器更小。由于本地缓存小于主存储器,所以计算系统在任何给定时间只能在本地缓存中存储主存储器的一小部分。因此,计算系统100可以预测未来需要从其中提取数据的存储器地址的子集,并将该数据存储在本地缓存中。如果计算系统做出准确的预测,则计算系统可以更快地执行计算机程序指令。
计算系统100的预测子系统140被配置为预测计算系统100将在未来操作的数据。在预测子系统140预测未来可能从中提取数据的特定存储器地址之后,计算系统100从主存储器预取该数据,并将其存储在本地缓存130中。当执行计算机程序时,预测子系统140继续预测存储器地址,并且计算系统100继续从那些存储器地址预取数据。
在一些实施方式中,预测子系统140直接在计算系统100上以硬件形式实施。在其他实施方式中,预测子系统140在位于在其他位置的一个或多个计算机上实施,或者以软件形式实施,即,作为计算系统100上的一个或多个计算机程序来实施。
在一些实施方式中,寄存器142分别从程序计数器110和指令存储器122接收并存储程序计数器地址和相应存储器地址的序列。存储器地址是当由其相应的程序计数器地址指向的指令被执行时而被访问的存储器地址。例如,特定的存储器地址可能是在执行加载指令时从中提取数据的存储器地址。
在其他实施方式中,寄存器142接收并存储程序计数器地址和相应增量值(deltavalue)的序列。序列中的每个增量值定义了相应的第一存储器地址和相应的第二存储器地址之间的差。第一存储器地址是当执行由相应的程序计数器地址指向的指令时而被访问的存储器地址,而第二存储器地址是在访问第一存储器地址之前而被访问的存储器地址。例如,第一和第二存储器地址可能是在执行连续加载指令时被访问的存储器地址。第一和第二存储器地址也可以是在执行非连续加载指令时被访问的存储器地址。如果使用连续的存储器地址来计算增量,则系统会预测在时间N+1访问的未来存储器地址。如果使用非连续的存储器地址来计算增量,则系统不会预测需要访问的下一个存储器地址。相反,它会预测未来更远。例如,如果使用第一存储器访问和第五存储器访问来计算增量,则系统将预测在时间N+4访问的未来存储器地址。在一些实施方式中,第一和第二存储器地址是指定数据存储器124中的位置的地址。
在寄存器142存储程序计数器地址和相应的存储器地址的实施方式中,预测子系统140通过连续的存储器地址的减法操作来计算增量值。
预测子系统140包括神经网络子系统144。神经网络子系统144可以在执行计算机程序的同一计算机上实施,或者可以在不同的计算机上实施。
神经网络子系统144接收程序计数器地址和相应的增量值的序列。神经网络子系统144处理程序计数器地址和相应增量值的序列,以预测未来从中提取数据的存储器地址,作为计算机程序执行的结果。当神经网络子系统144接收新的程序计数器地址和增量值对时,神经网络子系统144重复地生成这些预测。
响应于由神经网络子系统144生成的重复预测,计算系统100反复从数据存储器124预取数据。预测指定了数据存储器124中从中提取数据的存储器地址。计算系统100然后将数据存储在本地缓存130中。从本地缓存130提取数据比从数据存储器124提取数据更快。这导致计算系统100更快地执行计算机程序。
尽管本说明书主要描述了从存储器预取数据,但是本文描述的技术可以应用于计算系统中的其他类型的预测决策。例如,本文描述的技术可以用于从指令存储器预取指令。
本申请中描述的系统和方法也可以用于优化存储器的消歧。存储器消歧是计算系统采用的一组技术,用于无序地执行存储器访问指令。这些技术检测或预测存储器操作之间的依赖性,以提高存储器访问效率和速度。
本文描述的技术也可以用于优化缓存替换策略。由于缓存的大小有限,当计算系统将数据放入缓存时,其通常必须从缓存中移除相应数量的数据。本申请中描述的系统和方法可以预测从缓存中移除的最佳数据,例如,计算系统在不久的将来最不可能使用的数据。或者,该系统和方法可以预测在不久的将来最有可能使用的数据,并确保该数据保留在缓存中。例如,在“最近最少使用”的缓存中,即,具有替换策略的缓存,其替换策略规定为了新数据应该移除缓存中最近最少使用的数据,本文描述的系统和方法可以为被预测将在不久的将来使用的数据更新“年龄位(age bit)”。更新年龄位可确保数据不会被新数据替换。
图2是用于从存储器预取数据的示例处理200的流程图。为了方便起见,处理200将被描述为由位于一个或多个位置的一个或多个计算机的系统来执行。例如,适当编程的神经网络子系统,例如,图1的神经网络子系统144,可以执行处理200。
首先,系统获得计算机程序的在先程序计数器地址和相应增量值的序列(210)。如图1所述,程序计数器地址是指向要被执行的计算机程序指令的地址。那些计算机程序指令通常存储在指令存储器中。同时,每个增量值定义了相应的第一存储器地址和相应的第二存储器地址之间的差。第一存储器地址是当执行被相应的程序计数器地址指向的指令时被访问的存储器地址。例如,特定的程序计数器地址可指向存储指令的存储器地址,该指令在被执行时可以从存储器提取数据。该数据的存储器地址是第一存储器地址。第二存储器地址是在访问第一存储器地址之前被访问的存储器地址。
在一些实施方式中,系统接收在先程序计数器地址和相应增量值的序列。在其他实施方式中,系统仅接收在先程序计数器地址和相应存储器地址的序列。在这种情况下,系统减去接收的序列中的相邻存储器地址而计算增量值。
接下来,系统基于程序计数器地址及其相应增量值的序列来创建输入表示(220)。
在一些实施方式中,系统通过将程序计数器地址及其相应的增量值的序列映射到高维空间中的数字嵌入序列来创建输入表示。该嵌入是高维实值向量。在一些实施方式中,程序计数器地址和相应的增量值的嵌入均是128维的。该系统可以将嵌入串联起来形成256维的嵌入。在其他实施方式中,程序计数器地址和相应的增量值的嵌入均是64维、256维或512维的。
嵌入表示高维空间中的点。空间中彼此“靠近”的嵌入与从相似的存储器区域提取数据的计算机程序指令相关联。例如,两个不同的程序计数器地址的原始值可能非常不同,但可能对应于定期调用另一函数的一个函数。在这种情况下,程序计数器地址可能有类似的嵌入。
在一些实施方式中,系统使用由受训的神经网络生成的查找表来生成嵌入序列。在其他实施方式中,系统通过将程序计数器地址和增量值的序列直接提供给受训的神经网络来生成嵌入。将参考图3更详细地描述其他输入表示。
接下来,系统将数字嵌入序列作为输入提供给循环神经网络(230)。神经网络是机器学习模型,其采用一层或多层非线性单元来预测接收的输入的输出。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作下一层的输入,其中该下一层为下一个隐藏层或输出层。网络的每一层根据相应一组参数的当前值从接收的输入生成输出。
一些神经网络是循环神经网络。循环神经网络是接收输入序列并从输入序列生成输出序列的神经网络。特别地,循环神经网络可以在计算当前时间步骤的输出时利用来自前一时间步骤的部分或全部网络内部状态。如此,使得神经网络可以显示动态的时间行为。换言之,循环神经网络汇总了其截止到当前时间步骤所接收的所有信息,并且能够捕获对数据序列的长期依赖性。
在一些实施方式中,循环神经网络是包括两个长短期记忆(LSTM)存储器层的长短期记忆(LSTM)神经网络。每个LSTM层包括多个单元。第一LSTM层接收表示程序计数器地址和相应增量值的序列的多维输入。在第一时间步骤,第一LSTM层接收表示“最老的”程序计数器地址及其相应增量值的输入。换言之,首先接收表示对应于在时间上首先执行的程序指令的程序计数器地址的输入。在第二时间步骤,第一LSTM层接收表示对应于时间上第二次执行的程序指令的程序计数器地址的输入。在第三时间步骤,第一LSTM层接收表示对应于时间上第三次执行的程序指令的程序计数器地址的输入。这种模式持续到所有时间步骤。
每个LSTM层中的单元数量对应于多维输入中的维数。
循环神经网络还具有第二LSTM层。第二LSTM层中的单元从第一LSTM层中的单元接收输入。这类似于在前馈神经网络中具有多层,并且允许用相对较少的参数实现更大的建模灵活性。
循环神经网络的结构化和训练使得其能够识别对输入序列的长期依赖性,例如,模式。具体地,循环神经网络可以识别对程序计数器地址和相应增量值的序列的长期依赖性,从而预测从中提取数据的未来存储器地址。
循环神经网络300中的每个LSTM单元包括隐藏状态h、单元状态c、输入门i、遗忘门f和输出门o。这三个门中的每一个均可以被认为是用于计算加权和的激活的单独神经元。直观地,输入门控制新值流入单元的程度,遗忘门控制值保留在单元中的程度,输出门控制单元中的值用于计算LSTM单元的输出激活的程度。换言之,这些门控制着LSTM单元“记住”什么或者其状态如何受先前状态影响。
循环神经网络中的最后一层是soft-max层。Soft-max层具有从第二LSTM层接收输入的多个神经元。Soft-max层处理其输入,以生成表示未来增量值的输出的概率分布。
在某些情况下,神经网络模型直接输出增量值的概率分布。在其他情况下,神经网络模型输出索引的概率分布。然后,必须将索引转换为增量值,其方式与增量值映射到嵌入的方式非常相似。
循环神经网络通过监督学习来进行离线学习。换言之,可以在计算系统中实施之前训练循环神经网络,神经网络将控制该计算系统的预取。在计算系统中实施后,循环神经网络的参数保持静态。离线训练是有利的,这是因为它将与训练相关的计算开销与运行计算机程序本身相关的计算开销分开。这减少了计算机程序的运行时间。
通常,神经网络的训练数据包括一组输入和这些输入的标签。标签对应于为相应输入而生成的期望或预期输出。例如,标签可以包括当计算系统执行计算机程序时观察到的实际增量值。
该系统通过确定神经网络权重的训练值来训练神经网络,以精确预测输出。更具体地,系统训练神经网络来设置神经网络的权重,从而最小化一组特定输入的实际神经网络输出和期望或预期输出之间的差异。差异的度量称为损失函数。
在某些情况下,训练的损失函数是交叉熵函数,即对数损失函数。在soft-max层生成的输出的概率分布情况下,可以计算神经网络生成正确输出的负对数概率。
对于给定的一组输入而言,如果交叉熵函数表示由循环神经网络生成的输出和期望或预期输出之间的误差,则可以例如通过时间训练技术利用传统的反向传播来更新循环神经网络的权重。本领域已知的其他技术和其他损失函数也可以用于更新循环神经网络的权重。
如上所述,系统从循环神经网络接收定义未来增量值的概率分布的输出(240)。系统可以将一组可能的增量值限制为最常见的增量值,以便保持循环神经网络的较快速度。例如,系统可以将一组可能的增量值限制为50,000个最常见的增量值。
分布中的每个概率表示计算机程序的未来指令的执行将导致从未来存储器地址提取数据的可能性,该未来存储器地址等于(i)当执行被序列中最近的程序计数器地址所指向的指令时而被访问的相应的第一存储器地址,加上(ii)对应于该概率的未来增量值。计算机程序是与多个程序计数器地址相关联的同一计算机程序。
在一些实施方式中,系统可以设置阈值标准,并确定分布中的任何概率是否满足该阈值标准。例如,阈值标准可以是0.5的概率,即,当执行计算机程序的未来指令时访问特定的未来存储器地址的50%的概率。系统可以动态调整阈值标准。例如,系统可以在存储器带宽利用率较高时设置较高的阈值,在存储器带宽利用率较低时设置较低的阈值。在一些实施方式中,当系统更精确地预测未来存储器地址时,该系统可以设置更高的阈值。
响应于确定概率分布中的特定概率确实满足阈值标准,系统可以从与该概率相关联的存储器地址提取数据,并将该数据存储在本地缓存中。
在一些实施方式中,系统可以确定多个概率满足阈值标准,并且从与这些概率相关联的多个存储器地址预取数据。这样做,增加了预取正确数据的可能性,减少了在计算系统上执行的计算机程序的运行时间。
该系统通常被配置为预测将在时间步骤N+1受访的存储器地址,即,当执行下一个计算机程序指令时将被访问的存储器地址。然而,可以训练循环神经网络来预测前面的其他前面的时间步骤。例如,可以训练循环神经网络来预测将在N+2、N+4或N+8时间被访问的存储器地址。例如,通过向循环神经网络提供利用在N-2被访问的第二存储器地址计算的增量,可以训练循环神经网络来预测将在N+2被访问的存储器地址。
在另一实施方式中,代替如上所述预取数据,系统可以将提取指令插入计算机程序中。提取指令的执行导致从与满足阈值标准的概率相关联的未来存储器地址中提取数据。提取指令必须在促使从存储器中提取数据的计算机程序的未来指令之前插入到计算机程序中。这样,在执行未来指令时,未来指令需要的数据已经在本地缓存中。未来指令的执行将导致缓存命中,而不是缓存未命中,并且系统不需要从存储器中提取数据。这使得计算机程序运行得更快,因为从存储器中提取数据是费时的。
如果超过一个的概率满足阈值标准,则可以将超过一个的提取指令插入到计算机程序中。
在一些实施方式中,系统向循环神经网络提供额外特征。例如,系统可以提供最近的存储器访问是加载还是存储的指示。该系统还可以向循环神经网络提供当前缓存占用率。如上所述,当前缓存占用率会影响阈值标准。
图3是用于从在先程序计数器地址和相应增量值的序列生成高维嵌入的示例处理的流程图。为了方便起见,处理300将被描述为由位于一个或多个位置的一个或多个计算机的系统来执行。例如,适当编程的神经网络子系统,例如,图1的神经网络子系统144,可以执行处理300。
首先,将在先程序计数器地址及其相应增量值的序列提供给神经网络(310)。为了方便和清楚起见,该神经网络将称为嵌入神经网络。嵌入神经网络可以在参考图3描述的循环神经网络300之前并与之连接。在嵌入神经网络连接到循环神经网络300的实施方式中,两个神经网络端到端地受训。换言之,将训练输入,即在先程序计数器地址和相应增量值的序列,提供给嵌入神经网络。然后,组合的神经网络处理输入,以生成输出,如上所述,将这些输出与期望或预期输出进行比较。如果存在任何差异,则通过具有反向传播的随机梯度下降利用该差异来更新两个神经网络的参数。利用从循环神经网络到嵌入神经网络反向传播的梯度,首先更新循环神经网络300的参数,然后更新嵌入神经网络的参数。
通过训练,嵌入神经网络学习到产生相似程序计数器地址和具有相似嵌入的增量值对的参数。换言之,在高维嵌入空间中,在几何意义上彼此接近的两个嵌入应该在程序上是相似的。例如,两个不同的程序计数器地址可能均对应于定期调用另一函数的一个函数。在这种情况下,两个程序计数器地址可能对应于几何上彼此接近的高维嵌入。作为另一示例,如果其增量值均对应于以特定链表或特定阵列存储数据的存储器地址,则两个嵌入也可能是相似的。
接下来,嵌入神经网络处理程序计数器地址及其相应增量值的序列(320)。
最后,系统从嵌入神经网络接收高维嵌入空间中的数字嵌入序列,作为输出(330)。嵌入是高维实值向量。
在一些实施方式中,一旦嵌入神经网络得到训练,其可以由简单的查找表来表示。程序计数器地址和增量值对可以映射到索引,并且索引可以用于在查找表中查找嵌入。这种表示是可能的,这是因为嵌入神经网络在训练后是静态的。换言之,一旦被训练,在特定输入,即特定程序计数器地址和增量值对的情况下,嵌入神经网络将总是输出相同的高维嵌入。
可以用其他方式表示在先程序计数器地址和增量值的序列。
在一些实施方式中,在先程序计数器地址和增量值的序列可以被“k均值聚类”。
k均值聚类是一种矢量量化方法,旨在将n个观察点,例如,程序计数器地址和增量值对,划分成k个族群,其中,每个观察点属于其充当族群原型的具有最近均值或质心的族群。这将导致数据空间的划分。首先,程序计数器地址和增量值对必须表示为空间中的点或向量,以便系统可以计算点之间的距离。如图3所述,程序计数器地址和增量值对可以映射到高维嵌入空间中的高维嵌入。在一些实施方式中,程序计数器地址可以表示x坐标,而增量值可以表示y坐标。
首先,系统必须选择表示族群数量的k。k是影响输入表示的质量的一个重要参数。系统可以通过试错来选择合适的K值。接下来,系统必须为k族群中的每一个选择任意的平均值或质心。然后,系统计算从每个观察点,例如,表示程序计数器地址和增量值对的每个点,到每个质心的距离。然后将每个点分配给质心离它最近的族群。最后,基于每个族群中的一组新点计算新质心。重复该处理,直到没有点分配给新的族群。
然后,每个程序计数器地址和增量值对可以表示为到其族群的质心的距离。可以对这些距离归一化,并将其用作循环神经网络300的输入。关于k均值聚类的更详细的讨论,参见例如MacQueen,J.的Some methods for classification and analysis ofmultivariate observations,Proceedings of the Fifth Berkeley Symposium onMathematical Statistics and Probability,第1卷:统计学,281-297,加州大学出版社,加州伯克利,1967。
对程序计数器地址和增量值对进行聚类的优点在于,族群内的数据提取模式比整组程序计数器地址和增量值内的数据提取模式更容易预测。
在其他实施方式中,程序计数器地址和相应增量值的序列被表示为二进制字符串。循环神经网络300可以学习到位翻转模式。不同的位可以被或多或少严重地加权,以解释错误地预测未来存储器地址的位31将导致大的未命中而错误地预测未来存储器地址的位0将导致小的未命中这一事实。
图4描绘了示例计算机程序400。用虚构的汇编语言编写计算机程序400。汇编语言是计算机或其他可编程设备的低级编程语言。与高级编程语言,例如,C++、Java、Python、Ruby等相比,汇编语言是专门针对特定计算机架构。编译器将高级编程语言指令转换成汇编语言指令。汇编语言指令与机器语言指令紧密对应。
汇编语言指令通常指定运算码,即要执行的运算;源寄存器,即存储要操作的数据的寄存器;以及目的寄存器,即存储操作结果的寄存器。汇编语言运算包括加载、存储、加法、减法、或非、比较、分支、跳转等。
加载运算将数据从存储器移动到寄存器。存储运算将数据从寄存器移动到存储器。加法、减法、或非和比较运算是对存储在指定源寄存器中的数据执行的算术和逻辑运算。比较、分支和跳转运算对应于高级编程语言中的条件语句和函数调用。
计算机程序400在具有两个寄存器R1和R2以及四个存储器地址mem1、mem2、mem3和mem4的处理器上执行。计算机程序400计算存储在四个存储器地址中的值的总和。
首先,在指令401和402中,将存储在mem1和mem2中的值分别加载到R1和R2中。在指令403中,将R1添加到R2并存储在R1中。在指令403之后,R1存储(1)在mem1中存储的值和(2)在mem2中存储的值的总和。
在指令404中,将存储在mem3中的值加载到R2中。在指令405中,将R1再次添加到R2并存储在R1中。在指令405之后,R1存储(1)在mem1中存储的值、(2)在mem2中存储的值以及(3)在mem3中存储的值的总和。
在指令406中,将存储在mem4中的值加载到R2中。在指令407中,将R1再次添加到R2并存储在R1中。在指令407之后,R1存储(1)在mem1中存储的值、(2)在mem2中存储的值、(3)在mem3中存储的值以及(4)在mem4中存储的值的总和。最后,在指令408中,将R1存储在mem1中,覆盖在mem1中存储的先前值。
计算机程序400具有四个加载指令:指令401、指令402、指令404和指令406。这四个指令中的每一个都具有可以提供给系统用于预测未来存储器地址的程序计数器地址和相应的增量值。
指令401的程序计数器地址是PC。相应的增量值仅仅是mem1,因为在指令401之前没有存储器地址访问。指令402的程序计数器地址是PC+1。相应的增量值是mem1-mem2。指令404的程序计数器地址是PC+3。相应的增量值为mem3-mem2。最后,指令406的程序计数器地址是PC+5。相应的增量值为mem4-mem3。四个程序计数器地址和增量值对可以作为输入提供给预测系统,例如,图1的预测子系统140。
图5描绘了用于预测可能从中提取数据的未来存储器地址的示例预测子系统500。可以直接在发生提取的计算系统中以硬件形式实施预测子系统500。
寄存器510接收并存储在先程序计数器地址和相应增量值的序列。
预测子系统500的神经网络子系统520具有参数存储器522、算术逻辑单元(ALU)524和控制器526。参数存储器522存储长短期记忆(LSTM)网络的参数,该网络是一种循环神经网络。例如,参数存储器522存储LSTM网络的每个LSTM层的输入、遗忘、输出和单元权重。参数存储器522还存储每层的偏置以及每个LSTM层中每个LSTM单元的单元状态和隐藏状态。在一些实施方式中,参数存储器522是易失性存储器,例如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在其他实施方式中,参数存储器522是非易失性存储器,例如,只读存储器(ROM)、闪存或磁存储器。在其他实施方式中,参数存储器522是易失性和非易失性存储器的某种组合。例如,在训练LSTM网络之后每个LSTM层的权重不发生改变,可以存储在非易失性存储器中,而频繁改变的每个LSTM单元的单元状态和隐藏状态可以存储在易失性存储器中。
ALU 524计算每个LSTM单元的输入门、遗忘门和输出门。其还计算每个LSTM单元的单元状态和隐藏状态。ALU是一种组合电路,用于对二进制数执行算术和按位运算。ALU的输入是称为操作数的需要操作的数据,,以及指示需要执行的操作的运算码。ALU的输出是所执行的操作的结果。控制器526控制ALU 524从参数存储器522接收的输入。此外,其还控制ALU 524执行的操作。
ALU 524接收存储在参数存储器522中的参数以及存储在寄存器510中的程序计数器地址和相应增量值的序列并将其作为输入。ALU 524计算每个LSTM单元的输出。例如,ALU524计算每个LSTM单元的输入门、遗忘门、输出门和隐藏门。
控制器526可以促使ALU 524将计算的单元和隐藏状态写入参数存储器522,使得这些单元和隐藏状态可以被用于在下一时间步骤中计算输出。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在包括本说明书中公开的结构及其结构等同物的计算机硬件中、或者在其中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即在有形的非暂时性存储介质上编码的计算机程序指令的一个或多个模块,以用于由数据处理设备执行或控制数据处理设备的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备或者其中的一个或多个的组合。替代地或另外,程序指令可以在人工生成的传播信号上编码,例如,在机器生成的电、光或电磁信号上编码,该信号的生成旨在对信息进行编码,用于传输到合适的接收设备,以便由数据处理装置执行。
术语“数据处理装置”是指数据处理硬件,并且包括用于处理数据的所有种类的设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或还包括现成的或定制的并行处理子系统,例如,GPU或另一种专用处理子系统。该装置还可以是或还包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中的一个或多个的组合的代码。
可以以任何形式的编程语言编写称为或描述为程序、软件、软件应用程序、应用程序、模块、软件模块、脚本或代码的计算机程序,其中编程语言包括编译或解释语言、声明或过程语言,并且该计算机程序可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不是必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件中,例如,存储一个或多个模块、子程序或部分代码的文件中。计算机程序可以被部署为在一台计算机上或位于一个站点或分布在多个站点并通过数据通信网络互连的多台计算机上执行。
如本说明书中所使用的,“引擎”或“软件引擎”是指提供与输入不同的输出的软件实施的输入/输出系统。引擎可以是编码的功能块,例如,库、平台、软件开发工具包(“SDK”)或对象。每个引擎可以在包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备上实施,例如,在服务器、移动电话、平板电脑、笔记本电脑、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其他固定或便携式设备上实施。另外,两个或更多个引擎可以在相同的计算设备上实施,或者在不同的计算设备上实施。
本说明书中描述的处理和逻辑流程可以由一个或多个可编程计算机执行,该可编程计算机执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路,例如,FPGA或ASIC,或者由专用逻辑电路和一个或多个编程计算机的组合来执行。
适于执行计算机程序的计算机可以基于通用或专用微处理器或这两者或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于履行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器可以由专用逻辑电路来补充或并入专用逻辑电路中。通常,计算机还包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,以从其中接收数据或向其传送数据,或两者兼有。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入另一设备,仅举几例,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器))以及键盘和指向设备,例如,鼠标、跟踪球或存在敏感显示器或用户可以向计算机提供输入的其他表面。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档以及从用户使用的装置接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户设备上的网络浏览器来进行交互。此外,计算机可以通过向个人设备,例如,智能手机,发送文本消息或其他形式的消息,运行消息发送应用程序并从用户接收响应消息,来与用户交互。
虽然本说明书包含许多具体的实施细节,但是这些细节不应被解释为对任何发明的范围或对所要求保护的范围的限制,而是解释为对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中以组合形式实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或者在任何合适的子组合中实施。此外,尽管特征可以在上文中被描述为在某些组合中起作用,并且甚至首先要求保护,但是在某些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描述了操作,但是这不应该被理解为要求以所示的特定顺序或以先后顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行,并且仍然实现期望的结果。作为一个示例,附图中描述的处理不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
Claims (20)
1.一种计算机实施的方法,其特征在于,包括:
接收计算机程序的在先程序计数器地址和相应增量值的序列,其中,每个增量值定义相应的第一存储器地址和相应的第二存储器地址之间的差,其中,所述第一存储器地址是当执行被相应的所述程序计数器地址指向的指令时而被访问的存储器地址,并且其中,所述第二存储器地址是在访问所述第一存储器地址之前而被访问的存储器地址;
基于程序计数器地址及其相应增量值的所述序列来生成输入表示;
将所述输入表示作为输入提供给循环神经网络;并且
从所述循环神经网络接收定义未来增量值的概率分布的输出,其中,所述分布中的每个概率表示所述计算机程序的未来指令的执行将导致从未来存储器地址提取数据的可能性,所述未来存储器地址等于(i)当执行被所述序列中最近的程序计数器地址指向的指令时而被访问的相应的第一存储器地址,加上(ii)对应于所述概率的所述未来增量值。
2.根据权利要求1所述的方法,其特征在于,进一步包括:确定所述分布中的一个或多个概率满足阈值标准。
3.根据权利要求2所述的方法,其特征在于,进一步包括:
响应于确定所述分布中的所述一个或多个概率满足所述阈值标准,从与满足所述标准的所述一个或多个概率相关联的一个或多个所述未来存储器地址提取数据;并且
将所述数据存储在本地缓存中。
4.根据权利要求2所述的方法,其特征在于,进一步包括:
自动将一个或多个提取指令插入到所述计算机程序中,其中,所述一个或多个提取指令的执行导致从与满足所述标准的所述一个或多个概率相关联的一个或多个所述未来存储器地址提取数据,并且其中,所述一个或多个提取指令在所述计算机程序的所述未来指令之前被插入到所述计算机程序中。
5.根据权利要求1所述的方法,其特征在于,进一步包括:
将作为执行所述计算机程序的未来指令的结果而从中提取数据的存储器地址与未来增量值的所述概率分布进行比较;并且
基于所述比较来更新所述循环神经网络的参数。
6.根据权利要求1所述的方法,其特征在于,在微处理器上执行所述操作,其中,在所述微处理器上实施所述循环神经网络,并且其中,所述方法还包括:
从与所述分布中满足阈值标准的一个或多个概率相关联的一个或多个未来存储器地址提取数据;并且
将所述数据存储在所述微处理器上的本地缓存中。
7.根据权利要求1所述的方法,其特征在于,基于程序计数器地址及其相应增量值的所述序列来生成输入表示包括:
将程序计数器地址及其相应增量值的所述序列映射到高维嵌入空间中的数字嵌入序列。
8.根据权利要求7所述的方法,其特征在于,将程序计数器地址及其相应增量值的所述序列映射到高维嵌入空间中的数字嵌入包括:
使用预先指定的词汇表将所述程序计数器地址和增量值映射到索引;并且
使用所述索引从查找表检索相应的嵌入。
9.根据权利要求7所述的方法,其特征在于,进一步包括:
将数字嵌入的输入序列划分成多个族群,其中,每个族群具有质心点;
相对于其相应族群的质心点来归一化每个数字嵌入;并且
将归一化的所述数字嵌入作为输入提供给所述循环神经网络。
10.根据权利要求1所述的方法,其特征在于,进一步包括:
确定应该以与所述计算机程序的相应未来指令出现的顺序不同的顺序来访问与满足阈值标准的概率相关联的存储器地址;并且
改变所述计算机程序的所述相应未来指令的所述顺序。
11.根据权利要求2所述的方法,其特征在于,进一步包括:
确定在本地缓存中存在来自与满足所述阈值标准的概率相关联的存储器地址的数据,并且
更新本地缓存中的所述数据的年龄位,其中,所述年龄位指示最近使用所述数据的时间,并且其中,所述本地缓存是最近最少使用的本地缓存。
12.一种系统,其特征在于,包括一个或多个计算机和存储指令的一个或多个存储设备,当所述指令被所述一个或多个计算机执行时,使所述一个或多个计算机执行如下操作,包括:
接收计算机程序的在先程序计数器地址和相应增量值的序列,其中,每个增量值定义相应的第一存储器地址和相应的第二存储器地址之间的差,其中,所述第一存储器地址是当执行被相应的所述程序计数器地址指向的指令时而被访问的存储器地址,并且其中,所述第二存储器地址是在访问所述第一存储器地址之前而被访问的存储器地址;
基于程序计数器地址及其相应增量值的所述序列来生成输入表示;
将所述输入表示作为输入提供给循环神经网络;并且
从所述循环神经网络接收定义未来增量值的概率分布的输出,其中,所述分布中的每个概率表示所述计算机程序的未来指令的执行将导致从未来存储器地址提取数据的可能性,所述未来存储器地址等于(i)当执行被所述序列中最近的程序计数器地址指向的指令时而被访问的相应的第一存储器地址,加上(ii)对应于所述概率的所述未来增量值。
13.根据权利要求12所述的系统,其特征在于,所述操作进一步包括:确定所述分布中的一个或多个概率满足阈值标准。
14.根据权利要求13所述的系统,其特征在于,所述操作进一步包括:
响应于确定所述分布中的所述一个或多个概率满足所述阈值标准,从与满足所述标准的所述一个或多个概率相关联的一个或多个所述未来存储器地址提取数据;并且
将所述数据存储在本地缓存中。
15.根据权利要求13所述的系统,其特征在于,所述操作进一步包括:
自动将一个或多个提取指令插入到所述计算机程序中,其中,所述一个或多个提取指令的执行导致从与满足所述标准的所述一个或多个概率相关联的一个或多个所述未来存储器地址提取数据,并且其中,所述一个或多个提取指令在所述计算机程序的所述未来指令之前被插入到所述计算机程序中。
16.根据权利要求12所述的系统,其特征在于,所述操作进一步包括:
将作为执行所述计算机程序的未来指令的结果而从中提取数据的存储器地址与未来增量值的所述概率分布进行比较;并且
基于所述比较来更新所述循环神经网络的参数。
17.根据权利要求12所述的系统,其特征在于,在微处理器上执行所述操作,其中,在所述微处理器上实施所述循环神经网络,并且其中,所述方法还包括:
从与所述分布中满足阈值标准的一个或多个概率相关联的一个或多个未来存储器地址提取数据;并且
将所述数据存储在所述微处理器上的本地缓存中。
18.根据权利要求12所述的系统,其特征在于,基于程序计数器地址及其相应增量值的所述序列来生成输入表示包括:
将程序计数器地址及其相应增量值的所述序列映射到高维嵌入空间中的数字嵌入序列。
19.根据权利要求12所述的系统,其特征在于,将程序计数器地址及其相应增量值的所述序列映射到高维嵌入空间中的数字嵌入包括:
使用预先指定的词汇表将所述程序计数器地址和增量值映射到索引;并且
使用所述索引从查找表检索相应的嵌入。
20.一种或多个用指令进行编码的非暂时性计算机存储介质,其特征在于,当所述指令被一个或多个计算机执行时,促使所述一个或多个计算机执行如下操作,包括:
接收计算机程序的在先程序计数器地址和相应增量值的序列,其中,每个增量值定义相应的第一存储器地址和相应的第二存储器地址之间的差,其中,所述第一存储器地址是当执行被相应的所述程序计数器地址指向的指令时而被访问的存储器地址,并且其中,所述第二存储器地址是在访问所述第一存储器地址之前而被访问的存储器地址;
基于程序计数器地址及其相应增量值的所述序列来生成输入表示;
将所述输入表示作为输入提供给循环神经网络;并且
从所述循环神经网络接收定义未来增量值的概率分布的输出,其中,所述分布中的每个概率表示所述计算机程序的未来指令的执行将导致从未来存储器地址提取数据的可能性,所述未来存储器地址等于(i)当执行被所述序列中最近的程序计数器地址指向的指令时而被访问的相应的第一存储器地址,加上(ii)对应于所述概率的所述未来增量值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/994,144 | 2018-05-31 | ||
US15/994,144 US20190370632A1 (en) | 2018-05-31 | 2018-05-31 | Computer system prediction machine learning models |
PCT/US2019/034578 WO2019232163A1 (en) | 2018-05-31 | 2019-05-30 | Computer system prediction machine learning models |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112136142A true CN112136142A (zh) | 2020-12-25 |
Family
ID=67145867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980026107.4A Pending CN112136142A (zh) | 2018-05-31 | 2019-05-30 | 计算机系统预测机器学习模型 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190370632A1 (zh) |
CN (1) | CN112136142A (zh) |
DE (1) | DE112019002737T5 (zh) |
TW (1) | TW202004497A (zh) |
WO (1) | WO2019232163A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485829A (zh) * | 2021-07-02 | 2021-10-08 | 深圳万顺叫车云信息技术有限公司 | 用于微服务集群的数据增量步段的标识值生成方法 |
CN114065947A (zh) * | 2021-11-15 | 2022-02-18 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11521740B2 (en) * | 2018-06-06 | 2022-12-06 | International Business Machines Corporation | Natural language processing of a motion alphabet for unsupervised clinical scoring |
US10809987B2 (en) | 2018-08-14 | 2020-10-20 | Hyperblox Inc. | Software acceleration platform for supporting decomposed, on-demand network services |
US11226741B2 (en) * | 2018-10-31 | 2022-01-18 | EMC IP Holding Company LLC | I/O behavior prediction based on long-term pattern recognition |
US11416733B2 (en) * | 2018-11-19 | 2022-08-16 | Google Llc | Multi-task recurrent neural networks |
US10838870B2 (en) * | 2019-04-17 | 2020-11-17 | EMC IP Holding Company LLC | Aggregated write and caching operations based on predicted patterns of data transfer operations |
US10977184B2 (en) * | 2019-06-20 | 2021-04-13 | Apical Limited and Arm Limited | Managing memory access for convolutional neural networks |
US11860782B2 (en) * | 2019-08-13 | 2024-01-02 | Neuroblade Ltd. | Compensating for DRAM activation penalties |
GB2590389A (en) * | 2019-12-16 | 2021-06-30 | Nokia Technologies Oy | Method and apparatus for control of memory banks |
US11726544B2 (en) | 2020-07-03 | 2023-08-15 | Mediatek Inc. | Dynamic agent for multiple operators optimization |
US20220156633A1 (en) * | 2020-11-19 | 2022-05-19 | Kabushiki Kaisha Toshiba | System and method for adaptive compression in federated learning |
KR102575380B1 (ko) * | 2021-04-14 | 2023-09-06 | 계명대학교 산학협력단 | 효율적인 캐시 교체를 위한 메모리 제어 방법 및 장치 |
WO2023129126A1 (en) * | 2021-12-28 | 2023-07-06 | Futurewei Technologies, Inc. | Machine learning for stride predictor for memory prefetch |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305389A (en) * | 1991-08-30 | 1994-04-19 | Digital Equipment Corporation | Predictive cache system |
US20160381176A1 (en) * | 2015-06-25 | 2016-12-29 | International Business Machines Corporation | Data prefetching for large data systems |
US20170168947A1 (en) * | 2015-12-15 | 2017-06-15 | Commissariat A L'Energie Atomique et aux Energies Altenatives | Method of predicting a datum to be preloaded into a cache memory |
US20180143746A1 (en) * | 2016-11-23 | 2018-05-24 | Roku, Inc. | Predictive Application Caching |
-
2018
- 2018-05-31 US US15/994,144 patent/US20190370632A1/en active Pending
-
2019
- 2019-05-30 DE DE112019002737.9T patent/DE112019002737T5/de active Pending
- 2019-05-30 CN CN201980026107.4A patent/CN112136142A/zh active Pending
- 2019-05-30 WO PCT/US2019/034578 patent/WO2019232163A1/en active Application Filing
- 2019-05-31 TW TW108119029A patent/TW202004497A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305389A (en) * | 1991-08-30 | 1994-04-19 | Digital Equipment Corporation | Predictive cache system |
US20160381176A1 (en) * | 2015-06-25 | 2016-12-29 | International Business Machines Corporation | Data prefetching for large data systems |
US20170168947A1 (en) * | 2015-12-15 | 2017-06-15 | Commissariat A L'Energie Atomique et aux Energies Altenatives | Method of predicting a datum to be preloaded into a cache memory |
US20180143746A1 (en) * | 2016-11-23 | 2018-05-24 | Roku, Inc. | Predictive Application Caching |
Non-Patent Citations (6)
Title |
---|
CHI-KEUNG LUK等: "Compiler-based prefetching for recursive data structures", 《PROCEEDINGS OF THE SEVENTH INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES AND OPERATING SYSTEMS》, pages 222 - 233 * |
DONG DAI 等: "Block2Vec: A Deep Learning Strategy on Mining Block Correlations in Storage Systems", 《2016 45TH INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING WORKSHOPS》, pages 230 - 234 * |
K.J. NESBIT 等: "Data Cache Prefetching Using a Global History Buffer", 《10TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA\'04)》, pages 1 - 10 * |
LEEOR PELED 等: "Towards Memory Prefetching with Neural Networks:Challenges and Insights", 《ARXIV:1804.00478V1》, pages 1 - 13 * |
MILAD HASHEMI等: "Learning memory access patterns", 《ARXIV:1803.02329V1》, pages 1 - 15 * |
龚帅帅: "嵌入式处理器指令预取关键技术设计研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 137 - 29 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485829A (zh) * | 2021-07-02 | 2021-10-08 | 深圳万顺叫车云信息技术有限公司 | 用于微服务集群的数据增量步段的标识值生成方法 |
CN114065947A (zh) * | 2021-11-15 | 2022-02-18 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
CN114065947B (zh) * | 2021-11-15 | 2022-07-22 | 深圳大学 | 一种数据访问推测方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2019232163A1 (en) | 2019-12-05 |
DE112019002737T5 (de) | 2021-04-22 |
TW202004497A (zh) | 2020-01-16 |
US20190370632A1 (en) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112136142A (zh) | 计算机系统预测机器学习模型 | |
CA3095205C (en) | Multi-task recurrent neural networks | |
US11928600B2 (en) | Sequence-to-sequence prediction using a neural network model | |
US11328206B2 (en) | Systems and methods for optimizing operations of computing devices using deep neural networks | |
US20200410365A1 (en) | Unsupervised neural network training using learned optimizers | |
KR101828215B1 (ko) | Long Short Term Memory 기반 순환형 상태 전이 모델의 학습 방법 및 장치 | |
CN109313720A (zh) | 具有稀疏访问的外部存储器的增强神经网络 | |
US20210374544A1 (en) | Leveraging lagging gradients in machine-learning model training | |
US20200279192A1 (en) | Semantics preservation for machine learning models deployed as dependent on other machine learning models | |
CN108475346B (zh) | 神经随机访问机器 | |
WO2021012263A1 (en) | Systems and methods for end-to-end deep reinforcement learning based coreference resolution | |
CN112906398B (zh) | 句子语义匹配方法、系统、存储介质和电子设备 | |
KR102561799B1 (ko) | 디바이스에서 딥러닝 모델의 레이턴시를 예측하는 방법 및 시스템 | |
WO2022040963A1 (en) | Methods and apparatus to dynamically normalize data in neural networks | |
KR20220048593A (ko) | 데이터 라벨링 장치 및 방법 | |
Avram et al. | Deep Neural Networks in Fake News Detection | |
CN116090598A (zh) | 企业风险预测方法及装置 | |
KR20230155822A (ko) | 자동기계학습을 구현하기 위한 앙상블 예측 방법, 컴퓨터 장치, 및 컴퓨터 프로그램 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40040072 Country of ref document: HK |
|
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Mirad Oran Hashmi Inventor after: PATA salati Ranganathan Inventor after: Jamie Alexander Smith Inventor after: kevin. Jordan Swarky Inventor before: Mirad Oran Hashmi Inventor before: PATA salati Ranganathan |