数据写入方法、装置和电子设备

文档序号:1021366 发布日期:2020-10-27 浏览:18次 >En<

阅读说明:本技术 数据写入方法、装置和电子设备 (Data writing method and device and electronic equipment ) 是由 付鹏 于 2020-04-17 设计创作,主要内容包括:本发明提供一种数据写入方法、装置和电子设备。数据写入方法包括以下步骤:获取待写入高速缓冲存储器的数据;提取所述数据中写操作未命中的未命中数据;若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。这样,通过将未命中、对应的写入地址为首次写入数据且为只写数据的直接写入高速缓冲存储器,而不经过主存,能够减少对于主存的访问次数,从而提高数据写入效率。(The invention provides a data writing method and device and electronic equipment. The data writing method comprises the following steps: acquiring data to be written into a cache memory; extracting the missed data which is not hit by the write operation in the data; and if the missed data is write-only data and the data is written into the cache for the first time by the write address corresponding to the write operation of the missed data, writing the missed data into the cache. In this way, by directly writing the miss and the corresponding write address as the first write data and as the write-only data into the cache memory without passing through the main memory, the number of accesses to the main memory can be reduced, and the data write efficiency can be improved.)

数据写入方法、装置和电子设备

技术领域

本发明涉及计算机技术领域,尤其涉及一种数据写入方法、装置和电子设备。

背景技术

一般来说,电子设备的处理器(CPU)和外部主存之间的访问速度存在很大差距,如果高速度的CPU直接访问低速外部主存会因为外部主存的低速率读写降低CPU的执行效率。因此目前主要通过CPU+cache(高速缓冲存储器)+主存的方式解决CPU与外部主存之间的访问速度不匹配的问题。

目前cache中的数据写入方法主要包括写通(write-through)和写回(write-back)两种,其中,写通在写操作时总是向主存写入数据,而写回方式在写cache未命中时首先向主存读出cache对应地址数据到cache再将数据写入cache中。因此,现有数据写入方式都需要从主存读写数据,导致数据写入的效率较低。

发明内容

本发明实施例提供一种数据写入方法、装置和电子设备,以解决目前数据写入方法效率较低的问题。

为了解决上述技术问题,本发明是这样实现的:

第一方面,本发明实施例提供了一种数据写入方法,包括以下步骤:

获取待写入高速缓冲存储器的数据;

提取所述数据中写操作未命中的未命中数据;

若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。

可选的,所述高速缓冲存储器包括多行写入地址,所述提取所述数据中写操作未命中的未命中数据之前,还包括:

生成与每一行所述写入地址对应的指示标识,所述指示标识用于指示相对应的写入地址是否为首次写入数据。

可选的,所述未命中数据为只写数据,包括:

所述未命中数据的写操作对应的写入地址为只写地址的数据,其中,所述只写地址为所述高速缓冲存储器的符合预设范围的写入地址。

可选的,所述将所述未命中数据写入高速缓冲存储器,包括:

将所述未命中数据写入目标地址,并将所述目标地址对应的指示标识切换为对应非首次写入数据,其中,所述目标地址为所述只写地址中的写入地址。

可选的,所述将所述未命中数据写入高速缓冲存储器之后,还包括:

若全部未命中数据的写操作执行完成,则将所述只写地址的指示标识中,对应首次写入数据的指示标识切换为对应非首次写入数据。

可选的,所述将所述只写地址的指示标识中,对应首次写入数据的指示标识切换为对应非首次写入数据之后,还包括:

提取所述待写入数据中的写操作命中的命中数据,并将所述命中数据以写回的方式写入所述高速缓冲存储器。

可选的,所述提取所述数据中写操作未命中的未命中数据之后,还包括:

若全部只写数据的写操作执行完成,则将所述只写地址的指示标识中,对应首次写入数据的指示标识切换为对应非首次写入数据。

第二方面,本发明实施例提供了一种数据写入装置,包括:

获取模块,用于获取待写入高速缓冲存储器的数据;

提取模块,用于提取所述数据中写操作未命中的未命中数据;

写入模块,用于若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。

第三方面,本发明实施例提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如以上任一项所述的数据写入方法的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上任一项所述的数据写入方法的步骤。

本发明实施例中,获取待写入高速缓冲存储器的数据;提取所述数据中写操作未命中的未命中数据;若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。这样,通过将未命中、对应的写入地址为首次写入数据且为只写数据的直接写入高速缓冲存储器,而不经过主存,能够减少对于主存的访问次数,从而提高数据写入效率。

附图说明

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

图1是相关技术中一种电子设备的结构示意图;

图2是相关技术中cache的索引目录结构图;

图3是相关技术中数据写回操作的示意图;

图4是本发明一实施例提供的数据写入方法的流程图;

图5是本发明一实施例中电子设备的结构示意图;

图6是本发明一实施例中cache的索引目录结构图;

图7是本发明一实施例提供的数据写入方法的又一流程图;

