一种数据预取的方法及相关设备

文档序号:717307 发布日期:2021-04-16 浏览:16次 >En<

阅读说明:本技术 一种数据预取的方法及相关设备 (Data prefetching method and related equipment ) 是由 方维 于 2019-10-16 设计创作,主要内容包括:本申请提供一种数据预取的方法及相关设备。其中,该方法包括:计算设备接收第一读请求;该计算设备将第一读请求所读取数据的地址输入神经网络模型,该神经网络模型输出多个地址的概率值,每个地址的概率值表示每个地址对应的数据为第二读请求所读取的数据的概率,所述第二读请求为所述第一读请求的下一个读请求;计算设备按照概率值从所述神经网络模型的输出中获取N个地址,使该N个地址对应的数据存储至缓存中。上述方法能够预测即将被访问的数据并提前将其预取至缓存中,提高缓存命中率。(The application provides a data prefetching method and related equipment. Wherein, the method comprises the following steps: receiving, by a computing device, a first read request; the computing device inputs an address of data read by a first read request into a neural network model, the neural network model outputs a probability value of a plurality of addresses, the probability value of each address represents the probability that the data corresponding to each address is the data read by a second read request, and the second read request is the next read request of the first read request; and the computing equipment acquires N addresses from the output of the neural network model according to the probability value, and stores the data corresponding to the N addresses into a cache. The method can predict the data to be accessed and pre-fetch the data to the cache in advance, and improves the cache hit rate.)

一种数据预取的方法及相关设备

技术领域

本发明涉及存储技术领域,尤其涉及一种数据预取的方法及相关设备。

背景技术

存储器是计算机的核心部件之一,其性能直接关系到整个计算机系统性能的高低。如何设计出容量和速度满足计算机系统要求的存储器系统一直是计算机体系结构设计中的关键问题之一。仅用单一的一种存储器是很难达到这一目标的,目前解决该问题是采用多种存储器技术,构成多级存储层次。如图1所示,是一种典型的两级存储模型,包括容量小但速度快的高速输入输出(input/output,I/O)设备,例如静态随机存储器(staticrandom access memory,SRAM)等,以及容量大但速度慢的低速I/O设备,例如硬盘等。所有的数据都存储在低速I/O设备上,高速I/O设备作为一个缓存(cache)使用,在读取数据时总是先在高速I/O设备中查找是否有该数据的拷贝。

缓存是数据处理设备(如计算机、移动终端等)的重要组成部分,缓存的作用是暂时存储中央处理器(central processing unit,CPU)中的指令和数据,以及与硬盘等外部存储器交换数据,使CPU可以实现更高速的访问,缩短访问时间,提高系统的性能,如上述图1所示。缓存所基于的原理是程序执行与数据访问的局域性行为,即一定程序执行时间和空间内,被访问的代码集中于一部分。

如果用户访问的数据在缓存中能够找到,则称为缓存命中;若不能找到,则称为缓存缺失(miss)。为了提高缓存命中率,不仅依赖于程序执行和数据访问的局域性行为,还需要使用数据预取技术,即将CPU要使用的数据预先从硬盘中取出到缓存中。

目前,主要是通过对访问请求的访问地址进行分析,确定访问地址是连续的或等间隔时,进行顺序流预取和间隔流预取。但是,在大多数情况下,访问地址之间没有顺序性但强关联,现有数据预取方法不再适用。因此,如何在访问地址没有顺序性但强关联的情况下,将CPU即将访问的数据预取至缓存中以提高缓存命中率是目前亟待解决的问题。

发明内容

本发明实施例公开了一种数据预取的方法及相关设备,能够预测即将被访问的数据,并提前将其预取至缓存中,提高缓存命中率。

第一方面,本申请提供一种数据预取的方法,所述方法包括:处理器接收第一读请求;该处理器将所述第一读请求所读取数据的地址输入神经网络模型,该神经网络模型输出多个地址的概率值,每个地址的概率值表示每个地址对应的数据为第二读请求所读取的数据的概率,所述第二读请求为所述第一读请求的下一个读请求;处理器按照概率值从所述神经网络模型的输出中获取N个地址,使所述N个地址对应的数据存储在缓存中。

可选的,神经网络模型可以是skip gram模型、循环神经网络模型或者卷积神经网络模型。

在本申请实施例中,处理器将接收到的读请求输入已经训练好的神经网络模型中,利用神经网络模型预测后续读请求可能读取的数据,选择神经网络模型输出的概率值较大的地址并将其对应的数据存储在缓存中,这样可以避免从硬盘中读取数据,提高了缓存命中率以及处理器的性能。

结合第一方面,在第一方面一种可能的实现方式中,处理器确定所述N个地址中对应的数据不在所述缓存中的M个地址,所述M为大于等于1的正整数;处理器将所述M个地址对应的数据存储至所述缓存。

在本申请实施例中,处理器在将数据存储至缓存的过程中,需要先进行判断缓存中是否已经存储了该数据,只有在缓存中未存储的情况下才将其存储至缓存中,这样可以避免数据的重复,减少缓存空间的浪费,提高缓存的利用率。

