CN114090468A - 一种数据处理方法及相关装置 - Google Patents
一种数据处理方法及相关装置 Download PDFInfo
- Publication number
- CN114090468A CN114090468A CN202111361597.9A CN202111361597A CN114090468A CN 114090468 A CN114090468 A CN 114090468A CN 202111361597 A CN202111361597 A CN 202111361597A CN 114090468 A CN114090468 A CN 114090468A
- Authority
- CN
- China
- Prior art keywords
- data processing
- request
- data
- processing request
- module
- 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
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
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
本申请实施例提供一种数据处理方法及相关装置,包括接收各个带有请求类别的数据处理请求,并将各个所述数据处理请求分别写入到对应的请求类别队列中;根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间;当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,处理所述在先得到数据对应的所述数据处理请求的请求类别。本申请实施例可实现提高缓存数据处理的效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据处理方法及相关装置。
背景技术
计算机技术中,处理器和多级存储器是典型的计算机结构。数据运算过程中,多级存储器中的主存储器存储指令和数据,处理器从主存储器中获取指令和相应的数据,执行指令,并将结果数据写回到主存储器中。在处理器和主存储器之间,通常有一级或多级高速缓冲存储器(Cache)。高速缓冲存储器用于降低处理器读取指令和数据的时间。
在高性能计算的数据运算、矩阵运算等核心操作中,通常对数据会有明确的处理顺序,当缓存中接收到运算请求后,对接收到的请求严格按照请求到来的顺序执行,即先对第一个到来的请求进行读取并且接收到返回数据再进行数据处理,之后才会对第二个到来的请求做后续操作。
但是,上述中的操作容易造成读写相互阻塞的问题,比如当缓存处理接收到的一队列的读写请求时,按照请求到来的顺序,应该先处理先到的读请求,但是排在后面的写请求所需要的写入数据已经就位,这样就造成了读请求阻塞写请求的情况,导致缓存数据处理效率较低。
因此,如何提高缓存数据处理的效率,就成为亟需解决的技术问题。
发明内容
本申请实施例解决的技术问题是提高缓存处理数据的效率。
为解决上述问题,本申请实施例提供一种数据处理方法及相关装置,包括:
第一方面,本申请实施例提供一种数据处理方法,包括:接收各个数据处理请求,并根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中,各个所述数据处理请求的请求类别的数量为至少2种;
根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,其中,所述当前级模块为接收各个所述数据处理请求的模块;
当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
第二方面,本申请实施例提供一种数据处理装置,所述装置包括:
接收模块,适于接收各个所述数据处理请求,并根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中,且各个所述数据处理请求的请求类别的数量为至少2种;
请求确定模块,用于根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,获取在先请求数据,其中,所述当前级模块为接收各个所述数据处理请求的模块;
处理模块,适于当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
第三方面,本申请实施例还提供一种高速缓冲存储器,适于执行如第一方面所述的数据处理方法。
第四方面,本申请实施例还提供一种电子设备,包括如第三方面所述的高速缓冲存储器。
与现有技术相比,本申请实施例的技术方案具有以下优点:
在本申请实施例中,首先将接收到的带有请求类别的各个所述数据处理请求,分别放入到对应的所述请求类别的请求类别队列中,然后根据各个请求类别队列队首的各个数据处理请求的接收顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
可见,本申请实施例所提供的技术方案,将接收到的数据处理请求按照类别分别放入到对应的不同队列中,仅在同一队列中按照数据处理请求的先后顺序执行各个请求,不同队列中的数据处理请求可以同时处理,因此,可以在不影响处理结果的正确性的基础上,降低不同类型的数据处理请求相互阻塞的情况,从而可以提高缓存处理数据时的整体效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为数据处理的基本系统架构示意图。
图2为基本系统架构实现数据处理的示意图。
图3a为本申请实施例提供的数据处理方法的实现数据处理的架构示意图。
图3b为本申请实施例提供的数据处理方法的流程图。
图4为本申请实施例提供的数据处理方法的另一流程图。
图5是本申请实施例提供的数据处理方法的再一流程图。
图6为本申请实施例提供的数据处理装置的结构框图。
图7为本申请实施例提供的高速缓冲存储器的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示例性的示出了计算机进行高性能计算的数据处理时基本的系统架构示意图,如图1所示,该系统架构可以包括:处理器110、高速缓冲存储器120、主存储器130。
其中,处理器110主要为高性能计算处理器,一般为CPU(中央处理器)或者GPGPU(通用图形处理器),处理器110可以发送数据处理请求,主存储器130可以存储指令和数据,处理器110从主存储器130中获取指令和相应的数据,然后执行指令,并将结果数据写回到主存储器130中。
处理器110和存储器进行数据传输时的接口为MAR(地址寄存器)和MDR(数据寄存器),存储器可以包括高速缓冲存储器120和主存储器130,MAR可以接受来自程序计数器的指令地址或来自地址形成部件的操作数地址,以确定要访问的单元。MDR是向主存储器130写入数据或读出数据的缓冲部件。MAR和MDR的功能与主存储器130相似,但是在小型计算机、微型计算机中常放在处理器110内。
主存储器130是程序执行代码及数据的存放区,通常采用DRAM(动态随机存取存储器)类型的存储芯片。
在一些实施例中,在数据处理的过程中,当执行的操作是读操作时,其中读操作是指从处理器110送来的地址所指定的存储单元中取出信息,再送给处理器110,具体的:首先,处理器110将内存单元的地址送入到MAR;接着,处理器110发出读命令;然后,等待存储器工作完成信号;最后,读出信息并返回至处理器110。在另一些实施例中,当执行的操作是写操作时,其中写操作是指将要写入的信息存入处理器110所指定的存储单元中,具体操作:首先,处理器110将地址信号送至地址总线;接着,处理器110将要写入的数据送至数据总线;然后,处理器110发出写命令;最后,等待存储器工作完成信号。
由于处理器110直接从主存储器130中读取指令和数据的速度很慢,因此,在处理器110和主存储器130之间通常会设有高速缓冲存储器120,其中,高速缓冲存储器120可以根据实际使用需要设置成一级或者多级高速缓冲存储器。
在一些实施例中,高速缓冲存储器120还可以设置于内存和硬盘之间,在另一些实施例中,在硬盘与网络之间也可以设置有高速缓冲存储器120,即位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可以被泛称为高速缓冲存储器120。其材质一般为SRAM(静态随机存取存储器),其性能介于寄存器和主存DRAM(动态随机存取存储器)之间。
高速缓冲存储器120,通常使用SRAM来实现,规模较小,容量较寄存器要大,访问速度比主存储器130要快,使用它存放主存储器130中一些经常访问的信息可以大幅度提高程序执行速度。在一些实施例中,主存储器130访问速度为1μs,高速缓冲存储器120的访问速度可以达到0.1μs。可见,高速缓冲存储器120的速度远高于主存储器130,当处理器110直接从主存储器130中获取数据时要等待一定时间周期,而高速缓冲存储器120则可以保存处理器110刚用过或者循环使用的一部分数据,如果处理器110需要再次使用该部分数据时可以从高速缓冲存储器120中直接调用,这样就避免了重复存取数据,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,数据信息通常存放于主存储器130中,每当使用它时,就会将其赋值到一个访问速度很快的高速缓冲存储器120中,当处理器110访问一组特定信息时,首先,检查是否在高速缓冲存储器120中,如果存在,直接取用;否则,就从主存储器130中读信息,通常认为这批信息被再次用到的概率很高,所以同时还会把主存储器130中读出的信息复制到高速缓冲存储器120中,方便下一次访问时可以快速找到数据。
在高速缓冲存储器120执行数据处理请求时,需要严格按照各个数据处理请求的接收的顺序执行,图2示例性的示出了高速缓冲存储器处理数据请求的系统架构示意图。
如图中所示,该系统架构包括:处理器110、高速缓冲存储器120、主存储器130。
可以看到,高速缓冲存储器120位于处理器110和主存储器130之间(这里的处理器单指高性能计算处理器)。
处理器110向高速缓冲存储器120发送多个数据处理的请求,这些数据处理请求按照发出的先后顺序排列成队,高速缓冲存储器120执行各个数据处理请求时严格按照接收到的数据处理请求的先后顺序执行,如图2所示,在一些实施例中,数据处理请求的到来顺序为R0、R1、W0、R2、W1、R3、W2、W3等多个数据处理请求,那么高速缓冲存储器120的执行顺序也为R0、R1、W0、R2、W1、R3、W2、W3,输出至处理器110的顺序同样为R0、R1、W0、R2、W1、R3、W2、W3等。其中,R类型为读数据处理请求,W类型为写数据处理请求。这样的执行方式,容易发生读、写请求相互阻塞的情况,如图2中所示,按照接收到的先后顺序执行,则排在队首的R0是需要优先处理的,但是W0需要写入的数据已经到来,这样就造成了读数据请求阻塞写数据请求的情况,反之也是一样的情况。
可以看出,上述数据处理的方式会造成数据请求处理阻塞的情况,影响了数据处理的整体效率。
本申请实施例提供的数据处理方法,可以对接收到的数据处理请求分开进行处理,将读写请求放在不同的队列中,从而提高整体的数据处理效率。
图3a为本申请实施例提供的数据处理方法的实现数据处理的架构示意图。该系统架构包括:处理器110、高速缓冲存储器120、主存储器130。
高速缓冲存储器120可以分为一级缓存、二级缓存、三级缓存。其中,一级缓存通常内置在处理器110内部并且与处理器110同速运行,可以有效的提高处理器110的运行效率。一级缓存越大,处理器110的运行效率越高,但是由于处理器110内部结构的限制,一级缓存的容量都很小。
二级缓存,可以协调一级缓存和内存之间的速度。处理器110在调用缓存时,首先查询的是一级缓存,当一级缓存的数据不能够支撑处理器110的运行,这样就需要到二级缓存中寻找数据。二级缓存比一级缓存的速度相对来说会慢,但是它比一级缓存的空间容量要大,主要用于一级缓存和内存之间数据的临时交换。
三级缓存是为读取二级缓存后未命中,即二级缓存中也未找到该数据请求需要的请求数据,这时可以在三级缓存中继续查找。设置有三级缓存的处理器110中,只有较少的数据需要从内存中调用,这进一步提高了处理器110的效率。
在一些实施例中,处理器110可以为高性能计算处理器,这时高速缓冲存储器120各个级按照数据处理的需要逐级处理接收到的各个数据处理请求。
具体的,处理器110将带有不同的请求类别的各个数据处理请求发送至高速缓冲存储器120时,首先将各个数据处理请求发送到的地方为高速缓冲存储器120的一级缓存,因此,接收各个数据处理请求的为高速缓冲存储器120的一级缓存,一级缓存中可以设置有多个不同队列,用于根据接收到的各个数据处理请求的类别,将各个数据处理请求分别放置到对应类别的不同队列中,尽管同一队列中的数据处理请求仍然需要按照先进先出的处理顺序执行,但不同队列中的数据处理请求的处理顺序无需按照先进先出的处理步骤,具体可以为:
根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,其中,所述当前级模块为接收各个所述数据处理请求的模块,比如:一级缓存。
当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
这样就可以同时处理多个队列中的数据请求,可以解决对不同类别的数据处理请求所造成的阻塞,影响数据处理整体效率的问题。
在另一些实施例中,接收各个数据处理请求的装置还可以为高速缓冲存储器120的二级缓存,比如:当一级缓存需要向二级缓存发送数据处理请求时。
具体的,一级缓存将带有不同请求类别的各个数据处理请求发送至二级缓存,同样的,在二级缓存中可以设置有多个不同队列,用于根据不同的请求类别,将接收到的各个数据处理请求分别放置到对应类别的不同队列中,这样,可以独立处理各个队列中的数据处理请求,具体处理步骤与前述步骤相同,在此不再赘述。
各个队列中的数据处理请求可以分别处理,使得不同类别的数据处理请求相互之间不会发生处理阻塞的情况。
其中,高速缓冲存储器120的各级缓存在接收由处理器110或者前一级缓存发送来的数据处理请求队列时,将各个不同类别的数据处理请求按照各自的请求类别,分别放入不同的队列,请求类别队列的种类可以为多个,在一实施例中,数据处理请求可以包括读数据处理请求和写数据处理请求,本申请实施例提供的数据处理方法,对于多个不同类别的请求,均可以根据类别的不同而在高速缓冲存储器120中设置多个不同类别的队列,然后对多个队列中的数据处理请求同时进行处理。这样,可以解决在处理数据处理请求时相互阻塞的情况,有效提高了数据处理的整体效率。
为了进一步说明本申请实施例的实施方式,图3b示出了本申请实施例提供的数据处理方法的流程图。在一些实施例中,该流程可以在图3a所示的架构系统中执行。
如图3b所示,该流程可以包括如下步骤:
在步骤S140中,处理器发送各个数据处理请求。
容易理解的是,发送数据处理请求的可以为高性能计算处理器,也可以为一级缓存,为了方便描述,本申请以高性能计算处理器发送数据处理请求进行说明,那么对应的,接收数据处理请求的即为高速缓冲存储器,如果高速缓冲存储器包括多级缓存,那么接收数据处理请求的即为高速缓冲存储器的一级缓存。
在步骤S150中,高速缓冲存储器接收各个数据处理请求,并按照各个对应的请求类别写入到不同的请求队列中。
高性能计算处理器发送各个数据处理请求后,高速缓冲存储器接收各个数据处理请求,并分别写入到不同的请求队列中。
需要说明的是,数据处理请求类别队列是提前设置于高速缓冲存储器中的,在本实施例中,数据处理请求类别队列可以设置在一级缓存中。
在另一些实施例中,发送数据处理请求的为高速缓冲存储器的一级缓存,那么数据处理请求队列可以设置于二级缓存。
这样,就可以将接收到的各个数据处理请求按照不同的请求类别分成不同的队列,在处理各个数据处理请求时,仅在同一队列中按照数据处理请求的先后顺序执行各个请求,不同队列中的数据处理请求之间不按照接收到的先后顺序执行。
在步骤S151中,根据位于各个请求类别队列队首的数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求。
高速缓冲存储器在执行各个数据处理请求时,是严格按照接收到的各个数据处理请求的先后顺序完成处理的,因此,在保证了各个不同类别队列中的各个数据处理请求的顺序之后,需要比较不同队列之间的队首的数据处理请求的接收顺序,这样,才能够保证数据处理的结果的正确性。
在具体确定时,分别确定位于各个请求类别队列队首的数据处理请求的写入先后顺序,将先写入的数据处理请求作为在先数据处理请求,将后写入的数据处理请求作为在后数据处理请求。
在步骤S152中,根据在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,获取在先请求数据。
确定在先数据处理请求后,先根据请求中的数据地址确定在先请求数据所对应的当前级模块的存储空间。
具体地,确定存储空间即为确定数据地址与在先数据处理请求中的数据地址相同的缓存单元(具体地,可以为缓存行),并进一步获取在先请求的数据。
在步骤S153中,未获取到在先请求数据时,处理在后数据处理请求,确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据。
当然,未获取到在先请求数据,即包括读数据处理请求的数据未在当前级缓存的缓存单元中命中,也包括写数据处理请求的数据未传输至当前级模块,在等待数据的期间,可以对在后数据处理请求进行处理,确定在后请求数据所对应的当前级模块的存储空间,从而可以充分利用当前级模块的时间。
容易理解的是,在获取到在先请求数据的情况下,优先处理在先数据处理请求,只有在未获取到在先请求数据的情况下,才确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据。
在后处理数据请求是位于和在先数据处理请求不同队列的队首请求,当在先数据处理请求所需要的请求数据未存在于当前级模块的存储空间时,这个时候就可以接着去处理在后数据处理请求,这样,就可以实现同时处理不同队列的数据处理请求,并且是进行了数据处理请求的接收先后顺序的判断之后再去处理的,可以保证处理数据处理请求时的顺序,确保数据处理结果正确性的同时,能够提高整体的数据处理的效率。
在步骤S154中,根据在先请求数据和在后请求数据的获取顺序,确定在先得到数据,按照在先得到数据对应的数据处理请求的请求类别完成数据处理请求。
在前述步骤中,不仅获取了在前请求数据还获取了在后请求数据,因此,接下来对数据的进一步处理基于在先请求数据和在后请求数据的获取顺序,为此,容易理解的是,本文所述的在先得到数据既可能是在先请求数据,也可能是在后请求数据,如果在先请求数据先获取到,那么在先得到数据即为在先请求数据,如果在后请求数据先获取到,那么在先得到数据即为在后请求数据。
不论在先得到数据是在先请求数据还是在后请求数据,优先对在先得到数据对应的数据处理请求进行数据处理。
容易理解的是,数据处理请求是陆续接收的,每完成一个数据处理请求的处理后,均需要对位于各个所述请求类别队列队首的所述数据处理请求,执行上述操作,直至全部的数据处理请求处理完成。
可见,本申请实施例所提供的技术方案,将接收到的数据处理请求按照类别分别放入到对应的不同队列中,仅在同一队列中按照数据处理请求的先后顺序执行各个请求,不同队列间的数据处理请求可以同时处理,因此,可以在不影响处理结果的正确性的基础上,降低不同类型的数据处理请求相互阻塞的情况,从而可以提高缓存处理数据时的整体效率。
如前所述,数据处理请求可以包括至少2种以上的不同请求类别,请求队列根据数据处理请求类别的种类来设置,当数据处理请求包括读数据处理请求和写数据处理请求时,那么相应的,请求队列就可以设置为读数据处理请求类别队列和写数据处理请求类别队列。
为了方便理解,下面分别基于“确定所述读数据处理请求为所述在先数据处理请求,所述写数据处理请求为所述在后数据处理请求”和“确定所述读数据处理请求为所述在后数据处理请求,所述写数据处理请求为所述在先数据处理请求”进行说明。
首先,以确定所述读数据处理请求为所述在先数据处理请求,所述写数据处理请求为所述在后数据处理请求进行说明,请参考图4,图4示出了数据处理方法的另一流程图,该流程可以包括如下步骤。
在步骤S210中,接收各个读数据处理请求和各个写数据处理请求。
具体可以为高速缓冲存储器中的某个当前级模块接收数据处理请求。
步骤S210的具体内容请参考图3b关于步骤S150的部分描述,在此不再赘述。
在步骤S211中,读数据处理请求队列接收各个读数据处理请求,写数据处理请求类别队列接收各个写数据处理请求。
步骤S211的具体内容请参考图3b关于步骤S151的部分描述,在此不再赘述。
在步骤S212中,根据位于读数据处理请求队列和写数据处理请求队列队首的数据处理请求,确定读数据处理请求为在先数据处理请求。
判断位于两个队列队首的数据处理请求的先后顺序,是在确定了同队中的各个数据处理请求的先后顺序的基础上,进一步的确定不同队列间的数据处理请求的先后顺序,以确保数据处理结果的正确性。
在步骤S213中,根据读数据处理请求确定读数据是否存在于对应的当前级模块的存储空间,若否,执行步骤S215和216,若是,执行步骤S214。
容易理解的是,这里的当前级模块指的是设置有不同的请求类别队列的高速缓冲存储器,在一些实施例中,处理器为高性能计算处理器,当前级模块指的是一级缓存;在另一些实施例中,当前级模块可以指二级缓存或者三级缓存。
具体为根据读数据处理请求中的数据地址,在当前级模块中查找对应的数据地址,如果找到,即命中,则执行步骤S214,将所述读数据返回至上一级模块,其中,所述上一级模块为发送各个所述数据处理请求的模块,即直接将对应的缓存单元(缓存行)中的数据进行返回,无需在执行读数据处理请求的过程中处理写数据处理请求;如果未找到,则执行步骤S216,执行写数据处理请求。
当然,容易理解的是,当在所述存储空间未获取到所述读数据时,对于读数据处理请求,还需执行步骤S215,向下一级模块发送新的读数据处理请求,其中,所述下一级模块为所述当前级模块发送请求的模块。
在步骤S214中,将读数据返回至上一级模块。
在步骤S215中,将新的读数据处理请求发送至下一级模块。
当然,在向下一级模块发送新的读数据处理请求时,还需在当前级模块中确定可以更换地址的缓存单元,并进一步向下一级模块或者主存储器发送读数据处理请求。
在步骤S216中,根据写数据处理请求确定写数据处理请求所对应的当前级模块的存储空间。
在同时获取读数据和写数据时,受到数据获取速度的影响,首先发送的读数据处理请求不一定能够首先得到读数据。
按照在先得到数据对应的数据处理请求的请求类别完成数据处理请求的步骤还包括:
在步骤S217中,判断读数据的获取时间是否早于写数据的获取时间,若是,执行步骤S218,若否,执行步骤S219。
在步骤S218中,将读数据发送至上一级模块。
在步骤S219中,将写数据写入当前级模块。
这样,就可以按照写入先后顺序完成各个数据处理请求的处理。
当然,在另一种具体实施方式中,当同时获得在先请求数据和在后请求数据时,可以随机确定二者中的一者为在先得到数据,然后按照随机确定的在先得到数据对应的数据请求类别,处理数据处理请求。
下面,再以确定所述读数据处理请求为所述在后数据处理请求,所述写数据处理请求为所述在先数据处理请求为例,对详细过程进行说明。
参考图5,图5是本申请实施例提供的数据处理方法的再一可选流程图。如图中所示该流程可以包括如下步骤。
在步骤S310中,接收各个读数据处理请求和各个写数据处理请求。
具体可以为高速缓冲存储器中的某个当前级模块接收数据处理请求,包括读数据处理请求和写数据处理请求。
步骤S310的具体内容请参考图3b关于步骤S150的部分描述,在此不再赘述。
在步骤S311中,读数据处理请求队列接收各个读数据处理请求,写数据处理请求类别队列接收各个写数据处理请求。
步骤S311的具体内容请参考图3b关于步骤S151的部分描述,在此不再赘述。
在步骤S312中,根据位于读数据处理请求队列和写数据处理请求队列队首的数据处理请求,确定写数据处理请求为在先数据处理请求。
在步骤S313中,根据写数据处理请求确定写数据对应的当前级模块的存储空间。
当然,这里的当前级模块同样指的是设置有多个不同类别的请求队列的设备,在一些实施例中,当前级模块可以为一级缓存,在另一些实施例中,当前级模块可以为二级缓存。
容易理解的是,不论在接收写数据处理请求的当下,当前级模块中是否存在写数据对应的存储空间,都需要确定下对应的存储空间,如果在接收数据处理请求时就有,那么可以直接确定,如果没有,那么需要通过替换的方式或者占用空闲的存储单元的方式进行确定。
在步骤S314中,判断是否获取到写数据,若是,执行步骤S315,若否,执行步骤S316。
在步骤S315中,将写数据写入当前级模块的存储空间。
在步骤S316中,根据读数据处理请求确定读数据对应的当前级模块的存储空间,并获取读数据处理请求的读数据。
然后,进一步基于获取到的两类请求的对应的数据的时间,来决定执行哪一个数据处理请求,具体的:
在步骤S317中,判断读数据的获取时间是否早于或等于写数据的获取时间,若是,则执行步骤S318,若否,则执行步骤S319。
在步骤S318中,将读数据发送至上一级模块。
在步骤S319中,将写数据写入当前级模块的存储空间中。
这样,就可以按照写入先后顺序完成各个数据处理请求的处理。
当同时获得在先请求数据和在后请求数据时,随机确定二者中的一者为在先得到数据,然后按照随机确定的在先得到数据对应的数据请求类别,处理数据处理请求。
这样,无论判断的在先数据处理请求是哪一个,其处理方式均为按照数据处理请求的接收到的先后顺序逐个进行处理,且能够在处理的在先请求数据未能继续处理完成的情况下,处理在后数据处理请求,做到同时处理不同队列中的数据处理请求,从而可以在保证数据处理结果的正确性的情况下,提高数据处理的整体效率。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
为了解决前述问题,本申请实施例还提供一种数据处理装置,该装置可以认为是实现本申请实施例提供的数据处理方法所需设置的功能模块。下文描述的装置内容可与上文描述的方法内容相互对应参照。
作为一种可选实现中,图6示出了本申请实施例提供的数据处理装置的可选框图。如图6所示,该装置可以包括:
接收模块610,适于接收各个数据处理请求,并根据各个数据处理请求的请求类别,将各个数据处理请求分别写入到对应的请求类别队列中,且各个数据处理请求的请求类别的数量为至少2种。
在进一步的实施例中,在请求类别包括读数据处理请求和写数据处理请求,请求类别队列包括读数据处理请求队列和写数据处理请求队列时,该模块还适于将各个读数据处理请求写入读数据处理请求队列,将各个所述写数据处理请求写入所述写数据处理请求队列。
请求确定模块611,用于根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,获取在先请求数据,其中,所述当前级模块为接收各个所述数据处理请求的模块。
处理模块612,适于当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
在进一步的实施例中,当请求确定模块611确定读数据处理请求为在先数据处理请求,写数据处理请求为在后数据处理请求时,处理模块612还可以进一步用于:根据读数据处理请求确定读数据对应的当前级模块的存储空间。
根据上述进一步的实施例中的内容,其具体实现还可以包括:当在存储空间未获取到读数据时,处理模块612还可以用于:根据写数据处理请求确定写数据处理请求所对应的当前级模块的存储空间,并获取写数据处理请求的写数据。
在一些实施例中,处理模块612还可以适于当在当前存储空间获取到读数据时,将读数据返回至上一级模块,其中,上一级模块为发送各个数据处理请求的模块,具体的,上一级模块可以为高性能计算处理器,也可以为一级缓存。
在另一些实施例中,处理模块612还适于当在当前存储空间未获得读数据时,将新的读数据处理请求发送至下一级模块,其中,下一级模块可以为二级缓存,三级缓存,或主存储器130。
获取到各个数据处理请求对应的数据后,处理模块612还适于:当确定在先得到数据为读数据时,将读数据发送至所述上一级模块;当确定在先得到数据为写数据时,将写数据写入对应的当前级模块的存储空间。
当前级模块,指的是设置有多个不同类别的请求队列的设备,可以是一级缓存,也可以是二级缓存。
当然,在另一种实施方式中,当获得的各个数据处理请求对应的数据的时间相等时,处理模块612还可以适于:随机确定一个数据为在先得到数据,并处理该数据对应的数据处理请求。
具体的,当随机确定读数据为在先得到数据时,处理模块612适于根据读数据对应的读数据处理请求,完成对读数据处理请求的处理,将读数据返回至上一级模块。
当随机确定写数据为在先得到数据时,处理模块612适于根据写数据对应的写数据处理请求,完成对写数据处理请求的处理,将写数据写入当前级模块。
上述使用情况为,确定读数据处理请求为在先数据处理请求,写数据处理请求为在后数据处理请求。在另一些实施例中,确定模块611还适于确定写数据处理请求为在先得到数据处理请求,读数据处理请求为在后得到数据处理请求,这种情况下,处理模块612还适用于:根据写数据处理请求确定写数据对应的当前级模块的存储空间;
当未获取到写数据时,根据读数据处理请求确定读数据处理请求所对应的当前级模块的存储空间,并获取读数据处理请求的读数据。
当获取到各个数据处理请求对应的数据后,处理模块612还可以根据在先得到数据,处理在先得到数据对应的数据处理请求。
具体的,当在先得到数据为读数据时,处理模块612适于将读数据返回至上一级模块,上一级模块可以为一级缓存,也可以为高性能计算处理器。
当在先得到数据为写数据时,处理模块612适于将写数据写入到对应的当前级模块的存储空间,当前级模块可以为二级缓存,也可以为一级缓存。
当同时获得读数据和写数据时,随机确定一个数据为在先得到数据,然后处理模块612可以根据随机确定的数据对应的数据处理请求类别,完成对应的数据处理请求的处理。
这样,可以通过处理模块612实现对接收到的不同类别的数据处理请求,按照各个类别分别放到不同的请求队列中,分别进行处理,并且同一队列中的数据处理请求的处理是按照先后顺序处理的,不同队列中的数据处理请求可以同时处理,可见,处理模块612可以在保证数据处理结果正确性的情况下,有效提高数据处理的效率。
本申请实施例还提供一种高速缓冲存储器120,适于实现本申请实施例提供的数据处理的方法。
在一些实施例中,高速缓冲存储器120可以包括上述的各个功能模块,用于实现本申请实施例提供的数据处理方法,可以结合图1,参考图7,图7示出了本申请实施例提供的高速缓冲存储器的结构示意图。
如图中所示,包括接收数据处理请求的接收模块610,确定在先数据处理请求的请求确定模块611,处理各个数据处理请求的处理模块612。
本申请实施例提供的高速缓冲存储器120在具体设计时,可以将接收各个不同类别的数据处理请求的请求队列提前设置于高速缓冲存储器120,这样,当高速缓冲存储器120在处理各个数据处理请求时,就可以直接将各个数据处理请求按照类别分别放在不同的请求类别队列中,方便后续的处理。
本申请实施例还提供一种电子设备,该电子设备可以包括本申请实施例上述提供的高速缓冲存储器120。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (19)
1.一种数据处理方法,其特征在于,包括:
接收各个数据处理请求,并根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中,各个所述数据处理请求的请求类别的数量为至少2种;
根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,获取在先请求数据,其中,所述当前级模块为接收各个所述数据处理请求的模块;当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
2.如权利要求1所述的数据处理方法,其特征在于,所述请求类别包括读数据处理请求和写数据处理请求,所述请求类别队列包括读数据处理请求队列和写数据处理请求队列;
所述根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中的步骤,包括:
将各个所述读数据处理请求写入所述读数据处理请求队列,将各个所述写数据处理请求写入所述写数据处理请求队列。
3.如权利要求2所述的数据处理方法,其特征在于,当确定所述读数据处理请求为所述在先数据处理请求,所述写数据处理请求为所述在后数据处理请求时,所述根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间的步骤包括:
根据所述读数据处理请求确定读数据对应的当前级模块的存储空间;
所述当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据的步骤包括:
当在所述存储空间未获取到所述读数据时,根据所述写数据处理请求确定所述写数据处理请求所对应的当前级模块的存储空间,并获取所述写数据处理请求的写数据。
4.如权利要求3所述的数据处理方法,其特征在于,所述根据所述读数据处理请求确定读数据对应的当前级模块的存储空间的步骤之后,还包括:
当在所述存储空间获取到所述读数据时,将所述读数据返回至上一级模块,其中,所述上一级模块为发送各个所述数据处理请求的模块。
5.如权利要求3所述的数据处理方法,其特征在于,所述根据所述读数据处理请求确定读数据对应的当前级模块的存储空间的步骤之后,还包括:
当在所述存储空间未获取到所述读数据时,向下一级模块发送新的读数据处理请求,其中,所述下一级模块为所述当前级模块发送请求的模块。
6.如权利要求3所述的数据处理方法,其特征在于,所述当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求的步骤,包括:
当所述在先得到数据为所述读数据时,将所述读数据发送至上一级模块,所述上一级模块为发送各个所述数据处理请求的模块;或者,
当所述在先得到数据为所述写数据时,将所述写数据写入所述当前级模块的存储空间。
7.如权利要求6所述的数据处理方法,其特征在于,所述得到所述在先请求数据和所述在后请求数据二者中的在先得到数据的步骤,包括:
当同时得到所述在先请求数据和所述在后请求数据时,随机确定二者中的一者为所述在先得到数据。
8.如权利要求2所述的数据处理方法,其特征在于,当确定所述写数据处理请求为所述在先数据处理请求,所述读数据处理请求为所述在后数据处理请求时,
所述根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间的步骤包括:
根据所述写数据处理请求确定写数据对应的当前级模块的存储空间;
所述当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据的步骤包括:
当未获取到所述写数据时,根据所述读数据处理请求确定所述读数据处理请求所对应的当前级模块的存储空间,并获取所述读数据处理请求的读数据。
9.如权利要求1-8所述的数据处理方法,其特征在于,所述当前级模块包括一级缓存或二级缓存。
10.一种数据处理装置,其特征在于,包括:
接收模块,适于接收各个所述数据处理请求,并根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中,且各个所述数据处理请求的请求类别的数量为至少2种;请求确定模块,用于根据位于各个所述请求类别队列队首的所述数据处理请求的写入先后顺序,确定在先数据处理请求和在后数据处理请求,根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,获取在先请求数据,其中,所述当前级模块为接收各个所述数据处理请求的模块;
处理模块,适于当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,当得到所述在先请求数据和所述在后请求数据二者中的在先得到数据时,按照所述在先得到数据对应的所述数据处理请求的请求类别完成所述数据处理请求。
11.如权利要求10所述的数据处理装置,其特征在于,所述请求类别包括读数据处理请求和写数据处理请求,所述请求类别队列包括读数据处理请求队列和写数据处理请求队列,所述接收模块,适于根据各个所述数据处理请求的所述请求类别,将各个所述数据处理请求分别写入到对应的请求类别队列中,包括:
将各个所述读数据处理请求写入所述读数据处理请求队列,将各个所述写数据处理请求写入所述写数据处理请求队列。
12.如权利要求11所述的数据处理装置,其特征在于,当所述请求确定模块确定所述读数据处理请求为所述在先数据处理请求,所述写数据处理请求为所述在后数据处理请求时,所述处理模块,适于根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据包括:
根据所述读数据处理请求确定读数据对应的当前级模块的存储空间;当在所述存储空间未获取到所述读数据时,根据所述写数据处理请求确定所述写数据处理请求所对应的当前级模块的存储空间,并获取所述写数据处理请求的写数据。
13.如权利要求12所述的数据处理装置,其特征在于,所述处理模块,还适于当所述存储空间获取到所述读数据时,将所述读数据返回至上一级模块,其中,所述上一级模块为发送各个所述数据处理请求的模块。
14.如权利要求12所述的数据处理装置,其特征在于,所述处理模块,还适于当所述存储空间未获得所述读数据时,将新的读数据处理请求发送至下一级模块,所述下一级模块为所述当前级模块发送请求的模块。
15.如权利要求12所述的数据处理装置,其特征在于,所述处理模块,还适于当所述在先得到数据为所述读数据时,将所述读数据发送至上一级模块,所述上一级模块为发送各个所述数据处理请求的模块;
当所述在先得到数据为所述写数据时,将所述写数据写入对应的所述当前级模块的存储空间。
16.如权利要求15所述的数据处理装置,其特征在于,所述处理模块,适于当同时获取所述在先请求数据和所述在后请求数据时,选择任一数据为在先得到数据。
17.如权利要求11所述的数据处理装置,其特征在于,当所述请求确定模块确定所述写数据处理请求为所述在先数据处理请求,所述读数据处理请求为所述在后数据处理请求时,所述处理模块,还适于根据所述在先数据处理请求确定在先请求数据所对应的当前级模块的存储空间,当未获取到所述在先请求数据时,根据所述在后数据处理请求确定在后请求数据所对应的当前级模块的存储空间,获取在后请求数据,包括:
根据所述写数据处理请求确定写数据对应的当前级模块的存储空间;当未获取到所述写数据时,根据所述读数据处理请求确定所述读数据处理请求所对应的当前级模块的存储空间,并获取所述读数据处理请求的读数据。
18.一种高速缓冲存储器,其特征在于,适于执行实现如权利要求1-9任一项所述的数据处理方法。
19.一种电子设备,其特征在于,包括如权利要求18所述的高速缓冲存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111361597.9A CN114090468A (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111361597.9A CN114090468A (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090468A true CN114090468A (zh) | 2022-02-25 |
Family
ID=80301286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111361597.9A Pending CN114090468A (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090468A (zh) |
-
2021
- 2021-11-17 CN CN202111361597.9A patent/CN114090468A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7047322B1 (en) | System and method for performing conflict resolution and flow control in a multiprocessor system | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
US6915396B2 (en) | Fast priority determination circuit with rotating priority | |
KR20010007007A (ko) | 판독/기록 일관성을 갖는 버스 사용의 최적화 방법 및 장치 | |
EP3657337A1 (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
US5313602A (en) | Multiprocessor system and method of control over order of transfer of data between buffer storages | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
EP3872629B1 (en) | Method and apparatus for executing instructions, device, and computer readable storage medium | |
JPH05274252A (ja) | コンピュータシステムにおけるトランザクション実行方法 | |
CN114036077A (zh) | 数据处理方法及相关装置 | |
CN106201918A (zh) | 一种基于大数据量和大规模缓存快速释放的方法和系统 | |
JPH07325760A (ja) | 情報処理システムにおける記憶制御方法および記憶制御装置 | |
CN116701246A (zh) | 一种提升缓存带宽的方法、装置、设备及存储介质 | |
JP3814521B2 (ja) | データ処理方法および装置 | |
US6263408B1 (en) | Method and apparatus for implementing automatic cache variable update | |
CN114090468A (zh) | 一种数据处理方法及相关装置 | |
US20100058024A1 (en) | Data Transfer Apparatus, Data Transfer Method And Processor | |
CN114063923A (zh) | 数据读取方法、装置、处理器及电子设备 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US20140173225A1 (en) | Reducing memory access time in parallel processors | |
CN114091384A (zh) | 数据处理电路及人工智能芯片、数据处理方法和装置 | |
US7421536B2 (en) | Access control method, disk control unit and storage apparatus | |
US7085887B2 (en) | Processor and processor method of operation | |
GB2037466A (en) | Computer with cache memory | |
JP3564343B2 (ja) | キャッシュバイパス時のデータ転送装置と方法 |
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 |