首页> 中国专利> 高速缓冲存储器中的管线化读取-修改-写入操作

高速缓冲存储器中的管线化读取-修改-写入操作

摘要

在所述实例中,处理器系统包含产生存储器写入请求的处理器核心、高速缓冲存储器(304)及所述高速缓冲存储器(304)的存储器管线。所述存储器管线具有暂存缓冲器(306)、锚定阶段(302)及RMW管线(300)。所述锚定阶段(302)确定写入请求的数据有效负载是否对应于部分写入。如果是,那么将所述数据有效负载写入到所述暂存缓冲器(306)且从对应高速缓冲存储器(304)地址读取符合数据以与所述数据有效负载合并。所述RMW管线(300)具有合并阶段(312)及校验子产生阶段(314)。所述合并阶段(312)将所述暂存缓冲器(306)中的所述数据有效负载与所述符合数据合并以制造合并数据。所述校验子产生阶段(314)使用所述合并数据产生ECC校验子。所述存储器管线将所述数据有效负载及ECC校验子写入到所述高速缓冲存储器(304)。

著录项

  • 公开/公告号CN113853652A

    专利类型发明专利

  • 公开/公告日2021-12-28

    原文格式PDF

  • 申请/专利权人 德州仪器公司;

    申请/专利号CN202080037625.9

  • 申请日2020-05-26

  • 分类号G11B20/18(20060101);G06F12/00(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人林斯凯

  • 地址 美国德克萨斯州

  • 入库时间 2023-06-19 13:26:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-04-01

    实质审查的生效 IPC(主分类):G11B20/18 专利申请号:2020800376259 申请日:20200526

    实质审查的生效

说明书

技术领域

此描述大体上涉及可形成为例如系统单芯片(SoC)的集成电路的部分的处理装置。更具体来说,此描述涉及此处理装置的存储器系统中的读取-修改-写入操作的管理的改进。

背景技术

SOC是单个裸片上的具有多个功能块(例如,一或多个处理器核心、存储器以及输入及输出)的集成电路。

存储器写入请求由连接到总线结构的处理器(例如,中央处理单元(CPU)或数字信号处理器(DSP))通过进行中的系统过程产生,且经引导朝向例如高速缓冲存储器或主存储器的特定系统存储器。存储器可为(例如)静态随机存取存储器(SRAM)。存储器写入请求包含待写入的数据有效负载,且可包含用于校正数据有效负载中的错误的代码(数据有效负载可被视为包含ECC校验子)。此代码在本文中被称为错误校正码(ECC)校验子。对应于ECC校验子的可使用ECC校验子校正的数据量在本文中被称为数据块。数据块可为(例如)单个字,例如32字节字或另一数据长度。

层级式存储器在针对相应处理器核心(例如,CPU或DSP)具有不同读取/写入响应时间的存储器块之间移动数据及指令。例如,对于相应处理器核心更为局部的存储器将通常具有更低响应时间。层级式存储器包含具有多个级别(例如,L1、L2及L3)的高速缓冲存储器系统,其中不同级别描述高速缓冲存储器对于相应处理器核心的不同程度的局部性或不同平均响应时间。在本文中,更为局部或更低响应时间的高速缓冲存储器(例如,L1高速缓冲存储器)在本文中被称为比更不局部或更高响应时间的更低级别高速缓冲存储器(例如,L2高速缓冲存储器或L3高速缓冲存储器)更高级别的高速缓冲存储器。

发明内容

在所述实例中,处理器系统包含产生存储器写入请求的处理器核心、高速缓冲存储器及所述高速缓冲存储器的存储器管线。所述存储器管线具有暂存缓冲器、锚定阶段及读取-修改-写入(RMW)管线。所述锚定阶段确定写入请求的数据有效负载是否对应于部分写入。如果是,那么将所述数据有效负载写入到所述暂存缓冲器且从对应高速缓冲存储器地址读取符合数据以与所述数据有效负载合并。所述RMW管线具有合并阶段及校验子产生阶段。所述合并阶段将所述暂存缓冲器中的所述数据有效负载与所述符合数据合并以制造合并数据。所述校验子产生阶段使用所述合并数据产生ECC校验子。所述存储器管线将所述数据有效负载及ECC校验子写入到所述高速缓冲存储器。

附图说明

图1是系统单芯片(SoC)上的系统的部分的示范性处理器的框图。

图2是包含于图1的存储器控制器内或与图1的存储器控制器相关联的示范性存储器管线的框图。

图3是作为处理器的部分的用于处理RMW存储器事务的示范性RMW存储器管线的框图。

图4A展示提供以高速缓冲存储器中的地址处的写入为目标的写入请求的数据有效负载中的数据块内容的不同组合的示范性列表的表。

图4B展示针对图4A的对应情况使用的操作(RMW、完全写入等)的示范性列表的表。

图4C展示提供RMW是否用于图4A的对应情况的替代示范性列表的表。

具体实施方式

图1是示范性处理器100的框图,所述处理器100是SoC 10的部分。SoC 10包含产生新数据的处理器核心102,例如,CPU或DSP。处理器100可包含时钟103,所述时钟103可为处理器核心102的部分或与其分开(未展示单独时钟)。处理器核心102还产生请求从数据存储器控制器104(DMC)及流引擎106读取的存储器读取请求以及请求写入到数据存储器控制器104(DMC)及流引擎106的存储器写入请求。在一些实施例中,处理器核心102在处理器核心102的时钟103的每个周期产生一个读取请求或写入请求。处理器核心102还经耦合以从程序存储器控制器108(PMC)接收指令,所述PMC 108从程序存储器(例如,L1P高速缓冲存储器112)检索所述指令。流引擎106通过发送旁通DMC 104及PMC 108的某些存储器事务及其它存储器相关消息而促进处理器核心102。

SoC 10具有层级式存储器系统。在每一级别处的每一高速缓冲存储器可为统一的或划分为单独数据及程序高速缓冲存储器。例如,DMC 104可耦合到1级数据高速缓冲存储器110(L1D高速缓冲存储器)来控制将数据写入到L1D高速缓冲存储器110及从L1D高速缓冲存储器110读取数据。类似地,PMC 108可耦合到1级程序高速缓冲存储器112(L1P高速缓冲存储器)来从L1P高速缓冲存储器112读取指令以供处理器核心102执行。(在此实例中,处理器核心102不产生到L1P高速缓冲存储器112的写入。)用于2级高速缓冲存储器(L2高速缓冲存储器116,例如,L2 SRAM)的统一存储器控制器114(UMC)经通信地耦合以从DMC 104及PMC108接收读取及写入存储器存取请求,且从流引擎106、PMC 108及存储器管理单元117(MMU)接收读取请求。UMC 114经通信地耦合以将经读取数据(来自1级高速缓存之外)传递到DMC104、流引擎106及PMC 108,所述经读取数据接着被传递到处理器核心102。UMC 114还经耦合以控制写入到L2高速缓冲存储器116及从L2高速缓冲存储器116读取,且将存储器存取请求传递到3级高速缓冲存储器控制器118(L3控制器)。L3控制器118经耦合以控制写入到L3高速缓冲存储器119及从L3高速缓冲存储器119读取。UMC 114经耦合以接收从L2高速缓冲存储器116及L3高速缓冲存储器119(经由L3控制器118)读取的数据。UMC 114经配置以控制关于指令及数据的存储器事务(读取及写入请求)的管线化。L3控制器118经耦合以控制写入到L3高速缓冲存储器119及从L3高速缓冲存储器119读取且调解与处理器100外部的外部功能120(例如,其它处理器核心、SOC 10的外围功能及/或其它SoC)的事务。因此,L3控制器118是SoC 10的共享存储器控制器,且L3高速缓冲存储器119是SoC 10的共享高速缓冲存储器。因此,与处理器100及外部功能120相关的存储器事务传递通过L3控制器118。存储器事务由处理器核心102产生且被朝向更低级别的高速缓冲存储器传达,或由外部功能120产生且被朝向更高级别的高速缓冲存储器传达。

MMU 117将地址转译及存储器属性信息提供给处理器核心102。其通过查找存储在存储器中的表中的信息来这样做(MMU 117与UMC 114之间的连接使MMU 117能够使用读取请求来存取含有表的存储器)。

图2是包含用于接收且服务存储器事务请求且包含于图1的UMC 114内或与图1的UMC 114相关联的示范性存储器管线200的框图,因此,为了说明起见,图2还重复来自图1的与UMC 114通信的各种块。存储器管线200包含耦合到整数M个管线组206的初始调度块202。每一管线组206包含整数P个阶段208且被说明为初始调度块202下方的垂直列。阶段208中的不同者可执行不同功能,例如(但不限于)CPU地址与高速缓冲存储器地址之间的转译、高速缓冲存储器命中检测、检查错误(例如,寻址或超出范围错误)及写入到对应高速缓冲存储器。

DMC 104通过数目N

当处理器100的存储器控制器(例如,DMC 104、流引擎106、PMC 108或L3控制器118)将对于从由UMC 114调解的存储器(例如,L2高速缓冲存储器116、L3高速缓冲存储器119或外部功能120中的存储器)读取或写入到所述存储器的请求传达到UMC 114时,初始调度块202调度由针对特定请求的适当管线组206处置请求。因此,初始调度块202对读取及写入请求执行仲裁。仲裁确定哪个管线组206将接收在初始调度块202排队的哪个存储器事务及以何顺序接收。在一些实例中,例如,取决于被写入或请求的数据的存储器地址、管线组206的请求负载或伪随机函数,读取或写入请求可仅被调度到管线组206中的对应者中。初始调度块202通过在管线组206的第一阶段当中进行选择而调度从DMC 104、流引擎106、PMC108及L3控制器118接收的读取及写入请求。被请求对L3高速缓冲存储器119(或外部功能120)执行的存储器事务在传递通过对应于L2高速缓冲存储器116的存储器管线200(管线组206及潜在地,总线窥探相关阶段,其未展示)之后由L3控制器118中的L3高速缓冲存储器调度块(未展示)仲裁且调度到L3高速缓冲存储器管线。

请求调度防止待由相同管线组206处置的读取或写入请求之间的冲突,且保持存储器一致性(下文进一步论述)。例如,请求调度维持由处理器100的不同存储器控制器或由相同存储器控制器的不同总线放置于初始调度块202的存储器事务队列(存储器存取请求队列)中的存储器事务当中的顺序。

此外,请求由DMC 104或PMC 108发送的管线存储器事务(读取或写入请求),这是因为存储器事务已经传递通过对应1级高速缓冲存储器管线(在DMC 104中针对L1D高速缓冲存储器110,且在PMC 108中针对L1P高速缓冲存储器112)且以更低级别的高速缓冲存储器(或外部功能120)为目标或已在相应1级高速缓冲存储器中产生未命中。因此,产生1级高速缓冲存储器命中的存储器事务通常不需要存取图2中展示的管线组206,所述管线组206控制或调解对L2高速缓冲存储器116、L3高速缓冲存储器119及外部功能120(见图1)的存储器存取。

图2中展示的管线组206是UMC 114的部分。L1D高速缓冲存储器110可保持由处理器核心102产生的数据。L2高速缓冲存储器116或L3高速缓冲存储器119可通过(例如)将数据写入到L2高速缓冲存储器116或L3高速缓冲存储器119或经由来自L2高速缓冲存储器控制器114或L3高速缓冲存储器控制器118的窥探事务而使由处理器核心102产生的数据对外部功能120可用。

存储器一致性是在整个存储器系统的逻辑上相同地址处的存储器内容(或至少被视为或指示为有效的内容)与由系统中的一或多个处理器基于读取及写入请求的有序流预期的内容相同时的情况。防止影响特定数据或在特定逻辑存储器地址的写入旁通影响相同数据或相同存储器地址的先前发出的写入或读取。此外,某些类型的事务具有优先权,例如,牺牲高速缓冲存储器事务(未展示牺牲高速缓冲存储器)及窥探事务。

牺牲高速缓冲存储器是与特定高速缓冲存储器相关联的完全相关联高速缓冲存储器且可经配置使得如果存在高速缓冲存储器命中,那么不会关于对应牺牲高速缓冲存储器采取动作;如果存在高速缓冲存储器未命中及牺牲高速缓冲存储器命中,那么在高速缓冲存储器与牺牲高速缓冲存储器之间交换对应存储器行;且如果存在高速缓冲存储器未命中及牺牲高速缓冲存储器未命中,那么在对应高速缓冲存储器行中写入对应于主存储器中产生高速缓冲存储器未命中的位置的数据,且在牺牲高速缓冲存储器中写入高速缓冲存储器行的先前内容。完全相关联表示对应于主存储器中的任何位置的数据可写入到牺牲高速缓冲存储器的任何行中。

总线窥探是高速缓冲存储器中的一致性控制器(窥探器)通过其监控或窥探总线事务以维持分散式共享存储器系统中(例如,SoC 10中)的存储器一致性的方案。如果修改共享高速缓冲存储器块的事务出现在总线上,那么窥探器检查其相应高速缓冲存储器是否具有对应于共享块的相同逻辑地址的数据的副本。如果高速缓冲存储器具有共享块的副本,那么对应窥探器执行动作来确保高速缓冲存储器中的存储器一致性。此动作可为(例如)根据在总线上检测到的事务刷新共享块、使共享块无效或更新共享块。

在由初始调度块202执行的第一级别的仲裁处,UMC 114(L2高速缓冲存储器116控制器,其包含初始调度块202)确定是否允许存储器事务在存储器管线200中继续进行,及在哪个管线组206中继续进行。一般来说,每一管线组206是独立的,使得每一管线组206上的读取及写入事务(例如,将来自L1D高速缓冲存储器110的数据写入到L2高速缓冲存储器116)不具有关于其它管线组206上的写入事务的排序或一致性要求。在每一管线组内,写入到L2高速缓冲存储器116以其被调度的顺序继续进行。如果存储器事务引起寻址危险或违反排序要求,那么事务暂停且不被发出到管线组206。

部分写入请求(在本文中也称为部分写入)是具有包含数据块(或多于一个数据块)的数据有效负载的写入请求,其中数据块中的一或多个(但少于全部)字节将被写入到目的地存储器地址。例如,在一些系统中,写入请求数据有效负载可比目的地存储器的可寻址位置写入长度短,但仍等于所述位置的最小写入长度或比最小长度长。最小写入长度是指可在单个时钟周期中从存储器读取或写入到存取器的数据量,其通常通过存储器的物理宽度确定。一般来说,存储器的最小写入长度将是数据块长度的倍数。例如,具有128字节行长度的存储器可具有64字节的最小写入长度,其对应于写入到存储器行的第一物理组(行的字节0到63)或存储器行的第二物理组(行的字节64到127)。示范性部分写入请求可为写入从行的字节0到110的数据有效负载,从而表示在数据有效负载的数据块(对应于行的字节96到127的数据块)中的一者中,32个字节中仅15个将被写入(对应于行的字节96到110)。此外,在一些系统中,写入请求数据有效负载可为稀疏的(稀疏是部分写入的特殊情况)。稀疏数据有效负载经配置以在目的地存储器内写入一组不连续字节。例如,数据有效负载可经标定以写入到目的地存储器可寻址位置的字节0到24及42到63(或仅偶数字节,或字节1、15及27,或某一其它任意布置)。如果写入请求数据有效负载经配置以填充完整目的地存储器可寻址位置中的完整数据块(例如,在上文的实例中,字节0到63(或对应于字节0到127的完整行)),那么写入请求通常将不被视为部分写入。

部分写入触发读取-修改-写入(RMW)操作。在RMW操作中,数据是在操作的读取部分中从目的地高速缓冲存储器读取且用于供应未由RMW操作指定且不由操作改变的那些值。以这种方式,来自读取部分的数据符合操作的写入部分的数据有效负载以使其对于目的地高速缓冲存储器的最小写入长度为连续且完整的(非部分写入)。在这之后,经更新错误校正码(ECC)从所得符合的数据有效负载产生且附加到所述数据有效负载以保持未写入数据的数据完整性。数据有效负载与经更新ECC一起被写入到目的地高速缓冲存储器,无论是否有符合数据。例如,在其中数据有效负载包含字节0到24及42到63(对应于字节0到31及32到63的数据块对应于部分写入)的上文实例中,读取字节25到41以使数据有效负载符合64字节的最小写入长度。

图3是作为处理器100的部分的用于处理RMW存储器事务的示范性RMW存储器子管线300的框图。如果由选定阶段处理的写入请求涉及RMW操作,那么RMW存储器子管线300有条件地处理存储器读取请求作为高速缓冲存储器管线的部分,例如,UMC 114(L2高速缓冲存储器控制器)的存储器管线200的选定阶段(例如,选自阶段1到阶段P的阶段)的部分。因此,如果对应高速缓冲存储器管线的阶段确定写入请求需要RMW操作,那么RMW存储器子管线300处理写入请求。这通常等效于确定写入请求是否是部分写入。

先前阶段316是高速缓冲存储器管线(例如,存储器管线200)中的普通处理阶段。“普通处理”是指具有在处理存储器事务时执行而与存储器事务是否是作为部分写入且将使用RMW操作处理的写入请求无关的功能的管线阶段。先前阶段316经连接以从暂存缓冲器306读取且写入到暂存缓冲器306。暂存缓冲器306可为(例如)一组专用寄存器(其为包含RMW存储器子管线300的存储器控制器的部分,例如UMC 114)。

管线阶段302是RMW存储器子管线300的部分,且也是高速缓冲存储器管线中的普通处理阶段。管线阶段302将RMW存储器子管线300锚定(连接)到高速缓冲存储器管线;因此,RMW存储器子管线300在管线阶段302从高速缓冲存储器管线分支,且在一些系统中,在管线阶段302返回到高速缓冲存储器管线(在高速缓冲存储器管线终止)。先前阶段316与管线阶段302之间的连接是虚线箭头以指示可能存在在先前阶段316与管线阶段302之间执行的额外管线阶段。管线阶段302接收高速缓冲存储器管线中的存储器读取请求(包含无论是否需要RMW操作都执行的功能),例如,存储器管线200中的管线阶段208四(图2中的管线组206中的阶段4,未展示)。(管线阶段208四可为(例如)命中及未命中控制。)管线阶段302经连接以从高速缓冲存储器304读取且写入到高速缓冲存储器304(写入请求的数据有效负载待提交到其的高速缓冲存储器)。管线阶段302还经连接以写入到暂存缓冲器306。在RMW处理期间,由RMW存储器子管线300处理的写入请求的数据有效负载被保持在暂存缓冲器306中。

管线阶段302之后接着为错误检测阶段308。错误检测阶段308之后接着为错误校正阶段310。错误校正阶段310之后接着为合并阶段312,所述合并阶段312经连接以从暂存缓冲器306读取。合并阶段312之后接着为校验子产生阶段314。校验子产生阶段314之后接着为返回到管线阶段302。

参考图2,单独RMW存储器子管线300可连接到存储器管线200的每一单独管线组206中的管线阶段302。

返回到图3,当管线阶段302接收存储器写入请求以进行处理时,管线阶段302确定是否需要RMW操作以使写入请求的数据有效负载中的ECC正确地对应于数据有效负载中的相应数据块(且因此,正确地实现数据有效负载中的相应数据块的错误校正)。此确定可通过(例如)确定存储器写入请求是否是部分写入,或通过检查由对应管线组206中的先前阶段208设置的确定存储器写入请求是否是部分写入的标记而做出。如果需要RMW操作,那么管线阶段302发出对于高速缓冲存储器304中的地址的读取请求且将写入请求的数据有效负载写入(提交)到暂存缓冲器306。如果来自管线阶段302的读取请求导致高速缓冲存储器未命中,那么从等级低于高速缓冲存储器304的存储器检索由读取请求请求的数据以使读取请求能够继续进行。例如,如果高速缓冲存储器304是L2高速缓冲存储器116,那么从L3高速缓冲存储器119或其它更低级别的存储器检索经请求数据。

由管线阶段302发出的读取请求请求对应于与写入请求的数据有效负载的任何部分相同的存储器地址的高速缓冲存储器304中的每一数据块的检索。(为了方便起见,从高速缓冲存储器304读取的所得数据在本文中被称为符合数据。)符合数据的ECC校验子与符合数据一起被读取。在实例中,写入请求的数据有效负载经配置以在高速缓冲存储器304的行中写入字节0到38,且数据块为32字节长。字节0到38对应于在字节0到31处的第一32字节数据块及在字节32到63处的第二32字节数据块。将指示RMW操作,且管线阶段302将针对存储器的对应行的字节0到63及两个对应ECC校验子将读取发出到高速缓冲存储器304。管线阶段302还将写入请求的数据有效负载(包含数据、目的地存储器地址、字节使能(指示哪些字节遵循目的地存储器地址,在上文的实例中,例如,数据对应于字节0到38)及其它控制信息)写入到暂存缓冲器306。

在管线阶段302之后,错误检测阶段308鉴于符合数据的(若干)ECC校验子确定在符合数据中是否存在任何错误,且确定符合数据中的错误(如果有)的位的(若干)类型及(若干)数目。在错误检测阶段308之后,如果需要(如由错误检测阶段308检测)且可能,那么错误校正阶段310校正符合数据。例如,在一些系统中,如果符合数据在每一数据块中含有单个一位错误(或更少),那么每32字节数据块可使用10位ECC校验子校正符合数据。如果无法校正数据,那么采取适当动作-例如,可丢弃(抛弃)写入请求,且可发生例外。

在数据校正阶段310之后,在合并阶段312中,将符合数据与暂存缓冲器306中的对应数据合并(具有下文描述的例外,来自对应写入请求的数据有效负载)。因此,来自暂存缓冲器306的数据替换(盖写)符合数据中的对应字节以形成新的合并数据。在其中数据有效负载对应于高速缓冲存储器行的字节0到38,且符合数据对应于高速缓冲存储器行的字节0到63的上文的实例中,数据有效负载替换符合数据的字节0到38以形成合并数据,还借此使字节39到63不变。

在合并阶段312之后,校验子产生阶段314使用合并数据以(视需要)产生对应于合并数据的一或多个新ECC校验子。在上文的实例中,数据有效负载对应于高速缓冲存储器行的字节0到38,且数据块的长度为32字节。合并数据的字节0到31不需要使用RMW操作产生ECC校验子,这是因为对应数据有效负载部分在合并之前是完整数据块(先前已产生对应于完整数据块(字节0到31)的ECC校验子)。针对合并数据的字节32到63计算新ECC校验子,这是因为对应数据有效负载部分仅盖写所述字节的一部分。因此,经写入数据在合并之前非完整数据块(字节32到38)。相对于写入请求的数据有效负载最新的所得ECC校验子被称为与合并数据同步。在一些系统中,处理器核心102产生为完整且连续数据块的数据块的ECC校验子可在数据有效负载被写入到存储器之前(例如,在写入请求从DMC 104(L1高速缓冲存储器控制器)传输到UMC 114(L2高速缓冲存储器控制器)之前)的任何时间产生。

在校验子产生阶段314之后,写入请求被传回到管线阶段302,且写入请求的数据有效负载与新ECC校验子一起被写入到高速缓冲存储器304。如果由管线阶段302执行的读取请求导致高速缓冲存储器命中,那么经写入数据可仅为写入请求的数据有效负载(及对应于包含于数据有效负载中的数据块的ECC校验子),或其可包含符合数据的合并部分。需要符合数据来产生对应于数据有效负载的新ECC,但符合数据在写入到高速缓冲存储器时可为任选的。如果由管线阶段302执行的读取请求导致高速缓冲存储器命中,那么已从高速缓冲存储器读取的符合数据应已经存在于高速缓冲存储器中。然而,如果由管线阶段302执行的读取请求导致高速缓冲存储器未命中,那么经写入数据包含符合数据的合并部分。当RMW操作在写入请求的数据有效负载被写入到对应目标高速缓冲存储器中之后完成(结束)时,暂存缓冲器306中对应于RMW操作的项到期。在其中高速缓冲存储器写入在校验子产生阶段完成之后的一个时钟周期完成的一些系统中,暂存缓冲器项到期可在校验子产生阶段314产生新ECC校验子之后发生。

在一些系统中,暂存缓冲器306可具有促进管线处理能力且避免暂停的额外功能性。暂存缓冲器306的深度取决于总RMW存储器管线300深度。为此目的,将管线阶段302从高速缓冲存储器304读取视为RMW存储器管线300的开始,且将校验子产生阶段314完成新ECC校验子的产生视为RMW存储器管线300的结束。暂存缓冲器306含有关于已开始且尚未结束(或例如在错误校正阶段310由错误终止)的全部RMW操作的信息。

先前阶段316检查写入请求是否需要RMW操作。如果是,那么先前阶段316还在暂存缓冲器306中检查以在高速缓冲存储器304中与写入请求(相同目标的写入请求)相同的地址寻找任何未决RMW操作。如果存在此未决RMW操作,那么以所述地址为目标的当前暂存缓冲器306内容与对应字节使能一起与以所述地址为目标的最新数据(通常来说,在先前阶段316的写入请求的数据有效负载的内容)组合。因此,保持较新数据及较旧数据两者的非重叠字节;如果存在任何重叠,那么最新数据取代当前暂存缓冲器306内容的特定重叠字节;且将所得组合数据写入到暂存缓冲器306中对应于较新写入请求的项中。(在一些系统中,这可通过将较旧数据写入到暂存缓冲器306中对应于较新写入请求的项中,且接着对较新写入请求执行RMW操作使得所要盖写及所得组合数据是操作顺序的结果而执行)。对较旧数据有效负载的未决RMW操作继续不受影响(对应暂存缓冲器306内容保持不变),而较新写入请求进入RMW存储器管线300以进行组合数据的RMW处理。(这与完整行写入-将写入到高速缓冲存储器的完整行且因此并非部分写入且不需要RMW操作的写入请求-的情况不同,如下文描述。)如果较旧写入请求尚未完成处理且使其数据有效负载写入到高速缓冲存储器304中,那么,作为较新写入请求及较旧写入请求的目标的高速缓冲存储器304中的地址含有相对于较新写入请求过时的数据。过时数据经数据调度以通过在存储器管线(例如,存储器管线200)中在较新写入请求之前的写入请求更新。因此,关于先前阶段316描述的数据组合过程防止合并阶段312将更新写入请求与过时数据合并。例如,可在其中写入请求可紧接在管线组206(参考图2)内的另一写入请求之后的系统(例如,其中可在每一周期中发出写入请求的系统)中(例如,在具有“写入流”行为的系统中)使用此额外暂存缓冲器306功能性。

经受如下文描述的介入读取,如果先前阶段316确定写入请求的数据有效负载对应于完整行写入,且存在以相同地址为目标的未决RMW操作,那么使未决RMW操作无效且先前阶段316处的写入请求继续进行(因此,不暂停)。(在一些实施例中,此确定可在管线阶段302处,或先前阶段316与管线阶段302之间的管线阶段执行。)又,如果在先前阶段316与管线阶段302之间的介入时间在普通处理高速缓冲存储器管线(例如存储器管线200)的阶段接收源自RMW存储器管线300外部的读取请求,那么允许未决RMW操作完成而无需允许先前阶段316处的写入请求盖写对应于未决RMW操作的暂存缓冲器306内容。

图4A展示提供以高速缓冲存储器中的地址处的写入为目标的写入请求的数据有效负载中的数据块内容的不同组合的示范性列表的表400。表400的主体402由标题404“要在目标地址写入存储器行中的数据有效负载中的字节”描述。主体402被划分为对应于写入请求的128字节最大数据有效负载中的数据的数据块(在此实例中,32字节范围406)的四个有标题的列。四个列具有以下标题:[31:0](字节0到字节31)、[63:32](字节32到字节63)、[95:64](字节64到字节95)及[127:96](字节96到字节127)。主体402的行在具有标题414“情况”的列412中被编索引。主体402中的个别单元416可对应于两个案例中的一者的字节范围,在含有将在目标地址处在对应数据块中写入全部字节(非部分写入)的数据的数据有效负载中-因此,标记为“全部字节”;或含有将写入对应数据块中的少于全部字节的数据,从而导致部分写入-因此,标记为“部分”的数据有效负载。

图4B展示针对图4A的对应情况使用的操作(例如,RMW、完全写入等)的示范性列表的表418。在对应于图4A及4B的存储器系统中,高速缓冲存储器由高速缓冲存储器行组成。在实例中,每一高速缓冲存储器行的长度为128个字节。每一高速缓冲存储器行具有两个物理组(物理组0及物理组1),每一物理组具有长度64个字节,且每一物理组具有两个虚拟组(虚拟组0及虚拟组1),每一虚拟组具有长度32个字节。(高速缓冲存储器行、物理组及虚拟组的字节长度不包含存储对应ECC校验子及其它控制信息的额外相关存储器(未展示)。)每一虚拟组420(例如,物理组1中的虚拟组0)位于图4B的表418的主体422的列的头部。在此示范性高速缓冲存储器中,可通过写入物理组的虚拟组420两者(每一者32个字节)而将每一物理组(每一者64个字节)相应地写入系统时钟(例如,处理器100的时钟103)的单个循环424(循环1或循环2)中。这表示可在时钟周期中写入128个字节高速缓冲存储器行中的64个字节,且示范性高速缓冲存储器具有64字节最小写入长度。(在一些系统中,示范性高速缓冲存储器还可能够在单个周期中写入完整高速缓冲存储器行。)

主体422中的单元426由标题为430“情况”的列428编索引。单元426中的项是表示对应情况号(在图4A中的列412及图4B中的列428中被编索引)的对应字节范围利用RMW操作的“RMW”,或表示对应情况号的对应字节范围可被写入到高速缓冲存储器而无需执行RMW操作的“写入”。

物理组0、虚拟组0对应于图4A的表400中展示的写入请求数据有效负载的字节范围406[31:0](由所述字节范围写入)。物理组0、虚拟组1对应于表400中展示的写入请求数据有效负载的字节范围406[63:32](由所述字节范围写入)。物理组1、虚拟组0对应于表400中展示的写入请求数据有效负载的字节范围406[95:64](由所述字节范围写入)。物理组1、虚拟组1对应于表400中展示的写入请求数据有效负载的字节范围406[127:96](由所述字节范围写入)。示范性128字节高速缓冲存储器的长度为四个32字节数据块。

因此,在字节范围[63:0]中的写入请求的数据有效负载中的字节被一起写入,且在字节范围[127:64]中的写入请求的数据有效负载中的字节被一起写入(写入在物理组边界处对准)。这还表示字节范围[63:0]与字节范围[127:64]分开写入(且在不同时钟周期中)。

如图4A及4B中展示,针对在物理组边界对准(且不彼此重叠)的64字节写入,当数据块(32字节范围406)在特定情况中对应于部分写入时,到对应物理组的写入利用对写入到所述物理组的两个数据块的RMW操作(RMW操作存储器管线(例如,图3的RMW存储器管线300)的执行)。这是因为整个物理组-64个字节,对应于两个数据块-被一起读取或写入。例如,在图4A的表400的情况1、2、3及4中,对应于字节范围406[127:96]及[95:64]的数据块对应于部分写入(对应项是“部分”),这表示需要RMW操作。因此,针对图4B的表418中的情况1、2、3及4,物理组1的虚拟组0及1的项是“RMW”。在另一实例中,在情况5、6、7、8、9、10、11及12中,表400中的字节范围406[127:96]及[95:64]中的两个数据块中的仅一者对应于部分写入。(字节范围406[127:96]对应于情况5、6、7及8中的部分写入,且字节范围406[95:64]对应于情况9、10、11及12中的部分写入。)然而,由于64字节最小写入长度,如表418中展示,物理组1的虚拟组0及1两者(相应地对应于字节范围[95:64]及[127:96])需要RMW操作。在另一实例中,情况13、14、15及16展示字节范围406[127:96]及[95:64]中的“全部字节”将由写入请求的数据有效负载写入到高速缓冲存储器行。因此,表418展示在情况13、14、15及16中,物理组1的虚拟组0及1将被写入到高速缓冲存储器行而无需执行RMW操作(对应表项是“写入”)。

在一些情况中,在完成写入请求的处理时,比高速缓冲存储器行长度短的最小写入长度可导致节省多个时钟周期,及对应功率消耗。例如,在一些系统(例如,使用图3的RMW存储器管线300的一些系统)中,通过从RMW/无RMW决策点(例如,管线阶段302)将对应数据有效负载提交到存储器而完成RMW操作可耗费六个周期,而通过从RMW/无RMW决策点将对应数据有效负载提交到存储器完成写入操作(无RMW)耗费一个周期。此外,RMW操作需要两个存储器事务(读取及写入),而无RMW的写入操作需要一个存储器事务(写入)。此外,可存在在RMW操作在进行中时阻止完整管线化的危险。由比存储器高速缓冲存储器行长度短(例如,短整数N倍)的最小写入长度实现的节省由图4B的情况4、8、12、13、14及15说明,其中写入到物理组中的一者的数据块不需要RMW操作,尽管写入到其它物理组的数据块需要RMW操作。

图4C展示提供RMW是否用于图4A的对应情况的替代示范性列表的表432。图4C的表432的部分中类似于图4B的表418的对应部分的内容类型的内容类型具有相同识别号。对应于图4C的示范性高速缓冲存储器类似于图4A及4B的示范性高速缓冲存储器,区别仅在于对应于图4C的示范性高速缓冲存储器具有32字节的最小高速缓冲存储器写入长度,与数据块长度(及虚拟组长度)相同的长度。根据表432的写入不彼此重叠(非重叠)且与高速缓冲存储器行边界对准。因此,在表432中,仅对应于部分写入的数据块需要RMW操作。例如且返回到图4A的表400,在情况6中,待写入到物理组1、虚拟组1(字节范围406[127:96])的数据块是部分写入;待写入到物理组1、虚拟组0(字节范围406[95:64])的数据块非部分写入(“全部字节”);待写入到物理组0、虚拟组1(字节范围406[63:32])的数据块是部分写入;且待写入到物理组0、虚拟组0(字节范围406[31:0])的数据块非部分写入。针对如应用到图4B的64字节(数据块长度的两倍)最小写入长度的情况6实例,接着在其表418(情况6)中,部分写入数据块及非部分写入数据块的情况6实例导致数据有效负载的全部数据块需要RMW操作。然而,在具有32字节最小写入长度(等于数据块长度)的图4C的表432的实例(情况6)中,仅部分写入数据块-待写入到物理组1、虚拟组1及物理组0、虚拟组1的数据块-需要RMW操作。

考虑具有长度L个字节的高速缓冲存储器行的高速缓冲存储器,最小写入长度M个字节(与存储器块边界对准)使得L/M≥1是整数(完全写入高速缓冲存储器行的写入的数目),及P个字节的数据块长度使得在高速缓冲存储器行中存在整数数目L/P≥1个数据块。一般来说,在这些条件下,对应于部分写入的数据有效负载中的数据块将需要对数据有效负载中的整数M/P≥1个数据块执行RMW操作。如果L/M≥2,那么对应于部分写入的数据有效负载中的数据块可不需要写入到高速缓冲存储器行的数据有效负载中的全部数据块接收RMW操作。如果M等于P,那么不对应于部分写入的数据有效负载中的数据块可不需要RMW操作。(在一些系统中,仅对应于部分写入的数据有效负载中的数据块将需要RMW操作。)

只有另外明确指示的情况(例如,ECC校验子中的位的数目)除外,本文中提供的存储器长度具体是指数据而非数据的控制。

在一些实施例中,流引擎仅接收并传递来自处理器核心的读取请求,且将经读取数据传回到处理器核心,而非传递且传回对于读取及写入请求两者的响应。

在一些实施例中,处理器可包含多个处理器核心(未展示具有多个处理器核心的实施例),具有与在图1中展示且关于图1描述的耦合类似且类似地起作用的到DMC、流引擎及PMC的耦合。在一些实施例中,处理器包含不同功能块。

在一些实施例中,实现并行读取或写入请求的总线可对应于不同类型的读取或写入请求,例如针对不同存储器块或出于不同目的做出。

在一些实施例中,流引擎使处理器核心能够跳过更低级别的高速缓冲存储器(例如L1高速缓冲存储器)直接与更高级别的高速缓冲存储器(例如L2高速缓冲存储器)通信以避免数据同步问题。这可用于帮助维持存储器一致性。在一些这些实施例中,流引擎可经配置以仅传输读取请求而非读取请求及写入请求两者。

在一些实施例中,不同存储器存取管线组可具有不同数目个阶段。

在一些实施例中,校验子产生阶段314之后接着为在仲裁以及调度及高速缓冲存储器命中检测之后返回到高速缓冲存储器管线中在管线阶段302之前的阶段。

在一些实施例中,管线阶段302可执行先前阶段316的功能。在一些实施例中,RMW存储器子管线300可通过执行先前阶段316的功能的阶段锚定到高速缓冲存储器管线。在一些实施例中,先前阶段316可被视为RMW存储器子管线300的部分。

在所述实施例中修改是可行的,且在权利要求书的范围内其它实施例是可行的。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号