结合第一方面,在第一方面一种可能的实现方式中,所述神经网络模型包括第一神经网络模型及第二神经网络模型,其中所述第一神经网络模型用于对写入数据的地址进行训练,所述第二神经网络模型用于对读取数据的地址进行训练;处理器将所述第一读请求所读取数据的地址分别输入第一神经网络模型和第二神经网络模型;处理器按照概率值从大到小的顺序从所述第一神经网络模型的输出中获取前N1个地址,按照概率值从大到小的顺序从所述第二神经网络模型的输出中获取前N2个地址,其中,所述N1与所述N2之和等于所述N。

在本申请实施例中,利用第一神经网络模型和第二神经网络模型分别对第一读请求进行预测,并按照概率值的大小从它们各自的输出中分别选取N1个地址和N2个地址,将其存储在缓存中,可以进一步提高缓存命中率和处理器性能。

结合第一方面,在第一方面一种可能的实现方式中,处理器获取一个写入数据的地址集合,所述地址集合中写入时间相邻的两个数据的写入时间间隔小于一预设值;处理器通过所述第一神经网络模型对地址集合中的地址进行训练,使得所述地址集合中的第一地址输入所述第一神经网络模型之后,所述第一地址之后的至少一个地址在所述第一神经网络模型输出的多个地址的概率中的概率增加,所述第一地址为所述地址集合中的任意一个地址。

在本申请实施例中,处理器利用写入时间相邻的写入数据的地址集合作为训练样本输入第一神经网络模型中进行训练,可以使得第一神经网络模型经过训练后学习到地址集合中各个地址之间的关联关系,进而使得在地址集合中的任意一个地址在输入第一神经网络模型之后,该地址之后的至少一个地址的概率增加,提高第一神经网络模型预测的准确性。

结合第一方面,在第一方面一种可能的实现方式中,处理器获取一个读取数据的地址集合,所述地址集合中读取时间相邻的两个数据的读取时间间隔小于一预设值;处理器通过所述第二神经网络模型对地址集合中的地址进行训练,使得所述地址集合中的第一地址输入所述第二神经网络模型之后,所述第一地址之后的至少一个地址在所述第二神经网络模型输出的多个地址的概率中的概率增加,所述第一地址为所述地址集合中的任意一个地址。

在本申请实施例中,处理器利用读取时间相邻的读取数据的地址集合作为训练样本输入第二神经网络模型中进行训练,可以使得第二神经网络模型经过训练后学习到地址集合中各个地址之间的关联关系,进而使得在地址集合中的任意一个地址在输入第二神经网络模型之后,该地址之后的至少一个地址的概率增加,提高第二神经网络模型预测的准确性。

结合第一方面,在第一方面一种可能的实现方式中,处理器统计预设时长内,在所述缓存中命中的从所述第一神经网络模型的输出中获取的地址的数量A,以及在所述缓存中命中的从所述第二神经网络模型的输出中获取的地址的数量B;处理器根据所述A和所述B,调整从所述第一神经网络模型的输出中获取的地址数量N1和从所述第二神经网络模型的输出中获取的地址数量N2。

在本申请实施例中,处理器从第一神经网络模型的输出中获取的地址数量N1和从第二神经网络模型的输出中获取的地址数量N2并不是一直不变的,而是会根据在缓存中命中的数量进行动态调整,从而进一步提高缓存命中率和处理器性能。

第二方面,本申请提供了一种计算设备,包括:接收单元,用于接收第一读请求;预测单元,用于将所述第一读请求所读取数据的地址输入神经网络模型,所述神经网络模型输出多个地址的概率值,每个地址的概率值表示每个地址对应的数据为第二读请求所读取的数据的概率,所述第二读请求为所述第一读请求的下一个读请求;按照概率值从所述神经网络模型的输出中获取N个地址,使所述N个地址对应的数据存储在缓存中。

结合第二方面,在第二方面一种可能的实现方式中,所述预测单元,还用于:确定所述N个地址中对应的数据不在所述缓存中的M个地址,所述M为大于等于1的正整数;将所述M个地址对应的数据存储至所述缓存。

结合第二方面,在第二方面一种可能的实现方式中,所述神经网络模型包括第一神经网络模型和第二神经网络模型,其中,所述第一神经网络模型,用于对写入数据的地址进行训练,并对所述第一读请求所读取数据的地址进行预测,输出多个地址的概率值;所述第二神经网络模型,用于对读取数据的地址进行训练,并对所述第一读请求所读取数据的地址进行预测,输出多个地址的概率值;所述预测单元,还用于按照概率值从大到小的顺序从所述第一神经网络模型的输出中获取前N1个地址,按照概率值从大到小的顺序从所述第二神经网络模型的输出中获取前N2个地址,其中,所述N1和所述N2之和等于所述N。

结合第二方面,在第二方面一种可能的实现方式中,所述预测单元,还用于:获取一个写入数据的地址集合,所述地址集合中写入时间相邻的两个数据的写入时间间隔小于一预设值;对所述地址集合中的地址进行训练,使得所述地址集合中的第一地址输入所述第一神经网络模型之后,所述第一地址之后的至少一个地址在所述第一神经网络模型输出的多个地址的概率中的概率增加,所述第一地址为所述地址集合中的任意一个地址。

