一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现处理器与DMA设备数据一致性的方法及装置与流程

2022-03-09 06:05:21 来源:中国专利 TAG:

一种实现处理器与dma设备数据一致性的方法及装置
技术领域
1.本公开涉及计算机技术领域,尤其涉及一种实现处理器与dma设备数据一致性的方法及装置。


背景技术:

2.在现今的多核系统中多采用多级高速缓存的形式并通过规定一致性协议来解决高速缓存(cache)的数据一致性问题。其中,每一个内核都将拥有一个独立的私有缓存,同时多个核间还会有共享缓存。相应的,对于dma设备而言,其可以将数据读写至主存储器而不需要通知高速缓存。当程序运行时高速缓存会存有先前的数据副本,若此时dma设备对相同地址进行写入,内核在读数据时将会读取的是高速缓存中先前存入的数据,而不是dma中新写入主存中的数据。由此会产生数据不一致的问题。
3.目前,针对处理dma设备与高速缓存中数据不一致的技术大致分为两种:(1)软件实现。在该方法中,dma设备与cache依旧保持不一致,通过软件端来保证cpu读写的一致性。具体的,设备写入数据的过程为:cpu先将其高速缓存行中对应接收dma数据缓存区的高速缓存行无效化,以此来保证其中不会有状态被标记为脏的cache line,随后cpu通知dma设备可以开始写入。当写入完成后,cpu会执行中断来执行当下操作,同时还需将对应的cache line再次无效化,因为在上一次无效化与设备写完成这段时间内会存在软/硬件预取操作。通过两次无效化操作,cpu可保证读取数据的可靠性。对于设备读数据,cpu将先冲刷掉发送数据缓存区所对应的cache line,尔后用来存放将要发送的数据,然后通知dma设备可以开始读数据并完成数据读取。该方法固然解决了硬件上的开销问题,但为了保证读写的正确性,cpu对缓存区对应的cache line执行了两次无效化操作。两次无效化操作极大的拉低了处理器的效率,并且不是所有的cache line都需要被执行无效化操作。
4.(2)硬件实现。在该方法中,额外添加了一致性i/o连接将cache与dma设备直接相联,由此来保证cache中数据的一致性。该媒介允许dma设备直接将数据传送至cache,以及cpu直接将数据发送至dma设备,不需通过软件来对cache进行手动操作。由于该方法是基于硬件的,因此需要在cpu及i/o设备集成时一并实现一致性i/o连接,且对于不同的设备而言所需的设计也不同。虽然诸如arm等公司提供了相应的ip,但是仍旧需要设计人员进行大量的调试工作。并且对于一些无对应ip的外设需求,依旧需要设计人员从头设计ip。


技术实现要素:

