首页 / 专利库 / 电脑零配件 / 计算机系统 / 硬件 / 中央处理器 / 算术逻辑单元 / 一种访问数据缓存的方法和处理器

一种访问数据缓存的方法和处理器

阅读:492发布:2020-05-14

专利汇可以提供一种访问数据缓存的方法和处理器专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种 访问 数据缓存的方法和处理器,涉及计算机领域,能够减小数据查找的范围,降低访问延迟,提高系统性能。该处理器的数据缓存器为一级缓存,一级缓存包括私有数据缓存和共享数据缓存,私有数据缓存包括多个私有缓存,私有数据缓存用于存储线程的私有数据,共享数据缓存用于存储线程之间的共享数据,当访问处理器的数据缓存器中的数据时,根据数据对应的物理地址附加的标志位确定数据的数据类型,数据类型包括私有数据和共享数据,根据访问的数据确定数据对应的线程,进而根据线程和数据类型访问线程对应的数据缓存,以获取数据缓存中的数据。本发明实施例用于划分数据缓存和访问数据缓存。,下面是一种访问数据缓存的方法和处理器专利的具体信息内容。

1.一种处理器,其特征在于,所述处理器包括程序计数器、寄存器堆、指令预取部件、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存、内部总线以及数据缓存器,其中,所述数据缓存器为一级缓存,所述一级缓存包括私有数据缓存和共享数据缓存,所述私有数据缓存包括多个私有缓存,所述私有数据缓存用于存储线程的私有数据,所述共享数据缓存用于存储所述线程之间的共享数据,所述处理器为同时多线程结构,所述私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存;
所述处理器用于:
访问所述处理器的数据缓存器中的数据时,根据所述数据对应的物理地址中附加的标志位确定所述数据的数据类型,所述数据类型包括私有数据和共享数据;
根据访问的数据确定所述数据对应的线程,进而根据所述线程和所述数据类型访问所述线程对应的数据缓存,以获取所述数据缓存中的数据,所述数据缓存为私有数据缓存或共享数据缓存。
2.一种访问数据缓存的方法,其特征在于,
所述方法用于一种处理器,所述处理器包括程序计数器、寄存器堆、指令预取部件、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存、内部总线以及数据缓存器,其中,所述数据缓存器为一级缓存,所述一级缓存包括私有数据缓存和共享数据缓存,所述私有数据缓存包括多个私有缓存,所述私有数据缓存用于存储线程的私有数据,所述共享数据缓存用于存储所述线程之间的共享数据;所述处理器为同时多线程结构,所述私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存;
所述方法包括:
当访问所述处理器的数据缓存器中的数据时,根据所述数据对应的物理地址中附加的标志位确定所述数据的数据类型,所述数据类型包括私有数据和共享数据;
根据访问的数据确定所述数据对应的线程,进而根据所述线程和所述数据类型访问所述线程对应的数据缓存,以获取所述数据缓存中的数据,所述数据缓存为私有数据缓存或共享数据缓存。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述私有数据缓存中不存在所述数据,则访问主存储器,并将从所述主存储器中获取所述数据所在的缓存行回填至所述线程对应的私有数据缓存中;
若所述共享数据缓存中不存在所述数据,则访问所述主存储器,并将从所述主存储器中获取所述数据所在的缓存行回填至所述共享数据缓存中。
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据对应的物理地址中附加的标志位确定所述数据的数据类型包括:
若所述物理地址中的标志位为第一标志,则确定所述数据的数据类型为私有数据;
若所述物理地址中的标志位为第二标志,则确定所述数据的数据类型为共享数据。
5.根据权利要求4所述的方法,其特征在于,所述根据所述线程和所述数据类型访问所述线程对应的数据缓存包括:
若所述数据类型为所述私有数据,则访问所述线程对应的私有数据缓存;
若所述数据类型为所述共享数据,则访问所述共享数据缓存。

说明书全文

一种访问数据缓存的方法和处理器

技术领域

[0001] 本发明涉及计算机领域,尤其涉及一种访问数据缓存的方法和处理器。

背景技术

