在数据处理系统中用ecc选择性地执行单周期写操作的制作方法

文档序号:6593897阅读:375来源:国知局
专利名称:在数据处理系统中用ecc选择性地执行单周期写操作的制作方法
技术领域
本公开一般涉及数字处理系统,更具体而言涉及使用ECC的写操作。
背景技术
一般使用纠错码(ECC)和奇偶校验来提供用于存储器的检错和/或纠错。通常, ECC与使用奇偶校验相比以降低的性能支持更高水平的检错。此外,特定存储器的某些用 户相比于其它用户而言更加着重于检错,并且愿意牺牲某些性能来获得一定水平的安全验 证。其它用户相对于检错不那么严格,因此不愿意为附加检错能力牺牲性能。此外,不同的 检错和/或纠错方案以不同的方式影响处理器指令流水线内的执行时序。


本发明由附图以示例的方式示出且不受附图的限制,在附图中相同的附图标记指 示类似的元件。附图中的元素是为了简单明了而进行图示且不一定按比例绘制。图1以方框图的形式图示依照本发明的一个实施例的数据处理系统。图2以方框图的形式图示依照本发明的一个实施例的可在图1的数据处理系统内 使用的存储器31的一部分;图3以方框图的形式图示依照本发明的一个实施例的可在图1的数据处理系统内 使用的存储器32的一部分;图4以方框图的形式图示依照本发明的一个实施例的具有后写入缓冲器且可在 图1的数据处理系统内使用的存储器33的一部分。图5以方框图的形式图示依照本发明的一个实施例的图4的后写入缓冲器;图6图示依照本发明的一个实施例的图1的数据处理系统的流水线阶段的表格;图7 17图示依照本发明的各种实施例的流水线和执行时序的各种不同示例的 时序图;以及图18图示依照本发明的一个实施例的图1的数据处理系统的单周期执行单元。
具体实施例方式在一个实施例中,存储器能够在或者奇偶校验或者ECC模式下操作。在一个实施 例中,在ECC模式下,用多个地址来执行部分写入(即向少于存储器中的所有区块(bank) 写入),包括读访问和写访问(用于执行读-修改-写)两者。并且,依照一个实施例,对 于ECC模式下的部分写而言,只有未被以所述部分写入来写入的那些区块被读取以用于 读-修改-写操作的读访问部分。虽然在本实施例中,不能保证校验位的正确性和症状位 (syndrome bit)的生成是正确的,但可能存在这可被允许、可管理、乃至期望的情况。然而, 在一个实施例中,可以用一次访问、即单次访问来执行ECC模式下的全写入(即向存储器中 的所有区块写入)。也就是说,能够在不需要写访问之前的读访问的情况下用单次写访问来 执行全写入(即,在不需要读-修改-写操作的情况下)。以这种方式,存储器当处于ECC模式时可以比先前可获得的那些更高效地操作。并且,在一个实施例中,由于存储器在ECC模式下或非ECC模式下操作的能力,当 在ECC模式对比非ECC模式下操作时,还可以以不同的方式来配置处理器流水线。例如,在 ECC模式下,可以将单周期指令的执行从处理器流水线的一个执行阶段移动至处理器流水 线的另一阶段,或者可以将用于存储指令的写数据的发送从一个执行阶段移动到另一个。如本文所使用的,使用术语“总线”来提及多种信号或导线,其可以用来传输一个 或多个各种类型的信息,诸如数据、地址、控制、或状态。可以根据是单个导线、多个导线、单 向导线、或双向导线来图示或描述本文所讨论的导线。然而,不同的实施例可以改变导线的 实现。例如,可以使用单独的单向导线而不是双向导线,反之亦然。并且,可以用串行地或 以时间复用方式来传输多个信号的单个导线来代替多个导线。类似地,可以将载送多个信 号的单个导线分离成载送这些信号的子集的各种不同导线。因此,存在许多用于传输信号 的选择。当提及信号、状态位、或类似装置分别到其逻辑真或逻辑假状态的表现时,在本文 中使用术语“确证(assert)”或“设定”和“取消”(或“取消确证(deassert) ””或“清零 (clear)”)。如果逻辑真状态是逻辑电平一,则逻辑假状态是逻辑电平零。并且,如果逻辑 真状态是逻辑电平零,则逻辑假状态是逻辑电平一。图1以方框图形式图示依照本发明的一个实施例的数据处理系统10。数据处理 系统10包括处理器12、系统总线14、存储器16、多个外围设备,诸如外围设备18、外围设备 20、和在某些实施例中的附加外围设备,如将外围设备18与外围设备20分离的图1中的点 所指示的。存储器16是通过双向导线耦合到系统总线14的系统存储器,所述双向导线在 一种形式中具有多个导线。在所示的形式中,外围设备18和20中的每一个如处理器12 — 样通过双向多个导线耦合到系统总线14。处理器12包括经由具有多个导线的双向总线耦 合到系统总线14的总线接口单元22。总线接口单元22经由双向导线耦合到内部总线M。 内部总线M是多导线通信总线。经由各双向导线耦合到内部总线M的是高速缓冲存储器 (cache) 26、存储器观、和中央处理单元(CPU) 30。CPU 30实现数据处理操作。高速缓冲存 储器26、存储器^jncPU 30中的每一个经由各双向导线耦合到内部总线。请注意,存储 器观和存储器16可以是任何类型的存储器,并且外围设备18和20每个可以是任何类型 的外围设备或设备。在一个实施例中,所有数据处理器系统10在单个集成电路上。或者, 可以使用不止一个集成电路来实现数据处理系统10。在一个实施例中,至少所有处理器12 在单个集成电路上。在操作中,处理器12运行以通过执行多个数据处理指令来实现多种数据处理功 能。高速缓冲存储器26是用于CPU 30所需的频繁使用信息的临时数据仓库。不在高速缓 冲存储器26内的CPU 30所需的信息被存储在存储器观或存储器16中。在一个实施例 中,可以将存储器观称为内部存储器(这里,它在处理器12内部),同时可以将存储器16 称为外部存储器(这里,它在处理器12外部)。总线接口单元22仅是处理器12与系统总 线14之间的多个接口单元中的一个。总线接口单元22运行以协调与CPU 30的指令执行 有关的信息流。经由总线接口单元22在CPU 30与系统总线14之间交换由指令执行得到 的控制信息和数据。图2图示依照本发明的一个实施例的可在系统10内使用的存储器31。存储器31可以表示图1的存储器观、存储器16、或高速缓冲存储器沈的一部分。存储器31包括含 有许多存储器区块和保护储存器45的存储器存储电路40。在所示的实施例中,存储器存储电路40包括8个区块区块042、区块143.....区块744。替换实施例可以包括任何数目的区块。存储器31还包括控制逻辑46和选择逻辑60。选择逻辑被耦合到存储器存储电 路40和控制逻辑46。控制逻辑46被双向地耦合到存储器存储电路40且包括控制寄存器 48、模式逻辑50、共享的异-或逻辑O(OR)树52、和修正逻辑M。控制寄存器48被耦合到 模式逻辑50,模式逻辑50基于控制寄存器48内的一个或多个控制位的值来向选择逻辑60 的控制输入端输出模式指示符62。在一个实施例中,模式62指示什么检错模式存储器31 正在操作。例如,在所示的实施例中,基于存储在控制寄存器48中的值,模式62指示存储 器31是在ECC模式还是奇偶校验模式下操作。在一个实施例中,控制寄存器48内的单个 位指示存储器31是在ECC模式下还是奇偶校验模式下操作。或者,可以使用多个位来指示 ECC或奇偶校验模式。在ECC模式下,保护储存器45的每个条目将用于相应条目的相应校验位存储在区 块0 7中。例如,保护储存器45的第一条目存储与存储在每个区块0 7的第一条目中 的数据相对应的校验位。但是,在奇偶校验模式下,保护储存器45的每个条目存储与每个 区块0 7中的条目相对应的奇偶校验位。例如,在奇偶校验模式下,保护储存器45的第 一条目将用于第一条目的奇偶校验位存储在每个区块0 7中。因此,在其中存在8个区 块的所示实施例中,保护储存器45的每个条目存储8个奇偶校验位,区块0 7中的每个 一个。
在ECC模式下,共享XOR树52被耦合以从区块0至区块7中的每一个和从保护储 存器45接收信息。在ECC模式下,共享XOR树52经由从总线M或14或从区块0 7中 的每一个中的特定条目、或两者的组合接收到的信息生成被提供给保护储存器45以便存 储在相应条目中的校验位56。并且,在ECC模式下,共享XOR树52基于从区块0 7中的 每一个中的特定条目接收到的信息和从保护储存器45接收到的相应校验位生成被提供给 修正逻辑M的症状位58。在ECC模式下,修正逻辑M还从每个区块0 7中的特定条目 接收信息并使用相应的症状位58来修正接收到的信息并将经修正的信息从区块0 7的 特定条目提供给选择逻辑60。因此,选择逻辑60基于模式62的值将修正逻辑M的输出提 供给总线M或14 (如果在ECC模式下)或将区块0 7中的一个或多个的输出直接提供 给总线M或14 (如果在奇偶校验模式下)。请注意,在奇偶校验模式下,还可以将相应的奇 偶校验位从保护储存器45提供给总线M或14。 因此,对于奇偶校验模式下的读操作而言,选择逻辑60将区块0 7中的一个或 多个中的被访问条目的输出、以及相应的奇偶校验位提供给总线M或14。对于ECC模式 下的读操作而言,选择逻辑60将修正逻辑M的输出提供给总线M或14。对于奇偶校验 模式下的写操作而言,写数据被直接提供给被写操作访问地址寻址的区块0 7中的一个 或多个中的条目。也就是说,可以向区块0 7中的任何数目的区块执行写,并且保护储存 器45的相应条目中的相应奇偶校验位也在共享XOR树52中的生成之后基于每个位地被更 新。以这种方式,如果只有一个区块由于写操作而被写入,则保护储存器45的相应条目中 只有一个位被更新。可以由控制逻辑46(未示出)内的逻辑以已知方式来执行奇偶校验模式下的奇偶校验位的更新。对于ECC模式下的全写入操作(其中所有区块0 7都被写入),不需要执行 读-修改-写(RMW)操作,以这种方式,可以用一次或单次访问(例如在单处理器周期或单 时钟周期中)来执行全写操作(向存储器31的所有区块写入)。在这种情况下,写数据被 提供给被全写操作访问地址寻址的区块0 7的每个条目。写数据也被提供给共享XOR树 52,其生成相应的校验位并经由校验位56将它们提供给保护储存器45以便存储在相应的 条目中。在一个实施例中,共享XOR树52是组合逻辑,其中,可以在与向区块0 7写入写 数据相同的处理器或时钟周期中完成校验位的生成和写回。对于ECC模式下的部分写操作而言(其中不是所有的区块0 7都被写入),执行 读-修改-写(RMW)。因此,执行对不是所有区块0 7的写操作要求多次访问(例如多个 处理器周期或时钟周期),并且不能如用于全写操作的情况一样用单次访问来执行。在一个 实施例中,当在ECC模式下进行部分写时,则只有来自未被正在访问(即未被正在写入)的 区块的数据被提供给共享XOR树52。将被写入被访问区块的写数据也被提供给共享XOR树 52。因此,共享XOR树52生成用于新条目(其包括新写数据)的相应校验位,并经由校验 位56来提供这些校验位以便存储在保护储存器45的相应条目中。请注意,在本实施例中, 不保证被用来形成校验位的从其它区块(未被写入的那些)读取的数据的正确性。也就是 说,不是在将读数据用于使用新写数据来生成新校验位之前首先对其进行纠错和修正。例 如,如果数据正在被写入区块1,则与将被写入区块1的写数据相组合地使用来自区块0和 2 7的读数据以生成将被存储回到保护储存器45的相应条目的新校验位。但是,在图2 的实施例中,不是在生成校验位之前首先对来自区块0和2 7的读数据进行检错和修正, 因此不能保证数据位的正确性。然而,在某些实施例中,不保证读数据正确可能不重要。例如,当ECC错误的计数 (tally)正在被累积以确定留下多少存储器操作裕度时,情况可能如此。在这种情况下,控 制逻辑46内的逻辑或系统10内的其它逻辑可能正在执行此计数以确定操作裕度。或者, 在其中区块0 7内的数据由于当前可能存储在所有或一部分区块0 7中的内容是无意 义数据(即垃圾数据)或被已知具有错误的数据而首先被初始化的情况下,正确性可能不 重要。正确性在存储器31的初始化周期期间也可能不重要。因此,可能存在其中最初不需 要保证正确的许多不同实例,但可以写入适当的奇偶校验信息以便稍后的访问能够提供可 修正数据。然而,还存在其中应在RMW操作的读周期期间(即在写操作的读周期期间)执行 读数据的修正以便生成和存储正确校验位的许多实例,正确的校验位随后被用来生成正确 的症状位以进行纠错。图3图示依照本发明的另一实施例的可在系统10内使用的存储器 32的一部分。存储器32可以表示图1的存储器观、存储器16、或高速缓冲存储器沈的一 部分。请注意,存储器32与图2的存储器31共享许多类似元素,其中,用相同的号码来参 考相同的元素。对上文提供的存储器31的许多元素的描述还适用于图3的存储器32的相 同元素。因此,将不描述图3的完整操作和连接性。除控制寄存器48和模式逻辑50之外,控制逻辑66还包括共享XOR树72、修正逻 辑76、数据合并逻辑78、和共享XOR树80。共享XOR树72和修正逻辑76与共享XOR树52 和修正逻辑M类似地进行操作。然而,不是共享XOR树72生成用于被存储回到保护储存器45的校验位,而是首先通过修正逻辑76来修正用于部分写的读数据并随后由数据合并 逻辑78将其与新的写数据合并。被共享XOR树80用来生成正确校验位82的则是新写数 据与正确读数据(必要时,其被修正逻辑76修正)的此组合。在一个实施例中,随后,与已 修正读数据合并的写数据连同校验位82 —起被返回到存储器存储电路40以便分别存储到 区块0 7的相应条目和保护储存器45中。请注意,为了生成适当的症状位74以修正未 被部分写操作写入的那些区块的读数据,必须将来自每个区块0 7的数据提供给共享M)R 树72。例如,即使正在执行仅到区块1的部分写操作,来自每个区块0 7中的被访问条 目的读数据也被提供给共享XOR树72以生成正确的症状位74以修正来自区块0和2 7 的读数据。然后,数据合并逻辑78将来自区块0和2 7的已修正读数据与将被写入区块 1的写数据合并并将此合并数据提供给区块0 7以及共享XOR树80。在ECC模式下,共 享XOR树80生成被提供给与写操作访问地址相对应的保护储存器45的条目的适当校验位 82。在一个实施例中,在写操作期间只有连同校验位一起正被写入的字节被更新,并且其它 区块未被访问,以便节省功率,即使数据合并逻辑提供关于部分写的附加数据。在一个实施例中,修正逻辑76还将与读数据字节相对应的修正指示符提供给控 制逻辑66,所述读数据字节在读-修改-写(RMW)的读操作期间要求修正。当执行RMW写 时,这些指示符被用来还更新包含关于前一次读取的错误数据的那些读数据字节,因此允 许在这种情况下修正存储器阵列中的瞬态错误。通过执行此更新,可以使多个错误随着时 间推移的累积最小化,因为到存储器条目的任何尺寸的任何写周期将修正任何存储的错 误。由于在某些实施例中,可以假设错误是稀少的,所以与另外更新的区块相关联的附加功 率可以是最小的。在奇偶校验模式下,共享M)R树72生成被提供给与写操作访问地址相对应的保护 储存器45的条目的适当奇偶校验位79。请注意,在奇偶校验模式下,还可以将相应的奇偶 校验位从保护储存器45提供给总线24或14。存储器32的其余部分如上文参照存储器31所述的那样操作。并且,请注意,对于 其中所有区块0 7都被写入的ECC模式下的全写而言,并不首先需要在写操作期间执行 读访问(即,不需要执行RMW)。也就是说,可以在单次访问中(即,仅用一次写访问且没有 读访问)执行写操作。对于全写而言,从总线M或14向每个区块0 7以及向共享XOR 树80 (经由数据合并逻辑78)提供写数据,以便生成被提供给保护储存器45的校验位。因 此,只需要单次访问(即,不需要读访问)来执行全写。在奇偶校验模式下,不执行读访问, 无论写是部分写还是全写。数据的每个字节连同相应的字节奇偶校验位一起被写入存储器 40的相应区块0 7和与该字节相对应的保护储存器45内的奇偶校验位。图4图示依照本发明的另一实施例的可在系统10内使用的存储器33的一部分。 存储器33可以表示图1的存储器观、存储器16、或高速缓冲存储器沈的一部分。请注意, 存储器33与图2的存储器31和图3的存储器32共享许多类似元素,其中,用相同的号码 来参考相同的元素。对上文提供的存储器31和32的许多元素的描述还适用于图4的存储 器33的相同元素。因此,将不描述图4的完整操作和连接性。如图3的存储器32的情况一样,图4的存储器33也提供用于部分写操作的读数 据的修正以便保证正确性。然而,不是将写数据和校验位直接分别提供回区块0 7和保 护储存器45,如由图3中的数据合并逻辑78和共享XOR树80所做的那样,而是将校验位和写数据写入后写入缓冲器102。该校验位和写数据将在稍后的时间点而不是当前周期中被 从后写入缓冲器102写入存储器存储电路40。在替换实施例中,请注意,后写入缓冲器102 可以位于存储器33内或系统12内的任何位置处。除控制寄存器48和模式逻辑50之外,控制逻辑86还包括共享XOR树92、修正逻 辑96、共享XOR树98、和后写入缓冲器102。共享XOR树92和修正逻辑96与共享XOR树 52和修正逻辑M类似地进行操作。然而,不是共享XOR树92生成用于被存储回到保护储 存器45的校验位,而是首先通过修正逻辑96来修正用于部分写的读数据并随后被连同新 的部分写数据一起提供给后写入缓冲器102的数据字段。因此,后写入缓冲器102的数据 字段存储新的写数据与被共享XOR树98用来生成正确校验位100的正确读数据(其在必 要时被修正逻辑96修正)的组合。校验位100还被提供给后写入缓冲器102,以便存储在 缓冲器的校验位部分中。请注意,尺寸指示符84也被从总线M或14提供给后写入缓冲器 102,使得关于对于部分写操作而言将被写入的数据尺寸的尺寸信息也可以被存储到后写 入缓冲器102中。以这种方式,当后写入缓冲器102中的数据将被存储到存储器存储电路 40中时,到区块0 7中的一个或多个区块的写数据的适当尺寸是已知的,并且适当的校验 位可以被存储在保护储存器45的相应条目中。如图3的存储器32的情况一样,请注意,为 了生成适当的症状位94以修正未被部分写操作写入的那些区块的读数据,必须将来自所 有区块0 7中每一个的数据提供给共享XOR树92。在一个实施例中,修正逻辑96还将与 要求修正的读数据字节相对应的修正指示符提供给后写入缓冲器102。当稍后执行写时,这 些指示符被用来还更新包含关于前一次读取的错误数据的那些读数据字节,因此允许在这 种情况下修正存储器阵列中的瞬态错误。通过执行此更新,可以使多个错误随着时间推移 的累积最小化,因为到存储器条目的任何尺寸的任何写周期将修正任何存储的错误。存储器33的其余部分如上文参照存储器31或32所述的那样操作。并且,请注 意,对于其中所有区块0 7都被写入的全写而言,并不首先需要在写操作期间执行读访问 (即,不需要执行RMW)。也就是说,可以在单次访问中(即,仅用一次写访问且没有读访问) 执行写操作。对于全写而言,从总线对或14向后写入缓冲器102的写数据部分以及共享 XOR树98提供写数据,以便生成也被提供给后写入缓冲器102的校验位100。因此,当在稍 后执行写时,只需要单次访问(即,不需要读访问)来执行全写。图5示出包括地址字段、数据字段、校验位字段、尺寸字段、和有效字段的后写入 缓冲器102的一个实施例。如上所述,数据字段可以存储接收的写数据或被与来自其它区 块的已修正读数据合并的接收的写数据。地址字段可以存储写操作的写访问地址,并因此 指示区块0 7和保护储存器45中的哪些条目将被写入。尺寸字段可以存储写数据的尺 寸信息,并且可以使用有效字段来指示被存储在后写入缓冲器102内的当前值是否是有效 的。请注意,在一个实施例中,有效字段可以包括与将被写入存储器存储电路40的数据字 段的各字节相对应的多个位。在本实施例中,当执行写时,将只访问与设定有效位相对应的 存储器存储电路的那些区块,因此节省功率。然而,在一个实施例中,保护储存电路45将总 是被更新。请注意,后写入缓冲器102可以以多种已知方式操作。例如,后写入缓冲器102 的使用和定时、诸如后写入缓冲器102的内容被写回到存储器存储电路40的时间可以如本 领域中已知的那样。请注意,在某些实施例中,可以存在其中不需要保证正确性的时间段或应用和应该这样的其它时间。因此,在一个实施例中,图2的控制逻辑和图3或4的控制逻辑两者的 能力可以存在于存储器观、存储器16、或高速缓冲存储器沈内。例如,在初始化周期期间 (诸如当存储在存储器存储电路40中的数据被已知具有大量错误时),控制逻辑46的更简 单能力可能是足够的,而在初始化周期之后,可能需要控制逻辑66或86的更完整能力。因 此,附加电路可以存在于存储器观、存储器16、或高速缓冲存储器沈内以允许在需要时呈 现并使用这两种功能性。此类操作的选择可以由系统10的用户以多种方式进行,诸如通过 系统10内的配置寄存器(诸如控制寄存器48)的设定。在一个实施例中,可以由系统10 的用户所执行的软件来修改控制寄存器48,或者可以以其它方式进行配置。在一个实施例中,处理器12可以以流水线方式进行操作。例如,处理器12可以包 括处理器流水线,其包括用于指令获取、指令解码、寄存器读取、执行、和结果写回的阶段。 某些阶段可以涉及执行的多个时钟周期。在一个实施例中,将执行处理器流水线的某些或 所有电路位于处理器12的CPU 30内。请注意,此电路对于本领域的技术人员来说是已知 的,并且本文将仅讨论对该电路的修改。在一个实施例中,处理器12(例如CPU 30)包括多 个流水线阶段、前馈逻辑、和反馈控制电路。在一个实施例中,处理器12还包括如本领域中 已知的指令预取缓冲器,以允许在解码阶段之前进行指令缓冲。指令可以通过进入指令解 码寄存器(IR)从此预取缓冲器前进到指令解码阶段。图6以表格形式图示依照本发明的一个实施例的(例如CPU 30的)处理器12的 流水线阶段。这些阶段包括来自存储器的指令获取,阶段0,可以将其缩写为IFO ;来自存 储器的指令获取,阶段1,可以将其缩写为IFl ;指令解码/寄存器读取/操作数转送/存 储器有效地址生成,可以将其缩写为DEC/RF READ/EA(或作为这些中的一个,取决于在特定 示例中该阶段正在执行什么功能);指令执行阶段0/存储器访问阶段0,可以将其缩写为 Ε0/Μ0(或者作为这些中的仅一个,取决于对于特定示例而言正在发生指令执行阶段还是正 在发生存储器访问);指令执行阶段1/存储器访问阶段1,可以将其缩写为El/Ml (或作为 这些中的仅一个,取决于对于特定示例而言正在发生指令执行阶段还是正在发生存储器访 问);以及向寄存器写回,可以将其缩写为WB。因此,请注意,所示的实施例包括6个阶段。 或者,处理器流水线可以包括更多或更少的阶段。例如,处理器流水线可以仅包括从存储器 进行单指令获取阶段而不是具有IFO和IFl两者。并且,请注意可以使用多个缩写来指示 同一流水线阶段。例如,如果正在针对特定指令计算有效地址,则可以将DEC/RF READ/EA 阶段简称为EA阶段或DEC/EA阶段。类似地,如果正在执行不要求存储器访问的指令(例 如,算术指令),则可以将Ε0/Μ0和E1/M1中的每一个分别称为EO和El。如果正在执行要 求存储器访问的指令(例如,加载/存储指令),则可以将Ε0/Μ0和E1/M1中的每一个分别 称为阶段MO和Ml。仍参考图6的示例性流水线,阶段IFO和IFl从存储器系统(例如从存储器观、高 速缓冲存储器26、或存储器16)检索指令并确定在哪里执行下一次指令获取(例如生成指 令获取地址)。在一个实施例中,每个周期从存储器向指令缓冲器发送多达两个32位指令 或四个16位指令。请注意,本文所使用的周期可以指的是处理器时钟周期,因此还可以称 为时钟周期或处理器周期。解码流水线阶段(DEC/RFREAD/EA)解码指令,从寄存器文件读 取操作数,并执行依赖关系检查,以及计算用于加载和存储指令的有效地址。因此,根据存 在于解码流水线阶段中的指令的类型,可以在解码流水线阶段期间执行不同的功能。
指令执行在每个执行单元中的执行流水线阶段中的一个或多个中发生(在那里, 其可以在多个周期内发生)。例如,使大多数加载/存储指令的执行形成流水线。在一个实 施例中,加载/存储单元具有三个流水线阶段,包括有效地址计算(DEC/RF READ/EA,或简 称为EA)、M0、和Ml。在一个实施例中,如下文将描述的,当执行ECC时(S卩,当处于ECC模 式下时)使用Ml。简单整数指令正常地完成流水线的EO阶段中的执行。乘法指令可能要求执行阶 段EO和El两者,但是也可以使其形成流水线。大多数条件设置指令在EO阶段中完成,因 此取决于条件设置指令的条件转移(branch)可以在此EO阶段中解析(resolve)。请注意, 一个指令无论是仅使用一个流水线执行阶段的简单指令或要求不止一个流水线执行阶段 的指令,可以将其描述为促使数据处理器(例如,处理器1 在指令的执行期间执行一组计 算操作。在简单指令的情况下,可以在EO或El中执行该组计算操作(例如,取决于处理器 12在ECC还是奇偶校验模式下操作,如下文将描述的)。在要求不止一个流水线执行阶段 的指令的情况下,可以使用EO和El两者来执行该组计算操作。在一个实施例中,结果前馈硬件(如本领域中已知的)将一个指令的结果转送到 随后指令的一个或多个源操作数中,使得数据相关指令的执行不必等到WB阶段中的结果 写回的完成。还可以提供前馈硬件以允许完成的指令从全部三个执行阶段(DEC、E0、和El) 转绕至第一执行阶段用于后续的数据相关指令。当指令最初在流水线中(诸如在EO或MO 阶段中)完成时,指令结果流过流水线的后续阶段,但是不执行进一步计算。这些阶段被称 为前馈阶段(在流水线流程图中被示为FF),并且可以将结果作为输入提供给流水线中的 后续指令。在一个实施例中,当奇偶校验保护被用于数据存储器时(S卩,当存储器在奇偶校 验模式下操作时),加载和存储访问仅使用流水线的EA和MO阶段,并且在MO结束时可获得 加载数据以供后续指令使用。如果加载之后的指令使用被所述加载所访问的加载数据,则 不存在停顿(stall),除非其被用于EA阶段中的紧接着的后续EA计算。在一个实施例中,当ECC被用于数据存储器时(S卩,当存储器在ECC模式下操作 时),数据存储器访问要求两个存储器阶段。并且,在ECC模式下,简单整数指令的执行被移 动到El阶段。也就是说,不是如上所述在EO中执行简单整数指令的执行,而是可以将它们 在El中执行。通过这样做,通常仍不要求停顿,即使具有ECC的存储器访问要求附加周期 以便执行检错和纠错。不要求停顿,因为简单整数指令是可以在单个执行阶段中完成的单 周期指令。虽然将整数执行指令转移到El阶段延迟DEC阶段中的条件转移指令所使用的 比较结果和条件代码且这可以使转移判定结果延迟,但仍可以实现净性能益处,诸如当采 用转移预测硬件(如本领域中已知的)时,因为可以在条件代码设置之前预测并获取转移 目标地址。图7 17图示用于不同类型的指令且在不同操作模式下(诸如在奇偶校验或ECC 模式下)的流水线流程的各种示例。对于每个示例而言,请注意,提供了时间轴,其中,时间 轴上的每个狭槽指的是时隙,其中,此时隙可以例如对应于时钟周期。流水线流程指示相对 于时间而言每个指令(在流程的左侧列出)何时处于流水线的特定阶段。例如,如在图7 中看到的,第一指令在图7所示的第一时隙中(即在第一时钟周期期间)进入IF0。在第 二时隙中(即在第二时钟周期期间),第一指令从IFO阶段移动到IFl阶段,并且第二指令进入IFO阶段。在第三时隙中(即在第三时钟周期期间),第一指令从IFl阶段移动到DEC 阶段,第二指令从IFO阶段移动到IFl阶段,并且第三指令移动到IFO阶段中。如何绘制流 水线流程的此描述适用于图7 17中的每一个。图7图示当在奇偶校验模式下操作时的单循环指令的流水线流程的示例。在本示 例中,按照程序顺序发布并完成单周期指令序列。大多数算术和逻辑指令落入此种类的单 周期指令。本示例示出第一指令被前馈到第二指令的操作数之一的结果。如图7中的从第 一行的EO到第二行的EO的箭头200所指示的,第一指令(在阶段EO中确定)的结果被前 馈硬件转送到第二指令的EO阶段,使得第二指令能够在其执行期间使用第一指令的此结 果,而不必等待第一指令的结果在WB阶段中被写回,该写回将导致许多流水线停顿。请注 意,在本示例中,使用前馈,不需要流水线停顿。并且,请注意,在本示例中,EO阶段后跟FF 阶段,该FF阶段是对这些指令的不使用的El阶段。在FF阶段中,还可以(诸如从第一指 令向第三指令的EO阶段)转送操作数。图8图示当在ECC模式下操作时的单循环指令的流水线流程的示例。在本示例中, 按照程序顺序发布并完成单周期指令的序列。大多数算术和逻辑指令落入此种类的单周期 指令。在本身示例中,EO阶段是简单通过阶段(如DEC与El阶段之间的图8中的“_”所指 示的),用来使来自寄存器文件的可用输入值延迟直至El阶段。图8的示例示出第一指令 的结果被前馈到第二指令的操作数之一中(如图8中的从第一行的El到第二行的El的箭 头202所指示的)。以这种方式,如在图7的示例的情况下一样,第二指令可以使用第一指 令的结果而不必等待第一指令的结果在WB阶段中被写回,该写回将导致许多流水线停顿。 请注意,在本示例中,使用前馈,不需要流水线停顿。图9图示在奇偶校验模式下操作的后跟单周期指令的两个加载指令的流水线流 程的示例。在奇偶校验模式下,针对加载指令,在DEC/EA阶段中计算有效地址,并在MO阶 段中访问存储器(例如,存储器观或存储器16或高速缓冲存储器沈)。可以在MO中执行 数据选择和对准,并且在MO阶段结束时可获得结果以用于随后的指令。在本示例中,Ml阶 段仅仅是前馈阶段,如图9中的FF所指示的,其用来保持加载数据直至其到达WB阶段。例 如,针对第一加载指令,加载数据被保持在Ml中(在图9中标记为FF),直至第一加载指令 在下一个时隙中进入流水线的WB阶段。如果随后的指令未将该数据用于有效地址计算或 乘法指令,则不发生停顿。在图9的所示实施例中,加载指令的序列中的第一加载指令馈送 第三指令的源操作数之一,并且加载指令的序列中的第二加载指令馈送第三指令的第二源 操作数。也就是说,如箭头204所指示的,第一加载指令的加载数据被前馈到第三指令的EO 阶段,并且如箭头206所指示的,第二加载指令的加载数据也被前馈到第三指令的EO阶段。 在本示例中,第三指令是单周期指令,诸如,例如使用两个源操作数的算术或逻辑指令。由 于这些前馈路径,不导致停顿,因为第三指令不需要等待第一和第二指令进入WB阶段。图10图示在ECC模式下操作的后跟单周期指令的两个加载指令的流水线流程的 示例。在ECC模式下,针对加载指令,在DEC/EA阶段中计算有效地址,并在MO和Ml阶段中 访问存储器(例如,存储器观或存储器16或高速缓冲存储器沈)。例如,在MO阶段中访 问数据,并在Ml阶段中执行检错、修正、和对准,并且,随后可在Ml阶段结束时获得结果以 用于随后的指令。如果随后的指令未将该数据用于EA计算或乘法指令,则不发生停顿。在 图10的示例中,第二加载指令馈送第三指令的源操作数中的一个(如图10中的箭头210所示)。第三指令的另一源操作数被从第一加载指令前馈到EO阶段,在所示的实施例中, 该EO阶段是延迟阶段(如图10中的“_”所指示的),在那里,其随后在下一个周期上传播 到El阶段。由于提供前馈路径,所以不导致停顿。在所示的实施例中,第三指令是单周期 指令,诸如,例如使用两个源操作数的算术或逻辑指令。因此,虽然第三指令通过延迟阶段 且在El之前不执行(而不是在EO中执行),但不发生停顿,因为存在可用的两个执行阶段 (E0和El),并且单周期指令仅需要执行一个执行阶段。在一个实施例中,在EO中而不是El 中发生诸如第三指令的单周期指令的执行,例如当不在ECC模式下操作时。在一个实施例 中,当ECC模式未被启用时,在EO中发生单周期指令的执行,但是当ECC模式被启用时,单 周期指令的执行从EO (其中,EO仅仅变成延迟阶段)移动到El。因此,单指令的执行可以 基于操作模式(诸如基于ECC模式是否被启用)在EO和El之间移动。在一个实施例中, 当ECC未被启用时,奇偶校验模式被启用。或者,当ECC未被启用时,奇偶校验模式可能未 被启用,这里来,未在执行检错,或者这里,另一检错方案被启用。还请注意,在一个实施例 中,单指令的执行可以基于前一加载是否是要求完成两次存储器访问的不对准加载而在EO 与El之间移动。在本实施例中,即使当ECC未被启用时,基于检测到前一加载指令未对准 并要求流水线的MO和Ml两阶段完成执行未对准访问所需的两次存储器访问,单周期指令 的执行可以动态地从EO移动到El。本实施例看起来与图10相同,例外的是ECC未被启用。图11图示在奇偶校验模式下操作时后跟单周期指令的两个存储指令的流水线流 程的示例。在奇偶校验模式下,针对存储指令,在DEC/EA阶段中计算有效地址,并在MO阶 段中写入存储器(例如存储器观、存储器16、或高速缓冲存储器26)。Ml阶段仅仅是未使 用的前馈阶段(如图11中的“ (FF) ”所指示的代替Ml阶段)。此外,请注意,存储指令通常 也不使用WB阶段,如图11中的WB阶段两侧的括号所指示的。图12图示在ECC模式下操作后跟单周期指令的两个存储指令的流水线流程的示 例。在ECC模式下,针对存储指令,在DEC/EA阶段中计算有效地址,并在MO和Ml阶段中访 问存储器(例如,存储器观或存储器16或高速缓冲存储器26)。例如,在MO阶段中读取数 据,并在Ml中执行检错、纠错、和数据修改(例如,以便存储回已修正数据)、以及已更新症 状(syndrome)生成。然后,可以在Ml中向缓冲器(诸如后写入缓冲器102)发送更新值。 然后,可以在下一存储指令的Ml中将此存储的更新值写入存储器。也就是说,在当前存储 指令的Ml阶段中,来自前一存储指令的存储数据被写入存储器。在一个实施例中,来自前 一存储指令的此存储数据被存储在后写入缓冲器(诸如后写入缓冲器10 中,直至其被写 入存储器。因此,参考图12的示例,在第一存储指令的阶段Ml中,来自前一存储指令(未 示出)的前一存储数据将被写入存储器,在那里,此前一存储数据可以被存储在后写入缓 冲器(诸如后写入缓冲器10 中,直至其被写入存储器。来自图12的第一存储指令的当 前存储数据因此可以在Ml中被发送到后写入缓冲器(诸如后写入缓冲器10 ,以便随后存 储到存储器。类似地,在第二存储指令的阶段Ml中,来自图12的第一存储指令的前一存储 数据(其先前被存储到后写入缓冲器)被写入存储器。来自图12的第二存储指令的当前 存储数据可以在Ml中被发送到后写入缓冲器(诸如后写入缓冲器10 ,以便随后存储到存 储器。请注意,在一个实施例中,正常地,可以从存储指令的MO阶段而不是存储指令的 Ml阶段发送该存储指令的写数据(例如至后写入缓冲器10 。然而,在所示的实施例中,写数据被从要被写的存储指令的Ml阶段(例如向后写入缓冲器10 发送到下一存储指令 的Ml阶段中的存储器。在一个实施例中,当ECC模式未被启用时,在MO中发生存储指令的 写数据的发送(例如,到后写入缓冲器102),但是当ECC模式被启用时,写数据的发送从MO 移动到M1,因为可以首先通过读来访问存储器以便提供用于适当校验位生成的数据以进行 存储。因此,存储指令的写数据的发送可以基于操作模式在MO和Ml之间移动(诸如,基于 ECC模式是否被启用)。请注意,在所示的实施例中,由于ECC模式被启用,所以第三指令的 执行(其为单周期指令)从EO移动到E1,如上文例如参照图10所述。图13 15图示流程变化指令流水线操作的示例。图13图示转移指令的流水线 流程的操作示例(其导致跳转(taken)的正确预测情况下的BTB命中),与处于ECC还是奇 偶校验模式无关。在一个实施例中,流程指令的简单变化要求3个周期(如果在奇偶校验 模式下)或4个周期(如果在ECC模式下)以便用用于跳转转移的目标指令和未得到BTT 命中(即,其导致BTB名中失败)且已被不正确地预测的转移和链接指令来重新填充流水 线。对于转移指令,在某些情况下,可以通过投机地执行目标获取来减少这3至4个周期, 同时如果可以从BTB获得转移目标地址(即,如果转移目标地址命中BTB中的有效条目且 被预测为跳转),则转移指令仍被获取到指令缓冲器中。当足够早地发起目标获取并正确地 预测转移时,结果得到的转移定时可以减少至单个时钟。如图13所示,转移指令导致BTB 命中并被正确地预测,因此在转移指令与其目标指令的执行之间不导致停顿,无论是处于 奇偶校验还是ECC模式。图14示出在奇偶校验模式下的情况的示例,其中,转移被不正确地预测或者发生 BTB命中失败,因此要求3个周期来修正该错误预测结果。在本示例中,第一指令是比较指 令,并且第二指令是转移指令,其解析是基于比较指令的结果。并且,请注意,当实际上转移 指令将被解析为跳转时,其被预测为不跳转。因此,如图14所示,在EO中可获得比较指令 的结果。因此,可以在DEC阶段中解析转移指令。因此,该转移将在此DEC阶段中被解析为 跳转,意味着在该DEC阶段之后的时隙中将发生目标获取(用于目标指令的IFO阶段,缩写 为TF0)。在这种情况下,奇偶校验模式下的转移错误预测花费3个周期(例如,请注意,在 进入DEC阶段的转移指令与进入DEC阶段的目标指令(即用于跳转转移的指令流中的下一 个指令)之间存在3个周期)。图15示出在ECC模式下的情况的示例,其中,转移被不正确地预测或者发生BTB 命中失败,因此要求4个周期来修正该错误预测结果。在本示例中,第一指令是比较指令, 并且第二指令是转移指令,其解析是基于比较指令的结果。并且,请注意,当实际上转移指 令将被解析为跳转时,其被预测为不跳转。并且,由于本示例采取ECC模式下的操作,所以 比较指令的执行(由于其为单周期指令)被从阶段EO移动到阶段El (如上文例如相对于 图12所述)。因此,如图15所示,在El中而不是在EO中可获得比较指令的结果。因此,直 到EO阶段而不是DEC阶段之前不能解析转移指令,意味着在该EO阶段之后的时隙中将发 生目标获取(用于目标指令的IFO阶段,缩写为TF0)。在这种情况下,ECC模式下的转移错 误预测花费4个周期(例如,请注意,在进入DEC阶段的转移指令与进入DEC阶段的目标指 令(即用于跳转转移的指令流中的下一个指令)之间存在4个周期)。然而,虽然由于在 ECC模式下操作引起的单周期比较指令的执行到El阶段的移动与不将该执行移动到El相 比或与奇偶校验模式相比导致附加周期以修正错误预测结果,但可能这种情况不像其中改变单周期指令的执行阶段可能有利的情况那样常常发生,因为正确的转移预测允许消除损失。图16图示ECC模式下的示例性流水线流程,具有部分宽度存储指令,后跟加载指 令,后跟单周期指令。如上文所讨论的部分宽度存储指令可以指的是向存储器内的少于所 有区块执行写的指令。由于在上文所讨论的一个实施例中,需要读-修改-写(RMW)以进 行部分存储,所以不能在没有停顿的情况下在MO中开始下一个加载指令的执行。相反,在 部分存储之后的加载时,导致单个停顿。在ECC模式下,针对单个存储指令,在DEC/EA阶段 中计算有效地址,并在Ml阶段中用前一存储指令的数据写入存储器(例如存储器观或存 储器16或高速缓冲存储器26)(如上文参照图12所述,其中,此前一存储指令的数据可以 被存储在诸如后写入缓冲器102的后写入缓冲器中,直至其被写入存储器)。在MO阶段中 读取数据,并在Ml阶段中执行检错、数据修改、和ECC症状生成。可以将更新值发送到诸如 后写入缓冲器102的缓冲器以便稍后存储到存储器。可以稍后在下一个部分宽度存储指令 的Ml阶段(其为其中针对部分宽度存储发生存储器写入的阶段)中或在下一个全宽存储 指令的MO阶段(其为针对全宽存储发生存储器写入的阶段,因为如上文所讨论的,不需要 在写访问之前执行读访问)中将更新值写入存储器。因此,如在图16的示例中看到的,第二加载指令停顿在DEC/EA阶段与MO阶段之 间,因为在第一指令的Ml阶段期间,写入了前一存储指令的数据。此写操作要求两个周期, 因为需要RMW操作,这是随后的加载指令停顿的原因。类似地,第三单周期指令停顿在DEC 阶段与延迟阶段(对应于EO阶段)之间,这里,执行发生在El阶段中,因为ECC模式被启 用。或者,请注意,第三单周期指令可以停顿在IFl阶段与DEC阶段之间。图17图示ECC模式下的示例性流水线流程,具有全宽存储指令,后跟加载指令,后 跟单周期指令。如上文所讨论的全宽存储指令可以指的是向存储器内的所有区块执行写的 指令。由于在上文所讨论的一个示例性实施例中不要求RMW,所以下一个加载指令的执行 可以在MO阶段中开始而不是必须停顿直至前一存储的Ml阶段之后,如在图16的示例中的 情况那样。因此,在一个实施例中,对于全宽存储,随后的加载指令不需要停顿,与其中随后 的加载指令被停顿的用于部分宽度存储的情况不同。在ECC模式下,对于全宽存储指令, 在DEC/EA阶段中计算有效地址,并在MO阶段中用来自前一存储指令的数据的存储数据写 入存储器(例如存储器观或存储器16或高速缓冲存储器26)。在MO阶段中不读取数据。 相反,可以执行ECC症状生成,并且在下一部分宽度存储指令的Ml中(其为对于部分宽度 存储而言发生存储器写的阶段,因为要求RMW)或在下一个全宽指令的MO中(其中不要求 RMW)将更新值写入存储器。因此,在一个实施例中,当在ECC模式下操作时,基于写的宽度 (例如部分宽度存储对比全宽存储),加载指令可以在从存储指令到加载指令的过渡时停 顿。并且,在ECC模式下,根据当前存储指令是部分宽度还是全宽访问,进行将前一存储指 令的前一存储数据到存储器的写入从Ml移动到MO的判定。在一个实施例中,从Ml到MO 的移动仅在当前存储指令是对准的全宽访问时发生。图18图示依照本发明的一个实施例的图1的数据处理系统的单循环执行单元 300。执行单元300包括算术逻辑单元(ALU)312(其中,可以使用本领域中已知的任何ALU)、 锁存复用器(MUX) 308和309、复用器(MUX) 304、305、和306、D型触发器301、302、和303。 请注意,可以用多种不同类型的存储元件来实现触发器301 303。并且,请注意,代替锁存MUX 308和309,可以使用MUX与其输出端上的存储元件的组合。触发器301 303中的每 一个接收控制El阶段的定时的El时钟信号332。执行单元300还接收模式指示符、模式 314。此模式指示符可以是如上所述的模式指示符62,由模式逻辑50提供,或者,替代地, 可以针对处理器流水线复制用于控制模式(例如控制ECC模式是否被启用)的电路。在另 一实施例中,控制寄存器48和模式逻辑50可以位于存储器外面并被存储器和流水线电路 共享而不是针对流水线电路被复制。模式314被提供给MUX 304 306中的每一个的控制 输入以选择到每个MUX的哪个输入被作为相应输出提供。MUX 304接收第一源操作数、第一 数据输入端处的SRC1318和触发器301的输出作为数据第二输入。SRCl 318也被提供给触 发器301的数据输入端。MUX 305接收第二源操作数、第一数据输入端处的SRC2 320和触 发器302的输出作为第二数据输入。SRC2 320也被提供给触发器302的数据输入端。MUX 308接收ALU 312的输出(结果326)作为第一数据输入、接收触发器303的输出作为第二 数据输入、接收第一前馈输入alt_ffwd_l 316作为第三数据输入、接收MUX 304的输出作 为第四数据输入、并接收源控制信号SRC cntl222作为控制输入。MUX 308在将输出提供给 ALU 312的第一输入端之前锁存其输出。MUX 309接收MUX 305的输出作为第一数据输入、 接收第二前馈输入alt_ffwd_2 3 作为第二数据输入、接收触发器303的输出作为第三数 据输入、接收ALU 312的输出(结果326)作为第四数据输入、并接收SRC cntl 222作为控 制输入。MUX 309在将输出提供给ALU 312的第二输入端之前锁存其输出。结果3 被提 供给MUX 306的第一输入端和触发器303的数据输入端。触发器303的数据输出被提供给 MUX 306的第二输入端,并且MUX 306的输出被作为执行单元300的输出334提供给WB阶 段电路。在操作中,执行单元300能够根据操作模式(例如ECC是否被启用)操作其在EO 或El中执行的定时。因此,基于模式314的值,MUX 304和305将SRCl 318和SRC2 320作 为输入分别提供给MUX308和309,或者将SRCl 318和SRC2 320的延迟型式作为输入提供 给MUX 308和309。例如,在一个实施例中,用于模式314的“0”的值指示非ECC模式(例 如“0”的值在一个实施例中可以指示奇偶校验模式)且“1”的值指示ECC模式。因此,在 非ECC模式下,SRCl 318和SRC2 320被作为输入直接提供给MUX 308和309 (其中,用于 模式314的“0”的值选择MUX 304和305的第一输入端),因为由执行单元300进行的执行 将在第一执行阶段EO中发生,如上所述。然而,在ECC模式下,单周期指令的执行从第一执 行阶段EO移动到第二执行阶段El。因此,对于附加时钟周期,选择MUX 304和305的第二 输入端(由于对于ECC模式而言模式314的值是“1”),其分别保持SRCl 318和SRC2 320 的值。当E1_CLK 332被确证时(指示阶段El),随后触发器301和302捕捉在阶段EO中提 供的SRCl 318和SRC2 320值以随后提供给MUX 308和309。并且,执行单元300可以前馈来自阶段EO或阶段El的结果。例如,当结果3 被 作为输入反馈到MUX 308和309时,其对应于来自阶段EO的前馈结果。类似地,当触发器 303的输出被作为输入反馈到MUX 308和309时,其对应于来自阶段El的前馈结果(其中, 请注意,触发器303的输出端被提供E1_CLK 332,该E1_CLK 332对应于在El而不是EO处 捕捉的结果326)。在ECC模式下,模式314选择在El结束时在输出端334处(对于WB阶 段而言)提供结果326的MUX 306的第一输入端。然而,在非ECC模式下,模式314选择 MUX 306的第二输入端,其由于例如由E1_CLK 332定时的触发器301 303的使用而在El结束时在输出端334处(对于WB阶段)提供结果326,所述E1_CLK 332通过阶段EO至阶 段El保持SRC1318、SRC2 320、和结果326。因此,如上文所讨论的,阶段EO有效地变成延 迟阶段。以这种方式,在ECC模式下,执行单元300能够将单周期指令的执行从EO移动到 E1。现在,应认识到已提供了能够在奇偶校验或ECC模式下操作的存储器。此外,在 ECC模式下,可以用多个访问来执行部分写入(即向少于存储器中的所有区块写入),所述 多个访问包括读访问和写访问(用于执行RMW)。然而,如本文所述,已经描述了在ECC模 式下可以用单次访问、即在一次访问中执行全写(即向存储器中的所有区块写入)的存储 器。也就是说,可以在不需要写访问之前的读访问的情况下用单次写访问来执行全写。以 这种方式,存储器当处于ECC模式时可以比先前可获得的那些更高效地操作。并且,依照一 个实施例,已描述了这样的存储器对于ECC模式下的部分写而言针对RMW操作的读访问部 分仅允许没有用部分写来写入的那些区块被读取。虽然在本实施例中,检验位的正确性和 症状位的生成不能保证是正确的,但可能存在这可以被允许、可管理、乃至期望的情况。并 且,依照一个实施例,已描述了这样的存储器对于ECC模式下的部分写而言仅允许用部分 写来写入的那些区块连同包含用于由存储器条目存储的数据的全部宽度的校验位的保护 储存器一起被更新。此外,依照一个实施例,已描述了这样的存储器对于ECC模式下的部 分写而言另外允许在读-修改-写操作的读部分期间要求修正的那些区块、连同要被更新 的对应于部分写的那些区块、以及包含用于由存储器条目存储的数据的全部宽度的校验位 的保护储存器用已修正读取数据来写入。并且,如本文所述,当在ECC模式下对比在非ECC模式下操作时,可以以不同方式 配置处理器流水线。例如,在ECC模式下,可以将单周期指令的执行从一个执行阶段移动至 另一阶段,或者可以将写数据的发送从一个执行阶段移动到另一个。因此,基于处理器12 或存储器是在ECC模式下还是非ECC模式下运行,可以以不同方式来配置处理器流水线。并 且,基于非ECC模式下的存储器对准,可以将单周期指令的执行从一个执行阶段移动到另 一阶段。由于实现本发明的装置大部分由本领域的技术人员已知的电子部件和电路组成, 所以将不比认为描述本发明所需的程度更多地解释细节,以便理解并认识本发明的根本构 思,并且不混淆或偏离本发明的讲授内容。在适当情况下,可以使用多种不同的信息处理系统来实现以上实施例中的某些。 例如,虽然图1及其讨论描述了示例性信息处理架构,但本示例性架构仅仅是为了讨论本 发明的各种方面时的有用参考而提出的。当然,已出于讨论的目的简化了架构的描述,并且 其仅仅是可以依照本发明来使用的许多不同类型的适当架构中的一个。本领域的技术人员 将认识到逻辑块之间的界限仅仅是说明性的,并且替换实施例可以将逻辑块或电路元件合 并或对各种逻辑块或电路元件施加功能的交替分解。因此,应理解的是本文所描绘的架构仅仅是示例性的,并且事实上,可以实现许多 实现相同功能的其它架构。在简要、但仍明确的意义上,实现相同功能的部件的任何布置被 有效地“关联”,使得实现期望的功能。因此,可以将本文中的被组合以实现特定功能的任何 两个部件视为彼此“相关联”,使得实现期望的功能,无论是架构还是中间部件。类似地,可 以将被这样关联的任何两个部件视为被相互“可操作地连接”或“可操作地耦合”以实现期望的功能。并且,例如,在一个实施例中,数据处理系统10的所示元件是位于单个集成电路 上或同一设备内的电路。或者,数据处理系统10可以包括彼此互连的任何数目的单独集成 电路或单独设备。例如,存储器16可以位于与处理器12相同的集成电路上或单独集成电 路上或位于与数据处理系统10的其它元件离散地分开的另一外围设备或从属设备内。外 围设备18和20还可以位于单独的集成电路或设备上。并且,例如,数据处理系统10或其 一部分可以是物理电路或可转换成物理电路的逻辑表示的软表示或代码表示。同样地,可 以在任何适当类型的硬件描述语言中体现数据处理系统10。此外,本领域的技术人员应认识到上述操作的功能之间的界限仅仅是说明性的。 可以将多个操作的功能组合到单个操作中,和/或可以将单个操作的功能分布在附加操作 中。此外,替换实施例可以包括特定操作的多个实例,并且在各种其它实施例中可以改变操 作顺序。本文所述的所有或某些软件可以是数据处理系统10例如从诸如存储器16的计算 机可读介质或其它计算机系统上的其它介质接收到的元素。此类计算机可读介质可以被永 久性地、可去除地或远程地耦合到诸如数据处理系统10的信息处理系统。计算机可读介质 可以包括例如但不限于任何数目的以下各项包括磁盘和磁带存储介质的磁存储介质;光 学存储介质,诸如致密盘介质(例如CD-R0M、CD-R等)和数字视频盘存储介质;非易失性存 储介质,包括基于半导体的存储器单元,诸如FLASH存储器、EEPROM、EPROM、ROM ;铁磁数字 存储器;MRAM ;易失性存储介质,包括寄存器、缓冲器或高速缓冲存储器、主存储器、RAM等; 以及数据传输介质,包括计算机网络、点到点远程通信设备、和载波传输介质,仅举几个例 子。在一个实施例中,数据处理系统10是诸如个人计算机系统的计算机系统。其它实 施例可以包括不同类型的计算机系统。计算机系统是可以被设计为向一个或多个用户提供 独立计算能力的信息处理系统。计算机系统可以采取许多形式,包括但不限于主机、小型计 算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏、汽车及其它嵌入式系 统、蜂窝电话和各种其它无线设备。典型的计算机系统包括至少一个处理单元、关联的存储 器和许多输入/输出(I/O)设备。计算机系统根据程序来处理信息并经由I/O设备产生结果输出信息。程序是诸如 特定应用程序和/或操作系统的一系列指令。计算机程序通常被内部地存储在计算机可读 存储介质上或经由计算机可读传输介质发送到计算机系统。计算机进程通常包括执行(运 行)程序或程序的一部分、当前程序值和状态信息、以及被操作系统用来管理进程的执行 的资源。父进程可以产生其它子进程以帮助执行父进程的总体功能。由于父进程具体地产 生将执行父进程的总体功能的一部分的子进程,所以有时可以将由子进程(和孙进程等) 执行的功能描述为由父进程执行。虽然在本文中参照特定实施例描述了本发明,但在不脱离以下权利要求所阐述的 本发明的范围的情况下可以进行各种修改和变更。例如,可以基于系统要求来修改在地址 字段中使用的位数。因此,应将本说明书和附图视为说明性而不是限制性的,并且所有此类 修改意图被包括在本发明的范围内。本文相对于特定实施例所述的任何益处、优点、或问题 的解决方案并不意图被理解为任何或所有权利要求的关键、必需、或基本特征或元素。
本文所使用的术语“耦合”并不意图局限于直接耦合或机械耦合。此外,本文所使用的术语“一个(a) ”或“一种(an) ”被定义为一个或多于一个。并 且,不应将权利要求中的诸如“至少一个”和“一个或多个”等介绍性短语的使用理解为暗 示用不定冠词“一个”或“一种”来引入另一权利要求元素使包含这样引入的权利要求元素 的任何特定权利要求局限于仅包含一个此类元素的发明,即使当该权利要求包括介绍性短 语“一个或多个”或“至少一个”和诸如“一个”或“一种”的不定冠词时。这也适用于定冠 词的使用。除非另有说明,诸如“第一”和“第二”的术语用来任意地区别此类术语所描述的 元素。因此,这些术语不一定意图指示此类元素的时间或其它优先次序排列。附加文本1. 一种电路(例如10),包括具有纠错的存储器(例如,40,其可以例如在观、16、或沈中);电路单元(例如,在30内),其发起到所述存储器的写操作,其中,当纠错被启用且到所述存储器的写操作具有N位的宽度时,在对所述存储 器的一次访问中执行对所述存储器的写操作,以及其中,当纠错被启用且到所述存储器的写操作具有M位的宽度时,其中,M位小于N 位,在对所述存储器的多于一次访问中执行到所述存储器的写操作。2.如项目1中的电路,其中,对所述存储器的一次访问包括对所述存储器的写访 问。3.如项目1中的电路,其中,对所述存储器的多于一次的访问包括对所述存储器 的读访问和对所述存储器的写访问。4.如项目1中的电路,其中,所述存储器具有奇偶校验。5.如项目4中的电路,其中,所述电路还包括存储元件(例如,在102内),其用于存储一位,所述存储元件在纠错被启用时存储 单纠错码校验位,并且所述存储元件在奇偶校验被启用时存储单奇偶校验位。6.如项目4中的电路,其中,所述电路还包括逻辑树(例如98),其用于在纠错被启用时生成纠错码校验位,并用于在奇偶校验 被启用时生成奇偶校验位。7.如项目4中的电路,其中,所述电路还包括逻辑树(例如98),其用于在纠错被启用时检查纠错码症状信息,并用于在奇偶校 验被启用时检查奇偶校验信息。8.如项目4中的电路,其中,当奇偶校验被启用且到所述存储器的写操作具有M位 的数据宽度时,在对所述存储器的一次访问中执行到所述存储器的写操作。9.如项目1中的电路,其中,所述存储器包括多个区块,其中,N是所述存储器的宽 度,M是所述存储器中的所述多个区块中的一个的宽度,并且N和M是整数。10.如项目1中的电路,其中,所述电路还包括第一寄存器字段(例如,在48中),其用于存储至少一个奇偶校验启用位,其中,所 述至少一个奇偶校验启用位确定奇偶校验被启用的时间;以及第二寄存器字段(例如,在48中),其用于存储至少一个纠错启用位,其中,所述至少一个纠错启用位确定纠错被启用的时间。11.如项目1中的电路,其中,所述电路包括高速缓冲存储器(例如沈),并且其 中,所述高速缓冲存储器包括所述存储器(例如40)。12. 一种电路(例如10),包括存储器(例如40),其具有纠错且具有奇偶校验,所述存储器包括多个存储器区块 (例如42 44);电路单元,其请求到所述存储器中的第一地址的具有第一数据大小的读操作,其中,当奇偶校验被启用时,到所述存储器中的第一地址的具有第一数据尺寸的 读操作包括仅访问所述多个存储器区块的第一部分,以及其中,当纠错被启用时,到所述存储器中的第一地址的具有第一数据尺寸的读操 作包括访问所述多个存储器区块的第一部分和所述多个存储器区块的第二部分。13.如项目12中的电路,其中,所述电路包括高速缓冲存储器(例如沈),并且其 中,所述高速缓冲存储器包括所述存储器(例如40)。14.如项目12中的电路,其中,所述存储器具有在所述存储器的单次访问中可访 问的N位的最大宽度。15.如项目14中的电路,其中,N位是64位。16.如项目14中的电路,其中,访问所述多个存储器区块的第一部分导致访问N位 的最大宽度,并且其中,访问所述多个存储器区块的第二部分导致访问N位的最大宽度。17.如项目14中的电路,其中,访问所述多个存储器区块的第一部分导致访问小 于N位的最大宽度。18. —种方法,包括提供具有ECC纠错的存储器(例如,40);提供用于发起到所述存储器的写操作的电路单元(例如,在30中),其中,所述存储器包括多个区块(例如,42 44),其中,N是所述存储器的宽度,M 是所述存储器中的所述多个区块中的一个的宽度,并且N和M是整数,其中,当ECC纠错被启用且所述写操作具有小于N位的大小时,所述写操作包括不 执行用于计算校验位的对所述存储器的读周期,以及其中,当ECC纠错被启用且所述写操作具有N位的大小且不在执行所述存储器的 初始化时,所述写操作包括用于计算校验位的读周期。19.如项目18中的方法,其中,当ECC纠错被启用且所述写操作具有N位的大小且 正在执行所述存储器的初始化时,所述写操作包括不执行用于计算校验位的读周期。20.如项目18中的方法,其中,所述存储器是高速缓冲存储器(例如沈)的一部 分。
权利要求
1.一种电路,包括具有纠错的存储器;电路单元,其发起到所述存储器的写操作,其中,当纠错被启用且到所述存储器的写操作具有N位的宽度时,在对所述存储器的 一次访问中执行对所述存储器的写操作,以及其中,当纠错被启用且到所述存储器的写操作具有M位的宽度时,其中,M位小于N位, 在对所述存储器的多于一次的访问中执行到所述存储器的写操作。
2.如权利要求1所述的电路,其中,对所述存储器的所述一次访问包括对所述存储器 的写访问。
3.如权利要求1所述的电路,其中,对所述存储器的所述多于一次的访问包括对所述 存储器的读访问和对所述存储器的写访问。
4.如权利要求1所述的电路,其中,所述存储器具有奇偶校验。
5.如权利要求4所述的电路,其中,所述电路还包括存储元件,其用于存储一位,所述存储元件在纠错被启用时存储单纠错码校验位,并且 所述存储元件在奇偶校验被启用时存储单奇偶校验位。
6.如权利要求4所述的电路,其中,所述电路还包括逻辑树,其用于在纠错被启用时生成纠错码校验位,并用于在奇偶校验被启用时生成 奇偶校验位。
7.如权利要求4所述的电路,其中,所述电路还包括逻辑树,其用于在纠错被启用时检查纠错码症状信息,并用于在奇偶校验被启用时检 查奇偶校验信息。
8.如权利要求4所述的电路,其中,当奇偶校验被启用且到所述存储器的写操作具有M 位的数据宽度时,在对所述存储器的一次访问中执行到所述存储器的写操作。
9.如权利要求1所述的电路,其中,所述存储器包括多个区块,其中,N是所述存储器的 宽度,M是所述存储器中的所述多个区块中的一个的宽度,并且N和M是整数。
10.如权利要求1所述的电路,其中,所述电路还包括第一寄存器字段,其用于存储至少一个奇偶校验启用位,其中,所述至少一个奇偶校验 启用位确定奇偶校验被启用的时间;以及第二寄存器字段,其用于存储至少一个纠错启用位,其中,所述至少一个纠错启用位确 定纠错被启用的时间。
11.如权利要求1所述的电路,其中,所述电路包括高速缓冲存储器,并且其中,所述高 速缓冲存储器包括所述存储器。
12.—种电路,包括具有纠错且具有奇偶校验的存储器,所述存储器包括多个存储器区块;电路单元,其请求到所述存储器中的第一地址的具有第一数据大小的读操作,其中,当奇偶校验被启用时,到所述存储器中的第一地址的具有第一数据尺寸的所述 读操作包括仅访问所述多个存储器区块的第一部分,以及其中,当纠错被启用时,到所述存储器中的第一地址的具有第一数据尺寸的所述读操 作包括访问所述多个存储器区块的第一部分和所述多个存储器区块的第二部分两者。
13.如权利要求12所述的电路,其中,所述电路包括高速缓冲存储器,并且其中,所述 高速缓冲存储器包括所述存储器。
14.如权利要求12所述的电路,其中,所述存储器具有在所述存储器的单次访问中可 访问的N位的最大宽度。
15.如如权利要求14所述的电路,其中,N位是64位。
16.如权利要求14所述的电路,其中,访问所述多个存储器区块的第一部分导致访问N 位的最大宽度,并且其中,访问所述多个存储器区块的第二部分导致访问N位的最大宽度。
17.如权利要求14所述的电路,其中,访问所述多个存储器区块的第一部分导致访问 小于N位的最大宽度。
18.一种方法,包括提供具有ECC纠错的存储器;提供用于发起到所述存储器的写操作的电路单元,其中,所述存储器包括多个区块,其中,N是所述存储器的宽度,M是所述存储器中的所 述多个区块中的一个的宽度,并且N和M是整数,其中,当ECC纠错被启用且所述写操作具有小于N位的大小时,所述写操作包括对所述 存储器不执行用于计算校验位的读周期,以及其中,当ECC纠错被启用且所述写操作具有N位的大小且不在执行所述存储器的初始 化时,所述写操作包括用于计算校验位的读周期。
19.如权利要求18所述的方法,其中,当ECC纠错被启用且所述写操作具有N位的大小 且正在执行所述存储器的初始化时,所述写操作包括不执行用于计算校验位的读周期。
20.如权利要求18所述的方法,其中,所述存储器是高速缓冲存储器的一部分。
全文摘要
一种电路(10)包括具有纠错的存储器(28、16、或26)、发起到存储器的写操作的电路单元(30)。当纠错被启用且到存储器的写操作具有N位的宽度时,在对存储器的一次访问中执行到存储器的写操作,并且当纠错被启用且到存储器的写操作具有M位的宽度时,其中,M位小于N位,在对存储器的多于一次访问中执行到存储器的写操作。在一个实例中,对存储器的一次访问包括对存储器的写访问,并且对存储器的多于一次访问包括对存储器的读访问和对存储器的写访问。
文档编号G06F11/14GK102057442SQ200980121422
公开日2011年5月11日 申请日期2009年2月23日 优先权日2008年4月30日
发明者J·W·斯考特, W·C·莫耶 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1