图8是本发明一实施例提供的数据写入方法的又一流程图;

图9是本发明一实施例中数据写入装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本实施例的技术方案应用于CPU(Central Processing Unit,中央处理器,简称处理器)+cache(高速缓冲存储器)+主存储器(简称为主存,Dynamic RandomAccess Memory,缩写为DRAM)结构的电子设备,其中,CPU、cache和主存依次通信连接。

相关技术中,对于cache的基本操作分为读和写。其中,写操作主要包括写通(write-through)和写回(write-back)两种。

写通(write-through)指的是当cache写命中时,处理器对cache写入的同时,将数据写入到主存中;当cache写未命中时,直接向主存写入数据。这种方式内存的数据和cache中的数据都是同步的,该方法简单、可靠,但是处理每次对cache的写操作都需要对主存执行写操作,因此主存总线带宽占用大,效率低。

写回(write-back)指的是当CPU对cache写命中时,只修改cache的内容而不立即写入主存,只当该cache行被换出时才写回主存。

如图2所示,当cache写未命中时,为包含欲写字的主存块(图中填充阴影的主存块)在cache分配一个cache行,将该cache行拷贝到cache后对其进行修改并存放于cache本地,此后对该cache行的多次读写都会命中并在cache中快速完成,每个cache行必须配置一个修改位dirty,以反映此行是否被CPU修改过。

请参阅图3,图3为cache对应的索引目录结构图,其中标签tag用于存储cache与主存地址映射的高位地址,状态标识dirty用于表示cache内容是否被CPU修改过,valid表示cache行是否有效。

为确保cache数据(cache data)与主存数据(主存data)一致,在cache行需要被替换时dirty位有效时才将对应的cache行数据写回速度较慢的主存,这种方式减少了访问主存的次数从而提高了效率,但当写未命中时仍然需要从主存中读取cache行。上述写通及写回的过程具体可参考相关技术,此处不再赘述。

本发明实施例提供了一种数据写入方法。

如图4所示,在一个实施例中,该数据写入方法包括以下步骤:

步骤401:获取待写入高速缓冲存储器的数据。

一般来说,数据由CPU发送至cache以进一步写入cache,其具体过程可参考相关技术,此处不再赘述。

步骤402:提取所述数据中写操作未命中的未命中数据。

本实施例中,先获取CPU发送至cache中的数据中,写操作未命中的写操作数据,换句话说,也就是检测cache的写操作是否命中。

在cache中找到有用的数据被称为写命中(write hit),当cache中没有CPU所需的数据称作写未命中(write miss),其具体定义可参考相关技术,此处不做进一步限定。

步骤403:若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。

本实施例中进一步确定未命中数据中的只写(write only)数据,且对应的写操作地址在之前未曾写入数据,本次写操作为在该写入地址首次写入数据,将满足这些条件的数据直接写入cache中。

作为一种可选的具体实施方式,在该步骤403中只写数据的定义为该数据的写操作对应的写入地址为只写地址的数据,其中,所述只写地址为所述高速缓冲存储器的符合预设范围的写入地址。

具体的,可以预先在cache包括的写入地址中设定一个只写地址范围(write onlyregion),本实施例中将cache符合该只写地址范围的写入地址称作只写地址,写操作对应的写入地址为该只写地址时,则认为该写操作对应的数据为只写数据。

实施时,如图5所示,可以在cache的端口增加该只写地址的范围,从而实现对只写地址的筛选。

对于满足上述条件的数据在处理过程中,CPU只需要将值直接写入,不需要关心该写入地址曾经储存的值,因此在写入这些数据的过程中,不需要访问向主存发起的读操作。

这样,通过将未命中、对应的写入地址为首次写入数据且为只写数据的直接写入高速缓冲存储器,而不经过主存,能够减少对于主存的访问次数,从而提高数据写入效率。

可选的,在一个具体实施方式中,高速缓冲存储器包括多行写入地址。

在上述步骤402之前,还包括:

生成与每一行所述写入地址对应的指示标识,所述指示标识用于指示相对应的写入地址是否为首次写入数据。

请同时参阅图3和图6,区别于图3所示的相关技术,图6所示的cache的索引目录进一步增加了指示标识sflag,每一行写入地址具有一个指示标识,该指示标识通过不同的值来指示该行写入地址是否为首次写入数据。

例如,如果该行为首次写入数据,即在本次写操作之前,该行未曾写入数据,则将该指示标识的值设置为1,如果该行非首次写入数据,即在本次写操作之前该行曾经写入过数据,则将该指示标识的值设置为0,这样,通过对写入地址的指示标识的值进行索引,能够确定该写入地址是否为首次写入数据。

如图5所示,实施时,可以在cache的端口增加该指示标识sflag的刷新控制,从而实现对于指示标识sflag的刷新和切换。

进一步的,上述步骤403还包括:

将所述未命中数据写入目标地址,并将所述目标地址对应的指示标识切换为对应非首次写入数据,其中,所述目标地址为所述只写地址中的写入地址。