[0002] 处理器进入多核时代后,访存一直是系统性能的瓶颈,内存系统性能的增长速度严重滞后处理器性能的增长速度,访存的速度严重限制计算速度的发挥。目前的多核cache(缓冲存储器)通常涉及为L1cache为私有cache,其它层次为共享cache的多级层次结构。
[0003] 多核处理器提供了更大的并行计算能,能够同时运行多种程序负载,但是在共享cache的多核上同时运行的程序间会有性能干扰问题,主要是由于程序数据在共享cache上发生的核间替换,使得程序性能受到影响,因为被替换的数据再次使用时需要再次访存,增加了访存延迟和访存带宽,使得资源利用率低和程序性能难以确定,对于访存密集但重用率低的流式应用程序和访存不密集但重用率高的程序混合运行时,问题会更加突出。
[0004] 因此,要对cache进行合理管理,现有技术中,一种实现方式为将共享cache划分成多份,每一份对应一个关联的实体,该实体通常是操作系统最小的调度单位,如线程。但是这种划分方法没有考虑到线程之间存在共享数据的可能性,如果存在共享数据但没有共享cache,线程之间的共享数据会在私有cache中存在多个副本,从而需要更多的cache空间,还需要维护多个副本的cache一致性;还有一种实现方式为通过页着色技术实现cache划分,但是这种方法限制了每个线程所能使用的物理内存空间,对于独立的多个进程能够做到很好的cache隔离,但是在流式数据应用的多线程程序中,线程之间有很多共享数据,进行完全隔离是不适宜的。也就是说页着色技术适用于进程之间的cache隔离,不太适合同一进程内多个线程之间的cache隔离。

发明内容

