首页> 中国专利> 微处理器中的数据预取方法及微处理器

微处理器中的数据预取方法及微处理器

摘要

本发明提供一种双重用途缓存复载缓冲器(CRB)来保存需求负载以及预取负载。一种新形式的数据缓存分块接触(DCBT)指令指定预取数据所要放入的缓存分级结构中的哪一级别。发出第一异步形式的DCBT指令以将数据流预取到L2缓存中。使用第二同步形式的DCBT指令来将数据从L2缓存预取到主CPU中的CRB,这将绕过L1数据缓存,并且将数据直接转发到寄存器堆。该CRB具有双重用途,并且用来保存常规缓存复载以及前述预取缓存线。

著录项

  • 公开/公告号CN1489061A

    专利类型发明专利

  • 公开/公告日2004-04-14

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN03155125.4

  • 发明设计人 戴维·S·雷;

    申请日2003-08-22

  • 分类号G06F12/08;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人付建军

  • 地址 美国纽约

  • 入库时间 2023-12-17 15:13:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-08

    专利权有效期届满 IPC(主分类):G06F12/08 专利号:ZL031551254 申请日:20030822 授权公告日:20051026

    专利权的终止

  • 2005-10-26

    授权

    授权

  • 2004-06-23

    实质审查的生效

    实质审查的生效

  • 2004-04-14

    公开

    公开

说明书

技术领域

本发明一般涉及数字电子电路,特别涉及一种微处理器中用于不同工作负载类型的数据预取机制。

背景技术

一种提高处理器性能的公知技术是将存储器子系统分层为称作缓存(cache)的若干存储器级别。离主中央处理单元(CPU)最近的缓存典型地小且快。离主CPU越远的缓存越大且越慢。

另一种提高处理器性能的公知技术是将数据预取到离主CPU最近的缓存中。该技术帮助消除从远端缓存或存储器提取数据的延迟。很多指令集体系结构具有附加指令,用来将数据从存储器预取到处理器的缓存分级结构中。如果软件可以预先充分预测程序随后将要使用的存储器位置,则可以使用这些指令来有效消除缓存未命中(miss)延迟。

一种提供软件预取的方法已被归类为同步、面向软件的预取。当预取提示通常指定小量存储器如单一缓存线时,预取被认为是同步的。另外,指令可以如同任何其他载入指令以程序次序执行。PowerPCTM体系结构中称作数据缓存分块接触(data cache blocktouch,DCBT)的指令是同步预取指令的例子。

预取指令的另一指令类被认为是异步的,在这种情况下,这些指令可以指定极其大量的存储器来以缓存线单元为增量进行预取。流控制器可以用来独立于常规载入和存储指令而运行。

存在可以最有效利用预取软件和硬件技术的特定工作负载。微处理器系统中一种这样的工作负载称作流数据。在这种工作负载中,大量数据以流的形式输入核心微处理器。该数据经常用于一次性计算,然后回传出去。这对于图形类工作负载是常见的。经常,这种流数据的工作集远远大于级别1(L1)缓存的容量。另外,该数据经常仅使用一次。

先前的流机制使用硬件密集型数据预取机制来以流的形式将数据输入到L1缓存中。这些方案包括大量附加硬件来检测流和在需求负载之前进行预取。另外,当数据以流的形式输入到L1缓存中时,它经常取代缓存中的其他有用数据。

因此,需要一种机制来为不同类型的工作负载提供不同的数据预取方案。

发明内容

本发明提供一种在微处理器中预取数据的方法。微处理器具有缓存分级结构,包括缓存复载缓冲器(cache reload buffer,CRB)、L1缓存和L2缓存。该方法包括通过使用异步形式的数据缓存分块接触(DCBT)指令,将数据流预取到L2缓存中。该方法还包括通过使用同步形式的DCBT指令,将数据从L2缓存直接预取到CRB,而不将数据存储在L1缓存中。另外,该方法包括从CRB提取数据以进行处理。

