一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多级高速缓存安全性的制作方法

2022-02-19 00:58:26 来源:中国专利 TAG:
多级高速缓存安全性
背景技术
::1.处理装置可经形成为集成电路的部分,例如片上系统(soc)的一部分。在一些实例中,soc包含至少一个中央处理单元(cpu),其中soc的每一cpu经耦合到集成(例如,共享)存储器系统。所述存储器系统可包含例如多级高速缓存存储器(例如,静态ram—sram—形成在soc的集成电路上)及至少一个主存储器(例如,动态ram—dram及/或ddr—可在soc的集成电路外部的存储器)。2.当将越来越强大的cpu添加(或耦合)到处理装置时,越来越复杂的存储器架构不断提供可扩展性挑战。当多个cpu共享存储器系统的共同地址空间时,可扩展性挑战仍然存在,且可能变得甚至更大。共享存储器的共同地址空间的部分可包含一致高速缓存的各个级(例如,其中各个级可含有用于存储具有唯一地址的数据的不同存储器)。3.在一个实例中,高速缓存存储器系统中的cpu可每4个周期消耗整个高速缓存行,这对被设计为在各种cpu之间一致地共享经存储高速缓存信息的高速缓存提出额外处理需求。当高速缓存经配置以保护高速缓存存储器的某些区域免于被原本将被容许存取高速缓存的行的至少一个cpu读取或更改时,此类延时可被延长。提高此类系统的数据安全性可能需要提高的处理能力及/或更有效的处理架构。技术实现要素:4.在所描述实例中,一致存储器系统包含中央处理单元(cpu)以及一级及二级高速缓存。所述cpu经布置以执行程序指令以在至少第一或第二安全上下文中操纵数据。所述第一及第二高速缓存中的每一者存储用于指示通过其接收相应高速缓存行的数据的所述至少第一或第二安全上下文的安全代码。所述一级及二级高速缓存响应于比较高速缓存的相应行的所述安全代码且作为响应执行高速缓存一致性操作而维持一致性。附图说明5.图1是展示形成为片上系统的实例双核标量/矢量处理器的高级系统图。6.图2是展示实例阶层式存储器系统的级的高级图。7.图3展示具有一致及阶层式存储器架构的实例一核或任选地两核标量及/或矢量处理器系统300。8.图4展示一致及阶层式存储器架构的二级的实例统一存储器控制器。9.图5a展示每物理存储体具有4个虚拟存储体的图4的系统的实例2级存储器存储体接口。10.图5b展示每物理存储体具有2个虚拟存储体的图4的系统的实例2级存储器存储体接口。11.图6a展示实例l1d(1级数据)控制器物理结构。12.图6b展示实例2级(l2)控制器物理结构。13.图7a展示在实例高速缓存操作之前的实例级数据(l1d)高速缓存标记值。14.图7b展示在实例高速缓存操作之后的实例级数据(l1d)高速缓存标记值。15.图8a展示在实例高速缓存操作之前的实例l2影子结构。16.图8b展示在行的l1d分配之后的实例l2影子结构,其中经修改行从主高速缓存移动到牺牲高速缓存,且从牺牲高速缓存移动到l2。17.图9a是多级高速缓存系统中的一致读取操作的实例过程的流程图。18.图9b是多级高速缓存系统中的窥探读取操作的实例过程的流程图。19.图9c是多级高速缓存系统中的cmo(高速缓存维持操作)读取操作的实例过程的流程图。20.图10是多级高速缓存系统中的dma写入操作的实例过程的流程图。21.图11是多级高速缓存系统中的读取分配操作的实例过程的流程图。22.图12是多级高速缓存系统中的牺牲写入操作的实例过程的流程图。具体实施方式23.在附图中,类似参考数字指代类似元件,且各种特征不一定按比例绘制。24.处理装置可经形成为集成电路,例如片上系统(soc)的部分。如下文中所描述,处理装置可包含用于保护存储器系统(例如多级高速缓存系统)中的数据的安全性的实例安全性特征。25.图1是展示形成为片上系统的实例双核标量/矢量处理器的高级系统图。soc100是包含中央处理单元(cpu)110核心的实例双核标量及/或矢量处理器。cpu110核心包含一级指令高速缓存(l1i)111、一级数据高速缓存(l1d)112及例如双流式引擎(2xse)的流式引擎(se)113。soc100可进一步包含任选cpu120核心,所述cpu120核心包含一级指令高速缓存(l1i)121、一级数据高速缓存(l1d)122及流式引擎123。在各种实例中,cpu110核心及/或cpu120核心可包含可经布置用于标量及/或矢量处理的寄存器文件、算术逻辑单元、乘法器及程序流控制单元(未具体展示)。soc100包含经布置以选择性地高速缓存指令及数据两者的二级统一(例如,组合指令/数据)高速缓存(l2)131。26.在实例中,cpu110、一级指令高速缓存(l1i)111、一级数据高速缓存(l1d)112、流式引擎113及二级统一高速缓存(l2)131经形成在单个集成电路上。在实例中,标量中央处理单元(cpu)120核心、一级指令高速缓存(l1i)121、一级数据高速缓存(l1d)122、流式引擎123及二级统一高速缓存(l2)131经形成在包含cpu110核心的单个集成电路上。27.在实例中,soc100经形成在单个集成电路上,所述集成电路还包含辅助电路,例如动态功率控制(dpc)通电/断电电路141、仿真/跟踪电路142、测试设计(dft)可编程内建自测试(pbist)及串行消息系统(sms)电路143以及时控电路144。存储器控制器(例如,多核共享存储器控制器3级“msmc3”)151耦合soc100且可与soc100集成在同一集成电路上。msmc3可包含例如直接存储器存取(dma)的存储器存取功能,使得msmc3可用作dma控制器(或与dma控制器协作地起作用)。28.cpu110在程序控制下操作以对存储在存储器系统(例如,包含由多个核心共享的存储器的存储器系统)中的数据执行数据处理操作。用于控制cpu110的程序包含在由cpu110进行解码及执行之前取出的多个指令。29.soc100包含数个高速缓存存储器。在实例中,一级指令高速缓存(l1i)111存储由cpu110使用的指令。cpu110从一级指令高速缓存111存取(包含尝试存取)多个指令中的任一者。一级数据高速缓存(l1d)112存储由cpu110使用的数据。cpu110从一级数据高速缓存112存取(包含尝试存取)任何经寻址数据(例如,多个指令中的任一者指向的任何数据)。每一cpu(例如,110及120)核心的一级高速缓存(例如,l1i111、l1d112及2xse113)由二级统一高速缓存(l2)131支持。30.在对相应一级高速缓存的任何存储器请求的高速缓存未命中的情况下,从二级统一高速缓存131寻找经请求信息(例如,指令代码、非流数据及/或流数据)。在经请求信息经存储在二级统一高速缓存131中的情况下,将经请求信息供应到提出请求的一级高速缓存以将经请求信息中继到cpu110。同时可将经请求信息中继到提出请求的高速缓存及cpu110两者以减少到cpu110的存取延时。31.流式引擎113及123可在结构及操作上类似。在soc100中,流式引擎113将数据从二级统一高速缓存131(l2)传送到cpu110。流式引擎123将数据从二级统一高速缓存131传送到cpu110。在所述实例中,每一流式引擎113及123控制(及以其它方式管理)最多两个数据流。32.每一流式引擎113及123经布置以传送所定义类型(例如,所定义结构及/或协议)的数据,其中数据作为流来传送。流包含选定的、所定义类型的元素的序列。操作(例如,消耗)流的程序被例子化(例如,将处理器配置为专用机器)以循序地读取所包含数据且依次处理所述数据的每一元素。33.在实例中,流数据包含所定义开始及结束时间的指示(例如,其中所述指示可用于确定相应的开始及/或结束时间点)。流数据包含在整个流中通常具有固定元素大小及类型的元素。流数据可包含元素的固定序列,其中程序无法随机地寻找寻找包含在流中的元素。在实例中,流数据在活动时是只读的,因此程序无法在从流读取的同时写入到流。34.当流被实例流式引擎打开时,所述流式引擎:计算地址;从二级统一高速缓存取出所定义数据类型;执行数据类型操纵;且直接将经处理数据递送到cpu内的请求编程执行单元。数据类型操纵可包含例如零扩展、符号扩展及数据元素分类/交换(例如,矩阵转置)的操纵。35.在各种实例中,流式引擎经布置以对所定义数据类型(例如,良性数据)执行实时数字滤波操作。此类引擎减少存储器存取时间(例如,原本由提出请求的处理器遇到),这释放提出请求的处理器以执行其它处理功能。36.在各种实例中,流式引擎提高一级高速缓存的操作效率。例如,流式引擎可最小化高速缓存未命中停顿的数目,因为流缓冲区可绕过l1d高速缓存(例如,111)。而且,流式引擎可减少维持控制循环及管理相应地址指针原本所需的标量操作的数目。流式引擎可包含减少在产生地址及管理控制循环逻辑时原本遇到的软件执行(例如,这释放cpu以执行其它任务)的硬件存储器地址产生器。37.二级统一高速缓存131进一步经由存储器控制器151耦合到更高级存储器系统组件。存储器控制器151通过存取外部存储器(图1中未展示)而处置发生在二级统一高速缓存131中的高速缓存未命中。存储器控制器131经布置以控制以存储器为中心的功能,例如可高速缓存性确定、错误检测及校正以及地址转译。38.实例soc100系统包含多个cpu110及120。在包含多个cpu的系统中,存储器控制器151可经布置以控制多个cpu之间的数据传送且维持可相互存取外部存储器的处理器当中的高速缓存一致性。39.图2是展示实例阶层式存储器系统的级的高级图。存储器系统200是实例阶层式存储器系统,其包含cpu210及用于维持高速缓存及存储器的三个相应级的存储器一致性的控制器(例如,222、232及241)。一级高速缓存(例如,l1数据高速缓存)包含l1sram(静态ram)221、1级控制器222、l1高速缓存标记223及牺牲高速缓存标记224。例如,一级高速缓存包含可由cpu210存取的存储器且经布置以代表cpu210暂时存储数据。二级高速缓存(例如,l2统一高速缓存)包含l2sram231、2级控制器232、l2高速缓存标记233、影子l1主高速缓存标记234及影子l1牺牲高速缓存标记234。例如,二级高速缓存包含可由cpu210存取的存储器且经布置以代表cpu210暂时存储数据。存储器系统200自始至终是一致的且高速缓存的各个级的存储器区可包含可由cpu寻址的本地存储器(例如,包含高速缓存行)。表1展示存在于存储器系统200中的不同存储器区,及每一存储器区是否可经配置为一致。40.表1[0041][0042]cpu110双向耦合到1级控制器222,所述1级控制器又双向耦合到2级控制器232,所述2级控制器又双向耦合到3级控制器234,使得高速缓存存储器的至少三个级经耦合到cpu210。进入及离开l1sram221高速缓存存储器的数据传送由1级控制器222来控制。进入及离开l2sram231高速缓存存储器的数据传送由2级控制器232来控制。[0043]1级控制器222经耦合到(且在一些实例中包含)l1高速缓存标记332及牺牲高速缓存标记224。l1高速缓存标记223是相应l1高速缓存行的非数据部分,其具有存储在sram221高速缓存存储器中的相应数据。l1牺牲高速缓存标记(例如,存储在标记ram中)224是高速缓存行的非数据部分,其中每一高速缓存行包含存储在sram221高速缓存存储器中的数据的相应行。在实例中,从l1高速缓存逐出的高速缓存行经复制到牺牲高速缓存中,使得例如l1高速缓存标记223经复制到(或以其它方式经映射到)l1牺牲高速缓存标记224中。牺牲高速缓存可例如将原本逐出的数据存储在l1级处,使得“命中”存储在牺牲高速缓存中的行的cpu210的存储器请求可得到响应,而无须存取l2级高速缓存(例如,使得在此类情况下存取时间减少)。[0044]2级控制器232经耦合到(例如,包含)两组高速缓存标记。第一组高速缓存标记包含l2高速缓存标记233,其中是相应l2高速缓存行的非数据部分,且其中每一高速缓存行包含存储在sram231高速缓存存储器中的数据的相应行。第二组高速缓存标记包含影子l1主高速缓存标记234及影子l1牺牲高速缓存标记235。影子l1主高速缓存标记234通常对应于l1高速缓存标记223(例如,指向或包含与l1高速缓存标记223相同的信息)。影子l1牺牲高速缓存标记235通常对应于l1牺牲高速缓存标记224(例如,指向或包含与l1牺牲高速缓存标记224相同的信息)。影子l1主高速缓存标记234至少包含l1高速缓存标记223中的对应高速缓存行的有效及脏状态,而影子l1牺牲高速缓存标记235至少包含l1牺牲高速缓存标记224中的对应高速缓存行的有效及脏状态。[0045]2级控制器232产生窥探事务以维持(例如,包含更新及实现)二级高速缓存与一级高速缓存的状态的读取及写入一致性。例如,2级控制器232将窥探事务发送到1级控制器以确定l1d高速缓存行的状态且更新与被查询的l1d高速缓存行有关的影子标记(例如,234或235)。影子标记(例如,234或235)可仅用于窥探事务,所述窥探事务用于维持l2sram与一级数据高速缓存的一致性。在实例中,可忽略对更高级高速缓存中的所有高速缓存行的更新,这提高l1到l2高速缓存接口的效率。[0046]响应于由1级控制器222返回的窥探请求数据,2级控制器232更新对应于被窥探的l1高速缓存行的影子标记(例如,234或235)。对其执行更新的事件包含例如l1d高速缓存行的分配及例如对存储在l1sram221中的数据的脏修改及作废修改的事件。[0047]硬件高速缓存一致性是一种允许被称为“可共享性域”(例如,跨不同cpu,或甚至在单个cpu内共享)的不同群组中的数据及程序高速缓存,以及不同请求器(包含可能不包含高速缓存的那些请求器)有权存取(例如,读取)存储器中的给定地址的最新数据值的技术。在理想情况下,这个“一致”数据值需要准确地反映给可共享性域中的每个观察者。观察者可为例如发出用以读取给定存储器位置的命令的高速缓存或请求器的装置。[0048]通过使用存储器属性,某些存储器位置可被标记为“可共享”,而其它存储器位置可被标记为“不可共享”。为了在理想系统中维持完整的一致性,仅可共享存储器区(例如,其中一区可为一或多个连续位置)需要在作为同一可共享性域的部分的高速缓存/请求器(观察者)之间保持一致。不需要维持不可共享存储器位置的一致性。下文中描述经布置以有效地实现可共享存储器区的一致性的方法及设备。例如,当可共享存储器区是一致的时,其是可共享的,因为可共享存储器区的所有数据位置具有指派给可共享存储器区的每一位置的数据的最新值。[0049]下文中描述实例功能上正确的一致系统的技术、控制逻辑及状态信息。每一观察者可向标记为可共享的位置发出读取(及任选地写入)请求。此外,高速缓存还可响应于窥探操作的类型而向其发出窥探请求,要求读取、返回或甚至更新其高速缓存状态。[0050]在多级高速缓存阶层中,高速缓存阶层的中间级(例如,l2)既能够发送又能够接收窥探操作(例如,以维持高速缓存的不同级之间的一致性)。相比之下,高速缓存层级的第一级(例如,1级控制器222)接收窥探操作但不分派窥探操作。此外,高速缓存阶层的最后一级(例如,3级控制器241)可分派窥探操作但不接收窥探操作。通常,在较高高速缓存级中固有地将窥探操作分派到高速缓存阶层内的较低高速缓存级(例如,其中较低表示更靠近cpu处理元件的高速缓存结构,而较高表示更远离cpu处理元件的高速缓存结构)。[0051]2级控制器232包含用于准确地查询、确定及处理1级高速缓存(例如,l1d112)中的一致(可共享)高速缓存行的当前状态的硬件、控制逻辑及状态信息,其中较低级高速缓存经布置为异构高速缓存系统。在实例中,1级控制器222管理包含主高速缓存(例如,组关联)及牺牲高速缓存(例如,全关联)的异构高速缓存系统。[0052]存储器系统200的一致性可通过使用mesi(修改‑排他‑共享‑无效)一致性方案(包含其衍生物)记录每一高速缓存行的高速缓存的每一高速缓存行状态来强制执行。标准的mesi高速缓存一致性协议包含四种状态:每一高速缓存行的修改、排他、共享、无效(或其衍生物)。[0053]修改状态指示相应高速缓存行中的值相对于主存储器被修改,且高速缓存行中的值排他地保存在当前高速缓存中。修改状态指示所述行中的值在同一可共享性域中的任何其它高速缓存中明确地不存在或无效。[0054]排他状态指示相应高速缓存行中的值未相对于主存储器被修改,但高速缓存行中的值排他地保存在当前高速缓存中。这指示所述行中的值在同一可共享性域中的任何其它高速缓存中明确地不存在或无效。[0055]共享状态指示相应高速缓存行中的值未相对于主存储器被修改。高速缓存行中的值可存在于同一可共享性域中的多个高速缓存中。[0056]无效状态指示相应高速缓存行中的任何值被视为好像它们不存在于所述高速缓存中一样(例如,作为被作废或逐出的结果)。[0057]可共享性域可被定义为必须彼此保持一致的高速缓存的集合。并非所有mesi状态均必定需要实施具有高速缓存阶层的多个级的一致系统。例如,可消除共享状态(例如,以性能为代价),这导致mei一致性系统。在mei一致性系统中,整个系统中的恰好一个高速缓存可在给定时间保存每一mei高速缓存行的副本,而不管所述高速缓存行是否被修改(或将来是否可能被修改)。[0058]一致高速缓存系统中的一致性单元是单个高速缓存行,使得数据长度(例如,用于存取高速缓存行内的数据的地址的数目,无论是32、64还是128字节)被视为一致性的原子单元。在实例系统300中(下文中关于图3所描述),l1d与l2之间共享的高速缓存机构包含128字节的一致性单元。通常,高速缓存的一级及二级的结构及跟踪机构以原子方式对选定一致性单元进行操作。[0059]出于维持高速缓存一致性的目的,可启动各种一致性事务。此类一致性事务包含例如读取、写入、窥探、牺牲的事务类型。每一事务类型可具有多种形式/变体,所述形式/变体由总线信令协议(例如vbusm.c协议规范)所包含。[0060]读取一致性事务包含返回给定地址的“当前”(例如,最近)值,无论那个值是存储在端点处(例如,在外部存储器中),还是存储在一致性系统中的高速缓存中。[0061]写入一致性事务包含更新给定地址的当前值,及作废存储在一致性系统中的高速313、msmc351及mmu391是请求器,其全部可存取存储在l2高速缓存中的存储器。[0071]在实例中,系统300是用于定点及/或浮点dsp(数字信号处理器)的管线式高速缓存及存储器控制器系统。系统300包含至少一个此cpu核心(其中每一cpu核包含相应私用l1高速缓存、控制器及流缓冲区)及共享l2高速缓存控制器。系统300可提供每周期高达2048位数据的带宽,其为相对于上一代系统的8倍带宽改进。l1d可维持每周期将512位数据传送到cpu,且l2高速缓存可每个周期将1024位数据传送到双流缓冲区。l1及l2控制器有能力将多个事务排队到存储器的下一更高级,且可对乱序数据返回进行重新排序。l1p311控制器支持来自cpu的分支退出预测且可将多个预取未命中排队到由umc363所包含的l2高速缓存。[0072]系统300包含关于其数据及tagram的全软错误校正码(ecc)(例如,下文中关于图4所描述)。所采用ecc方案除对存储器存储数据进行错误校正之外,还为通过处理器管线及接口寄存器传输的数据提供错误校正。系统300支持全存储器一致性,其中例如内部(例如,由1级及2级高速缓存所包含)高速缓存及存储器相对于彼此且相对于外部高速缓存及存储器(例如用于3级高速缓存的msmc351及例如四级及最终级存储器阶层处的外部存储器)保持一致。umc363维持多个l1d之间的一致性且维持所述l1d与高速缓存及存储器的较高、连续级中的每一者之间的一致性。umc363可通过响应于流式引擎读取而窥探(例如,经由与流数据路径分开的管线)l1d高速缓存行来维持与双流式引擎的一致性。[0073]系统300支持贯穿虚拟存储器方案的一致性,且包含地址转译、μtlb(微转译后备缓冲区)、l2页表查询(pagetablewalks)及l1p高速缓存作废。umc363可支持一个或两个流缓冲区,每一缓冲区具有两个流。流缓冲区数据与l1d高速缓存保持一致,其中每一流缓冲区具有到l2高速缓存的管线式高带宽接口。[0074]系统300包含系统300中的不同阶层的各种组件之间的实例接口。可能除cpu到dmc(cpr‑dmc)及cpu到pmc(cpr‑pmc)接口以外,可在管线式多事务标准(例如,vbusm或mba)中构建级间接口及数据路径。[0075]实例接口包含cpu‑dmc、cpu‑pmc、dmc‑umc、pmc‑umc、se‑umc、umc‑msmc、mmu‑umc及pmc‑mmu接口。cpu‑dmc包含512位矢量读取及512位矢量写入及64位标量写入。cpu‑pmc包含512位读取。dmc‑umc包含用于执行高速缓存事务、窥探事务、l1dsramdma及外部mmr存取的512位读取及512位写入接口(例如,其中每一此接口可处置2个数据阶段事务)。pmc‑umc接口包含512位读取(其支持1或2个数据阶段读取)。se‑umc接口包含512位读取(其支持1或2个数据阶段读取)。umc‑msmcumc接口包含512位读取及512位写入(具有重叠的窥探及dma事务)。mmu‑umc接口包含来自l2的页表查询。pmc‑mmu接口包含到mmu的μtlb未命中。[0076]l1p311包含作为具有64字节高速缓存行大小的4路组关联的32kbl1p高速缓存,其中每一行被虚拟编索引及标记(48位虚拟地址)。l1p311包含对l1p未命中的自动预取(其中来自l2的预取未命中可包含两个数据阶段数据返回。l1p311经耦合到pmc362(例如,由pmc362所包含)且由pmc362来控制。[0077]pmc362支持有能力将可变数目个(例如,高达8个)取出分组请求排队到umc(例如,以在程序管线中启用更深预取)的预取及分支预测。[0078]pmc362包含具有对数据及标记ram的奇偶校验保护的错误校正码(ecc)(例如,对标记及数据ram的1位错误检测)。数据ram奇偶校验保护每32位被供应1奇偶校验位)。在标记ram中,奇偶校验错误可强制进行自动作废及预取操作。[0079]pmc362支持全局高速缓存一致性操作。pmc362可单周期高速缓存作废对三种模式(例如,全高速缓存行、mmu页表基0及mmu页表基1)的支持。[0080]pmc362通过对未命中的虚拟到物理寻址来提供虚拟存储器且并入μtlb以处置地址转译及进行代码保护。[0081]pmc362通过包含可在读取时返回以指示从其读取数据的高速缓存级的存取代码及可经返回以指示所有仿真读取及写入的通过/失败状态的总线错误代码来提供仿真及调试能力。pmc362提供扩展式控制寄存器存取,其包含可通过非管线式接口从cpu存取的l1pecr寄存器。扩展式控制寄存器不是存储器映射的,而是可经由movccpu指令来映射。[0082]l1d高速缓存312是直接映射高速缓存,且与16条目全关联牺牲高速缓存并行镜像。l1d高速缓存312包含可配置为低到8kb高速缓存的32kb存储器。l1d高速缓存312包含双数据路径(例如,用于64位标量或1kb矢量操作数)。l1d高速缓存312包含128字节高速缓存行大小。lid高速缓存312包含对回写及直写模式两者的读取分配高速缓存支持。lid高速缓存312被物理编索引、被物理标记(44位物理地址),支持推测加载及未命中下命中,已发布写入未命中支持,且对lid内的所有未完成写入事务提供写入合并。lid高速缓存312支持对未完成事务的fence操作。lid是自动刷新及空闲刷新。[0083]lid高速缓存312包含用于支持来自cpu及dma的存取的lidsram。可用sram的数量由l1d存储器及l1d高速缓存大小的总和来确定。[0084]dmc361包含查找表及直方图能力以支持16个并行表查找及直方图。dmc361可初始化查找表且响应于选定并行度而将l1dsram动态地配置成多个区/路。[0085]dmc361包含64位及512位cpu加载/存储带宽、1024位lid存储器带宽。dmc361为64位宽存储体的16个接口提供支持,其中对l2具有高达8个未完成加载未命中。物理存储体及虚拟存储体在下文中关于图5a及图5b进行描述。[0086]dmc361包含错误检测及校正(ecc)。dmc361包含对32位粒度的ecc检测及校正。这包含关于数据及标记ram的全ecc,其中数据及标记ram两者具有1位错误校正及2位错误检测。dmc361将关于写入及牺牲的ecc校验子向外提供到l2。dmc361从l2接收具有读取数据的ecc校验子,且在将经验证数据呈现给cpu之前执行检测及校正。dmc361提供对牺牲高速缓存行的全ecc。dmc361提供读取‑修改‑写入支持以防止对部分行写入的奇偶校验损坏。eccl2‑l1d接口延迟对读取响应数据管线ecc保护的校正。[0087]dmc361通过在读取时返回存取代码(例如,das)以指示从其读取数据的高速缓存级来提供仿真及调试执行。总线错误代码可经返回以指示仿真读取及写入的通过/失败状态。高速缓存标记ram的内容可经由ecr(扩展式控制寄存器)来存取。[0088]dmc361将对交换操作或比较及交换操作的原子操作提供到可高速缓存存储器空间且将增量提供到可高速缓存存储空间。[0089]dmc361提供一致性,包含主及牺牲高速缓存两者中的全mesi(修改‑排他‑共享‑无效)支持。dmc361提供对全局高速缓存一致性操作的支持,包含来自l2的窥探及高速缓存维持操作支持,对l2sram、msmcsram及外部(ddr)地址的窥探及关于窥探及高速缓存维持操作的全标记ram比较。[0090]在实例中,dmc361提供48位宽的虚拟存储器寻址以对具有44位物理地址的存储器进行物理寻址。[0091]dmc361支持扩展式控制寄存器存取。l1decr寄存器可通过非管线式接口从cpu存取。这些寄存器不是存储器映射的,而是映射到movccpu指令。[0092]dmc支持l2地址别名(包含vcop地址别名模式)。所述别名可扩展到多个单独缓冲区,例如vcop‑ibufah、ibufal、ibufbh、ibufbl缓冲区。l2地址别名包含所有缓冲区的超出范围及所有权校验以维持隐私。[0093]umc363控制进入及离开l2高速缓存331的数据流。l2高速缓存331是8路组关联的,支持64kb到1mb的高速缓存大小。l2高速缓存331策略包含随机最近最少使用(lru)及/或随机替换。l2高速缓存331具有128字节高速缓存行大小。l2高速缓存331具有写入分配策略且支持回写及直写模式。l2高速缓存331对高速缓存模式变化执行高速缓存作废,这是可配置的且可被停用。l2高速缓存331被物理编索引、被物理标记(44位物理地址),包含每分组标记ram4个,这允许四个独立的分割管线。l2高速缓存331支持来自流式引擎、lid及lip高速缓存的每64字节流2个,且支持到msmc351的统一接口上的配置及mdma存取。l2高速缓存331高速缓存mmu页表。[0094]l2高速缓存331的实例l2sram组件包含每512位物理存储体4个,其中每一物理存储体具有4个虚拟存储体。每一存储体(例如,物理及/或虚拟存储体)具有独立存取控制。l2sram包含关于l2sram存取的安全防火墙。l2sram支持合并式msmc接口上的dma存取。[0095]umc363向外部(ddr)、msmcsram及l2sram提供预取硬件及按需预取。[0096]l2高速缓存提供对256位粒度的错误检测及校正(例如,ecc)。为标记及数据ram两者提供全ecc支持,其中标记及数据ram两者具有1位错误校正及2位错误检测。ecc(参见例如下文中所描述的eccgenrmw471)包含关于向外到msmc351的写入及牺牲的ecc校验子,且包含对dma/dru写入的读取‑修改‑写入以保持奇偶校验有效及被更新。ecc经布置以校正及/或产生通过数据路径/管线发送到lip311及se313的数据的多个奇偶校验位。这包含进行自动擦除以防止1位错误的累积,且刷新奇偶校验。ecc在系统复位时清除且复位奇偶校验。[0097]umc363通过在读取时返回存取代码以指示从其读取数据的高速缓存级来提供仿真及调试。总线错误代码经返回以指示仿真读取及写入的通过/失败状态。[0098]umc363支持l1d312、se313的2个流、l2sram331、msmc351sram与外部存储器(ddr)之间的全一致性。这包含l1d到共享l2的一致性,其可响应于对l2sram、msmcsram及外部(ddr)地址的窥探而维持。所述一致性经由mesi方案及策略来维持。umc363包含来自se313的用户一致性命令且包含对全局一致性操作的支持。[0099]umc363支持扩展式控制寄存器存取。l1decr寄存器可通过非管线式接口从cpu存取。ecr寄存器的内容可响应于movccpu指令而存取。[0100]umc363支持l2地址别名(包含vcop地址别名模式)。所述别名可扩展到多个单独的缓冲区,例如vcop‑ibufah、ibufal、ibufbh、ibufbl缓冲区。l2地址别名包含所有缓冲区的超出范围及所有权校验以维持隐私。[0101]msmc351允许处理器模块110在一致存储器阶层内动态地共享程序及数据两者的内部及外部存储器。msmc351包含内部ram,所述内部ram通过允许将所述内部ram的部分配置为共享3级ram(sl3)来为编程人员提供灵活性。共享3级ram可高速缓存在本地l2高速缓存中。msmc可经耦合到片上共享存储器。[0102]提供停顿cpu310的指令执行管线直到所有处理器触发的存储器事务完成为止的mfence(存储器栅栏)指令,所述存储器事务可包含:高速缓存行填充;从l1d写入到l2或从处理器模块写入到msmc351及/或其它系统端点;牺牲回写;块或全局一致性操作;高速缓存模式变化;及未完成xmc预取请求。mfence指令可用作用于停顿程序直到经分派存储器请求到达它们的端点的简单机制。其还可为经由多个路径(例如其中多处理器算法取决于写入到特定地址的数据的排序)且在手动一致性操作期间到达单个端点的写入提供排序保证。[0103]系统存储器管理单元(mmu)391响应于处理器上下文切换作废μtlb,例如以维持隐私。[0104]图4展示一致及阶层式存储器架构的二级的实例统一存储器控制器。系统400是实例一致共享存储器系统,例如系统300。系统400包含至少一个cpu。例如,第一核心(核心0)可包含cpu410、l1d421、se422、l1p423及msmc461、动态断电控制器463及2级存储器480。任选第二核心(核心1)可包含与第一核心类似的组件。第一核心(及第二核心412,如果存在的话)经由相应接口耦合到umc430,所述umc经布置以控制l2高速缓存标记及存储器。[0105]umc430可包含l2高速缓存控制器、状态存储器440(其包含l2高速缓存标记ram441、l2mesi442、l1d影子标记ram443、l1dmesi444及标记ramecc445)、存储器一致性(外部、内部、全局、用户)450控制器、msmc接口451、仿真452控制器、断电控制器453、扩展式控制寄存器(ecr)454、防火墙470、ecc产生器读取‑修改‑写入(eccgenrmw)、l2sram/高速缓存仲裁及接口472以及ecc校验473。[0106]一般来说(参考图3及图4),系统400可包含耦合到umc430的六个请求器端口(例如,接口):一个pmc362、一个dmc361、两个se端口(包含在一个流式引擎se313中)、来自cpu(例如,cpu410)的内部ecr454接口及msmc461。dmc361接口具有单独的512位读取及写入路径。这个接口还可用于从l1d高速缓存进行窥探。每一读取事务可为一个或两个数据阶段。pmc362接口由512位只读取路径(仅l1p取出)组成。每一读取事务可为一个或两个数据阶段。(se313的)两个se接口是512位只读的。每一读取事务可为一个或两个数据阶段。所述读取事务也用作用户块一致性功能的部分。msmc461接口由单独的512位读取及写入路径组成。单独的512位读写路径接口也用于窥探命令、对l2sram的读取/写入存取及对l1dsram的读取/写入存取。每一读取事务可为一个或两个数据阶段。来自系统400的每一cpu的内部ecr454接口是64位非管线式接口,且用于对umc430的ecr454寄存器的配置存取。[0107]umc到dmc接口可包含:512位dmc读取路径;512位dmc写入路径;dmc到umc信号(例如读取/写入/牺牲地址、逐出到牺牲缓冲区的高速缓存行的地址及安全、从牺牲缓冲区逐出的高速缓存行的地址及安全、用于指示从牺牲缓冲区逐出的干净行的两个标记更新接口、字节启用、读取/写入指示符、mmu页表属性/特权/安全性级指示符、窥探响应、l1d高速缓存模式信号,例如大小、大小变化、全局一致性及全局一致性类型);及umc到dmc信号(例如窥探信令、对读取及写入的响应以及其它此类握手信号)。[0108]umc到pmc接口可包含:512位pmc读取路径;pmc到umc取出地址;及其它此类握手信号。[0109]umc到se接口可包含:512位se读取路径;se到umc取出地址;se到umc用户块一致性指示符;及其它此类握手信号。[0110]msmc到umc接口可经耦合以携载多种类型的事务,例如:主dma(mdma,其可包含高速缓存分配、牺牲、长距离写入及不可高速缓存读取,其中此类mdma事务可源自umc);外部配置(ecfg,其可包含对可物理地位于cpu核心外的存储器映射寄存器的读取/写入存取,其中此读取/写入存取可源自umc);dma事务(其可源自msmc且是可例如在不同cpu核心之间、在cpu核心与外部ddr之间)或在cpu核心与soc上的非ddr存储器之间传送数据的事务,其中所述事务可由dma控制器来创建,且可指向l2sram或l1dsram);窥探事务(其可源自msmc,且可响应于来自另一核心的事务而产生,使得另一核心可窥探来自第一cpu核心的数据);及高速缓存温暖(例如,使得msmc可发起可被umc用于将行从3l高速缓存或外部存储器分配到umc高速缓存的事务)。[0111]umc到msmc的接口可包含:512位msmc读取路径;512位msmc写入路径;msmc到umc信号(例如地址、字节启用、读取/写入指示符、mmu页表属性/特权/安全性级指示符、窥探事务、dma事务及高速缓存温暖事务);及umc到msmc信号(例如窥探响应、地址、字节启用、读取/写入指示符及mmu页表属性/特权/安全性级指示符)及其它此类握手信号。[0112]系统400可包含映射到movccpu指令的扩展式控制寄存器(ecr)。umcecr路径允许对umc的控制寄存器进行64位读取/写入存取。针对配置读取,umc经布置以对所述寄存器的内容进行采样且在存取期间保存所述内容。umcecr接口包含:64位ecr读取路径;64位ecr写入路径;地址;特权/安全性级指示符;索引,其可用于高速缓存标记查看;及其它此类握手信号。[0113]umc到mmu接口可包含:64位读取路径;地址;及其它此类握手信号。[0114]umc到l2接口可包含:虚拟存储体;l2存储器的物理存储体,其中每一存储体包含512位宽的可寻址数据单元;512位读取数据路径;512位写入数据路径;地址;字节启用;存储器启用指示符;读取/写入指示符;虚拟存储体选择;及其它此类握手信号。[0115]umc430可包含2级存储器480(例如,sram)。l2存储器480可包含任何合适数目个存储体,且说明4个存储体481、482、483及484,其中每一此存储体通过相应组的512b读取/写入数据路径及ecc数据路径而耦合。4个存储体可被组织为各自具有4个虚拟存储体,或被组织为各自具有2个虚拟存储体,如下文中参考图5a及图5b分别进行描述[0116]图5a展示每物理存储体具有4个虚拟存储体的图4的系统的实例2级存储器存储体接口。例如,接口500a包含物理存储体510(例如,存储体0)、物理存储体520(例如,存储体1)、物理存储体530(例如,存储体2)及物理存储体540(例如,存储体4)。物理存储体510、520、530及540中的每一者分别包含4个虚拟存储体(虚拟存储体0、虚拟存储体1、虚拟存储体2及虚拟存储体3)。每一物理存储体的虚拟存储体中的每一者包含相应多路复用器/多路分用器,使得给定(例如,经寻址)物理存储体的每一相应虚拟存储体可在虚拟存储体存储器存取中写入或读取。给定物理存储体中的每一虚拟存储体可使用(例如,重叠或分开的)虚拟存储体存储器存取来连续存取。[0117]图5b展示每物理存储体具有2个虚拟存储体的图4的系统的实例2级存储器存储体接口。例如,接口500b包含物理存储体510(例如,存储体0)、物理存储体520(例如,存储体1)、物理存储体530(例如,存储体2)及物理存储体540(例如,存储体4)。物理存储体510、520、530及540中的每一者分别包含2个虚拟存储体(虚拟存储体0及虚拟存储体1)。每一物理存储体的虚拟存储体中的每一者包含相应多路复用器/多路分用器,使得给定(例如,经寻址)物理存储体的每一相应虚拟存储体可在虚拟存储体存储器存取中写入或读取。给定物理存储体中的每一虚拟存储体可为连续(例如,具有重叠或分开的)虚拟存储体存储器存取。[0118]再次参考图4,umc430包含四个512位宽的存储器端口,所述存储器端口可被称为umc存储器存取端口(umap)端口。当布置在sram中的存储器存储体可在每一umc周期内响应时,每一l2sram接口(例如,请求器到l2高速缓存的接口)可每umc周期支持一个新存取。对存储器存储体的存取可通过多个umc周期管线化,这允许使用更高延时的存储器。所述虚拟存储体中的每一者可包含不同延时,因为每一接口证实每一虚拟端口的可用性,而非整个物理存储体的可用性。[0119]umcl2sram协议容纳直接连接到umc430的存储器。umc430在umap边界上呈现地址及读取/写入指示且等待一段时间(例如,延时),在其期间“预期”l2sram会作出响应。umc430能够独立地控制四个存储体。对这些虚拟存储体的存取是连续发出的。如果附加存储器具有大于1个周期的管线延时,那么对同一虚拟存储体的连续请求导致“存储体冲突”。第二请求被延迟直到第一请求完成。对不同虚拟存储体的连续请求可无延迟地进行(例如,当稍后存取的存储器的延时不大于1个周期的管线延时的两倍时)。[0120]umc430可在经编程存取延时之后(例如,在不存在存储器错误的情况下)读取经返回数据。支持两种不同类型的延时‑管线延时及存取延时。管线延时是umc在可再次存取同一虚拟存储体之前必须等待的周期的数目。存取延时是在已呈现读取命令出现之后存储器将数据呈现给umc所需的周期的数目。在实例系统中,umc430支持管线延时及存取延时两者的1到6个延时。[0121]可通过将等待状态插入到存储器存取中来补偿不同类型的sram之间的延时的变动,其中响应于被存取的存储器的延时而选择等待状态的数目。1及2周期存取延时可分别被称为“0等待状态”及“1等待状态”。[0122]安全性是通常应用于保护存储器中的数据的术语。安全性的强制执行包含:将权限指派给特定主控,为特定权限指定具有某些允许动作的存储器地址范围,及确定对每一存储器地址的每一取及读写入事务是否包含足够特权来存取特定地址且阻止对具有不足特权的每一事务的特定地址的存取。[0123]权限信息包含在各个轴上解释的权限可能性。例如,可在特权、管理程序及安全(例如,安全性)级的轴上解释权限可能性。沿着特权轴,权限可能性包含用户或监管者的可能性。沿着管理程序(如果适用的话)轴,权限可能性包含根或访客的可能性。沿着安全性级轴,权限可能性包含安全或非安全的可能性。权限可能性跨高速缓存的三个级强制执行。[0124]许多实例包含至少两个安全性状态,每一状态具有用于控制物理及/或逻辑安全性组件的相应相关联存储器属性。安全/非安全状态是伴随(或以其它方式与其关联)由cpu呈现给高速缓存控制器的事务的属性。当cpu处于安全状态(例如,其可通过由cpu产生的事务中的每一者上指示的csecure属性来指示)时,高速缓存级中的每一者的高速缓存控制器允许cpu存取安全及非安全存储器位置。当cpu处于非安全状态(例如,其可通过由cpu产生的事务中的每一者上指示的csecure属性来指示)时,高速缓存级中的每一者的高速缓存控制器允许cpu存取非安全状态存储器位置,但防止cpu存取安全存储器位置。csecure属性可为“安全代码”(例如,其中安全代码包含用于指示在cpu上执行的过程的安全性级的安全状态字段及/或数字字状态的至少一位。安全代码可为如下文中参考图6a到图12所描述的“安全位”。[0125]在实例中,l2防火墙用于提供关于存取l2sram的请求器产生事务及关于存取存储器的更高级的l2产生存储器事务的安全性。l2防火墙与l3防火墙协作,使得可存取权限可能性以控制发生在l2与l3高速缓存之间的事务。安全防火墙组件存在于两个接口处:umc‑msmc接口(例如,其保护由cpu启动的转到或朝向外部存储器的事务)及umc‑l2rsam接口(例如,以保护转到或朝向l2sram空间的存取)。[0126]通常,防火墙可以两种模式中的一者进行配置:白名单模式(例如,其中列出用于指示允许哪些主控/权限存取预定地址区的指定)及黑名单模式(例如,其中列出用于指示阻止哪些主控/权限存取预定地址区的指定)。在实例中,预定地址区可在防火墙阻止或允许存取预定地址区中的地址的时间之前预先确定。[0127]为了保护由防火墙(例如)控制的高速缓存的选定级,可将权限信息(例如,用于对特定地址块授予存取权限的保护策略)存储在高速缓存的选定级中,使得可通过针对待保护的相应区的授予或拒绝存取的列表来专门保护存储器的选定区。针对黑名单区域,防火墙经布置以阻止存取任何可高速缓存的存储器位置(例如,具有可存储在高速缓存中的内容的任何存储器位置)。在实例中,对防火墙进行编程以阻止其存取未明确地列入白名单的过程存取可高速缓存的存储器位置可帮助防止只读存储器被高速缓存,且接着由于过程的高速缓存命中而稍后在高速缓存中进行本地更新。[0128]防火墙的白名单或黑名单中列出的地址区域之间存在未指定保护的地址区域。当并非每个可能的存储器位置均被指派选定保护策略时,可能产生此类区域(例如,“灰名单区域”)。由于防火墙配置资源的有限性质(例如有限的存储器或地址处理要求),不为每个可能的存储器位置关联选定保护策略可能是折衷的设计选择。[0129]在影响存储在灰名单区域(例如,与防火墙中列出的黑名单及白名单区域的并集不相交的区域)中的数据的某些高速缓存操作中,可增强对受防火墙保护的高速缓存的存取(例如,超出防火墙的保护,而没有原本将需要更高复杂性的电路及布局空间的额外复杂性)。在实例中,产生存储在特定高速缓存行中的数据的过程的安全性级可经存储在与特定高速缓存行相关联的标记存储器中(包含地址标记、mesi状态及本文中所描述的状态位),保护存储在灰名单区域中的数据,而不会例如增加防火墙的复杂性(例如,以便缩小灰名单区域的范围)。[0130]针对被防火墙允许(例如,未被其阻止)存取选定级高速缓存的选定高速缓存行的请求器的存取请求,响应于存取请求的安全性上下文且响应于与选定高速缓存行相关联的经存储安全代码,可选择性地窥探(例如,从ll高速缓存读出,但保持在存在于l1高速缓存中的行中),或窥探作废(例如,从l1高速缓存读出,且从l1高速缓存移除),或作废(例如,从高速缓存移除)选定高速缓存行,其中经存储安全代码指示在过程产生存储在选定高速缓存行中的信息时所述过程的安全性上下文。例如,选择性地作废或逐出选定高速缓存行可响应于存取请求的安全性上下文与由安全代码指示的安全性上下文的比较。例如,选择性地作废或逐出选定高速缓存行可响应于存取请求的安全性上下文与由安全代码指示的安全性上下文的比较。例如,选择性地作废或逐出选定高速缓存行可响应于存取请求的安全性上下文及由安全代码指示的安全性上下文不同而确定。[0131]如下文中所描述,响应于存取请求的安全性上下文且响应于指示选定高速缓存行的安全性上下文的经存储安全代码而选择性地作废或被逐出选定高速缓存行可降低防火墙的复杂度(例如,以达到类似的性能水平),可减少原本刷新l1d高速缓存所需的时间长度(例如,其经执行以禁止恶意软件存取高速缓存内容),且可提高包含选定高速缓存行的高速缓存的cpu/存储器系统的总体性能[0132]逐出高速缓存行的精简子集减少原本将在高速缓存逐出过程期间发生的cpu停顿的数目(例如,没有存储器请求安全性上下文与由存储器请求寻址的高速缓存行的安全性上下文的安全性匹配)。通过不逐出具有相同安全性上下文的数据,这减少或消除将经逐出高速缓存信息散布到存储器端点(例如,外部存储器)遇到的延时及在重新加载经逐出行时另外遇到的延时。[0133]在回写高速缓存中,可相对于主存储器修改(脏的,例如由cpu修改)存储在高速缓存行中的存储器位置中的值。当为经修改高速缓存行分配的存储器被确定为被其它存储器需要时,可逐出经修改高速缓存行。当包含经修改值的高速缓存行从高速缓存逐出时,逐步将经逐出高速缓存行(其包含脏存储器)发送到下一更高级会减少原本刷新l1d高速缓存所需的时间长度,这通过减少在高速缓存逐出存储器阶层期间发生的cpu停顿的数目来提高包含l1d高速缓存的存储器系统的总体性能。(经逐出高速缓存行也可存储在高速缓存阶层的同一级处的牺牲高速缓存中。)响应于逐步将脏高速缓存行发送到高速缓存的更高级,最终用存储在经逐出高速缓存行中的经修改信息更新主存储器的对应部分。当用脏高速缓存行更新主存储器的对应部分时,所有存储器均包含经修改数据,使得使存储器系统(例如)再次一致且使得经修改数据可被视为不再是脏的。[0134]umc430(如上文中关于图4所描述)经耦合以响应于防火墙470而控制2级存储器480。防火墙470包含专用白名单防火墙,所述白名单防火墙可经编程以允许/禁止存取选定的l2sram地址区。选定的l2sram地址区中的每一者可被指派相应高速缓存策略。经指派相应高速缓存策略可为例如针对每种类型的存取(例如,例如存储器读存取或写入存取)的选定权限级的策略。表3展示实例高速缓存策略指派。[0135]表3[0136][0137][0138]如关于图2所描述,例如,实例l1d异构高速缓存实施方案可高速缓存l1(数据)高速缓存223及(l1d)牺牲高速缓存223中的每一经高速缓存行的(若干)l2sram地址。l1d主及牺牲高速缓存以及l2影子副本的管理是响应于耦合在l1d与l2控制器之间的专用协议/接口而执行,所述专用协议/接口允许将分配及重新定位信息从l1传递到l2控制器。l2控制器可响应于来自l1的事务及信息且还可创建及强制执行窥探事务以维持来自同一可共享性域内的非高速缓存请求器的i/o(dma)一致性。窥探事务可引起l2控制器启动对l2高速缓存的影子高速缓存及l1d高速缓存的主/牺牲高速缓存的改变。[0139]1级(例如,lid)控制器222可包含可由编程人员选择以按个别高速缓存行的粒度管理l1d及l2控制器中的高速缓存的占有率的程序启动高速缓存维持操作(cmo)。[0140]在本文中参考图4所描述的实例中,cmo事务可经由vbusm.c协议接口上的方向事务从流式引擎发出到l2控制器(例如,umc430)。vbusm.c协议接口经布置以将se422及umc430相互耦合。表4展示实例vbusm.c协议接口。[0141]表4[0142][0143]vbus.c协议包含实例csband信号。所述csband信号是串接若干子信号的封装总线(例如,97位宽),如表4中所展示。csband信号被断言以在高速缓存状态的某些变化期间维持一致性(例如,其中此类变化可响应于例如分配高速缓存行及例如更新l2控制器中的影子信息的高速缓存活动而发生)。[0144]在某些时候,软件启动cmo可能需要针对特定安全性级(例如仅安全与仅非安全)逐出/作废地址(或单个地址)块。本文中描述可用于控制l2高速缓存以通过逐出/作废由cmo请求所需的l1d高速缓存行的减小大小(例如,最小)的子集来维持细粒控制的“安全代码”(例如,“安全位”)。对逐出/作废来自l1d的高速缓存行的此需要可响应于cpu的特权模式的级变化(例如,从安全到非安全或从非安全到安全)而发生。表5展示包含l1d高速缓存中的每一高速缓存行的安全位(位49位置中的csecure)的l1d高速缓存的实例标记行。[0145]表5[0146][0147]表6展示包含l1d高速缓存中的每一高速缓存行的安全位(csecure)的l1d高速缓存的实例标记行的字段描述。[0148]表6[0149][0150]响应于确定每一高速缓存行的相应安全代码的状态而确定待逐出或作废的高速缓存的选定部分(例如,l1d高速缓存行的子集)。选择待逐出的高速缓存的子集(例如,而非逐出所述高速缓存的所有行),减少原本刷新l1d高速缓存所需的时间长度,这通过减少在高速缓存逐出期间发生的cpu停顿的数目来提高包含l1d的存储器系统的总体性能。表6展示l1d高速缓存的标记行,其包含用于确定安全状态相应行的安全代码位。[0151]calloc信号被断言以启动从l1d发出的用于读取l2高速缓存行的读取命令。calloc的断言(例如calloc==1)指示给定高速缓存行(caddress csecure)正在由l1d主高速缓存分配。当calloc被断言(例如,calloc==1)时,csband信息用于更新l2控制器中的l1d影子信息。当calloc未被断言时(例如,calloc==0),经寻址高速缓存行的有效位(cmain_valid及cvictim_valid)被设置为0,使得(例如)当calloc信号未被断言时,l1d高速缓存行不会改变。[0152]通常,两个请求器无法在相同时间(例如,在从主高速缓存传送到牺牲高速缓存时,及传出牺牲高速缓存时)读取同一高速缓存行(例如,其中高速缓存行由安全代码的地址及状态唯一地识别)。为了帮助避免这种冲突,可禁止cvictim_address及cvictim_secure(l1d牺牲高速缓存行的安全位)信号的值在calloc信号被断言(calloc==1)且经寻址高速缓存行的有效位被设置的时间期间(例如,当cmain_valid==1及cvictim_valid==1时)精准地匹配cmain_address及cmain_secure信号的相应值。[0153]由l3控制器启动的窥探及dma事务与由流式引擎发出的cmo事务类似地操作。例如,此类窥探及dma事务包含用于指示发起请求的过程的安全性级的安全代码。[0154]从mmu或流式引擎发出的一致读取事务也与由流式引擎发出的cmo事务类似地操作。例如,一致读取事务包含用于指示一致读取请求的安全性级的安全代码。[0155]在各种实例中,l2控制器(例如,l2高速缓存控制器431)经布置以从请求器接收指示选定高速缓存行的存取请求。l2控制器经布置以比较接收到的存取请求的安全代码与经存储安全代码,所述经存储安全代码与将目前信息写入到选定高速缓存行中的先前存取请求的安全上下文相关联。响应于比较,可选择性地作废或逐出选定高速缓存行,使得响应于请求器的安全性级(例如,如由安全代码指示)的变化而作废或逐出选定高速缓存行的子集(例如,小于整个集的集)。[0156]l2控制器经耦合到二级数据高速缓存,所述二级数据高速缓存是被存储的l2sram物理结构。l2sram是单片端点ram,且经布置以不存储由来自请求器的存取请求指示的地址的任何高速缓存行、存储一个或两个所述高速缓存行。在各种实例中,可存储在l2sram中的单个可高速缓存地址的高速缓存行的数目等于可由接收到的存取请求的安全代码指示的安全性级的数目。在实例中,安全代码是位(例如,“安全位”),使得用于存储在给定可高速缓存地址中的数据可经存储在与安全代码的第一可能值相关联的第一高速缓存行中(例如,当安全位为0时),且使得用于存储在给定可高速缓存地址中的数据可经存储在与安全代码的第二可能值相关联的第二高速缓存行中(例如,当安全位为1时)。[0157]一致性是通过在l1d标记、l2标记及l2影子标记中的每一者中包含安全代码(例如,安全位)的字段(例如,位字段)来维持。当存取请求导致信息写入到l1d标记、l2标记及l2影子标记中的任一者的高速缓存行中时,存取请求的(例如,由存取请求所包含的)安全代码(例如,安全位)进一步传播到包含(或将包含)由存取请求指示的高速缓存行的信息的其它高速缓存。[0158]存取请求包含用于指示启动存取代码的请求器的安全性上下文的安全性级的安全代码。如下文中所描述,安全代码(例如,安全位)可被包含在l1d标记、cmo或窥探事务、mmu或se读取事务及dma读取/写入事务中。到l1d的l2窥探事务包含发起cmo/窥探/读取/dma事务请求的安全代码。[0159]当l2控制器处理需要在l1d主或牺牲高速缓存标记的影子副本中查找的事务时,l2控制器评估由正被处理的事务寻址的高速缓存行的安全代码以确定“命中”或“未命中”(例如,通过存取l1d高速缓存行)。例如,确定传入事务的命中:1)响应于检测到影子标记中的经寻址高速缓存行的经存储安全代码与传入事务的安全代码之间的匹配;及2)响应于检测到影子标记中的经高速缓存行的地址与传入事务的高速缓存行地址之间的匹配。在所述实例中,确定传入事务的未命中:1)响应于未检测到影子标记中的经寻址高速缓存行的经存储安全代码与传入事务的安全代码之间的匹配;或2)响应于未检测到影子标记中的经高速缓存行的地址与传入事务的高速缓存行地址之间的匹配。[0160]为了帮助确保l1d准确地执行其自身对由l1d处理的后续窥探事务的命中/未命中检测,可将与l2控制器的最近高速缓存行命中相关联的安全代码传送到l1d控制器。与l2控制器的最近高速缓存行命中相关联的安全代码可响应于最近高速缓存行命中(例如,包含响应于安全代码状态的命中/未命中检测)而经由由l2控制器启动的窥探事务(经由vbusm.c总线接口协议信令)传送到l1d控制器。[0161]相反,一些可比较的解决方案在高速缓存标记中缺少指示通过其标记高速缓存行的请求器上下文的安全性级的安全代码。留存通过其标记高速缓存行的请求器上下文的安全性级的此缺少可能导致严重的安全性控制故障(例如,因为通过其标记高速缓存行的请求器上下文的安全与非安全上下文安全性级之间的区别可潜在地允许在与通过其标记高速缓存行的请求器上下文的安全性级不同的安全性级下处理存取请求。[0162]例如,高速缓存标记中的安全与非安全上下文之间的区别实现存储在第一上下文下的高速缓存行的细粒高速缓存逐出/作废,而不会影响存储在与第一上下文不同的上下文下的高速缓存行的高速缓存性能。在其中非安全高速缓存行经由cmo操作而作废的实例中,安全行可保持在高速缓存中,这导致存储在安全软件上下文中的高速缓存行的改进高速缓存性能。例如,这个改进可在其中存储在非安全软件上下文中的高速缓存行及存储在安全软件上下文中的高速缓存行两者共享同一高速缓存中的相同标记地址的情况下发生。[0163]l2控制器准确地对l1d执行一致窥探操作的效率可通过对其中经寻址高速缓存行及存取请求的经高速缓存地址及安全性级相同的案例的子集的l1d执行一致窥探操作而得到改进。可响应于评估由事务的安全代码(例如,安全位的状态)指示的软件上下文的安全性级而确定待启动对l1d的哪些一致窥探操作的选择,其中安全位的状态经存储在l1d(主或牺牲)高速缓存中的高速缓存标记中且还经存储/维持在l2高速缓存中的l1d/l2高速缓存标记的影子副本中。[0164]图6a展示实例l1d(1级数据)控制器物理结构。例如,1级数据控制器600a包含主高速缓存标记601及牺牲高速缓存标记602。主高速缓存标记601经布置以跟踪(例如,针对相应主高速缓存行)地址标记、mesi及上次通过其修改相应高速缓存行数据的过程的安全性级(例如,由安全代码指示)。牺牲高速缓存标记602经布置以跟踪(例如,针对相应牺牲高速缓存行)地址标记、mesi及上次通过其修改相应高速缓存行数据的过程的安全性级(例如,由安全代码指示)。[0165]l1d主高速缓存601是服务于读取及写入命中及窥探的直接映射高速缓存。l1d主高速缓存601维持可a)响应于读取、写入及窥探存取且b)响应于安全代码(例如,安全位)而修改的当前mesi状态。l1d主高速缓存601是读取分配高速缓存。未命中高速缓存的来自cpu的写入存取经发送(例如,转发)到l2,而不需要分配l1d主高速缓存601中的高速缓存行。由于l1d高速缓存的直接映射设计,当新分配进行时,所述集中的当前行经移动(例如,逐出)到牺牲高速缓存602,而不管所述集中的当前行是干净的还是脏的。[0166]l1d牺牲高速缓存602是保存由于替换(例如,响应于来自cpu的写入)而从主高速缓存601移除(例如,逐出)的行的全关联结构。l1d牺牲高速缓存602保存干净行及脏行两者。l1d牺牲高速缓存服务于读取及写入命中及窥探(例如,从cpu接收),同时响应于命中l1d牺牲高速缓存602的读取、写入及窥探存取而维持正确mesi(例如,当经高速缓存行包含与读取、写入或窥探存取事务的地址及安全代码匹配的地址及安全代码时)。当处于经修改状态(例如,脏)的行从牺牲高速缓存移除(例如,逐出)时,其作为牺牲发送到l2主高速缓存(下文中参考图6b所描述)。[0167]图6b展示实例2级(l2)控制器物理结构。例如,1级数据控制器600b包含主高速缓存标记610及牺牲高速缓存标记620。主高速缓存标记610经布置以跟踪(例如,针对相应主高速缓存行)地址标记、mesi及上次通过其修改相应高速缓存行数据的过程的安全性级(例如,由安全代码指示)。牺牲高速缓存标记620经布置以跟踪(例如,针对相应牺牲高速缓存行)地址标记、mesi及上次通过其修改相应高速缓存行数据的过程的安全性级(例如,由安全代码指示)。牺牲高速缓存620包含浮动条目,包含由同一“路”寻址的条目的高速缓存标记信息。[0168]l2高速缓存是经布置以服务于来自各种类型的多个请求器的请求的统一高速缓存。请求器类型可包含例如l1d数据存储器控制器(l1ddmc)、l1p程序存储器控制器(pmc)、流式引擎(se)、mmu(存储器管理单元)及l3msmc(多核共享存储器控制器)的请求器的类型。[0169]l2高速缓存不包含l1d及l1p,使得不需要l2包含存储在l1d及l1p高速缓存中的所有高速缓存行。在这个方案中,一些行可经高速缓存在阶层的两个级中。l2高速缓存也是非排他性的,使得不会明确地防止高速缓存行在相同时间高速缓存在l1及l2高速缓存两者中。在包含高速缓存行的分配及随机替换的实例操作中,高速缓存行可存在于l1d及l2高速缓存中的一个、两者中或不存在于l1d及l2高速缓存中的任一者中。以类似方式,类似高速缓存行可在相同时间存储在l1p及l2高速缓存中。[0170]图7a展示在实例高速缓存操作之前的实例级数据(l1d)高速缓存标记值。例如,1级数据控制器700a包含主高速缓存标记710a、牺牲高速缓存标记720a及暂时性牺牲保存缓冲区730a。主高速缓存标记710a经布置以跟踪(例如,针对相应主高速缓存行)地址标记、mesi及与发起高速缓存行的过程的安全性上下文相关联的安全性级“s”。主高速缓存标记710a(及具有用于存储安全性级s的安全代码存储器的其它高速缓存标记)中的“s”的列是实例一级高速缓存安全代码列表。牺牲高速缓存标记720a经布置以跟踪地址标记、mesi及通过其相应条目包含条目被逐出的高速缓存标记信息的过程的安全性级(例如,使得牺牲高速缓存可由牺牲高速缓存行来加载而(例如)无须等待经逐出高速缓存行发送到更高高速缓存级)。[0171]1级数据控制器700a中的l1d数据结构的实例状态被展示为在l1d控制器对行c的实例分配之前的状态。在所述实例中,选定行a在主高速缓存标记710a中经存储为具有高速缓存行a的发起过程的经修改(“m”mesi)及安全代码s(例如,1或0的安全位)。在相同时间,牺牲高速缓存标记720a的选定路将高速缓存行b包含为具有高速缓存行b的发起过程的s的修改状态及安全代码。在相同时间,l1d暂时性牺牲保存缓冲区是空的。[0172]如下文中所描述,接收l1d高速缓存行分配存取命令,使得响应于接收到的分配存取命令,将主高速缓存标记710a的经修改高速缓存行传送到牺牲高速缓存标记720a,使得从牺牲高速缓存标记720a逐出的高速缓存行(例如,其经逐出以代表从主高速缓存标记710a传送的经修改高速缓存行腾出空间)从牺牲高速缓存标记720a传送到l1d暂时性牺牲保存缓冲区(例如,以最终发送到l2级高速缓存)。[0173]图7b展示在实例高速缓存操作之后的实例级数据(l1d)高速缓存标记值。例如,1级数据控制器700b包含主高速缓存标记710b、牺牲高速缓存标记720b及暂时性牺牲保存缓冲区730b。在所述实例中,主高速缓存标记710b、牺牲高速缓存标记720b及暂时性牺牲保存缓冲区730b展示在l1d控制器分配行c之后的相应l1d数据结构的值。[0174]在实例高速缓存操作中,l1d高速缓存在主高速缓存标记810b中的地址c处分配新行(例如,高速缓存行c),这启动高速缓存行a(例如,从主高速缓存标记710a)到牺牲高速缓存标记720b的相应路的传送。响应于高速缓存行a到牺牲高速缓存标记720b的相应路的传送,高速缓存行b从牺牲高速缓存的相应路传送到l1d暂时性牺牲保存缓冲区730b。高速缓存行b经存储在l1d暂时性牺牲保存缓冲区730b中,等待行b到l2级高速缓存的后续传送。[0175]图8a展示在实例高速缓存操作之前的实例l2影子结构。例如,2级数据控制器800a包含l2影子主高速缓存标记810a及l2影子标记牺牲高速缓存820a。l2数据控制器800a维持保存在l1d主高速缓存中(例如,在主高速缓存标记710a中,且接着在710b中修改)中的高速缓存行中的每一者的地址标记、mesi状态信息及安全性信息的影子副本。主高速缓存条目710a的l2影子主高速缓存标记810a允许l2控制器正确地跟踪高速缓存在l1d中的主高速缓存行中的每一者,使得l2控制器可正确地(且快速地,例如,而无须轮询所有l1d主高速缓存条目)确定何时发送窥探事务以执行a)读取或b)作废l1d中的高速缓存行中的仅一者。[0176]l2数据控制器800a还维持保存在l1d牺牲高速缓存中(例如,在牺牲高速缓存标记820中)的高速缓存行中的每一者的地址标记及mesi状态信息的影子副本。牺牲高速缓存条目的l2影子标记牺牲高速缓存820a(例如,在牺牲高速缓存标记720a中,且接着在720b中修改)允许l2控制器正确地跟踪高速缓存在l1d中的主高速缓存行,使得l2控制器可准确地确定何时将窥探事务发送到l1d控制器。[0177]维持(例如,l1主高速缓存标记710a及l1牺牲高速缓存标记720a的)l1d高速缓存标记作为l2影子标记减少原本将更长(例如,在没有影子标记的情况下)的级间高速缓存存取延时。如果所述影子标记未经维持在l2中,那么l2控制器将被迫为可能保存在l1d主或牺牲高速缓存中的每一请求窥探l1d,这将由于所得窥探业务带宽的大提高而显著地使接口性能降级。[0178]2级数据控制器800a中的l1d数据结构的实例状态被展示为在实例高速缓存操作(例如,l1d控制器对行c的分配)之前的状态。在所述实例中,选定行a(先前从主高速缓存标记710a复制)在l2影子主高速缓存标记810a中经存储为具有高速缓存行a的发起过程的s的修改(mesi中的“m”)及安全代码(例如,1或0的安全位)。在相同时间,l2影子标记牺牲高速缓存820a的选定路(如先前从牺牲高速缓存标记720b复制)将高速缓存行b包含为具有高速缓存行b的发起过程的s的修改状态及安全代码。在相同时间,l2影子标记牺牲高速缓存820a的浮动条目是空的,这反映l1d暂时性牺牲保持缓冲区(l2影子标记牺牲高速缓存820a)的状态是空的。主高速缓存标记810a中的“s”的列及包含用于存储安全性级“s”的安全代码存储器的其它l2高速缓存标记中的“s”的其它列各自是相应二级高速缓存安全代码列表的实例。[0179]如下文中所描述,接收l1d高速缓存行分配存取命令,使得响应于接收到的分配存取命令,将主高速缓存标记710a的经修改高速缓存行传送到牺牲高速缓存标记720a,使得从牺牲高速缓存标记720a逐出的高速缓存行从牺牲高速缓存标记720a传送到l1d暂时性牺牲保存缓冲区。[0180]图8b展示在行的l1d分配之后的实例l2影子结构,其中经修改行从主高速缓存移动到牺牲高速缓存,且从牺牲高速缓存移动到l2。例如,2级数据控制器800b包含主高速缓存标记810b及l2影子标记牺牲高速缓存820b。在所述实例中,主高速缓存标记810b及l2影子标记牺牲高速缓存820b展示在l1d控制器分配c行之后传送到2级数据控制器800a之后的相应l1d数据结构的值。[0181]在实例高速缓存操作中,l1d高速缓存在主高速缓存标记810b中的地址c处分配新行(例如,高速缓存行c),这启动高速缓存行a(例如,从主高速缓存标记710a)到牺牲高速缓存标记720b的相应路的传送。响应于在主高速缓存标记710b中的地址c处分配新行(例如,高速缓存行c),将主高速缓存标记710b中的地址c处的行(例如,高速缓存行c)分配(及/或复制到)主高速缓存标记810b中的地址c处的相应行(例如,高速缓存行c)。[0182]响应于高速缓存行a到牺牲高速缓存标记720b的相应路的传送,将高速缓存行b从牺牲高速缓存的相应路传送到l1d暂时性牺牲保存缓冲区730b。高速缓存行b经存储在l1d暂时性牺牲保存缓冲区730b中,等待行b到l2级高速缓存的后续传送(例如,当授予对通过其更新存储器端点(例如,外部存储器)的牺牲写入操作的存取时。[0183]图9a是多级高速缓存系统中的一致读取操作的实例过程的流程图。一致性读取操作是高速缓存一致性操作的实例。过程900a是作为mmu读取操作、se读取操作或dma读取操作启动的实例过程,例如一致读取操作。过程900a在操作910a处启动。[0184]在操作910a处,由mmu、se或dma控制器产生一致读取操作且将其发送到l2控制器(例如,umc430)。[0185]在操作920a处,由l2控制器(例如,umc430)接收由mmu、se或dma控制器产生的一致读取操作。l2控制器经布置以确定接收到的一致读取操作是否引起l2影子标记命中及安全命中(例如,安全性代码匹配)两者。l2影子标记命中响应于接收到的一致读取操作的一致读取地址与在l2影子主高速缓存或l2影子牺牲高速缓存的l2影子标记中的任一者中标记的地址匹配而发生。安全命中响应于确定接收到的一致读取操作的安全代码与存储在由接收到的一致读取操作命中的高速缓存行中的安全代码之间的匹配而发生。响应于接收到的一致读取操作引起l2影子标记命中及安全命中两者的肯定比较的确定,过程900a在操作930a处继续。响应于接收到的一致读取操作不会引起l2影子标记命中及安全命中两者的确定,过程900a在操作922a处继续。[0186]在操作922a处,l2控制器响应于(例如,为了实现)接收到的一致读取操作而本地产生一致读取命令且将本地产生的一致读取命令发送到存储器端点(例如,使得存储器端点可将经请求一致读取数据返回到产生且发送由l2控制器接收的一致读取操作的请求器)。所述端点可为l2高速缓存、外部存储器或任何其它端点。[0187]在操作930a处,l2控制器响应于接收到的一致读取操作引起l2影子标记命中及安全命中两者的确定而本地产生窥探读取请求。l2控制器将窥探读取请求发送到更低级高速缓存(例如,l1d),使得(例如)l2高速缓存可与更低级高速缓存保持一致。[0188]在操作940a处,l2控制器确定窥探响应(例如,其由更低级高速缓存控制器响应于由l2控制器发送的窥探读取请求而产生且发送)是否指示被窥探的高速缓存行含有有效数据。响应于窥探响应包含有效数据的确定,过程900a在操作950a处继续。响应于窥探响应不包含有效数据的确定,过程900a在操作922a处继续。[0189]在操作950a处,l2控制器将由窥探响应所包含的数据返回(例如,转发)到读取主控(例如,产生且发送由l2控制器接收的一致读取操作的请求器)。[0190]图9b是多级高速缓存系统中的窥探读取操作的实例过程的流程图。窥探读取操作是高速缓存一致性操作的实例。过程900b是作为mmu读取操作、se读取操作或dma读取操作启动的实例过程,例如窥探操作。过程900b在操作910b处启动。[0191]在操作910b处,由3级高速缓存及/或下一更高级高速缓存产生窥探操作)。[0192]在操作920b处,由l2控制器(例如,umc430)接收由3级高速缓存及/或下一更高级高速缓存)产生的窥探操作。l2控制器经布置以确定接收到的窥探操作是否引起l2影子标记命中(例如,地址匹配)及安全命中(例如,安全性代码匹配)两者。l2影子标记命中响应于接收到的窥探读取操作的窥探读取地址与在l2影子主高速缓存或l2影子牺牲高速缓存的l2影子标记中的任一者中标记的地址匹配而发生。安全命中响应于确定接收到的窥探读取操作的安全代码与存储在由接收到的窥探读取操作命中的高速缓存行中的安全代码之间的匹配而发生。响应于接收到的窥探读取操作引起l2影子标记命中及安全命中两者的肯定比较的确定,过程900b在操作930b处继续。响应于接收到的窥探读取操作不会引起l2影子标记命中及安全命中两者的确定,过程900b在操作922b处继续。[0193]在操作922b处,l2控制器本地产生读取命令以响应于(例如,为了实现)来自3级高速缓存(或下一更高级高速缓存)的接收到的窥探读取操作而从存储器端点(例如,最接近的有效高速缓存条目或外部存储器)读取数据。例如,当命中/未命中校验指示被窥探的高速缓存行存在于l2高速缓存中时,最接近的有效高速缓存条目可为l2高速缓存。如果所述行不存在于l2高速缓存中,那么可将读取命令转发到下一更低级高速缓存或朝向另一端点转发。[0194]在操作930b处,l2控制器响应于接收到的窥探读取操作引起l2影子标记命中及安全命中两者的确定而本地产生窥探读取请求。l2控制器将窥探读取请求发送到更低级高速缓存(例如,l1d),使得(例如)l2高速缓存可与更低级高速缓存保持一致。[0195]在操作940b处,l2控制器确定窥探响应(例如,其由更低级高速缓存控制器响应于由l2控制器发送的窥探读取请求而产生且发送)是否指示被窥探的高速缓存行含有有效数据。响应于窥探响应包含有效数据的确定,过程900b在操作950b处继续。响应于窥探响应不包含有效数据的确定,过程900b在操作922b处继续。[0196]在操作950b处,l2控制器将由窥探响应所包含的数据返回(例如,转发)到读取主控(例如,产生且发送由l2控制器接收的窥探读取操作的请求器)。[0197]图9c是多级高速缓存系统中的cmo(高速缓存维持操作)读取操作的实例过程的流程图。cmo读取操作是高速缓存一致性操作的实例。过程900c是作为cpu产生的cmo操作启动的实例过程,例如cmo操作。过程900c在操作910c处启动。[0198]在操作910c处,由cpu产生cmo操作且经由se将其发送到l2控制器(例如,umc430)。cmo的产生在第10,599,433号美国专利中进行描述,所述专利的全部内容且出于所有目的而以引用的方式并入本文中。在实例中,cmo操作继承在cpu上运行的过程的安全级(例如,其中安全代码是响应于经继承安全级而确定)。cpu的安全过程产生cmo以包含经设置以指示通过其产生cmo的安全过程的目标地址及安全代码。cmo操作可用于从高速缓存逐出或移除不常用的行,其中经选择以被逐出或移除的行是与产生cmo的过程的安全代码匹配的行。[0199]在操作920c处,由l2控制器(例如,umc430)接收由cpu产生的窥探操作。l2控制器经布置以确定接收到的cmo操作是否引起l2影子标记命中及安全命中(例如,安全性代码匹配)两者。l2影子标记命中响应于接收到的cmo操作的cmo地址与在l2影子主高速缓存或l2影子牺牲高速缓存的l2影子标记中的任一者中标记的地址匹配而发生。安全命中是响应于确定接收到的cmo操作的安全代码与存储在由接收到的cmo操作命中的高速缓存行中的安全代码之间的匹配而发生。响应于接收到的cmo操作引起l2影子标记命中及安全命中两者的肯定比较的确定,过程900c在操作930c处继续。响应于确定接收到的cmo操作不会引起l2影子标记命中及安全命中两者,过程900c在操作922c处继续。[0200]在操作922c处,l2控制器响应于接收到的cmo读取操作而本地读取牺牲高速缓存行。来自牺牲的数据被封装为窥探数据以作为窥探请求转发到以发出到下一级高速缓存或端点(例如,在操作950c中),且将本地产生的读取命令发送到存储器端点。[0201]在操作930c处,l2控制器响应于接收到的cmo读取操作引起l2影子标记命中及安全命中两者的确定而本地产生窥探读取请求。l2控制器将窥探读取请求发送到更低级高速缓存(例如,l1d),使得(例如)l2高速缓存可与更低级高速缓存保持一致。[0202]在操作940c处,l2控制器确定窥探响应(例如,其由更低级高速缓存控制器响应于由l2控制器发送的窥探读取请求而产生且发送)是否指示被窥探的高速缓存行含有有效数据。响应于窥探响应包含有效数据的确定,过程900c在操作950c处继续。响应于窥探响应不包含有效数据的确定,过程900c在操作922c处继续。[0203]在操作950c处,l2控制器将由窥探响应(例如,来自操作922c或操作940c)所包含的数据返回(例如,转发)到读取主控(例如,产生且发送由l2控制器接收的cmo操作的请求器)。[0204]图10是多级高速缓存系统中的dma写入操作的实例过程的流程图。过程1000是由dma控制器启动的实例过程,例如一致性dma写入操作。过程1000在操作1010处启动。[0205]在操作1010处,由dma控制器产生dma写入操作且将其发送到l2控制器(例如,umc430)。在实例中,dma写入操作经由msmc461发送到l2控制器。[0206]在操作1020处,由l2控制器(例如,umc430)接收经产生dma写入操作。l2控制器经布置以确定接收到的dma写入操作是否引起l2影子标记命中及安全命中(例如,安全代码匹配)。l2影子标记命中响应于接收到的dma写入操作的dma写入地址与在l2影子主高速缓存或l2影子牺牲高速缓存的l2影子标记中的任一者中标记的地址匹配而发生。安全命中响应于确定接收到的dma写入操作的安全代码与存储在由接收到的cmo操作命中的高速缓存行中的安全代码之间的匹配而发生。响应于接收到的dma写入操作引起l2影子标记命中及安全命中两者的肯定比较的确定,过程1000在操作1030处继续。响应于接收到的dma写入操作不会引起l2影子标记命中及安全命中两者的确定,过程1000在操作1022处继续。[0207]在操作1022处,l2控制器响应于(例如,为了实现)接收到的dma写入操作而本地产生写入命令且将本地产生的dma写入命令发送到存储器端点。所述端点可为l2sram存储器、l3高速缓存、外部存储器或任何其它端点。[0208]在操作1030处,l2控制器响应于接收到的dma写入操作引起l2影子标记命中的确定而本地产生窥探读取请求。l2控制器将窥探读取请求发送到更低级高速缓存(例如,l1d),使得更低级高速缓存的窥探请求高速缓存行(例如,l1d被作废)。[0209]在操作1040处,l2控制器确定窥探响应(例如,其由更低级高速缓存控制器响应于l2控制器发送的窥探读取请求而产生且发送)是否指示被窥探的高速缓存行含有脏(例如,经修改)数据。响应于窥探响应包含脏数据的确定,过程1000在操作1050处继续。响应于窥探响应不包含脏数据的确定,过程1000在操作1022处继续。[0210]在操作1050处,l2控制器将dma写入数据合并在由窥探响应所包含的数据上且将经合并响应写入到所述端点。[0211]图11是多级高速缓存系统中的读取分配操作的实例过程的流程图。过程1100是可响应于从更低级控制器(例如,l1d)接收的读取分配操作而启动的实例过程,例如读取分配操作。过程1100在操作1110处启动。[0212]在操作1110处,由更低级数据存储器控制器(例如,dmc361)将读取分配操作请求发送到l2控制器(例如,umc430)。在实例中,所述请求可通过将信号calloc设置为高来发信号。[0213]在操作1120处,将接收到的分配读取信号(caddress)的地址及接收到的分配读取信号的安全代码写入(及标记)到l2影子主高速缓存(例如,使得l2影子主高速缓存经布置以阴影化l1d主高速缓存)。caddress及csecure位唯一地指示接收到的分配读取信号所针对的高速缓存行。[0214]在操作1130处,l2控制器确定l2影子主高速缓存中的经指示高速缓存行的有效位(cmain_valid)是否被设置。响应于有效位被设置的确定,过程1100在操作1140处继续。响应于有效位未被设置的确定,过程1100在操作1150处继续。[0215]在操作1140处,l2控制器将cmain_address、cmain_secure及cmain_mesi写入到所述影子牺牲高速缓存(例如,l2影子牺牲高速缓存标记620)。[0216]在操作1150处,l2控制器确定l2影子牺牲高速缓存中的经指示高速缓存行的有效位(cvictim_valid)是否被设置。响应于有效位被设置的确定,过程1100在操作1160处继续。响应于有效位未被设置的确定,过程1100在操作1190处继续(例如,其中过程1100终止)。[0217]在操作1160处,l2控制器评估牺牲高速缓存的经指示高速缓存行的mesi字段(cvictim_mesi)以确定经指示高速缓存行的mesi字段是无效的、共享的或排他的还是修改的。响应于经指示高速缓存行是无效的确定,过程1100在操作1190处继续。响应于经指示高速缓存行是共享或排他的确定,过程1100在操作1170处继续。响应于确定如果经指示高速缓存行是经修改的确定,过程1100在操作1170处继续。[0218]在操作1170处(针对经确定共享或排他状态),l2控制器从已存储与接收到的分配读取信号的caddress及csecure值匹配的caddress及csecure值的影子牺牲高速缓存移除高速缓存行条目。在移除匹配的高速缓存行条目后,过程1100在操作1190处继续(例如,其中可终止过程1100)。[0219]在操作1180处(针对经确定修改状态),l2控制器将高速缓存行条目留存在已存储与接收到的分配读取信号的caddress及csecure值匹配的caddress及csecure值的影子牺牲高速缓存中。匹配的高速缓存行条目至少经留存在影子牺牲高速缓存中直到从更低级(例如,l1d)高速缓存接收后续牺牲高速缓存事务。过程1100在操作1190处继续(例如,其中可终止过程1100)。[0220]在操作1190处,过程1100被视为“完成”,且l2控制器可继续处理后续高速缓存请求。[0221]图12是多级高速缓存系统中的牺牲写入操作的实例过程的流程图。过程1200是可响应于从更低级控制器(例如,l1d)接收的牺牲写入操作而启动的实例过程,例如牺牲写入操作。过程1200在操作1210处启动。[0222]在操作1210处,由更低级数据存储器控制器(例如,dmc361)将牺牲写入操作请求发送到l2控制器(例如,umc430)。[0223]在操作1220处,l2控制器确定影子牺牲高速缓存中的高速缓存行条目的经存储caddress及csecure值是否与接收到的分配读取信号的caddress及csecure值匹配。响应于匹配的确定(是),过程1100在操作1230处继续。响应于不匹配的确定(否),过程1100在操作1140处继续。[0224]在操作1230处,l2控制器根据需要更新影子牺牲高速缓存以作废由接收到的牺牲写入操作指示的高速缓存行以维持一致性及/或安全性。例如,当l1控制器将牺牲发送到l2时,l1控制器正在从其高速缓存(例如,l1主或牺牲高速缓存)移除经修改行。随着经修改行从l1高速缓存移除,l1控制器更新l1标记以指示经修改行已作为条目从l1tagram移除。因为l2控制器内的影子tagram(用于阴影化l1主及牺牲高速缓存两者)跟踪l1tagram,所以所述条目也从l2影子tagram(主及牺牲)移除以镜像从l1tagram的删除。l2控制器对未来事务(例如mmu读取)的延时减少,这是因为l2控制器可基于本地保存l2控制器中的影子标记来产生对这个行的窥探(或不产生窥探)。[0225]在操作1240处,用牺牲数据(例如,来自与接收到的牺牲写入操作的caddress及csecure值匹配的牺牲高速缓存行的牺牲数据)更新端点存储器.[0226]在所描述实施例中修改是可能的,且在权利要求书的范围内,其它实施例也是可能的。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献