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

文档序号:6505126阅读:249来源:国知局
一种访问数据缓存的方法和处理器的制造方法
【专利摘要】本发明实施例提供一种访问数据缓存的方法和处理器,涉及计算机领域,能够减小数据查找的范围,降低访问延迟,提高系统性能。该处理器的数据缓存器为一级缓存,一级缓存包括私有数据缓存和共享数据缓存,私有数据缓存包括多个私有缓存,私有数据缓存用于存储线程的私有数据,共享数据缓存用于存储线程之间的共享数据,当访问处理器的数据缓存器中的数据时,根据数据对应的物理地址附加的标志位确定数据的数据类型,数据类型包括私有数据和共享数据,根据访问的数据确定数据对应的线程,进而根据线程和数据类型访问线程对应的数据缓存,以获取数据缓存中的数据。本发明实施例用于划分数据缓存和访问数据缓存。
【专利说明】一种访问数据缓存的方法和处理器

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

【背景技术】
[0002] 处理器进入多核时代后,访存一直是系统性能的瓶颈,内存系统性能的增长速 度严重滞后处理器性能的增长速度,访存的速度严重限制计算速度的发挥。目前的多核 cache (缓冲存储器)通常涉及为Llcache为私有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、指令预取部件01 3、指令译码部件014、指令发射部件015、地址生成单元016、算术逻辑 单元017、共享浮点单元018、共享指令缓存019、以及内部总线,还包括:
[0031] 数据缓存器021,数据缓存器021为一级缓存,一级缓存包括私有数据缓存0211和 共享数据缓存0212,私有数据缓存0211包括多个私有缓存021 la,私有数据缓存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的第一级缓存LICache (Level 1 Cache),该 LICache包括私有数据缓存〇211和共享数据缓存0212。
[0037]私有数据缓存〇211包括多个独立的私有缓存(D-Cache)0211a,用于存储各个硬 件线程的私有数据,共享数据缓存0212用于存储线程之间的共享数据。
[0038] 私有cache和共享cache在同一层次L1,在CPU将数据填cache时,将线程的私有 数据存储于私有cache中,线程之间的共享数据存储于共享cache中。
[0039]本领域技术人员可以理解,目前现有的多核cache通常为Llcache为私有cach e, 其他L2、L3等层次为共享cache的多级层次结构,本发明不采用多级层次结构,保留 LI cache。这样,每个硬件线程都有自己的私有cache,所有硬件线程公用一个共享cache。 [0040]举例来说,该处理器01可以为众核处理器,每一个处理器核为同时多线程结构, 缓存器〇 21为每一个处理器核的组成部分。该cache的硬件实施可以如图2所示。在- 个同时多线程结构的处理器核内部,有多个硬件线程,每一个硬件线程对应一个私有缓存 0211,所有的硬件线程共用一个共享缓存〇212。私有缓存〇211和共享缓存 0212属于同一 个层次。
[0041]因此,本发明实施例提供一种处理器,该处理器包括程序计数器,寄存器堆、指令 巧取部2、指令译码部件、指令发射部件、地址生成单元、算术逻辑单元、共享浮点单元、共 享指令缓存以及内部总线,还包括数据缓存器,该数据缓存器为一级缓存,一级缓存包括私 有数据缓存和共孕数据缓存,私有数据缓存和共享数据缓存属于同一层次,私有数据缓存 包括多个^有缓存,私有数据缓存用于存储线程的私有数据,共享数据缓存用于存储线程 之间的共享数据,这样,能够减小数据查找的范围,降低访问延迟,提高系统性能。
[0042]本发明实施例提供一种访问缓存数据的方法,如图3所示,包括:
[0043] 101、当处理器访问处理器的数据缓存器中的数据时,处理器根据数据对应的物理 地址中附加的标志位确定数据的数据类型,数据类型包括私有数据和共享数据。
[0*^4] ^例性的,可以通过修改操作系统中的页表项(Page Table Entry,PTE)标识来确 定数据的数据类型。可以通过编译支持的分页机制,将线程私有数据存储在每一个线程独 占的页框(Page Frame)中,将属于一个进程的线程间共享数据存储在线程共享的页框中。 [0045]具体的,操作系统分配内存空间是以页为单位的,页框的基地址写在页表项中,为 了识别页框指向的是私有区域还是共享区域,在页表项的保留位中定义一个比特的标志 位,该标志位用于区分该页表项对应的物理页框是否为私有区域,示例性的,若为私有区 域,标志位置1,若为共享区域,标志位置〇。这里对私有区域和共享区域的标志位置不做限 定。如表1所示,举例来说,以4KB大小的页表项结构来说明,可以在第9-14位中定义一个 比特的标志位来区分页表项对应的物理页框为私有区域或共享区域。
[0046] 表1 4KB大小的页表项结构
[0047]

【权利要求】
1. 一种处理器,包括程序计数器、寄存器堆、指令预取部件、指令译码部件、指令发射 部件、地址生成单元、算术逻辑单元、共享浮点单元、共享指令缓存以及内部总线,其特征在 于,还包括: 数据缓存器,所述数据缓存器为一级缓存,所述一级缓存包括私有数据缓存和共享数 据缓存,所述私有数据缓存包括多个私有缓存,所述私有数据缓存用于存储线程的私有数 据,所述共享数据缓存用于存储所述线程之间的共享数据。
2. 根据权利要求1所述的处理器核,其特征在于,所述处理器为同时多线程结构,所述 私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存。
3. -种访问数据缓存的方法,其特征在于,包括: 当访问处理器的数据缓存器中的数据时,根据所述数据对应的物理地址中附加的标志 位确定所述数据的数据类型,所述数据类型包括私有数据和共享数据; 根据访问的数据确定所述数据对应的线程,进而根据所述线程和所述数据类型访问所 述线程对应的数据缓存,以获取所述数据缓存中的数据,所述数据缓存为私有数据缓存或 共享数据缓存。
4. 根据权利要求3所述的方法,其特征在于,所述方法还包括: 若所述私有数据缓存中不存在所述数据,则访问主存储器,并将从所述主存储器中获 取所述数据所在的缓存行回填至所述线程对应的私有数据缓存中; 若所述共享数据缓存中不存在所述数据,则访问所述主存储器,并将从所述主存储器 中获取所述数据所在的缓存行回填至所述共享数据缓存中。
5. 根据权利要求4所述的方法,其特征在于,所述根据所述数据对应的物理地址中附 加的标志位确定所述数据的数据类型包括: 若所述物理地址中的标志位为第一标志,则确定所述数据的数据类型为私有数据; 若所述物理地址中的标志位为第二标志,则确定所述数据的数据类型为共享数据。
6. 根据权利要求5所述的方法,其特征在于,所述根据所述线程和所述数据类型访问 所述线程对应的数据缓存包括: 若所述数据类型为所述私有数据,则访问所述线程对应的私有数据缓存; 若所述数据类型为所述共享数据,则访问所述共享数据缓存。
7. 根据权利要求6所述的方法,其特征在于,所述私有数据缓存包括多个私有缓存,所 述私有缓存用于存储线程的私有数据,所述共享数据缓存用于存储所述线程之间的共享数 据; 其中,所述私有缓存与硬件线程一一对应,所有硬件线程共用所述共享数据缓存。
【文档编号】G06F9/50GK104252392SQ201310269618
【公开日】2014年12月31日 申请日期:2013年6月28日 优先权日:2013年6月28日
【发明者】徐远超, 范东睿, 张 浩, 叶笑春 申请人:华为技术有限公司, 中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1