结合第二方面,在第二方面一种可能的实现方式中,所述预测单元,还用于:获取一个读取数据的地址集合,所述地址集合中读取时间相邻的两个数据的读取时间间隔小于一预设值;对所述地址集合中的地址进行训练,使得所述地址集合中的第一地址输入所述第二神经网络模型之后,所述第一地址之后的至少一个地址在所述第二神经网络模型输出的多个地址的概率中的概率增加,所述第一地址为所述地址集合中的任意一个地址。

结合第二方面,在第二方面一种可能的实现方式中,所述计算设备还包括处理单元,用于统计预设时长内,在所述缓存中命中的从所述第一神经网络模型的输出中获取的地址的数量A,以及在所述缓存中命中的从所述第二神经网络模型的输出中获取的地址的数量B;根据所述A和所述B,调整从所述第一神经网络模型的输出中获取的地址数量N1和从所述第二神经网络模型的输出中获取的地址数量N2。

第三方面,本申请提供了一种智能芯片,所述智能芯片中烧录有指令,所述智能芯片执行所述指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取的方法。

第四方面,本申请提供了一种计算设备,所述计算设备包括处理器和存储器,所述处理器和所述存储器通过内部总线相连,所述存储器中存储有指令,所述处理器调用所述存储器中的指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取的方法。

第五方面,本申请提供了一种计算设备,所述计算设备包括处理器、存储器和智能芯片,所述智能芯片通过串行总线与所述处理器相连,通过PCIe接口与所述存储器相连,所述智能芯片中烧录有指令,所述智能芯片执行所述指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取的方法。

第六方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取方法的流程。

第七方面,本申请提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取方法的流程。

第八方面,本发明提供一种计算设备,包括处理器、存储器,所述存储器中存储有程序指令,所述处理器执行所述存储器中的指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据预取方法。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种存储模型的示意图;

图2A是本申请实施例提供的一种数据访问的示意图;

图2B是本申请实施例提供的又一种数据访问的示意图;

图3是本申请实施例提供的一种系统架构的示意图;

图4是本申请实施例提供的一种数据预取系统的结构示意图;

图5是本申请实施例提供的一种数据预取的方法的流程示意图;

图6是本申请实施例提供的一种第一神经网络模型训练方法的流程示意图;

图7是本申请实施例提供的一种写请求流分割的示意图;

图8是本申请实施例提供的一种第二神经网络模型训练方法的流程示意图;

图9是本申请实施例提供的一种计算设备的结构示意图。

具体实施方式

下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。

首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。

逻辑区块地址(logical block address,LBA)是描述存储设备上数据所在区块的通用机制,一般用在硬盘等辅助记忆设备。LBA可以指某个数据区块的地址,一个逻辑区块一般是512或1024位组。

缓存(cache)一般用于随机存储器(random access memory,RAM),用于存储临时数据,。缓存是可以进行高速数据交换的存储器,具有极快的存储速率,解决CPU速度和硬盘速度的速度差异。它先于硬盘与CPU交换数据,缓存的容量较小,只能存储硬盘中的一小部分的数据,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开硬盘直接从缓存中调用,从而加快读取速度。数据在缓存中存储时是采用的键值对(key-value)的形式进行存储的,即缓存中既存储了LBA,又存储了对应于LBA的值。

预取技术是指在CPU访问数据之前,提前将数据从主存储器(例如硬盘)加载到缓存存储器(缓存)中,以降低CPU访问数据的停顿时间,提高CPU的性能。

Skip-gram是一种无监督学习技术,可以独立学习词语的上下文,能够通过学习词语之间的关系,自动补全句子或分析语句的相关性,用于预测与给定中心词相对应的上下文词。无监督学习是指没有标注的训练数据集,需要根据样本间的规律统计对样本进行分析,例如任务聚类等。

循环神经网络(recurrent neural network,RNN)是一种节点定向连接成环的人工神经网络,这种网络的内部状态可以展开动态时序行为。RNN不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种记忆功能。RNN网络主要由输入层、隐藏层和输出层组成,网络对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。RNN可以用于自然语言处理(natural language processing,NLP)、机器翻译、语音识别、图像描述生成以及文本相似度计算等领域,例如,在本申请中,可以利用RNN实现数据预取。

