CN113986778A - 一种数据处理方法、共享缓存、芯片系统及电子设备 - Google Patents
一种数据处理方法、共享缓存、芯片系统及电子设备 Download PDFInfo
- Publication number
- CN113986778A CN113986778A CN202111363263.5A CN202111363263A CN113986778A CN 113986778 A CN113986778 A CN 113986778A CN 202111363263 A CN202111363263 A CN 202111363263A CN 113986778 A CN113986778 A CN 113986778A
- Authority
- CN
- China
- Prior art keywords
- address
- way
- data
- target
- processing
- 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
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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供一种数据处理方法、共享缓存、芯片系统及电子设备,其中方法包括:获取第一处理器核的数据处理指令,所述数据处理指令包括目标地址;若所述目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址;根据命中判断结果,基于所述第一way执行所述数据处理指令;其中,共享缓存包括数据缓存区,所述数据缓存区至少包括第一way和第二way;所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据。本申请实施例能够整体上提升处理器核的数据处理效率。
Description
技术领域
本申请实施例涉及处理器技术领域,具体涉及一种数据处理方法、共享缓存、芯片系统及电子设备。
背景技术
处理器核作为芯片系统的运算、控制核心,是芯片系统中信息处理、程序运行的最终执行单元。在现代计算机体系结构中,处理器核一般通过缓存(cache)与内存实现数据交互;其中,缓存作为处理器核与内存之间的存储器,缓存中相对少量的存储单位可映射内存中相对大量的存储单位,从而加速处理器核的数据处理效率。
在多核芯片系统中,每个处理器核具有各自私有的私有缓存,并且多个处理器核具有共享的共享缓存。基于共享缓存由多个处理器核共享的属性,共享缓存如何合理的处理不同处理器核的数据处理指令,以整体提升处理器核的数据处理效率,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种数据处理方法、共享缓存、芯片系统及电子设备,以针对不同处理器核之间的不同处理地址,实现数据处理指令的合理处理,从而整体提升处理器核的数据处理效率。
为实现上述目的,本申请实施例提供如下技术方案。
第一方面,本申请实施例提供一种数据处理方法,包括:
获取第一处理器核的数据处理指令,所述数据处理指令包括目标地址;
若所述目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址;
根据命中判断结果,基于所述第一way执行所述数据处理指令;
其中,共享缓存包括数据缓存区,所述数据缓存区至少包括第一way和第二way;所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据。
第二方面,本申请实施例提供一种数据处理方法,包括:
获取处理器核的数据处理指令,所述数据处理指令携带目标地址以及目标标志;
根据所述目标标志的数值,确定目标地址对应的目标way;
判断所述目标地址是否在所述目标way当前缓存的数据的地址中命中;
根据命中判断结果,基于所述目标way执行所述数据处理指令;
其中,共享缓存包括数据缓存区,所述数据缓存区包括多个way,各个way缓存数据的处理地址不同。
第三方面,本申请实施例提供一种共享缓存,包括:
数据缓存区,所述数据缓存区至少包括第一way和第二way;其中,所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据;
命中判断逻辑,用于在所述共享缓存获取第一处理器核的数据处理指令之后,若所述数据处理指令携带的目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址;
执行逻辑,用于根据所述命中判断逻辑的命中判断结果,基于所述第一way执行所述数据处理指令。
第四方面,本申请实施例提供一种芯片系统,所述芯片系统包括多个处理器核,以及所述多个处理器核共享的共享缓存,所述共享缓存如上述第三方面所述的共享缓存。
第五方面,本申请实施例提供一种电子设备,包括如上述第四方面所述的芯片系统。
本申请实施例在数据缓存区至少配置第一way和第二way的情况下,如果第一处理器核的数据处理指令中携带的目标地址,至少与第二处理器核的处理地址不同,则共享缓存根据目标地址在第一way对应的第一地址的命中判断结果,只是基于第一way执行数据处理指令,而不会影响用于缓存共同处理地址对应的数据的第二way。因此不同处理器核之间的不同处理地址在共享缓存未命中,并不会踢出第二way中缓存的存储单位,而只是会影响该不同处理地址对应的way中缓存的存储单位;也就是说,不同处理地址的数据处理并不会影响共同处理地址的数据处理。本申请实施例能够避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,进而整体上提升处理器核的数据处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1A为芯片系统的结构示意图。
图1B为芯片系统的另一结构示意图。
图2A为共享缓存的结构示意图。
图2B为共享缓存的另一结构示意图。
图2C为数据处理方法的流程图。
图3A为共享缓存的再一结构示意图。
图3B为数据处理方法的另一流程图。
图4A为共享缓存的又一结构示意图。
图4B为数据处理方法的再一流程图。
图5为数据处理方法的又一流程图。
图6为数据处理方法的又另一流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1A示例性的示出了芯片系统100的结构示意图。如图1A所示,芯片系统100可以包括:多个处理器核110;设置于每个处理器核110内部的私有缓存120;设置于多个处理器核110外部的共享缓存130;内存控制器140以及内存150;其中,共享缓存130通过内存控制器140与内存150进行数据交互。
处理器核110是芯片系统的运算、控制核心。处理器核例如CPU(CentralProcessing Unit,中央处理器)核、GPU(Graphics Processing Unit,图形处理器)核、NPU(嵌入式神经网络处理器)核、TPU(张量处理单元)、AI(人工智能)核等。
缓存是在处理器核和内存之间的存取速度极快的存储器,用于通过相对少量的存储单位映射内存中相对大量的存储单位。缓存一般具有多级结构,其中,上级缓存相对少量的存储单位可映射下级缓存相对大量的存储单位,末级缓存(一般是共享缓存)相对少量的存储单位可映射内存相对大量的存储单位;并且,上级缓存拥有比下级缓存更快的数据存取速度,但上级缓存的容量相比下级缓存更小。基于此,处理器核可从数据存取速度最快,但容量最小的最上级缓存开始,通过逐级处理多级缓存和内存,来实现数据处理。需要说明的是,上级缓存相比于下级缓存更靠近处理器核。
在一些实施例中,多级缓存中的至少一级缓存可分别设置于每个处理器核内,以作为每个处理器核的私有缓存;多级缓存中剩余的至少一级缓存可设置于多个处理器核的外部,以作为多个处理器核的共享缓存。例如,以二级缓存结构为例,二级缓存结构分为一级(L1)缓存和二级(L2)缓存,此时,每个处理器核内设置的私有缓存可以是L1缓存,多个处理器核外部设置的共享缓存可以是L2缓存。又例如,以三级缓存结构为例,三级缓存结构分为L1缓存、L2缓存和三级(L3)缓存,此时,每个处理器核内设置的私有缓存可以是L1缓存,多个处理器核外部设置的共享缓存可以是L2缓存和L3缓存,例如多个处理器核外部共用L2缓存,该L2缓存再对应L3缓存。当然,本申请实施例也可支持多于三级的缓存结构,多于三级的缓存结构中至少一级缓存设置于每个处理器核内,以作为私有缓存,而剩余的至少一级缓存设置于多个处理器核的外部,以作为共享缓存。
作为一种示例,图1B示例性的示出了芯片系统100的另一结构示意图。图1B可以认为是图1A的一种细化结构示例。如图1B所示,芯片系统100可以包括:
处理器核111至处理器核11n,处理器核111至处理器核11n可以认为是数量为n的多个处理器核,n的具体数值可根据实际情况设置,本申请实施例并不设限;
分别设置于处理器核111至处理器核11n内部的L1缓存121至L1缓存12n,L1缓存可以认为是图1A所示私有缓存120的一种可选形式,其中,一个处理器核内部设置一个L1缓存,例如处理器核111内部设置L1缓存121,处理器核112内部设置L1缓存122,以此类推;
设置于处理器核111至处理器核11n外部的L2缓存131,L2缓存131可以认为是图1A所示共享缓存130的一种可选形式;L2缓存131可通过内存控制器140与内存150进行数据交互。
基于图1B所示芯片系统100,当处理器核需要读取数据时,处理器核先从L1缓存中查找数据,如果在L1缓存中查找到数据,则从L1缓存中读取数据;如果在L1缓存中未查找到数据,则在多个处理器核共享的L2缓存中查找数据;如果在L2缓存中查找到数据,则从L2缓存中读取数据,此时L2缓存中被读取的数据可被替换到L1缓存,并由L1缓存将数据反馈给处理器核;如果在L2缓存中仍未查找到数据,则从内存查找并读取数据,此时,内存中被读取的数据可替换到L2缓存,再由L2缓存替换到L1缓存,从而由L1缓存将数据反馈给处理器核。处理器核写数据的过程类似,也是逐级的通过L1缓存、L2缓存来实现向内存写数据。
需要说明的是,尽管上述芯片系统的结构仅示出了处理器核、私有缓存(例如L1缓存)、共享缓存(例如L2缓存)、内存控制器和内存,但是在具体实施过程中,芯片系统还可以包括实现正常运行所必需的其他组件,此处不再展开。本申请实施例所指的芯片系统可以例如SOC(System on Chip,系统级芯片)等集成电路芯片系统。
在芯片系统具有多个处理器核的情况下,多个处理器核具有大部分共同的处理地址和小部分不同的处理地址。本申请实施例所指的处理地址例如访问地址。为便于说明,后续将多个处理器核共同的处理地址简称为共同处理地址,不同处理器核之间不同的处理地址简称为不同处理地址;其中,不同处理地址涉及多个处理器核整体不同的处理地址、任意至少两个处理器核之间不同的处理地址等,该任意至少两个处理器核可以是多个处理器核中的部分处理器核。
由于多个处理器核共享使用共享缓存,因此共享缓存需要满足多个处理器核的共同处理地址的数据处理需求,也需要满足不同处理器核之间不同处理地址的数据处理需求。当某个处理器核使用不同处理地址读取数据时,如果该不同处理地址未在共享缓存中命中,则共享缓存可能将已缓存的共同处理地址对应的数据踢出,然后从内存替换该不同处理地址相应的数据。上述处理方式将导致处理器核后续读取共同处理地址的数据时,共同处理地址在共享缓存中命中的概率降低,致使共享缓存可能需要从内存中再替换回共同处理地址的数据。然而,不同处理地址在多个处理器核总体的处理地址中仅占一小部分,而共同处理地址在多个处理器核总体的处理地址中占据大部分,上述处理方式将使得处理器核整体的数据处理效率降低。
在一些实施例中,图1B所示的处理器核111至处理器核11n具有大部分共同的处理地址,但针对处理器核111,处理器核111用于数据处理的小部分处理地址可能与其他处理器核存在不同。在一个示例中,假设处理器核111的处理地址包括处理地址10至1a以及处理地址20至2b,处理地址10至1a为共同处理地址,处理地址20至2b为不同处理地址,并且处理地址10至1a的地址数量大于处理地址20至2b的地址数量。需要说明的是,共同处理地址可能并不是连续的,此处为便于示例,仅以处理地址10至1a为连续地址进行示例,同理,不同处理地址也可能并不是连续的,此处仅以处理地址20至2b为连续地址进行示例。
在上述示例中,当处理器核111使用处理地址20读取数据时,如果处理地址20未在共享缓存中命中,共享缓存基于替换算法,可能将处理地址10的数据踢出,然后从内存中替换回处理地址20的数据。然而,处理地址20作为不同处理地址,不同处理地址在处理器核111至处理器核11n的总体处理地址中占比非常小,例如处理地址20仅可能只是处理器核111使用而其他处理器核并不使用;而处理地址10作为共同处理地址,可能被多个处理器核用于数据处理(甚至多个处理器核中的部分或者全部处理器核同时使用处理地址10进行数据处理),因此如果在处理地址20未在共享缓存中命中时,通过踢出处理地址10的数据来从内存中替换处理地址20的数据,这极可能导致后续多个处理器核使用处理地址10读取数据时,由于处理地址10未在共享缓存中命中,而降低处理器核整体的数据处理效率。在一些实施例中,共享缓存与内存进行数据替换的替换算法例如LRU(Least Recently Used,最近最少使用)算法、LFU(Lease Frequently Used,最不经常使用)算法等,本申请实施例对此并不设限。
基于上述描述可以看出,共享缓存的上述数据处理方式存在数据处理效率的损失问题,即不同处理地址在共享缓存中未命中,可能影响共同处理地址的数据处理效率,从而致使处理器核整体的数据处理效率降低。基于此,共享缓存需要设置合理的数据处理方案,以避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,进而整体上提升处理器核的数据处理效率。
图2A示例性的示出了共享缓存130的结构示意图。如图2A所示,共享缓存130可以包括:数据缓存区200;数据缓存区200可以包括多个set(缓存集)210;每个set可以设置多个way(缓存行)220;每个way中可以设置有用于具体缓存数据的一个或多个存储单位。在一些实施例中,一个set可以设置2的整数次方个way,例如,一个set中设置2、4、8、16等数量的way。在一些实施例中,数据缓存区可称为cache ram(缓存随机存取存储器)。
内存中的存储单位可与共享缓存中的set建立映射关系,例如将内存中相对大量的存储单位映射到set的way中相对少量的存储单位。由于共享缓存中多个set整体的存储单位总数小于内存的存储单位总数,因此内存的存储单位中的数据并无法完全写入共享缓存中的set,这就涉及到共享缓存与内存之间的存储单位替换(即共享缓存与内存之间的数据替换)。
在一些实施例中,处理器核在读数据时,如果读地址与set中缓存的数据的地址相同,则共享缓存可将set中该读地址相应的数据,按照缓存层级逐级的返回给处理器核。如果读地址与set中缓存的数据的地址不同,则共享缓存需要根据替换算法,将内存中读地址对应的存储单位替换到所映射的set中,同时,共享缓存需要从该set中踢出一个存储单位。例如,对于内存中读地址对应的存储单位在共享缓存所映射的set,需要将该set中一个way的存储单位替换为内存中该读地址对应的存储单位,以实现内存中读地址相应的数据被写入共享缓存中。
在图2A所示共享缓存的结构基础上,针对不同处理器核之间的不同处理地址,如果该不同处理地址与set中缓存的数据的地址不同,则共享缓存有可能将共同处理地址所对应的way,从set中替换到内存中;这导致后续处理器核在读取该共同处理地址的数据时,共享缓存需要再将内存中该共同处理地址对应的存储单位,替换回映射的set中,从而导致处理器核整体的数据处理效率存在损失。
基于此,本申请实施例可对共享缓存中的way进行配置上的改进,通过将共同处理地址映射的way与不同处理地址映射的way进行区分,避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生。图2B示例性的示出了共享缓存130的另一结构示意图。如图2B所示,共享缓存130可以包括:数据缓存区200;数据缓存区200可以包括:多个第一way 230和多个第二way240。
在本申请实施例中,第一way可以映射不同处理地址在内存对应的存储单位。第二way可以映射共同处理地址在内存对应的存储单位。在本申请实施例中,不同处理地址的数量小于共同处理地址的数量,因此第一way的数量可以小于第二way的数量,例如第一way在所有way中占第一比例,且第一比例小于1/2(比如,第一比例为1/4等)。
在一些实施例中,针对数据缓存区中的每个set,set中的way可以分为第一way与第二way。也就是说,一个set的小部分way为第一way,而剩余的大部分way为第二way。作为一个示例,一个set中可以设置8个way,其中2个way为第一way,6个way为第二way。例如,数据缓存区可以具有1024个set,每个set具有8个way,一个set中的8个way可分为第一way和第二way,比如第一way为set中的way0至way1,第二way为set中的way2至way7。
在一些实施例中,本申请实施例可通过软件配置方式,对数据缓存区中的way配置第一way和第二way。作为可选实现,本申请实施例可在共享缓存中设置比特(bit)数与way总数对应的寄存器,并且寄存器的一个bit关联一个way。从而,本申请实施例可设置第一way对应的第一比特数值,以及第二way对应的第二比特数值,如果寄存器的一个bit的数值为第一比特数值,则该bit关联的way为第一way,如果寄存器的一个bit的数值为第二比特数值,则该bit关联的way为第二way,以此方式通过配置寄存器中各个bit的数值,来配置各个bit关联的way是第一way还是第二way。在一个示例中,假设set中的way总数为8,则本申请实施例可在共享缓存中设置8bit的寄存器,由寄存器的一个bit关联一个way,并通过调整各个bit的数值,使得所关联的way在第一way和第二way间调整。
基于图2B所示共享缓存的结构,图2C示出了本申请实施例提供的数据处理方法的流程图。该方法流程可由共享缓存执行实现。参照图2C,该方法流程可以包括如下步骤。
在步骤S210中,获取第一处理器核的数据处理指令,所述数据处理指令携带目标地址。
第一处理器核可以是多个处理器核中当前发起数据处理指令的任一处理器核。例如图1B所示的处理器核111至处理器核11n中的任一处理器核。第一处理器核的数据处理指令可以携带第一处理器核当前处理数据(例如当前访问数据)的目标地址。在一些实施例中,如果第一处理器核当前需要读数据,则所述数据处理指令可以是数据读指令,相应的,所述目标地址可以是目标读地址。在另一些实施例中,如果第一处理器核当前需要写数据,则所述数据处理指令可以是数据写指令,相应的,所述目标地址可以是数据写地址。
目标地址未在第一处理器核的私有缓存中命中时,共享缓存可获取到第一处理器核的数据处理指令。例如以图1B所示结构为例,处理器核111在当前发起数据处理指令(即处理器核111当前成为第一处理器核),如果目标地址未在L1缓存121中命中,则处理器核111的数据处理指令可传递到L2缓存131。在进一步的示例说明中,如果处理器核111当前发起的是数据读指令,则数据读指令的目标读地址未在L1缓存121命中时,数据读指令可传递到L2缓存131;如果处理器核111当前发起的是数据写指令,则数据写指令的目标写地址未在L1缓存121中命中,数据写指令可传递到L2缓存131。
在步骤S211中,判断所述目标地址是属于多个处理器核的不同处理地址还是共同处理地址。
本申请实施例在将way配置为第一way和第二way的情况下,第一way可以映射多个处理器核的不同处理地址在内存对应的存储单位,基于数据是以存储单位进行存储,因此第一way可以用于缓存多个处理器核的不同处理地址对应的数据;同时,第二way可以映射多个处理器核的共同处理地址在内存对应的存储单位,即第二way可以用于缓存多个处理器核的共同处理地址对应的数据。
基于此,目标地址如果是多个处理器核的不同处理地址,则需要与第一way当前缓存的数据的地址进行命中判断,也就是说,目标地址如果是多个处理器核的不同处理地址,则需要判断第一way缓存的存储单位中是否具有所述目标地址对应的存储单位。目标地址如果是多个处理器核的共同处理地址,则需要与第二way当前缓存的数据的地址进行命中判断,也就是说,目标地址如果是多个处理器核的共同处理地址,则需要判断第二way缓存的存储单位中是否具有所述目标地址对应的存储单位。
基于第一way和第二way的区分,本申请实施例在获取第一处理器核的数据处理指令之后,需要判断数据处理指令中携带的目标地址是属于多个处理器核的不同处理地址还是共同处理地址。
在一些实施例中,所述数据处理指令中可以携带目标标志(目标标志可定义为ind),本申请实施例可以通过目标标志的不同数值,来判断目标地址是属于多个处理器核的不同处理地址还是共同处理地址。例如,第一处理器核在生成数据处理指令时,可基于当前需要处理的目标地址是第一处理器核与其他处理器核的共同处理地址,还是与其他处理器核的不同处理地址,来设置目标标志的不同数值。从而,第一处理器核将目标标志携带在数据处理指令中,以使得后续共享缓存可通过目标标志的数值,来判断目标地址是属于多个处理器核的不同处理地址还是共同处理地址。
在一些实施例中,由于目标标志的数值需要对应目标地址是多个处理器核的不同处理地址还是共同处理地址这两种情况,因此目标标志可以使用两个不同的数值,分别对应目标地址是多个处理器核的不同处理地址和共同处理地址。作为一种可选实现,目标标志的数值如果为第一值,则目标地址属于多个处理器核的不同处理地址,目标标志的数值如果为第二值,则目标地址属于多个处理器核的共同处理地址。例如,第一值可以为1,第二值可以为0;当然,第一值和第二值只要是两个不同的数值即可,此处仅以1、0的数值对目标标志的两个不同数值进行示例。在一个示例中,处理器核111在当前需要进行数据处理时,如果需要处理的目标地址为多个处理器核的不同处理地址,则处理器核111可生成数值为1的目标标志,并携带在数据处理指令中;如果需要处理的目标地址为多个处理器核的共同处理地址,则处理器核111可生成数值为0的目标标志,并携带在数据处理指令中。
在步骤S212中,若所述目标地址属于多个处理器核的不同处理地址,判断所述目标地址是否在第一地址中命中,所述第一地址为第一way当前缓存的数据的地址。
在步骤S211判断目标地址属于多个处理器核的不同处理地址时(例如判断目标标志的数值为第一值时),共享缓存可确定需基于第一way当前缓存的数据的地址,对目标地址进行命中判断。为便于说明,本申请实施例将第一way当前缓存的数据的地址称为第一地址。
在步骤S213中,根据命中判断结果,基于第一way执行所述数据处理指令。
在目标地址属于多个处理器核的不同处理地址,且第一way配置为缓存多个处理器核的不同处理地址对应的数据的情况下,共享缓存可根据目标地址在第一地址中是否命中的命中判断结果,来基于第一way执行所述数据处理指令。
在一些实施例中,基于步骤S212的命中判断结果,如果目标地址在第一地址中命中,则说明第一way当前缓存的存储单位中具有目标地址对应的存储单位,即第一way当前缓存有目标地址对应的数据。此时,如果数据处理指令为数据读指令,则共享缓存可将第一way当前缓存的与目标地址对应的数据(即第一way中与目标地址对应的存储单位所存储的数据),按照缓存层级逐级的返回给第一处理器核。如果数据处理指令为数据写指令,则说明第一way中与目标地址对应的存储单位已存储有数据,共享缓存可基于第一处理器核当前需要写入的写数据,对第一way中与目标地址对应的存储单位进行数据更新,进而,共享缓存可将第一way中更新写数据的与目标地址对应的存储单位,同步到内存中。
在一些实施例中,基于步骤S212的命中判断结果,如果目标地址在第一地址中未命中,则说明第一way当前缓存的存储单位中不具有目标地址对应的存储单位,即第一way当前未缓存目标地址对应的数据。此时,如果数据处理指令为数据读指令,则共享缓存可将第一way中的至少一个存储单位踢出,并将内存中与目标地址对应的存储单位替换到第一way中,从而基于第一way替换的目标地址对应的存储单位,共享缓存可将目标地址对应的数据,按照缓存层级逐级的返回给第一处理器核。如果数据处理指令为数据写指令,则共享缓存可将第一way中的至少一个存储单位踢出,并将内存中与目标地址对应的存储单位替换到第一way中,然后共享缓存基于第一处理器核的写数据,对第一way替换的与目标地址对应的存储单位进行数据更新,从而使得第一处理器核的写数据能够写入第一way中与目标地址对应的存储单位;进而,共享缓存可将第一way中更新写数据的与目标地址对应的存储单位,再同步到内存中。
可见,在目标地址属于多个处理器核的不同处理地址时,共享缓存根据目标地址在第一地址中是否命中的命中判断结果,是基于第一way执行与目标地址相应的数据读取过程,或者,执行与目标地址相应的数据写入过程。
在步骤S214中,若所述目标地址属于多个处理器核的共同处理地址,判断所述目标地址是否在第二地址中命中,所述第二地址为第二way当前缓存的数据的地址。
在步骤S211判断目标地址属于多个处理器核的共同处理地址时(例如判断目标标志的数值为第二值时),共享缓存可确定需基于第二way当前缓存的数据的地址,对目标地址进行命中判断。为便于说明,本申请实施例将第二way当前缓存的数据的地址称为第二地址。
在步骤S215中,根据命中判断结果,基于第二way执行所述数据处理指令。
在目标地址属于多个处理器核的共同处理地址,且第二way配置为缓存多个处理器核的共同处理地址对应的数据的情况下,目标地址对应的数据处理过程可基于第二way执行实现。也就是说,在目标地址属于多个处理器核的共同处理地址时,共享缓存基于目标地址在第二地址中是否命中的命中判断结果,是基于第二way执行与目标地址相应的数据读取过程,或者,执行与目标地址相应的数据写入过程。
本申请实施例在将数据缓存区中的way配置为第一way和第二way的情况下,第一way可用于缓存多个处理器核的不同处理地址对应的数据,第二way可用于缓存多个处理器核的共同处理地址对应的数据;从而针对第一处理器核的数据处理指令,如果数据处理指令中携带的目标地址为多个处理器核的不同处理地址,则共享缓存可基于第一way当前缓存的数据对应的第一地址,对目标地址进行命中判断;进而根据命中判断结果,共享缓存可基于第一way执行数据处理指令,以实现第一处理器核的数据处理过程。
本申请实施例在配置第一way和第二way的情况下,如果数据处理指令的目标地址为多个处理器核的不同处理地址,共享缓存基于目标地址在第一地址的命中判断结果,只是基于第一way执行数据处理指令,而不会影响第二way。可见,不同处理地址在共享缓存未命中,并不会踢出第二way中缓存的存储单位,而只会影响第一way中缓存的存储单位;也就是说,不同处理地址的数据处理并不会影响共同处理地址的数据处理,因此本申请实施例能够避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,进而整体上提升处理器核的数据处理效率。
在进一步的一些实施例中,共享缓存可以进一步设置地址索引区,以存储数据缓存区中当前缓存的数据对应的地址的tag(标签),从而目标地址可基于地址索引区实现命中判断。图3A示例性的示出了共享缓存130的再一结构示意图。结合图2B和图3A所示,共享缓存130可以包括:地址索引区310、命中判断逻辑320、执行逻辑330和数据缓存区200;其中,数据缓存区200的结构可结合图2B所示。
地址索引区310可以用于存储数据缓存区200中当前缓存的数据对应的地址的tag。在本申请实施例将数据缓存区中的way配置为第一way和第二way,且第一way当前缓存的数据对应的地址为第一地址,第二way当前缓存的数据对应的地址为第二地址的情况下,地址索引区310具体可以用于存储第一地址的tag和第二地址的tag。
在一些实施例中,tag可以是内存地址(处理地址)的高位地址信息,用于校验对应的way中是否具有处理器核要处理的存储单位。例如,第一地址的tag可以用于检验第一way中是否具有处理器核要处理的存储单位,第二地址的tag可以用于校验第二way中是否具有处理器核要处理的存储单位。在进一步的一些实施例中,way除设置多个用于缓存数据的存储单位外,还可设置存储单位的地址对应的tag;从而,地址索引区可以汇总多个way中设置的tag,以实现存储数据缓存区中当前缓存的数据对应的地址的tag。在一些实施例中,基于数据缓存区的way配置为第一way和第二way,地址索引区可以分区域存储第一way对应的第一地址的tag,第二way对应的第二地址的tag。
在一些实施例中,地址索引区也可称为tag ram(存储tag的随机存储器)。
命中判断逻辑320是共享缓存中设置的用于对目标地址进行命中判断的逻辑单元。在本申请实施例中,如果目标地址属于多个处理器核的不同处理地址,则命中判断逻辑可基于地址索引区中存储的第一地址的tag,对目标地址进行命中判断;如果目标地址属于多个处理器核的共同处理地址,则命中判断逻辑可基于地址索引区中存储的第二地址的tag,对目标地址进行命中判断。
在一些实施例中,结合图3A所示,命中判断逻辑320可基于数据处理指令中携带的目标标志的数值,确定是使用地址索引区310存储的第一地址的tag还是第二地址的tag,对目标地址进行命中判断。在一种可选实现中,如果目标标志的数值为第一值(例如1),则目标地址属于多个处理器核的不同处理地址,命中判断逻辑320可使用地址索引区310存储的第一地址的tag,对目标地址进行命中判断;如果目标标志的数值为第二值(例如0),则目标地址属于多个处理器核的共同处理地址,命中判断逻辑320可使用地址索引区310存储的第二地址的tag,对目标地址进行命中判断。
命中判断逻辑320在得到命中判断结果之后,可将命中判断结果传递给执行逻辑330。
执行逻辑330是共享缓存中设置的用于具体执行数据处理指令的逻辑单元。在本申请实施例中,如果目标地址属于多个处理器核的共同处理地址,则执行逻辑可基于命中判断逻辑的命中判断结果,基于第一way执行数据处理指令。例如,如果目标地址的命中判断结果为命中,则执行逻辑330可直接基于第一way,实现第一处理器核要求的数据读或数据写。如果目标地址的命中判断结果为未命中,则执行逻辑330可将第一way中的至少一个存储单位踢出(该至少一个存储单位可以位于至少一个第一way),并从内存替换目标地址对应的存储单位,从而基于第一way中替换的目标地址对应的存储单位(替换的存储单位可能位于至少一个第一way),实现第一处理器核要求的数据读或数据写。
在进一步的一些实施例中,如果目标地址属于多个处理器核的不同处理地址,则执行逻辑可根据命中判断逻辑相应的命中判断结果,基于第二way执行数据处理指令。
需要说明的是,图3A所示的地址索引区、命中判断逻辑、执行逻辑仅是共享缓存设置的用于目标地址的命中判断和执行处理指令的可选逻辑单元,本申请实施例也可支持共享缓存以其他逻辑结构实现目标地址的命中判断和执行处理指令,并不限于图3A所示结构。
在一些实施例中,图3B示出了本申请实施例提供的数据处理方法的另一流程图。该方法流程可由共享缓存执行实现。参照图3B,该方法流程可以包括如下步骤。
在步骤S310中,获取第一处理器核的数据处理指令,所述数据处理指令携带目标地址以及目标标志。
在步骤S311中,根据所述目标标志的数值,判断所述目标地址是属于多个处理器核的不同处理地址还是共同处理地址。
在一些实施例中,如果目标标志的数值为第一值,则目标地址属于多个处理器核的不同处理地址,如果目标标志的数值为第二值,则目标地址属于多个处理器核的共同处理地址。
在步骤S312中,若所述目标地址属于多个处理器核的不同处理地址,判断所述目标地址是否在地址索引区存储的第一地址的tag中命中,所述第一地址为第一way当前缓存的数据的地址。
在目标地址属于多个处理器核的不同处理地址时,本申请实施例可基于地址索引区中存储的第一地址的tag,对目标地址进行命中判断。如果目标地址在第一地址的tag中命中,则说明第一way当前具有目标地址对应的存储单位,如果目标地址在第一地址的tag中未命中,则说明第一way当前不具有目标地址对应的存储单位。
在步骤S313中,根据命中判断结果,基于第一way执行所述数据处理指令。
步骤S313的介绍可同理参照前文相应部分的描述,此处不再赘述。
在步骤S314中,若所述目标地址属于多个处理器核的共同处理地址,判断所述目标地址是否在地址索引区存储的第二地址的tag中命中,所述第二地址为第二way当前缓存的数据的地址。
在目标地址属于多个处理器核的共同处理地址时,本申请实施例可基于地址索引区中存储的第二地址的tag,对目标地址进行命中判断。如果目标地址在第二地址的tag中命中,则说明第二way当前具有目标地址对应的存储单位,如果目标地址在第二地址的tag中未命中,则说明第二way当前不具有目标地址对应的存储单位。
在步骤S315中,根据命中判断结果,基于第二way执行所述数据处理指令。
步骤S315的介绍可同理参照前文相应部分的描述,此处不再赘述。
本申请实施例进一步描述了目标地址的命中判断过程,即在目标地址属于多个处理器核的不同处理地址时,目标地址的命中判断可基于地址索引区存储的第一地址的tag实现;在目标地址属于多个处理器核的共同地址时,目标地址的命中判断可基于地址索引区存储的第二地址的tag实现。需要说明的是,上述描述的目标地址的命中判断过程仅是一种可选实现,本申请实施例也可支持其他可能的实现方式;例如,作为可能的替代实现,本申请实施例可在目标地址属于不同处理地址时,直接查找第一way中设置的tag,对目标地址进行命中判断;在目标地址属于共同处理地址时,直接查找第二way中设置的tag,对目标地址进行命中判断。
本申请实施例可以在不增加共享缓存的缓存容量的情况下,通过对数据缓存区中的way区分第一way和第二way,实现数据处理指令在多个处理器核的不同处理地址和共同处理地址下的隔离执行,避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,从而整体上提升处理器核的数据处理效率。进一步的,本申请实施例可通过寄存器的多个bit分别关联多个way,并通过各个bit的数值调整来配置关联的way是第一way还是第二way,从而兼容缓存的处理机制,提升共享缓存运行的可靠性。
在一些实施例中,数据缓存区除配置第二way外,还可配置多种特殊way;一种特征way可以包括至少一个way,用于缓存任意至少两个处理器核之间的不同处理地址对应的数据。以一种特征way用于缓存任意两个处理器核之间的不同处理地址对应的数据为例,图4A示例性的示出了共享缓存的又一结构示意图。参照图4A,共享缓存可以包括:数据缓存区200;数据缓存区200可以包括:多个way。该多个way可以包括多种特殊way 251至251m,以及第二way 240。m数值可根据实际情况设定,本申请实施例并不设限。在一些实施例中,各种特殊way和第二way的分组可以是独立的,例如,一个set中的way均作为一种特殊way或者第二way,不同种的特殊way和第二way设置于不同的set。
在本申请实施例中,第二way用于映射多个处理器核的不同处理地址在内存对应的存储单位。一种特征way可以用于映射任意两个处理器核的不同处理地址在内存对应的存储单位,即,一种特征way可以用于缓存任意两个处理器核的不同处理地址对应的数据。一种特征way可以包括至少一个way,即一种特征way可以包括一个或多个way。
为便于理解,以芯片系统具有3个处理器核,且分别为处理器核111、112和113(未图示)为例,则多种特殊way可以分为特殊way 251、特殊way 252和特殊way 253(未图示)。其中,处理器核111和112的不同处理地址在内存对应的存储单位可映射到特征way 251,即特征way 251可以用于缓存处理器核111和112的不同处理地址对应的数据;处理器核112和113的不同处理地址在内存对应的存储单位可映射到特征way 252,即特征way 252可以用于缓存处理器核112和113的不同处理地址对应的数据;处理器核111和113的不同处理地址在内存对应的存储单位可映射到特征way 253,即特征way 253可以用于缓存处理器核111和113的不同处理地址对应的数据。需要说明的是,多种特殊way的种数可以根据多个处理器核的数量而定,并且一种特殊way可以缓存任意两个处理器核的不同处理地址对应的数据,本段的描述仅作为示例内容帮助理解特殊way,其不应对本申请的保护范围产生限制。
在本申请实施例中,第一way可以包含于多种特殊way中;基于特殊way用于缓存任意两个处理器核的不同处理地址对应的数据,则第一way可以用于缓存两个处理器核的不同处理地址对应的数据。在一些实施例中,第一way可以缓存第一处理器核和第二处理器核的不同处理地址对应的数据。其中,第一处理器核和第二处理器核为多个处理器核中的两个不同处理器核,且第一处理器核和第二处理器核为多个处理器核中的部分处理器核。
在进一步的一些实施例中,本申请实施例可在共享缓存中设置bit数与way总数对应的寄存器,并且寄存器的一个bit关联一个way。从而,本申请实施例可设置第二way对应的bit数值,以及各种特殊way对应的bit数值(例如特殊way 251、特殊way 252和特殊way253分别对应的bit数值等),进而通过配置寄存器中各个bit的数值,来配置第二way和各种特殊way。例如,如果寄存器中一个bit的数值对应第二way,则该bit关联的way为第二way,如果寄存器中的一个bit的数值对应某种特殊way,则该bit关联的way为该种特殊way。
在进一步的一些实施例中,如果共享缓存中还设置如图3A所示的地址索引区310,则地址索引区可以存储第二way当前缓存的数据对应的第二地址的tag,各种特殊way当前缓存的数据对应的地址的tag。例如,地址索引区可分区域存储第二way当前缓存的数据对应的第二地址的tag、以及各种特殊way当前缓存的数据对应的地址的tag。
基于配置多种特殊way的情况,本申请实施例可设定多种特殊way中的第一way,用于缓存第一处理器核和第二处理器核的不同处理地址对应的数据。基于此,图4B示出了本申请实施例提供的数据处理方法的再一流程图。该方法流程可由共享缓存执行实现。参照图4B,该方法流程可以包括如下步骤。
在步骤S410中,获取第一处理器核的数据处理指令,所述数据处理指令携带目标地址。
在步骤S411中,若所述目标地址与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址为第一way当前缓存的数据的地址。
在本申请实施例中,第一way用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据,如果数据处理指令中携带的目标地址与第二处理器核的处理地址不同,则目标地址需基于第一way当前缓存的数据的地址(即第一地址)进行命中判断。
在一些实施例中,所述数据处理指令中可以携带目标标志。基于本申请实施例配置了第二way、多种特殊way(包含第一way),因此本申请实施例可以通过目标标志的不同数值,来对应第二way和各种特殊way。作为可选实现,本申请实施例可预先设定目标标志在第二way对应的数值、在各种特殊way对应的数值,如果数据处理指令中携带的目标标志的当前数值与特征way中的第一way相对应,则本申请实施例可确定所述目标地址与第二处理器核的处理地址不同。
作为一种示例,假设数据缓存区中配置了第二way 240、特殊way 251、特殊way252和特殊way 253,其中,特殊way 251为第一way,则本申请实施例可通过目标标志的4个数值来分别对应第二way 240、特殊way 251、特殊way252和特殊way 253。例如,目标标志的数值00对应第二way 240,目标标志的数值01对应特殊way 251,目标标志的数值10对应特殊way 252,目标标志的数值11对应特殊way 252。从而,如果数据处理指令中携带的目标标志的当前数值为01,则可确定目标标志的当前数值01对应特殊way 251(即第一way),从而确定所述目标地址与第二处理器核的处理地址不同。
在确定所述目标地址与第二处理器核的处理地址不同时,本申请实施例可基于第一way的第一地址对目标地址进行命中判断。在一些实施例中,共享缓存的地址索引区可以存储第二way当前缓存的数据对应的地址的tag(即第二地址的tag)、各种特殊way当前缓存的数据对应的地址的tag;其中,各种特殊way当前缓存的数据对应的地址的tag包括:第一way对应的第一地址的tag。基于此,本申请实施例可通过判断目标地址是否在地址索引区存储的第一地址的tag中命中,以实现对目标地址进行命中判断。
在步骤S412中,根据命中判断结果,基于第一way执行所述数据处理指令。
共享缓存可基于目标地址在第一地址中是否命中的命中判断结果,基于第一way,执行所述目标地址对应的数据处理过程。也就是说,在目标地址属于第一处理器核和第二处理器核的不同处理地址时,共享缓存根据目标地址在第一地址中是否命中的命中判断结果,是基于第一way执行与目标地址相应的数据读取过程,或者,执行与目标地址相应的数据写入过程。
在步骤S413中,若所述目标地址属于多个处理器核的共同处理地址,判断所述目标地址是否在第二地址中命中,所述第二地址为第二way当前缓存的数据的地址。
在一些实施例中,如果数据处理指令中携带的目标标志的当前数值,与第二way相对应,则本申请实施例可确定目标地址属于多个处理器核的共同处理地址。结合上述示例,例如目标标志的当前数值为00,则可确定目标标志的当前数值00对应第二way,从而所述目标地址属于多个处理器核的共同处理地址。
在确定目标地址属于多个处理器核的共同处理地址时,共享缓存可确定需基于第二way当前缓存的数据的地址(即第二地址),对目标地址进行命中判断。在一些实施例中,本申请实施例可基于地址索引区中存储的第二地址的tag,对目标地址进行命中判断,以实现判断目标地址是否在第二地址中命中。
在步骤S414中,根据命中判断结果,基于第二way执行所述数据处理指令。
在目标地址属于多个处理器核的共同处理地址时,共享缓存可根据目标地址在第二地址中是否命中的命中判断结果,基于第二way执行与目标地址相应的数据读取过程,或者,执行与目标地址相应的数据写入过程。
本申请实施例将数据缓存区中的way配置为第二way和多种特殊way,其中,第二way用于缓存多个处理器核的共同处理地址对应的数据,一种特殊way用于缓存任意两个处理器核的不同处理地址对应的数据;并且,该多种特征way中包含第一way,用于具体缓存第一处理器核与第二处理器核的不同处理地址对应的数据。进而,共享缓存在获得第一处理器核的数据处理指令之后,如果数据处理指令中携带的目标地址不同于第二处理器核的处理地址,则共享缓存可基于第一way当前缓存的数据对应的第一地址,对目标地址进行命中判断;根据命中判断结果,共享缓存可基于第一way执行数据处理指令,以实现第一处理器核的数据处理过程。
可见,本申请实施例在配置第二way和多种特殊way的情况下,如果目标地址为两个处理器核的不同处理地址,则共享缓存可基于该不同处理地址对应的特殊way当前缓存的数据的地址,对目标地址进行命中判断,并且基于命中判断结果,共享缓存只是基于该不同处理地址对应的特殊way执行数据处理指令,而不会影响第二way。因此两个处理器核的不同处理地址在共享缓存未命中,并不会踢出第二way中缓存的存储单位,而只是会影响该不同处理地址对应的特殊way中的存储单位。也就是说,两个处理器核的不同处理地址的数据处理,并不会影响多个处理器核的共同处理地址的数据处理,本申请实施例能够避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,进而整体上提升处理器核的数据处理效率。
需要说明的是,图4A和图4B仅是以一种特殊way缓存任意两个处理器核的不同处理地址对应的数据为例,本申请实施例也可支持一种特殊way缓存至少两个处理器核的不同处理地址对应的数据,该至少两个处理器核为芯片系统的多个处理器核中的部分处理器核(即该至少两个处理器核的数量小于该多个处理器核的数量)。也就是说,针对特殊way中的第一way而言,第一way并不一定缓存第一处理器核与第二处理器核的不同处理地址对应的数据,而是可缓存第一处理器核与至少一个其他处理器核的不同处理地址对应的数据,其他处理器核为多个处理器核中不同于第一处理器核的处理器核,并且第一处理器核与所述至少一个其他处理器核的总数,小于芯片系统的多个处理器核的总数。作为一种示例,以芯片系统具有4个处理器核为例,除第二way缓存4个处理器核的共同处理地址对应的数据外,一种特殊way可缓存3个处理器核的不同处理地址对应的数据。
在一种特殊way缓存大于两个处理器核的不同处理地址对应的数据时,本申请实施例提供的数据处理方案可同理实现,此处不再展开。原则上来说,如果目标地址为芯片系统中部分处理器核(部分处理器核大于两个)的不同处理地址,共享缓存可基于该不同处理地址对应的特殊way当前缓存的数据的地址,对目标地址进行命中判断;并且基于命中判断结果,共享缓存只是基于该不同处理地址对应的特殊way执行数据处理指令,而不会影响第二way。
在一些实施例中,图5示出了本申请实施例提供的数据处理方法的又一流程图。该方法可由共享缓存执行实现,参照图5,该方法流程可以包括如下步骤。
在步骤S510中,获取第一处理器核的数据处理指令,所述数据处理指令包括目标地址。
在步骤S511中,若所述目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址。
在步骤S512中,根据命中判断结果,基于所述第一way执行所述数据处理指令。
其中,共享缓存包括数据缓存区,所述数据缓存区至少包括第一way和第二way;所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存所述多个处理器核的共同处理地址对应的数据。
本申请实施例在数据缓存区至少配置第一way和第二way的情况下,如果第一处理器核的数据处理指令中携带的目标地址,至少与第二处理器核的处理地址不同,则共享缓存根据目标地址在第一way对应的第一地址的命中判断结果,只是基于第一way执行数据处理指令,而不会影响用于缓存共同处理地址对应的数据的第二way。因此不同处理器核之间的不同处理地址在共享缓存未命中,并不会踢出第二way中缓存的存储单位,而只是会影响该不同处理地址对应的way中缓存的存储单位;也就是说,不同处理地址的数据处理并不会影响共同处理地址的数据处理。本申请实施例能够避免不同处理地址的数据处理影响共同处理地址的数据处理的情况发生,进而整体上提升处理器核的数据处理效率。
在一些实施例中,结合图2B和图2C所示,所述第一way可以具体缓存所述多个处理器核的不同处理地址对应的数据;基于此,步骤S511所指的所述目标地址至少与第二处理器核的处理地址不同可以具体包括:所述目标地址属于所述多个处理器核的不同处理地址。
在一些实施例中,所述数据处理指令还可以携带目标标志;其中,所述目标标志的数值为第一值,则所述目标地址属于所述多个处理器核的不同处理地址;所述目标标志的数值为第二值,则所述目标地址属于所述多个处理器核的共同处理地址。
在一些实施例中,结合图3A和图3B所示,所述共享缓存还可以包括地址索引区,所述地址索引区存储有第一way对应的第一地址的tag,以及第二way对应的第二地址的tag。基于此,共享缓存可判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中,以实现判断所述目标地址是否在第一地址中命中。
在另一些实施例中,结合图4A所示,所述数据缓存区配置有与第二way不同的多种特殊way,一种特殊way用于缓存任意两个处理器核的不同处理地址对应的数据;所述第一way包含于所述多种特征way中,此时,所述第一way具体缓存第一处理器核与第二处理器核的不同处理地址对应的数据;基于此,步骤S511所指的所述目标地址至少与第二处理器核的处理地址不同具体可以包括:所述目标地址属于第一处理器核与第二处理器核的不同处理地址。
在一些实施例中,所述数据处理指令还可以携带目标标志;所述目标标志的当前数值与第一way相对应,则所述目标地址属于第一处理器核与第二处理器核的不同处理地址;所述目标标志的当前数值与第二way相对应,则所述目标地址属于所述多个处理器核的共同处理地址;其中,第二way和各种特殊way分别对应所述目标标志的一个数值。
在一些实施例中,所述共享缓存的地址索引区可以存储第二way对应的第二地址的tag,以及各种特殊way当前缓存的数据对应的地址的tag;其中,所述各种特殊way当前缓存的数据对应的地址的tag可以包括:第一way对应的第一地址的tag。基于此,共享缓存可通过判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中,以实现判断所述目标地址是否在第一地址中命中。
在一些实施例中,基于步骤S511的命中判断结果,若所述目标地址在所述第一地址中命中,则共享缓存可基于所述第一way中已存在的所述目标地址相应的存储单位,执行数据读取过程或者数据写入过程;若所述目标地址在所述第一地址中未命中,则共享缓存可将所述第一way中的至少一个存储单位替换为内存中所述目标地址相应的存储单位,从而基于替换后的存储单位,执行数据读取过程或者数据写入过程。此部分的具体内容可结合图2C所示步骤S213部分的描述。
在进一步的一些实施例中,如果共享缓存确定所述目标地址属于所述多个处理器核的共同处理地址,则基于第二way用于缓存多个处理器核的共同处理地址对应的数据,本申请实施例可判断所述目标地址是否在第二way对应的第二地址中命中;进而根据命中判断结果,基于所述第二way执行所述数据处理指令。
在另一些实施例中,图6示出了本申请实施例提供的数据处理方法的又另一流程图。参照图6,该方法流程可以包括如下步骤。
在步骤S610中,获取处理器核的数据处理指令,所述数据处理指令携带目标地址以及目标标志。
步骤S610所指的处理器核可以是多核芯片系统中当前发起数据处理指令的任一处理器核。处理器核发起的数据处理指令中可以携带目标地址以及目标标志。在本申请实施例中,共享缓存可以包括数据缓存区,数据缓存区可以设置多个way,本申请实施例可独立配置各个way缓存数据的处理地址,例如,独立配置各个way在内存中映射的处理地址。作为可选实现,各个way缓存数据的处理地址不同。在一些实施例中,本申请实施例并不特意设置way来缓存多个处理器核的共同处理地址对应的数据,也不特意设置way来缓存不同处理器核的不同处理地址对应的数据,只要保障各个way缓存数据的处理地址不同即可。
在本申请实施例中,执行数据处理指令所基于的way可由目标标志进行指示。在一些实施例中,目标标志的数值可与way相对应。例如,处理器核在发起数据处理指令时,可基于当前需要处理的目标地址所对应的way,设置目标标志的数值。
在步骤S611中,根据所述目标标志的数值,确定目标地址对应的目标way。
在步骤S612中,判断所述目标地址是否在所述目标way当前缓存的数据的地址中命中。
本申请实施例可基于目标标志的数值,从数据缓存区的多个way中确定目标地址对应的目标way。目标way可以认为是映射了目标地址在内存中对应的存储单位的way。进而,本申请实施例可判断目标地址是否在目标way当前缓存的数据的地址中命中,以判断目标way当前是否缓存有所述目标地址对应的存储单位。
在一些实施例中,共享缓存可以设置地址索引区,地址索引区可以记录各个way当前缓存的数据的地址的tag,即地址索引区可记录各个way对应的tag。本申请实施例可判断所述目标地址是否在地址索引区中记录的目标way对应的tag中命中,以实现对目标地址进行命中判断。
在步骤S613中,根据命中判断结果,基于所述目标way执行所述数据处理指令。
在一些实施例中,如果命中判断结果为目标地址命中,则可基于所述目标way中已缓存的与所述目标地址对应的存储单位,执行数据读取过程或者数据写入过程;如果命中判断结果为目标地址未命中,则可将所述目标way中的至少一个存储单位替换为内存中所述目标地址对应的存储单位,基于替换后的存储单位,执行数据读取过程或者数据写入过程。
本申请实施例可在数据缓存区设置多个way,并且各个way缓存数据的处理地址不同。从而,处理器核在发起数据处理指令时,本申请实施例可基于目标标志的数值,确定需要处理的目标地址对应的目标way,进而基于目标地址在目标way当前缓存的数据的地址中是否命中的判断结果,来实现数据处理指令的具体执行。本申请实施例能够使得处理器核的数据处理具有更高的效率。
本申请实施例提供一种共享缓存,结合图3A所示,该共享缓存可以包括:
数据缓存区,所述数据缓存区至少包括第一way和第二way;其中,所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据;
命中判断逻辑,用于在所述共享缓存获取第一处理器核的数据处理指令之后,若所述数据处理指令携带的目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址;
执行逻辑,用于根据所述命中判断逻辑的命中判断结果,基于所述第一way执行所述数据处理指令。
在进一步的一些实施例中,结合图3A所示,共享缓存还可以包括地址索引区。
在一些实施例中,第一way可以具体用于缓存所述多个处理器核的不同处理地址对应的数据。此时,地址索引区可以存储第一way对应的第一地址的tag,以及第二way对应的第二地址的tag。
在另一些实施例中,所述数据缓存区可以配置有与第二way不同的多种特殊way,一种特殊way用于缓存任意两个处理器核的不同处理地址对应的数据;并且,所述第一way包含于所述多种特征way中,且具体用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据。此时,地址索引区可以存储第二way对应的第二地址的tag,以及各种特殊way当前缓存的数据对应的地址的tag。其中,所述各种特殊way当前缓存的数据对应的地址的tag包括:第一way对应的第一地址的tag。
在进一步的一些实施例中,命中判断逻辑还可以用于:若所述目标地址属于所述多个处理器核相同的处理地址,判断所述目标地址是否在第二地址中命中,所述第二地址包括第二way当前缓存的数据的地址。相应的,执行逻辑还可以用于:根据命中判断逻辑上述的命中判断结果,基于所述第二way执行所述数据处理指令。
关于数据缓存区、命中判断逻辑、执行逻辑和地址索引区的具体功能和扩展功能,可参照前文相应部分的描述,此处不再展开。
本申请实施例还提供一种芯片系统(例如SOC芯片),该芯片系统可以包括多个处理器核,以及该多个处理器核共享的共享缓存,该共享缓存可以如本申请实施例提供的共享缓存。
本申请实施例还提供一种电子设备(例如终端设备、服务器设备等),该电子设备可以包括本申请实施例提供的芯片系统。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (19)
1.一种数据处理方法,其特征在于,包括:
获取第一处理器核的数据处理指令,所述数据处理指令包括目标地址;
若所述目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一缓存行way当前缓存的数据的地址;
根据命中判断结果,基于所述第一way执行所述数据处理指令;
其中,共享缓存包括数据缓存区,所述数据缓存区至少包括第一way和第二way;所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述第一way具体用于缓存所述多个处理器核的不同处理地址对应的数据;所述目标地址至少与第二处理器核的处理地址不同包括:
所述目标地址属于所述多个处理器核的不同处理地址。
3.根据权利要求2所述的方法,其特征在于,所述数据处理指令还携带目标标志;其中,所述目标标志的数值为第一值,则所述目标地址属于所述多个处理器核的不同处理地址;所述目标标志的数值为第二值,则所述目标地址属于所述多个处理器核的共同处理地址。
4.根据权利要求2所述的方法,其特征在于,所述共享缓存还包括地址索引区,所述地址索引区存储有第一地址的标签tag,以及第二地址的tag;所述第二地址包括所述第二way当前缓存的数据的地址;
所述判断所述目标地址是否在第一地址中命中包括:
判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中。
5.根据权利要求1所述的方法,其特征在于,所述数据缓存区配置有与第二way不同的多种特殊way,一种特殊way用于缓存任意两个处理器核的不同处理地址对应的数据;所述第一way包含于所述多种特征way中,所述第一way具体用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第一处理器核和所述第二处理器核为所述多个处理器核中的部分处理器核;
所述目标地址至少与第二处理器核的处理地址不同包括:
所述目标地址属于第一处理器核与第二处理器核的不同处理地址。
6.根据权利要求5所述的方法,其特征在于,所述数据处理指令还携带目标标志;所述目标标志的当前数值与第一way相对应,则所述目标地址属于第一处理器核与第二处理器核的不同处理地址;所述目标标志的当前数值与第二way相对应,则所述目标地址属于所述多个处理器核的共同处理地址;其中,第二way和各种特殊way分别对应所述目标标志的一个数值。
7.根据权利要求5所述的方法,其特征在于,所述共享缓存还包括地址索引区,所述地址索引区存储有第二地址的tag,以及各种特殊way当前缓存的数据对应的地址的tag;其中,所述第二地址包括第二way当前缓存的数据的地址,所述各种特殊way当前缓存的数据对应的地址的tag包括:第一way对应的第一地址的tag;
所述判断所述目标地址是否在第一地址中命中包括:
判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述根据命中判断结果,基于所述第一way执行所述数据处理指令包括:
若所述目标地址在所述第一地址中命中,基于所述第一way中已存在的所述目标地址相应的存储单位,执行数据读取过程或者数据写入过程;
若所述目标地址在所述第一地址中未命中,将所述第一way中的至少一个存储单位替换为内存中所述目标地址相应的存储单位,基于替换后的存储单位,执行数据读取过程或者数据写入过程。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标地址属于所述多个处理器核的共同处理地址,判断所述目标地址是否在第二地址中命中,所述第二地址包括第二way当前缓存的数据的地址;
根据命中判断结果,基于所述第二way执行所述数据处理指令。
10.一种数据处理方法,其特征在于,包括:
获取处理器核的数据处理指令,所述数据处理指令携带目标地址以及目标标志;
根据所述目标标志的数值,确定所述目标地址对应的目标way;
判断所述目标地址是否在所述目标way当前缓存的数据的地址中命中;
根据命中判断结果,基于所述目标way执行所述数据处理指令;
其中,共享缓存包括数据缓存区,所述数据缓存区包括多个way,各个way缓存数据的处理地址不同。
11.一种共享缓存,其特征在于,包括:
数据缓存区,所述数据缓存区至少包括第一way和第二way;其中,所述第一way至少用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第二way用于缓存多个处理器核的共同处理地址对应的数据;
命中判断逻辑,用于在所述共享缓存获取第一处理器核的数据处理指令之后,若所述数据处理指令携带的目标地址至少与第二处理器核的处理地址不同,判断所述目标地址是否在第一地址中命中,所述第一地址包括第一way当前缓存的数据的地址;
执行逻辑,用于根据所述命中判断逻辑的命中判断结果,基于所述第一way执行所述数据处理指令。
12.根据权利要求11所述的共享缓存,其特征在于,所述第一way具体用于缓存所述多个处理器核的不同处理地址对应的数据;所述目标地址至少与第二处理器核的处理地址不同包括:
所述目标地址属于所述多个处理器核的不同处理地址。
13.根据权利要求12所述的共享缓存,其特征在于,所述数据处理指令还携带目标标志;其中,所述目标标志的数值为第一值,则所述目标地址属于所述多个处理器核的不同处理地址;所述目标标志的数值为第二值,则所述目标地址属于所述多个处理器核的共同处理地址。
14.根据权利要求12所述的共享缓存,其特征在于,还包括:
地址索引区,所述地址索引区存储有第一地址的tag,以及第二地址的tag;所述第二地址包括所述第二way当前缓存的数据的地址;
所述命中判断逻辑,用于判断所述目标地址是否在第一地址中命中包括:
判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中。
15.根据权利要求11所述的共享缓存,其特征在于,所述数据缓存区配置有与第二way不同的多种特殊way,一种特殊way用于缓存任意两个处理器核的不同处理地址对应的数据;所述第一way包含于所述多种特征way中,所述第一way具体用于缓存第一处理器核与第二处理器核的不同处理地址对应的数据;所述第一处理器核和所述第二处理器核为所述多个处理器核中的部分处理器核;
所述目标地址至少与第二处理器核的处理地址不同包括:
所述目标地址属于第一处理器核与第二处理器核的不同处理地址。
16.根据权利要求15所述的共享缓存,其特征在于,还包括:
地址索引区,所述地址索引区存储有第二地址的tag,以及各种特殊way当前缓存的数据对应的地址的tag;其中,所述第二地址包括第二way当前缓存的数据的地址,所述各种特殊way当前缓存的数据对应的地址的tag包括:第一way对应的第一地址的tag;
所述命中判断逻辑,用于判断所述目标地址是否在第一地址中命中包括:
判断所述目标地址是否在所述地址索引区存储的第一地址的tag中命中。
17.根据权利要求11所述的共享缓存,其特征在于,所述命中判断逻辑,还用于:若所述目标地址属于所述多个处理器核的共同处理地址,判断所述目标地址是否在第二地址中命中,所述第二地址包括第二way当前缓存的数据的地址;
所述执行逻辑,还用于:根据所述命中判断逻辑的命中判断结果,基于所述第二way执行所述数据处理指令。
18.一种芯片系统,其特征在于,所述芯片系统包括多个处理器核,以及所述多个处理器核共享的共享缓存,所述共享缓存如权利要求11-17任一项所述的共享缓存。
19.一种电子设备,其特征在于,包括如权利要求18所述的芯片系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363263.5A CN113986778B (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363263.5A CN113986778B (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986778A true CN113986778A (zh) | 2022-01-28 |
CN113986778B CN113986778B (zh) | 2023-03-24 |
Family
ID=79749118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111363263.5A Active CN113986778B (zh) | 2021-11-17 | 2021-11-17 | 一种数据处理方法、共享缓存、芯片系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986778B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792508B1 (en) * | 1999-12-06 | 2004-09-14 | Texas Instruments Incorporated | Cache with multiple fill modes |
US20120137075A1 (en) * | 2009-06-09 | 2012-05-31 | Hyperion Core, Inc. | System and Method for a Cache in a Multi-Core Processor |
US20120210069A1 (en) * | 2009-10-25 | 2012-08-16 | Plurality Ltd. | Shared cache for a tightly-coupled multiprocessor |
JP2014002787A (ja) * | 2013-09-05 | 2014-01-09 | Fujitsu Ltd | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
US20200134182A1 (en) * | 2018-10-26 | 2020-04-30 | Alibaba Group Holding Limited | Method and apparatus for updating shared data in a multi-core processor environment |
CN113486410A (zh) * | 2021-06-30 | 2021-10-08 | 海光信息技术股份有限公司 | 一种保护数据安全的方法、cpu核、cpu芯片和电子设备 |
-
2021
- 2021-11-17 CN CN202111363263.5A patent/CN113986778B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792508B1 (en) * | 1999-12-06 | 2004-09-14 | Texas Instruments Incorporated | Cache with multiple fill modes |
US20120137075A1 (en) * | 2009-06-09 | 2012-05-31 | Hyperion Core, Inc. | System and Method for a Cache in a Multi-Core Processor |
US20120210069A1 (en) * | 2009-10-25 | 2012-08-16 | Plurality Ltd. | Shared cache for a tightly-coupled multiprocessor |
JP2014002787A (ja) * | 2013-09-05 | 2014-01-09 | Fujitsu Ltd | マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム |
CN105426319A (zh) * | 2014-08-19 | 2016-03-23 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
CN105740164A (zh) * | 2014-12-10 | 2016-07-06 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
US20200134182A1 (en) * | 2018-10-26 | 2020-04-30 | Alibaba Group Holding Limited | Method and apparatus for updating shared data in a multi-core processor environment |
CN113486410A (zh) * | 2021-06-30 | 2021-10-08 | 海光信息技术股份有限公司 | 一种保护数据安全的方法、cpu核、cpu芯片和电子设备 |
Non-Patent Citations (1)
Title |
---|
YU C等: "Efficient shared cache management through sharing-aware replacement and streaming-aware insertion policy", 《23RD IEEE INTERNATIONAL SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING, IPDPS 2009》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
CN117130663B (zh) * | 2023-09-19 | 2024-06-11 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113986778B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114036084B (zh) | 一种数据访问方法、共享缓存、芯片系统和电子设备 | |
US20020053006A1 (en) | Cache control system | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
US10423534B2 (en) | Cache memory | |
JP2012203560A (ja) | キャッシュメモリおよびキャッシュシステム | |
CN113986778B (zh) | 一种数据处理方法、共享缓存、芯片系统及电子设备 | |
US11055025B2 (en) | Semiconductor memory device performing command merge operation and operation method thereof | |
US7010649B2 (en) | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache | |
EP0675443A1 (en) | Apparatus and method for accessing direct mapped cache | |
US8266379B2 (en) | Multithreaded processor with multiple caches | |
US6928522B2 (en) | Unbalanced inclusive tags | |
US10565111B2 (en) | Processor | |
JP6732032B2 (ja) | 情報処理装置 | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
US11334488B2 (en) | Cache management circuits for predictive adjustment of cache control policies based on persistent, history-based cache control information | |
US9251070B2 (en) | Methods and apparatus for multi-level cache hierarchies | |
JP7071640B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
US20050268021A1 (en) | Method and system for operating a cache memory | |
US6996675B2 (en) | Retrieval of all tag entries of cache locations for memory address and determining ECC based on same | |
KR100486240B1 (ko) | 분리된 캐쉬 메모리를 구비한 마이크로프로세서 및 메모리 액세스 방법 | |
US12099451B2 (en) | Re-reference interval prediction (RRIP) with pseudo-LRU supplemental age information | |
JP3078303B2 (ja) | キャッシュメモリ制御回路 | |
US20240220409A1 (en) | Unified flexible cache | |
US12093177B2 (en) | Multi-level partitioned snoop filter |
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 |