如果一次写操作对应的写入地址为时候次写入数据,则在将数据写入该写入地址后,为了避免后续再次在该地址写入数据时造成影响,调整相应的指示标识。

例如,如果指示标识在指示首次写入数据的情况下值为1,指示非首次写入数据的情况下值为0,那么在首次写入数据后,将指示标识的值清0,从而避免再次写入时指示错误。

也就是说,上述步骤403只有在针对一个写入地址的第一次写操作时执行,不会对后续的读写造成影响。

进一步的,在步骤403之后,还包括:

若全部只写数据的写操作执行完成,则将所述只写地址的指示标识中,对应首次写入数据的指示标识切换为对应非首次写入数据。

应当理解的是,此处的全部只写数据包括了命中数据中的只写数据和非命中数据中的只写数据。也就是说,当全部只写数据的写操作执行完毕后,将剩余的指示标识全部切换为对应非首次写入数据,从而避免对非只写数据的读写造成影响。

显然,上述步骤301中获取的数据还包括写操作命中的命中数据,此外,对于未命中数据来说,还包括不符合步骤303中条件的数据,即未命中数据中的非只写数据或未命中数据中的写操作对应的写入地址非首次写入数据的数据。

这些数据同样需要写入cache中,为了避免这些数据丢失,进一步的,本实施例的技术方案在步骤303之后还可以包括:

提取所述待写入数据中的写操作命中的命中数据,并将所述命中数据以写回的方式写入所述高速缓冲存储器;以及

若所述未命中数据为非只写数据或所述未命中数据的写操作对应的写入地址非首次写入数据,则将所述未命中数据以写回的方式写入所述高速缓冲存储器。

这样,通过将其余的数据以写回的方式写入高速缓冲存储器,能够避免数据丢失,确保全部数据写入高速缓冲存储器中。

请同时参阅图7和图8,本实施例的技术方案可以概括如下。

首先,置位全部sflag,也就是刷新全部指示标识sflag为对应首次写入数据。

接下来,检测CPU执行的操作是否为写操作,如果CPU执行的操作为读操作,则以常规的写回的方式执行,具体可参考相关技术。

进一步的,检测cache写操作是否未命中、写操作对应的写入地址是否属于预设只写地址、写操作对应的写入地址的指示标识sflag是否为1,也就是指示标识sflag是否指示首次写入数据。

如果数据同时满足上述全部条件,则将数据直接写入高速缓冲存储器cache,此时,cache行的其它数据被覆盖为无效数据,同时更新标签tag,同时,切换对应的指示标识sflag,将对应的指示标识sflag切换为指示非首次写入数据,或称清零指示标识sflag。

当全部只写数据的写操作完成后,或称全部只写操作完成后,将剩余的全部指示标识sflag清0,以避免对非只写数据造成影响。

这样请同时参阅图2和图7,与图2所示的相关技术相比,本实施例的技术方案不涉及到对主存中的读操作,因此,本实施例的技术方案可以减少cache向主存的读次数,提高主存带宽使用效率。

如图9所示,本发明实施例提供了一种数据写入装置900,包括:

获取模块901,用于获取待写入高速缓冲存储器的数据;

提取模块902,用于提取所述数据中写操作未命中的未命中数据;

写入模块903,用于若所述未命中数据为只写数据且所述未命中数据的写操作对应的写入地址首次写入数据,则将所述未命中数据写入高速缓冲存储器。

可选的,还包括:

生成模块,用于生成与每一行所述写入地址对应的指示标识,所述指示标识用于指示相对应的写入地址是否为首次写入数据。

可选的,所述未命中数据为只写数据,包括:所述未命中数据的写操作对应的写入地址为只写地址的数据,其中,所述只写地址为所述高速缓冲存储器的符合预设范围的写入地址。

可选的,所述写入模块903,具体用于:将所述未命中数据写入目标地址,并将所述目标地址对应的指示标识切换为对应非首次写入数据,其中,所述目标地址为所述只写地址中的写入地址。

可选的,还包括:切换模块,用于若全部只写数据的写操作执行完成,则将所述只写地址的指示标识中,对应首次写入数据的指示标识切换为对应非首次写入数据。

可选的,还包括写回模块,用于提取所述待写入数据中的写操作命中的命中数据,并将所述命中数据以写回的方式写入所述高速缓冲存储器。

可选的,还包括写回模块,用于若所述未命中数据为非只写数据或所述未命中数据的写操作对应的写入地址非首次写入数据,则将所述未命中数据以写回的方式写入所述高速缓冲存储器。

由于本实施例的数据写入装置900能够实现上述数据写入方法实施例的全部技术方案,因此至少能实现相近或基本相同的技术效果,此处不再赘述。

本发明实施例还提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如以上任一项所述的数据写入方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上任一项所述的数据写入方法的步骤。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储设备访问方法、装置和系统

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类