卷积神经网络(convolutional neural networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。CNN具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类。CNN仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程要求。

在数据处理过程中,由于缓存离CPU较近,且存取数据的速度较快,因此在处理访问请求时,CPU总是先在缓存中查找待访问的数据,若在缓存中没有找到待访问数据,则会进一步在硬盘中查找待访问数据,这样会降低CPU的访问速率。为了缩短访问时间,提高访问效率,需要使用预取技术将CPU即将访问的数据预取至缓存中,提高缓存命中率。如图2A所示,数据块1、数据块2、。。。、数据块n在空间上是连续的,CPU在进行访问时,将依次访问数据块1、数据块2、。。。、数据块n,例如CPU在读取一些大文件时就是按照这种方式进行访问的。CPU可以通过分析访问地址(例如LBA)之间的关系,识别出顺序流,即CPU所访问的数据对应的地址是连续的,利用顺序流预取技术提前将CPU需要访问的数据预取至缓存中,这样在使用该数据时,可以保证在缓存中找到,提高了缓存命中率,降低了数据访问时延。如图2B所示,数据块1、数据块2、。。。、数据块n在空间上是连续的,CPU在进行访问时,不是严格进行顺序访问的,而是按照一定的间隔进行访问的,例如CPU以2个数据块为间隔进行访问,即CPU访问了数据块1之后将会访问数据块4,然后访问数据块7。CPU通过分析访问地址之间的关系,识别出间隔流,即CPU所访问的数据对应的地址是等间隔的,利用间隔流预取技术提前将CPU需要访问的数据预取至缓存中,可以提高缓存命中率,降低数据访问时延。

顺序流预取技术和间隔流预取技术只能适用于访问地址是连续的或等间隔的场景,若访问地址之间没有顺序性但具有较强的关联性时,上述方法将不再适用。例如,在虚拟机启动时,操作系统会按照固定顺序读取若干配置文件,这些文件所对应的地址不是顺序的或等间隔的,但是每次启动都会按照这种顺序进行读取,其所对应的地址具有较强的关联关系,利用顺序流预取技术或间隔流预取技术无法预取出CPU即将访问的数据,即无法提高缓存命中率,不能降低数据访问时延。

基于上述,本申请提供了一种数据预取的方法及相关设备,可以通过分析访问地址之间的相关性,识别地址访问规律,提前预取出即将访问的地址对应的数据至缓存中,提高缓存命中率,降低数据访问时延,提高系统性能。

本申请实施例的技术方案可以应用于各种需要数据预取的场景,包括但不限于企业存储、分布式存储、云存储等。

在一个具体的实施例中,数据预取系统可以部署在任意一个涉及数据预取的计算设备中。例如,如图3所示,可以部署在云环境上的一个或多个计算设备(例如中心服务器),或者边缘环境中的一个或多个计算设备(边缘计算设备)上,边缘计算设备可以为服务器。其中,云环境是指云服务提供商拥有的,用于提供计算、存储、通信资源的中心计算设备集群,具备较大的存储资源和计算资源;边缘环境是指在地理位置上距离终端设备较近的,用于提供计算、存储、通信资源的边缘计算设备集群。

数据预取系统用于分析业务访问请求的访问地址,预取出CPU即将访问的地址所对应的数据至缓存中,数据预取系统内部的单元可以有多种划分方式,本申请对此不作限制。图4为一种示例性的划分方式,如图4所示,下面将分别简述每个功能单元的功能。

所示数据预取系统400包括多个功能单元,其中,获取单元410,用于获取数据访问请求,数据访问请求包括读请求和写请求;预测单元420,用于对获取单元410获取到的数据访问请求对应的访问地址输入神经网络模型进行训练,并预测出后续即将访问的地址;处理单元430,用于将预测单元420预测出的访问地址对应的数据预取至缓存中。

可选的,数据预取系统400还包括序列分割单元440,用于基于每个数据访问请求的到达时间对获取单元410获取到的读请求和写请求进行分割,得到多个读请求序列和多个写请求序列。所述神经网络模型包括第一神经网络模型4210和第二神经网络模型4220,所示第一神经网络模型4210,用于对分割单元440分割得到的多个写请求序列对应的地址进行训练,并预测出后续即将访问的地址;所示第二神经网络模型4220,用于对分割单元440分割得到的多个读请求序列对应的地址进行训练,并预测出后续即将访问的地址。数据预取系统400还包括统计单元450,用于统计第一神经网络模型4210预测并输出的第一关联地址的数量、第二神经网络模型4220预测并输出的第二关联地址的数量、在缓存中命中的第一关联地址的数量、在缓存中命中的第二关联地址的数量。所示数据预取系统400还包括更新单元460,用于根据统计单元450统计得到的数据更新第一神经网络模型4210和第二神经网络模型4220对应的权重,即第一神经网络模型4210预测并输入的第一关联地址的数量和第二神经网络模型4220预测并输出的第二关联地址的数量并不是一直相等的,而且按照权重比例进行输出的,例如一共需要预测并输出10个关联地址,第一神经网络模型4210所占的权重为0.4,第二神经网络模型4220所占的权重为0.6,则从第一神经网络模型4210预测的第一关联地址中选择4个并输出,从第二神经网络模型4220预测的第二关联地址中选择6个并输出。

本申请中,数据预取系统400可以为软件系统,其内部包括的各部分及功能单元部署在硬件设备上的形式比较灵活。

值得说明的是,上述缓存预取系统可以是一个独立芯片,通过串行总线与CPU连接,接收CPU发送的数据访问请求,对该数据访问请求对应的访问地址进行训练,并输出预测得到的该访问请求的下一个访问请求可能访问的地址。该独立芯片具体可以是现场可编程阵列(field-programmable gate array,FPGA),该FPGA是一种集成电路,可以由用户进行配置,也可以是其它可编程逻辑器件,本申请对此不作限定。

图5描述本申请实施例提供的数据预取的方法。如图5所示,该方法包括但不限于以下步骤:

S510:计算设备获取第一读请求。

具体地,该计算设备部署有上述图4所示的数据预取系统400,第一读请求可以是计算设备中应用程序等所产生的请求,用于访问计算设备所存储的数据,其中,该第一读请求中携带着待读取数据对应的地址,该地址可以是LBA,计算设备中的获取单元410接收到第一读请求之后,根据该LBA查找到对应的数据并进行返回。计算设备的查找顺序是先从缓存中查找,若在缓存中找到该数据,则称为缓存命中,并直接返回该数据;由于缓存中只存储了一小部分数据,因此可能在缓存中不能找到该数据,若在缓存中没有找到该数据,将进一步从硬盘中查找并返回该数据。

S520:计算设备将第一读请求所读取数据的地址输入神经网络模型,输出得到多个地址的概率值。

具体地,由于缓存中数据的读取速度很快,可以与CPU的速度相匹配,因此为了缩短数据访问时间,提高缓存命中率,进而进一步提高系统性能。所以将第一读请求对应的地址输入训练好的神经网络模型中,该神经网络模型可以是图4中所示的预测单元420,利用神经网络模型预测该第一读请求之后的第二读请求可能访问的数据的地址,并输出预测得到的多个地址的概率值,按照概率值从中获取N个关联地址,以增加第二读请求从缓存中找到第二读请求所访问的数据的可能性,该N个关联地址与第一读请求所对应的访问地址具有较强的关联性。其中,N是大于1的正整数。

在一种可能的实现方式中,神经网络模型包括第一神经网络模型和第二神经网络模型,该第一神经网络模型可以是图4中所示的第一神经网络模型4210,该第二神经网络模型可以是图4中所示的第二神经网络模型4220。计算设备将第一读请求对应的地址分别输入第一神经网络模型和第二神经网络模型,以使得第一神经网络模型输出多个地址的概率值,并从中选取N1个地址作为第一关联地址,以使得第二神经网络模型也输出多个地址的概率值,并从中选取N2个地址作为第二关联地址,其中,N1和N2为大于等于1的正整数,且N1与N2之和等于N。第一神经网络模型是计算设备根据写入数据的地址进行训练得到的,第二神经网络模型是计算设备根据读取数据的地址进行训练得到的。关于第一神经网络模型和第二神经网络模型具体是如何进行训练得到的,将在后续步骤中进行具体描述。

可以理解,计算设备利用写入数据的地址(即在利用第一神经网络模型预测之前所获取到的写请求对应的地址)作为训练样本和读取数据的地址(即在利用第二神经网络模型预测之前所获取到的读请求对应的地址)作为训练样本进行训练,可以分析数据的地址之间的关联性,找到访问规律,以使得第一神经网络模型和第二神经网络模型能够根据写入数据的地址和读取数据的地址预测得到的第一读请求之后的第二读请求所对应的地址的准确性增加,并将该地址对应的数据提前预取至缓存中,提高缓存命中率,缩短访问时间,提高系统性能。

S530:计算设备按照概率值从神经网络模型的输出中获取N个地址并将其对应的数据存储在缓存中。

具体地,在将第一读请求输入神经网络模型之后,神经网络模型将预测并输出多个地址的概率值,从中选取概率值较大的N个关联地址,但这N个关联地址对应的数据,可能部分已经在缓存中存在。因此,计算设备中的处理单元430先要确定在这N个关联地址中,有哪些关联地址对应的数据已经存在于缓存中,即该部分数据不需要再进行预取,然后将没有在缓存中存储的关联地址作为目标关联地址,并将其所对应的数据从硬盘中预取至缓存中。

应理解,缓存的容量是比较小的,所存储的数据比较有限。因此需要对获取的神经网络模型输出的关联地址进行设置,即对N的值进行设置,避免将N的值设置过大,以提高缓存的利用率,保证缓存能够预留足够的容量支持下一次的预取操作。

进一步的,计算设备将第一神经网络模型预测得到的多个第一关联地址对应的概率值按照大小进行排序,并从大到小依次选取N1个第一关联地址进行输出,其中,每个第一关联地址的概率值表示每个第一关联地址对应的数据为第二读请求所读取的数据的概率,第二读请求为第一读请求的下一个读请求;此外,计算设备将第二神经网络模型预测得到的多个第二关联地址对应的概率值按照大小进行排序,并从大到小依次选取N2个第二关联地址进行输出,其中,每个第二关联地址的概率值表示每个第二关联地址对应的数据为第二读请求所读取的数据的概率,第二读请求为第一读请求的下一个读请求。

需要说明的是,在初始化阶段,第一神经网络模型和第二神经网络模型的权重是一样的,都为0.5。换句话说,在初始阶段,计算设备选取的第一关联地址的数量与第二关联地址的数量是相同的,即N1的值与N2相等。但是,随着时间的改变,计算设备会周期性的调整第一神经网络模型和第二神经网络模型所占的权重,保证能够较为准确的预测出当前读请求的下一个读请求(即第二读请求)对应的地址,提高缓存命中率。

在一种可能的实现方式中,计算设备中的统计单元450统计所述预设时长内,在所述缓存内命中的所述第一关联地址的数量A以及命中的所述第二关联地址的数量B,计算设备根据统计单元450统计得到的参数的值,即A和B,更新第一神经网络模型和第二神经网络模型所占的权重。

具体地,计算设备根据参数A和参数B的值,更新两个模型各自对应的权重。其中,第一神经网络模型所对应的权重a=A1/(A1+B1);第二神经网络模型所对应的权重b=B1/(A1+B1),计算设备根据计算得到的a和b,调整预取至缓存中的第一关联地址的数量和第二关联地址的数量,保证预取至缓存中的地址与当前读请求对应的地址关联性最强,提高缓存命中率。

示例性的,计算得到的a的值为0.3,b的值为0.7,计算设备每次需要预取10个关联地址所对应的数据至缓存中,则计算设备将会从第一神经网络模型预测并输出的所有第一关联地址中选择3个第一关联地址,并将其对应的数据预取至缓存中;同时,计算设备将会从第二神经网络模型预测并输出的所有第二关联地址中选择7个第二关联地址,并将其对应的数据预取至缓存中。

可以看出,计算设备根据统计参数及时调整模型所对应的权重,可以动态调整预取至缓存中的第一关联地址的数量和第二关联地址的数量,保证总是能够预取到与当前读请求对应的地址关联性最强的关联地址,提高缓存命中率,进而提高系统性能。

此外,由于缓存的容量有限,不能无限制的将硬盘等存储设备中的数据预取至缓存中,因此,为了保证缓存的高性能,提高缓存命中率,计算设备还需要周期性的更新(即删除)缓存中存储的数据,以使得缓存中有足够的容量存储最新预取至缓存中的数据。

可选的,计算设备可以利用相应的替换算法对缓存中存储的数据进行更新,替换算法包括但不限于最近最少使用(least recently used,LRU)算法、伪最近最少使用(pseudo LRU)算法、最不常使用(least frequently used,LFU)算法、随机(random)算法。容易理解,计算设备利用替换算法周期性更新缓存中存储的数据,可以进一步的提高缓存命中率。

需要说明的是,上述只是以将数据从硬盘中预取至缓存中为例进行说明的,对于任意的两级存储结构,例如将数据从内存中预取至CPU缓存中、或者将数据从硬盘中预取至内存中等,本申请所提供的方法同样适用,为了简洁,在此不再赘述。

下面将对第一神经网络模型和第二神经网络模型具体的训练过程进行详细的描述,应理解,本申请所选用的神经网络模型包括但不限于skip-gram模型、CNN模型、RNN模型。此外,第一神经网络模型和第二神经网络模型可以是同一类型的模型,例如都是skip-gram模型,也可以是不同类型的模型,例如第一神经网络模型是skip-gram模型,第二神经网络模型是RNN模型,本申请对此不作限定。

为了便于理解和说明,以第一神经网络模型和第二神经网络模型都为skip-gram模型为例进行具体描述。

图6是本申请实施例提供的一种第一神经网络模型训练方法的流程示意图。如图6所示,该方法包括但不限于以下步骤:

S610:计算设备获取多个写请求。

具体地,计算设备中获取单元410获取一段时间内应用程序产生的写请求,并记录每一个写请求对应的写入时间以及写入地址,将其暂时存储在缓存中。

示例性的,计算设备在t0时刻获取到一个写请求,其写入地址为a;在t1时刻获取到一个写请求,其写入地址为b;在t2时刻获取到一个写请求,其写入地址为c;在t3时刻获取到一个写请求,其写入地址为d。计算设备将这4个写请求以写入时间的先后顺序暂时存储在缓存中,例如,以[{t0,a},{t1,b},{t2,c},{t3,d}]的形式进行存储。

S620:计算设备将多个写请求进行分割得到多个写入数据的地址集合。

具体地,连续不断的写请求构成了写请求流,应理解,在写请求流中,若两个写请求之间相隔得太远,即两个写请求的写入时间相差过大,则说明该两个写请求所对应的写入地址之间关联性较弱,可以认定两个写请求之间是没有关联的。因此,计算设备中的序列分割单元440需要将写请求流进行分割,分割得到的多段较短的写请求流之间没有关联性,但每段写请求流中的写请求所对应的写入地址之间是具有关联性的,其中,每一段都为一个写入数据的地址集合。

进一步的,计算设备中的序列分割单元440基于每个写请求的写入时间进行分割,当两个写请求之间的写入时间超过预设时长,则需要对其进行分割,即每个地址集合中写入时间相邻的两个数据的写入时间间隔小于预设时长。其中,预设时长可以根据实际需要进行设置,本申请对此不作限定。

示例性的,如图7所示,在t0时刻获取到写入地址为a的写请求,在t1时刻获取到写入地址为b的写请求,在t2时刻获取到写入地址为c的写请求,在t3时刻获取到写入地址为d的写请求,在t4时刻获取到写入地址为e的写请求,在t5时刻获取到写入地址为a的写请求,在t6时刻获取到写入地址为d的写请求。其中,t0与t1之间间隔3个时间单位(例如3毫秒),t1与t2之间间隔4个时间单位,t2与t3之间间隔5个时间单位,t3与t4之间间隔11个时间单位,t4与t5之间间隔2个时间单位,t5与t6之间间隔5个时间单位。预设时长为10个时间单位,而t3与t4之间间隔11个时间单位,超过了10个时间单位,因此需要进行分割,得到两个地址集合,分别为(a,b,c,d)和(e,a,b)。此外,分割得到的多段写请求流对应的地址集合构成训练集。

S630:计算设备将每个地址集合作为训练样本输入skip-gram模型进行训练。

具体地,计算设备依次将每段写请求流所对应的地址集合输入skip-gram模型进行训练,不断更新模型的参数,最终通过训练使得skip-gram模型具备预测第二读请求所访问数据的地址的能力,第二读请求为当前读请求(即第一读请求)的下一个读请求。

进一步的,skip-gram模型主要包括隐藏层和输出层,所有的参数都存在于隐藏层的权重矩阵W1和输出层的权重矩阵W2中,模型训练的本质其实就是更新W1和W2中的参数。在使用skip-gram模型时,先要对W1和W2进行初始化,在初始化过程中,W1和W2中所包含的参数可以是随机选取的,然后通过后续的训练过程不断更新随机选取的参数。

还需要说明的是,上述所描述的所有地址(包括读请求所对应的地址、写请求对应的地址等)不是具体指某个数据的地址,而是指一个数据块对应的地址,该数据块的大小可以按照需要进行划分,例如可以划分为64KB、128KB等,该地址可以是通过对数据块进行逻辑编码得到。此外,每个计算设备的存储地址空间是固定的,可以对其进行逻辑划分,例如内存地址空间的大小为1GB,按照64KB对该内存地址空间进行划分,可以分为16384个数据块,每个数据块对应一个地址(例如LBA),即所有地址构成的地址空间的大小为16384。

示例性的,假设进行分割后得到的某一个地址集合为(a,b,c,d,e),构造地址对[a,b]、[a,c]、[a,d]、[a,e],每次将一个地址对输入skip-gram模型进行训练,其中每个地址对的前一个地址为模型输入,后一个地址用于对模型预测并输出的地址进行校正以更新模型参数。

在构造地址对完成之后,首先对地址对[a,b]进行训练。将a进行独热码(one-hot)编码,one-hot编码的本质是有多少个状态就有多少比特,而且只有一个比特为1,其它全为0的一种码制。这里,状态的总量就是指内存地址空间的大小,因此,在内存地址空间为1GB,以64KB进行划分的情况下,将a进行one-hot编码后,实则是将a转换为了一个16384维的向量,用x表示。

然后,将x传递到隐藏层,隐藏层执行权重矩阵W1与x的点积运算,得到结果h,即h=x*W1。应理解,x是一个1*16384的向量,W1可以是一个16384*k的矩阵,则h为一个1*k的向量,k的取值可以根据需要进行设置。一般来说,k的取值比较小,例如可以取5、10等。通过点积运算,可以对x实现降维,即可以通过一个较低维的向量表示a。容易理解,在维度降低以后,可以大大减小运算量,提高训练效率。

接着,将h传递到输出层,输出层执行权重矩阵W2与h的点积运算,得到结果y,即y=h*W2。y就是skip-gram模型预测得到的结果,需要理解的是,W2是一个k*16384的矩阵,因此,y是一个1*16384的向量。

在得到y之后,可以将其传递至回归分类器,以使用softmax函数进行归一化计算,得到y1,y1表示skip-gram模型预测的16384个地址所出现的概率,y1中所有地址的概率值之和等于1。

应理解,预测结果不是完全与实际结果吻合的,即预测结果与实际结果之间存在误差,因此,需要利用反向传播算法来修正权重矩阵W1和W2。

可选的,在得到y1之后,可以使用下述两种方式进行误差反向传递,以实现对W1和W2的修正。

1、首先在得到y1之后,计算y1与b、c、d、e的平均误差值v。即计算y1与b所对应的向量的差值v1,计算y1与c所对应的向量的差值v2,计算得到y1与d所对应的向量的差值v3,计算得到y1与e所对应的向量的差值v4,在得到v1、v2、v3和v4之后,计算平均误差值v,即v=(v1+v2+v3+v4)/4。

然后,利用h和v计算权重矩阵W2的增量ΔW2,即ΔW2=h*v。利用计算得到的ΔW2修正W2,即修正后的输出层的权重矩阵=W2+α*ΔW2,其中,α表示学习率,其取值范围在0-1之间,可以根据需要进行设置。利用x、W2以及v计算权重矩阵W1的增量ΔW1,即ΔW1=x*(W2*e)。利用计算得到的ΔW1修正W1,即修正后的隐藏层的权重矩阵=W1+α*ΔW2。

2、得到y1之后,计算本次训练误差值,即计算y1与b所对应的向量的差值v1。

然后,利用h和v1计算权重矩阵W2的增量ΔW2,即ΔW2=h*v1。利用计算得到的ΔW2修正W2,即修正后的输出层的权重矩阵=W2+α*ΔW2,其中,α表示学习率,其取值范围在0-1之间,可以根据需要进行设置。利用x、W2以及v1计算权重矩阵W1的增量ΔW1,即ΔW1=x*(W2*e)。利用计算得到的ΔW1修正W1,即修正后的隐藏层的权重矩阵=W1+α*ΔW2。

接着,对地址对[a,c]进行训练,其具体过程与上述一致,为了简洁,不再赘述,得到新的输出y1之后,计算y1与c所对应的向量的差值v2,然后利用h和v2再次修正W1和W2。

在以a为模型输入,完成W1和W2的修正之后,构造地址对[b,c]、[b,d]、[b,e],然后依次将每一个地址对输入skip-gram模型进行训练,应理解,可以选用上述两种方式中的任意一种进行误差反向传递以完成对W1和W2的修正。其具体训练过程与上述一致,不再赘述。

同理,以c为模型输入,构造地址对[c,d]、[c,e],输入skip-gram模型训练,并选用上述任意一种方式完成对W1和W2的修正。

在对训练集中的一个训练样本完成训练之后,即对一个地址集合完成训练之后,对另一个训练样本进行训练,以继续修正(更新)W1和W2,其具体训练过程与上述一致。需要说明的是,训练集中的样本不仅仅只训练一次,可能需要多次输入skip-gram模型进行训练。当在整个训练集上的整体误差小于预设阈值时,即对于训练集中的任意一个地址对或地址集合来说,计算得到的误差值(例如v1)或平均误差值(例如v)小于预设阈值,则表示skip-gram模型已经达到收敛条件,即skip-gram模型已经具备了预测第二读请求所对应的地址的能力,可以利用训练好的skip-gram模型进行预测以支持数据预取。

还需要说明的是,在对训练集中的训练样本进行训练并更新W1和W2的过程中,相同地址对的个数与skip-gram模型预测的该地址对所对应的概率值是正相关的,示例性的,若上述地址对[a,b]个数较多,[a,c]个数较少,那么模型在预测a之后的地址时,将会更倾向于b,而不是c,换句话说,在对a进行预测时,模型计算得到的b出现在a之后的概率值远远大于c出现在a之后的概率值。

图8是本申请实施例提供的一种第二神经网络模型训练方法的流程示意图。如图8所示,该方法包括但不限于以下步骤:

S810:计算设备获取多个读请求。

具体地,S810的具体实现可以参照上述S610中的相关描述。

S820:计算设备将多个读请求进行分割得到多个读取数据的地址集合。

具体地,S820的具体实现可以参照上述S620中的相关描述。

S830:计算设备将每个地址集合作为训练样本输入skip-gram模型进行训练。

具体地,S830的具体实现可以参照上述S630中的相关描述。

应理解,第一神经网络模型与第二神经网络模型的区别仅仅在于训练集的不同,一个是针对写入数据的地址集合进行训练,一个是针对读取数据的地址集合进行训练,但是具体的训练方法是相同的,可以相互参照,在此不再赘述。

上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。

本申请实施例还提供一种数据预取系统,如图4中的数据预取系统400,该数据预取系统用于执行前述数据预取的方法。本申请对该数据预取系统的功能单元的划分不做限定,可以根据需要对该数据预取系统中的各个单元进行增加、减少或合并。图4示例性的提供了一种功能单元的划分:

数据预取系统包括获取单元410、预测单元420、处理单元430和序列分割单元440。

具体地,所述获取单元410用于执行前述步骤S510、S610和S810,且可选的执行前述步骤中可选的方法,获取到第一读请求。

所述序列分割单元440用于执行前述步骤S620和S820,且可选的执行前述步骤中可选的方法,对获取到的读请求或写请求进行分割,得到多个地址集合作为训练样本。

所述预测单元420用于执行前述步骤S520、S630和S830,且可选的执行前述步骤中可选的方法,对神经网络模型进行训练,并利用训练好的神经网络模型输出多个地址的概率值。

处理单元430用于执行前述步骤S530,且可选的执行前述步骤中可选的方法,按照概率值从预测单元420的输出中获取N个地址并将其对应的数据存储在缓存中。

上述四个单元之间互相可通过通信通路进行数据传输,应理解,数据预取系统400包括的各单元可以为软件单元、也可以为硬件单元、或部分为软件单元部分为硬件单元。

参见图9,图9是本申请实施例提供的一种计算设备的结构示意图。如图9所示,该计算设备900包括:处理器910、通信接口920以及存储器930,所述处理器910、通信接口920以及存储器930通过内部总线940相互连接。应理解,该计算设备可以是数据库服务器。

所述处理器910可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。

总线940可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。

存储器930可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器930也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器930还可以包括上述种类的组合。程序代码可以是用来实现数据预取系统400所示的的功能模块,或者用于实现图5所示的方法实施例中以计算设备为执行主体的方法步骤。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图4所描述的任意一个功能模块的功能。

本申请实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。

在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:网络织物存储系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类