基于请求类型的选择性后置数据错误检测的制作方法

文档序号:6518977阅读:277来源:国知局
基于请求类型的选择性后置数据错误检测的制作方法
【专利摘要】在一种数据处理系统中,至少基于存储器访问请求的访问类型在相对于对存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间进行选择。响应于接收存储器访问请求并且选择第一定时,在对目标存储器块完成错误检测处理之前向请求器传输来自目标存储器块的数据。响应于接收存储器访问请求并且选择第二定时,在对目标存储器块完成错误检测处理之后并且响应于对目标存储器块完成错误检测处理向请求器传输来自目标存储器块的数据。
【专利说明】基于请求类型的选择性后置数据错误检测
【技术领域】
[0001]本发明总体涉及数据处理。在一些方面中,本发明涉及通过变化数据处理系统的存储器子系统中的错误检测处理的定时来减少有效数据访问延时。在其它一些方面中,本发明涉及通过投机地(speculatively)完成与高延时操作关联的指令来改进处理资源的利用。
【背景技术】
[0002]在处理器芯片设计中,趋势已经是每个处理器芯片包括数目不断增加的处理器芯。增加处理器芯数目增加处理器芯的执行所消耗的数据量并且相应地施加对芯片到芯片互连和外部存储器(例如动态随机存取存储器(DRAM))的比特率的压力以供应所需数据量。然而这些更高比特率造成互连上的更高固有误码率、因此需要更健壮的错误纠正代码(ECC)和/或循环冗余校验(CRC)代码以保证合理水平的数据完整。另外,复杂错误代码(诸如ECC和CRC)往往由于需要用于错误检测和纠正的更深错误纠正逻辑流水线而增加访问延时。
[0003]影响处理器芯片设计的另一趋势是DRAM访问延时尽管近年来继续缓慢改进,但是仍未跟上处理器芯时钟速率增加。因此,外部存储器访问延时如相对于处理器时钟速率测量的那样实际上已经降级。用于补偿外部存储器访问延时的常规技术已经是实施更大和更深芯片上高速缓存分级以与消耗处理器芯更近地缓冲频繁使用的数据。然而总芯片尺寸限制迫使在处理器芯数目与芯片上的高速缓存数量之间的折衷。因而限制用于简单地通过增加芯片上高速缓存容量来提高有效存储器访问延时的机会。

【发明内容】

[0004]在一些实施例中,通过选择性应用后置(posted)错误检测处理掩蔽访问延时来改进有效存储器访问延时。
[0005]在一些实施例中,通过投机地完成与高延时操作关联的指令来改进处理资源的利用。
[0006]在至少一个实施例中,至少基于存储器访问请求的访问类型在相对于对存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间进行选择。响应于接收到存储器访问请求并且选择第一定时,在对目标存储器块完成错误检测处理之前向请求器传输来自目标存储器块的数据。响应于接收到存储器访问请求并且选择第二定时,在对目标存储器块完成错误检测处理之后并且响应于对目标存储器块完成错误检测处理向请求器传输来自目标存储器块的数据。
[0007]在至少一个实施例中,至少基于存储器子系统中的先前检测到的错误的地址相对于对存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间进行选择。响应于接收到存储器访问请求并且选择第一定时,在对目标存储器块完成错误检测处理之前向请求器传输来自目标存储器块的数据。响应于接收到存储器访问请求并且选择第二定时,在对目标存储器块完成错误检测处理之后并且响应于对目标存储器块完成错误检测处理向请求器传输来自目标存储器块的数据。
[0008]在至少一个实施例中,在与处理器芯的执行单元关联的数据结构的条目中跟踪高延时操作。在执行单元中,在完成高延时操作之前投机地完成执行依赖于由数据结构的条目跟踪的高延时操作的指令。投机地完成指令包括向处理器芯的完成逻辑报告条目的标识符并且从执行单元的执行流水线去除指令。完成逻辑记录指令对高延时操作的依赖并且仅在成功完成高延时操作之后向处理器的有架构状态交付指令的执行结果。
【专利附图】