5.本公开的目的是要提供一种实现处理器与dma设备数据一致性的方法及装置,可以解决上述现有技术问题中的一个或者多个。
6.根据本公开的一个方面,提供了一种实现处理器与dma设备数据一致性的方法,包括以下步骤:当dma设备发起写请求时,cpu将cache中对应的cacheline无效化,
将无效化后的cacheline信息发送至预先设置的dmacache;检索dmacache中状态为可写的cacheline并保存,将保存过的cacheline状态更新为不可写,通知dma设备可以开始写入,在dma设备完成写操作后,将dmacache中对应的cacheline状态更新为可写。
7.在可能的实施方式中,在含有多级高速缓存的多核系统中,dmacache设置在最后一级高速缓存旁,且dmacache的映射方式为全相联。
8.在可能的实施方式中,cacheline信息为cacheline的tag信息。
9.在可能的实施方式中,还包括,当cpu因推测执行而发出取指请求时,获取取指请求,同时对最后一级高速缓存和dmacache中的tag进行比对,判断最后一级高速缓存和dmacache中是否存在取指请求的匹配项;若最后一级高速缓存中存在匹配项,则cpu将从最后一级高速缓存取指,dmacache忽略该取指请求;若最后一级高速缓存中无匹配项,同时dmacache中存在匹配项,则dmacache向各级高速缓存均发送不缓存的信号,当数据从主存储器中取出并呈递至高速缓存时,该数据将不会被保存至cache中。
10.根据本公开的另一个方面,提供了一种实现处理器与dma设备数据一致性的装置,用于实现上述任意一种实现处理器与dma设备数据一致性的方法,包括:cacheline无效化模块,用于当dma设备发起写请求时,将cache中对应的cacheline无效化;dmacache,用于保存无效化后的cacheline信息;cacheline检索模块,用于检索dmacache中状态为可写的cacheline并保存,cacheline状态更新模块,用于将保存过的cacheline状态更新为不可写,并在dma设备完成写操作后,将dmacache中对应的cacheline状态更新为可写。
11.在可能的实施方式中,在含有多级高速缓存的多核系统中,dmacache设置在最后一级高速缓存旁,且dmacache的映射方式为全相联。
12.在可能的实施方式中,cacheline信息为cacheline的tag信息。
13.在可能的实施方式中,还包括:tag比对模块,用于获取取指请求,同时对最后一级高速缓存和dmacache中的tag进行比对,判断最后一级高速缓存和dmacache中是否存在取指请求的匹配项;取指请求屏蔽模块,用于当最后一级高速缓存中存在匹配项,则cpu将从最后一级高速缓存取指,dmacache忽略该取指请求;数据屏蔽模块,用于当最后一级高速缓存中无匹配项,同时dmacache中存在匹配项,则dmacache向各级高速缓存均发送不缓存的信号,当数据从主存储器中取出并呈递至高速缓存时,该数据将不会被保存至cache中。
14.本公开提供的一种实现处理器与dma设备数据一致性的方法及装置,通过添加dma cache,保证dma设备写入时主存储器与cache的数据的一致性,规避了第二次cacheline无效化的操作,提高了处理器的效率,避免对于不同的dma设备需要使用或设计不同的一致性i/o连接的要求,降低了固件成本,同时降低了开发和调试成本。
15.另外,在本公开技术方案中,凡未作特别说明的,均可通过采用本领域中的常规手段来实现本技术方案。
附图说明
16.为了更清楚地说明本公开实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本公开实施例提供的一种实现处理器与dma设备数据一致性的方法的流程示意图。
18.图2为本公开实施例提供的一种实现处理器与dma设备数据一致性的方法中dmacache与各级高速缓存的位置示意图。
19.图3为本公开实施例提供的一种实现处理器与dma设备数据一致性的方法中dmacache告知各级高速缓存的结构示意图。
20.图4为本公开实施例提供的一种实现处理器与dma设备数据一致性的装置的结构框图。
具体实施方式
21.本公开说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如包含了一系列的步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、系统、产品或设备固有的其他步骤或单元。
22.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
23.实施例1:在本实施例中,参考说明书附图1,提供了一种实现处理器与dma设备数据一致性的方法,包括以下步骤:步骤1:当dma设备发起写请求时,cpu将cache中对应的cacheline无效化,步骤2:将无效化后的cacheline信息发送至预先设置的dmacache;步骤3:检索dmacache中状态为可写的cacheline并保存,步骤4:将保存过的cacheline状态更新为不可写,步骤5:通知dma设备可以开始写入,步骤6:在dma设备完成写操作后,将dmacache中对应的cacheline状态更新为可写。
24.在步骤1中,通过将cache中对应的cacheline无效化,对cache中对应的cacheline的状态进行检查。
25.在步骤2中,预先设置的dmacache,用来存放无效化后的cacheline。在可选的实施例中,在含有多级高速缓存的多核系统中,所述dmacache设置在最后一级高速缓存旁,且dmacache的映射方式为全相联。由此,减少了额外的硬件开销,降低了开发和调试的成本。参考说明书附图2,示出了一种dmacache与各级高速缓存的位置示意图,以三级高速缓存为例,dmacache设置在最后一级cache旁,即设置在l3 cache旁。
26.在可选的实施例中,所述cacheline信息为cacheline的tag信息。由于绝大部分多级高速缓存结构中的最后一级高速缓存多为组相联的映射方式,因此dmacache中只保留cacheline的tag信息即可,由此,dmacache只需要较小的空间即可支持对整个高速缓存中cacheline的tag信息进行保存和比对。
27.在步骤4中,将cacheline状态更新为不可写,其目的是避免在dma写操作完成之前被替换或剔除。具体的,可以在cacheline中插入一个bit来标记cacheline状态。
28.在可选的实施例中,一种实现处理器与dma设备数据一致性的方法还包括,当cpu因推测执行而发出取指请求时,获取取指请求,同时对最后一级高速缓存和dmacache中的tag进行比对,判断最后一级高速缓存和dmacache中是否存在取指请求的匹配项;若最后一级高速缓存中存在匹配项,则cpu将从最后一级高速缓存取指,dmacache忽略该取指请求;若最后一级高速缓存中无匹配项,同时dmacache中存在匹配项,则dmacache向各级高速缓存均发送不缓存的信号,当数据从主存储器中取出并呈递至高速缓存时,该数据将不会被保存至cache中。
29.参考说明书附图3,示出了一种dmacache向各级高速缓存告知的结构示意图。以三级高速缓存为例,当cpu因推测执行而发出取指请求时,同时对l3 cache和dma cache中的tag进行比对,判断l3 cache和dmacache中是否存在取指请求的匹配项;若l3 cache中存在匹配项,则cpu将从l3 cache中取指,该取指请求会被dma cache忽略以保证数据正确性。若l3 cache中无匹配项,同时dmacache中存在匹配项,则dmacache向l1cache、l2cache和l3cache均发送不缓存的信号,当数据从主存储器中取出并呈递至高速缓存时,该数据将不会被保存至cache中。
30.本公开提供的一种实现处理器与dma设备数据一致性的方法,通过添加dma cache,保证dma设备写入时主存储器与cache的数据的一致性,规避了第二次cacheline无效化的操作,提高了处理器的效率,避免对于不同的dma设备需要使用或设计不同的一致性i/o连接的要求,降低了固件成本,同时降低了开发和调试成本。
31.实施例2:在本实施例中,参考说明书附图4,提供了一种实现处理器与dma设备数据一致性的装置,用于实现上述方法实施例中任意一种实现处理器与dma设备数据一致性的方法,一种实现处理器与dma设备数据一致性的装置至少包括:cacheline无效化模块,用于当dma设备发起写请求时,将cache中对应的cacheline无效化;dmacache,用于保存无效化后的cacheline信息;cacheline检索模块,用于检索dmacache中状态为可写的cacheline并保存,
cacheline状态更新模块,用于将保存过的cacheline状态更新为不可写,并在dma设备完成写操作后,将dmacache中对应的cacheline状态更新为可写。
32.在可选的实施例中,在含有多级高速缓存的多核系统中,所述dmacache设置在最后一级高速缓存旁,且dmacache的映射方式为全相联。
33.在可选的实施例中,所述cacheline信息为cacheline的tag信息。
34.在可选的实施例中,还包括:tag比对模块,用于获取取指请求,同时对最后一级高速缓存和dmacache中的tag进行比对,判断最后一级高速缓存和dmacache中是否存在取指请求的匹配项;取指请求屏蔽模块,用于当最后一级高速缓存中存在匹配项,则cpu将从最后一级高速缓存取指,dmacache忽略该取指请求;数据屏蔽模块,用于当最后一级高速缓存中无匹配项,同时dmacache中存在匹配项,则dmacache向各级高速缓存均发送不缓存的信号,当数据从主存储器中取出并呈递至高速缓存时,该数据将不会被保存至cache中。
35.本公开提供的一种实现处理器与dma设备数据一致性的装置,通过添加dma cache,保证dma设备写入时主存储器与cache的数据的一致性,规避了第二次cacheline无效化的操作,提高了处理器的效率,避免对于不同的dma设备需要使用或设计不同的一致性i/o连接的要求,降低了固件成本,同时降低了开发和调试成本。
36.上述本说明书实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
37.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
38.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
39.以上仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献