CN117539802A - 一种缓存操作方法、***以及相关装置 - Google Patents
一种缓存操作方法、***以及相关装置 Download PDFInfo
- Publication number
- CN117539802A CN117539802A CN202410035952.0A CN202410035952A CN117539802A CN 117539802 A CN117539802 A CN 117539802A CN 202410035952 A CN202410035952 A CN 202410035952A CN 117539802 A CN117539802 A CN 117539802A
- Authority
- CN
- China
- Prior art keywords
- cache
- cpu
- area
- data
- atomic
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000015654 memory Effects 0.000 claims description 47
- 230000001360 synchronised effect Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000011017 operating method Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/0877—Cache access modes
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种缓存操作方法、***以及相关装置。该方法应用于DMA引擎,包括:响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型;操作类型包括读写操作和/或原子操作;CPU包括多个缓存区域,缓存区域用于存储缓存数据;根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域;判断目标缓存区域是否处于空闲状态;若目标缓存区域处于空闲状态,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作。本申请能够克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
Description
技术领域
本申请实施例涉及数据处理技术领域,更具体地涉及一种缓存操作 方法、***以及相关装置。
背景技术
随着大数据技术的飞速发展,对计算机设备的功能需求越来越高,导致计算机设备运行过程中需要从内存传输到中央处理器(Central Processing Unit,CPU)的数据量越来越大。现代计算机设备和芯片,以及多核/众核芯片在硬件上会设计缓存单元,用于减少CPU访问内存的时延。现有计算机架构中,直接内存访问可以完成从内存到外设之间的数据搬运,但是不能访问CPU的缓存,因此当需要完成从外部存储和缓存之间的数据搬运,依靠CPU通过指令主动发起的读写请求。导致计算机设备的CPU的计算资源的需求越来越大。
因此,亟需设计一种全新的解决方案,用于克服依靠CPU通过指令主动发起缓存的读写请求的技术问题,优化CPU的计算资源。
发明内容
本申请实施例提供了一种改进的缓存操作方法、***以及相关装置,用以实现DMA引擎对CPU的缓存信息的操作通道,优化CPU的计算资源,提升设备算力。
本申请的实施例期望提供一种缓存操作方法、***以及相关装置。
在本申请的第一方面中,提供了一种缓存操作方法,应用于DMA引擎,包括:
响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据;
根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;
判断所述目标缓存区域是否处于空闲状态;
若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
在本申请的第二方面中,提供了一种DMA引擎,所述DMA引擎应用于实现如第一方面中任一所述的缓存操作方法;所述DMA引擎包括:
请求响应模块,用于响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据;
步骤确定模块,用于根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;
空闲判断模块,用于判断所述目标缓存区域是否处于空闲状态;
缓存操作模块,用于若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
在本申请的第三方面中,提供了一种缓存操作***,其特征在于,所述***包括CPU以及应用于如第一方面中任一缓存操作方法所述的DMA引擎;其中,
所述CPU,被配置为向所述DMA引擎发送基于数据缓存请求的操作请求;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据;
所述DMA引擎,被配置为响应于所述CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;判断所述目标缓存区域是否处于空闲状态;若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
在本申请的第四方面中,提供了一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行第一方面中所述的缓存操作方法。
在本申请的第五方面中,提供了一种计算设备,被配置为:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现第一方面中所述的缓存操作方法。
本申请实施例提供的技术方案中,提供了一种缓存操作方法,应用于DMA引擎。首先,DMA引擎响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型,其中,操作类型包括读写操作和/或原子操作,CPU包括多个用于存储缓存数据缓存区域。进而,根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。进而,判断目标缓存区域是否处于空闲状态。最终,若目标缓存区域处于空闲状态,根据操作类型在目标缓存区域中完成对所述CPU的缓存数据的操作。
相对于现有技术中依靠CPU通过指令主动发起缓存的读写请求的方式,本申请实施例中通过根据CPU发送的数据缓存请求对应的操作类型,确定操作类型对应的操作步骤,以及判断根据操作步骤确定的目标缓存区域是否处于空闲状态,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,实现DMA引擎与CPU的缓存数据的操作,克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施例,其中:
图1示意性地示出了根据本申请中缓存操作方法的一种流程示意图;
图2示意性地示出了根据本申请中缓存操作方法的一种原理示意图;
图3示意性地示出了根据本申请中缓存操作类型确认方法的一种流程示意图;
图4示意性地示出了根据本申请中缓存读写操作方法的一种原理示意图;
图5示意性地示出了根据本申请中缓存原子操作方法的一种原理示意图;
图6示意性地示出了根据本申请中缓存原子操作方法的一种流程示意图;
图7示意性地示出了根据本申请中空闲状态确认方法的一种流程示意图;
图8示意性地示出了根据本申请中同步信息区域生成方法的一种流程示意图;
图9示意性地示出了根据本申请中同步信息区域生成方法的一种原理示意图;
图10示意性地示出了根据本申请中缓存操作***的一种结构示意图;
图11示意性地示出了根据本申请中缓存操作装置的一种结构示意图;
图12示意性地示出了根据本申请中计算设备的一种结构示意图;
图13示意性地示出了根据本申请中服务器的一种结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施例来描述本申请的原理和精神。应当理解,给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本申请的实施例可以实现为一种***、装置、设备、***或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
随着大数据技术的飞速发展,对计算机设备的功能需求越来越高,导致计算机设备运行过程中需要从内存传输到中央处理器(CPU)的数据量越来越大。现代计算机设备和芯片,以及多核/众核芯片在硬件上会设计缓存单元,用于减少CPU访问内存的时延。现有计算机架构中,直接内存访问可以完成从内存到外设之间的数据搬运,但是不能访问CPU的缓存,因此当需要完成从外部存储和缓存之间的数据搬运,依靠CPU通过指令主动发起的读写请求。导致计算机设备的CPU的计算资源的需求越来越大。
现有计算机架构中,直接内存访问(Direct Memory Access,DMA)可以完成从内存到外设之间的数据搬运,但是现有的通过CPU实现的缓存操作无法通过直接内存访问机制读写。现有计算机架构中,直接内存访问可以完成从内存到外设之间的数据搬运,但是不能访问CPU的缓存。因此当计算机***需要完成从外部存储和缓存之间的数据搬运时,需要依靠CPU通过指令主动发起对缓存的读写请求。
因此,亟需设计一种全新的解决方案,用于克服依靠CPU通过指令主动发起缓存的读写请求的技术问题,优化CPU的计算资源。
为了克服上述技术问题,根据本申请的实施例,提出了一种缓存操作方法、***以及相关装置。
本申请实施例提供的技术方案中,提供了一种缓存操作方法,应用于DMA引擎。首先,DMA引擎响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型,其中,操作类型包括读写操作和/或原子操作,CPU包括多个用于存储缓存数据缓存区域。进而,根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。进而,判断目标缓存区域是否处于空闲状态。最终,若目标缓存区域处于空闲状态,根据操作类型在目标缓存区域中完成对所述CPU的缓存数据的操作。
相对于现有技术中依靠CPU通过指令主动发起缓存的读写请求的方式,本申请实施例中通过根据CPU发送的数据缓存请求对应的操作类型,确定操作类型对应的操作步骤,以及判断根据操作步骤确定的目标缓存区域是否处于空闲状态,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,实现DMA引擎与CPU的缓存数据的操作,克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
作为一种可选的实施方式,缓存操作装置的数量是一个,也可以是多个。一些示例中,缓存操作装置可以实现为部署在芯片内部的逻辑单元;另一些示例中,也可以是以其他形式部署在数字电路结构中,本申请不作限制。例如,缓存操作装置可以设置在各种设备(如终端设备、服务器)的处理器件中。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面结合具体应用场景,参考图1来描述根据本申请示例性实施例的用于通信的方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施例在此方面不受任何限制。相反,本申请的实施例可以应用于适用的任何场景。
下面结合以下实施例对缓存操作方法的执行过程进行说明。图1为本发明实施例提供的一种缓存操作方法的流程图。该方法应用于DMA引擎。如图1所示,该方法包括如下步骤:
步骤101,响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型;操作类型包括读写操作和/或原子操作;CPU包括多个缓存区域,缓存区域用于存储缓存数据。
步骤102,根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。
步骤103,判断目标缓存区域是否处于空闲状态。
步骤104,若目标缓存区域处于空闲状态,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作。
首先,在介绍上述步骤101至104的具体实施方式之前,先介绍本申请实施例所涉及的执行主体,即DMA引擎。
DMA引擎是一个硬件组件,用于在无需CPU介入的场景下,完成存储器与外部设备之间的缓存操作,以及存储器之间的缓存操作。具体地,采用DMA引擎在无需CPU介入的场景下,可以实现外部设备和存储器之间、或者存储器与存储器之间的精确缓存操作,不仅有效提升硬件设备的缓存操作效率,还有助于避免CPU在缓存操作方面应用额外算力,减少对CPU计算资源的消耗,提高了CPU指令的执行效率。
其中,本申请实施例所涉及的外部设备可以是外部设备的寄存器(DataRegister,DR),例如ADC的数据寄存器、串口的数据寄存器等。存储器,包括但不限于运行内存(如SRAM)和程序存储器(如Flash),用于存储变量、数组、程序代码的存储空间。
相关技术中,由于现有计算机架构中,DMA引擎可以完成从内存到外设之间的数据搬运,但是不能访问CPU的缓存,因此当需要完成从外部存储和缓存之间的数据搬运,依靠CPU通过指令主动发起的读写请求。同时没有基于DMA引擎的原子操作,一般CPU通过执行指令来完成原子操作,比如通过硬件层面的指令,来完成对缓存的原子操作。并且DMA不支持存放用于同步操作的信息。一般芯片中的缓存设计没有设计相应的的区块用于完成额外的控制操作,而需要其他的硬件资源来完成类似的同步操作。大大降低了CPU指令的执行效率。
为了解决上述至少一个技术问题,本申请实施例提供了一种缓存操作方法,用以在DMA引擎与CPU之间实现缓存操作,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,进而帮助CPU侧获取到与数据搬运任务执行顺序一致的请求数据,实现DMA引擎与CPU的缓存数据的操作,减少对CPU计算资源的消耗,提升设备算力。
具体来说,在步骤101中,DMA引擎响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型;操作类型包括读写操作和/或原子操作;CPU包括多个缓存区域,缓存区域用于存储缓存数据。
本申请实施例中,所述数据缓存请求是在外部设备或者存储器需要对CPU的缓存数据进行读取/写入/原子操作时向CPU发送的。在本申请所提供的方法中,CPU在接收到数据缓存请求后会向DMA引擎发送操作请求,进而DMA引擎能够从操作请求中获取待执行的操作类型,操作类型即为上述读取/写入对应的读写操作或原子操作。DMA引擎在获取到对应的操作类型后,后续将根据操作类型完成对CPU的缓存区域的数据进行相应的操作。上述操作类型可根据实际情况进行调整,此处仅为示例。
进一步可选地,请参照图2,图2是本申请实施例提供的一种缓存操作方法的原理示意图。在图2中,CPU为控制核,直接内存访问功能模块为DMA引擎,本申请所提供的缓存操作方法的对象为控制核的缓存即CPU的缓存。在本申请所提供的方法中CPU可以对缓存发起按指令流水线顺序执行的读取和写入操作,同时DMA引擎也可以对缓存发起不按指令流水线顺序执行的直接内存访问操作。此外,DMA引擎还可以发起对缓存中任意地址的原子操作。进而在CPU通过指令读写缓存的同时,实现DMA引擎对缓存的其他区域(地址空间)进行读写,最大化利用硬件资源,优化CPU的计算资源,提升设备算力。
步骤102中,DMA引擎根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。
本申请实施例中,DMA引擎能够在响应CPU基于数据缓存请求发出的操作请求并从操作请求中获取待执行的操作类型之后,根据不同的操作类型确定其对应的操作步骤,其中操作步骤主要用于确认DMA引擎在CPU的多个缓存区域中进行缓存操作的目标缓存区域。进而DMA引擎能够在目标缓存区域中完成对缓存数据的读写/原子操作,实现DMA引擎访问CPU的缓存的通道。
步骤103中,DMA引擎判断目标缓存区域是否处于空闲状态。
本申请实施例中,由于DMA引擎需要避免进行缓存操作的目标缓存区域正在被CPU进行缓存读写,或,CPU即将对目标缓存区域进行缓存读写,以导致缓存数据混乱,影响CPU的稳定运行。因此DMA引擎通过在确认目标缓存区域之后先确认目标缓存区域是否处于空闲状态,以确认是否要对目标缓存区域进行缓存操作。
步骤104,若目标缓存区域处于空闲状态,DMA引擎根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作。
本申请实施中,DMA引擎在确认目标缓存区域处于空闲状态之后,能及时根据所获取的操作类型在目标缓存区域中所存储的缓存数据进行操作,例如当操作类型为原子操作时,对目标缓存区域中的缓存数据进行原子加法/原子减法/原子交换的任一操作。进而能够克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
基于上述介绍,作为一个可选实施例,如图3所示,图3为本发明实施例提供的一种缓存操作类型确认方法的流程图,步骤101中从操作请求中获取待执行的操作类型,可以为:
步骤201,解析操作请求,获取操作请求对应的操作类型信息。
步骤202,若根据操作类型信息确定操作请求用于向缓存区域中读取/写入缓存信息,确认操作类型为读写操作。
步骤203,若根据操作类型信息确定操作请求用于向缓存区域中的缓存信息进行原子操作,确定操作类型为原子操作。
上述步骤201至203中,DMA引擎通过对响应的CPU基于数据缓存请求发出的操作请求后,能够对操作请求进行解析,例如对操作请求进行解码,以在操作请求中提取出外部设备/存储区进行请求的操作类型信息。操作类型信息例如在用于读取/写入缓存信息时,可以包括待进行读写的缓存区域的地址信息、待写入/读取的缓存信息等。同时当操作类型信息在用于对缓存信息进行原子操作时,可以包括待进行原子操作的缓存区域的地址信息、原子操作的操作类型等。DMA引擎能够根据解析的操作类型信息进一步提取出对应的操作类型,以实现对CPU缓存的多种操作。上述操作类型信息可根据实际情况进行调整,此处仅为示例。
更进一步地,作为一个可选实施例,步骤102中根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域,可以为:若操作类型为读写操作,根据操作区域标识在CPU的多个缓存区域中确定第一目标缓存区域。步骤104中根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,包括:对第一目标缓存区域的缓存数据完成读取操作,或,对第一目标缓存区域的缓存数据完成写入操作。
请结合参照图2和图4,图4是本申请实施例提供的一种缓存读写操作的原理示意图。在图4中,每一个地址入口(即图4中的地址入口0到地址入口n中的每一个)的一个区块(即图4中的区块0到区块n中的任一个)表示一个缓存区域,控制核缓存为CPU缓存,当DMA引擎确定操作类型为读写操作时,此时DMA引擎能够在无需通过指令流水线的形式通过操作区域标识能够在CPU的缓存区域中确定读写操作对应的目标缓存区域为第一目标缓存区域。同时CPU能够通过指令流水线形式在非第一目标缓存区域内进行缓存的读写。进而DMA引擎在确定第一目标缓存处于空闲状态之后,能够对第一目标缓存区域的缓存数据进行写入或读取操作。进而可以对缓存的不同缓存区域的地址空间同时进行按指令流水线顺序的读写访问和不按指令流水线顺序的DMA引擎读写访问(比如图4示出的dma写入),可以提高缓存空间的利用率,以及缓存接口的带宽利用率。
需要说明的是,在一些实施例中,读写操作对应的操作请求还包括待写入的数据;对第一目标缓存区域的缓存数据完成写入操作,包括:将待写入的数据根据操作区域标识写入第一目标缓存区域中。
当存储器或外部设备希望将数据写入CPU的一缓存区域时,其会将将需要写入的数据放置于操作请求中,进而DMA引擎在确认操作请求对应的操作类型为读写操作中的写入操作时,能够根据区域标识将操作请求中的数据写入第一目标缓存区域中。
需要说明的是,在一些实施例中,读写操作对应的操作请求还包括待读取的数据的数据标识;对第一目标缓存区域的缓存数据完成读取操作,包括:根据数据标识在第一目标缓存区域中读取待读取的数据。
当存储器或外部设备希望读取CPU的一缓存区域的部分或全部缓存数据时,其会将将需要读取的数据的数据标识放置于操作请求中,数据标识可以对应缓存数据的功能、函数名称等任意能确认具体缓存数据位置的信息。进而DMA引擎在确认操作请求对应的操作类型为读写操作中的读取操作时,能够根据区域标识和数据标识在第一目标缓存区域的缓存数据中读取出对应的数据。
需要说明的是,在一些实施例中,读写操作对应的操作请求还包括多个所述读写操作对应的操作区域标识;所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作,包括:根据多个操作区域标识生成操作指令流水线;将操作指令流水线发送给CPU,以使得CPU根据操作指令流水线完成对第一目标缓存区域的缓存数据的读取操作,或,CPU根据操作指令流水线完成对第一目标缓存区域的缓存数据的写入操作。
在本申请实施例中,DMA引擎能够根据待操作的区域标识生成操作指令流水线,进而能够在DMA引擎访问CPU的缓存区域出现故障时通过发送操作指令流水线至CPU,进而CPU能够如图4所示完成对第一目标缓存区域的缓存数据的读取或写入操作。
更进一步地,作为一个可选实施例,结合步骤201至203,步骤102中的根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域,可以为:根据目的数据标识在CPU的多个缓存区域中确认原子操作对应的第二目标缓存区域。步骤104中根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,包括:根据原子操作对应的操作码确定原子操作对应的原子操作类型。根据原子操作类型和原始数据完成对第二目标缓存区域的缓存数据的原子操作。
请结合参照图2和图5,图5是本申请实施例提供的一种缓存原子操作的原理示意图。在图5中,每一个地址入口(即图5中的地址入口0到地址入口n中的每一个)的一个区块(即图5中的区块0到区块n中的任一个)表示一个缓存区域,控制核缓存为CPU缓存,当DMA引擎确定操作类型为原子操作时,此时DMA引擎能够直接完成对缓存区域的数据的原子操作(比如图5示出的dma原子操作),可以节省CPU的指令开销,比如本来需要几条指令才能完成的操作,现在只需一条直接内存访问指令即可完成。同时所提供的方法可以在不同CPU在片上、片间相距较远时,解决访存距离过远的问题。
需要说明的是,在一些实施例中,原子操作类型包括原子加法、原子比较或原子交换的任一项。如图6所示,图6为本发明实施例提供的一种缓存原子操作方法的流程图,上述根据原子操作类型和原始数据完成对第二目标缓存区域的缓存数据的原子操作,可以为:
步骤301,若原子操作类型为原子加法,将原始数据和第二目标缓存区域的缓存数据以原子形式进行合并。
步骤302,若原子操作类型为原子比较,将原始数据和第二目标缓存区域的缓存数据以原子形式进行比较,生成原子比较结果。
步骤303,若原子操作类型为原子替换,将原始数据替换第二目标缓存区域的缓存数据。
在步骤301至303中,当存储器或外部设备需要对缓存区域的缓存数据进行原子加法、原子交换、原子替换中任一操作时,DMA引擎能够以原子形式完成上述任一原子操作,同时,原子操作的优先级在缓存处理中是最高的。因此当DMA引擎对缓存数据进行原子操作时可以无视第二目标缓存区域是否处于空闲状态。保证了多线程程序执行和缓存访问的正确性和安全性。同时,上述原子操作类型和步骤可根据实际情况进行调整,此处仅为示例。
基于上述介绍,作为一个可选实施例,如图7所示,图7为本发明实施例提供的一种空闲状态确认方法的流程图,步骤103中判断目标缓存区域是否处于空闲状态,可以为:
步骤401,获取CPU的操作指令流水线。
步骤402,解析CPU的操作指令流水线,获取CPU正在操作的缓存区域的区域标识。
步骤403,若CPU正在操作的缓存区域的区域标识与标缓存区域的区域标识不一致,确认目标缓存区域处于空闲状态。
在步骤401至403中,DMA引擎能够获取CPU的操作指令流水线,并根据操作指令流水线在缓存区域中确认CPU正在进行缓存操作的缓存区域,若CPU正在操作的缓存区域的区域标识与标缓存区域的区域标识不一致,例如通过图4中的缓存区域的地址入口和区块编号是否一致进行判断。进而DMA引擎能够快速确认目标缓存区块是否处于空闲。
基于上述介绍,作为一个可选实施例,步骤103中判断目标缓存区域是否处于空闲状态,可以为:向CPU发送关于目标缓存区块的访问请求,在CPU对目标缓存区块的工作状态进行确认后返回区块工作信息,DMA引擎能够根据区块工作信息确认目标缓存区块是否处于空闲。同时,上述目标缓存区块的空闲确认方法可根据实际情况进行调整,此处仅为示例。
基于上述介绍,作为一个可选实施例,步骤102中根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域,可以为:获取读写操作对应的第一目标缓存区域和原子操作对应的第二目标缓存区域;若第一目标缓存区域和第二目标缓存区域为不同的目标缓存区域,同步执行对第一目标缓存区域的缓存数据的读写操作和对第二目标缓存区域的缓存数据的原子操作。
为提高CPU指令的效率,DMA引擎能够在确认读写操作对应的第一目标缓存区域和原子操作对应的第二目标缓存区域为不同区域时,同时执行对第一目标缓存区域的缓存数据和第二目标缓存区域的缓存数据的操作,进而保证了多线程程序执行和缓存访问的正确性和安全性。
基于上述介绍,作为一个可选实施例,如图8所示,图8为本发明实施例提供的一种同步信息区域生成方法的流程图,在步骤101中响应于CPU基于数据缓存请求发出的操作请求之前,可以为:
步骤501,获取待创建的同步信息区域的区域范围。
步骤502,根据区域范围生成同步信息区域对应的配置指令。
步骤503,将配置指令发送至寄存器,寄存器根据配置指令生成区域范围的同步信息区域;同步信息区域用于存放DMA引擎和CPU的同步信息。
在步骤501至502中,DMA引擎通过获取待创建的同步信息区域的区域范围,例如区域的存储空间大小,进而DMA引擎能根据区域范围生成同步信息区域对应的配置指令,如图9所示,图9为本发明实施例提供的一种同步信息区域生成方法的原理示意图,在CPU作为控制核时,DMA引擎能够通过对寄存器的配置获取区域范围符合需求的同步信息区域,进而节省芯片面积开销,且由于同步信息区域对CPU直接可见,更容易用作CPU指令调度的参考信息。
本实施例中,DMA引擎通过根据CPU发送的数据缓存请求对应的操作类型,确定操作类型对应的操作步骤,以及DMA引擎判断根据操作步骤确定的目标缓存区域是否处于空闲状态,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,实现DMA引擎与CPU的缓存数据的操作,克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
在介绍了本申请实施例的方法之后,接下来,参考图10对本申请实施例的缓存操作***进行介绍。在图10示出的缓存操作***中,至少包括:CPU和DMA引擎。
在该缓存操作***中,CPU,主要被配置为执行以下功能,即:向所述DMA引擎发送基于数据缓存请求的操作请求;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据。
DMA引擎,主要被配置为执行以下功能,即:响应于所述CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;判断所述目标缓存区域是否处于空闲状态;若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
在一可选实施例中,所述DMA引擎,在从所述操作请求中获取待执行的操作类型时,被配置为:解析所述操作请求,获取所述操作请求对应的操作类型信息;若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中读取或写入缓存信息,确认所述操作类型为所述读写操作;若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中的缓存信息进行原子操作,确定所述操作类型为所述原子操作。
在一可选实施例中,所述读写操作对应的操作请求还包括所述读写操作对应的操作区域标识;所述DMA引擎,在根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域时,被配置为:若所述操作类型为所述读写操作,根据所述操作区域标识在所述CPU的多个缓存区域中确定第一目标缓存区域;对所述第一目标缓存区域的缓存数据完成读取操作,或,对所述第一目标缓存区域的缓存数据完成写入操作。
在一可选实施例中,所述读写操作对应的操作请求还包括待写入的数据;所述DMA引擎,在对所述第一目标缓存区域的缓存数据完成写入操作时,被配置为:将所述待写入的数据根据所述操作区域标识写入所述第一目标缓存区域中。
在一可选实施例中,所述读写操作对应的操作请求还包括多个所述读写操作对应的操作区域标识;所述DMA引擎,在所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作时,被配置为:根据多个所述操作区域标识生成操作指令流水线;将所述操作指令流水线发送给CPU,以使得所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域的缓存数据的读取操作,或,所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域的缓存数据的写入操作。
在一可选实施例中,所述原子操作对应的操作请求还包括所述原子操作对应的操作码、原始数据和目的数据标识;所述DMA引擎,在所述根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域时,被配置为:根据所述目的数据标识在所述CPU的多个缓存区域中确认所述原子操作对应的第二目标缓存区域;在所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作时,DMA引擎还被配置为:根据所述原子操作对应的操作码确定所述原子操作对应的原子操作类型;根据所述原子操作类型和所述原始数据完成对所述第二目标缓存区域的缓存数据的原子操作。
在一可选实施例中,所述原子操作类型包括原子加法、原子比较或原子交换的任一项;所述DMA引擎,在所述根据所述原子操作类型和所述原始数据完成对所述第二目标缓存区域的缓存数据的原子操作时,被配置为:若所述原子操作类型为所述原子加法,将所述原始数据和所述第二目标缓存区域的缓存数据以原子形式进行合并;若所述原子操作类型为所述原子比较,将所述原始数据和所述第二目标缓存区域的缓存数据以原子形式进行比较,生成原子比较结果;若所述原子操作类型为所述原子替换,将所述原始数据替换所述第二目标缓存区域的缓存数据。
在一可选实施例中,所述DMA引擎,在所述判断所述目标缓存区域是否处于空闲状态时,被配置为:获取所述CPU的操作指令流水线;解析所述CPU的操作指令流水线,获取所述CPU正在操作的缓存区域的区域标识;若所述CPU正在操作的缓存区域的区域标识与所述标缓存区域的区域标识不一致,确认所述目标缓存区域处于所述空闲状态。
在一可选实施例中,若所述操作类型包括所述读写操作和所述原子操作;所述DMA引擎,在所述根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域时,被配置为:获取所述读写操作对应的第一目标缓存区域和所述原子操作对应的第二目标缓存区域;若所述第一目标缓存区域和所述第二目标缓存区域为不同的目标缓存区域,同步执行对所述第一目标缓存区域的缓存数据的读写操作和对所述第二目标缓存区域的缓存数据的原子操作。
在一可选实施例中,所述DMA引擎,在所述响应于CPU基于数据缓存请求发出的操作请求之前,还被配置为:获取待创建的同步信息区域的区域范围;根据所述区域范围生成同步信息区域对应的配置指令;将所述配置指令发送至寄存器,所述寄存器根据所述配置指令生成所述区域范围的同步信息区域;所述同步信息区域用于存放所述DMA引擎和CPU的同步信息。
本实施例中,通过根据CPU发送的数据缓存请求对应的操作类型,确定操作类型对应的操作步骤,以及判断根据操作步骤确定的目标缓存区域是否处于空闲状态,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,实现DMA引擎与CPU的缓存数据的操作,克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
上述或下述实施例中,本申请实施例中,还提供了一种DMA引擎,所述DMA引擎应用于缓存操作***;
请求响应模块,用于响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据。
步骤确定模块,用于根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域。
空闲判断模块,用于判断所述目标缓存区域是否处于空闲状态。
缓存操作模块,用于若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
上述DMA引擎用于实现图1所示的缓存操作方法中的各个功能,此处不在展开赘述。
在介绍了本申请实施例的方法和***之后,接下来,参考图11对本申请实施例的缓存操作装置进行介绍。
本申请实施例中图11所示的缓存操作装置60能够实现对应于上述图1所对应的实施例中缓存操作方法的步骤。缓存操作装置60实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述缓存操作装置60应用于服务端设备或终端设备。所述缓存操作装置60可参考图1所对应的实施例中所执行的操作,此处不作赘述。
一些实施方式中,所述缓存操作装置60中包括请求响应模块601、步骤确定模块602、空闲判断模块603和缓存操作模块604。
请求响应模块601,用于响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储所述缓存数据。
步骤确定模块602,用于根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域。
空闲判断模块603,用于判断所述目标缓存区域是否处于空闲状态。
缓存操作模块604,用于若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
一些实施方式中,所述请求响应模块601,被配置为:解析所述操作请求,获取所述操作请求对应的操作类型信息;若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中读取/写入缓存信息,确认所述操作类型为所述读写操作; 若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中的缓存信息进行原子操作,确定所述操作类型为所述原子操作。
一些实施方式中,所述读写操作对应的操作请求还包括所述读写操作对应的操作区域标识;所述步骤确定模块602,被配置为:若所述操作类型为所述读写操作,根据所述操作区域标识在所述CPU的多个缓存区域中确定第一目标缓存区域;对所述第一目标缓存区域的缓存数据完成读取操作,或,对所述第一目标缓存区域的缓存数据完成写入操作。
进一步的,在一些实施方式中,所述读写操作对应的操作请求还包括待写入的数据;所述重排序缓冲区中划分出多个存储区域;所述缓存操作模块604,被配置为:将所述待写入的数据根据所述操作区域标识写入所述第一目标缓存区域中。
进一步的,一些实施方式中,所述读写操作对应的操作请求还包括多个所述读写操作对应的操作区域标识;所述缓存操作模块604,被配置为:根据多个所述操作区域标识生成操作指令流水线;将所述操作指令流水线发送给CPU,以使得所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域 的缓存数据的读取操作,或,所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域的缓存数据的写入操作。
进一步的,一些实施方式中,所述原子操作对应的操作请求还包括所述原子操作对应的操作码、原始数据和目的数据标识;所述步骤确定模块602,被配置为:在生成与该存储区域中各个任务完成标记对应的数据搬运任务的同步信息之后,将该存储区域中各个任务完成标记对应的指令序号设置为待分配状态。所述缓存操作模块604,还被配置为:获取所述读写操作对应的第一目标缓存区域和所述原子操作对应的第二目标缓存区域;若所述第一目标缓存区域和所述第二目标缓存区域为不同的目标缓存区域,同步执行对所述第一目标缓存区域的缓存数据的读写操作和对所述第二目标缓存区域的缓存数据的原子操作。
一些实施方式中,所述缓存操作装置60还包括同步创建模块605,所述同步创建模块605,用于待创建的同步信息区域的区域范围;根据所述区域范围生成同步信息区域对应的配置指令;将所述配置指令发送至寄存器,所述寄存器根据所述配置指令生成所述区域范围的同步信息区域;所述同步信息区域用于存放所述DMA引擎和CPU的同步信息。
本实施例中,DMA引擎通过根据CPU发送的数据缓存请求对应的操作类型,确定操作类型对应的操作步骤,以及DMA引擎判断根据操作步骤确定的目标缓存区域是否处于空闲状态,使得DMA引擎能够在确认目标缓存区域处于空闲状态时,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作,实现DMA引擎与CPU的缓存数据的操作,克服依靠CPU通过指令主动发起缓存的读写请求的方式带来的CPU的计算资源的需求越来越大,存储空间占用过久等问题,优化CPU的计算资源,提升设备算力。
在介绍了本申请实施例的方法、***和装置之后,接下来,对本申请实施例的计算机可读存储介质进行说明,计算机可读存储介质可为光盘,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会实现上述方法实施方式中所记载的各步骤,例如,响应于CPU基于数据缓存请求发出的操作请求,从操作请求中获取待执行的操作类型;操作类型包括读写操作和/或原子操作;CPU包括多个缓存区域,缓存区域用于存储缓存数据。根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。判断目标缓存区域是否处于空闲状态。若目标缓存区域处于空闲状态,根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作。各步骤的具体实现方式在此不再重复说明。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
上面从模块化功能实体的角度对本申请实施例中的缓存操作装置60进行了描述,下面从硬件处理的角度分别对本申请实施例中的执行缓存操作方法的服务器、终端设备进行描述。
需要说明的是,在本申请缓存操作装置实施例的图11的请求响应模块601对应的实体设备可以为输入/输出单元、收发器、射频电路、通信模块和输入/输出(I/O)接口等,步骤确定模块602、空闲判断模块603和缓存操作模块604对应的实体设备可以为处理器。图11的缓存操作装置60可以具有如图12的结构,当图11的缓存操作装置60具有如图12的结构时,图12处理器和收发器能够实现前述对应该装置的装置实施例提供的步骤确定模块602、空闲判断模块603、缓存操作模块604和请求响应模块601同或相似的功能,图12存储器执行上述缓存操作方法时需要调用的计算机程序。
图13申请实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processingunits,CPU)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图中未示出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。
服务器1100还可以包括一个或一个以上电源1127,一个或一个以上有线或无线网络接口1180,一个或一个以上输入输出接口1159,和/或,一个或一个以上操作***1141,例如Windows Server,Mac OS X,Unix, Linux,FreeBSD等等。
上述实施例中由服务器所执行的步骤可以基于该图13的服务器1100的结构。例如,例如上述实施例中由图13的缓存操作装置80所执行的步骤可以基于该图13的服务器结构。例如,所述中央处理器1122通过调用存储器1132中的指令,执行以下操作:
通过分连接单元的输入输出接口1159响应来自中央处理器CPU基于数据缓存请求发出的操作请求;从操作请求中获取待执行的操作类型;操作类型包括读写操作和/或原子操作;CPU包括多个缓存区域,缓存区域用于存储缓存数据。根据操作类型确定对应的操作步骤,操作步骤用于确认在CPU的缓存区域中对应的目标缓存区域。判断目标缓存区域是否处于空闲状态。若目标缓存区域处于空闲状态根据操作类型在目标缓存区域中完成对CPU的缓存数据的操作。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。
Claims (14)
1.一种缓存操作方法,其特征在于,应用于DMA引擎,包括:
响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储缓存数据;
根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;
判断所述目标缓存区域是否处于空闲状态;
若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
2.根据权利要求1所述的方法,其特征在于,所述从所述操作请求中获取待执行的操作类型,包括:
解析所述操作请求,获取所述操作请求对应的操作类型信息;
若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中读取/写入缓存信息,确认所述操作类型为所述读写操作;
若根据所述操作类型信息确定所述操作请求用于向所述缓存区域中的缓存信息进行原子操作,确定所述操作类型为所述原子操作。
3.根据权利要求2所述的方法,其特征在于,所述读写操作对应的操作请求还包括所述读写操作对应的操作区域标识;所述根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域,包括:
若所述操作类型为所述读写操作,根据所述操作区域标识在所述CPU的多个缓存区域中确定第一目标缓存区域;
所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作,包括:
对所述第一目标缓存区域的缓存数据完成读取操作,或,对所述第一目标缓存区域的缓存数据完成写入操作。
4.根据权利要求3所述的方法,其特征在于,所述读写操作对应的操作请求还包括待写入的数据;所述对所述第一目标缓存区域的缓存数据完成写入操作,包括:
将所述待写入的数据根据所述操作区域标识写入所述第一目标缓存区域中。
5.根据权利要求3所述的方法,其特征在于,所述读写操作对应的操作请求还包括多个所述读写操作对应的操作区域标识;所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作,包括:
根据多个所述操作区域标识生成操作指令流水线;
将所述操作指令流水线发送给CPU,以使得所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域的缓存数据的读取操作,或,所述CPU根据所述操作指令流水线完成对所述第一目标缓存区域的缓存数据的写入操作。
6.根据权利要求2所述的方法,其特征在于,所述原子操作对应的操作请求还包括所述原子操作对应的操作码、原始数据和目的数据标识;所述根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域,包括:
根据所述目的数据标识在所述CPU的多个缓存区域中确认所述原子操作对应的第二目标缓存区域;
所述根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作,包括:
根据所述原子操作对应的操作码确定所述原子操作对应的原子操作类型;
根据所述原子操作类型和所述原始数据完成对所述第二目标缓存区域的缓存数据的原子操作。
7.根据权利要求6所述的方法,其特征在于,所述原子操作类型包括原子加法、原子比较或原子交换的任一项;所述根据所述原子操作类型和所述原始数据完成对所述第二目标缓存区域的缓存数据的原子操作,包括:
若所述原子操作类型为所述原子加法,将所述原始数据和所述第二目标缓存区域的缓存数据以原子形式进行合并;
若所述原子操作类型为所述原子比较,将所述原始数据和所述第二目标缓存区域的缓存数据以原子形式进行比较,生成原子比较结果;
若所述原子操作类型为所述原子替换,将所述原始数据替换所述第二目标缓存区域的缓存数据。
8.根据权利要求1所述的方法,其特征在于,所述判断所述目标缓存区域是否处于空闲状态,包括:
获取所述CPU的操作指令流水线;
解析所述CPU的操作指令流水线,获取所述CPU正在操作的缓存区域的区域标识;
若所述CPU正在操作的缓存区域的区域标识与所述标缓存区域的区域标识不一致,确认所述目标缓存区域处于所述空闲状态。
9.根据权利要求1所述的方法,其特征在于,若所述操作类型包括所述读写操作和所述原子操作;所述根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域,包括:
获取所述读写操作对应的第一目标缓存区域和所述原子操作对应的第二目标缓存区域;
若所述第一目标缓存区域和所述第二目标缓存区域为不同的目标缓存区域,同步执行对所述第一目标缓存区域的缓存数据的读写操作和对所述第二目标缓存区域的缓存数据的原子操作。
10.根据权利要求1所述的方法,其特征在于,在所述响应于CPU基于数据缓存请求发出的操作请求之前,所述方法还包括:
获取待创建的同步信息区域的区域范围;
根据所述区域范围生成同步信息区域对应的配置指令;
将所述配置指令发送至寄存器,所述寄存器根据所述配置指令生成所述区域范围的同步信息区域;所述同步信息区域用于存放所述DMA引擎和CPU的同步信息。
11.一种DMA引擎,其特征在于,所述DMA引擎应用于实现如权利要求1至10任一所述的缓存操作方法;所述DMA引擎包括:
请求响应模块,用于响应于CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;所述CPU包括多个缓存区域,所述缓存区域用于存储缓存数据;
步骤确定模块,用于根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;
空闲判断模块,用于判断所述目标缓存区域是否处于空闲状态;
缓存操作模块,用于若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
12.一种缓存操作***,其特征在于,所述***包括CPU以及应用于如权利要求1至10任一缓存操作方法所述的DMA引擎;其中,
所述CPU,被配置为向所述DMA引擎发送基于数据缓存请求的操作请求;所述CPU包括多个缓存区域,所述缓存区域用于存储缓存数据;
所述DMA引擎,被配置为响应于所述CPU基于数据缓存请求发出的操作请求,从所述操作请求中获取待执行的操作类型;所述操作类型包括读写操作和/或原子操作;根据所述操作类型确定对应的操作步骤,所述操作步骤用于确认在所述CPU的缓存区域中对应的目标缓存区域;判断所述目标缓存区域是否处于空闲状态;若所述目标缓存区域处于空闲状态,根据所述操作类型在所述目标缓存区域中完成对所述CPU的缓存数据的操作。
13.一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-10中任一项所述的缓存操作方法。
14.一种计算设备,包括:存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1-10中任一项所述的缓存操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410035952.0A CN117539802B (zh) | 2024-01-10 | 2024-01-10 | 一种缓存操作方法、***以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410035952.0A CN117539802B (zh) | 2024-01-10 | 2024-01-10 | 一种缓存操作方法、***以及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117539802A true CN117539802A (zh) | 2024-02-09 |
CN117539802B CN117539802B (zh) | 2024-04-05 |
Family
ID=89790417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410035952.0A Active CN117539802B (zh) | 2024-01-10 | 2024-01-10 | 一种缓存操作方法、***以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117539802B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及*** |
CN109388590A (zh) * | 2018-09-28 | 2019-02-26 | 中国电子科技集团公司第五十二研究所 | 提升多通道dma访问性能的动态缓存块管理方法和装置 |
CN114691023A (zh) * | 2020-12-31 | 2022-07-01 | 中山市江波龙电子有限公司 | 读写设备的读写操作方法、读写设备及可读存储介质 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
WO2023093334A1 (zh) * | 2021-11-29 | 2023-06-01 | 上海商汤智能科技有限公司 | 用于执行原子操作的***、原子操作方法及装置 |
CN116243978A (zh) * | 2023-01-18 | 2023-06-09 | 上海燧原科技有限公司 | 分布式训练中的数据规约方法、装置、介质和训练*** |
-
2024
- 2024-01-10 CN CN202410035952.0A patent/CN117539802B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及*** |
CN109388590A (zh) * | 2018-09-28 | 2019-02-26 | 中国电子科技集团公司第五十二研究所 | 提升多通道dma访问性能的动态缓存块管理方法和装置 |
CN114691023A (zh) * | 2020-12-31 | 2022-07-01 | 中山市江波龙电子有限公司 | 读写设备的读写操作方法、读写设备及可读存储介质 |
WO2023093334A1 (zh) * | 2021-11-29 | 2023-06-01 | 上海商汤智能科技有限公司 | 用于执行原子操作的***、原子操作方法及装置 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
CN116243978A (zh) * | 2023-01-18 | 2023-06-09 | 上海燧原科技有限公司 | 分布式训练中的数据规约方法、装置、介质和训练*** |
Non-Patent Citations (3)
Title |
---|
HARINI MUTHUKRISHNAN ETC.: "FinePack: Transparently Improving the Efficiency of Fine-Grained Transfers in Multi-GPU Systems", 2023 IEEE INTERNATIONAL SYMPOSIUM ON HIGH-PERFORMANCE COMPUTER ARCHITECTURE (HPCA), 24 March 2023 (2023-03-24) * |
孙乔 等: "SW26010 众核任务并行调度***及其嵌套并行算法应用", 软件学报, 6 August 2021 (2021-08-06) * |
李胜蓝;姜宏旭;符炜剑;陈姣;: "基于PCIe的多路传输***的DMA控制器设计", 计算机应用, no. 03, 10 March 2017 (2017-03-10) * |
Also Published As
Publication number | Publication date |
---|---|
CN117539802B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102287677B1 (ko) | 데이터 액세스 방법, 장치, 기기 및 저장 매체 | |
US9552303B2 (en) | Method and system for maintaining release consistency in shared memory programming | |
US20220114098A1 (en) | System, apparatus and methods for performing shared memory operations | |
US11256444B2 (en) | Method for processing read/write data, apparatus, and computer readable storage medium thereof | |
CN111782419B (zh) | 一种缓存更新方法、装置、设备及存储介质 | |
CN114860329A (zh) | 动态一致性偏置配置引擎及方法 | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN116414735A (zh) | 数据存储方法、***、存储访问配置方法及相关设备 | |
US20110246667A1 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN115421787A (zh) | 指令执行方法、装置、设备、***、程序产品及介质 | |
CN113535611A (zh) | 数据处理方法及装置、异构*** | |
US10379827B2 (en) | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment | |
CN117539802B (zh) | 一种缓存操作方法、***以及相关装置 | |
CN114691532A (zh) | 内存访问方法、内存地址分配方法及装置 | |
KR100978082B1 (ko) | 공유 메모리형 멀티 프로세서에 있어서의 비동기 원격 절차 호출 방법 및 비동기 원격 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN115481072A (zh) | 核间数据传输方法、多核芯片及机器可读存储介质 | |
CN116418848A (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
CN114327248A (zh) | 存储节点、存储设备及网络芯片 | |
CN115129709A (zh) | 一种数据处理方法、服务端及*** | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
TW202119215A (zh) | 共用代碼之系統與代碼共用方法 | |
KR100978083B1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |