CN114116533A - 利用共享存储器存储数据的方法 - Google Patents
利用共享存储器存储数据的方法 Download PDFInfo
- Publication number
- CN114116533A CN114116533A CN202111435837.5A CN202111435837A CN114116533A CN 114116533 A CN114116533 A CN 114116533A CN 202111435837 A CN202111435837 A CN 202111435837A CN 114116533 A CN114116533 A CN 114116533A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- ways
- shared
- branch
- micro
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种利用共享存储器存储数据的方法、一种用于中央处理器的处理装置、一种共享存储器、一种共享控制器、一种微指令缓存控制单元以及一种分支预测单元。其中,所述共享存储器包括多个共享存储区域,所述方法包括:对于所述共享存储器中的各个共享存储区域,设置共享控制器中与所述共享存储区域对应的控制信息,以及基于所述共享控制器中的控制信息,向各个共享存储区域写入或从各个共享存储区域读取微指令或分支信息,其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
Description
技术领域
本公开涉及一种利用共享存储器存储数据的方法、一种用于中央处理器的处理装置、一种共享存储器、一种共享控制器、一种微指令缓存控制单元以及一种分支预测单元。
背景技术
目前,中央处理器(Central Processing Unit,CPU)的微结构主要可以分成CPU前端和CPU后端。其中,CPU前端主要负责:指令拾取(Instruction Fetch)、指令解码(Instruction Decode)、分支预测(branch predict)和指令分发。而CPU后端负责指令执行和乱序控制(Out of Order)控制。
目前,CPU不仅可以与多种不同的存储结构相连接,CPU的内部还可以包括多种不同的存储结构。这些存储结构的示例包括指令缓存、微指令缓存和分支目标缓冲器(BranchTarget Buffer,BTB)。目前,针对有些计算机程序,更大的微指令缓存的容量将有利于优化运算时间并且BTB容量存在浪费。而针对另一些计算机程序而言,更大的BTB容量则是更有利于优化运算时间,此时微指令缓存容量存在浪费。
为此需要一种能够满足不同场景的存储器空间优化方案,以进一步减小芯片面积,避免存储空间的浪费。
发明内容
本公开的实施例提供了一种利用共享存储器存储数据的方法,所述共享存储器包括多个共享存储区域,包括:对于所述共享存储器中的各个共享存储区域,设置共享控制器中与所述共享存储区域对应的控制信息,以及基于所述共享控制器中的控制信息,向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息,其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
例如,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述共享存储区域从所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个接收对应的一个或多个写入信号;所述共享存储区域从所述共享控制器接收包括控制信息的控制写入信号,以及响应于所述控制写入信号,所述共享存储区域在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号,并基于所述写入信号对应地写入与指令或微指令或分支信息相关的信息。
例如,所述各个共享存储区域包括写入接口,所述写入接口包括多路选择器,所述多路选择器用于响应于所述控制写入信号在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号。
例如,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述共享存储区域向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个返回读取信号,所述读取信号中包括所述共享存储区域中存储的指令或微指令或分支信息;所述共享控制器向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个发送包括所述控制信息的控制读取信号,以及所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个,基于所述控制读取信号,确定接收还是丢弃所述读取信号。
例如,所述取指单元被配置为向与多个非固定路对应的共享存储区域写入指令或从所述共享存储区域读取指令。
例如,所述微指令缓存控制单元被配置为向与多个非固定路对应的共享存储区域写入微指令或从所述共享存储区域读取微指令。
例如,所述分支预测单元被配置为向与多个非固定路对应的共享存储区域写入分支信息或从所述共享存储区域读取分支信息。
例如,所述微指令缓存控制单元包括路使能控制器,所述微指令缓存控制单元被配置为向M1个固定路或N1个非固定路对应的存储区域写入微指令或从所述存储区域读取微指令,M1和N1均为大于零的整数,所述M1个固定路中的每个固定路对应于微指令缓存中的部分私有存储区域,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述路使能控制器基于所述控制信息,使能所述N1个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令。
例如,所述分支预测单元包括路使能控制器,所述分支预测单元被配置为向M2个固定路或N2个非固定路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,M2和N2均为大于零的整数,所述M2个固定路中的每个固定路对应于分支目标缓冲器或预测器的私有存储区域,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述路使能控制器基于所述控制信息,使能所述N2个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息。
例如,所述微指令缓存控制单元被配置为向多个路对应的存储区域写入微指令或从所述存储区域读取微指令,其中,所述多个路中的每个路对应的存储区域包括微指令缓存中的私有存储区域以及共享存储器中的共享存储区域。
例如,所述分支预测单元被配置为向多个路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,所述多个路中的每个路对应的存储区域包括分支目标缓冲器或预测器中的私有存储区域以及共享存储器中的共享存储区域
例如,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M1和N为大于零的整数,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述路容量控制器基于所述控制信息,使能一个或多个可扩充路,并确定被使能的每个可扩充路对应的一个或多个共享存储区域;响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述共享存储区域中读取微指令。
例如,所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域和与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M2和N为大于零的整数,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:所述路容量控制器基于所述控制信息,使能所述M2个可扩充路中一个或多个可扩充路,并确定被使能的每个可扩充路对应的一个或多个共享存储区域;响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息。
本公开的实施例提供了一种用于中央处理器的处理装置,包括取指单元、分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器,所述处理装置被配置为执行上述方法中的一个或多个方法。
本公开的实施例提供了一种用于中央处理器的处理装置,所述处理装置包括分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器,所述共享存储器包括多个共享存储区域,每个共享存储区域与共享控制器中的一个或多个控制信息存储器相对应,其中,所述共享控制器中的一个或多个控制信息存储器,被配置为存储与其对应的共享存储区域的控制信息,所述共享存储器中的每个共享存储区域,被配置为根据所述控制信息,存储微指令或分支信息,所述微指令缓存控制单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取微指令;所述分支预测单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取分支信息。
本公开的实施例提供了一种共享存储器,所述共享存储器包括多个共享存储区域,每个共享存储区域与共享控制器中的一个或多个控制信息存储器相对应,其中,每个共享存储区域被配置为:根据所述共享控制器中对应的一个或多个寄存器存储的控制信息,存储指令或微指令或分支信息,其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
本公开的实施例提供了一种共享控制器,所述共享控制器包括多个控制信息存储器,所述多个控制信息存储器中的一个或多个控制信息存储器与共享存储器中的各个共享存储区域相对应,其中,所述一个或多个控制信息存储器被配置为:存储控制信息,所述控制信息指示对应的共享存储区域存储指令或微指令或分支信息,其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
本公开的实施例提供了一种微指令缓存控制单元,包括路容量控制器,所述微指令缓存控制单元被配置为:向M1个固定路中的至少一个固定路对应的微指令缓存中的私有存储区域写入微指令或从所述至少一个固定路对应的微指令缓存中的私有存储区域读取微指令;基于控制信息,利用所述路容量控制器使能N1个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令;其中,M1和N1均为大于零的整数。
本公开的实施例提供了一种分支预测单元,包括路容量控制器,被配置为:向M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域写入分支信息或从所述M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域读取分支信息;基于控制信息,利用所述路容量控制器使能N2个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息;其中,M2和N2均为大于零的整数。
本公开的实施例提供了一种微指令缓存控制单元,其中,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述微指令缓存单元被配置为:向与至少一个固定路相对应的微指令缓存中的对应的私有存储区域写入微指令或从所述私有存储区域读取微指令;基于控制信息,利用所述路容量控制器,使能所述M1个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取微指令;其中,M1和N为大于零的整数。
本公开的实施例提供了一种分支预测单元所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述分支预测单元被配置为:向与至少一个固定路相对应的分支目标缓冲器或预测器中的对应的私有存储区域写入分支信息或从所述私有存储区域读取分支信息;基于控制信息,利用所述路容量控制器,使能所述M2个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息;其中,M2和N为大于零的整数。
本公开实施例通过在预测器/BTB/微指令缓存/指令缓存间共享芯片面积,并支持动态划分的机制,使得在不同应用场景下,对芯片面积的利用都能达到最优,从而实现了使用更小的芯片面积可以同时满足不同应用的需求。例如,对于程序中频繁使用的指令数较少的情况(此时BTB不需要太多容量),芯片上的共享存储容量被配置为微指令缓存使用,增大微指令缓存的容量。又例如,对于程序中频繁使用的指令数较多的情况(此时微指令缓存不需要太大容量),芯片上的共享存储容量被配置为BTB使用,增大BTB容量。因此,本公开实施例能够动态划分各种不同存储器容量,使得针对不同的场景都能实现优化存储空间,避免存储空间的浪费。
附图说明
图1是示出在CPU前端中的数据存取和逻辑控制的流程示意图。
图2是示出图1中的获取指令的逻辑控制的更详细的流程示意图。
图3是示出图1中分支预测单元的进行分支预测的更详细的流程示意图。
图4是示出根据本公开实施例的用于中央处理器的处理装置的示意图。
图5是示出本公开实施例的在用于中央处理器的处理装置中利用共享存储器存储数据的方法的流程图。
图6是示出图4中的用于中央处理器的处理装置中的细节示意图。
图7示出了根据本公开实施例的路(包括固定路和非固定路)与N个共享存储区域的映射关系示意图。
图8示出了根据本公开实施例的路与N个共享存储区域的另一映射关系示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
以下简要介绍与本公开相关的术语,以便于说明本公开。
CPU前端:CPU前端负责向后端执行单元提供译码后的微指令(通常把译码前的称为指令,译码后的称为微指令)。
分支目标缓冲器(Branch Target Buffer,BTB):分支目标缓冲器存储了用于分支预测的最基本信息(分支位置、类型、目标地址)。
缓存(cache):缓存是介于核和主存储器(例如,外存)之间的小容量存储器,其读写速度比主存储器更快,从而能够实现高速地向中央处理器提供指令和数据,提高程序的执行速度。随着半导体器件集成度的不断提高,当前已出现了多级缓存系统,每一级缓存的所有控制逻辑全部由该级缓存的内部控制器实现。缓存包括一级缓存,二级缓存和三级缓存。一级缓存(L1 cache)为一级高速缓存,位于CPU内核的旁边。其是与CPU结合最为紧密的缓存。一级缓存又分为指令缓存和数据缓存,容量最小,由各个核/集群独享。二级缓存(L2cache)为二级高速缓存,是CPU第二层级高速缓存,其容量会直接影响CPU的性能,通常由各个核/集群独享。可选地,在一些示例中,L2也可以由各个核/集群共享。三级缓存(L3cache)三级高速缓存,为CPU第三层级高速缓存,作用是进一步降低内存延迟,由多个核/集群共享,容量最大。通常情况下L3也是多核处理器的最后一级缓存(Last Level Cache,LLC),L3与外存耦接。
指令缓存:用于存储译码前的指令的缓存。
微指令缓存:用于存储微指令的缓存,微指令是译码后的指令。
外存:其与处理器的内存是相对的概念,通常为动态随机存取存储器(DynamicRandom Access Memory,DRAM),其通常通过总线与三级缓存连接。外存的容量大,但是访问速度慢。
缓存行(Cache Line):缓存行,是Cache与内存数据交换的最小单位,通常是32字节或64字节。
预取(Prefetch):通过预测读取数据来提前将数据载入缓存,减少各个核获取数据的延时。
为了更好的说明本公开,以下参考图1至图3来进一步说明在当前的CPU前端中的各个组件交互的示例过程。
图1是示出在CPU前端中的数据存取和逻辑控制的流程示意图。图2是示出图1中的获取指令的逻辑控制的更详细的流程示意图。图3是示出图1中分支预测单元的进行分支预测的更详细的流程示意图。在图1至图3中,黑底白字为控制逻辑单元,白底黑字为存储结构。值得注意的是,CPU还可以包括其他部件,例如,其他的存储结构,然而,由于这些部件与本公开实施例的内容无关,因此在这里省略其图示和描述。
如图1所示,目前,CPU通常会利用分支预测单元(BTU)来进行前端处理的第一步。分支预测单元负责产生对某条指令进行取指的取指请求。如果微指令缓存中已存储有与该指令对应的微指令,则分支预测单元将取指请求分发至微指令缓存控制单元。反之,取指请求将被分发至取指单元。
如果将取指请求分发至取指单元,则由取指单元从指令缓存中取出指令,然后交给译码单元进行译码,译码后得到的微指令一方面交给分发单元(向后端执行单元进行分发),另一方面也填入微指令缓存。如果将取指请求分发至微指令,则可以省去“访问指令缓存”+“指令译码”的步骤,直接从微指令缓存中得到译码后的微指令,交给分发单元。
由于微指令缓存的取指带宽通常高于指令缓存+译码,因此尽可能使用微指令缓存会有更高的性能。然而,由于微指令缓存存储的是译码后的指令(也即微指令),其占用的位数更多,因此同样芯片面积下,微指令缓存所能容纳的微指令数是小于指令缓存所能容纳的指令数的。比如对于32KB的存储容量,指令缓存可以容纳8K条指令,而微指令缓存只能容纳4K条微指令。微指令缓存所能容纳的微指令数比较小,通常适用于程序里面存在指令数比较小的循环体。
参见图2来进一步描述分支预测单元与指令缓存之间的关系。如图2所示,其中,分支预测单元将取指请求填入取指请求队列,取指单元负责从队列中得到取指请求。然后从指令缓存中读出指令,发给译码单元。分支预测单元还有对指令缓存进行预取的功能。分支预测单元在将取指请求填入取指请求队列的同时,也去触发对指令缓存的预取请求,当取指请求在取指请求队列中排队时,预取请求就可以提前将指令从更下一级缓存(例如,L3缓存或L2缓存)搬入指令缓存(例如L1缓存)。这样当取指请求被取指单元从取值请求队列中取出时,取指单元就可以直接在指令缓存命中,而不需等待从更下一级缓存将对应指令搬入指令缓存。
参见图3来进一步描述分支预测单元内部的细节流程。如图3所示,其中分支目标缓冲器BTB和/或各种预测器存储了程序中的分支信息,例如分支指令的位置、类型、目标地址等信息。其中,每种预测器通常由多张预测表构成,其以预测表的形式存储分支信息。以条件分支预测器和间接分支预测器为例进行说明。作为一个示例,条件分支预测器的预测表存储了条件分支指令是否应该跳转的信息,而间接分支预测器的预测表存储了间接分支指令的目标地址。本领域技术人样应当理解这些信息都可以统称为分支信息。
当在分支目标缓冲器BTB和/或各种预测器中发现分支指令后,后续会有多个不同的预测器根据分支类型进行方向预测、间接目标预测、返回地址预测等,最后再统一汇总这些预测信息,生成取指请求,并将该取指请求发送给取指单元。同时,预测得到的下一个取指地址会反馈给分支预测的开始,进行下一轮的预测,这样分支预测单元才能源源不断的向取指请求队列发送取指请求。分支预测单元能给出正确取指请求(预取请求)的前提是BTB中正确记录了分支信息。
通常分支目标缓冲器BTB容量所能覆盖的指令数是大于指令缓存的,这样才能产生有效的预取请求。通常程序中,每N条指令才会有一条分支指令(通常情况下,N>5)。由于分支目标缓冲器BTB只需容纳分支信息,因此同样芯片面积下,分支目标缓冲器BTB所能容纳的指令数是超过指令缓存的。
综上,可以看出BTB、指令缓存、微指令缓存三者同样作为存储结构,它们存储的内容不同,它们之间的容量关系为BTB>指令缓存>微指令缓存。然而,针对不同的程序,需要动态地调整上述存储结构的容量,以提高运算速度并减少芯片面积的浪费。以下简述4种不同的程序的应用场景以及其对应的存储结构的容量需求。
应用场景①:当程序中频繁使用的指令数小于微指令缓存的容量时,分支预测单元和微指令缓存控制单元可以正常工作,向分发单元提供微指令,此时性能最好。
应用场景②:当程序中频繁使用的指令数大于微指令缓存的容量,但是小于指令缓存的容量时,分支预测单元、指令缓存和译码单元也可以正常工作,向分发单元提供微指令。
应用场景③:当程序中频繁使用的指令数大于指令缓存的容量,但是小于BTB覆盖的容量时,分支预测单元、指令缓存和译码单元可以正常工作,向分发单元提供微指令,此时分支预测单元会对指令缓存进行预取。
应用场景④:当程序中频繁使用的指令数大于BTB覆盖的容量时,分支预测单元无法正常工作,其对指令缓存的预取功能也会失效。本领域技术人员应当理解,无法正常工作是指不能按照最高性能工作,但CPU仍有其他机制保证程序正确执行。
程序中频繁使用的指令数是因程序而异的,上述几种情况,芯片的性能的关系如下:①略高于②,②略高于③,③远高于④。从最高性能角度考虑,微指令缓存越大越好,使更多的程序能处于微指令缓存中,达到最高性能。但同时,为了避免由于上述④的情况导致的性能大幅降低,BTB的容量也越大越好。
值得注意的是,在应用场景①的情况下,BTB的容量并没有被完全利用起来。因为,程序中频繁使用的指令数比较少时,这些指令(包括分支指令)可以被直接放进微指令缓存和指令缓存,调动BTB的情况较少。也即分支信息的数据量小于BTB所能覆盖的容量,使得BTB大部分容量处于浪费状态。此外,在上述应用场景④的情况下,微指令缓存已经无法正常工作,因此其容量也处于浪费状态。也即,从上述的四种应用场景的分析来看,往往在BTB的容量需求最高的时刻微指令缓存的容量需求最低,以及在微指令缓存的容量最高的时刻BTB的容量需求最低。也即,BTB与微指令缓存的容量需求存在互斥性。因此需要在BTB和微指令缓存之间动态地划分存储容量(或存储空间)。
更进一步地,虽然BTB与微指令缓存的容量需求之间的互斥性最高,然而,根据应用场景①至④,BTB与指令缓存、以及微指令缓存与指令缓存之间也存在一定的互斥性。因此,需要在BTB、微指令缓存和指令缓存之间动态地划分存储容量(或存储空间)。上述对于BTB容量的描述均可以类似地应用于预测器,本公开在此不再赘述。
为此需要一种能够满足不同场景的存储器空间优化方案,以进一步减小芯片面积,避免存储空间的浪费。
本公开的实施例提供了一种利用共享存储器存储数据的方法,所述共享存储器包括多个共享存储区域,包括:对于所述共享存储器中的各个共享存储区域,设置共享控制器中与所述共享存储区域对应的控制信息,以及基于所述共享控制器中的控制信息,向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息,其中,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。由此,本公开实施例通过在BTB(和/或预测器)/微指令缓存/指令缓存间共享芯片面积,并支持动态划分的机制,使得在不同应用场景下,对芯片面积的利用都能达到最优,从而实现了使用更小的芯片面积可以同时满足不同应用的需求。虽然,在现代处理器中,不同功能单元有各自的存储结构,比如BTB、指令缓存、微指令缓存是属于不同功能单元的关系独立的存储结构。本公开维持它们之间逻辑关系上的独立性,但是在物理存储中,允许它们之间动态共享芯片资源(面积)。
下面继续结合附图4至图6对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图4是示出根据本公开实施例的用于中央处理器的处理装置400的示意图。图5是示出本公开实施例的在用于中央处理器的处理装置400中利用共享存储器存储数据的方法的流程图。图6是示出图4中的用于中央处理器的处理装置400中的细节示意图。
例如,如图4所示,处理装置400处理装置包括分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器。此外,处理装置400还可以进一步地包括如图1所示的取指单元、指令缓存、指令译码单元、分发单元等。处理装置400主要可以应用于CPU的前端处理。本公开并不以此为限。
可选地,处理装置400还可以包括仅用于存储分支信息的BTB私有存储空间(也即图1中的BTB)和/或各种预测器的私有存储空间(未示出,也即图3中的预测器),以及仅用于存储微指令的微指令缓存私有存储空间(也即图1中的微指令缓存)。由此,微指令缓存控制单元可以进一步被配置为向微指令缓存写入或从微指令缓存读取微指令。分支预测单元可以进一步被配置为向BTB写入或从所述BTB读取分支信息。此外,分支预测单元还可以进一步地被配置为向各个预测器写入或从所述各个预测器读取分支信息。例如,分支预测单元还可以进一步地被配置为向各个预测器的预测表写入或从所述各个预测器的预测表读取分支信息。
可选地,处理装置400还可以包括仅用于存储指令的指令缓存。由此,取指单元可以被进一步地被配置为向指令缓存写入或从所述指令缓存读取指令。作为另一个示例,处理装置400还可以不包括上述的私有存储空间,而仅包括共享存储器。本领域技术人员应当理解本公开并不以此为限。
可选地,所述共享存储器包括多个共享存储区域,例如图6所示的N个共享存储区域,N为大于零的整数。上述共享存储区域可以是任何介质的,可以是SRAM,也是可以寄存器阵列,也可以是latch阵列。可选地,共享控制器包括多个寄存器。每个共享存储区域与所述共享控制器中对应的一个或多个寄存器相连接,每个共享存储区域受共享控制器中的对应寄存器中存储的控制信息控制,因此每个共享存储区域可以被独立的被配置为作为BTB的存储,或者作为微指令缓存的存储。
例如,参考图5,处理装置400可以执行方法500。例如,方法500包括步骤S510至步骤S520。
在步骤S510中,对于所述共享存储器中的各个共享存储区域,设置共享控制器中与所述共享存储区域对应的控制信息。例如,软件程序可以根据其当前的应用场景,设置共享控制器中与所述共享存储区域对应的控制信息,并将这些控制信息存储至共享控制器中的对应的一个或多个控制信息存储器中。以下以寄存器作为控制信息存储器的示例作为说明,本领域技术人员应当理解本公开不限于此。
例如,所述控制信息指示对应的共享存储区域存储微指令还是分支信息。例如,如图6所示,每个共享存储区域可以分别对应地连接至一个寄存器,并仅受该寄存器中的控制信息控制。控制信息可以以“0”表示该共享存储区域用于存储分支信息,以“1”表示该共享存储区域用于存储微指令。正如上所述,如果软件程序侦测到当前程序属于应用场景①,那么可以更多地设置共享控制器存储更多的“1”并存储更少的“0”。如果软件程序侦测到当前程序属于应用场景④,那么可以更多地设置共享控制器存储更多的“0”并存储更少的“1”。此外,控制信息可以以“1”表示该共享存储区域用于存储分支信息,以“0”表示该共享存储区域用于存储微指令。本公开对此不进行限制。此外,每个共享存储区域可以分别对应地连接至多个寄存器,并仅受这些寄存器中的控制信息控制。例如,假设每个共享存储区域可以分别对应地连接至两个寄存器。那么,控制信息可以以“00”表示该共享存储区域用于存储分支信息,以“01”表示该共享存储区域用于存储微指令,以“10”标识该共享存储区域空置,以“11”标识该共享存储区域中因存在脏数据需要进行后续处理等。此外,每个共享存储区域还可以对应三个及三个以上寄存器,本公开对此不进行限制。
又例如,所述控制信息还可以指示对应的共享存储区域存储微指令还是分支信息还是指令。此时,每个共享存储区域可以分别对应地连接至两个寄存器中的控制信息,并仅受这两个寄存器中的控制信息控制。控制信息可以以“00”表示该共享存储区域用于存储分支信息,以“01”表示该共享存储区域用于存储微指令,以“10”表示该共享存储区域用于存储指令,以“11”表示该共享存储区域空置或用于日后的其他改进。本领域技术人员应当理解,上述表示方式仅是示例,本领域技术人员可以任意地设置控制信息的表示方式,本公开对此不进行限制。
接着,在步骤S520中,基于所述共享控制器中的控制信息,向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息。其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
例如,所述共享存储器中的每个共享存储区域均被配置为根据上述控制信息来存储微指令或分支信息。或者,所述共享存储器中的每个共享存储区域均被配置为根据所述控制信息来存储微指令或分支信息或指令。
例如,继续参考图4,微指令缓存控制单元可以被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取微指令。分支预测单元可以被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取分支信息。
例如,进一步参考图6来描述如何根据控制信息来向各个共享存储区域写入或从各个共享存储区域读取微指令或分支信息。在以下示例中,假设控制信息以“0”表示该共享存储区域用于存储分支信息,以“1”表示该共享存储区域用于存储微指令。
例如,可选地,上述步骤S520还包括:所述共享存储区域从所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个接收对应的一个或多个写入信号;所述共享存储区域从所述共享控制器接收包括控制信息的控制写入信号,以及响应于所述控制写入信号,所述共享存储区域在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号,并基于所述写入信号对应地写入与指令或微指令或分支信息相关的信息。
例如,上述与指令或微指令或分支信息相关的信息包括但不限于指令、微指令、分支信息、指令对应的使能信息、微指令对应的使能信息、分支信息对应的使能信息、指令对应的索引信息、微指令对应的索引信息、分支信息对应的索引信息、指令对应的写入数据、微指令对应的写入数据、分支信息对应的写入数据等等。本公开对此不进行限制。
例如,作为一个示例,上述的步骤可以用共享存储区域的写入接口来实现。例如,所述写入接口包括如图6所示的多路选择器。在每个写入时钟,每个多路选择器从所述共享控制器接收包括控制信息的控制写入信号、从所述微指令缓存控制单元接收用于写入微指令的写入信号、从所述分支预测单元接收用于写入分支信息的写入信号,和/或,从所述取指单元接收用于写入指令的写入信号。如果多路选择器接收到包括“0”的控制信息,那么多路选择器将选择用于写入分支信息的写入信号并在共享存储区域中写入对应的分支信息,然后丢弃用于写入微指令的写入信号。如果多路选择器接收到包括“1”的控制信息,那么多路选择器将选择用于写入微指令的写入信号并在共享存储区域中写入对应的微指令,然后丢弃用于写入分支信息的写入信号。由此,所述多路选择器用于响应于所述控制写入信号在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号。本领域技术人员应当理解,上述仅为示例,多路选择器的设置将根据控制信息的不同而不同,本公开并不以此为限。
例如,作为另一个示例,上述的步骤还可以用分支预测单元、微指令缓存控制单元、共享控制器和/或取指单元的配合来实现。例如,在每个写入时钟,分支预测单元和微指令缓存均接收到控制写入信号。如果分支预测单元和微指令缓存控制单元均接收到包括“0”的控制信息,那么分支预测单元被使能以向共享存储区域发送用于写入分支信息的写入信号并共享存储区域将写入对应的分支信息,而微指令缓存控制单元则在该写入时钟中禁止向该共享存储区域发送任何写入信号。如果分支预测单元和微指令缓存控制单元均接收到包括“1”的控制信息,那么分支预测单元将禁止向共享存储区域发送任何写入信号,而微指令缓存控制单元将被使能以向共享存储区域发送用于写入微指令的写入信号并共享存储区域将写入对应的微指令。
例如,可选地,上述步骤S520还包括:所述共享存储区域向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个返回读取信号,所述读取信号中包括所述共享存储区域中存储的指令或微指令或分支信息;所述共享控制器向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个发送包括所述控制信息的控制读取信号,以及所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个,基于所述控制读取信号,确定接收还是丢弃所述读取信号。作为一个示例,所述读取信号中包括读取数据,其可能是指令、微指令或分支信息。
例如,可选地,在共享存储区域向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个返回读取信号之前,所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个可能会向共享存储区域发送读取命令,所述读取命令用于读取以下各项中的至少一项指令对应的使能信息、微指令对应的使能信息、分支信息对应的使能信息、指令对应的索引信息、微指令对应的索引信息、分支信息对应的索引信息等。共享存储区域在知晓哪个地址已被使能且将被某个单元读取后,将继续执行上述的返回读取信号的过程。读取命令的发送和接收过程类似于上述的写入信号的发送和接收过程,本公开在此不再赘述。当然,本公开也不以此为限。
例如,上述的步骤可以用共享存储区域的读取接口、分支预测单元的接收端口和微指令缓存控制单元的接收端口来实现。在每个读取时钟,所述共享存储区域的读取接口可以向所述微指令缓存控制单元和所述分支预测单元均返回读取信号,所述读取信号中包括所述共享存储区域中存储的微指令或分支信息。同时,在该读取时钟,所述共享控制器向所述微指令缓存控制单元和所述分支预测单元均发送包括所述控制信息的控制读取信号。继续上述示例。如果分支预测单元接收到包括“0”的控制信息,那么分支预测单元的接收端口确定读取信号中包括的是分支信息,然后读取该分支信息。同时,微指令缓存控制单元也接收到包括“0”的控制信息,那么微指令缓存控制单元的接收端口确定读取信号中包括的是分支信息,然后丢弃该读取信号。类似地,如果分支预测单元接收到包括“1”的控制信息,那么分支预测单元的接收端口确定读取信号中包括的是微指令,然后丢弃该读取信号。同时,微指令缓存控制单元也接收到包括“1”的控制信息,那么微指令缓存控制单元的接收端口确定读取信号中包括的是微指令,然后读取该读取信号。本领域技术人员应当理解,上述仅为示例,读取接口和接收端口的设置将根据控制信息的不同而不同,本公开并不以此为限。
由此,本公开实施例通过在BTB(和/或预测器)/微指令缓存/指令缓存间共享芯片面积,并支持动态划分的机制,使得在不同应用场景下,对芯片面积的利用都能达到最优,从而实现了使用更小的芯片面积可以同时满足不同应用的需求。例如,对于程序中频繁使用的指令数较少的情况(此时BTB(和/或预测器)不需要太多容量),芯片上的共享存储容量被配置为微指令缓存使用,增大微指令缓存的容量。又例如,对于程序中频繁使用的指令数较多的情况(此时微指令缓存不需要太大容量),芯片上的共享存储容量被配置为BTB(和/或预测器)使用,增大BTB(和/或预测器)容量。因此,本公开实施例能够动态划分各种不同存储器容量,使得针对不同的场景都能实现优化存储空间,避免存储空间的浪费。
本公开实施例还可以应用于组织为直接映射结构、全相联映射结构和/或多路组相连结构的处理器内的存储结构。其中,对于直接映射结构,每一个地址都可通过模运算对应到一个唯一物理缓存行上。对于全相联映射结构,每一个地址都可被映射到任意物理缓存行上,在寻找某个地址中存储的数据时,需要遍历所有的物理缓存行。对于多路组相连结构,使用组相联的缓存把存储空间组织成多个组,每个组有若干物理缓存行。通过建立地址和组索引的对应关系,任意地址可以被载入到该地址对应组内的任一物理缓存行上。
以下参考图7和图8,以多路组相连结构的存储结构为例进一步描述本公开中分支预测单元或者微指令缓存控制单元对共享存储区域的写入或读取方式。本领域技术人员应当理解对于直接映射结构和全相联映射结构的存储空间,本公开也可以以类似的方式进行读写。值得注意的是,虽然预测器中的预测表通常被组织成类似多路组相联的结构,但是本公开并不以此为限。
图7示出了分支预测单元或者微指令缓存控制单元可识别的路与N个共享存储区域的对应关系的示意图。图7中仅显示了微指令缓存控制单元的逻辑结构图,但分支预测单元、微指令缓存控制单元或取指单元三者类似,区别在于不同控制逻辑单元可识别的路(way)的数量可能不同。
值得注意的是,“路”、“固定路”和“非固定路”均是一种虚拟逻辑概念,每一条“路”对应于一段存储区域。分支预测单元、微指令缓存控制单元或取指单元三者通过对“路”进行控制而完成物理意义上的存储区域的控制。通常来说,路和存储区域并不指代两个实体概念,而是路包含了存储区域,或者说路对应了存储区域。
作为一个示例,如图7所示,所述微指令缓存控制单元被配置为向与多个非固定路对应的共享存储区域写入微指令或从所述共享存储区域读取微指令。例如,所述微指令缓存控制单元包括路使能控制器。由此,所述微指令缓存控制单元进一步被配置为向M1个固定路或N1个非固定路对应的存储区域写入微指令或从所述存储区域读取微指令,M1和N1均为大于零的整数,所述M1个固定路中的每个固定路对应于微指令缓存中的私有存储区域,所述N1个非固定路中的每个非固定路对应于一段或多段共享存储区域。
例如,在该示例中,微指令缓存控制单元认为自己可对M1+N1个路进行存取,其中,每一路对应一段存储区域。因此,微指令缓存控制单元能够生成对M1+N1个路的读取/写入信号,其中M1个发送到私有存储区域,N1个发送到共享存储区域中被分配给自己的区域。
类似地,所述分支预测单元被配置为向与多个非固定路对应的共享存储区域写入分支信息或从所述共享存储区域读取分支信息。例如,所述分支预测单元可以包括路使能控制器。由此,所述分支预测单元被配置为向M2个固定路或N2个非固定路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,M2和N2均为大于零的整数,所述M2个固定路中的每个固定路对应于分支目标缓冲器或预测器的私有存储区域,所述N2个非固定路中的每个非固定路对应于一段或多段共享存储区域。
类似地,所述取指单元被配置为向与多个非固定路对应的共享存储区域写入指令或从所述共享存储区域读取指令。例如,所述取指单元可以包括路使能控制器。由此,所述取指单元被配置为向M3个固定路或N3个非固定路对应的存储区域写入指令或从所述存储区域读取指令,其中,M3和N3均为大于零的整数,所述M3个固定路中的每个固定路对应于指令缓存的私有存储区域,所述N3个非固定路中的每个非固定路对应于一段或多段共享存储区域。
M1、M2和M3可以相同也可以不同。N1、N2和N3可以相同也可以不同。以下以微指令缓存控制单元中的多个非固定路的数量N1、所述分支预测单元中的多个非固定路的数量N2、和所述多个共享存储区域的数量N三者相同且均等于N为例来进行说明。本领域技术人员应当理解本公开并不以此为限。
可选地,所述微指令缓存控制单元可以被配置为向M1个固定路中的每个固定路对应的微指令缓存中的私有存储区域写入或从所述私有存储区域读取微指令。其中M1个固定路对应微指令缓存中的M1个私有存储区域。而所述微指令缓存控制单元中的N个非固定路均可以被使能或关闭(禁用)。
类似地,所述分支预测单元可以被配置为向M2个固定路中的每个固定路对应的分支目标缓冲器中的私有存储区域写入或从所述私有存储区域读取分支信息。其中M2个固定路对应BTB中的M2个私有存储区域。而所述分支预测单元中的N个非固定路均可以被使能或关闭(禁用)。也可以类似地设置取指单元中的固定路和非固定路的数量和结构,本公开在此不再赘述。
类似地,在一些示例中,所述分支预测单元中的M2个固定路中的每个固定路还可以向各种预测器中对应的私有存储区域写入或从所述私有存储区域读取分支信息。其中M2个固定路对应各种预测器中的M2个私有存储区域。而所述分支预测单元中的N个非固定路均可以被使能或关闭(禁用)。例如,各个预测器的预测表也可以以类似BTB中的路(way)的概念而被存取。也即,每张预测表也可以对应私有存储区域,或者共享存储区域,其覆盖范围和容量需求可以与BTB一致。
可选地,路使能控制器可以包括多个寄存器组成的控制信息存储器,例如N个寄存器。路使能控制器中的各个寄存器可以对应地保存共享控制器中各个寄存器中的控制信息。例如,可选地,根据共享控制器中的控制信息,路使能控制器被设定为相应的值:若共享控制器配置为BTB使用,则分支预测单元中相应的路使能控制器中的寄存器被设置为1(表示使能),微指令缓存控制单元中相应的路使能控制器中的寄存器被设置为0(表示关闭/禁用);反之亦然。
由此,上述的步骤S520还包括:对于微指令缓存控制单元,所述微指令缓存控制单元的路使能控制器基于所述控制信息,使能所述N1个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令。而对于分支预测单元,所述分支预测单元的路使能控制器基于所述控制信息,使能所述N个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息。
值得注意的是,虽然在图7中非固定路与共享存储区域被示出为一一对应的关系。但在实际应用中,非固定路与共享存储区域也可以是非一一对应的关系。比如。两个共享存储区域才能对应于用于存储分支信息的一个非固定路限定的存储容量;三个共享存储区域才能存储微指令的一个非固定路限定的存储容量。上述对应关系取决于分支预测单元、微指令缓存控制单元对应一个非固定路各自所需要的存储容量。本公开并不以为限。
此外,本公开还公开了包括路容量控制器的微指令缓存控制单元,所述微指令缓存控制单元被配置为:向M1个固定路中的至少一个固定路对应的微指令缓存中的私有存储区域写入微指令或从所述至少一个固定路对应的微指令缓存中的私有存储区域读取微指令;基于控制信息,利用所述路容量控制器使能N1个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令;其中,M1和N1均为大于零的整数。其中,N1与N可以相同也可以不同。
此外,本公开还公开了一种分支预测单元,所述分支预测单元包括路容量控制器,所述分支预测单元被配置为:向M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域写入分支信息或从所述M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域读取分支信息;基于控制信息,利用所述路容量控制器使能N2个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息;其中,M2和N2均为大于零的整数,N,N1与N2可以相同也可以不同。
此外,本公开还公开了包括路容量控制器的取指单元,所述取指单元被配置为:向M3个固定路中的至少一个固定路对应的指令缓存中的私有存储区域写入指令或从所述至少一个固定路对应的指令缓存中的私有存储区域读取微指令;基于控制信息,利用所述路容量控制器使能N3个非固定路中的一个多个非固定路,以及响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取指令;其中,M3和N3均为大于零的整数。其中,N3与N可以相同也可以不同,N1-N3三者可以相同也可以不同,M1-M3三者可以相同也可以不同。
图8示出了控制逻辑单元(例如,分支预测单元、微指令缓存控制单元或取指单元)对应的路与N个共享存储区域之间的对应关系的另一示意图。图8中仅显示了微指令缓存控制单元的对应的路,但分支预测单元、微指令缓存控制单元或取指单元三者类似,区别在于不同控制逻辑单元对应的路(way)的数量可能不同。
值得注意的是,“路”、“固定路”和“可扩充路”均是一种虚拟逻辑概念,每一条“路”对应于一段存储区域。分支预测单元、微指令缓存控制单元或取指单元三者通过对“路”进行控制而完成物理意义上的存储区域的控制。
如图8所示,所述微指令缓存控制单元被配置为向多个路对应的存储区域写入微指令或从所述存储区域读取微指令,其中,所述多个路中的每个路对应的存储区域包括微指令缓存中的私有存储区域以及共享存储器中的共享存储区域。例如,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M1和N为大于零的整数。例如,所述M1个路中的每个固定路可以向微指令缓存中的对应的私有存储区域写入微指令或从所述私有存储区域读取微指令。所述M1个路中的每个可扩充路可以向对应的共享存储器中的共享存储区域写入微指令或从所述共享存储区域读取微指令。
例如,从微指令缓存控制单元看来,它能够识别M1个路,因此,其能够对M1个路进行写入或者读取。这M1个路所对应的存储区域包括了私有存储区域和可配置的共享区域。硬件上根据控制寄存器配置和读取/写入地址(或称为索引index),决定将对M1个路的写入信号发送到私有区域或者共享区域,以及从私有区域或者共享区域接收读取信号。
作为一个示例,假设第2路的控制寄存器显示其有2048个表项(item)的私有存储区域和2048个表项的共享存储区域,那么就将写入信息中地址落在0至2048的发给私有存储区域,2048至4096的发给共享存储区域;读取也类似,读取地址0至2048的就从私有存储区域接收信号,2048至4096就从共享存储区域接收信号。
类似地,所述分支预测单元被配置为向多个路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,所述多个路中的每个路对应的存储区域包括分支目标缓冲器或预测器中的私有存储区域以及共享存储器中的共享存储区域。例如,所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域和与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M2和N为大于零的整数。例如,所述M2个路中的每个固定路可以向分支目标缓冲器或预测器中的对应的私有存储区域写入分支信息或从所述私有存储区域读取分支信息。所述M2个路中的每个可扩充路可以向对应的共享存储器中的共享存储区域写入分支信息或从所述共享存储区域读取微分支。也可以类似地设置取指单元中的各条路的数量和结构,本公开在此不再赘述。
可选地,微指令缓存控制单元的路容量控制器可以包括多个控制信息存储器,例如M1个控制信息存储器。作为一个示例,每个控制信息存储器均包括多个寄存器。路使能控制器中的各个控制信息存储器可以对应地保存各个可扩充路对应的一个或多个共享存储区域的序号。例如,如果共享控制器配置某个共享存储区域j(j小于N)与微指令缓存控制单元的可扩充路i(i小于M1)相对应,那么可扩充路i对应的控制信息存储器中将保存j的值。如果共享控制器配置共享存储区域j1和j2(j1和j2均小于N)被微指令缓存控制单元的可扩充路i(i小于M1)使用,那么可扩充路i对应的控制信息存储器中将保存j1和j2的值。或者,如果共享存储区域j1和j2连续,那么可扩充路i对应的控制信息存储器中将保存j1的值,并以某个标示位指示从j1起的多少个共享存储区域均被配置为由微指令缓存控制单元的可扩充路i使用。类似地,分支预测单元和取指单元也可以以上方式设置其内部的路容量控制器。
由此,上述的步骤S520还包括:对于微指令缓存控制单元,所述微指令缓存控制单元的路容量控制器基于所述控制信息,使能所述M1个可扩充路中一个或多个可扩充路,并确定被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取微指令。而对于分支预测单元,所述路容量控制器基于所述控制信息,使能所述M2个可扩充路中一个或多个可扩充路,并确定被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息。
值得注意的是,虽然在图8中可扩充路与共享存储区域被示出为多对多的关系。但在实际应用中,可扩充路与共享存储区域也可以是一一对应的关系(此时M1=N)。上述对应关系取决于分支预测单元、微指令缓存控制单元对应一个可扩充路各自所需要的存储容量。本公开并不以为限。
此外,本公开还公开了一种微指令缓存控制单元,其中,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述微指令缓存单元被配置为:向与至少一个固定路相对应的微指令缓存中的对应的私有存储区域写入微指令或从所述私有存储区域读取微指令;基于控制信息,利用所述路容量控制器,使能所述M1个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取微指令;其中,M1和N为大于零的整数。
此外,本公开还公开了一种分支预测单元,其中,所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述分支预测单元被配置为:向与至少一个固定路相对应的分支目标缓冲器或预测器中的对应的私有存储区域写入分支信息或从所述私有存储区域读取分支信息;基于控制信息,利用所述路容量控制器,使能所述M2个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息;其中,M2和N为大于零的整数。
此外,本公开还公开了一种取指单元,其中,所述取指单元包括对M3个路进行控制的路容量控制器,所述M3个路中的每个路对应的存储区域包括与一个固定路相对应的指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述指令缓存单元被配置为:向与至少一个固定路相对应的指令缓存中的对应的私有存储区域写入指令或从所述私有存储区域读取指令;基于控制信息,利用所述路容量控制器,使能所述M3个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取指令;其中,M3和N为大于零的整数。
上述的M1至M3均可以相同或不同,本公开并不以此为限。
由此,针对各种类型的存储结构,尤其是多路组相连结构的存储结构,本公开实施例均能够与其兼容,并实现动态划分各种不同存储器容量,使得针对不同的场景都能实现优化存储空间,避免存储空间的浪费。
对应地,本公开还公开了一种用于中央处理器的处理装置,所述处理装置包括分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器,所述共享存储器包括多个共享存储区域,每个共享存储区域与所述共享控制器中对应的一个或多个寄存器相连接,其中,所述共享控制器中的一个或多个寄存器,被配置为存储与其对应的共享存储区域的控制信息,所述共享存储器中的每个共享存储区域,被配置为根据所述控制信息,存储微指令或分支信息,所述微指令缓存控制单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取微指令;所述分支预测单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取分支信息。
由此,本公开还公开了一种共享存储器,所述共享存储器包括多个共享存储区域,每个共享存储区域与共享控制器中的一个或多个控制信息存储器相对应,例如,每个共享存储区域可以与共享控制器中对应的一个或多个寄存器相连接。其中,每个共享存储区域被配置为:根据所述共享控制器中对应的一个或多个寄存器存储的控制信息,存储微指令或分支信息,其中,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
此外,本公开还公开了一种共享控制器,所述多个控制信息存储器中的一个或多个控制信息存储器与共享存储器中的各个共享存储区域相对应。例如,所述共享控制器包括多个寄存器,所述多个寄存器中的一个或多个寄存器连接至共享存储器中的对应的共享存储区域。其中,所述一个或多个控制信息存储器被配置为:存储控制信息,所述控制信息指示对应的共享存储区域存储微指令还是分支信息,其中,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
该用于中央处理器的处理装置、共享存储器、共享控制器的工作方式可以参见上述各附图的描述,本公开在此不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
需要说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。
Claims (18)
1.一种利用共享存储器存储数据的方法,所述共享存储器包括多个共享存储区域,包括:
对于所述共享存储器中的各个共享存储区域,设置共享控制器中与所述共享存储区域对应的控制信息,以及
基于所述共享控制器中的控制信息,向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息,
其中,所述指令由取指单元读取或写入,所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
2.如权利要求1所述的方法,其中,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述共享存储区域从所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个接收对应的一个或多个写入信号;
所述共享存储区域从所述共享控制器接收包括控制信息的控制写入信号,以及
响应于所述控制写入信号,所述共享存储区域在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号,并基于所述写入信号对应地写入与指令或微指令或分支信息相关的信息。
3.如权利要求2所述的方法,其中,所述各个共享存储区域包括写入接口,所述写入接口包括多路选择器,所述多路选择器用于响应于所述控制写入信号在所述一个或多个写入信号中选择一个写入信号并丢弃其他写入信号。
4.如权利要求1所述的方法,其中,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述共享存储区域向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个返回读取信号,所述读取信号中包括所述共享存储区域中存储的指令或微指令或分支信息;
所述共享控制器向所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个发送包括所述控制信息的控制读取信号,以及
所述取指单元、所述微指令缓存控制单元、或所述分支预测单元中的一个或多个,基于所述控制读取信号,确定接收还是丢弃所述读取信号。
5.如权利要求1所述的方法,其中,
所述取指单元被配置为向与多个非固定路对应的共享存储区域写入指令或从所述共享存储区域读取指令,以及/或者
所述微指令缓存控制单元被配置为向与多个非固定路对应的共享存储区域写入微指令或从所述共享存储区域读取微指令,以及/或者
所述分支预测单元被配置为向与多个非固定路对应的共享存储区域写入分支信息或从所述共享存储区域读取分支信息。
6.如权利要求5所述的方法,其中,所述微指令缓存控制单元包括路使能控制器,所述微指令缓存控制单元被配置为向M1个固定路或N1个非固定路对应的存储区域写入微指令或从所述存储区域读取微指令,M1和N1均为大于零的整数,所述M1个固定路中的每个固定路对应于微指令缓存中的私有存储区域,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述路使能控制器基于所述控制信息,使能所述N1个非固定路中的一个多个非固定路,以及
响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令。
7.如权利要求5所述的方法,其中,所述分支预测单元包括路使能控制器,所述分支预测单元被配置为向M2个固定路或N2个非固定路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,M2和N2均为大于零的整数,所述M2个固定路中的每个固定路对应于分支目标缓冲器或预测器的私有存储区域,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述路使能控制器基于所述控制信息,使能所述N2个非固定路中的一个多个非固定路,以及
响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息。
8.如权利要求1所述的方法,其中,
所述微指令缓存控制单元被配置为向多个路对应的存储区域写入微指令或从所述存储区域读取微指令,其中,所述多个路中的每个路对应的存储区域包括微指令缓存中的私有存储区域以及共享存储器中的共享存储区域;以及/或者
所述分支预测单元被配置为向多个路对应的存储区域写入分支信息或从所述存储区域读取分支信息,其中,所述多个路中的每个路对应的存储区域包括分支目标缓冲器或预测器中的私有存储区域以及共享存储器中的共享存储区域,以及/或者
所述取指单元包括:被配置为向多个路对应的存储区域写入指令或从所述多个路对应的存储区域读取指令,其中,所述多个路中的每个路对应的存储区域包括指令缓存中的私有存储区域以及共享存储器中的共享存储区域。
9.如权利要求8所述的方法,其中,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M1和N为大于零的整数,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述路容量控制器基于所述控制信息,使能一个或多个可扩充路,并确定被使能的每个可扩充路对应的一个或多个共享存储区域;
响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述共享存储区域中读取微指令。
10.如权利要求8所述的方法,其中,所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域和与一个可扩充路相对应的共享存储器中的共享存储区域,所述共享存储区域的数量为N,其中,M2和N为大于零的整数,所述向各个共享存储区域写入或从各个共享存储区域读取指令或微指令或分支信息还包括:
所述路容量控制器基于所述控制信息,使能所述M2个可扩充路中一个或多个可扩充路,并确定被使能的每个可扩充路对应的一个或多个共享存储区域;
响应于所述一个或多个可扩充路被使能,向所述被使能的可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息。
11.一种用于中央处理器的处理装置,包括取指单元、分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器,所述处理装置被配置为执行方法1-10中的一个或多个方法。
12.一种用于中央处理器的处理装置,所述处理装置包括分支预测单元、微指令缓存控制单元、共享存储器以及共享控制器,所述共享存储器包括多个共享存储区域,每个共享存储区域与共享控制器中的一个或多个控制信息存储器相对应,其中,
所述共享控制器中的一个或多个控制信息存储器,被配置为存储与其对应的共享存储区域的控制信息,
所述共享存储器中的每个共享存储区域,被配置为根据所述控制信息,存储微指令或分支信息,
所述微指令缓存控制单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取微指令;
所述分支预测单元,被配置为根据所述控制信息,向所述共享存储器写入或从所述共享存储器读取分支信息。
13.一种共享存储器,所述共享存储器包括多个共享存储区域,每个共享存储区域与共享控制器中的一个或多个控制信息存储器相对应,其中,每个共享存储区域被配置为:
根据所述共享控制器中对应的一个或多个控制信息存储器存储的控制信息,存储指令还是微指令还是分支信息,
其中,所述指令由取指单元读取或写入、所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
14.一种共享控制器,所述共享控制器包括多个控制信息存储器,所述多个控制信息存储器中的一个或多个控制信息存储器与共享存储器中的各个共享存储区域相对应,其中,所述一个或多个控制信息存储器被配置为:存储控制信息,所述控制信息指示对应的共享存储区域用于存储指令还是微指令还是分支信息,其中,所述指令由取指单元读取或写入、所述微指令由微指令缓存控制单元读取或写入,所述分支信息由分支预测单元读取或写入。
15.一种微指令缓存控制单元,包括路容量控制器,所述微指令缓存控制单元被配置为:
向M1个固定路中的至少一个固定路对应的微指令缓存中的私有存储区域写入微指令或从所述至少一个固定路对应的微指令缓存中的私有存储区域读取微指令;
基于控制信息,利用所述路容量控制器使能N1个非固定路中的一个多个非固定路,以及
响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取微指令;
其中,M1和N1均为大于零的整数。
16.一种分支预测单元,包括路容量控制器,被配置为:
向M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域写入分支信息或从所述M2个固定路对应的分支目标缓冲器或预测器中的私有存储区域读取分支信息;
基于控制信息,利用所述路容量控制器使能N2个非固定路中的一个多个非固定路,以及
响应于所述一个或多个非固定路被使能,向所述一个或多个非固定路对应的共享存储区域写入或从所述共享存储区域中读取分支信息;
其中,M2和N2均为大于零的整数。
17.一种微指令缓存控制单元,其中,所述微指令缓存控制单元包括对M1个路进行控制的路容量控制器,所述M1个路中的每个路对应的存储区域包括与一个固定路相对应的微指令缓存中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述微指令缓存单元被配置为:
向与至少一个固定路相对应的微指令缓存中的对应的私有存储区域写入微指令或从所述私有存储区域读取微指令;
基于控制信息,利用所述路容量控制器,使能所述M1个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;
响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取微指令;
其中,M1和N为大于零的整数。
18.一种分支预测单元,其中,所述分支预测单元包括对M2个路进行控制的路容量控制器,所述M2个路中的每个路对应的存储区域包括与一个固定路相对应的分支目标缓冲器或预测器中的私有存储区域以及与一个可扩充路相对应的共享存储器中的共享存储区域,所述分支预测单元被配置为:
向与至少一个固定路相对应的分支目标缓冲器或预测器中的对应的私有存储区域写入分支信息或从所述私有存储区域读取分支信息;
基于控制信息,利用所述路容量控制器,使能所述M2个可扩充路中一个或多个可扩充路,并确定N个共享存储区域中与被使能的可扩充路中的每个可扩充路对应的一个或多个共享存储区域;
响应于所述可扩充路被使能,向所述可扩充路对应的一个或多个共享存储区域写入或从所述一个或多个共享存储区域中读取分支信息;
其中,M2和N为大于零的整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435837.5A CN114116533B (zh) | 2021-11-29 | 2021-11-29 | 利用共享存储器存储数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435837.5A CN114116533B (zh) | 2021-11-29 | 2021-11-29 | 利用共享存储器存储数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114116533A true CN114116533A (zh) | 2022-03-01 |
CN114116533B CN114116533B (zh) | 2023-03-10 |
Family
ID=80367722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111435837.5A Active CN114116533B (zh) | 2021-11-29 | 2021-11-29 | 利用共享存储器存储数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116533B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098169A (zh) * | 2022-06-24 | 2022-09-23 | 海光信息技术股份有限公司 | 基于容量共享的调取指令的方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3570006A (en) * | 1968-01-02 | 1971-03-09 | Honeywell Inc | Multiple branch technique |
US5651125A (en) * | 1993-10-29 | 1997-07-22 | Advanced Micro Devices, Inc. | High performance superscalar microprocessor including a common reorder buffer and common register file for both integer and floating point operations |
CN101201733A (zh) * | 2006-12-13 | 2008-06-18 | 国际商业机器公司 | 预解码用于执行的指令的方法及装置 |
CN104252425A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种指令缓存的管理方法和处理器 |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
CN110692039A (zh) * | 2017-05-26 | 2020-01-14 | 微软技术许可有限责任公司 | 在块提交之前的微处理器指令预分派 |
CN111930428A (zh) * | 2020-09-27 | 2020-11-13 | 南京芯瞳半导体技术有限公司 | 一种条件分支指令的融合方法、装置及计算机存储介质 |
CN112699068A (zh) * | 2015-03-27 | 2021-04-23 | 英特尔公司 | 共享缓冲存储器路由 |
CN113535236A (zh) * | 2020-04-20 | 2021-10-22 | 英特尔公司 | 基于指令集体系结构的和自动的加载跟踪的方法和装置 |
-
2021
- 2021-11-29 CN CN202111435837.5A patent/CN114116533B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3570006A (en) * | 1968-01-02 | 1971-03-09 | Honeywell Inc | Multiple branch technique |
US5651125A (en) * | 1993-10-29 | 1997-07-22 | Advanced Micro Devices, Inc. | High performance superscalar microprocessor including a common reorder buffer and common register file for both integer and floating point operations |
CN101201733A (zh) * | 2006-12-13 | 2008-06-18 | 国际商业机器公司 | 预解码用于执行的指令的方法及装置 |
CN104252425A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种指令缓存的管理方法和处理器 |
CN104375958A (zh) * | 2013-08-15 | 2015-02-25 | 国际商业机器公司 | 高速缓存存储器管理事务性存储器访问请求 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN112699068A (zh) * | 2015-03-27 | 2021-04-23 | 英特尔公司 | 共享缓冲存储器路由 |
CN108696461A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于智能网络接口卡的共享存储器 |
CN110692039A (zh) * | 2017-05-26 | 2020-01-14 | 微软技术许可有限责任公司 | 在块提交之前的微处理器指令预分派 |
CN113535236A (zh) * | 2020-04-20 | 2021-10-22 | 英特尔公司 | 基于指令集体系结构的和自动的加载跟踪的方法和装置 |
CN111930428A (zh) * | 2020-09-27 | 2020-11-13 | 南京芯瞳半导体技术有限公司 | 一种条件分支指令的融合方法、装置及计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
XIAOWEN CHEN等: "Supporting Distributed Shared Memory on multi-core Network-on-Chips using a dual microcoded controller", 《IEEE》 * |
郭阳: "异步微处理器设计方法研究", 《计算机工程与应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098169A (zh) * | 2022-06-24 | 2022-09-23 | 海光信息技术股份有限公司 | 基于容量共享的调取指令的方法及装置 |
CN115098169B (zh) * | 2022-06-24 | 2024-03-05 | 海光信息技术股份有限公司 | 基于容量共享的调取指令的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114116533B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860326B2 (en) | Multi-threaded instruction buffer design | |
US5235697A (en) | Set prediction cache memory system using bits of the main memory address | |
US5535361A (en) | Cache block replacement scheme based on directory control bit set/reset and hit/miss basis in a multiheading multiprocessor environment | |
EP3729280B1 (en) | Dynamic per-bank and all-bank refresh | |
US12038856B2 (en) | Memory controller with a plurality of command sub-queues and corresponding arbiters | |
EP2423821A2 (en) | Processor, apparatus, and method for fetching instructions and configurations from a shared cache | |
JP2005174341A (ja) | 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ | |
US20210064535A1 (en) | Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof | |
US9990299B2 (en) | Cache system and method | |
CN102073533A (zh) | 支持动态二进制翻译的多核体系结构 | |
US20090177842A1 (en) | Data processing system and method for prefetching data and/or instructions | |
US10114761B2 (en) | Sharing translation lookaside buffer resources for different traffic classes | |
US6038642A (en) | Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system | |
CN114116533B (zh) | 利用共享存储器存储数据的方法 | |
KR20190087500A (ko) | 메모리 어드레스 변환 | |
JP2561261B2 (ja) | バッファ記憶アクセス方法 | |
EP2562652B1 (en) | System and method for locking data in a cache memory | |
EP1604286B1 (en) | Data processing system with cache optimised for processing dataflow applications | |
WO2006027643A1 (en) | A virtual address cache and method for sharing data stored in a virtual address cache | |
US8356141B2 (en) | Identifying replacement memory pages from three page record lists | |
KR101645003B1 (ko) | 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치 | |
US11176039B2 (en) | Cache and method for managing cache | |
JP2008511882A (ja) | 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 | |
US8495303B2 (en) | Processor and computer system with buffer memory | |
US9081673B2 (en) | Microprocessor and memory access method |
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 |