高速缓存器中的零时延预提取的制作方法

文档序号:20921616发布日期:2020-05-29 14:13阅读:264来源:国知局
高速缓存器中的零时延预提取的制作方法
本发明大体上涉及数字数据处理且更具体地说,涉及对高速缓存器的预提取。
背景技术
:常规数字数据处理器以非常快的时钟操作,且通常执行指令的速度比从通用存储器中召回指令的速度快。对将指令提供到数字数据处理器的问题的已知解决方案称为指令高速缓存。数字数据处理系统以物理和计算接近性对需要指令控制的数据要素提供小的快速存储器。此小的快速存储器存储所需指令的子集。数字数据处理器常常循环地工作。如果指令循环的全部或大部分存储在高速缓存器中,那么数字数据处理器可保持以比从通用存储器召回要快的速率用指令馈给。由于这些高速缓存方案,在实际需要之前确定将使用何指令是有帮助的。这类预提取使得高速缓存器能够存储指令以供在需要时召回。许多预提取技术存在一些问题。预提取请求消耗资源来确定高速缓存器是否已存储待预提取的数据。因此,预提取请求的优先级通常比按需请求的优先级低。技术实现要素:实例实施例涉及数字数据处理设备中的高速缓存系统。所述数字数据处理设备包含:中央处理单元核心;一级指令高速缓存器;和二级高速缓存器。所述中央处理单元核心响应于程序指令而执行数据处理操作。所述中央处理单元核心在需要时经由请求地址发出对额外程序指令的指令请求。所述一级指令高速缓存器将程序指令子集暂时存储于一级高速缓存行中。当所述中央处理单元请求请求地址处的指令时,所述一级指令高速缓存器确定其是否将指令存储于所述请求地址处。如果是,那么所述一级指令高速缓存器供应请求的程序指令。如果否,那么所述一级指令高速缓存器将所述请求地址供应到二级高速缓存器以用于类似处置。二级高速缓存器中的高速缓存行的大小是一级指令高速缓存器中的高速缓存行的大小的两倍。在所述一级指令高速缓存器中的未命中致使二级高速缓存行的上半部中的命中后,所述二级高速缓存器即刻将上半部层级高速缓存行供应到所述一级指令高速缓存器。在后续二级高速缓存存储器循环上,所述二级高速缓存器将所述高速缓存行的下半部供应到所述一级指令高速缓存器。在这些情形下,所述二级高速缓存器包含用于存储此数据的寄存器。此高速缓存技术在这些情形下充当下半部二级高速缓存行的预提取。此预提取与普通预提取相比采用较少资源。附图说明图1说明根据一个实施例的双标量/向量数据路径处理器。图2说明图1中所说明的双标量/向量数据路径处理器中的寄存器和功能单元。图3说明全局标量寄存器组。图4说明由算术功能单元共享的局部标量寄存器组。图5说明由乘法功能单元共享的局部标量寄存器组。图6说明由加载/存储单元共享的局部标量寄存器组。图7说明全局向量寄存器组。图8说明预测寄存器组。图9说明由算术功能单元共享的局部向量寄存器组。图10说明由乘法和相关功能单元共享的局部向量寄存器组。图11说明根据优选实施例的中央处理单元的管线阶段。图12说明单个提取包的十六个指令。图13说明供实例实施例使用的指令的指令译码的一实例。图14说明条件码扩展时隙0的位译码。图15说明条件码扩展时隙1的位译码。图16说明常量扩展时隙0的位译码。图17是说明常量扩展的部分框图。图18说明根据实例实施例的用于simd操作的进位控制。图19说明中央处理单元核心与指令高速缓存和辅助支持结构的组合的一个视图。图20说明中央处理单元核心与指令高速缓存和辅助支持结构的组合的第二视图。图21说明如何剖析提取地址的位以供处置。图22说明用于二级组合式指令/数据高速缓存的控制器的相关细节。图23是说明根据实例实施例的一个方面的操作的流程图。图24是说明根据实例实施例的另一方面的操作的流程图。具体实施方式图1说明根据优选实施例的双标量/向量数据路径处理器。处理器100包含单独的一级指令高速缓存器(l1i)121和一级数据高速缓存器(l1d)123。处理器100包含保存指令和数据两者的二级组合式指令/数据高速缓存器(l2)130。图1说明一级指令高速缓存器121与二级组合式指令/数据高速缓存器130之间的连接(总线142)。图1说明一级数据高速缓存器123与二级组合式指令/数据高速缓存器130之间的连接(总线145)。在处理器100的优选实施例中,二级组合式指令/数据高速缓存130存储指令以备份一级指令高速缓存器121且存储数据以备份一级数据高速缓存器123。在优选实施例中,二级组合式指令/数据高速缓存130以图1中未说明的常规方式另外连接到更高级高速缓存器和/或主存储器。在优选实施例中,中央处理单元核心110、一级指令高速缓存器121、一级数据高速缓存器123和二级组合式指令/数据高速缓存器130形成于单个集成电路上。此信号集成电路任选地包含其它电路。中央处理单元核心110从如由指令提取单元111控制的一级指令高速缓存器121提取指令。指令提取单元111确定待执行的下一些指令并且召回这类指令的提取包大小的集合。下文进一步详述提取包的本质和大小。常规地,在高速缓存命中(在这些指令存储在一级指令高速缓存器121中的情况下)后,即刻直接从一级指令高速缓存器121提取指令。在高速缓存未命中(指定的指令提取包不存储于一级指令高速缓存器121中)后,在二级组合式指令/数据高速缓存器130中搜查这些指令。在优选实施例中,一级指令高速缓存器121中的高速缓存行的大小等于提取包的大小。这些指令的存储器方位为二级组合式指令/数据高速缓存器130中的命中或未命中。命中由二级组合式指令/数据高速缓存器130服务。未命中由更高级高速缓存器(未说明)或由主存储器(未说明)服务。常规地,所请求的指令可同时供应给一级指令高速缓存器121和中央处理单元核心110两者以加速使用。在优选实施例中,中央处理单元核心110包含用以执行指令指定的数据处理任务的多个功能单元。指令调度单元112确定每一提取的指令的目标功能单元。在优选实施例中,中央处理单元110作为能够同时操作对应功能单元中的多个指令的超长指令字(vliw)处理器进行操作。优选地,编译器组织执行包中的一起执行的指令。指令调度单元112将每一指令引导到其目标功能单元。指派给指令的功能单元完全由通过编译器产生的指令指定。中央处理单元核心110的硬件不参与此功能单元指派。在优选实施例中,指令调度单元112可并行地操作多个指令。这类并行指令的数目由执行包的大小设置。这将在下文进一步详述。指令调度单元112的调度任务的一个部分是确定指令是在标量数据路径侧a115还是向量数据路径侧b116中的功能单元上执行。每一指令内被称作s位的指令位确定指令控制哪个数据路径。这将在下文进一步详述。指令解码单元113解码当前执行包中的每一指令。解码包含识别执行指令的功能单元、识别可能的寄存器组当中用于为对应数据处理操作供应数据的寄存器,以及识别对应数据处理操作的结果的寄存器目的地。如下文进一步描述,指令可包含常量字段而非一个寄存器编号操作数字段。此解码的结果是用于控制目标功能单元以对指定数据执行由对应指令指定的数据处理操作的信号。中央处理单元核心110包含控制寄存器114。控制寄存器114以与实例实施例无关的方式存储用于控制标量数据路径侧a115和向量数据路径侧b116中的功能单元的信息。此信息可以是模式信息等。将来自指令解码113的经解码指令和存储于控制寄存器114中的信息供应到标量数据路径侧a115和向量数据路径侧b116。因此,标量数据路径侧a115和向量数据路径侧b116内的功能单元对指令指定的数据执行指令指定的数据处理操作且将结果存储在一或多个指令指定的数据寄存器中。标量数据路径侧a115和向量数据路径侧b116中的每一哥包含优选地并行操作的多个功能单元。这些将结合图2在下文进一步详述。标量数据路径侧a115与向量数据路径侧b116之间存在准许数据交换的数据路径117。中央处理单元核心110包含其它不基于指令的模块。仿真单元118响应于指令而准许确定中央处理单元核心110的机器状态。此能力通常将用于算法开发。中断/异常单元119使中央处理单元核心110能够对外部、非同步事件(中断)作出响应且对试图执行不当操作(异常)作出响应。中央处理单元核心110包含流式传输引擎125。流式传输引擎125将两个数据流从通常高速缓存于二级组合式高速缓存器130中的预先确定的地址供应到向量数据路径侧b的寄存器组。这将受控数据移动从存储器(如高速缓存于二级组合式指令/数据高速缓存器130中)直接提供到功能单元操作数输入。这在下文进一步详述。图1说明各个部分之间的总线的实例数据宽度。一级指令高速缓存器121经由总线141将指令供应到指令提取单元111。总线141优选地为512位总线。总线141单向地从一级指令高速缓存器121到中央处理单元核心110。二级组合式指令/数据高速缓存130经由总线142将指令供应到一级指令高速缓存121。总线142优选地为512位总线。总线142单向地从二级组合式指令/数据高速缓存器130到一级指令高速缓存器121。一级数据高速缓存器123经由总线143与标量数据路径侧a115中的寄存器组交换数据。总线143优选地为64位总线。一级数据高速缓存器123经由总线144与向量数据路径侧b116中的寄存器组交换数据。总线144优选地为512位总线。总线143和144说明为双向的,支持中央处理单元核心110数据读取和数据写入两者。一级数据高速缓存器123经由总线145与二级组合式指令/数据高速缓存器130交换数据。总线145优选地为512位总线。总线145说明为双向的,支持用于中央处理单元核心110数据读取和数据写入两者的高速缓存服务。常规地,在高速缓存命中(在所请求的数据存储于一级数据高速缓存器123中的情况下)后即刻直接从一级数据高速缓存器123提取cpu数据请求。在高速缓存未命中(指定数据不存储于一级数据高速缓存器123中)后,即刻在二级组合式指令/数据高速缓存器130中搜查此数据。所请求的此数据的存储器方位是二级组合式指令/数据高速缓存器130中的击中或未命中。命中由二级组合式指令/数据高速缓存器130服务。未命中由另一级高速缓存器(未说明)或由主存储器(未说明)服务。常规地,所请求的指令可同时供应给一级数据高速缓存器123和中央处理单元核心110两者以加速使用。二级组合式指令/数据高速缓存器130经由总线146将第一数据流的数据供应到流式传输引擎125。总线146优选地为512位总线。流式传输引擎125经由总线147将此第一数据流的数据供应到向量数据路径侧b116的功能单元。总线147优选地为512位总线。二级组合式指令/数据高速缓存器130经由总线148将第二数据流的数据供应到流式传输引擎125。总线148优选地为512位总线。流式传输引擎125经由总线149将此第二数据流的数据供应到向量数据路径侧b116的功能单元。总线149优选地为512位总线。根据本发明的优选实施例,总线146、147、148和149说明为单向地从二级组合式指令/数据高速缓存器130到流式传输引擎125和到向量数据路径侧b116。在高速缓存命中(在所请求的数据存储于二级组合式指令/数据高速缓存器130中的情况下)后即刻直接从二级组合式指令/数据高速缓存器130提取流式传输引擎数据请求。在高速缓存未命中(指定数据不存储于二级组合式指令/数据高速缓存器130中)后,即刻从另一级高速缓存器(未说明)或从主存储器(未说明)搜查此数据。在一些实施例中,对于一级数据高速缓存器123来说高速缓存不存储于二级组合式指令/数据高速缓存器130中的数据在技术上是可行的。如果支持这类操作,那么在流式传输引擎数据请求即二级组合式指令/数据高速缓存器130中的未命中后,二级组合式指令/数据高速缓存器130应即刻为流引擎所请求的数据而监听一级数据高速缓存器123。如果一级数据高速缓存器123存储此数据,那么其监听响应将包含数据,接着供应所述数据以服务流式传输引擎请求。如果一级数据高速缓存器123不存储此数据,那么其监听响应将指示此且二级组合式指令/数据高速缓存器130必须从另一级高速缓存器(未说明)或从主存储器(未说明)服务此流式传输引擎请求。在优选实施例中,根据题为“包含高速缓存器和直接可编址静态随机存取存储器的统一存储器系统架构(unifiedmemorysystemarchitectureincludingcacheanddirectlyaddressablestaticrandomaccessmemory)”的第6,606,686号美国专利,一级数据高速缓存器123和二级组合式指令/数据高速缓存器130两者均可配置为选定量的高速缓存器或直接可编址存储器。图2说明标量数据路径侧a115和向量数据路径侧b116内的功能单元和寄存器组的其它细节。标量数据路径侧a115包含全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213和d1/d2局部寄存器组214。标量数据路径侧a115包含l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226。向量数据路径侧b116包含全局标量寄存器组231、l2/s2局部寄存器组232、m2/n2/c局部寄存器组233和预测寄存器组234。向量数据路径侧b116包含l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246。存在对哪些功能单元可从哪些寄存器组读取或对哪些寄存器组写入的限制。这些将在下文详述。标量数据路径侧a115包含l1单元221。l1单元221通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或l1/s1局部寄存器组212中的指令指定的寄存器召回。l1单元221优选地执行以下指令选择的操作:64位加法/减法操作;32位最小/最大操作;8位单指令多数据(simd)指令,例如绝对值、最小值和最大值确定的总和;循环最小/最大操作;和寄存器组之间的各种移动操作。结果可写入到全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213或d1/d2局部寄存器组214的指令指定的寄存器中。标量数据路径侧a115包含s1单元222。s1单元222通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或l1/s1局部寄存器组212中的指令指定的寄存器召回。s1单元222优选地与l1单元221执行相同类型的操作。任选地,由l1单元221和s1单元222支持的数据处理操作之间可能存在微小变化。结果可写入到全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213或d1/d2局部寄存器组214的指令指定的寄存器中。标量数据路径侧a115包含m1单元223。m1单元223通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或m1/n1局部寄存器组213中的指令指定的寄存器召回。m1单元223优选地执行以下指令选择的操作:8位乘法操作;复数内积操作;32位的位计数操作;复共轭乘法操作;和逐位逻辑操作、移动、加法和减法。结果可写入到全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213或d1/d2局部寄存器组214的指令指定的寄存器中。标量数据路径侧a115包含n1单元224。n1单元224通常接受两个64位操作数且产生一个64位结果。两个操作数各自从全局标量寄存器组211或m1/n1局部寄存器组213中的指令指定的寄存器召回。n1单元224优选地与m1单元223执行相同类型的操作。可能存在一起使用m1单元223和n1单元224两者的某些双重操作(被称作双发布指令)。结果可写入到全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213或d1/d2局部寄存器组214的指令指定的寄存器中。标量数据路径侧a115包含d1单元225和d2单元226。d1单元225和d2单元226通常各自接受两个64位操作数且各自产生一个64位结果。d1单元225和d2单元226通常执行地址计算以及对应的加载和存储操作。d1单元225用于64位的标量加载和存储。d2单元226用于512位的向量加载和存储。d1单元225和d2单元226还优选地执行:对加载和存储数据的调换、打包和解包;64位simd算术操作;和64位逐位逻辑操作。d1/d2局部寄存器组214通常将存储在地址计算中用于对应加载和存储的基地址和偏移地址。两个操作数各自从全局标量寄存器组211或d1/d2局部寄存器组214中的指令指定的寄存器召回。所计算的结果可写入到全局标量寄存器组211、l1/s1局部寄存器组212、m1/n1局部寄存器组213或d1/d2局部寄存器组214的指令指定的寄存器中。向量数据路径侧b116包含l2单元241。l2单元221通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231、l2/s2局部寄存器组232或预测寄存器组234中的指令指定的寄存器召回。除了较宽512位数据以外,l2单元241优选地执行类似于l1单元221的指令。结果可写入到全局向量寄存器组231、l2/s2局部寄存器组222、m2/n2/c局部寄存器组233或预测寄存器组234的指令指定的寄存器中。向量数据路径侧b116包含s2单元242。s2单元242通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231、l2/s2局部寄存器组232或预测寄存器组234中的指令指定的寄存器召回。除了较宽512位数据以外,s2单元242优选地执行类似于s1单元222的指令。结果可写入到全局向量寄存器组231、l2/s2局部寄存器组222、m2/n2/c局部寄存器组233或预测寄存器组234的指令指定的寄存器中。向量数据路径侧b116包含m2单元243。m2单元243通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或m2/n2/c局部寄存器组233中的指令指定的寄存器召回。除了较宽512位数据以外,m2单元243优选地执行类似于m1单元222的指令。结果可写入到全局向量寄存器组231、l2/s2局部寄存器组232或m2/n2/c局部寄存器组233的指令指定的寄存器中。向量数据路径侧b116包含n2单元244。n2单元244通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或m2/n2/c局部寄存器组233中的指令指定的寄存器召回。n2单元244优选地与m2单元243执行相同类型的操作。可能存在一起使用m2单元243和n2单元244两者的某些双重操作(被称作双发布指令)。结果可写入到全局向量寄存器组231、l2/s2局部寄存器组232或m2/n2/c局部寄存器组233的指令指定的寄存器中。向量数据路径侧b116包含c单元245。c单元245通常接受两个512位操作数且产生一个512位结果。两个操作数各自从全局向量寄存器组231或m2/n2/c局部寄存器组233中的指令指定的寄存器召回。c单元245优选地执行:“搜寻(rake)”和“搜索(search)”指令;多达512个2位pn*8位乘以i/q复数乘以每时钟循环;8位和16位绝对差和(sad)计算,每时钟循环多达512个sad;水平相加和水平最小/最大指令;和向量排列指令。c单元245还包含用于控制c单元245指令的某些操作的4个向量控制寄存器(cucr0到cucr3)。控制寄存器cucr0到cucr3在某些c单元245操作中用作操作数。控制寄存器cucr0到cucr3优选地使用:在对通用排列指令(vperm)的控制中;和作为simd多重点积操作(dotpm)和simd多重绝对差和(sad)操作的掩模。控制寄存器cucr0优选地用于存储用于伽罗瓦域乘法操作(gfmpy)的多项式。控制寄存器cucr1优选地用于存储伽罗瓦域多项式产生器函数。向量数据路径侧b116包含p单元246。p单元246对局部预测寄存器组234的寄存器执行基本逻辑操作。p单元246直接进行从预测寄存器组234的读取和对预测寄存器组234的写入。这些操作包含and、andn、or、xor、nor、bitr、neg、set、bitcnt、rmbd、位抽取(bitdecimate)和扩展(expand)。p单元246的常见预期使用包含操纵用于控制另一simd向量操作的simd向量比较结果。图3说明全局标量寄存器组211。存在命名为a0到a15的16个独立64位宽标量寄存器。全局标量寄存器组211的每一寄存器可读取或写入为64位标量数据。所有标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可读取或写入到全局标量寄存器组211。全局标量寄存器组211可读取为32位或64位且可能仅写入为64位。执行的指令确定读取数据大小。在将在下文详述的限制下,向量数据路径侧b116功能单元(l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246)可经由交叉路径117从全局标量寄存器组211读取。图4说明d1/d2局部寄存器组214。存在命名为d0到d16的16个独立64位宽标量寄存器。d1/d2局部寄存器组214的每一寄存器可读取或写入为64位标量数据。所有标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可写入到全局标量寄存器组211。仅d1单元225和d2单元226可从d1/d1局部标量寄存器组214读取。预期存储在d1/d2局部标量寄存器组214中的数据将包含在地址计算中使用的基地址和偏移地址。图5说明l1/s1局部寄存器组212。图5中说明的实施例具有命名为al0到al7的8个独立64位宽标量寄存器。优选指令译码(参见图13)准许l1/s1局部寄存器组212包含多达16个寄存器。图5的实施例实施仅8个寄存器以减小电路大小且降低复杂度。l1/s1局部寄存器组212的每一寄存器可读取或写入为64位标量数据。所有标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可写入到l1/s1局部标量寄存器组212中。仅l1单元221和s1单元222可从l1/s1局部标量寄存器组212读取。图6说明m1/n1局部寄存器组213。图6中说明的实施例具有命名为am0到am7的8个独立64位宽标量寄存器。优选指令译码(参见图13)准许m1/n1局部寄存器组213包含多达16个寄存器。图6的实施例实施仅8个寄存器以减小电路大小且降低复杂度。m1/n1局部寄存器组213的每一寄存器可读取或写入为64位标量数据。所有标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可写入到m1/n1局部标量寄存器组213中。仅m1单元223和n1单元224可从m1/n1局部标量寄存器组213读取。图7说明全局向量寄存器组231。存在16个独立512位宽向量寄存器。全局向量寄存器组231的命名为b0到b15的每一寄存器可读取或写入为64位标量数据。全局向量寄存器组231的命名为vb0到vb15的每一寄存器可读取或写入为512位向量数据。指令类型确定数据大小。所有向量数据路径侧b116功能单元(l2单元241、s2单元242、m3单元243、n2单元244、c单元245和p单元246)可读取或写入到全局标量寄存器组231中。在将在下文详述的限制下,标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可经由交叉路径117从全局向量寄存器组231读取。图8说明p局部寄存器组234。存在命名为p0到p15的8个独立64位宽寄存器。p局部寄存器组234的每一寄存器可读取或写入为64位标量数据。向量数据路径侧b116功能单元l2单元241、s2单元242、c单元244和p单元246可写入到p局部寄存器组234中。仅l2单元241、s2单元242和p单元246可从p局部标量寄存器组234读取。p局部寄存器组234的常见预期使用包含:写入来自l2单元241、s2单元242或c单元244的一个位simd向量比较结果;通过p单元246操纵simd向量比较结果;和将操纵的结果用于控制另一simd向量操作。图9说明l2/s2局部寄存器组232。图9中所说明的实施例具有8个独立512位宽向量寄存器。优选指令译码(参见图13)准许l2/s2局部寄存器组232包含至多16个寄存器。图9的实施例实施仅8个寄存器以减小电路大小且降低复杂度。l2/s2向量寄存器组232的命名为bl0到bl7的每一寄存器可读取或写入为64位标量数据。l2/s2局部向量寄存器组232的命名为vbl0到vbl7的每一寄存器可读取或写入为512位向量数据。指令类型确定数据大小。所有向量数据路径侧b116功能单元(l2单元241、s2单元242、m2单元233、n2单元24、c单元245和p单元246)可写入到l2/s2局部向量寄存器组232中。仅l2单元241和s2单元242可从l2/s2局部向量寄存器组232读取。图10说明m2/n2/c局部寄存器组233。图10中所说明的实施例具有8个独立512位宽向量寄存器。优选指令译码(参见图13)准许l1/s1局部寄存器组212包含多达16个寄存器。图10的实施例实施仅8个寄存器以减小电路大小且降低复杂度。m2/n2/c局部向量寄存器组233的命名为bm0到bm7的每一寄存器可读取或写入为64位标量数据。m2/n2/c局部向量寄存器组233的命名为vbm0到vbm7的每一寄存器可读取或写入为512位向量数据。所有向量数据路径侧b116功能单元(l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246)可写入到m2/n2/c局部向量寄存器组233中。仅m2单元233、n2单元244和c单元245可从m2/n2/c局部向量寄存器组233读取。可由一侧的所有功能单元存取的全局寄存器组和可由一侧的功能单元中的仅一些存取的局部寄存器组的设置是一种设计选择。实例实施例可使用对应于所公开的全局寄存器组的仅一种类型的寄存器组加以实践。交叉路径117准许标量数据路径侧a115与向量数据路径侧b116之间的有限数据交换。在每一操作循环期间,一个64位数据字可从全局标量寄存器组a211召回,以供向量数据路径侧b116的一或多个功能单元使用为操作数,且一个64位数据字可从全局向量寄存器组231召回,以供标量数据路径侧a115的一或多个功能单元使用为操作数。任何标量数据路径侧a115功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可从全局向量寄存器组231读取64位操作数。此64位操作数是全局向量寄存器组232的经存取寄存器中的512位数据的最低有效位。多个标量数据路径侧a115功能单元可使用与同一操作循环期间的操作数相同的64位交叉路径数据。然而,在任何单个操作循环中,仅一个64位操作数从向量数据路径侧b116传送到标量数据路径侧a115。任何向量数据路径侧b116功能单元(l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246)可从全局标量寄存器组211读取64位操作数。如果对应指令为标量指令,那么交叉路径操作数数据被视为任何其它64位操作数。如果对应指令为向量指令,那么操作数的上部448位经填零。多个向量数据路径侧b116功能单元可使用与同一操作循环期间的操作数相同的64位交叉路径数据。在任何单个操作循环中,仅一个64位操作数从标量数据路径侧a115传送到向量数据路径侧b116。在某些受约束情况下,流式传输引擎125传送数据。流式传输引擎125控制两个数据流。流由特定类型的一系列元素组成。对流进行操作的程序顺序地读取数据,随后对每一元素进行操作。每个流具有以下基本性质。流数据具有界限分明的开始和结束时间。流数据在整个流中具有固定元素大小和类型。流数据具有固定元素顺序。因此,程序不能在所述流内随机地搜查。流数据在激活时为只读的。程序在从流读取的同时不能写入到所述流中。一旦流打开,流式传输引擎125便:计算地址;从二级组合式指令/数据高速缓存器130提取定义的数据类型(其可能需要来自较高层级存储器的高速缓存服务);执行数据类型操纵,例如零扩展、符号扩展、例如矩阵变位等数据元素排序/调换;以及将数据直接递送到中央处理单元核心110内的经编程数据寄存器组。流式传输引擎125因此适用于良性数据的实时数字滤波操作。流式传输引擎125免于来自实现其它处理功能的对应cpu的这些存储器提取任务。流式传输引擎125提供以下益处。流式传输引擎125准许多维存储器存取。流式传输引擎125将可用带宽增加到功能单元。流式传输引擎125最小化由于流缓冲器绕过一级数据高速缓存器123的高速缓存未命中暂停的数目。流式传输引擎125减少所需的标量操作的数目以维持循环。流式传输引擎125管理地址指针。流式传输引擎125针对其它计算处置自动地释放地址产生指令时隙以及d1单元224和d2单元226的地址产生。中央处理单元核心110对指令管线进行操作。在下文进一步描述的固定长度的指令包中提取指令。所有指令要求用于提取和解码的相同数目个管线阶段,但要求不同数目的执行阶段。图11说明以下管线阶段:程序提取阶段1110、调度和解码阶段1110以及执行阶段1130。程序提取阶段1110对于所有指令包含三个级。调度和解码阶段对于所有指令包含三个级。执行阶段1130包含依赖于指令的一个到四个级。提取阶段1110包含程序地址产生级1111(pg)、程序存取级1112(pa)和程序接收级1113(pr)。在程序地址产生级1111(pg)期间,程序地址产生于cpu中,且读取请求发送到一级指令高速缓存器121的存储器控制器。在程序存取级1112(pa)期间,一级指令高速缓存器121处理请求,存取其存储器中的数据,并且将提取包发送到cpu边界。在程序接收级1113(pr)期间,cpu寄存提取包。指令始终一次提取十六个32位宽时隙,构成提取包。图12说明单个提取包的16个指令1201到1216。提取包在512位(16字)边界上对准。优选实施例使用固定的32位指令长度。固定长度指令由于一些原因是有利的。固定长度指令易于实现解码器对准。恰当对准的指令提取可将多个指令加载到并行指令解码器中。这类恰当对准的指令提取在存储于与固定指令包提取耦合的存储器(在512位边界上对准的提取包)中时可通过预先确定的指令对准实现。对准指令提取准许并行解码器对设定指令大小的提取位的操作。可变长度指令在其可经解码之前要求定位每一指令边界的初始步骤。固定长度指令集通常准许指令字段的更规则布局。这简化每一解码器的构造,其对于广发布vliw中央处理器为一优点。个别指令的执行部分地受每一指令中的p位控制。此p位优选地为32位宽时隙的位0。p位确定指令是否与下一指令并行执行。指令从较低地址到较高地址经扫描。如果指令的p位为1,那么下一指令(较高存储器地址)与(同一循环中的)所述指令并行地执行。如果指令的p位为0,那么下一指令在所述指令之后的循环中执行。中央处理单元核心110和一级指令高速缓存器121管线彼此解除耦合。取决于外部环境,例如是一级指令高速缓存器121中存在命中还是二级组合式指令/数据高速缓存器130中存在命中,从一级指令高速缓存器121传回的提取包可耗费不同时钟循环数。因此,程序存取级1112(pa)可耗费若干时钟循环而非如在其它级中的1个时钟循环。并行执行的指令构成执行包。在优选实施例中,执行包可含有多达十六个指令。执行包中无两个指令可使用相同功能单元。时隙为五种类型中的一种:1)在中央处理单元核心110的功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225、d2单元226、l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246)中的一个上执行的自含式指令;2)无单位指令,例如无操作(nop)指令或多重nop指令;3)分支指令;4)常量字段扩展;和5)条件码扩展。将在下文进一步描述这些时隙类型中的一些。调度和解码阶段1110包含指令调度到适当执行单元级1121(ds)、指令预解码级1122(d1);和指令解码、操作数读取级1222(d2)。在指令调度到适当执行单元级1121(ds)期间,提取包分裂成执行包且指派给适当功能单元。在指令预解码级1122(d1)期间,源寄存器、目的地寄存器和相关联路径经解码以用于执行功能单元中的指令。在指令解码操作数读取级1222(d2)期间,更详细地进行单元解码,以及从寄存器组读取操作数。执行阶段1130包含执行级1131到1135(e1到e5)。不同类型的指令需要不同数目的这些级以完成其执行。管线的这些级在理解cpu循环边界处的装置状态中起重要作用。在执行1级1131(e1)期间,评估指令条件且对操作数进行操作。如图11中所说明,执行1级1131可从流缓冲器1141和示意性地示出为1142的寄存器组中的一个接收操作数。对于加载和存储指令,执行地址产生且将地址修改写入到寄存器组中。对于分支指令,pg阶段中的分支提取包受影响。如图11中所说明,加载和存储指令存取存储器在本文中示意性地示出为存储器1151。对于单循环指令,结果写入到目标寄存器组中。此假设指令的任何条件评估为真。如果条件评估为假,那么指令在执行1级1131之后并不写入任何结果或具有任何管线操作。在执行2级1132(e2)期间,加载指令将地址发送到存储器。存储指令将地址和数据发送到存储器。使结果饱和的单循环指令在饱和发生时设置控制状态寄存器(csr)中的sat位。对于2循环指令,结果写入到目标寄存器组中。在执行3级1133(e3)期间,执行数据存储器存取。使结果饱和的任何乘法指令在饱和发生时设置控制状态寄存器(csr)中的sat位。对于3循环指令,结果写入到目标寄存器组中。在执行4级1134(e4)期间,加载指令将数据引入到cpu边界。对于4循环指令,结果写入到目标寄存器组中。在执行5级1135(e5)期间,加载指令将数据写入到寄存器中。这在图11中通过从存储器1151到执行5级1135的输入示意性地说明。图13说明供实例实施例使用的功能单元指令的指令译码1300的实例。其它指令译码可行且在实例实施例的范围内。每一指令由32位组成且控制可单独控制的功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225、d2单元226、l2单元241、s2单元242、m2单元243、n2单元244、c单元245和p单元246)中的一个的操作。位字段定义如下。creg字段1301(位29到31)和z位1302(位28)是在条件指令中使用的任选字段。这些位用于条件指令以识别预测寄存器和条件。z位1302(位28)指示预测是基于预测寄存器中的零还是非零。如果z=1,那么测试等于零。如果z=0,那么测试非零。creg=0且z=0的情况被视为总为真,以允许无条件指令执行。creg字段1301和z字段1302如表1中所示在指令中编码。表1执行条件指令的条件是存储于指定数据寄存器中的值。此数据寄存器处于用于所有功能单元的全局标量寄存器组211中。应注意,z位列中的“z”是指上文提到的零/非零比较选择且“x”为无关状态。此译码可仅将16个全局寄存器的子集指定为预测寄存器。作出此选择以将位保持在指令译码中。应注意,无条件指令并不具有这些任选的位。对于无条件指令,字段1301和1302中的这些位(28到31)优选地用作额外操作码位。dst字段1303(位23到27)将对应寄存器组中的寄存器指定为指令结果的目的地。src2/cst字段1304(位18到22)取决于指令操作码字段具有若干含义(位4到12用于所有指令且另外位28到31用于无条件指令)。第一含义将对应寄存器组中的寄存器指定为第二操作数。第二含义为立即常量。取决于指令类型,这被视为无符号整数且零扩展到指定数据长度或被视为有符号整数且符号扩展到指定数据长度。src1字段1305(位13到17)将对应寄存器组中的寄存器指定为第一源操作数。用于所有指令的操作码字段1306(位4到12)(以及另外用于无条件指令的位28到31)指定指令的类型且指明适当指令选项。此包含所使用的功能单元和所执行的操作的明确标识。除了下文详述的指令选项以外,对操作码的详细解释超出实例实施例的范围。e位1307(位2)仅用于立即常量指令,其中常量可扩展。如果e=1,那么立即常量以下文详述的方式扩展。如果e=0,那么立即常量不扩展。在这种情况下,立即常量由src2/cst字段1304(位18到22)指定。应注意,此e位1307仅用于一些指令。因此,使用恰当译码,此e位1307可从不需要其的指令省略,且此位用作额外操作码位。s位1307(位1)指明标量数据路径侧a115或向量数据路径侧b116。如果s=0,那么选择标量数据路径侧a115。这将功能单元限于图2中所说明的l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226以及对应寄存器组。类似地,s=1选择向量数据路径侧b116,从而将功能单元限于图2中所说明的l2单元241、s2单元242、m2单元243、n2单元244、p单元246以及对应寄存器组。p位1308(位0)标记执行包。p位确定指令是否与后续指令并行执行。p位指令从较低地址到较高地址经扫描。如果对于当前指令p=1,那么下一指令与当前指令并行执行。如果对于当前指令p=0,那么下一指令在当前指令之后的循环中执行。并行执行的所有指令构成执行包。执行包可含有多达十二个指令。执行包中的每一指令必须使用不同功能单元。存在两个不同条件码扩展时隙。每一执行包可含有这些独特32位条件码扩展时隙中的每一个,所述每一个时隙含有用于相同执行包中的指令的4位creg/z字段。图14说明条件码扩展时隙0的译码,且图15说明条件码扩展时隙1的译码。图14说明具有32个位的条件码扩展时隙0的译码。字段1401(位28到31)指定指派给相同执行包中的l1单元221指令的4个creg/z位。字段1402(位27到24)指定指派给相同执行包中的l2单元241指令的4个creg/z位。字段1403(位19到23)指定指派给相同执行包中的s1单元222指令的4个creg/z位。字段1404(位16到19)指定指派给相同执行包中的s2单元242指令的4个creg/z位。字段1405(位12到15)指定指派给相同执行包中的d1单元225指令的4个creg/z位。字段1406(位8到11)指定指派给相同执行包中的d2单元245指令的4个creg/z位。字段1407(位6和7)未使用/保留。字段1408(位0到5)经译码为一组独特位(ccex0)以识别条件码扩展时隙0。一旦检测到条件码扩展时隙0的此唯一id,对应creg/z位用于控制相同执行包中的任何l1单元221、l2单元241、s1单元222、s2单元242、d1单元224和d2单元225指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令为有条件的(包含creg/z位),那么条件码扩展时隙0的对应位覆写指令中的条件码位。应注意,无执行包可具有引导到特定执行单元的多于一个指令。无指令的执行包可含有多于一个条件码扩展时隙0。因此,creg/z位到功能单元指令的映射为明确的。设置creg/z位等于“0000”使指令为无条件的。因此,经恰当译码的条件码扩展时隙0可使一些对应指令有条件且一些无条件。图15说明具有32个位的条件码扩展时隙1的译码。字段1501(位28到31)指定指派给相同执行包中的m1单元223指令的4个creg/z位。字段1502(位27到24)指定指派给相同执行包中的m2单元243指令的4个creg/z位。字1503(位19到23)指定指派给相同执行包中的c单元245指令的4个creg/z位。字段1504(位16到19)指定指派给相同执行包中的n1单元224指令的4个creg/z位。字段1505(位12到15)指定指派给相同执行包中的n2单元244指令的4个creg/z位。字段1506(位5到11)未使用/保留。字段1507(位0到5)经译码为一组独特位(ccex1)以识别条件码扩展时隙1。一旦检测到条件码扩展时隙1的此唯一id,对应creg/z位用于控制相同执行包中的任何m1单元223、m2单元243、c单元245、n1单元224和n2单元244指令的条件执行。如表1中所示解释这些creg/z位。如果对应指令为有条件的(包含creg/z位),那么条件码扩展时隙1的对应位覆写指令中的条件码位。应注意,无执行包可具有引导到特定执行单元的多于一个指令。无指令的执行包可含有多于一个条件码扩展时隙1。因此,creg/z位到功能单元指令的映射为明确的。设置creg/z位等于“0000”使指令为无条件的。因此,经恰当译码的条件码扩展时隙1可使一些指令有条件且一些无条件。如上文结合图13所描述,条件码扩展时隙0和条件码扩展时隙1两者包含用以限定执行包的p位是可行的。在优选实施例中,如图14和15中所示出,码扩展时隙0和条件码扩展时隙1优选地具有始终编码为1的位0(p位)。因此,条件码扩展时隙0或条件码扩展时隙1都不可在执行包的最后一个指令时隙中。存在两个不同常量扩展时隙。每一执行包可含有这些独特的32位常量扩展时隙中的每一个,所述每一个时隙含有待与5位常量字段1305串接为高阶位以形成32位常量的27个位。如上文的指令译码描述中所提及,仅一些指令将src2/cst字段1304限定为常量而非源寄存器识别符。那些指令中的至少一些可使用常量扩展时隙来将此常量扩展到32个位。图16说明常量扩展时隙0的字段。每一执行包可包含常量扩展时隙0的一个例子和常量扩展时隙1的一个例子。图16说明包含两个字段的常量扩展时隙01600。字段1601(位5到31)构成包含目标指令scr2/cst字段1304作为五个最低有效位的经扩展32位常量的最高有效的27位。字段1602(位0到4)经译码为一组独特位(cstx0)以识别常量扩展时隙0。在优选实施例中,常量扩展时隙01600可仅用于扩展相同执行包中的l1单元221指令、d1单元225指令中的数据、s2单元242指令、d2单元226指令中的偏移、m2单元243指令、n2单元244指令、分支指令或c单元245指令中的一个的常量。除了位0到4经译码为一组独特位(cstx1)以识别常量扩展时隙1之外,常量扩展时隙1类似于常量扩展时隙0。在优选实施例中,常量扩展时隙1可仅用于扩展相同执行包中的l2单元241指令、d2单元226指令中的数据、s1单元222指令、d1单元225指令中的偏移、m1单元223指令或n1单元224指令中的一个的常量。如下使用常量扩展时隙0和常量扩展时隙1。目标指令必须属于准许常量规格的类型。常规地,这通过用如上文对于scr2/cst字段1304所述的常量的最低有效位替换一个输入操作数寄存器规范字段来实施。指令解码器113从指令操作码位确定此情况,被称为立即字段。目标指令还包含一个常量扩展位(e位1307),所述常量扩展位专用于用信号表示指定常量未扩展(优选地,常量扩展位=0)或所述常量扩展(优选地,常量扩展位=1)。如果指令解码器113检测到常量扩展时隙0或常量扩展时隙1,那么进一步检查用于对应于所检测到的常量扩展时隙的指令的所述执行包内的其它指令。仅在一个对应指令具有等于1的常量扩展位(e位1307)时才进行常量扩展。图17是说明常量扩展的部分框图1700。图17假设指令解码器113在相同执行包中检测到常量扩展时隙和对应指令。指令解码器113将来自常量扩展时隙的27个扩展位(位字段1601)和来自对应指令的5个常量位(位字段1305)供应到串接器(concatenator)1701。串接器1701从这两个部分形成单个32位字。在优选实施例中,来自常量扩展时隙的27个扩展位(位字段1601)为最高有效位,且5个常量位(位字段1305)为最低有效位。将此组合式32位字供应到多路复用器1702的一个输入。来自对应指令字段1305的5个常量位将第二输入供应到多路复用器1702。多路复用器1702的选择受常量扩展位的状态控制。如果常量扩展位(e位1307)为1(经扩展),那么多路复用器1702选择串接的32位输入。如果常量扩展位为0(未扩展),那么多路复用器1702从对应指令字段1305选择5个常量位。多路复用器1702将此输出供应到符号扩展单元1703的输入。符号扩展单元1703从来自多路复用器1703的输入形成最终操作数值。符号扩展单元1703接收控制输入标量/向量和数据大小。标量/向量输入指示对应指令是标量指令还是向量指令。数据路径侧a115的功能单元(l1单元221、s1单元222、m1单元223、n1单元224、d1单元225和d2单元226)可仅执行标量指令。涉及这些功能单元中的一个的任何指令为标量指令。数据路径侧b功能单元l2单元241、s2单元242、m2单元243、n2单元244和c单元245可执行标量指令或向量指令。指令解码器113从操作码位确定指令是标量指令还是向量指令。p单元246可仅执行标量指令。数据大小可为8位(字节b)、16位(半字h)、32位(字w)、64位(双字d)、四字(128位)数据或半向量(256位)数据。表2列出针对各种选项的符号扩展单元1703的操作。表2指令类型操作数大小常量长度动作标量b/h/w/d5位符号扩展到64个位标量b/h/w/d32位符号扩展到64个位向量b/h/w/d5位符号扩展到操作数大小且在整个向量中复制向量b/h/w32位在每一32位(w)通路中复制32位常量向量d32位符号扩展到64个位且在每一64位(d)通路中复制如上文结合图13所描述,常量扩展时隙0及常量扩展时隙1两者包含用以限定执行包的p位是可行的。在优选实施例中,如就条件码扩展时隙来说,常量扩展时隙0和常量扩展时隙1优选地具有始终编码为1的位0(p位)。因此,常量扩展时隙0或常量扩展时隙1都不可在执行包的最后一个指令时隙中。执行包包含常量扩展时隙0或1以及多于一个对应指令标记常量扩展(e位=1)在技术上是可行的。对于常量扩展时隙0,这将意味着执行包中的l1单元221指令、d1单元225指令中的数据、s2单元242指令、d2单元226指令中的偏移、m2单元243指令或n2单元244指令中的多于一个的e位为1。对于常量扩展时隙1,这将意味着执行包中的l2单元241指令、d2单元226指令中的数据、s1单元222指令、d1单元225指令中的偏移、m1单元223指令或n1单元224指令中的多于一个的e位为1。预期将相同常量扩展供应到多于一个指令并非有用功能。因此,在一个实施例中,指令解码器113可确定此情况为无效操作且不支持。替代地,可用应用于每一对应功能单元指令标记常量扩展的常量扩展时隙的扩展位支持此组合。特殊向量预测指令使用预测寄存器组234中的寄存器来控制向量运算。在当前实施例中,所有这些simd向量预测指令对选定数据大小进行操作。数据大小可包含字节(8位)数据、半字(16位)数据、字(32位)数据、双字(64位)数据、四字(128位)数据和半向量(256位)数据。预测寄存器的每一位控制simd操作是否在数据的对应字节上执行。p单元245的操作准许基于多于一个向量比较的各种复合向量simd操作。举例来说,可使用两个比较进行范围确定。候选向量与具有打包在第一数据寄存器内的范围的最小值的第一向量参考相比较。候选向量与具有打包在第二数据寄存器内的范围的最大值的第二参考向量进行第二比较。两个所得预测寄存器的逻辑组合将准许向量条件操作以确定候选向量的每一数据部分在范围内还是超出范围。l1单元221、s1单元222、l2单元241、s2单元242和c单元245通常在单指令多数据(simd)模式中操作。在此simd模式中,相同指令应用于来自两个操作数的打包数据。每一操作数保存置于预先确定的时隙中的多个数据元素。通过数据边界处的进位控制来启用simd操作。这类进位控制使得能够对不同数据宽度进行操作。图18说明进位控制。and门1801接收操作数宽算术逻辑单元内的位n的进位输出(对于标量数据路径侧a115功能单元为64位且对于向量数据路径侧b116功能单元为512位)。and门1801还接收下文将进一步描述的进位控制信号。将and门1801的输出供应到操作数宽算术逻辑单元的位n+1的进位输入。例如and门1801的and门安置在可能的数据边界处的每一对位之间。举例来说,对于8位数据,这类and门将处于位7与8、位15与16、位23与24等之间。每一这类and门接收对应进位控制信号。如果数据大小为最小值,那么每一进位控制信号为0,有效地阻挡相邻位之间的进位发射。如果所选数据大小需要两个算术逻辑单元区段,那么对应进位控制信号为1。下文表3示出在例如供向量数据路径侧b116功能单元使用的512位宽操作数的情况下的实例进位控制信号,所述操作数可划分成8位、16位、32位、64位、128位或256位的区段。在表3中,较高32位控制较高位(位128到511)进位,且较低32位控制较低位(位0到127)进位。不需要控制最高有效位的进位输出,因此仅要求63个进位控制信号。表3常规地,对为2的整数幂(2n)的数据大小执行操作。然而,此进位控制技术不限于2的整数幂。此技术适用于其它数据大小和其它操作数宽度。图19说明展示中央处理单元核心110与程序存储器控制器1930之间的协作的一个视图。中央处理单元核心110定期产生其操作所需指令的地址。在优选实施例中,中央处理单元核心110对虚拟存储器地址操作。也在优选实施例中,高速缓存于一级指令高速缓存器121中的指令通过这些虚拟地址进行存取。如图19中所说明,此虚拟地址在优选实施例中表达为48位。在优选实施例中,二级组合式指令/数据高速缓存器130和其它存储器对物理地址进行操作,从而需要虚拟位址与物理地址之间的转换以使二级组合式指令/数据高速缓存器130服务于对一级指令高速缓存器121的任何高速缓存未命中。程序存储器控制器1930包含用于地址转译的微表后备缓冲区(μtlb)1931。如果与标记随机存取存储器(tagram)1934的标记比较确定所请求提取包不存储在一级指令高速缓存器121中(未命中),那么向二级组合式指令/数据高速缓存器130请求此提取包。因为一级指令高速缓存器121虚拟地标记且二级组合式指令/数据高速缓存器130物理上标记,所以这需要地址转译。虚拟地址供应到微表后备缓冲区1931。通常使用具有虚拟地址的最高有效位和物理地址的对应最高有效位的表执行地址转译。在此实例中,在检测到正确地址对时,地址转译用来自所述表的最高有效物理地址位代替所请求地址的最高有效虚拟地址位。通常,虚拟地址的最低有效位与物理地址的最低有效位相同。在此实例中,完整虚拟地址/物理地址转译表存储于存储器管理单元(mmu)1920中。另外,一级指令高速缓存器121包含以类似高速缓存器方式存储地址转译表条目中的一些的子集的微表后备缓冲区1931。当服务地址转译时,将请求的虚拟地址与存储于微表后备缓冲区1931中的地址转译表条目进行比较。如果虚拟地址匹配微表后备缓冲区1931中的表条目,那么匹配的表条目用于地址转译。如果虚拟地址不匹配微表后备缓冲区1931中的任何表条目,那么从存储器管理单元1920提取这些地址转译参数。微表后备缓冲区1931将对虚拟地址的页转译条目请求发射到存储器管理单元1920。存储器管理单元1920找到对应地址转译条目并且将此条目传回到微表后备缓冲区1931。微表后备缓冲区1931存储此新近提取的转译条目,通常逐出目前存储的条目以腾出空间。在地址转译之后,物理地址传送到二级组合式指令/数据高速缓存器130。分支预测器1911将虚拟提取地址以及预提取计数供应到程序存储器控制器1930。分支预测通常存储在执行时在程序代码中遇到的每一条件分支指令的存储器地址。这使得分支预测器1911能够辨识已遇到的条件分支。与条件指令地址相关联的是采取的/未采取的分支预测和动态分支预测中使用的任何分支历史。此分支预测信息归因于对包含于分支预测器1911内的存储器和电路的量的限制而始终限于程序代码的相当小的区段。然而,基于当前指令存储器方位和归因于分支预测通过程序代码的所预测路径,分支预测器1911可确定将在当前指令提取包取用之后且在预测分支将脱离此线性路径之前使用的线性后续指令提取包的所预测数目。此数目被称为提取包计数或预提取计数。中央处理单元核心110与为程序存储器控制器1930的一部分的仿真支持单元1932交换仿真信息。中央处理单元核心110从程序存储器控制器1930接收呈指令提取包形式的指令。在优选实施例中,如图19中所说明,这些提取包为512位(64字节)。在优选实施例中,一级指令高速缓存器121、二级组合式指令/数据高速缓存器130和任何其它存储器存储与64字节边界对准的提取包。取决于存储指令的方位,可从一级指令高速缓存器121、二级组合式指令/数据高速缓存器130或其它存储器召回此提取包。程序存储器控制器1930将从中央处理单元核心110接收的提取地址的一部分与标记随机存取存储器1934中的条目进行比较。标记随机存取存储器1934存储用于存储于一级指令高速缓存器121中的每一高速缓存行的标记数据。提取地址的对应最高有效位与标记随机存取存储器1934中的每一标记集合进行比较。提取地址的这些位与任何标记之间的匹配(命中)指示存储于提取地址处的指令存储于一级指令高速缓存器121中对应于匹配的标记的方位处。在这类匹配后,程序存储器控制器1930即刻从一级指令高速缓存器121召回指令以作为提取包供应到中央处理单元核心110。提取地址的这些位与任何标记之间的匹配失败(未命中)指示存储于提取地址处的指令不存储于一级指令高速缓存器121中。程序存储器控制器1930将高速缓存请求发射到联合存储器控制器(umc)1940以寻找二级组合式指令/数据高速缓存器130中的指令(图1)。高速缓存请求伴有如上文所论述从虚拟地址转译的物理地址。如果此地址处的指令存储于二级组合式指令/数据高速缓存器130中(命中),那么所述请求由此高速缓存器服务。否则,所述请求供应给较高层级存储器(未说明)。程序存储器控制器1930包含相干性支持单元1935。相干性支持单元1935确保数据移动保留最新指令以用于供应到中央处理单元核心110。图20说明中央处理单元核心110与程序存储器控制器1930之间的接口的另一视图。在优选实施例中,一级指令高速缓存器121具有32kb的固定高速缓存器大小。一级指令高速缓存器121最大化代码执行的性能并且有助于以高时钟速率提取指令。一级指令高速缓存器121将与执行代码存储相关联的时延隐藏于较慢系统存储器中。每一中央处理单元核心110与单独程序存储器控制器1930介接,所述程序存储器控制器1930与二级组合式指令/数据高速缓存器130的联合存储器控制器1940介接。在优选实施例中,一级指令高速缓存器121和程序存储器控制器1930包含以下属性。其包括32kb4道指令高速缓存器。其为用49位虚拟地址虚拟地编索引且虚拟地标记的高速缓存器。其包含具有集成式微表后备缓冲区1931的虚拟化支持。高速缓存行具有64字节的大小。在优选实施例中,这与提取包的大小相同。其可将多达8对提取包请求排入联合存储器控制器1940的队列,以实现程序管线中的预提取。即使一级指令高速缓存器121行大小是64字节,pmc-umc接口仍被优化成使得联合存储器控制器1940传回多达2个数据阶段(128字节)。根据下文更完整描述的实例实施例,可在一级指令高速缓存器未命中的服务后即刻有条件地存储附加传回指令。中央处理单元核心110在每一指令提取请求后即刻发射提取地址和提取包计数。分支预测器1911(图19)产生提取包计数。提取包计数指示始于给定地址且将传回到中央处理单元核心110的连续64字节高速缓存行的预测数目。程序存储器控制器1930提取有限状态机2024发出对包中的每一个的预提取,并且每当前一请求的第二数据阶段可满足传入到记分板的请求时使所述预提取组合成记分板2041中的对。提取包计数0指示处于增量模式的中央处理单元核心110在没有提前提取的情况下请求程序存储器控制器1930提取64字节行。中央处理单元核心110必须请求程序存储器控制器1930清空以退出增量模式并且恢复正常操作。图21说明如何剖析提取地址2100以由程序存储器控制器1930进行处置。提取地址2100划分成:偏移2101;集合2102;和标记2103。一级指令高速缓存器121中的高速缓存行为64字节长。假定存储器为字节可定址的,那么一级指令高速缓存器121的高速缓存行内的方位充当地址的六个最低有效位的代理(偏移2101)。集合位2102直接对应于一级指令高速缓存器121内的物理方位。如果一级指令高速缓存器121存储指令,那么其处于对应于集合位2102的方位。标记位2103经存储以供与提取地址进行比较。匹配(命中)指示经定址指令存储在一级指令高速缓存器121中。如果发现不匹配(未命中),那么必须从不同于一级指令高速缓存器121的另一来源获得所请求提取包的指令。程序存储器控制器1930在多个指令阶段中操作。图20说明阶段:2010;2020;2030;2040;和2050。操作在阶段2010、2020、2030、2040和2050期间在不同提取请求上同时发生。指令提取单元111(中央处理单元核心110的部分,参见图1)确定下一指令提取包的存储器地址。此提取地址在阶段2010中供应给处于作用中的多路复用器2011的一个输入。此提取地址还在阶段2020中供应给处于作用中的提取地址寄存器2022。作为分支预测的部分,指令提取单元111还在阶段2020中供应处于作用中的提取包计数寄存器2023。多路复用器2011与2012的组合将三个地址中的一者供应到标记随机存取存储器1934用于标记比较。多路复用器2011在从中央处理单元核心110接收的提取地址与来自预提取有限状态机2024的预提取地址之间进行选择。上文描述此预提取地址的形成。多路复用器2012在多路复用器2011的输出与程序存储器控制器记分板2041中对应于来自联合存储器控制器1940的传回的虚拟地址之间进行选择。从程序存储器控制器记分板2041存取具有最大优先级。从中央中央处理器单元核心110存取具有次高优先级。从预提取有限状态机2024存取具有最低优先级。在阶段2020期间,预提取有限状态机(fsm)2024任选地产生预提取请求。预提取请求包含从中央处理单元核心110请求地址和如上所述的提取包计数计算的地址。预提取有限状态机2024将下一预提取地址供应到多路复用器2011。预提取有限状态机2024将微表后备缓冲区请求供应到微表后备缓冲区2035以在其为不同于来自中央处理单元核心110的初始请求的页的情况下获得用于预提取地址的页转译数据。也在阶段2020期间,由多路复用器2011和2012在先前阶段2010中选择的地址供应到标记随机存取存储器1934以开始标记比较。在阶段2030中,标记比较完成。在图20中说明的实例中,标记比较2031单独地比较所呈现地址的标记部分2103与存储在标记随机存取存储器1934的四个存储体中的数据。所述比较产生命中或未命中。命中指示所请求地址处的指令存储在存储器121中。在此情况下,多路复用器2036将这些指令从存储器121供应到中央处理单元核心110。程序存储器控制器1930的标记比较获得与所请求行上的信息并行的道(way)信息。对于高速缓存命中,需要道信息来定位所请求的提取包。对于高速缓存未命中,道信息确定被从较高层级存储器传回的数据逐出(覆写)的高速缓存行。在一级指令高速缓存器未命中上,程序存储器控制器1930将此道信息与所请求行上的其它数据一起存储于记分板2041中。一旦数据从二级组合式指令/数据高速缓存器130传回,程序存储器控制器1930便咨询记分板2041以确定存储哪一道。一旦产生所述请求,将分配的(不管是按需求的还是预提取的)行便无效,以避免在即将发生所请求行的传回数据时较新存取产生错误命中。在未命中后,在阶段2040中操作的程序存储器控制器1930即刻经由联合存储器控制器1940从二级组合式指令/数据高速缓存器130寻求存储于所述地址处的指令。这包含:在程序存储器控制器记分板2041中建立条目;从多路复用器2034选择的fifo替换单元2033接收道信息;和从微表后备缓冲区1931接收经转译物理地址。程序存储器控制器记分板2041产生发到联合存储器控制器1940的请求信号以获得存储于此经转译物理地址处的指令。程序存储器控制器1930不会因为先前请求之间的可能匹配而搜索存储于记分板2041中的正在进行中的请求。因此,有可能将对同一高速缓存行的两个或更多个请求分配给同一集合的不同道。这在将来请求同一集合的情况下可致使依据标记比较的两个或更多个匹配。每当这发生时,程序存储器控制器1930使复制的标记和对应高速缓存道中的一个无效以释放道来用于新条目。此无效仅当针对另一请求上的命中/未命中决策存取具有重复标记的集合时发生。在优选实施例中,程序存储器控制器1930在使其它道无效的同时保持最显著有效道(即,由集合的有效位的msb标示的道)。举例来说,如果道0和道2具有相同标记并且有效,那么保持道2并且使道0无效。l1p不使仿真存取上的重复标记无效。在阶段2050(其可取决于所搜查的指令的方位而包含多于一个阶段)中,联合存储器控制器1940服务于指令请求。此过程包含确定所请求指令是否存储在二级组合式指令/数据高速缓存器130中。在高速缓存命中二级组合式指令/数据高速缓存器130时,联合存储器控制器1940从二级组合式指令/数据高速缓存器130供应指令。在高速缓存未命中二级组合式指令/数据高速缓存器130时,联合存储器控制器1940从另一存储器搜查这些指令。此另一存储器可为外部三级高速缓存器或/和外部主存储器。传回所请求指令所需的阶段数目取决于其高速缓存于二级组合式指令/数据高速缓存器130中、其高速缓存于外部三级高速缓存器还是其存储在外部主存储器中。从联合存储器控制器1940传回的所有指令存储于存储器121中。因此,这些指令可在稍后供中央处理单元核心110使用。如果触发通到联合存储器控制器1940的请求的指令请求直接来自中央处理单元核心110(按需提取),那么多路复用器2036同时将传回的指令直接供应到中央处理单元核心110。如果触发通到联合存储器控制器1940的请求是预提取请求,那么多路复用器2036阻止将这些指令供应到中央处理单元核心110。这些指令基于中央处理单元核心110预期的未来需要仅存储于存储器121中。图22是说明联合存储器控制器1940的相关部分的部分示意图。在一级高速缓存未命中后,程序存储器控制器1930即刻将所请求地址供应到联合存储器控制器1940。联合存储器控制器1940从程序存储器控制器1930接收呈所请求地址形式的请求。程序存储器控制器1930在高速缓存未命中一级指令高速缓存器121时作出这些请求。存储在所请求地址处的指令不存储在一级指令高速缓存器121中,且针对二级联合指令/数据高速缓存器130进行搜查。因此,程序存储器控制器1930将所请求地址发送到联合存储器控制器1940。所请求地址发射到标记2201。常规地,将所请求地址与存储在标记2201中的部分地址进行比较以确定二级组合式指令/数据高速缓存器130是否在所请求地址处存储指令。在检测到不匹配(未命中)后,联合存储器控制器1940即刻将服务请求发射到下一级存储器。此下一级存储器可为外部三级高速缓存器或外部主存储器。此下一级存储器将最终传回所述所请求地址处的数据或指令。此传回数据或指令存储在二级组合式指令/数据高速缓存器130中。此存储通常涉及逐出且替换二级组合式指令/数据高速缓存器130中的另一条目。接着从二级组合式指令/数据高速缓存器130服务于原始请求。在检测到匹配(命中)时,标记2201将地址的指示发射到二级组合式指令/数据高速缓存器130。此指示使得二级组合式指令/数据高速缓存器能够定位和召回对应于所请求地址的高速缓存行。此经召回高速缓存行存储在寄存器2201中。寄存器2202被说明为具有上半部和下半部。二级组合式指令/数据高速缓存器130中的高速缓存行大小为一级指令高速缓存器121中的高速缓存行大小的两倍。因此,从二级组合式指令/数据高速缓存器130召回一个高速缓存行可供应用于一级指令高速缓存器121的两个高速缓存行。多路复用器2203和多路复用器控制器2204选择二级组合式指令/数据高速缓存行的上半部或下半部用于供应到程序存储器控制器1930。多路复用器控制器2204从程序存储器控制器1930接收所请求地址。在大部分情形中,此地址的一个位控制多路复用器2203的选择。如果此地址位为0,那么所请求地址处于存储在寄存器2202中的二级组合式指令/数据高速缓存行的下半部中。多路复用器控制器2204致使多路复用器2202选择寄存器2203的下半部用于供应到程序存储器控制器1930。如果此地址位为1,那么所请求地址处于存储在寄存器2202中的二级组合式指令/数据高速缓存行的上半部中,且多路复用器控制器2204致使多路复用器2202选择此上半部。在优选实施例中,一级指令高速缓存器121中的高速缓存行为64字节,且二级组合式指令/数据高速缓存器130中的高速缓存行为128字节。对于此高速缓存行大小选择,控制地址位为位7,因为27等于128。常规地,原本不使用存储于寄存器2202中的二级组合式指令/数据高速缓存行的未经选择的一半。常规地,通过在从二级组合式指令/数据高速缓存器的高速缓存行的下一召回后即刻覆写所述未经选择的一半,丢弃所述未经选择的一半。实例实施例是此常规过程的一个例外。实例实施例适用于按需提取。按需提取是直接来自中央处理单元核心110的所请求指令集且并非来自预提取有限状态机2024的预提取。实例实施例适用于这类按需提取,即未命中一级指令高速缓存器121且命中二级组合式指令/数据高速缓存行130的上半部。在这些情形下(按需提取是一级高速缓存未命中且命中二级组合式指令/数据高速缓存行的上半部),初始地,通过多路复用器2203选择存储于寄存器2202中的上半部以供应到程序存储器控制器1930。在下一存储器循环后,多路复用器控制器2204即刻控制多路复用器2203供应寄存器2202的下半部。在传回到程序存储器控制器1930后,这即刻处理为预提取传回。下文描述按需提取传回和预提取传回的处理的差异。图23是根据实例实施例的预提取技术的操作2300的流程图。操作2300仅说明与实例实施例相关的程序存储器控制器1930和联合存储器控制器1940的操作的部分。与此方面相关的操作在指令提取后即刻开始于开始框2301。测试框2302确定刚为标记匹配提交的指令提取的提取地址是否引起程序存储器控制器190内的未命中。如果提取地址并非未命中(在测试框2302处为否),那么实例实施例不适用。流程转到框2303以继续提取过程的不与实例实施例相关的其它方面。在此情况下,如果提取地址并非未命中,那么其为命中。所搜查的指令存储于一级指令高速缓存器121中。因此从一级指令高速缓存器121服务于此提取。这些过程不与实例实施例相关。如果提取是未命中(在测试框2302处为是),那么提取提交到联合存储器控制器1940以用于服务。作为此过程的部分,测试框2304确定这是否命中标记2201。如果这是命中(在测试框2304处为是),那么流程转到框2305以继续提取过程的不与实例实施例相关的其它方面。在此情况下,如果其并非命中(在测试框2404处为否),那么其为未命中。由较高层级存储器服务于指令提取,所述较高层级存储器通常是外部三级高速缓存器或外部主存储器。如果测试框2304确定所请求地址命中联合存储器控制器(在测试框2304处为是),那么框2306提取和缓冲所请求地址处的指令。如图22中所说明,匹配所请求地址的标记准许识别二级组合式指令/数据高速缓存器130内的存储方位。存储于二级组合式指令/数据高速缓存器130内的对应行处的指令被召回并且如图22中所说明存储于寄存器2202中上半部和下半部中。下一测试框2307确定提取地址是否是对二级组合式指令/数据高速缓存器130中的高速缓存行的上半部的按需提取。在请求是从中央处理单元核心110直接发出的情况下,提取请求是按需提取。由预提取有限状态机2074发出的提取请求是预提取请求且并非按需提取。如上文所描述,一级指令高速缓存器121中的高速缓存行的大小是二级组合式指令/数据高速缓存器130中的高速缓存行的大小的一半。这些高速缓存行的地址对准以使得一级指令高速缓存器121的每一高速缓存行对应于二级组合式指令/数据高速缓存器130中的高速缓存行的下半部或上半部中的一个。如果指令提取既不是按需提取也不是对二级组合式指令/数据高速缓存器130中的高速缓存行的上半部的提取(在测试框2307处为否),那么过程2300转到框2308以继续提取过程的不与实例实施例相关的其它方面。实例实施例不适用于对二级组合式指令/数据高速缓存器130中的高速缓存行的下半部或对预提取请求的按需提取。过程2300根据实例实施例仅在指令提取是对二级组合式指令/数据高速缓存器130中的高速缓存行的上半部的按需提取(在测试框2307处为是)的情况下继续。如果提取地址是对二级组合式指令/数据高速缓存器130中的高速缓存行的上半部按需提取(在测试框2307处为是),那么框2309依按需提取将上半部二级组合式指令/数据高速缓存行供应到程序存储器控制器1930。优选地存在指令传回到程序存储器控制器1930的旁侧通道以指示传回的指令是响应于按需提取还是响应于预提取。如下文在图24中所提及,程序存储器控制器1930以不同方式处置这两种类型的提取。在下一存储器循环上,框2310依预提取将下半部二级组合式指令/数据高速缓存行供应到程序存储器控制器1930。用信号通知程序存储器控制器1930此传回是如图24中所提及预提取改变其被处置的方式。这提供以类似于预提取有限状态机2074发出的预提取请求的方式处置的对下半部二级组合式指令/数据高速缓存行的虚拟预提取。处置实例实施例的预提取与处置其它预提取略微不同。图24是说明程序存储器控制器1930对来自联合存储器控制器1940的传回的响应的流程图2400。操作2400仅说明程序存储器控制器1930的与实例实施例有关的操作部分。与此方面有关的操作在开始框2401处开始。测试框2402确定是否从联合存储器控制器1940接收到高速缓存服务。如果不存在高速缓存服务传回(在测试框2402处为否),那么实例实施例不适用。过程2400以继续框2403继续。在从联合存储器控制器1940接收到高速缓存服务传回(在测试框2402处为是)后,测试框2404即刻确定高速缓存服务传回是否是按需请求。如上所述,直接从中央处理单元核心110发出按需请求。如果这是按需请求传回(在测试框2404处为是),那么框2405将传回的指令转发到中央处理单元核心110。因为中央处理单元核心110直接请求这些指令(按需提取),所以中央处理单元核心110等待所述指令。中央处理单元核心110甚至可暂停并且不产生结果。因此,高速缓存服务传回直接转发到中央处理单元核心110,这样做的目标是减小任何暂停时间。过程2400接着前进到框2406。如果这并非按需请求传回(在测试框2404处为否)或如果这在框2406将按需请求传回的指令供应到中央处理单元核心110之后为按需请求传回(在测试框2404处为是),那么框2406将传回的指令存储于一级指令高速缓存器121中。存在从联合存储器控制器1940的高速缓存服务传回(测试框2402)意味着程序存储器控制器1930中的高速缓存未命中。因此,传回的指令应存储于一级指令121中,而不管触发事件是按需请求还是预提取请求。在这方面,在上半部l2命中之后的下半部二级高速缓存行的供应处理为预提取请求。实例实施例的预提取在数个方面不同于预提取有限状态机2074发出的预提取。第一,在与预提取有限状态机2074发出预提取的情形不同的情形下发出实例实施例的预提取。在预提取计数非零的情况下,预提取有限状态机2074在按需请求之后发出预提取请求。联合存储器控制器1940在一级指令高速缓存器未命中和二级组合式指令/数据高速缓存器命中二级高速缓存行的上半部后即刻发出实例实施例的预提取。第二,所述过程在响应方面不同。预提取有限状态机2074发出的预提取请求将请求地址提交到标记随机存取存储器1934以确定提取包是否存储于一级指令高速缓存器121中。预提取地址是基于按需提取的地址和预提取计数。在高速缓存命中后,程序存储器控制器1930即刻不采取另外动作。在高速缓存未命中后,程序存储器控制器1930即刻将预提取地址提交到联合存储器控制器1940以获得高速缓存服务。相比之下,实例实施例开始一级指令高速缓存器121按需提取未命中。对联合存储器控制器1940服务初始按需提取未命中的相同服务请求触发对应二级组合式指令/数据高速缓存器130的另一半部的预提取。实例实施例的预提取使用数字数据处理系统的资源的最小值。此预提取开始为一级指令高速缓存器未命中。用于做出这类一级指令高速缓存器命中/未命中确定的硬件需要进行正常操作。实例实施例不要求程序存储器控制器的额外硬件或过程。假设这是未命中,实例实施例不在预提取地址上进行一级指令高速缓存器标记比较(二级联合高速缓存行的下半部)。此预提取需要二级高速缓存命中。用于做出这类二级高速缓存命中/未命中确定的硬件需要进行正常操作。实例实施例不要求联合存储器控制器的额外硬件或过程。因为二级高速缓存行的大小是一级指令高速缓存行的大小的两倍,所以联合存储器控制器必须包含选择二级高速缓存器的上半部行或下半部行以用于供应到一级指令高速缓存器的某一技术。实例实施例使用此技术支持预提取。并非丢弃,而是在下一循环将下半部二级高速缓存行供应给一级指令高速缓存器121。因此,实例实施例执行需要最少额外资源的预提取。其它预提取技术查询标记随机存取存储器,比较用于命中/未命中确定的标记并且针对每一预提取请求独立地前进通过管线。这引发额外时延损失和功耗。实例实施例使预提取依赖于对应按需存取,且既不读取标记随机存取存储器,也不进行标记比较。在实例实施例中,预提取请求继承对应按需存取的未命中确定并且使用来自离散寄存器的个别道信息。已结合超长指令字(vliw)中央处理单元核心描述实例实施例。实例实施例的教示同样适用于中央处理单元核心提取由具有等于多个指令的长度的高速缓存行大小的一级指令高速缓存器服务的个别指令。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1