专利名称:用于快速缓存命中检测的系统和方法
技术领域:
本发明总的来说涉及存储系统,更具体地,涉及用于具有错误校正/检测能力的存储系统中缓存命中的快速检测的系统和方法。
背景技术:
在大多数现代计算机系统中,存储系统对计算机系统的性能具有显著影响。较差 设计的存储系统可能会使具有最先进处理单元的现代计算机系统不比具有平均处理单元 的较旧的计算机系统更好地执行处理。这可能是由于对存储在存储系统中的程序、应用程 序、数据等的较慢存取。较差设计的存储系统会显著延迟对存储器的存取,并且实际上否定 了最先进处理单元中固有的性能优势。例如,处理单元可以处理指令和数据的速度会依赖 于存储系统的能力,以向处理单元提供指令和数据。较慢的存储系统会使处理单元不必要 地等待。图1是示出计算机系统100的示图。计算机系统100包括处理单元105和存储系 统110。存储系统110可以被分为多级,第一级存储器为位于处理单元中的寄存器115,第 二级存储器为缓冲存储器120,第三级存储器为主存储器125,以及第四级存储器为大容量 存储器件130。通常,每级可用的存储器的量会随着层级而增加,而速度会减小。一般地,给 定层级中存储器的速度可以是比其高的上一级中的存储器慢的量级。例如,第一级存储器 中的寄存器115仅有数十或数百字节,而大容量存储器件130可以为千兆字节的级别,但寄 存器115的速度可能比大容量存储器件130的速度快百倍或千倍。缓冲存储器(cache memory) 120是相对较小但快速的存储器,其可用于临时保持 指令和/或数据。由于缓冲存储器120相对较小,所以不可能将整体指令和/或数据存储 在缓冲存储器120中。此外,存储在缓冲存储器120中的指令和/或数据可以是被预测为 将在相对较短的时间内被处理单元105使用的指令和/或数据的指令和/或数据。如果处 理单元105所需的指令和/或数据驻留在缓冲存储器120中,则可以以相对较小的延迟来 从缓冲存储器120获取指令和/或数据。然而,如果所需的指令和/或数据不在缓冲存储 器120中,则需要从主存储器125或大容量存储器件130获取指令和/或数据,具有显著的 延迟。缓冲存储器120包括缓存数据存储器135,可用于存储指令和/或数据;缓存标 记存储器140,可用于存储在缓存数据存储器135中存储的指令和/或数据的高阶地址位; 以及缓存控制器145,可用于管理缓冲存储器120中指令和/或数据的读取和写入,以及预 测将来需要的指令和/或数据并从更低级的存储器中获取它们。当将指令或数据的存储地址呈现给缓冲存储器120时,存储地址的高位(标记)可用于索引到缓存标记存储器140,以确定指令或数据是否被存储在缓存数据存储器135 中。如果标记表明指令或数据被存储在缓存数据存储器135中,则缓存控制器145可用于 从缓存数据存储器135获得指令或数据。如果标记表明指令或数据没有被存储在缓存数据 存储器135中,则可以从主存储器125或大容量存储器130获得指令或数据。从主存储器 125或大容量存储器130获得指令或数据,其还可以被存储在缓存数据存储器135中。存储 指令或数据可以挤掉已经存储在缓存数据存储器135中的指令和/或数据。此外,缓存标 记存储器140还可以被更新以反映新存储的指令和/或数据。一些计算机系统还利用纠错码(ECC)来保护存储在其存储系统中的指令和/或数 据的完整性。ECC的使用向存储系统中的每个字节、字等添加附加信息位,以检测(在一些 情况下,校正)存储在存储系统中的指令和/或数据中 的错误。添加ECC可以帮助增加确 定缓存命中(cache memory hit)(即,所请求的指令或数据被存储在缓冲存储器中)或缓 存缺失(cachememory loss)(即,所请求的指令或数据没有被存储在缓冲存储器中)的复 杂性,因为会需要执行附加操作来验证除存储地址匹配之外存在ECC匹配。这会导致放慢 缓存性能以及增加缓存设计复杂性。图2a是示出缓冲存储器200的一部分的示图,其中,缓冲存储器200利用用于确 定缓存命中或缺失的现有技术,并且存储系统利用了 ECC。缓冲存储器200包括ECC生成器 205,其可用于根据m位输入CPU标记数据输入(即,来自处理单元的存储地址的高阶位) 来生成ECC。由ECC生成器205生成的ECC可以被提供给缓存标记存储器207 (例如,可类 似于缓存标记存储器140),如果CPU标记在缓存标记存储器207中,则可以获得与CPU标记 相关联的缓存标记。然后,可将缓存标记和ECC提供给单个错误校正_双错误检测(SEC-DED) ECC单元 209,其可用于根据需要(如果可能)使用ECC来校正缓存标记。SEC-DED ECC单元209可 以产生经过校正的缓存标记,然后可在等同比较器211中将其与CPU标记进行比较。如果 校正的缓存标记与CPU标记相同,则等同比较器211可断定已经发生了缓存命中。如果校 正的缓存标记与CPU标记不相同,则等同比较器211可断定已经发生了缓存缺失。图2b是示出缓冲存储器250的一部分的示图,其中,缓冲存储器250利用用于确 定缓存命中或缺失的现有技术,并且存储系统利用了 ECC。缓冲存储器250试图通过计算快 速命中值来缩短由添加ECC所导致的延迟,其可以或不能呈现实际的缓存命中。缓冲存储 器250包括缓存标记存储器207、SEC-DED ECC单元209和等同比较器211,它们在缓冲存 储器250中基本起到与在缓冲存储器200中相同的作用,其确定缓存命中或缓存缺失的发 生。由这些单元产生的结果被称为真实命中。然而,为了缩短由于包括ECC所导致的延迟,缓冲存储器250还计算快速命中。如 上所述,快速命中可以不准确地表示缓存命中。导致快速命中的存储地址可能实际上结束 为缓存缺失,所以快速命中不是百分百的安全。缓冲存储器250包括ECC生成器255。类 似于ECC生成器205,ECC生成器255从来自处理单元提供的存储地址的CPU标记来生成 ECC0 ECC生成器255输出可以与从缓存标记存储器207获得的ECC进行比较的ECC。可通 过等同比较器257来执行比较。如果两个ECC相同,则断定快速命中。由于通过ECC生成 器255和等同比较器257的延迟通常短于通过缓存标记存储器207、SEC-DED ECC单元209 和等同比较器211的延迟,所以其通常完成得更快。
图2c是示出SEC-DED ECC单元209的详细图的示意图。SEC-DEDECC单元209包 括SEC-DED伴随式单元265,其可用于根据缓存标记计算错误伴随式(error syndrome,也 称错误校正子)。错误伴随式可以是表示缓存标记中存在的任何错误的图案。可以将错误 伴随式提供给错误位解码器267,其可用于确定缓存标记中的哪位(哪些位)包含错误。然 后,错误位校正器269可用于校正缓存标记中的错误位(一位或多位)。来自SEC-DED伴随式单元265的错误伴随式还可以被提供给SEC/DED解码器271, SED/DED解码器271可根据由SEC-DED伴随式单元265提供的错误伴随式来确定是否发生 了单个错误检测(SED)或双错误检测(DED)。如果 发生了 SED,则错误位校正器269可能能 够校正缓存标记中的错误。如果发生了 DED,则错误位校正器269可能不能够校正缓存标记 中的错误,并且会发生缓存缺失。在等同比较器211中可以将错误位校正器269的输出与 CPU标记进行比较,以确定是否发生了缓存命中或缓存缺失。
发明内容
通过快速检测具有错误校正/检测能力的存储系统中的缓存命中的系统和方法 的优选实施例,这些和其他问题总体上都被解决或绕开并且总体上实现了技术优势。根据本发明的实施例,提供了 一种用于确定存储地址的当前缓存状态(in-cache status)的电路。该电路包括连接至缓冲存储器的错误检测单元、连接至缓冲存储器的比较 单元、连接至比较单元的结果单元以及连接至结果单元和错误检测单元的选择单元。错误 检测单元计算存储在缓冲存储器中的数据中存在的错误的标识符,其中,数据与存储地址 相关。比较单元将该数据与存储地址的一部分进行比较,其中,通过连接至该电路的处理单 元提供存储地址的一部分。结果单元基于数据与存储地址的一部分的比较来计算一组可能 的当前缓存状态,以及选择单元基于标识符从该组可能的当前缓存状态中选择当前缓存状 态。根据本发明的另一实施例,提供了一种计算机系统。该计算机系统包括执行操作 的处理单元以及连接至处理单元的存储系统。该存储系统存储数据并检测和校正存储在存 储系统中的数据的错误。该存储系统包括连接至处理单元的缓冲存储器、连接至缓冲存储 器的缓存控制器以及连接至处理单元的主存储器。缓冲存储器提供第一级存储,以及主存 储器提供第二级存储。缓存控制器确定由处理单元提供的存储地址是否保存在缓冲存储器 中。缓存控制器几乎同时计算错误标识符以及存储地址的一部分与来自缓冲存储器的数据 (与存储地址相关)的比较,以确定存储地址是否保存在缓冲存储器中。根据本发明的另一实施例,提供了一种用于确定存储地址是否保存在缓冲存储器 中的方法。该方法包括计算与存储地址相关联的缓冲存储器中数据的错误的标识;将数 据与存储地址的一部分进行比较;以及基于比较结果和标识的可能值来计算保存在缓冲存 储器中的一组可能的存储地址排列。该方法还包括使用标识从该组可能的排列中选择一种 排列。计算标识几乎与比较和计算一组可能排列同时发生。本发明实施例的优点在于,与现有技术相比,可以以及时的方式确定缓存命中或
缓存缺失。本发明实施例的又一优点在于,如果确定了缓存命中,则一定会发生缓存命中。本发明实施例的再一优点在于,由于逻辑复杂性的降低,可以实现集成电路实际状态和功率使用降低。前面已经概述了本发明的特征和技术优点,以下可以更好地理解实施例的详细描 述。下文将描述实施例的附加特征和优点,其形成本发明权利要求的主题。本领域的技术 人员应该理解,所公开的概念和具体实施例可以被用作用于修改或设计执行与本发明相同 目的的其他结构或处理的基础。本领域的技术人员还应该理解,这种等同构造并没有背离 所附权利要求阐明的本发明的精神和范围。
为了更好地理解本发明及其优点,现在结合附图进行以下描述作为参考,其中图1是计算机系统的示意图;图2a是缓冲存储器的一部分的示意图,其中,缓冲存储器利用用于确定缓存命中 或缺失的现有技术;图2b是缓冲存储器的一部分的示意图,其中,缓冲存储器利用用于确定缓存命中 或缺失的现有技术;图2c是现有技术的单个错误校正/双错误检测错误校正码(SEC/DEDECC)单元的 示意图;图3a是缓存存取单元的示意图;图3b是检验位置单元的示意图;图4是用于确定存储地址是否在缓冲存储器中的算法的流程图;图5a是用于检测错误存在的算法的流程图;图5b是用于将缓存标记与CPU标记进行比较的算法的流程图;图5c是用于使用位差和错误标识符确定存储地址是否在缓冲存储器中的算法的 流程图;图6a是SEC-DED ECC单元的组件的仿真延迟的示意图;图6b是缓存存取单元的组件的仿真延迟的示意图;以及图7是利用不同的数据位通过SEC-DED ECC单元和缓存存取单元的延迟的数据 图。
具体实施例方式下面详细描述本发明优选实施例的制造和使用。然而,应该理解,本发明提供了许 多可以在具体环境下实现的许多可应用的发明概念。所讨论的具体实施例仅仅示出了制造 和使用本发明的具体方式,并不限制本发明的范围。将在具体环境下描述实施例,S卩,具有存储系统的计算机系统利用ECC和缓冲存 储器来帮助提高存储系统性能,ECC提供了单个位错误校正和双位错误检测。然而,本发明 还可以应用于具有使用能够校正和检测附加位错误的ECC的存储系统的其他计算机系统。图3a是示出缓存存取单元300的详细图的示意图。如图3a所示,缓存存取单元 300可以确定由处理单元提供的存储地址是否导致缓存命中或缓存缺失。缓存存取单元 300可以产生表示缓存命中或缓存缺失的输出。例如,如果缓存存取单元300的输出为真, 则存储地址可以是缓存命中,而如果缓存存取单元300的输出为假,则存储地址可以是缓存缺失。缓存存取单元300可以是图2a和图2b的SEC-DED ECC单元209和等同比较器 211的组合的实施或替换。缓存存取单元300可以连接至缓存标记存储器207,并且可以从缓存标记存储 器207接收缓存标记,其可以基于由处理单元提供的存储地址。缓存存取单元300包括 SEC-DED伴随式单元265和SEC/DED解码器271。如缓存存取单元300中使用的,SEC-DED 伴随式单元265和SEC/DED解码器271可用于根据在缓存存取单元300的输入处提供的缓 存标记来生成错误伴随式,然后根据错误伴随式来确定缓存标记是否包含错误。如果缓存 标记包含错误,则可以执行进一步的确定,以确定缓存标记中的错误是单个位错误还是双 位错误。根据实施例,如果缓存标记具有两位或更多的错误,则错误将被确定为双位错误。 可选地,如果ECC具有更大的错误检测和校正能力,则代替仅确定单个位和双位错误,SEC/ DED解码器271可以被扩展为确定适当数目的位错误。例如,如果ECC能够检测达到四位错 误,则SEC/DED解码器271可以被扩展为确定一位、双位、三位和四位错误。缓存存取单元300还包括比较器305,其可将缓存标记与处理单元提供的CPU标 记进行比较。比较器305比较两个标记,并产生表示缓存标记与CPU标记的位差的数量的 输出(诸如位差计数)。例如,如果缓存标记与CPU标记相同,则比较器305的输出可以表 明在缓存标记与CPU标记之间存在零(0)位差。通过断定在零位差单元307中的真值(例 如,高电压值)可以表示零位差。如果在缓存标记和CPU标记之间存在单个位差,则比较器 305的输出可以表明在缓存标记与CPU标记之间存在一(1)位差(一位差单元309)。如果 在缓存标记和CPU标记之间存在两位(或更多)差,则比较器305的输出可以表明在缓存 标记与CPU标记之间存在多于一(1)的位差(大于一位差单元309)。如上所述,如果使用 具有更大错误检测/校正能力的ECC,则比较器305可以被扩展为产生与缓存标记与CPU标 记之间的更大范围的位差相对应的更多输出。然后,缓存标记与CPU标记之间的位差(如果有的话)被用于与SEC/DED解码器 271的输出进行结合来确定缓存命中或缓存缺失。例如,如果在缓存标记与CPU标记之间存 在零位差或一位差,则缓存命中或缓存缺失可依赖于SEC/DED解码器271的输出。然而,如 果在缓存标记与CPU标记之间存在多于一位的差,则确定存储地址的结果可以与SEC/DED 解码器271的输出无关。为了讨论的目的,假设由比较器305进行的缓存标记与CPU标记的比较确定在缓 存标记与CPU标记之间存在零位差,如果SEC/DED解码器271确定在缓存标记中没有位错 误(例如,SED = 0),则由处理单元提供的存储地址在缓冲存储器中(即,发生缓存命中)。 然而,如果在缓存标记中存在单个位差(例如,SED = 1),则由处理单元提供的存储地址不 在缓冲存储器中(即,发生缓存缺失)。为了讨论的目的,假设由比较器305进行的缓存标记与CPU标记的比较确定在缓 存标记与CPU标记之间存在一位差,如果SEC/DED解码器271确定在缓存标记中没有位错 误(例如,SED = 0),则由处理单元提供的存储地址不在缓冲存储器中(即,发生缓存缺 失)。然而,如果在缓存标记中存在单个位差(例如,SED = 1),并且如果一位差的位置处 于由错误伴随式指定的相同位置,则由处理单元提供的存储地址在缓冲存储器中(即,发 生缓存命中)。可通过检验位置单元313来执行一位差是否处于由错误伴随式指定的相同 位置的确定。
图3b是示出检验位置单元313的详细图的示意图。检验位置单元313包括单个 错误位置编码器320和等同比较器322。单个错误位置编码器320可以将来自缓存标记存 储器207的输出作为输入,其可以提供诸如缓存标记等信息。来自一位差单元309的使能 控制信号可用于控制单个错误位置编码器器320的操作,其可以在能够进行操作时,根据 缓存标记存储器207提供的信息来计算一位错误伴随式。可选地,单个错误位置编码器320 可以对一位差单元309提供的信息执行一些其他编码。单个错误位置解码器320的输出(一位错误伴随式)可以被提供给等同比较器 322,其将一位错误伴随式与SEC-DED伴随式单元265计算的错误伴随式进行比较。如果一 位错误伴随式和该错误伴随式相同,则由比较器305得到的一位差的位置与缓存标记中的 单个位错误的位置相同。这意味着一位差可以被校正。现在,返回到图3a,如上所述,如果存在多于一位的差(即,两位或更多的位差), 则存在太多位差(位错误),并且ECC不能够校正位错误。由于存在太多位错误,则存储在 缓冲存储器中与存储地址相关的任何信息都是不可靠的。因此,好的解决方案可以是从存 储系统的其他部分(诸如系统存储器或大容量存储装置)获得与存储地址相关的信息。这 可以通过确定在缓冲存储器缺失中得到的存储地址来实现。为了增加性能(例如,减少延迟)而不是在可用时直接根据比较器305和SEC/DED 解码器271的输出确定存储地址的结果(缓存命中或缓存缺失),可以预先计算与位差计 数相关联的不同单元的可能排列,然后基于SEC/DED解码器271的实际输出进行选择。例 如,如果位差计数表明在缓存标记与CPU标记的比较中存在一位差,则可以使用一位差单 元309的输出来计算两个可能的排列。可使用分别被设置为真和假的SED计算两个可能的 排列。可选地,可以计算比较器305的输出的所有可能值(排列),然后基于SEC/DED解 码器271的实际输出进行选择。例如,在SEC/DED解码器271实际确定SED或DED值之前, 零位差单元307、一位差单元309和大于一位差单元311的输出可以被用在计算SED或DED 的每种可能值的排列中。然后,可以将零位差单元307、一位差单元309、和大于一位差单元311的多个输出 提供给多路复用器315,其可以将SEC/DED解码器271的输出用作控制输入。然后,例如,多 路复用器315的输出可以依赖于SED的值。这可以帮助提高性能,这是因为确定缓存命中 或缓存缺失所需的时间现在可以被减小到大约等于SEC-DED伴随式单元265和SEC/DED解 码器271或比较器305的操作的较长持续时间,并且计算比较器305的可能排列输出加上 多路复用器315的持续时间,而不是所有上述持续时间的总和。图4是用于确定存储地址是否在缓冲存储器中的算法400的流程图。算法400可 以用在计算机系统(诸如图1和图3a所示)的存储系统中。只要计算机系统的处理单元 向存储系统提供存储地址以读取或向存储系统写入信息,就可以使用算法400。确定存储地址是否在缓冲存储器中可以包括并行或基本同时操作以帮助减少延 迟,其可能负面地影响计算机系统的性能。第一并行操作可以是检测错误的存在(框405)。 例如,错误可以存在于存储在缓冲存储器中的信息,并且可以包括存储在缓冲存储器中的 缓存标记中的错误。可以在利用与缓存标记相关联的ECC的操作中检测存在于缓存标记中 的错误。
第二并行操作可以是将缓存标记与CPU标记进行比较(框410)。CPU标记可以是 存储地址的一部分,同时缓存标记是基于存储地址的。通常,该比较可以确定缓存标记与 CPU标记是否相同。如果它们不同,则该比较可以确定缓存标记与CPU标记之间差异的多个 位。第二并行操作还可以包括基于来自框405中检测错误的可能结果以及框410中的比较 来计算输出的所有可能排列(确定存储地址是否在缓冲存储器中)。并行或几乎同时执行两个操作可以帮助减少延迟,并潜在地提高性能,因为从前 大约等于两个操作的延迟总和的等待现在被减少到大约为两个操作的延迟中的较长者。一 旦完成两个操作,就已知框405中检测错误的实际结果,并且可将其用于选择存储地址是 否在缓冲存储器中(框420)的实际确定以及确定存储地址是否在缓冲存储器中可以终止。 所选择的确定可用在存储系统中以从存储地址中读取或写入存储地址。图5a是用在检测错误的存在中的算法500的流程图。算法500可以是检测错误 的存在的实现(算法400的框405)。算法500包括计算缓存标记的错误伴随式(框505)。 可基于处理单元提供的存储地址来从缓存标记存储器获得缓存标记。错误伴随式可以是表 示错误(如果有的话)存在于缓存标记中的位的图案。通常,错误伴随式对于不同的错误 图案是唯一的。例如,具有相同错误图案的不同缓存标记可具有相同的错误伴随式。然而, 不同的错误图案具有不同的错误伴随式。算法500还包括基于错误伴随式断定各个信号线(框510)。例如,如果错误伴随 式包含关于单个位错误的信息,则可断定真值在与单个位错误相关联的信号线(诸如SED 信号线)上。类似地,如果错误伴随式包含关于双位错误的信息,则可断定真值在与双位错 误相关联的信号线(诸如DED信号线)上。如果ECC能够检测大量的位错误,则可使用附 加信号线。然后可终止算法500。图5b是用在缓存标记与CPU标记的比较中的算法520的流程图。算法520可以 是将来自缓存和处理单元的数据进行比较的实现(算法400的框410)。算法520包括计算 从缓冲存储器获得的缓存标记与处理单元提供的CPU标记之间的差(框525)。优选地,通 过执行两个逐位比较来计算缓存标记与CPU标记之间的差。计算两者之间的位差的数量的 计数(框530)。在计算缓存标记与CPU标记之间的差的同时或者在差计算完成之后,可以 计算计数。然后可终止算法520。图5c是用在确定存储地址是否在缓冲存储器中的算法550的流程图。算法550 可以描述根据缓存标记中错误的存在(或不存在)(例如,使用算法500计算的)以及缓存 标记与CPU标记之间的差(例如,使用算法520计算的)确定存储地址是否在缓冲存储器 中。算法550可以以检验开始,以确定在DED信号线上是否存在真值(框555)。根据 一个实施例,如果在DED信号线上存在真值,则在缓存标记中至少具有两位错误,位错误太 多而不能校正。由于存在太多位错误需要校正,所以存储在与缓存标记相关联的缓冲存储 器中的数据是不可靠的。因此,对于存储地址可以表明缓存缺失(框557),并且算法550可 以终止。如果在DED信号线上没有真值,则可以执行确定是否存在来自零位差单元的真值 的检验(框559)。来自零位差单元的真值可以表明在缓存标记与CPU标记的比较中没有位 差(框525)。如果存在来自零位差的真值,则可以执行确定在SED信号线上是否具有真值
11的检验(框561)。如果在SED信号线上存在真值,则在缓存标记中存在一位错误。如果在 SED信号线上存在真值,则存储在与缓存标记相关联的缓冲存储器中的数据是不可靠的,这 是因为一旦缓存标记被校正,缓存标记和CPU标记就不匹配,并且可以表明缓存缺失(框 557),算法550可以终止。如果在SED信号线上没有真值,则缓存标记等于CPU标记,并且 存储在与缓存标记相关联的缓冲存储器中的数据是正确的。可以表明缓存命中(框563), 算法550可以终止。如果没有来自零位差的真值,则可以执行确定是否存在来自一位差单元的真值 (框565)。来自一位差单元的真值可表示在缓存标记与CPU标记的比较中存在单个位差 (框525)。如果不存在来自一位差单元的真值,则可以表明缓存缺失(框557),算法550可 以终止。如果存在来自一位差单元的真值,则可以执行检验以确定在SED信号线上是否存 在真值(框567)。如果在SED信号线上存在真值,则在缓存标记中存在一位错误。如果在 SED信号线上不存在真值,则存储在与缓存标记相关联的缓冲存储器中的数据是不可靠的, 这是因为缓存标记和CPU标记不匹配,并且可以表明缓存缺失(框557),算法550可以终 止。如果在SED信号线上存在真值,则可以执行检验以确定由错误伴随式指定的位位置是 否等于由缓存标记与CPU标记的比较所得到的位位置(框569)。如果位位置不同,则缓存 标记与CPU标记不匹配,并且可以表明缓存缺失(框557),算法550可以终止。如果位位 置相同,则缓存标记与CPU标记相匹配,并且可以表明缓存命中(框571),算法550可以终 止。图6a是示出SEC-DED ECC单元209和等同比较器211的组件的仿真延迟的示意 图。制造使用典型制造处理的SEC-DED ECC单元209和等同比较器211的模型,然后进行仿 真以获得组件的典型延迟。如图6a所示,仿真延迟包括SEC-DED伴随式单元265的177ps、 错误位解码器267的87ps、错误位校正器的44ps以及等同比较器211的108ps。因此,通 过SEC-DED ECC单元209和等同比较器211的关键路径可以增加到约416ps。图6b是示出缓存存取单元300的组件的仿真延迟的示意图。制造使用与SEC-DED ECC单元209所使用的相同制造处理的缓存存取单元300的模型,然后进行仿真以获得组 件的典型延迟。如图6b所示,仿真延迟包括SEC-DED伴随式单元265的177ps、SED/DED解 码器271的87ps、比较器305的lllps、零位差单元307、一位差单元309、大于一位差单元 311、检验位置单元313的组合的142ps、以及多路复用器315的52ps。因此,通过缓存存取 单元300的关键路径可以增加到约305ps。将通过SEC-DED ECC单元209和等同比较器211的延迟(416ps)与通过缓存存取 单元300的延迟(305ps)进行比较,通过缓存存取单元300的延迟在持续时间上缩短了约 35%。SEC-DED ECC单元209和等同比较器211与缓存存取单元300的延迟差可以随着数 据位的数量而变化。图7是针对不同数据位的通过SEC-DED ECC单元209和等同比较器 211以及缓存存取单元300的延迟的数据图。如图7所示,对于具有20数据位的存储系统,第一列705表示通过SEC-DED ECC 单元209和等同比较器211的延迟,第二列707表示通过缓存存取单元300的延迟。对于 具有25数据位的存储系统,第三列710表示通过SEC-DED ECC单元209和等同比较器211 的延迟,第四列712表示通过缓存存取单元300的延迟,以及对于具有30数据位的存储系统,第五列715表示通过SEC-DED ECC单元209和等同比较器211的延迟,第六列717表示 通过缓存存取单元300的延迟。缓存存取单元300中的延迟时间分别减少了 24%、28%和 31%。除了减少延迟,缓存存取单元300还可以减少功耗,比SEC-DED ECC单元209和等 同比较器211中使用更简单的比较。缓存存取单元300可以实现由于零位差单元307而减 少约16%的功耗、由于一位差单元309而减少约9%的功耗、以及由于大于一位差单元311 而减少约18%的功耗.此外,集成电路实际状态要求还可以更少。由于总的门数约为SEC-DED ECC单元 209和等同比较器211的四分之三,所以缓存存取单元300可要求减少25%的面积。尽管详细描述了本发明及其优点,但应该理解,在不背离由所附权利要求限定的 本发明的精神和范围的情况下,可以做出各种改变、替换和变化。此外,本发明的范围不用 于限制在说明书中描述的处理、机器、制造、物质、装置、方法和步骤的组合的具体实施例。 本领域的技术人员根据本发明的公开内容、现有或后来发展的处理、机器、制造和物质、装 置、方法或步骤的组合可容易理解,可以根据本公开执行基本上与本文中所描述的对应实 施例相同的功能或者基本实现与本文所描述的对应实施例相同的结果。因此,所附权利要 求包括在其范围内,诸如处理、机器、制造和物质、装置、方法或步骤的组合。
权利要求
一种用于确定存储地址的当前缓存状态的电路,所述电路包括错误检测单元,连接至缓冲存储器,所述错误检测单元被配置为计算存在于存储在所述缓冲存储器中的数据中的错误的标识符,其中,所述数据与所述存储地址相关;比较单元,连接至所述缓冲存储器,所述比较单元被配置为将所述数据与所述存储地址的一部分进行比较,其中,所述存储地址的所述一部分由连接至所述电路的处理单元提供;结果单元,连接至所述比较单元,所述结果单元被配置为基于所述数据与所述存储地址的所述一部分的比较来计算一组可能的当前缓存状态;以及选择单元,连接至所述结果单元和所述错误检测单元,所述选择单元被配置为基于所述标识符从所述一组可能的当前缓存状态中选择当前缓存状态。
2.根据权利要求1所述的电路,其中,所述错误检测单元包括伴随式单元,连接至所述缓冲存储器,所述伴随式单元被配置为计算存在于所述数据 中的错误的所述标识符;以及错误解码器,连接至所述伴随式单元,所述错误解码器被配置为断定信号在与存在于 所述数据中的错误的数量相关联的信号线上;所述错误的数量是所述数据中的位错误的数量,以及其中,所述标识符包括与单个位 错误相关联的信号线。
3.根据权利要求1所述的电路,其中,所述比较单元执行所述数据与所述存储地址的所述一部分的逐位比较;和/或 所述比较单元还被配置为产生所述数据与所述存储地址的所述一部分之间的多个逐 位差的计数。
4.根据权利要求1所述的电路,其中,所述结果单元包括零位差单元,连接至所述比较单元,所述零位差单元被配置为基于在所述数据与所述 存储地址的所述一部分之间没有位差时来产生当前缓存状态;单个位差单元,连接至所述比较单元,所述单个位差单元被配置为基于在所述数据与 所述存储地址的所述一部分之间存在单个位差时来产生当前缓存状态;以及大于一位差单元,连接至所述比较单元,所述大于一位差单元被配置为基于在所述数 据与所述存储地址的所述一部分之间存在两位差或更多位差来产生当前缓存状态。
5.根据权利要求4所述的电路,其中,所述结果单元还包括连接至所述单个位差单元 的检验位置单元,所述检验位置单元被配置为将所述单个位差的第一位置与所述数据中的 单个错误的第二位置进行比较;所述检验位置单元包括单个错误位置编码器,连接至所述单个位差单元,所述单个错误位置解码器被配置为 根据所述单个位差单元的输出计算第二标识符;以及等同比较器,连接至所述单个错误位置编码器和所述错误检测单元,所述等同比较器 被配置为将所述标识符与所述第二标识符进行比较。
6.根据权利要求1所述的电路,其中,所述选择单元包括具有连接至所述错误检测单 元的控制输入的多路复用器,所述数据包括缓存标记,并且所述存储地址的一部分包括CPU 标记。
7.一种计算机系统,包括处理单元,被配置为执行操作;以及存储系统,连接至所述处理单元,所述存储系统被配置为存储数据以及检测和校正存 储在所述存储系统中的数据中的错误,所述存储系统包括缓冲存储器,连接至所述处理单元,所述缓冲存储器被配置为提供第一级存储, 缓存控制器,连接至所述缓冲存储器,所述缓存控制器被配置为确定由所述处理单元 提供的存储地址是否保存在所述缓冲存储器中,其中,所述缓存控制器几乎同时计算错误 标识符以及所述存储地址的一部分与来自所述缓冲存储器的数据的比较,以确定所述存储地址是否保存在所述缓 冲存储器中,其中,所述数据与所述存储地址相关, 以及主存储器,连接至所述处理单元,所述主存储器被配置为提供第二级存储。
8.根据权利要求7所述的计算机系统,其中,所述缓存控制器包括错误检测单元,连接至所述缓冲存储器,所述错误检测单元被配置为计算存储在所述 缓冲存储器中的数据的错误伴随式;比较单元,连接至所述缓冲存储器,所述比较单元被配置为将所述数据与所述存储地 址的一部分进行比较;结果单元,连接至所述比较单元,所述结果单元被配置为基于所述数据与所述存储地 址的所述一部分的比较来计算一组可能的状态,其中,所述一组可能的状态包括针对每个 可能标识符值和比较结果的状态,其中,状态表示所述存储地址是否保存在所述缓冲存储 器中,以及其中,根据所述错误伴随式来计算标识符;以及选择单元,连接至所述结果单元和所述错误检测单元,所述选择单元被配置为基于所 述标识符从所述一组可能的状态中选择状态。
9.根据权利要求8所述的计算机系统,其中,所述错误检测单元包括伴随式单元,连接至所述缓冲存储器,所述伴随式单元被配置为根据所述数据计算所 述错误伴随式;以及错误解码器,连接至所述伴随式单元,所述错误解码器被配置为断定信号在与存在于 所述数据中的错误的数量相关联的信号线上。
10.根据权利要求8所述的计算机系统,其中,所述存储系统能够检测得到两位错误并 校正一位错误,以及其中,所述结果单元包括零位差单元,连接至所述比较单元,所述零位差单元被配置为基于在所述数据与所述 存储地址的所述一部分之间没有位差时的错误伴随式来产生状态;单个位差单元,连接至所述比较单元,所述单个位差单元被配置为基于在所述数据与 所述存储地址的所述一部分之间存在单个位差时的错误伴随式来产生状态;以及大于一位差单元,连接至所述比较单元,所述多于一差单元被配置为基于在所述数据 与所述存储地址的所述一部分之间存在两位差或更多位差时的错误伴随式来产生状态。
11.根据权利要求10所述的计算机系统,其中,所述结果单元还包括连接至所述单个 位差单元的检验位置单元,所述检验位置单元包括单个错误位置编码器,连接至所述单个位差单元,所述单个错误位置解码器被配置为根据所述单个位差单元的输出计算第二错误伴随式;以及等同比较器,连接至所述单个错误位置编码器和所述错误检测单元,所述等同比较器 被配置为将所述错误伴随式与所述第二错误伴随式进行比较。
12.一种用于确定存储地址是否保存在缓冲存储器中的方法,所述方法包括 计算与所述存储地址相关联的所述缓冲存储器中的数据中的错误的标识; 将所述数据与所述存储地址的一部分进行比较;基于比较结果和所述标识的可能值来计算保存在所述缓冲存储器中的所述存储地址 的一组可能的排列;以及使用所述标识从所述一组可能的排列中选择一个排列; 其中,与比较以及计算一组可能的排列几乎同时发生计算标识。
13.根据权利要求12所述的方法,其中, 所述计算标识包括根据所述数据计算伴随式;以及 基于所述伴随式断定多条信号线中的一条。 所述比较包括执行所述数据与所述存储地址的所述一部分的逐位比较;以及 对位差的数量进行计数。
14.根据权利要求13所述的方法,其中,用于所述缓冲存储器中的纠错码能够检测双 位差,以及其中,所述计算一组可能的排列包括根据所述数据和所述存储地址的所述一部分以及所述标识的第一可能值和所述位差 的数量计算第一排列;根据所述数据和所述存储地址的所述一部分以及所述标识的第二可能值和所述位差 的数量计算第二排列;以及其中,计算第一排列和计算第二排列几乎同时发生。
15.根据权利要求13所述的方法,其中,用于所述缓冲存储器中的纠错码能够检测双 位差,以及其中,所述计算一组可能的排列包括根据所述数据和所述存储地址的所述一部分以及所述标识的第三可能值来计算第三 排列,所述位差的数量等于零;根据所述数据和所述存储地址的所述一部分以及所述标识的第四可能值来计算第四 排列,所述位差的数量等于零;根据所述数据和所述存储地址的所述一部分以及所述标识的第三可能值来计算第五 排列,所述位差的数量等于一;根据所述数据和所述存储地址的所述一部分以及所述标识的第四可能值来计算第六 排列,所述位差的数量等于零;根据所述数据和所述存储地址的所述一部分计算第七排列,所述位差的数量等于二或 以上;以及其中,所述计算第三排列、所述计算第四排列、所述计算第五排列、所述计算第六排列、 所述计算第七排列几乎同时发生。
全文摘要
本发明提供了一种用于快速检测缓存命中的系统和方法,用于具有错误校正/检测能力的存储系统。用于确定存储地址的当前缓存状态的电路包括连接至缓冲存储器的错误检测单元、连接至缓冲存储器的比较单元、连接至比较单元的结果单元以及连接至结果单元和错误检测单元的选择单元。错误检测单元计算出现在存储于缓冲存储器中的数据中的错误的标识符,其中,数据与存储地址相关。比较单元将数据与存储地址的一部分进行比较,结果单元基于比较计算一组可能的当前缓存状态,以及选择单元基于标识符从该组可能的高速缓存中状态当前缓存状态选择高速缓存中状态当前缓存状态。
文档编号G06F12/08GK101807165SQ20101000281
公开日2010年8月18日 申请日期2010年1月12日 优先权日2009年1月22日
发明者陈彝梓 申请人:台湾积体电路制造股份有限公司