附图说明

为更全面理解本发明及其优点,现在结合附图来参阅下面描述,其中:

图1是示出在微处理器中实现的数据流硬件的优选实施例的方框图;

图2示出一种新形式的数据缓存分块接触(DCBT)指令;

图3A是示出流事务(transaction)的异步预取操作的流程图;以及

图3B是示出流事务的同步预取操作的流程图。

具体实施方式

在下面讨论中,对各种特定细节进行阐述,以提供对本发明的彻底理解。然而,本领域的技术人员应该清楚,可以不在这些特定细节的情况下实施本发明。另外,公知单元以示意图或方框图的形式示出,从而不以累赘的细节使本发明变得不清楚。

还需要注意的是,除非另外指明,在此描述的所有功能可以采用硬件或软件或者其组合来执行。然而,在一个优选实施例中,除非另外指明,这些功能是根据代码如计算机程序代码、软件和/或编码为执行这些功能的集成电路由处理器如计算机或电子数据处理器来执行的。

参照图1,标号100在总体上表示实施本发明特性的数据流硬件。数据流硬件100可以在微处理器系统(未示出)中实现。最好,这种微处理器系统包括根据简化指令集计算(RISC)技术运行的PowerPCTM微处理器。

数据流硬件100包括通用寄存器堆(GPR)102、载入/存储单元(LSU)104以及L2缓存单元106。LSU 104包括解码/控制块108、地址生成(AGEN)块110、用于缓冲存储数据和地址的存储队列112、缓存复载缓冲器(CRB)114、L1数据标签(L1 D-标签)116、L1数据缓存(L1 D-缓存)118、L1缓存控制块120、L1标签比较块122、第一复用器124、寄存器(锁存元件集合)126、第二复用器128以及格式复用器130。L2缓存单元106包括L2缓存132、L2标签134、L2流控制器136、L2缓存控制块138以及L2标签比较块140。指令提取单元(未示出)从L1 I-缓存(未示出)提取指令,并且在发令总线(issue bus)142上将指令发到LSU。解码/控制块108从发令总线142接收指令,对指令进行解码,并且生成用于LSU 104数据流的控制信号。

AGEN块110从GPR 102接收寄存器源值RA和RB,并且执行寄存器源值RA和RB的相加操作,从而产生有效地址(EA)。对于常规载入指令,EA用来对L1 D-标签116和L1 D-缓存118寻址。L1D-标签116与L1标签比较块122一起指示在L1 D-缓存118中载入地址是否命中。存储队列112用于常规存储指令的操作期间。存储队列112从GPR 102接收数据,并且对L1 D-缓存118的写入请求排队。

CRB 114用来保存通过L2缓存线总线144从L2缓存132提取的多条缓存线。对于常规需求负载(demand load),从L2缓存132接收的缓存线写入到CRB 114中。然后,CRB 114仲裁存储队列112,以对L1 D-缓存118执行写入操作。例如,这可以采用CRB114总是具有最高优先级的简单仲裁方案来实现。对于预取负载,将通过L2缓存线总线144从L2缓存132接收的缓存线写入到CRB114中。然后,CRB 114通过格式复用器130将数据转发到GPR102,并且绕过L1 D-缓存118。当从L2缓存返回数据时,控制总线(未示出)指示数据是用于需求提取还是预取。

L2缓存132保存数据和指令缓存线。L2标签134以及L2标签比较块140用来指示在L2缓存中缓存地址是否命中。L2缓存控制块138控制L2缓存读写操作。L2流控制器136控制异步数据预取操作。流控制器为每个活动流保存地址和字节计数。当预取命令来自LSU 104时,它指定所要提取的初始地址和字节数。L2流控制器136通过进入存储器并且一次提取一条缓存线直到最大字节计数,提取在原始指令中指定的字节数。

在本描述中,“同步”是指作为微处理器常规指令流一部分的操作,而“异步”是指独立于常规指令流发起和运行的操作。