【附图说明】
[0009]图1是根据一个实施例的示例数据处理系统的高级框图;
[0010]图2是根据一个实施例的图1的存储器控制器(MC)的更具体视图;
[0011]图3是根据一个实施例的图1的存储器缓冲器(MB)的更具体视图;
[0012]图4是根据一个实施例的用于确定是否将对于读取存储器访问操作而启用后置错误检测处理的示例过程的高级逻辑流程图;
[0013]图5是根据一个实施例的存储器控制器的控制逻辑中的可选后置错误处理预测器(PEPP)的更具体视图;
[0014]图6是根据一个实施例的示例方法的高级逻辑流程图,PEPP通过该方法基于历史信息确定是否将对于读取存储器访问请求而禁止后置错误检测处理;
[0015]图7是根据一个实施例的对存储器块的读取访问的时序图;
[0016]图8是根据一个实施例的处理器芯的一部分的更具视图;
[0017]图9是根据一个实施例的示例过程的高级逻辑流程图,图8的加载未命中队列(LMQ)通过该过程处置加载数据的返回;
[0018]图10是根据一个实施例的示例过程的高级逻辑流程图,图8的加载-存储单元的完成级通过该过程向全局完成表(GCT)报告完成加载型指令;
[0019]图11是根据一个实施例的示例过程的高级逻辑流程图,GCT通过该过程跟踪投机地完成的指令;
[0020]图12是根据一个实施例的示例过程的高级逻辑流程图,GCT通过该过程处置LMQ取消分配报告;
[0021]图13是根据一个实施例的示例过程的高级逻辑流程图,GCT通过该过程完成指令组;以及
[0022]图14是示例设计过程的数据流程图。
【具体实施方式】
[0023]现在参照附图并且具体参照图1,图示示例数据处理系统100的高级框图,该数据处理系统是根据本文公开的原理和技术的数据处理系统的许多可能实施例之一。可以例如使用IBM Power服务器之一实施数据处理系统100,这些服务器是纽约阿芒克的国际商业机器公司的产品线。
[0024]在描绘的实施例中,数据处理系统100包括至少一个芯片上系统(SOC) 102并且如省略号所示可能多个S0C102,这些SOC由S0C102内集成的系统织构(fabric) 130耦合。优选地,将每个S0C102实现为具有衬底的单个集成电路芯片,在该衬底中如本领域已知的那样制作半导体电路装置。每个S0C102包括独立处理指令和数据的多个处理器芯104。在一些实施例中,处理器芯104还支持其中并行执行多个独立线程的同时多线程化。每个处理器芯104包括用于取读指令、对指令排序以用于执行、并且通过向处理器芯104的架构状态交付执行结果来完成指令的指令定序单元(ISU) 106。如以下进一步讨论的那样,ISU106通过参考全局完成表(GCT) 105来完成指令。
[0025]每个处理器芯104还包括用于执行指令(诸如定点和浮点算术指令、逻辑指令以及加载型和存储型指令)的一个或者多个执行单元,这些加载型和存储型指令分别请求对数据处理系统100的相干地址空间中的目标存储器块的读取和写入访问。具体而言,执行单元包括加载-存储单元(LSU) 108,该LSU执行加载型和存储型指令以计算读取和写入存储器访问操作的目标地址。LSU108包括可以从其满足读取存储器访问操作的存储直通(store-through) 一级(LI)高速缓存110以及跟踪在LI高速缓存110中未命中的读取存储器访问操作的加载未命中队列(LMQ) 112。
[0026]每个处理器芯104的操作由多级分级存储器子系统支持,该多级分级存储器子系统在它的最低级具有一般可由数据处理系统100中的S0C102中的任何SOC中的处理器芯104中的任何处理器芯访问的一个或者多个共享系统存储器140 (例如体DRAM)而在它的更高级具有一个或者多个高速缓存存储器级。如图所示,S0C102包括一个或者多个(并且优选多个)存储器信道接口(MCI )132,这些MCI中的每个MCI支持响应于经由系统织构130从相同S0C102或者其它S0C102中的处理器芯104接收的存储器访问操作的对系统存储器140的关联汇集的读取和写入访问。在描绘的实施例中,每个MCI132经由外部存储器缓冲器(MB) 134耦合到它的系统存储器140的关联汇集。
[0027]在示例实施例中,支持S0C102的每个处理器芯104的高速缓存存储器分级包括上述存储直通一级(LI)高速缓存110并且包括专有存储内部(store-1n)二级(L2)高速缓存120。如图所示,L2高速缓存120包括L2阵列122和L2控制器124,该L2控制器包括控制逻辑和L2阵列122的内容的目录126。L2控制器124响应于从关联存储器芯104接收的存储器访问(和其它)请求在系统织构130上发起操作和/或访问L2阵列122。在(如下文将假设的那样)实施基于窥探(snoop-based)的相干协议的一个实施例中,L2控制器124还检测系统织构130上的操作、提供适当相干响应并且执行窥探的操作所需要的对L2阵列122的任何访问。虽然所示高速缓存分级包括仅两个高速缓存级,但是本领域技术人员将理解备选实施例可以包括专有或者共享、芯片上或者芯片外、内嵌或者后备高速缓存的附加级(L3、L4等),该高速缓存可以完全包括、部分包括或者未包括更高高速缓存级的内容。
[0028]S0C102还包括一个或者多个集成1/0 (输入/输出)接口 150,该一个或者多个集成I/o接口支持经由一个或者多个外部通信链路152与一个或者多个1/0控制器(诸如PIC主机桥接器(PHB)、InfiniBand控制器、FibreChannel控制器等)的1/0通信。本领域技术人员将理解数据处理系统100可以包括对于理解这里阐述的本发明而言非必需的、因而在图1中未图示或者这里未进一步讨论的许多附加或者备选部件。
[0029]如将理解的那样,利用当前技术,处理器芯104对于由系统存储器140服务的请求而经历的存储器访问延时可以显著大于对于由L2高速缓存120服务的存储器访问请求的存储器访问延时。例如在一个实施例中,可以在单个处理器芯时钟周期中访问LI高速缓存110,可以在近似3-5个处理器芯时钟周期中访问本地L2高速缓存120,并且可以在300-400个处理器芯时钟周期中访问芯片外系统存储器140。为了减少由系统存储器140服务的读取存储器访问操作的有效存储器访问延时,S0C102可以对于在系统织构130上发起的选择的读取存储器访问操作而选择性启用数据错误投机。响应于数据错误投机被启用的读取存储器访问操作,读取存储器访问操作所请求的数据中的至少一些数据可以由存储器子系统向请求处理器芯104返回并且在指示请求的数据是否包含错误之前由处理器芯104处理。因此,可以“后置”(即推迟)存储器分级内的错误检测处理以使数据传输能够先于错误确定。以下描述处理器芯104的数据错误投机和在存储器子系统中的关联后置错误检测处理的一个实现方式。
[0030]现在参照图2,描绘根据一个实施例的图1的存储器信道接口(MCI) 132之一的更具体视图。在描绘的实施例中,MCI132经由下游(即朝着存储器140)请求和数据接口 202和204以及上游(即朝着系统织构130)控制和数据接口 206和208耦合到系统织构130。请求接口 202从系统织构130接收各种操作的读取和写入存储器访问请求,其中每个存储器访问请求例如包括指示操作的存储器访问请求是否有效的有效字段201、指示存储器访问请求的类型(例如读取或者写入)的事务类型(TType)字段203和指定存储器访问请求的目标地址的请求地址字段205。在一个实施例中,用于读取存储器访问请求的TType字段203包括后置错误检测处理启用(PEDPE)位207,该PEDPE位由发起读取存储器访问请求的S0C102设置(例如设置成‘I’)以指示对于读取存储器访问请求而启用后置错误检测处理而由S0C102重置(例如重置成‘0’)以指示禁止后置错误检测处理。数据接口 204从系统织构130接收写入存储器访问请求将向系统存储器140的关联汇集写入的数据。
[0031]MCI132包括控制逻辑200,该控制逻辑控制响应于系统织构130接收的存储器访问操作控制对系统存储器140的关联汇集的访问。响应于接收到系统织构130上的存储器访问操作的请求,控制逻辑200通过参考存储器访问请求的有效字段201和请求地址字段205来确定存储器访问请求是否有效并且指定在该MCI132控制的系统存储器140的汇集内的目标地址。如果不是,则丢弃存储器访问请求。然而如果控制逻辑200使存储器访问请求生效并且限定存储器访问请求为被引向它的关联系统存储器104之一,则控制逻辑200向帧格式化器210传输存储器访问请求(对于读取存储器访问请求包括PEDPE位207)和关联(如果存在)写入数据。
[0032]在至少一些实施例中,控制逻辑200包括可选后置错误处理预测器(PEPP)202,该PEPP基于用于以系统存储器140的关联汇集为目标的存储器访问请求的历史数据预测后置错误检测处理可能成功而未检测目标存储器块中的错误。响应于PEPP202确定后置错误检测处理对于特定读取存储器访问请求不可能成功而未检测目标存储器块中的错误,控制逻辑200对于该特定读取存储器访问请求而重置PEPDE位207。以下参照图5_6提供关于PEPP202及其操作的一个实施例的进一步细节。
[0033]帧格式化器210响应于接收到存储器访问请求和写入数据(如果有)将存储器访问请求和写入数据(如果有)格式化成一个或者多个帧并且经由下游存储器缓冲器接口 212向耦合到S0C102的存储器缓冲器134传输那些帧。如将理解的那样,帧格式可以基于多种因素在实现方式之间广泛变化,这些因素包括可用于实施下游存储器缓冲器接口 212和对应上游存储器缓冲器接口 214的管脚计数。[0034]如图2中进一步所示,MCI132还包括经由上游存储器缓冲器接口 214从耦合到S0C102的存储器缓冲器134接收帧的帧解码器220。帧解码器220对这样的帧解码以提取上游传输的数据和关联控制信息。循环冗余校验(CRC)检测器222还与帧行解码器220执行的处理并行地对帧执行CRC (例如奇偶校验或者其它CRC处理)以验证在从存储器缓冲器134的传输中尚未破坏该巾贞。响应于CRC检测器222通知尚未破坏巾贞的信号,巾贞解码器220转发从帧提取的控制信息(诸如标识数据属于的操作的数据标签、指示数据是否包含错误的数据错误指示符和(如以下进一步描述的)后置状态指示符),该后置状态指示符提供关于数据是否为受到后置错误检测处理的数据传送的一部分的指示。控制逻辑200接收帧解码器220提取的控制信息并且经由上游控制接口 206向系统织构130转发该控制信息。MCI132还包括用于由帧解码器220提取的上游数据的两个数据路径:(I)对于目标存储器块的关键字、受到后置错误检测处理的数据传送和其它高优先级数据传送而选择的快速路径226以及(2)包括用于缓冲低优先级数据的数据缓冲器224的缓冲数据路径。复用器228应用选择的仲裁策略以从两个数据路径之一选择数据用于在系统织构130上传输、但是最小化访问延时、优先从快速路径226选择数据而未让缓冲数据路径空闲(starve out)。
[0035]现在参照图3,图示根据一个实施例的图1的存储器缓冲器134的更具体视图。在所示实施例中,存储器缓冲器134包括经由下游存储器缓冲器接口 212从MCI131接收帧的帧解码器300。帧解码器300对帧解码并且确定每个存储器访问请求被引向多个附着的系统存储器140中的哪个系统存储器。因此,在附着的系统存储器140包括至少系统存储器140a和140b的描绘的示例中,帧解码器300确定存储器访问请求是否指定向系统存储器140a或者向系统存储器140b指派的目标地址并且相应地向控制器302a或者控制器302b转发存储器访问请求用于服务。控制器302a和302b通过将适当读取或者写入访问引向系统存储器140a和140b中的关联系统存储器来服务于从控制器302a、302b接收的存储器访问请求。
[0036]存储器缓冲器134还包括用于每个附着的系统存储器140a和140b的相应读取信道310a、310b。读取信道310a、310b中的每个读取信道包括优选地对从系统存储器140a和140b中的关联系统存储器读取的所有数据执行错误检测和错误纠正处理的ECC校验电路312a、312b。读取信道310a、3IOb中的每个读取信道还包括快速路径316a、316b,通过该快速路径也允许从系统存储器140a和140b中的关联系统存储器读取的选择的数据颗粒(granule)绕过ECC校验电路312a、312b以便减少存储器访问延时。例如在四个颗粒中从系统存储器140向处理器芯104传达存储器块,仅允许四个数据颗粒中的前三个数据颗粒绕过ECC校验电路312,而也总是通过ECC校验电路312路由所有四个颗粒,从而可以随着最后颗粒方便地上游转发指示存储器块是否包含错误的数据错误指示符。然后丢弃也通过ECC校验电路312路由的四个数据颗粒中的前三个数据颗粒,因为已经经由快速路径316a、316b转发它们。为了允许用最小延时转发经由快速路径316a、316b传输的数据,读取信道310a、310b中的每个读取信道还包括用于随需缓冲ECC校验电路312a、312b输出的更低优先级数据的数据缓冲器314a、314b。在每个读取信道310a、310b内的复用器318a、318b应用选择的仲裁策略以从数据缓冲器314a、314b和快速路径316a、316b选择数据用于转发。仲裁策略优先从快速路径316a、316b选择数据而未使缓冲数据路径空闲。
[0037]在一个优选实施例中,读取信道310a、3IOb中的每个读取信道仅通过包括ECC校验电路312和数据缓冲器314的缓冲数据路径路由与后置错误检测处理被禁止的读取存储器访问请求关联的数据并且如果调度允许则经由缓冲数据路径和快速路径316路由与后置错误检测处理被启用的读取存储器访问请求关联的数据。因此,与现有技术系统对照,读取信道310a、310b对目标存储器块的转发未依赖于确定整个目标存储器块无错误。取而代之,对于后置错误检测处理被PEDPE位207启用的读取存储器访问请求,读取信道310 —旦从系统存储器140接收的目标存储器块的至少一个数据颗粒(例如包含关键字的数据颗粒)可用就经由快速路径316转发数据颗粒。在已经从系统存储器140接收目标存储器块的所有数据颗粒之后,读取信道130利用它的ECC校验电路312对所有数据颗粒执行后置错误检测处理以确定目标存储器块是否包含错误并且如果可能(例如如果错误是单个符号错误并且未对目标存储器块执行后置数据错误纠正)则纠正错误。
[0038]如以下参照图7进一步讨论的那样,除了目标存储器块的颗粒之外,读取信道310还优选地随着目标存储器块的每个数据颗粒转发指示关联数据颗粒是否受到后置错误检测处理的后置状态指示符。读取信道310也优选地例如随着目标存储器块的至少最后颗粒(并且可能随着每个数据颗粒)转发指示对于目标存储器块是否已经检测到错误的数据错误指示符。还可以响应于检测到随着数据上游流动而出现的错误(例如CRC错误)来设置数据错误指不符。
[0039]存储器缓冲器134的读取信道310a、310b都耦合到由信道仲裁器322控制的复用器320的输入。信道仲裁器322应用希望的仲裁策略(例如修改的轮循)以一般提高在读取信道310a、310b之间的公平,而向具有后置错误检测处理的数据传送给予优先。信道仲裁器322选择的每个数据传送由帧格式化器330接收,该帧格式化器将数据传送格式化成一个或者多个帧并且在CRC生成器332追加校验值之后经由上游存储器缓冲器接口 214向耦合到存储器缓冲器134的MCI132传输那些帧。
[0040]现在参照图4,描绘根据一个实施例的示例过程的高级逻辑流程图,S0C102通过该过程确定是否将对于读取存储器访问操作而启用后置错误检测处理;该过程始于块400,然后继续至块402,该块图示L2控制器124等待从关联处理器芯104接收存储器访问请求。如块404和406所示,如果存储器访问请求是写入存储器访问请求,则L2控制器124执行其它可能常规处理。随后,该过程终止于块430。
[0041 ] 回到块404,响应于L2控制器124从关联处理器芯104接收读取存储器访问请求,该过程从块404继续块408,该块图示L2控制器124例如通过读取目录126以确定与读取存储器访问请求的目标地址关联的相干状态来确定L2高速缓存120是否可以服务于读取存储器访问请求而未在系统织构130上发起操作。响应于确定L2高速缓存120可以服务于读取存储器访问请求而未在系统织构130上发起对应操作,L2控制器124指引L2高速缓存120从L2阵列122向处理器芯104供应读取存储器访问请求的目标存储器块(块410)。随后,图4中描绘的过程结束于块430。
[0042]再次参照块408,如果L2控制器124确定L2高速缓存120不能服务于读取存储器访问请求而未在系统织构130上发起操作,则L2控制器124在块420进一步确定请求处理器芯104是否指示例如对于这一特定读取存储器访问请求、对于处理器芯104的这一线程或者对于处理器芯104的所有执行线程而禁用了数据错误投机。在一个实施例中,可以通过参考读取存储器访问请求内的数据错误投机字段来进行在块420所示的确定。响应于在块420确定禁用数据错误投机,L2控制器124在系统织构130上发起读取存储器访问操作而PEDPE位207被重置用于对于目标存储器块禁止后置数据错误处理(块422)。随后,图4中所示过程结束于块430。
[0043]回到块420,如果L2控制器124确定未禁用数据错误投机,则L2控制器124也在块424处基于读取存储器访问请求的事务类型(TType)确定是否对于这一读取存储器访问请求而允许后置数据错误检测。因此,L2控制器124实施如下策略,通过该策略,对于某些类型的读取存储器访问请求(例如数据加载、原子性加载和保留以及数据预取请求)而允许、但是对于其它读取存储器访问请求(例如指令加载、地址翻译加载和有修改意图的读取请求)未允许后置数据错误检测。换而言之,尽管事实为对于请求处理器芯104的读取存储器访问请求未禁用数据错误投机,但是L2控制器124却可以如图4中所示通过该过程响应于在块424的否定确定从块424继续先前描述的块422来对于选择的读取器存储器访问请求而禁止后置错误检测处理。然而响应于在块424的肯定确定,L2控制器在系统织构130上发起读取存储器访问操作而PEDPE位207被设置用于对于目标存储器块启用后置错误检测处理。应当注意,尽管L2控制器124设置PEDPE位207,但是可以用或者可以未用后置错误检测处理服务于在块426发起的读取存储器访问操作。在多数情况下,读取存储器访问操作将简单地由窥探读取存储器访问操作并且供应目标存储器块的另一 L2高速缓存120服务。另外,在读取存储器访问操作由存储器控制器132服务的其它情况下,存储器控制器132或者存储器缓冲器134可以鉴于调度考虑或者PEPP202指示可能在目标存储器块中检测到数据错误来选择不执行后置错误检测处理、但是代之以在供应目标存储器块的任何颗粒之前执行错误检测处理。在块426之后,图4中所示过程结束于块430。
[0044]在响应于系统织构130上的读取存储器访问操作从存储器子系统返回目标存储器块的数据颗粒时,L2控制器124优选地在L2阵列122中放置目标存储器块的数据颗粒。然而L2控制器124在目录126中标记数据颗粒为无效,除非并且直至L2控制器124从存储器子系统接收整个存储器块无数据错误的确认。
[0045]现在参照图5,图示根据一个实施例的MCI132的控制逻辑200中的可选PEPP202的更具体视图。
[0046]在运用当前存储器技术的数据处理系统100的大规模商用实施例中,至少大部分由于DRAM相对于竞争存储器技术的低成本而通常在体DRAM中实施系统存储器140。在这样的实施例中,系统存储器140中的每个系统存储器优选地包括多个DRAM组而每组包括多个DRAM芯片。向DRAM芯片指派实际地址,从而存储器块各自跨越组被“分条”而在给定的组中的每个DRAM芯片供应访问的存储器块的部分。
[0047]假设系统存储器140的这一构造,PEPP202包括多个条目500a_500n,每个条目对应于MCI132控制的系统存储器组140。每个条目500包括如果对应组中的DRAM芯片中的任何DRAM芯片出故障(例如经历阈值数目以上的不可纠正错误(UE))则(例如由系统固件)设置的芯片禁用字段502。条目500a-500n中的每个条目还包括可纠正错误(CE)计数器504a-504n中的相应CE计数器。在至少一个实施例中,PEPP202每当帧解码器220向控制逻辑200报告数据错误时递增相关CE计数器504并且在规律间隔定期地重置所有CE计数器504a-504n。如以下参照图6所示,PEPP202优选地使控制逻辑200对于芯片禁用字段502a-502n中的关联芯片禁用字段被设置的或者CE计数器504a_504n中的关联CE计数器具有满足(例如超过)CE阈值的值的任何系统存储器组140禁止数据错误检测投机。
[0048]现在参照图6,描绘根据一个实施例的示例方法的高级逻辑流程图,PEPP202通过该方法确定是否将对于读取存储器访问请求而禁止后置错误检测处理。所示过程始于块600、然后继续至块602,该块图示PEPP202等待控制逻辑200从系统织构130接收读取存储器访问请求。响应于控制逻辑200从系统织构130接收到读取存储器访问请求,PEPP202确定PEDPE位207是否指示对于读取存储器访问请求而启用后置数据错误检测。如果不是,则图6中所示过程结束于块614。然而如果PEPP202在块604确定读取存储器访问请求的PEDPE位207指示对于读取存储器访问请求而启用了后置错误检测处理,则该过程继续块606。
[0049]块606描绘PEPP202将请求地址字段205指定的目标地址映射到在MCI132控制的系统存储器140的汇集中的存储器组之中的特定存储器组。可以例如利用地址变换函数(例如模函数)或者基地址寄存器设施来执行在块606描绘的映射。基于确定的系统存储器组140,PEPP202在块608和610确定芯片禁用字段502a_502n中的关联芯片禁用字段是否被设置或者CE计数器504a-504n中的关联CE计数器是否具有满足(例如超过)CE阈值的值。响应于在块608和610的否定确定,PEPP202执行的处理结束于块614。然而响应于PEPP202确定芯片禁用字段502a-502n中的关联芯片禁用字段被设置或者CE计数器504a-504n中的关联CE计数器具有满足CE阈值的值,PEPP202修改读取存储器访问请求(例如通过重置PEDPE位207)以对于存储器访问请求而禁止后置错误检测处理。随后,图6中描绘的过程结束于块614。
[0050]现在参照图7,给出图示响应于读取存储器访问请求从存储器缓冲器134向处理器芯104传达存储器块和关联控制信号的时序图。在描绘的实施例中,存储器缓冲器134在例如各自32字节的四个颗粒(或者节拍(beat)) 700、702、704和706中传达可以具有例如128字节的大小的存储器块。存储器缓冲器134在ECC校验电路312执行的后置错误检测处理之前传输第一颗粒700,第一颗粒700优选地包括处理器芯104的加载型指令原先请求的关键字(例如8字节)。根据在存储器子系统内和在系统织构130运用的接口和存储器技术以及调度考虑,请求处理器芯104可以比最后颗粒706显著更早接收第一颗粒700而居间间隔总计为目标存储器块的总存储器访问延时的10%或者更多(例如在300个处理器芯时钟周期的总存储器访问延时之中的40个处理器芯时钟周期)。作为结果,允许请求处理器芯104在处理器芯104接收到最后数据颗粒706之前投机地执行依赖于存储器块的一个或者多个指令,并且如以下讨论的那样,甚至在处理器芯104接收到最后数据颗粒706之前投机地完成请求存储器块的加载型指令和依赖于目标存储器块的指令中的零个或者多个指令。(注意图7图示如下具体实施例,在该具体实施例中,在颗粒704与706之间的时间间隔比在颗粒702-704之间的时间间隔显著更长,因为ECC和CRC校验仅延迟最后颗粒706。)
[0051]在描绘的实施例中,颗粒700-706中的每个颗粒的数据传送包括控制信息,该控制信息包括后置状态指示符710和数据错误指示符712。确立可以在数据传送内实施为单个位的后置状态指示符710,以指示颗粒700-706中的关联颗粒属于受到后置数据错误处理的存储器块。确立也可以在数据传送内实施为单个位的数据错误指示符712,以指示在存储器块中检测到错误。在一个实施例中,解确立用于除了最后数据可能706之外的数据可能700、702和704中的每个数据颗粒的数据错误指示符712,并且最后数据颗粒706的数据错误指示符712用来指示相关ECC校验电路312或者CRC检测器222是否在目标存储器块内检测到数据错误。响应于数据错误指示符712被重置用于指示不存在数据错误,处理器芯104向处理器芯104的有架构状态交付加载型指令和投机地执行的依赖指令的执行结果。然而如果数据错误指示符712被设置用于指示在存储器块中检测到数据错误,则处理器芯104刷新(flush)加载型指令和投机地执行的依赖指令以及任何关联执行结果并且重新执行指令。处理器芯104优选地随着指示禁用数据错误投机向L2高速缓存120发送通过重新执行加载型指令而生成的读取存储器访问请求(例如见图4的块420)。
[0052]在前文讨论中,已经描述用于通过应用后置错误检测处理来减少处理器芯104读取从系统存储器140供应的数据的有效存储器访问延时的技术。如现在参照图8-13描述的那样,可以通过允许处理器芯140中的数据错误投机并且进一步通过允许处理器芯140投机地完成指令执行来扩展后置错误检测处理的益处。然而应当理解,可以与这里描述的后置错误检测处理独立地运用用于投机地完成指令执行的技术。
[0053]现在参照图8,描绘根据一个实施例的来自图1的处理器芯104的一部分的更具体视图。如图1中先前所示,ISU106包括GCT105,并且LSU108除了多级执行流水线800之外还包括LI高速缓存110和LMQ112。在描绘的实施例中,ISU106的GCT105包括完成逻辑和多个表条目802,每个表条目跟踪处理器芯104执行的多个指令组中的相应指令组,直至通过向处理器芯104的有架构状态(例如有架构寄存器和状态机)交付执行结果来完成(也称为“引退”)该指令组内的指令。
[0054]在描绘的实施例中,每个表条目802包括用于对于每个指令组内的指令跟踪数据错误投机的LMQ矢量804以及用于跟踪指令组的指令ID和指令组的完成依赖于的其它条件(例如分支投机)的状态的附加状态节段808。每个LMQ矢量804包括各自与LMQ112中的N (例如32)个条目中的相应条目对应的多个LMQ位806。因此,LMQ矢量804中的第一位对应于被指派LMQ标签“ I ”的LMQ条目820,LMQ矢量804中的第二位对应于被指派LMQ标签“2”的LMQ条目820,等等。响应于加载型指令指示的加载操作在LI高速缓存110中未命中,向加载型指令分配LMQ条目820,并且响应于向LMQl 12返回目标存储器块来取消分配LMQ条目820。
[0055]GCT105由取消分配总线822耦合到LMQl 12,GCT105通过该消分配总线从LMQl 12接收取消分配报告。此外,GCT105由完成总线824耦合到LSU108的执行流水线800 (并且由其它未图示的完成总线耦合到处理器芯104的其它执行单元的执行流水线),GCT105通过该完成总线接收标识执行已经完成的指令的完成报告。如以下讨论的那样,LSU108执行的至少加载型指令的完成报告可以是投机的,因为可以在向LSU108返回加载型指令的完成目标存储器块之前发送完成报告。
[0056]仍然参照图8,LSU108由派发总线826耦合到ISU106,LSU108的执行流水线800通过该派发总线接收存储器访问指令以用于执行。在描绘的实施例中,执行流水线800包括指令处理电路装置的多级,这些级例如包括解码级830、地址计算级832和完成级834。在这一示例中,完成级834是在LSU108内执行加载型和存储型指令的最后级。如以下描述的那样,不同于常规设计(在这些常规设计中,加载型指令响应于LI高速缓存110中的未命中而止步于完成级834直至向LSU108返回加载型指令的目标存储器块),GCT105使LSU108能够投机地完成加载型指令并且在从返回完成目标存储器块之前从完成级834去除它们,从而释放完成级834的资源用于由相同和/或其它线程中的其它指令使用。
[0057]现在参照图9,图示根据一个实施例的示例过程的高级逻辑流程图,LMQ112通过该过程处置读取存储器访问操作的目标存储器块的返回。该过程始于块900,然后继续至块902,该块描绘LMQl 12在LI高速缓存110中未命中时等待返回响应于被分配LMQ条目820的加载型指令在系统织构130上发起的读取存储器访问操作的目标存储器块的第一节拍(例如图7的第一颗粒700)。响应于从L2高速缓存120接收到读取存储器访问操作的目标存储器块的第一颗粒,LMQl 12在块904确定是否系统存储器140或者从L2高速缓存120供应目标存储器块。可以例如通过参考本地L2高速缓存120基于从系统织构130上的读取存储器访问操作收集的信息向数据颗粒追加的存储器源位来进行在块904处所示的确定。响应于在块904处的从系统存储器140供应存储器块的确定,该过程传向以下描述的块908。然而如果LMQl 12在块904确定从系统存储器140供应存储器块,则该过程从块904继续块906。
[0058]块906图示LMQ112确定向请求目标存储器块的加载型指令分配哪个LMQ条目820,并且设置该LMQ条目820内的存储器源位以指示从系统存储器140供应目标存储器块。该过程从块906继续至块908,该块描绘LMQl 12向LSU108的执行流水线800的完成级834转发存储器块的第一数据颗粒的关键数据字(例如8字节)。此外,如在块910所示,LMQ112在LI高速缓存110内安装第一数据颗粒和目标存储器块的每个后继数据颗粒,从而实现依赖于目标存储器块的指令调用的对LI高速缓存110的访问,以开始执行并且在LI高速缓存110中命中。关于块908和910,应当注意,在用后置错误检测处理从系统存储器140供应存储器块的情况下,向完成级834供应的关键数据字和在LI高速缓存110中安装的目标存储器块的颗粒是投机的。
[0059]如在块920所示,一旦接收到目标存储器块的所有节拍,LMQl 12然后在块922-950确定是否可以取消分配向请求目标存储器块的加载型指令分配的LMQ条目820以及向GCT105发送什么类型的取消分配报告。具体而言,LMQl 12在块922确定目标存储器块是否源自系统存储器140。如果不是,则接收的目标存储器块为非投机,并且LMQ112相应地经由取消分配总线822向GCT105传输取消分配报告,该取消分配报告包括相关LMQ条目820的LMQ标签和确立的“数据良好”指示。LMQ122还取消分配LMQ条目820,从而释放它用于向另一加载型指令分配(块942)。随后,图9中所示过程终止于块950。
[0060]回到块922,如果LMQl 12确定目标存储器块源自系统存储器140之一,则LMQl 12还在块924例如通过参考随着目标存储器块的最后数据颗粒(例如图7的数据颗粒706)传输的数据错误指示符712来确定目标存储器块是否包含数据错误。如果不是,则该过程传向如以上描述的块940、942和950。然而响应于在块924确定目标存储器块是否包含数据错误,LMQl 12使LI高速缓存110中的目标存储器块的所有颗粒无效(块930)。此外,在块932,LMQl 12经由取消分配总线822向GCT105传输报告,该报告包括相关LMQ条目820的LMQ标签和取消确立的“数据良好”指示(即数据错误指示)(块932)。然而在一个实施例中,LMQl 12未取消分配LMQ条目820、但是代之以保持LMQ条目820的分配以有助于重新发出读取存储器访问操作。在块932之后,图9中所示过程终止于块950。
[0061]现在参照图10,描绘根据一个实施例的示例过程的高级逻辑流程图,LSU108的完成级834通过该过程向GCT105报告完成加载型指令。该过程始于块1000、然后继续至块1002,该块图示LSU108的完成级834等待接收加载型指令请求的目标存储器块的关键数据字。响应于在完成级834接收加载型指令请求的关键数据字,完成级834在块1004例如通过用关键数据字参考LMQl 12提供的存取器源位来确定关键数据字是否由系统存储器140之一供应。如果不是,则该过程以下描述的继续块1010。响应于确定关键数据字是由系统存储器140之一供应的(并且因此可能包含数据错误),完成级834向GCT发送用于加载型指令的完成报告,该完成报告通过加载型指令的指令ID标识加载型指令并且通过向加载型指令分配的LMQ条目820的LMQ标签标识LMQ条目。如以下进一步描述的那样,LMQ标签用来发起GCT105跟踪加载型指令和所有依赖指令用于检测数据错误。随后,LSU108从指令流水线800去除加载型指令,从而指令流水线800未保持关于加载型指令的信息(块1008)。在块1008之后,图10中所示过程结束于块1020。
[0062]现在参照块1010,对于关键数据字不是源自系统存储器140之一的加载型指令,完成级834例如通过确定加载型指令从LI高速缓存110接收它的关键数据字并向加载型指令分配的LMQ条目820让它的存储器源位被设置用于指示目标存储区块是由系统存储器140之一向LI高速缓存110供应来确定加载型指令是否依赖于仍然投机的(即用后置错误检测处理供应的)目标存储器块。响应于在块1010的肯定确定,该过程继续已经描述的块1006和1008。然而如果完成级834在块1010进行否定确定,则加载型指令未受到数据错误投机,并且完成级834相应地向GCT105发送完成报告而未指定LMQ标签。在块1012之后,图10中所不过程结束于块1020。
[0063]应当理解,图10中给出的指令完成过程允许可以依赖于由数据结构(例如LMQl 12)跟踪的一个或者多个高延时条件(例如在这一示例中为从系统存储器140之一返回数据)的指令(在这一情况下为加载型指令)在解决指令依赖于的条件之前被投机地完成。通过向GCT105传递进入数据结构的索引(例如LMQ标签)以允许GCT105跟踪高延时条件的解决来实现这一投机完成。
[0064]现在参照图11,图示根据一个实施例的示例过程的高级逻辑流程图,GCT105通过该过程跟踪完成的加载型指令(包括投机完成的加载型指令)。该过程始于块1100、然后继续至块1102,该块描绘GCT105等待经由完成总线824从LSU108的完成级834接收完成报告。完成报告包括加载型指令的指令ID并且如参照图10描述的那样如果被投机地完成则将包括有效LMQ标签。响应于接收到完成报告,GCT105在适当GCT条目802的状态节段808中标记指令为完成(块1104)。此外,GCT105在块1106确定完成报告是否为投机,这在描述的实施例中包括确定从完成级834接收的完成报告是否包括标识LMQ条目820的LMQ标签,该LMQ条目跟踪尚未完成完全满足的读取存储器访问操作。响应于在块1106的否定确定,该过程结束于块1110。然而如果GCT105在块1106确定完成报告为投机,则GCT105在跟踪投机地完成的加载型指令的GCT表条目802的LMQ矢量804中设置LMQ标签标识的LMQ位806。因此,GCT105假设跟踪加载型指令的投机状态以使LSU108能够释放指令流水线800的向加载型指令分配的资源。在块1108之后,图11中所示过程结束于块1110。
[0065]现在参照图12,描绘根据一个实施例的示例过程的高级逻辑流程图,GCT105通过该过程处置LMQ取消分配报告。该过程始于块1200、然后继续至块1202,该块图示GCT105等待经由取消分配总线822从LMQ112接收取消分配报告。如以上所言,取消分配报告优选地包括相关LMQ条目820的LMQ标签和指示目标存储器块是否包含数据错误的“数据良好”指示。响应于接收到取消分配报告,GCT105在块1204确定取消分配报告是否指示加载型指令的目标存储器块是否包含数据错误。如果不是,则GCT105清除与在取消分配报告中指定的LMQ标签对应的LMQ位列806、因此去除依赖于返回非投机数据的任何加载型指令的完成条件。图12的过程然后结束于块1210。然而响应于在块1204确定取消分配报告的“数据良好”指示是指示目标存储器块包含数据错误(即被取消确立),GCT105标记每个如下表条目802用于在完成时刷新,对于该表条目设置与在取消分配报告中包含的LMQ标签对应的LMQ位806。因此,GCT105保证如果检测到数据错误则刷新被执行后置数据错误处理的加载型指令而不是向处理器芯104的有架构状态交付。在块1208之后,图12的过程结束于块1210。
[0066]现在参照图13,描绘根据一个实施例的示例过程的高级逻辑流程图,GCT105通过该过程完成指令组。该过程始于块1300,然后继续至块1302,该块图示GCT105选择最旧表条目820用于处理。在块1304,GCT105确定选择的表条目802是否具有防止由选择的表条目802跟踪的指令组被处理完成的任何剩余条件(包括LMQ矢量804中的任何设置的LMQ位806)。如果是这样,则该过程结束于块1320。
[0067]回到块1304,响应于确定选择的表条目802没有防止由选择的表条目802跟踪的指令组被处理完成的任何剩余条件,GCT105在块1306确定选择的表条目802是否被标记刷新。如果不是,则GCT105通过向处理器芯104的有架构状态交付在选择的表条目802跟踪的指令组内的所有指令的执行结果来完成那些指令。随后,图13中所示过程结束于块1320。然而如果在选择的表条目802跟踪的指令组内的一个或者多个指令被标记刷新,则GCT105刷新与选择的表条目802对应的指令并且丢弃所有有关执行结果。随后,ISU106重新发出刷新的指令用于执行而数据错误投机被禁用(块1314)。图13的过程然后结束于块1320。
[0068]应当注意,参照图9-13公开的技术不限于应用于后置错误检测处理由存储器子系统执行的加载型指令的投机完成。取而代之,公开的技术一般适用于并且支持与数据结构跟踪的长延时操作关联的任何指令的投机完成。
[0069]图14是在半导体设计、制造和/或测试中使用的设计过程的流程图。图14示出了例如在半导体IC逻辑设计、仿真、测试、布图和制造中使用的示例性设计流程1400的方块图。设计流程1400包括用于处理设计结构或器件以产生上述的设计结构和/或器件的逻辑上或其他功能上等效表示的过程、机器和/或机制。由设计流程1400处理和/或产生的设计结构可以在机器可读传输或存储介质上被编码以包括数据和/或指令,所述数据和/或指令在数据处理系统上执行或以其他方式处理时,产生硬件组件、电路、器件或系统的逻辑上、结构上、机械上或其他功能上的等效表示。机器包括但不限于用于IC设计过程(例如设计、制造或仿真电路、组件、器件或系统)的任何机器。例如,机器可以包括:用于产生掩模的光刻机、机器和/或设备(例如电子束直写仪)、用于仿真设计结构的计算机或设备、用于制造或测试过程的任何装置,或用于将所述设计结构的功能上的等效表示编程到任何介质中的任何机器(例如,用于对可编程门阵列进行编程的机器)。
[0070]设计流程1400可随被设计的表示类型而不同。例如,用于构建专用IC (ASIC)的设计流程1400可能不同于用于设计标准组件的设计流程1400,或不同于用于将设计实例化到可编程阵列(例如,由Altera? inc.或Xilinx? inc.提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA))中的设计流程1400。
[0071]图14示出了多个此类设计结构,其中包括优选地由设计过程1410处理的输入设计结构1420。设计结构1420可以是由设计过程1410生成和处理以产生硬件器件的逻辑上等效的功能表示的逻辑仿真设计结构。设计结构1420还可以或备选地包括数据和/或程序指令,所述数据和/或程序指令由设计过程1410处理时,生成硬件器件的物理结构的功能表示。无论表示功能和/或结构设计特性,均可以使用例如由核心开发人员/设计人员实施的电子计算机辅助设计(ECAD)生成设计结构1420。当编码在机器可读数据传输、门阵列或存储介质上时,设计结构1420可以由设计过程1410内的一个或多个硬件和/或软件模块访问和处理以仿真或以其他方式在功能上表示上面描述的那些电子组件、电路、电子或逻辑模块、装置、器件或系统。因此,设计结构1420可以包括文件或其他数据结构,其中包括人类和/或机器可读源代码、编译结构和计算机可执行代码结构,当所述文件或其他数据结构由设计或仿真数据处理系统处理时,在功能上仿真或以其他方式表示电路或其他级别的硬件逻辑设计。此类数据结构可以包括硬件描述语言(HDL)设计实体或遵循和/或兼容低级HDL设计语言(例如Verilog和VHDL)和/或高级设计语言(例如C或C++)的其他数据结构。
[0072]设计过程1410优选地采用和结合硬件和/或软件模块,所述模块用于合成、转换或以其他方式处理上面描述的组件、电路、器件或逻辑结构的设计/仿真功能等价物以生成可以包含设计结构(例如设计结构1420)的网表1480。网表1480例如可以包括编译或以其他方式处理的数据结构,所述数据结构表示描述与集成电路设计中的其他元件和电路的连接的线缆、分离组件、逻辑门、控制电路、I/O设备、模型等的列表。网表1480可以使用迭代过程合成,其中网表1480被重新合成一次或多次,具体取决于器件的设计规范和参数。对于在此所述的其他设计结构类型,网表1480可以记录在机器可读数据存储介质上或编程到可编程门阵列中。所述介质可以是非易失性存储介质,例如磁或光盘驱动器、可编程门阵列、压缩闪存或其他闪存。此外或备选地,所述介质可以是可在其上经由因特网或其他适合联网手段传输和中间存储数据分组的系统或高速缓冲存储器、缓冲器空间或导电或光导器件和材料。
[0073]设计过程1410可以包括用于处理包括网表1480在内的各种输入数据结构类型的硬件和软件模块。此类数据结构类型例如可以驻留在库元件1430内并包括一组常用元件、电路和器件,其中包括给定制造技术(例如,不同的技术节点,32纳米、45纳米、90纳米等)的模型、布图和符号表示。所述数据结构类型还可包括设计规范1440、特征数据1450、检验数据1460、设计规则1470和测试数据文件1485,它们可以包括输入测试模式、输出测试结果和其他测试信息。设计过程1410还可例如包括标准机械设计过程,例如用于诸如铸造、成型和模压成形等操作的应力分析、热分析、机械事件仿真、过程仿真。机械设计领域的技术人员可以在不偏离本发明的范围和精神的情况下理解在设计过程1410中使用的可能机械设计工具和应用的范围。设计过程1410还可包括用于执行诸如定时分析、检验、设计规则检查、放置和路由操作之类的标准电路设计过程的模块。
[0074]设计过程1410采用和结合逻辑和物理设计工具(例如HDL编译器)以及仿真建模工具以便与任何其他机械设计或数据(如果适用)一起处理设计结构1420连同示出的部分或全部支持数据结构,从而生成第二设计结构1490。设计结构1490以用于机械设备和结构的数据交换的数据格式(例如以IGES、DXF、Parasolid XT、JT、DRC或任何其他用于存储或呈现此类机械设计结构的适合格式)驻留在存储介质或可编程门阵列上。类似于设计结构1420,设计结构1490优选地包括一个或多个文件、数据结构或其他计算机编码的数据或指令,它们驻留在传输或数据存储介质上,并且由ECAD系统处理时生成上面描述的本发明的一个或多个实施例的逻辑上或以其他方式在功能上等效的形式。在一个实施例中,设计结构1490可以包括在功能上仿真上面描述的器件的编译后的可执行HDL仿真模型。
[0075]设计结构1490还可以采用用于集成电路的布图数据交换的数据格式和/或符号数据格式(例如以⑶SII (⑶S2)、GLU OASIS、图文件或任何其他用于存储此类设计数据结构的适合格式存储的信息)。设计结构1490可以包括信息,例如符号数据、图文件、测试数据文件、设计内容文件、制造数据、布图参数、线缆、金属级别、通孔、形状、用于在整个生产线中路由的数据,以及制造商或其他设计人员/开发人员制造上述的器件或结构所需的任何其他数据。设计结构1490然后可以继续到阶段1495,例如,在阶段1495,设计结构1490:继续到流片(tape-out),被发布到制造公司、被发布到掩模室(mask house)、被发送到其他设计室,被发回给客户等。
[0076]如已经描述的那样,在一种数据处理系统的至少一个实施例中,至少基于存储器访问请求的访问类型,在相对于对存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间进行选择。响应于接收到存储器访问请求并且选择第一定时,在对目标存储器块完成错误检测处理之前向请求器传输来自目标存储器块的数据。响应于接收到存储器访问请求并且选择第二定时,在对目标存储器块完成错误检测处理之后并且响应于对目标存储器块完成错误检测处理,向请求器传输来自目标存储器块的数据。
[0077]在一种数据处理系统的至少一个实施例中,至少基于存储器子系统中的先前检测到的错误的地址,在相对于对存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间进行选择。响应于接收到存储器访问请求并且选择第一定时,在对目标存储器块完成错误检测处理之前,向请求器传输来自目标存储器块的数据。响应于接收到存储器访问请求并且选择第二定时,在对目标存储器块完成错误检测处理之后并且响应于对目标存储器块完成错误检测处理,向请求器传输来自目标存储器块的数据。
[0078]在处理器芯中,在与处理器芯的执行单元关联的数据结构的条目中跟踪高延时操作。在执行单元中,在完成高延时操作之前,投机地完成执行依赖于由数据结构的条目跟踪的高延时操作的指令。投机地完成指令包括向处理器芯的完成逻辑报告条目的标识符并且从执行单元的执行流水线去除指令。完成逻辑记录指令对高延时操作的依赖并且仅在成功完成高延时操作之后向处理器的有架构状态交付指令的执行结果。
[0079]尽管已经如参照优选实施例描述的那样具体示出各种实施例,但是本领域技术人员将理解可以在其中进行形式和细节上的各种改变而未脱离权利要求的精神实质和范围。例如虽然已经关于对本发明的功能进行指引的计算机系统描述方面,但是应当理解,可以备选地实施本发明为包括计算机可读存储设备(例如易失性或者非易失性存储器、光盘或者磁盘或者其它法定制造)的程序产品,该计算机可读存储设备存储可以由数据处理系统执行的程序代码。另外定义如这里所用术语“耦合”涵盖运用在耦合的单元或者块之间的直接电连接的实施例以及运用在耦合的单元或者块之间的使用一个或者多个居间单元或者块而实现的间接电连接的实施例。此外,这里定义术语“示例”为意味着特征的一个示例而未必是最佳或者优选示例。
【权利要求】
1.一种数据处理方法,包括: 至少基于存储器访问请求的访问类型,在相对于对所述存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间选择; 响应于接收到所述存储器访问请求并且选择所述第一定时,在对所述目标存储器块完成错误检测处理之前向请求器传输来自所述目标存储器块的数据;以及 响应于接收到所述存储器访问请求并且选择所述第二定时,在对所述目标存储器块完成错误检测处理之后并且响应于对所述目标存储器块完成错误检测处理,向所述请求器传输来自所述目标存储器块的数据。
2.根据权利要求1所述的方法,其中所述选择包括对于如下存储器访问请求选择所述第一定时,该存储器访问请求是包括通过执行加载型指令而生成的需求数据加载请求和数据预取请求的集合中的请求。
3.根据权利要求1所述的方法,其中所述选择包括存储器子系统在至少所述第一定时与所述第二定时之间选择。
4.根据权利要求1所述的方法,其中所述选择还包括至少基于存储器子系统中的先前检测到的错误的地址在所述第一定时与所述第二定时之间选择。
5.根据权利要求1所述的方法,还包括: 存储器子系统与所述目标存储器块关联地发送相对于对所述目标存储器块完成错误检测处理而言的数据传输的定时的后置状态指示符。
6.根据权利要求4所述的方法,还包括基于由所述后置状态指示符指示的定时在处理器芯中处置所述目标存储器·块。
7.根据权利要求1所述的方法,还包括: 响应于接收到所述存储器访问请求并且选择所述第一定时,传输指示所述目标存储器块是否具有数据错误的数据错误指示符。
8.根据权利要求7所述的方法,其中: 所述请求器包括处理器芯; 所述方法还包括: 在所述处理器芯中,在接收所述数据错误指示符之前,投机地完成执行依赖于所述目标存储器块的一个或者多个指令; 以及 响应于所述数据错误指示符,完成所述一个或者多个指令。
9.根据权利要求7所述的方法,其中: 传输数据包括按照间隔传输所述目标存储器块的颗粒;以及 传输所述数据错误指示符包括随着除了第一颗粒之外的所述颗粒之一传输所述数据错误指示符。
10.根据权利要求1所述的方法,还包括: 响应于在所述目标存储器块中检测到错误,所述请求器重发所述存储器访问请求而所述第一定时被禁用。
11.一种数据处理系统的存储器子系统,包括: 错误检测电路;以及耦合到系统存储器的控制逻辑,其中所述控制逻辑至少基于存储器访问请求的访问类型在相对于由所述错误检测电路对所述存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间选择,其中所述控制逻辑响应于接收到所述存储器访问请求并且选择所述第一定时使所述存储器子系统在由所述错误检测电路对所述目标存储器块完成错误检测处理之前向请求器传输来自所述目标存储器块的数据,并且其中所述控制逻辑响应于接收到所述存储器访问请求并且选择所述第二定时使所述存储器子系统在由所述错误检测电路对所述目标存储器块完成错误检测处理之后并且响应于由所述错误检测电路对所述目标存储器块完成错误检测处理向所述请求器传输来自所述目标存储器块的数据。
12.根据权利要求11所述的存储器子系统,其中所述控制逻辑对于如下存储器访问请求选择所述第一定时,该存储器访问请求是包括通过执行加载型指令而生成的需求数据加载请求和数据预取请求的集合中的请求。
13.根据权利要求11所述的存储器子系统,其中所述存储器子系统进一步至少基于存储器子系统中的先前检测到的错误的地址在所述第一定时与所述第二定时之间选择。
14.根据权利要求11所述的存储器子系统,还包括: 存储器子系统与所述目标存储器块关联地发送相对于对所述目标存储器块完成错误检测处理而言的数据传输的定时的后置状态指示符。
15.根据权利要求11所述的存储器子系统,其中所述存储器子系统响应于接收所述存储器访问请求并且选择所述第一定时来传输指示所述目标存储器块是否具有数据错误的数据错误指示符。
16.根据权利要求15所述的存储器子系统,其中: 所述存储器子系统 按照间隔传输所述目标存储器块的颗粒并且随着除了第一颗粒之外的所述颗粒之一传输所述数据错误指示符。
17.一种数据处理系统,包括: 根据权利要求15所述的存储器子系统;以及 耦合到所述存储器子系统的处理器芯,其中所述处理器芯包括所述请求器。
18.根据权利要求17所述的数据处理系统,其中所述处理器芯基于由所述后置状态指示符指示的定时处置所述目标存储器块。
19.根据权利要求17所述的数据处理系统,其中所述处理器芯包括: 执行单元,在接收到所述数据错误指示符之前投机地完成执行依赖于所述目标存储器块的一个或者多个指令;以及 完成逻辑,响应于所述数据错误指示符完成所述一个或者多个指令。
20.根据权利要求17所述的数据处理系统,其中所述处理器芯响应于所述数据错误指示符指示所述目标存储器块中的错误来重发所述存储器访问请求而所述第一定时被禁用。
21.一种在机器可读存储介质中有形地体现的设计结构,用于设计、制造或者测试集成电路,所述设计结构包括: 数据处理系统的存储器子系统,包括: 错误检测电路;以及 耦合到系统存储器的控制逻辑,其中所述控制逻辑至少基于存储器访问请求的访问类型在相对于由所述错误检测电路对所述存储器访问请求的目标存储器块完成错误检测处理而言的数据传输的至少第一定时与第二定时之间选择,其中所述控制逻辑响应于接收所述存储器访问请求并且选择所述第一定时使所述存储器子系统在由所述错误检测电路对所述目标存储器块完成错误检测处理之前向请求器传输来自所述目标存储器块的数据,并且其中所述控制逻辑响应于接收到所述存储器访问请求并且选择所述第二定时使所述存储器子系统在由所述错误检测电路对所述目标存储器块完成错误检测处理之后并且响应于由所述错误检测电路对所述目标存储器块完成错误检测处理向所述请求器传输来自所述目标存储器块的数据。
22.根据权利要求21所述的设计结构,其中所述设计结构包括:硬件描述语言(HDL)设计结构 。
【文档编号】G06F11/00GK103823722SQ201310567563
【公开日】2014年5月28日 申请日期:2013年11月14日 优先权日:2012年11月16日
【发明者】R·A·格诺尼, J·S·多德森, G·L·格思里, W·J·斯塔克, J·A·施蒂切利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1