[0005] 本发明的实施例提供一种访问数据缓存的方法和处理器,能够减小数据查找的范围,降低访问延迟,提高系统性能。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] 第一方面,提供一种处理器,包括程序计数器、寄存器堆、指令预取部件、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存以及内部总线,还包括:
[0008] 数据缓存器,所述数据缓存器为一级缓存,所述一级缓存包括私有数据缓存和共享数据缓存,所述私有数据缓存包括多个私有缓存,所述私有缓存用于存储线程的私有数据,所述共享数据缓存用于存储所述线程之间的共享数据。
[0009] 结合第一方面,在第一方面的第一种可能实现的方式中,所述处理器为同时多线程结构,所述私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存。
[0010] 第二方面,提供一种访问数据缓存的方法,包括:
[0011] 当访问处理器的数据缓存器中的数据时,根据所述数据对应的物理地址中附加的标志位确定所述数据的数据类型,所述数据类型包括私有数据和共享数据;
[0012] 根据访问的数据确定所述数据对应的线程,进而根据所述线程和所述数据类型访问所述线程对应的数据缓存,以获取所述数据缓存中的数据,所述数据缓存为私有数据缓存或共享数据缓存。
[0013] 结合第二方面,在第二方面的第一种可能实现的方式中,所述方法还包括:
[0014] 若所述私有数据缓存中不存在所述数据,则访问主存储器,并将从所述主存储器中获取所述数据所在的缓存行回填至所述线程对应的私有数据缓存中;
[0015] 若所述共享数据缓存中不存在所述数据,则访问所述主存储器,并将从所述主存储器中获取所述数据所在的缓存行回填至所述共享数据缓存中。
[0016] 结合第二方面的第一种可能实现的方式,在第二种可能实现的方式中,所述根据所述数据对应的物理地址中附加的标志位确定所述数据的数据类型包括:
[0017] 若所述物理地址中的标志位为第一标志,则确定所述数据的数据类型为私有数据;
[0018] 若所述物理地址中的标志位为第二标志,则确定所述数据的数据类型为共享数据。
[0019] 结合第二方面的第二种可能实现的方式,在第三种可能实现的方式中,所述根据所述线程和所述数据类型访问所述线程对应的数据缓存包括:
[0020] 若所述数据类型为所述私有数据,则访问所述线程对应的私有数据缓存;
[0021] 若所述数据类型为所述共享数据,则访问所述共享数据缓存。
[0022] 结合第二方面的第三种可能实现的方式,在第四种可能实现的方式中,所述私有数据缓存包括多个私有缓存,所述私有数据缓存用于存储线程的私有数据,所述共享数据缓存用于存储所述线程之间的共享数据;
[0023] 其中,所述私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存。
[0024] 本发明实施例提供一种访问数据缓存的方法和处理器,该处理器包括程序计数器、寄存器堆、指令预取部件、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存以及内部总线,还包括数据缓存器,数据缓存器为一级缓存,一级缓存包括私有数据缓存和共享数据缓存,私有数据缓存包括多个私有缓存,私有缓存用于存储线程的私有数据,共享数据缓存用于存储线程之间的共享数据,当访问处理器的数据缓存器中的数据时,根据数据对应的物理地址中附加的标志位确定数据的数据类型,数据类型包括私有数据和共享数据,根据访问的数据确定数据对应的线程,进而根据线程和数据类型访问线程对应的数据缓存,以获取数据缓存中的数据,数据缓存为私有数据缓存或共享数据缓存,能够减小数据查找的范围,降低访问延迟,提高系统性能。附图说明
[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1为本发明实施例提供的一种处理器结构示意图;
[0027] 图2为本发明实施例提供的一种缓存划分示意图;
[0028] 图3为本发明实施例提供的一种访问数据缓存的方法流程示意图。

具体实施方式

[0029] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030] 本发明实施例提供一种处理器01,如图1所示,包括程序计数器011、寄存器堆012、指令预取部件013、指令译码部件014、指令发射部件015、地址生成单元016、算术逻辑单元017、共享浮点单元018、共享指令缓存019、以及内部总线,还包括:
[0031] 数据缓存器021,数据缓存器021为一级缓存,一级缓存包括私有数据缓存0211和共享数据缓存0212,私有数据缓存0211包括多个私有缓存0211a,私有数据缓存0211用于存储线程的私有数据,共享缓存0212用于存储线程的共享数据。
[0032] 其中,处理器01为同时多线程结构,私有数据缓存0211与硬件线程一一对应,所有硬件线程公用一个共享数据缓存0212。该同时多线程结构为允许在一个时钟周期内发射多个线程的指令到功能部件上执行,以提高功能部件的利用率。私有缓存为单个用户所用,共享缓存为多个用户共享使用。
[0033] PC(Program Counter,程序计数器)有16个,为PC0~PC15,一个处理器核内逻辑处理器核(硬件线程)的个数与PC的个数是一致的。
[0034] GRF(General Register File,寄存器堆),一个处理器核内的逻辑处理器核对应一个GRF,数量上与PC的数量一致。
[0035] Fetch(指令预取部件)用于获取指令,Decoder(指令译码部件)用于对指令进行解码,Issue为指令发射部件,用于发射指令,AGU(Address Generator Unit,地址生成单元)为进行所有地址计算的模,生成一个用于对访问存储器进行控制的地址。ALU(Arithmetic Logic Unit,算术逻辑单元)是CPU(Central Processing Unit,中央处理器)的执行单元,可以由″And Gate″(与)和″Or Gate″(或门)构成的算术逻辑单元。共享浮点单元(Shared Float Point Unit)为处理器中专门进行浮点算术运算的电路单元,共享指令缓存用于存储指令,内部总线用于连接处理器内各部件。
[0036] 数据缓存器(Cache)021为处理器01的第一级缓存L1Cache(Level 1 Cache),该L1Cache包括私有数据缓存0211和共享数据缓存0212。
[0037] 私有数据缓存0211包括多个独立的私有缓存(D-Cache)0211a,用于存储各个硬件线程的私有数据,共享数据缓存0212用于存储线程之间的共享数据。
[0038] 私有cache和共享cache在同一层次L1,在CPU将数据填cache时,将线程的私有数据存储于私有cache中,线程之间的共享数据存储于共享cache中。
[0039] 本领域技术人员可以理解,目前现有的多核cache通常为L1cache为私有cache,其他L2、L3等层次为共享cache的多级层次结构,本发明不采用多级层次结构,保留L1cache。这样,每个硬件线程都有自己的私有cache,所有硬件线程公用一个共享cache。
[0040] 举例来说,该处理器01可以为众核处理器,每一个处理器核为同时多线程结构,缓存器021为每一个处理器核的组成部分。该cache的硬件实施可以如图2所示。在一个同时多线程结构的处理器核内部,有多个硬件线程,每一个硬件线程对应一个私有缓存0211,所有的硬件线程共用一个共享缓存0212。私有缓存0211和共享缓存0212属于同一个层次。
[0041] 因此,本发明实施例提供一种处理器,该处理器包括程序计数器,寄存器堆、指令预取部件、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存以及内部总线,还包括数据缓存器,该数据缓存器为一级缓存,一级缓存包括私有数据缓存和共享数据缓存,私有数据缓存和共享数据缓存属于同一层次,私有数据缓存包括多个私有缓存,私有数据缓存用于存储线程的私有数据,共享数据缓存用于存储线程之间的共享数据,这样,能够减小数据查找的范围,降低访问延迟,提高系统性能。
[0042] 本发明实施例提供一种访问缓存数据的方法,如图3所示,包括:
[0043] 101、当处理器访问处理器的数据缓存器中的数据时,处理器根据数据对应的物理地址中附加的标志位确定数据的数据类型,数据类型包括私有数据和共享数据。
[0044] 示例性的,可以通过修改操作系统中的页表项(Page Table Entry,PTE)标识来确定数据的数据类型。可以通过编译支持的分页机制,将线程私有数据存储在每一个线程独占的页框(Page Frame)中,将属于一个进程的线程间共享数据存储在线程共享的页框中。
[0045] 具体的,操作系统分配内存空间是以页为单位的,页框的基地址写在页表项中,为了识别页框指向的是私有区域还是共享区域,在页表项的保留位中定义一个比特的标志位,该标志位用于区分该页表项对应的物理页框是否为私有区域,示例性的,若为私有区域,标志位置1,若为共享区域,标志位置0。这里对私有区域和共享区域的标志位置不做限定。如表1所示,举例来说,以4KB大小的页表项结构来说明,可以在第9-14位中定义一个比特的标志位来区分页表项对应的物理页框为私有区域或共享区域。
[0046] 表1 4KB大小的页表项结构
[0047]
[0048] 当CPU访问缓存数据时使用的是虚拟地址,先查找TLB(Translation Lookaside Buffer,旁路转换缓冲区)表,该表为虚拟地址和物理地址的高速缓存表,用于根据虚拟地址得到物理地址。若TLB中没有对应的虚拟地址,则进入分页处理以得到物理地址,以及存储在页表项中的标志位share_flag,并将该标志位存放在TLB表的物理地址中;若TLB表中有对应的虚拟地址项,则直接获取TLB表中的物理地址以及标志位share_flag,并将该标志位添加到物理地址中。如表2所示为物理地址的组成,包括标志位share_flag,tag(标签)set index(组索引号),block offset(块偏移)和byte offset(字节偏移)。
[0049] 表2 物理地址组成
[0050]Share-flag tag set index block offset byte offset
[0051] 这样,通过对页表项中某一位保留位进行定义,并将定义的标志位作为物理地址的附加位传给CPU,CPU可以根据物理地址中附加的标志位确定要访问数据的数据类型。若物理地址中的标志位为第一标志,则确定数据的数据类型为私有数据;若物理地址中的标志位为第二标志,则确定数据的数据类型为共享数据。例如,该第一标志位1,第二标志为0。
[0052] 102、处理器根据访问的数据确定数据对应的线程,进而根据线程和数据类型访问线程对应的缓存,以获取缓存中的数据,缓存为私有缓存或共享缓存。
[0053] 具体的,在确定的要访问的数据的数据类型后,CPU可以根据访问的数据确定该数据访问是由哪个硬件线程发起的,进而根据该硬件线程和数据类型确定要访问的缓存区域,若share_flag为1,数据类型为私有数据,则访问硬件线程对应的私有数据缓存;若share_flag为0,数据类型为共享数据,则访问缓存器中的共享数据缓存,以获取缓存中的数据。私有数据缓存和共享数据缓存是由硬件同步完成的。
[0054] 其中,每一个硬件线程对应一个私有数据缓存,所有的硬件线程共用一个共享数据缓存,私有数据缓存和共享数据缓存属于同一个层次L1cache。
[0055] 此外,若CPU访问硬件线程对应的私有数据缓存不命中,即私有数据缓存中不存在要访问的数据,则CPU访问内存中的主存储器,并从主存储器中获取要访问的数据所在的缓存行,将该缓存行回填至该硬件线程对应的私有数据缓存中;若CPU访问硬件线程的共享数据缓存不命中,即共享数据缓存中不存在要访问的数据,则CPU访问内存中的主存储器,并从主存储器中获取要访问的数据所在的缓存行,将该缓存行回填至所有硬件线程共享的共享数据缓存中。其中,在将缓存行回填至数据缓存中时,若数据缓存填满时,可以通过LRU(Least Recently Used,最近最少使用到的)将要回填的缓存行替换最近最少使用到的缓存行,或者在缓存中不存在该缓存行时,直接将该缓存行回填至数据缓存中。回填时所采用的替换策略与现有技术相同,这里不再赘述。
[0056] 这样一来,由于高通量应用程序线程相似度高,数据共享度低,通过对数据缓存进行重新划分,线程各自的私有数据分布在各自的私有缓存中,没有任何干扰,共享数据存储在共享数据缓存中,在CPU查找缓存中的数据时,可以根据物理地址的标志位直接确定要查找的对象是私有数据缓存还是共享数据缓存,减小了查找范围,降低了访问延迟,提高了系统性能。
[0057] 因此,本发明实施例提供一种访问数据缓存的方法,当访问处理器的数据缓存器中的数据时,根据数据对应的物理地址中的标志位确定数据的数据类型,数据类型包括私有数据和共享数据,根据访问的数据确定数据对应的线程,进而根据线程和数据类型访问线程对应的数据缓存,以获取数据缓存中的数据,数据缓存为私有数据缓存或共享数据缓存,能够减小数据查找的范围,降低访问延迟,提高系统性能。
[0058] 在本申请所提供的几个实施例中,应该理解到,所揭露的处理器和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0059] 另外,在本发明各个实施例中的处理器中,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0060] 实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘只读存储器(Read Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0061] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