现在参照图2,示出本发明的数据缓存分块接触(DCBT)指令200。DCBT指令200包括操作码(OPCODE)字段202、TH字段204以及RA/RB字段206。操作码字段202指定所要发起的操作。TH字段204指定DCBT指令200是常规接触还是增强接触。RA/RB字段206包含GPR位置,它们用来形成有效地址(EA)。由RA/RB字段206指定的寄存器的内容在LSU中相加在一起(RA+RB)来形成EA。EA可以用作存储预取数据的存储器地址位置。对于DCBT指令200,EA还可以形成新控制字208。控制字208具有四个控制字段。这四个控制字段包括CONTROL(控制)字段208A、CACHEID(缓存ID)字段208B、UNITCNT字段208C以及STREAMID(流ID)字段208D。CONTROL字段208A指定开始/停止条件。CACHEID字段208B指定预取数据所要放入的缓存级别。例如,两位编码将具有下列意义:

00-L0缓存(CRB)

01-L1缓存

10-L2缓存

11-L3缓存

UNITCNT字段208C指定所要预取的缓存线数。STREAMID字段208D指定要开始哪个流。

在DCBT指令200中,从L3缓存一路降到L0缓存,指定预取数据所要放入的缓存级别。本方案中的L0缓存是双重用途CRB114。最好,软件将发起DCBT指令200将多条缓存线预取到L2缓存132中。然后,软件发起DCBT指令200将各条缓存线预取到作为CRB 114的L0缓存中。

在图3A中,一个流程图示出本发明的流事务的异步预取操作300A。在步骤302,指令单元发出第一DCBT指令到LSU。第一DCBT指令用来指示要执行到L2缓存中的流操作。在步骤304,UNITCNT字段208C指定所要预取的缓存线数。在步骤306,STREAMID字段208D指定要开始哪个流。在该步骤,从L3缓存一路降到L0缓存,指定预取数据所要放入的缓存级别。最好,本方案中的L0缓存是双重用途CRB。软件将发起DCBT指令以将各条缓存线预取到L0缓存(即CRB)中。在步骤308,CACHEID字段208B将缓存线带入L2缓存。在步骤310,LSU对该第一DCBT指令进行解码,以获得包含在第一DCBT指令中的控制信息。在步骤312,发出第二DCBT指令,以向目标为L2缓存的流操作提供起始有效地址(EA)。在步骤314,LSU还将控制信息和有效地址(EA)传到L2缓存。在步骤316,L2流控制器然后发起一系列存储器读取操作以将所有缓存线带入L2缓存。在步骤318,L2流控制器保存每个流的地址和计数字段。在步骤320,L2流控制器提取在步骤304指定的缓存线数。

现在参照图3B,一个流程图示出本发明的流事务的同步预取操作300A。在步骤322,发出第三DCBT指令,它指示将一条缓存线从L2缓存中的流数据预取到L0缓存。在步骤324,CACHEID 208B将数据取到L0缓存(CRB)中。在步骤326,发出第四DCBT指令,它指示从其预取的有效地址(EA)。在步骤328,LSU根据第四DCBT指令将第四DCBT指令和有效地址(EA)发送到L2缓存。在步骤330,L2缓存然后将数据返回到LSU。数据是以缓存线的形式返回的。缓存组织为多条缓存线。例如,典型的缓存线将为32字节到128字节。在步骤332,LSU将数据写入到CRB中,并且通过绕过L1缓存将数据直接转发到GPR。

发给LSU的随后需求负载将与CRB中的地址以及L1 D-标签执行地址比较,并且检查命中情况。常规需求负载流及其相关地址比较与指令流是同步的。如果在CRB中存在命中,则将数据直接从CRB转发到寄存器堆。注意,命中意味着地址被定位。

从上面描述中应该理解,在不脱离本发明的精神实质的情况下可以在本发明的优选实施例中进行各种修改和变更。本描述仅起说明的目的,而不是限制性的。本发明的范围仅由所附权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号