书签 分享 收藏 举报 版权申诉 / 25

用于高速缓存占据确定和指令调度的方法和装置.pdf

  • 上传人:r7
  • 文档编号:6342650
  • 上传时间:2019-06-02
  • 格式:PDF
  • 页数:25
  • 大小:1.28MB
  • 摘要
    申请专利号:

    CN201480046896.5

    申请日:

    2014.09.08

    公开号:

    CN105453041A

    公开日:

    2016.03.30

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 9/46申请日:20140908|||公开

    IPC分类号:

    G06F9/46

    主分类号:

    G06F9/46

    申请人:

    英特尔公司

    发明人:

    A.扎克斯; R.瓦伦蒂内; A.纳基斯

    地址:

    美国加利福尼亚州

    优先权:

    14/035231 2013.09.24 US

    专利代理机构:

    中国专利代理(香港)有限公司72001

    代理人:

    毕铮; 刘春元

    PDF完整版下载: PDF下载
    内容摘要

    装置和方法用于确定一个或多个操作所需要的数据是否存储在高速缓存中并且基于所述确定调度操作以供执行。例如,处理器的一个实施例包括:包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执行。

    权利要求书

    1.一种处理器,包括:
    包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;
    高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一
    个高速缓存级中;以及
    调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度
    随后操作的执行。
    2.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑包括执行逻辑,用于执行
    高速缓存占据指令以确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存
    级中。
    3.根据权利要求2所述的处理器,其中高速缓存占据指令读取与用于一个或多个随后
    指令的数据相关联的一个或多个地址并且使用所述地址来确定数据是否存储在一个高速
    缓存级中。
    4.根据权利要求3所述的处理器,其中使用所述地址包括执行关于所述地址的高速缓
    存查找操作。
    5.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑还用于确定其中存储与
    一个或多个随后操作相关联的数据的特定高速缓存级。
    6.根据权利要求5所述的处理器,其中调度逻辑用于基于其中存储用于随后操作的数
    据的特定高速缓存级的确定来调度随后操作的执行。
    7.根据权利要求6所述的处理器,其中调度逻辑在与高速缓存层级中相对较低的数据
    和/或没有处于高速缓存级中的数据有关的操作之前调度与高速缓存层级中相对较高的数
    据有关的操作。
    8.根据权利要求1所述的处理器,其中高速缓存占据确定逻辑还基于指定阈值来确定
    预期的访问数据的时间和/或数据是否太远的指示。
    9.根据权利要求8所述的处理器,其中调度逻辑在基于指定阈值所确定的预期的访问
    数据的时间和/或数据是否太远的指示的基础上调度随后操作。
    10.根据权利要求1所述的处理器,其中高速缓存级还包括2级(L2)高速缓存和较低级
    高速缓存(LLC)。
    11.一种方法,包括:
    在包括至少1级(L1)高速缓存的分层级的高速缓存级内对数据进行缓存;
    确定与一个或多个随后操作相关联的数据是否存储在一个高速缓存级中;以及
    基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度随后操作的执
    行。
    12.根据权利要求11所述的方法,还包括:
    执行高速缓存占据指令以确定与一个或多个随后操作相关联的数据是否存储在一个
    高速缓存级中。
    13.根据权利要求12所述的方法,其中高速缓存占据指令读取与用于一个或多个随后
    指令的数据相关联的一个或多个地址并且使用所述地址来确定数据是否存储在一个高速
    缓存级中。
    14.根据权利要求13所述的方法,其中使用所述地址包括执行与所述地址有关的高速
    缓存查找操作。
    15.根据权利要求11所述的方法,还包括:
    确定其中存储与一个或多个随后操作相关联的数据的特定高速缓存级。
    16.根据权利要求15所述的方法,还包括:
    基于其中存储用于随后操作的数据的特定高速缓存级的确定来调度随后操作的执行。
    17.根据权利要求16所述的方法,还包括:
    在与高速缓存层级中相对较低的数据和/或没有处于高速缓存级中的数据有关的操作
    之前调度与高速缓存层级中相对较高的数据有关的操作。
    18.根据权利要求11所述的方法,还包括:
    基于指定阈值来确定预期的访问数据的时间和/或数据是否太远的指示。
    19.根据权利要求18所述的方法,还包括:
    在基于指定阈值所确定的预期的访问数据的时间和/或数据是否太远的指示的基础上
    调度随后操作。
    20.根据权利要求11所述的方法,其中高速缓存级还包括2级(L2)高速缓存和较低级高
    速缓存(LLC)。
    21.一种系统,包括:
    用于存储程序代码和数据的存储器;
    用于与一个或多个外围设备通信的输入/输出(IO)通信接口;
    用于将系统通信耦合到网络的网络通信接口;以及
    处理器,包括:
    包括至少1级(L1)高速缓存的分层级的高速缓存级,用于对数据进行缓存;
    高速缓存占据确定逻辑,用于确定与一个或多个随后操作相关联的数据是否存储在一
    个高速缓存级中;以及
    调度逻辑,用于基于与随后操作相关联的数据是否存储在高速缓存级中的确定来调度
    随后操作的执行。

    说明书

    用于高速缓存占据确定和指令调度的方法和装置

    技术领域

    本发明大体涉及计算机处理器的领域。更具体地,本发明涉及用于高速缓存占据
    确定和指令调度的装置和方法。

    背景技术

    数据高速缓存未命中导致程序代码的低效执行,因为如果执行操作所需要的数据
    没有存储在高速缓存中,则必须花费大量时间(例如微处理器周期)来从存储器检索数据。
    对该问题之前的一种解决方案是数据预取,其中提供显式架构支持以预计将需要的数据并
    且预取该数据以缓存。另一解决方案是使用高速缓存遗忘和高速缓存意识算法,其确定如
    何优化存储器中的数据结构的布局,而不使用任何特殊的架构支持或交互。

    附图说明

    从结合以下各图的以下详细描述,可以得到对本发明的更好理解,其中:

    图1A是图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、无序发
    布(issue)/执行管线二者的框图;

    图1B是图示了根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施
    例和示例性寄存器重命名、无序发布/执行架构核二者的框图;

    图2是根据本发明的实施例的具有集成存储器控制器和图形的多核处理器和单核处理
    器的框图;

    图3图示了依照本发明的一个实施例的系统的框图;

    图4图示了依照本发明的实施例的第二系统的框图;

    图5图示了依照本发明的实施例的第三系统的框图;

    图6图示了依照本发明的实施例的片上系统(SoC)的框图;

    图7图示了根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指
    令转换成目标指令集中的二进制指令形成对比的框图;

    图8图示了具有用于确定高速缓存占据的逻辑的架构的一个实施例。

    图9图示了用于确定高速缓存占据并且基于所述确定执行随后操作的方法的一个实施
    例。

    图10图示了用于确定高速缓存占据并且基于所述确定执行来自工作队列的工作项目
    的方法的一个实施例。

    具体实施方式

    在以下描述中,出于解释的目的,阐述众多具体细节以便提供对下文描述的本发
    明的实施例的透彻理解。然而,本领域技术人员将清楚的是,本发明的实施例可以在没有这
    些具体细节中的一些的情况下实践。在其他实例中,以框图形式示出公知的结构和设备以
    避免使本发明的实施例的底层原理模糊。

    示例性处理器架构和数据类型

    图1A是图示了根据本发明的实施例的示例性有序管线和示例性寄存器重命名、无序发
    布/执行管线二者的框图。图1B是图示了根据本发明的实施例的要包括在处理器中的有序
    架构核和示例性寄存器重命名、无序发布/执行架构核的示例性实施例二者的框图。图1A-
    1B中的实线框图示了有序管线和无序管线,而虚线框的可选添加图示了寄存器重命名、无
    序发布/执行管线和核。在给定有序方面是无序方面的子集的情况下,将描述无序方面。

    在图1A中,处理器管线100包括获取级102、长度解码级104、解码级106、分配级
    108、重命名级110、调度(还称为分派或发布)级112、寄存器读取/存储器读取级114、执行级
    116、回写/存储器写入级118、异常处置级122和提交级124。

    图1B示出了处理器核190,其包括耦合到执行引擎单元150的前端单元130,并且这
    两者都耦合到存储器单元170。核190可以是精简指令集计算(RISC)核、复杂指令集计算
    (CISC)核、超长指令字(VLIW)核或者混合型或可替换核类型。作为又一选项,核190可以是
    专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)
    核、图形核等等。

    前端单元130包括耦合到指令高速缓存单元134的品牌预测单元132,指令高速缓
    存单元134耦合到指令转换后备缓冲器(TLB)136,指令转换后备缓冲器(TLB)136耦合到指
    令获取单元138,指令获取单元138耦合到解码单元140。解码单元140(或解码器)可以解码
    指令,并且作为输出生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制
    信号,其从原始指令解码或者以其他方式反映原始代码或者从原始代码导出。解码单元140
    可以使用各种不同机制实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑
    阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核190包括微代码ROM或者存储
    用于某些宏指令的微代码的其他介质(例如在解码单元140中或者以其他方式在前端单元
    130内)。解码单元140耦合到执行引擎单元150中的重命名/分配器单元152。

    执行引擎单元150包括耦合到引退单元154和一个或多个调度器单元156的集合的
    重命名/分配器单元152。(多个)调度器单元156表示任何数目的不同调度器,包括预留站、
    中央指令窗口等。(多个)调度器单元156耦合到(多个)物理寄存器文件单元158。(多个)物
    理寄存器文件单元158中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存
    器文件存储一个或多个不同数据类型,诸如标量整数、标量浮点数、封包整数、封包浮点数、
    矢量整数、矢量浮点数、状态(例如,作为要执行的下一指令的地址的指令指针)等等。在一
    个实施例中,(多个)物理寄存器文件单元158包括矢量寄存器单元、写入掩码寄存器单元以
    及标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄
    存器。(多个)物理寄存器文件单元158与引退单元154重叠以说明其中可以实现寄存器重命
    名和无序执行的各种方式(例如使用(多个)重新排序缓冲器和(多个)引退寄存器文件;使
    用(多个)将来文件、(多个)历史缓冲器和(多个)引退寄存器文件;使用寄存器图和寄存器
    池;等等)。引退单元154和(多个)物理寄存器文件单元158耦合到(多个)执行群簇160。(多
    个)执行群簇160包括一个或多个执行单元162的集合和一个或多个存储器访问单元164的
    集合。执行单元162可以在各种类型数据(例如标量浮点数、封包整数、封包浮点数、矢量整
    数、矢量浮点数)上执行各种操作(例如移位、加法、减除、乘法)。尽管一些实施例可以包括
    专用于具体功能或功能集合的数个执行单元,但是其他实施例可以包括仅一个执行单元或
    者全部执行所有功能的多个执行单元。(多个)调度器单元156、(多个)物理寄存器文件单元
    158和(多个)执行群簇160被示为可能是复数个,因为某些实施例创建用于某些类型数据/
    操作的分离管线(例如标量整数管线、标量浮点数/封包整数/封包浮点数/矢量整数/矢量
    浮点数管线,和/或存储器访问管线,每一个具有其自身的调度器单元、(多个)物理寄存器
    文件单元和/或执行群簇——并且在分离存储器访问管线的情况下,实现其中仅该管线的
    执行群簇具有(多个)存储器访问单元164的某些实施例)。还应当理解到,在使用分离管线
    的情况下,这些管线中的一个或多个可以是无序发布/执行并且其余为有序的。

    存储器访问单元164的集合耦合到存储器单元170,其包括耦合到数据高速缓存单
    元174的数据TLB单元172,数据高速缓存单元174耦合到2级(L2)高速缓存单元176。在一个
    示例性实施例中,存储器访问单元164可以包括加载单元、存储地址单元和存储数据单元,
    其中每一个耦合到存储器单元170中的数据TLB单元172。指令高速缓存单元134还耦合到存
    储器单元170中的2级(L2)高速缓存单元176。L2高速缓存单元176耦合到一个或多个其他级
    高速缓存并且最终耦合到主存储器。

    作为示例,示例性寄存器重命名、无序发布/执行核架构可以实现如下管线100:1)
    指令获取138执行获取和长度解码级102和104;2)解码单元140执行解码级106;3)重命名/
    分配器单元152执行分配级108和重命名级110;4)(多个)调度器单元156执行调度级112;5)
    (多个)物理寄存器文件单元158和存储器单元170执行寄存器读取/存储器读取级114;执行
    群簇160对执行级116进行执行;6)存储器单元170和(多个)物理寄存器文件单元158执行回
    写/存储器写入级118;7)各种单元可以牵涉在接受处置级122中;并且8)引退单元154和(多
    个)物理寄存器文件单元158执行提交级124。

    核190可以支持一个或多个指令集,例如x86指令集(具有已经添加有较新版本的
    一些扩展);Sunnyvale,CA的MIPSTechnologies的MIPS指令集;Sunnyvale,CA的ARM
    Holdings的ARM指令集(具有诸如NEON之类的可选附加扩展),包括本文描述的(多个)指令。
    在一个实施例中,核190包括逻辑以支持封包数据指令集扩展(例如AVX1,AVX2和/或某种形
    式的通用矢量友好指令格式(U=0和/或U=1),在下文描述),从而允许使用封包数据执行许
    多多媒体应用所使用的操作。

    应当理解到,核可以支持多线程(执行操作或线程的两个或更多并行集合),并且
    可以以各种方式这样做,包括时间片段多线程、同时多线程(其中单个物理核针对物理核同
    时多线程的每一个线程提供逻辑核),或者其组合(例如时间片段获取和解码以及在此之后
    的同时多线程,诸如在超线程技术中)。

    尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解到,寄存器重命
    名可以在有序架构中使用。尽管处理器的所图示的实施例还包括分离的指令和数据高速缓
    存单元134/137和共享的L2高速缓存单元176,但是可替换实施例可以具有用于指令和数据
    二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或者多个级的内部高速缓存。在
    一些实施例中,系统可以包括内部高速缓存与在核和/或处理器外部的外部高速缓存的组
    合。可替换地,所有高速缓存可以在核和/或处理器外部。

    图2是根据本发明的实施例的处理器200的框图,其可以具有多于一个核,可以具
    有集成的存储器控制器,并且可以具有集成的图形。图2中的实线框图示了具有单个核
    202A、系统代理210、一个或多个总线控制器单元216的集合的处理器200,而虚线框的可选
    添加图示了具有多个核202A-N、系统代理单元210中的一个或多个集成存储器控制器单元
    214的集合、以及专用逻辑208的可替换处理器200。

    因而,处理器200的不同实现可以包括:1)具有作为集成图形和/或科学(吞吐量)
    逻辑(其可以包括一个或多个核)的专用逻辑208以及作为一个或多个通用核(例如通用有
    序核、通用无序核、两者的组合)的核202A-N的CPU;2)具有作为主要意图用于图形和/或科
    学(吞吐量)的大量专用核的核202A-N的协处理器;以及3)具有作为大量通用有序核的核
    202A-N的协处理器。因而,处理器200可以是通用处理器、协处理器或专用处理器,诸如例如
    网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量众集成核
    (MIC)协处理器(包括30或更多个核)、嵌入式处理器等等。处理器可以实现在一个或多个芯
    片上。处理器200可以是一个或多个衬底的部分和/或可以使用数个处理技术中的任一个而
    实现在一个或多个衬底上,所述技术诸如例如BiCMOS、CMOS或NMOS。

    存储器层级包括核内的一个或多个级的高速缓存、一集合或一个或多个共享高速
    缓存单元206、以及耦合到集成存储器控制器单元214的集合的外部存储器(未示出)。共享
    高速缓存单元206的集合可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级
    (L4)或者其他级高速缓存、末级高速缓存(LLC)和/或其组合。尽管在一个实施例中基于环
    的互连单元212互连集成图形逻辑208、共享高速缓存单元206的集合和系统代理单元210/
    (多个)集成存储器控制器单元214,但是可替换实施例可以使用任何数目的公知技术以用
    于互连这样的单元。在一个实施例中,在一个或多个高速缓存单元206和核202A-N之间维持
    一致性。

    在一些实施例中,一个或多个核202A-N能够进行多线程。系统代理210包括协调和
    操作核202A-N的那些组件。系统代理单元210可以包括例如电力控制单元(PCU)和显示单
    元。PCU可以是或者包括用于调控核202A-N和集成图形逻辑208的电力状态所需要的逻辑和
    组件。显示单元用于驱动一个或多个外部连接的显示器。

    核202A-N在架构指令集方面可以是同构或异构的;也就是说,核202A-N中的两个
    或更多个可以能够执行相同指令集,而其他核可能仅能够执行该指令集的子集或者不同的
    指令集。在一个实施例中,核202A-N是异构的并且包括下文描述的“小”核和“大”核二者。

    图3-6是示例性计算机架构的框图。现有技术中针对膝上型电脑、台式电脑、手持
    式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、
    数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体
    播放器、手持式设备和各种其他电子设备所已知的其他系统设计和配置同样适用。一般而
    言,能够并入如本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般
    是适用的。

    现在参照图3,示出了依照本发明的一个实施例的系统300的框图。系统300可以包
    括一个或多个处理器310、315,其耦合到控制器中心320。在一个实施例中,控制器中心320
    包括图形存储器控制器中心(GMCH)390和输入/输出中心(IOH)350(其可以在分离芯片上);
    GMCH390包括存储器340和协处理器345所耦合至的存储器和图形控制器;IOH350将输入/
    输出(I/O)设备360耦合至GMCH390。可替换地,存储器和图形控制器中的一个或二者集成
    在处理器中(如本文所描述的),存储器340和协处理器345直接耦合到处理器310,以及具有
    IOH350的单个芯片中的控制器中心320。

    附加处理器315的可选性质在图3中利用折线标示。每一个处理器310、315可以包
    括本文描述的一个或多个处理核并且可以是某种版本的处理器200。

    存储器340可以例如是动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组
    合。对于至少一个实施例,控制器中心320经由诸如前端总线(FSB)之类的多点总线、诸如快
    速路径互连(QPI)之类的点对点接口或者类似的连接395而与(多个)处理器310、315通信。

    在一个实施例中,协处理器345是专用处理器,诸如例如高吞吐量MIC处理器、网络
    或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器
    中心320可以包括集成图形加速器。

    物理资源310、315之间可能存在一系列优点指标方面的各种差异,所述指标包括
    架构、微架构、热、电力消耗特性等等。

    在一个实施例中,处理器310执行控制一般类型数据处理操作的指令。协处理器指
    令可以嵌入在指令内。处理器310将这些协处理器指令识别为应当由所附连的协处理器345
    执行的类型。相应地,处理器310在协处理器总线或其他互连上向协处理器345发布这些协
    处理器指令(或者表示协处理器指令的控制信号)。(多个)协处理器345接受并且执行所接
    收的协处理器指令。

    现在参照图4,示出了依照本发明的实施例的第一个更为具体的示例性系统400的
    框图。如图4中所示,多处理器系统400是点对点互连系统,并且包括经由点对点互连450耦
    合的第一处理器470和第二处理器480。处理器470和480中的每一个可以是某种版本的处理
    器200。在本发明的一个实施例中,处理器470和480分别为处理器310和315,而协处理器438
    是协处理器345。在另一实施例中,处理器470和480分别为处理器310和协处理器345。

    处理器470和480被示出为分别包括集成存储器控制器(IMC)单元472和482。处理
    器470还包括作为其总线控制器单元的部分的点对点(P-P)接口476和478;类似地,第二处
    理器480包括P-P接口486和488。处理器470、480可以使用P-P接口电路478、488而经由点对
    点(P-P)接口450交换信息。如图4中所示,IMC472和482将处理器耦合到相应存储器,即存
    储器432和存储器434,其可以是在本地附连到相应处理器的主存储器的部分。

    处理器470、480各自可以使用点对点接口电路476、494、486、498而经由个体P-P接
    口452、454与芯片组490交换信息。芯片组490可以可选地经由高性能接口439与协处理器
    438交换信息。在一个实施例中,协处理器438是专用处理器,诸如例如高吞吐量MIC处理器、
    网络或通信处理器、压缩引擎、图形处理器GPGPU、嵌入式处理器等等。

    共享高速缓存(未示出)可以包括在处理器中或者两个处理器外部,而经由P-P互
    连与处理器连接,使得任一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存
    中,如果处理器放置到低电力模式中的话。

    芯片组490可以经由接口496耦合到第一总线416。在一个实施例中,第一总线416
    可以是外围组件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线之类的
    总线,但是本发明的范围不限于此。

    如图4中所示,各种I/O设备414可以耦合到第一总线416,连同将第一总线416耦合
    到第二总线420的总线418一起。在一个实施例中,一个或多个附加处理器415,诸如协处理
    器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、
    现场可编程门阵列或者任何其他处理器,耦合到第一总线416。在一个实施例中,第二总线
    420可以是低引脚计数(LPC)总线。各种设备可以耦合到第二总线420,包括例如键盘和/或
    鼠标422、通信设备427和存储单元428,诸如盘驱动器或者其他大容量存储设备,其在一个
    实施例中可以包括指令/代码和数据430。另外,音频I/O424可以耦合到第二总线420。要指
    出的是,其他架构是可能的。例如,代替图4的点对点架构,系统可以实现多点总线或其他这
    样的架构。

    现在参照图5,示出了依照本发明的实施例的第二更为具体的示例性系统500的框
    图。图4和5中的相似元件标有相似参考标号,并且图4的某些方面已经从图5省略以便避免
    使图5的其他方面模糊。

    图5图示了处理器470、480可以分别包括集成存储器和I/O控制逻辑(“CL”)472和
    482。因而,CL472、482包括集成存储器控制器并且包括I/O控制逻辑。图5图示了不仅存储
    器432、434耦合到CL472、482,而且I/O设备514也耦合到控制逻辑472、482。传统I/O设备
    515耦合到芯片组490。

    现在参照图6,示出了依照本发明的实施例的SoC600的框图。图2中的相似元件标
    有相似参考标号。而且,虚线框是更为先进的SoC上的可选特征。在图6中,(多个)互连单元
    602耦合到:包括一个或多个核202A-N的集合和(多个)共享高速缓存单元206的应用处理器
    610;系统代理单元210;(多个)总线控制器单元216;(多个)集成存储器控制器单元214;可
    以包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一集合或一个或多个协处
    理器620;静态随机存取存储器(SRAM)单元630;直接存储器存取(DMA)单元632;以及用于耦
    合到一个或多个外部显示器的显示单元640。在一个实施例中,(多个)协处理器620包括专
    用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理
    器等等。

    本文公开的机制的实施例可以实现在硬件、软件、固件或这样的实现方案的组合
    中。本发明的实施例可以实现为计算机程序或程序代码,其在包括至少一个处理器、存储系
    统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设
    备的可编程系统上执行。

    可以应用程序代码,诸如在图4中图示的代码430,以输入指令来执行本文描述的
    功能并且生成输出信息。输出信息可以以已知方式应用于一个或多个输出设备。出于本申
    请的目的,处理系统包括具有处理器的任何系统,诸如例如:数字信号处理器(DSP)、微控制
    器、专用集成电路(ASIC)或微处理器。

    程序代码可以用高级过程式或面向对象编程语言实现以与处理系统通信。程序代
    码也可以用汇编或机器语言实现,如果期望的话。事实上,本文描述的机制在范围上不限于
    任何特定的编程语言。在任何情况下,语言可以是编译或解译语言。

    至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指
    令来实现,该指令表示处理器内的各种逻辑,其在由机器读取时使得机器构造逻辑以执行
    本文描述的技术。称为“IP核”的这样的表示可以存储在有形机器可读介质上并且供应给各
    种消费者或制造机构以加载到实际做出逻辑或处理器的构造机器中。

    这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的
    非暂时性有形布置,包括诸如硬盘之类的存储介质、任何其他形式的盘(包括软盘、光学盘、
    光盘只读存储器(CD-ROM)、光盘可再写(CD-RW)和磁光盘)、诸如只读存储器(ROM)之类的半
    导体器件、诸如动态随机存取存储器(DRAM)之类的随机存取存储器(RAM)、静态随机存取存
    储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器
    (EEPROM)、相变存储器(PCM)、磁卡或光学卡、或者适用于存储电子指令的任何其他类型的
    介质。

    相应地,本发明的实施例还包括包含指令或包含设计数据的非暂时性有形机器可
    读介质。诸如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特
    征。这样的实施例也可以称为程序产品。

    在一些情况下,指令转换器可以用于将指令从源指令集转换成目标指令集。例如,
    指令转换器可以翻译(例如使用静态二进制翻译、动态二进制翻译(包括动态编译))、变异、
    仿效或以其他方式将指令转换成要由核处理的一个或多个其他指令。指令转换器可以实现
    在软件、硬件、固件或其组合中。指令转换器可以是接通处理器、关断处理器、或者部分接通
    和部分关断的处理器。

    图7是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指
    令转换成目标指令集中的二进制指令形成对照的框图。在所图示的实施例中,指令转换器
    是软件指令转换器,但是可替换地,指令转换器可以实现在软件、固件、硬件或其各种组合
    中。图7示出了高级语言702的程序可以使用x86编译器704编译以生成x86二进制代码706,
    其可以由具有至少一个x86指令集核的处理器716本机执行。具有至少一个x86指令集核的
    处理器716表示任何处理器,所述处理器可以通过以下方式执行与具有至少一个x86指令集
    核的Intel处理器基本上相同的功能:兼容地执行或以其他方式处理(1)Intelx86指令集
    核的指令集的基本部分或者(2)目标是在具有至少一个x86指令集核的Intel处理器上运行
    的应用或其他软件的对象代码版本,以便实现与具有至少一个x86指令集核的Intel处理器
    基本上相同的结果。x86编译器704表示可操作为生成x86二进制代码706(例如对象代码)的
    编译器,该代码可以在具有或没有附加链接处理的情况下在具有至少一个x86指令集核的
    处理器716上执行。类似地,图7示出了高级语言702的程序可以使用可替换指令集编译器
    708编译以生成可替换指令集二进制代码710,其可以由没有至少一个x86指令集核的处理
    器714(例如,具有执行Sunnyvale,CA的MIPSTechnologies的MIPS指令集和/或执行
    Sunnyvale,CA的ARMHoldings的ARM指令集的核的处理器)本机执行。指令转换器712用于
    将x86二进制代码706转换成可以由没有x86指令集核的处理器714本机执行的代码。该经转
    换的代码不大可能与可替换的指令集二进制代码710相同,因为能够这样做的指令转换器
    难以做出;然而,经转换的代码将完成一般操作并且由来自可替换指令集的指令构成。因
    而,指令转换器712表示软件、固件、硬件或其组合,其通过模仿、仿真或任何其他过程而允
    许没有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706。

    用于高速缓存占据确定和指令调度的装置和方法

    本发明的一个实施例使用与数据相关联的地址来确定数据项目当前是否存储在高速
    缓存中并且基于所述确定调度一个或多个随后操作(例如宏指令、微操作等)。术语“调度”
    在本文中宽泛地用于指代涉及是否和/或何时应当执行特定指令、微操作的任何决定;包括
    关于特定工作部分是否可以从一个线程再分配到另一个的决定(例如当线程看起来像从其
    他线程的工作队列盗取工作时,如在以下示例中描述的那样)。

    除确定数据是否处于高速缓存中之外,一个实施例也可以提供其中存储数据的
    (多个)特定高速缓存级的指示(例如1级(L1)、2级(L3)、较低级高速缓存(LLC)等);访问数
    据所要求的预期“时间”量的指示(例如以处理器周期计);和/或关于地址是否根据指定搜
    索等级而“太远”的指示(例如使用阈值数目的处理器周期)。

    本发明的一个实施例可以实现为指令,其取得作为输入的地址并且提供关于由地
    址标识的数据项目当前是否被缓存的指示。如下文详细讨论的,该指令的结果然后可以在
    调度随后指令以用于执行时使用(例如选择针对其地址被缓存的那些指令)。

    作为示例,该“高速缓存占据确定”指令可以采取诸如以下形式:

    INCACHESRC1,DST1

    其中数据地址存储在源寄存器SRC1中并且确定结果(即数据是否被缓存、什么级、预期
    的访问“时间”、地址“太远”的指示等等)被写入到目的寄存器DST1。

    在一个实施例中,高速缓存占据确定指令是矢量指令,诸如先进的矢量扩展(AVX)
    或AVX2指令,其从一个或多个矢量源寄存器(例如其中单个矢量寄存器可以存储多个地址
    操作数)读取多个地址并且将多个结果写入到一个或多个矢量目的寄存器(例如其中单个
    矢量目的寄存器存储多个结果)。然而应当指出的是,本发明的底层原理不限于矢量实现。

    如图8中所图示的,在一个实施例中,处理器内的指令逻辑830包括高速缓存占据
    确定逻辑800以用于执行本文描述的高速缓存占据确定操作。例如,响应于执行INCACHE指
    令,高速缓存占据确定逻辑800可以确定一个或多个地址801是否与当前存储在高速缓存级
    810-812之一中的数据相关联。如上文提及的,结果802可以包括该信息以及(多个)特定高
    速缓存级的指示、预期的访问时间(例如以处理器周期计)和/或地址是否太远的指示(例如
    基于指定阈值的处理器周期)。在一个实施例中,通过使用(多个)地址执行高速缓存查找操
    作来完成确定(例如比较地址或地址的部分与现有高速缓存标签)。

    在一个实施例中,一旦确定结果802,它们就可以由调度逻辑820使用以用于调度
    随后操作的执行。例如,关于存储在L1高速缓存中的数据的操作可以首先执行,接着是关于
    存储在L2高速缓存中的数据的操作,接着是在高速缓存层级中进一步向下的操作(例如存
    储在较低级高速缓存(LLC)或(多个)其他较低高速缓存级中)。尽管没有在图8中具体示出,
    但是调度逻辑820可以实现在处理器或核的指令解码级中(例如在预留站或其他调度单元
    内)。

    在一个实施例中,指令充当针对随后操作的线索。与地址相关联的高速缓存行可
    以在指令返回之后(例如在随后操作需要数据的时候)从高速缓存逐出,从而导致其结果废
    弃。在这样的情况下,仅性能将受影响并且地址将简单地使用已知技术而被带回到高速缓
    存中。

    指令的一个实施例可以尝试保持高速缓存810-812中的高速缓存行。例如,由占据
    确定逻辑800执行的查找可以被视为使用高速缓存行(例如针对至少最近使用的(LRU)或其
    他逐出策略,或者提供行可以在高速缓存中停留多久/最近如何使用它的指示)以改进行足
    够长久地维持在高速缓存中以由随后指令使用的几率。

    如所提及的,由高速缓存占据指令提供的信息(例如是否在高速缓存中、高速缓存
    级等)然后可以用来调度随后指令和/或线程的执行。例如,高速缓存占据指令可以使得各
    种类型的过程能够以更为高效、具有高速缓存意识的方式执行,包括(但不限于)围绕工作
    队列循环的工作队列算法、在每一次迭代处提取并处理工作项目、以及可能地在这样做时
    利用附加项目扩增工作队列。在存在并发的情况下,任何项目可以从工作队列拿掉并且执
    行。可以存在或者可以不存在并行性。在一些情况下,项目可能需要一次一个地处理(单线
    程的);在其他场景中,若干工作者可以并行地处理分立项目(参见下文讨论的“工作盗
    取”)。

    本发明的一个实施例用于从工作队列选择下一项目以进行处理。在所有情况等同
    (并且忽略公正性问题)的情况下,有益的性能将是选取其数据已经处于一个高速缓存中
    (特别地在高速缓存层级中进一步向上的高速缓存,诸如L1高速缓存810)的项目。如果所执
    行的过程是存储器范围的(其中难以预测接下来将需要哪些地址),则这可能特别有益。

    在本发明的一个实施例中,利用本发明的实施例的过程扫描工作队列以搜寻“被
    缓存的”项目(例如如本文描述的利用高速缓存占据指令),并且处理首先找到的那个。可替
    换地或者此外,过程可以标识被缓存的多个项目并且选取在高速缓存层级中相对较高的一
    个或多个工作项目(例如在L1高速缓存中)。如果在高速缓存中没有找到项目,则工作队列
    上的第一个项目被拾取和处理(例如使用标准技术)。

    当对其节点分散于存储器中的树进行扫描时,本发明的实施例可以特别地适用。
    在这种实现中,工作队列上的每一个项目指定向节点的指针。若干这样的节点可以驻留在
    相同高速缓存行中,但是在任意的次序或位置中。通常,可以仅基于预期的高速缓存行为而
    在例如遍历树的宽度优先搜索(BFS)或深度优先搜索(DFS)之间做出选择,从而希望针对空
    间地点进行优化。

    使用本发明的实施例,可以通过使高速缓存引导扫描来获得较大精度(如上文讨
    论的)。这样的扫描的实例包括例如遍历四元/八元树来以任意次序处理其遗留物,并且标
    记并清扫垃圾收集器(即回收不再在由程序的使用中的存储器的部分的过程)。

    另一示例牵涉到工作盗取并行执行框架,诸如线程构建模块(TBB)、由本申请的受
    让方开发以用于编写利用多核处理器的软件程序的C++模板库。当线程看起来像是从其他
    线程的工作队列盗取工作时,其将偏好盗取已经处于盗取线程的高速缓存中的工作。确定
    工作是否处于高速缓存中可以使用本文描述的技术来完成。

    作为具体示例,将在BFS扫描的以下教科书实现(来自Wikipedia)的上下文内描述
    本发明的一个实施例:


    一个实施例通过循环遍历Q或Q的有限部分来实现行6(),以搜
    索驻留在高速缓存中的条目(例如执行上文描述的高速缓存占据指令)。如果找到一个,则
    其“出列”(可能地从Q中部)并且返回。如果没有找到这样的条目,则Q的第一个元素出列。要
    指出的是,搜索可能不再是宽度优先的。

    另一应用是在行13中检查以确定u是否处于高速缓存中。如果是,则继续检查其标
    记,并且将其排队在“被缓存”队列中。如果u不处于高速缓存中,则将其排队在“未被缓存”
    队列中。在一个实施例中,首先从“被缓存”队列执行工作项目;当被缓存队列为空时,从“未
    被缓存”队列执行工作项目。

    在图9中图示了用于确定数据是否存储在高速缓存中的方法的一个实施例。在901
    处,标识与要处理的数据相关联的一个或多个地址(例如如从等待执行的一个或多个指令
    所确定的)。如之前提及的,在一个实施例中,多个地址可以同时读取和处理(例如通过矢量
    执行从矢量寄存器读取)。在902处,关于与每一个地址相关联的数据是否存储在一个高速
    缓存级中做出确定。如果否,则在904处存储指示数据没有处于高速缓存中的结果(例如在
    目的/结果寄存器中)。如果是,则在903处,存储指示数据存储于一个高速缓存级中的结果,
    潜在地连同高速缓存级的身份和/或其他相关信息(例如预期的访问“时间”、地址“太远”的
    指示等等)。

    在905处,基于结果调度一个或多个随后操作。例如,如果没有数据存储在高速缓
    存级中,则可以使用现有调度技术来调度随后操作。然而,如果用于一个或多个待决操作的
    数据存储在高速缓存中,则这些操作可以被调度以用于在没有存储于高速缓存中的数据的
    操作之前执行。在一个实施例中,其中存储数据的(多个)高速缓存级的身份可以用于调度。
    例如,关于存储在L1高速缓存中的数据的操作可以首先执行,接着是关于存储在L2高速缓
    存中的数据的操作,并且然后是在高速缓存层级中进一步向下的操作(例如存储在较低级
    高速缓存(LLC)或(多个)其他较低高速缓存级中)。

    应当指出的是,使用本文描述的技术调度的“操作”可以包括任何形式的操作,包
    括例如宏指令或微操作。此外,本发明的底层原理可以实现在任何类型的指令集架构上,包
    括复杂指令集计算机(CISC)架构和精简指令集计算机(RISC)架构。

    在图10中图示了用于基于每一个工作项目的数据是否存储于高速缓存中来从工
    作队列调度工作项目的方法的一个实施例。在1001处,选择一个或多个工作项目以用于评
    估。如所提及的,每一个工作项目可以存储在待决执行的工作队列中并且多个工作项目可
    以并行地评估。在1002处,关于执行一个或多个工作项目所需要的数据是否存储在高速缓
    存中做出确定(例如使用如上文讨论的数据的地址)。如果否,则在1004处,存储指示数据没
    有处于高速缓存中的结果,并且在1005处使用现有技术来调度工作项目(例如使用BFS扫
    描)。

    然而,如果在1002处确定一个或多个工作项目的数据被缓存,则在1003处,存储指
    示数据存储在一个高速缓存级中的结果,潜在地连同高速缓存级的身份和/或其他相关信
    息(例如预期的访问“时间”、地址“太远”的指示等等)。在1005处,针对其缓存数据的工作项
    目可以被调度以用于在没有存储于高速缓存中的数据的工作项目之前执行。在一个实施例
    中,其中存储数据的(多个)高速缓存级的身份可以用于调度。例如,如在图9中所示的实施
    例中,与存储在L1高速缓存中的数据有关的工作项目可以首先执行,接着是与存储在L2高
    速缓存中的数据有关的工作项目,并且然后是在高速缓存层级中进一步向下的工作项目
    (例如存储在较低级高速缓存(LLC)或(多个)其他较低高速缓存级中)。

    本发明的实施例可以包括已经在上文描述的各种步骤。步骤可以体现在计算机可
    执行指令中,其可以用于使得通用或专用处理器执行所述步骤。可替换地,这些步骤可以通
    过包含用于执行步骤的硬连线逻辑的具体硬件组件来执行,或者通过编程计算机组件和定
    制硬件组件的任何组合来执行。

    如本文描述的,指令可以是指诸如专用集成电路(ASIC)的硬件的具体配置,所述
    硬件配置成执行某些操作或者具有存储在非暂时性计算机可读介质中所体现的存储器中
    的预确定功能性或软件指令。因而,在图中示出的技术可以使用在一个或多个电子设备(例
    如终端站、网络元件等)上存储和执行的代码和数据来实现。这样的电子设备使用计算机机
    器可读介质来(内部地和/或通过网络与其他电子设备)存储和传送代码和数据,计算机机
    器可读介质诸如非暂时性计算机机器可读存储介质(例如磁盘;光学盘;随机存取存储器;
    只读存储器;闪速存储器设备;相变存储器)和暂时性计算机机器可读通信介质(例如电气、
    光学、声学或其他形式的传播信号——诸如载波、红外信号、数字信号等等)。此外,这样的
    电子设备典型地包括耦合到一个或多个其他组件的一个或多个处理器的集合,所述其他组
    件诸如一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如键
    盘、触摸屏和/或显示器)和网络连接。处理器的集合和其他组件的耦合典型地通过一个或
    多个总线和桥(还称为总线控制器)进行。存储设备和承载网络业务量的信号分别表示一个
    或多个机器可读存储介质和机器可读通信介质。因而,给定电子设备的存储设备典型地存
    储代码和/或数据以用于在该电子设备的一个或多个处理器的集合上执行。当然,本发明的
    实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合来实现。贯穿该详细描
    述,出于解释的目的,阐述了众多具体细节以便提供对本发明的透彻理解。然而,对于本领
    域技术人员而言将清楚的是,本发明可以在没有这些具体细节中的一些的情况下实践。在
    某些实例中,没有详尽地描述公知结构和功能以便避免使本发明的主题模糊。因而,本发明
    的范围和精神应当根据所附的权利要求来判定。

    关 键  词:
    用于 高速缓存 占据 确定 指令 调度 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:用于高速缓存占据确定和指令调度的方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6342650.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1