CN1522410A - 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位 - Google Patents

使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位 Download PDF

Info

Publication number
CN1522410A
CN1522410A CNA028130103A CN02813010A CN1522410A CN 1522410 A CN1522410 A CN 1522410A CN A028130103 A CNA028130103 A CN A028130103A CN 02813010 A CN02813010 A CN 02813010A CN 1522410 A CN1522410 A CN 1522410A
Authority
CN
China
Prior art keywords
cache
instruction
byte
data
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA028130103A
Other languages
English (en)
Other versions
CN1287292C (zh
Inventor
G��D��С����˹��
G·D·小左拉斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1522410A publication Critical patent/CN1522410A/zh
Application granted granted Critical
Publication of CN1287292C publication Critical patent/CN1287292C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Abstract

本发明揭示了一种微处理器,该微处理器被设定成储存被舍弃的指令及数据字节。在一个实施例中,该微处理器包含预解码单元、指令高速缓存、数据高速缓存、及二级高速缓存。该预解码单元接收指令字节,并生成对应的预解码信息,且该预解码信息连同所述指令字节被储存在该指令高速缓存。该数据高速缓存接收并储存数据字节。该二级高速缓存被设定成:接收并储存来自该指令高速缓存的被舍弃的指令字节、以及奇偶校验信息及预解码信息,且接收并储存来自该数据高速缓存的被舍弃的数据字节、以及错误校正码位。可将指示位储存在缓存行部分,以便指示该缓存行中储存的数据的类型。

Description

使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位
技术领域
本发明涉及微处理器,特别涉及有关微处理器内可变长度指令的解码。
背景技术
为x86指令集所撰写的应用软件的数目相当多。因此,尽管有较新且较先进的指令集的导入,微处理器设计者还是持续设计出可执行x86指令集的微处理器。
x86指令集较为复杂,且其特征为具有多个可变长度指令。x86指令集的一例示一般性格式系示于图1。如该图所示,一个x86指令包含一至五个可选择的前缀字节102、以及后续的一操作码字段104、一可选择的寻址模式(Mod R/M)字节106、可选择的标度-索引-基底(optionalScale-Index-Base;简称SIB)字节108、可选择的位移字段110、及可选择的直接数据域位112。
操作码字段104定义特定指令的基本操作。一个或多个前缀字节102修改特定操作码的系统默认操作。例如,可利用其中一个前缀字节102来改变指令的地址或操作数大小,以便置换用于内存寻址的系统默认的区段,或指示处理器重复一字符串操作若干次。操作码字段104接续在可选择的前缀字节102之后,且操作码字段104的长度可以是一或二个字节。寻址模式(Mod R/M)字节106指定所用的寄存器、以及内存寻址模式。标度-索引-基底(SIB)字节108只用于采用标度因子及索引因子的32位相对基底地址。SIB字节108内的基底字段指定哪一寄存器存放有地址计算的基底值,且SIB字节108内的索引字段指定哪一寄存器存放有索引值。SIB字节108内的标度字段指定该索引值将要乘上的二的乘幂值,而将上述操作的结果连同任何位移值加到该基底值。下一指令字段是一位移字段110,该位移字段110是可选择的,且其长度可以是一至四个字节。位移字段110存放有用于地址计算的常数。可选择的直接数据域位112的长度也可以是一至四个字节,且直接数据域位112存放有用来作为指令操作数的常数。最短的x86指令的长度只有一个字节,且包含单一的操作码字节。80286将指令的最大长度设定为10个字节,而80386及80486容许的指令长度最大可到15个字节。
x86指令集的复杂性在实施高效能的x86兼容微处理器时造成许多困难。更具体而言,x86指令的可变长度使指令的解码较困难。指令的解码通常涉及:确定一指令的边界;然后识别该指令内的每一个字段,例如操作码及操作数字段。通常在自指令高速缓存提取指令时,进行指令解码,然后才执行指令。
确定指令边界的一种方法涉及:当从主存储器读取每一指令并将该指令储存在指令高速缓存时,生成并储存该指令的一个或多个预解码位(predecode)。所述预解码位提供了与其相关联的指令字节有关的信息。例如,所触发的一预解码起始位指示该相关联的指令字节是指令的第一字节。一旦计算出特定指令字节的起始位之后,即将该起始位连同该指令字节储存在指令高速缓存中。当执行一个″提取(fetch)″时,从指令高速缓存读取若干指令字节,并将所述指令字节解码,以便为执行而作准备。扫描任何相关联的起始位,以便生成该提取的个别指令的有效遮盖。有效遮盖(valid mask)是一系列的位,其中每一位对应于一特定的指令字节。与指令的第一字节、该指令的最后一个字节、及在该指令的第一与最后一个字节之间的所有字节相关联的有效遮盖位被触发。所有其它的有效遮盖位并未被触发。一旦计算出该有效遮盖之后,即可将该有效遮盖用来遮蔽其它指令不得使用的字节。
现在请参阅图2,图中表示一例示性的有效遮盖。图中表示提取120的一部分、及其相关联的起始位122。假设要生成指令B128的有效遮盖126,且触发起始位122A与起始位122B间的所有位,以便生成罩盖126。一旦生成了有效遮盖126之后,即可利用有效遮盖126来遮蔽提取120内不是指令B128的一部分的所有字节。
如前文所述,预解码信息尤其适用于减少解码时间。通过将预解码信息连同指令字节储存在指令高速缓存中,则即使(诸如在一循环中)执行了对应的指令若干次,也只须要计算该预解码信息一次。然而,不幸的是:当自指令高速缓存中取代或舍弃该指令时,即失掉了任何相关联的预解码信息。下一次将该指令读取到指令高速缓存时,必须再度生成预解码信息。当因分支错误预测或高速缓存未命中而将该指令读取到指令高速缓存时,等候预解码信息计算所造成的时间延迟尤其可能损及效率。与在需要一些指令之前以推测方式预提取所述指令不同,由于分支错误预测或高速缓存未命中的指令提取可能在等候接收所请求的指令时,造成微处理器的解码器及功能单元的停顿。在此种情况中,生成预解码信息所需的时间对该微处理器的效能可能造成严重的影响。
由于上述这些理由及其它的理由,需要一种可缩短预解码时间的方法及装置。尤其需要一种可缩短用来生成先前已从一指令高速缓存舍弃的指令的预解码信息所需的时间的方法及装置。
在发明人为Rupaka Mahalingaiah的美国专利6,092,182″使用ECC/奇偶校验位存储预解码信息Using ECC/Parity Bits to Store PredecodeInformation″中,提出了这些问题的一个可能的解决方案,亦即将预解码信息储存在二级高速缓存的ECC/奇偶校验位中。有利的结果是:在某些情况中,可能避开对被舍弃的指令字节的预解码的延迟。
然而,所提出的解决方案仍然无法使二级高速缓存中储存的数据避免一个及多个的位错误。由于现有的微处理器的较高工作频率及较高的集成度,所以储存错误(尤其是高速缓存中的储存错误)是一个潜在的问题点。因此,需要一种可减少被舍弃的预解码信息量且仍然保留有至少能检测出某些常见类型的错误(例如单一位错误)的能力的系统及方法。
发明内容
本发明所述的一种用来储存被舍弃的指令预解码信息的系统及方法可至少部分地解决前文所述的问题。在一个实施例中,被设定成储存被舍弃的指令预解码信息的微处理器可包含预解码单元及加载/储存单元。可将该预解码单元设定成:接收指令字节,并生成对应的预解码信息。亦可将该预解码单元设定成将指令字节及对应的预解码信息储存在一指令高速缓存中。可将该加载/储存单元设定成:接收若干数据字节,并将所述数据字节储存在一数据高速缓存中。该指令高速缓存及数据高速缓存可合而形成该处理器的″一级″高速缓存。该处理器亦可包含二级高速缓存,且将该二级高速缓存设定成:分别从该指令高速缓存及数据高速缓存接收并储存被舍弃的指令字节及数据字节。亦可将该二级高速缓存设定成:接收并储存所储存的被舍弃指令字节的奇偶校验信息及预解码信息、以及所储存的被舍弃数据字节的错误校正码(Error Correction Code;简称ECC)位。
在一个实施例中,该微处理器亦可包含奇偶校验位生成及检查逻辑电路,该奇偶校验位生成及检查逻辑电路被设定成为二级高速缓存中储存的指令字节生成奇偶校验位。亦可将该奇偶校验位生成及检查逻辑电路设定成检查从该二级高速缓存读取的指令字节的奇偶校验位。在某些实施例中,亦可将该指令高速缓存设定成储存奇偶校验信息,因而可对指令高速缓存及二级高速缓存中的指令字节进行奇偶校验检查。
同样地,该微处理器亦可包含错误检查及校正逻辑电路,且该错误检查及校正逻辑电路被设定成为该二级高速缓存中储存的数据字节生成错误检查及校正码位。可将该错误检查及校正逻辑电路设定成检查从该二级高速缓存读取的数据字节的ECC位。在某些实施例中,可将该错误检查及校正逻辑电路设定成校正从该数据高速缓存读取的(而非从该二级高速缓存读取的)数据字节中的至少一个位错误。
在某些实施例中,可将该二级高速缓存分成若干缓存行(例如逻辑列及(或)行),其中将每一缓存行设定成储存被舍弃的数据或被舍弃的指令字节。可将指示位(也被称为″数据类型″位)用于该二级高速缓存的每一缓存行,以便指示(a)被舍弃的指令字节、预解码信息、及奇偶校验信息、或(b)储存在该缓存行中的ECC信息及数据字节。在某些实施例中,该二级高速缓存可以是内容独占式高速缓存,此时该二级高速缓存储存唯一的被舍弃的指令字节及数据字节、以及其对应的ECC位、奇偶校验位、预解码位、及指示位。在其它的实施例中,该二级高速缓存可以是内容蕴含式高速缓存,此时该二级高速缓存也储存尚未被舍弃的指令字节及数据字节的拷贝。
本发明亦可考虑到一种用来储存被舍弃的预解码信息的系统。在一个实施例中,该系统可包含被设定成接收指令字节及数据字节的处理器。可将该处理器设定成根据所述指令字节形成的指令而对所述数据字节操作。该系统亦可包含一个高速缓存,该高速缓存被设定成从该处理器接收并储存被舍弃的指令字节及被舍弃的数据字节。可将该高速缓存设定成接收并储存所述被舍弃的指令字节的奇偶校验信息及预解码信息。亦可将该高速缓存设定成接收并储存所储存的所述被舍弃的数据字节的ECC位。可将该高速缓存设定成:响应请求所述被舍弃的数据字节的该处理器,而将所述被舍弃的数据字节及对应的ECC位提供给该处理器。同样地,可将该高速缓存设定成:响应请求所述被舍弃的指令字节的该处理器,而将所储存的所述被舍弃的指令字节以及对应的奇偶校验信息及预解码信息提供给该处理器。有利之处为:该处理器可利用来自该指令高速缓存的该预解码信息,以取代为所述指令字节重新生成新的预解码信息。如果发生写入所述指令字节的情况(例如自行修改程序代码),则可使所储存的预解码信息无效(例如,以将无效常数储存在该预解码信息上的方式),并可计算新的奇偶校验信息。
在某些实施例中,可将该高速缓存实施为在与该处理器共同的一晶粒上形成的二级高速缓存。在其它的实施例中,可在与该处理器不同的晶粒上形成该高速缓存。在某些实施例中,可将该高速缓存分成:被设定成储存被舍弃的指令字节(及对应的预解码信息及奇偶校验信息)的第一部分、及被设定成储存被舍弃的数据字节及对应的ECC信息的第二部分。
本发明亦考虑到一种用来储存被舍弃的预解码信息的方法。在一个实施例中,该方法可包含下列步骤:接收指令字节;以及生成所述指令字节的对应的预解码信息。然后可将所述指令字节及预解码信息储存在第一内存中。可响应所述指令字节在该第一内存中被覆写,而将至少一部分的所述指令字节及该预解码信息输出到第二内存。可生成对应于该第二内存中储存的所述指令字节及预解码信息的至少一个奇偶校验位,并将将所述奇偶校验位储存在该第二内存中。该方法亦可包含下列步骤:接收数据字节;以及将所述数据字节储存在第三内存中。可响应所述数据字节在该第三内存中被覆写,而将至少一部分的所述数据字节储存到该第二内存。所述数据字节可具有所生成的ECC信息,且将ECC信息连同所述数据字节储存在该第二内存中。亦可生成该第二内存中的每一缓存行的指示位,并将所述指示位储存在该第二内存中,以便指示该第二内存中储存了指令字节以及预解码位与奇偶校验信息、或数据字节以及ECC信息。
虽然易于对本发明作出各种修改及替代形式,还是以附图举例的方式表示出本发明的一些特定实施例,且本文将详细说明这些特定实施例。然而,我们应当了解,本发明的所有附图及详细说明的用意并非将本发明限于所揭示的特定形式,相反地,本发明将涵盖在最后权利请求所定义的本发明精神及范围内的所有修改、等效物、及替代方式。本文所用的小标题只是为了组织上的目的,并非用来限制说明书或申请专利的范围。在本说明书全文的用法中,措词″可能″(″may″)是一种容许性的用法(亦即,其意义具有可能性),而不是一种强制性的用法(亦即,其意义为必须)。同样地,措词″包括″(″include″、″including″、及″includes″)意指包括但不仅限于所包括的事项。
附图说明
若参照下文中的详细说明,并配合各附图,将可易于了解本发明的其它目的及优点,这些附图有:
图1是一般性x86指令格式的方块图。
图2是有效遮盖的一个实施例的方块图。
图3是微处理器的一个实施例的方块图。
图4标出在图3所示指令高速缓存与二级高速缓存间的接口的一个
实施例的细节。
图5标出图4所示指令高速缓存的一个实施例与图4所示二级高速缓存的一个实施例间的关系的细节。
图6是一种用来储存二级高速缓存中的预解码信息的方法的一个
实施例的流程图。
图7A及图7B示出用来储存被舍弃的预解码信息的系统的不同实施例。
图8A及图8B是用来储存被舍弃的预解码信息的方法的不同实施例的流程图。
图9示出用来储存被舍弃的预解码信息的系统的另一个实施例。
图10标出采用图3所示微处理器的计算机系统的一个实施例。
具体实施方式
现在请参阅图3,图中表示微处理器10的一个实施例的方块图。微处理器10包含预提取/预解码单元12、分支预测单元14、指令高速缓存16、指令对准单元18、多个解码单元20A至20C、多个指令保留区22A至22C、多个功能单元24A至24C、加载/储存单元26、数据高速缓存28、寄存器文件30、重新排序缓冲区32、及MROM单元34。本文中标示为一特定代号及一接续的字母的各组件可概括地只标示其代号。例如,可将各指令保留区22A至22C概括地标示为指令保留区22。
预提取/预解码单元12被连接而自一主存储器子系统(图中未示出)接收指令,且又连接到指令高速缓存16及分支预测单元14。同样地,分支预测单元14连接到指令高速缓存16。分支预测单元14亦连接到指令对准单元18及功能单元24A至24C。指令高速缓存16又连接到MROM单元34及指令对准单元18。指令对准单元18又连接到加载/储存单元26及各别的解码单元20A至20C。各个解码单元20A至20C连接到指令保留区22A至22C,而所述指令保留区22A至22C又连接到各别的功能单元24A至24C。此外,指令对准单元18及指令保留区22连接到寄存器文件30及重新排序缓冲区32。功能单元24连接到加载/储存单元26、寄存器文件30、及重新排序缓冲区32。数据高速缓存28连接到加载/储存单元26及主存储器子系统。最后,MROM单元34连接到指令对准单元18。
预提取/预解码单元12自主存储器预提取指令。预提取/预解码单元12将所述可变长度指令预解码为固定长度指令,然后将所述固定长度指令储存在指令高速缓存16。可使用预提取架构,而在指令被实际请求之前,先对这些指令进行预提取及预解码。预提取/预解码单元12可采用各种预提取架构。在继续进行对预解码单元12及指令高速缓存16的更详细说明之前,将先说明与该图所示例示微处理器10的实施例有关的一般概貌。
微处理器10可采用分支预测,以便以推测方式提取在有条件的分支指令之后的指令。包含分支预测单元14,以便执行分支预测操作。在一个实施例中,储存指令高速缓存16中的每一个缓存行的每一个16字节部分的至多两个分支目标地址。当将一个特定的缓存行预解码时,预提取/预解码单元12确定起始的分支目标。可能因执行缓存行内的指令,而发生对与该缓存行对应的所述分支目标的后续更新。指令高速缓存16将所提取的指令地址的指示提供给分支预测单元14。此种方式可在形成分支预测时让分支预测单元14确定要选择哪些分支目标地址。指令对准单元18及功能单元24将更新信息提供给分支预测单元14。因为分支预测单元14储存该缓存行的每一个16字节部分的两个目标,所以可能不会将对该缓存行内的某些分支指令的预测储存在分支预测单元14中。可将指令对准单元18设定成检测分支预测单元14并未预测到的各分支指令。功能单元24执行所述分支指令,并确定是否错误预测了所预测的分支方向。该分支方向可以是″采用″,此时从该分支指令的目标地址提取后续的指令。相反地,该分支方向可以是″不采用″,此时从接续该分支指令的各记忆位置提取后续的指令。当检测到错误预测的分支指令时,从微处理器10的各单元舍弃该错误预测的分支之后的各指令。分支预测单元14可采用各种适用的分支预测算法。
指令高速缓存16是一种用来储存从预提取/预解码单元12接收的指令的高速高速缓存。然后自指令高速缓存16提取所储存的指令,并将所述指令传送到指令对准单元18。在一个实施例中,可将指令高速缓存16设定成一组关系型结构。指令高速缓存16可额外地采用路(way)预测架构,以便加速访问时间。例如,并不访问用来识别每一缓存行的指令的标记,然后将所述标记与提取地址比较,以便选择一路;而是指令高速缓存16可预测所访问的路。在此种方式下,系在访问内存数组之前,以推测方式选择该路。使用路预测时,指令高速缓存16的访问时间可类似于一直接对映式高速缓存。在读取了指令字节之后,执行标记比较,以供验证。如果该路预测是错误的,则提取正确的指令字节,并舍弃(进一步沿着处理线路向下的)不正确的指令字节。请注意,可以用完全关系型、组关系型、或直接映射方式来实施指令高速缓存16。
MROM单元34是一被设定成储存″快速路径指令″序列的只读存储器。快速路径指令是解码器20A至20C及功能单元24A至24C可解码及执行的指令。相反地,″MROM指令″是过于复杂而使解码单元20A至20C及功能单元24A至24C无法直接解码或执行的指令。当指令高速缓存16输出MROM指令时,MROM单元34响应时系输出一序列的快速路径指令。更具体而言,MROM单元34分析该MROM指令,并将该MROM指令转换为子集的已定义的快速路径指令,以便完成所需的操作。MROM单元34将该子集的快速路径指令派发到解码单元20A至20C。
一旦自指令高速缓存16提取了若干指令字节之后,即将所述指令字节传送到指令对准单元18。指令对准单元18将所述指令传送到其中一个解码单元20A至20C。亦检测寄存器操作数信息,并将该寄存器操作数信息传送到寄存器文件30及重新排序缓冲区32。此外,如果所述指令需要执行一个或多个内存操作,则指令对准单元18将所述内存操作派发到加载/储存单元26。将每一个经过解码的指令连同该指令中可能包含的操作数地址信息及位移或直接数据派发到指令保留区22。
微处理器10支持非循序执行,因而采用重新排序缓冲区32来追踪寄存器读取及写入操作的原始程序顺序,而实施寄存器更名,以便可进行推测式指令执行、及分支错误预测的还原,并协助精确的异常状况处理。在对一涉及一寄存器的更新的指令的解码时,保留重新排序缓冲区32内的一暂时性储存位置。该暂时性储存位置储存因指令的推测式执行而生成的推测式寄存器状态。如果分支预测是错误的,则可在重新排序缓冲区32中使所述以推测方式执行的指令的结果以及该错误预测的路径无效,然后才将所述结果及该错误预测的路径写入寄存器文件30。同样地,如果特定的指令造成异常状况,则可舍弃在造成异常状况的该指令之后的各指令。在此种方式下,异常状况是″精确的″(亦即,在该异常状况之前,并不会完成造成该异常状况的指令之后的各指令)。请注意,如果在程序顺序是在特定指令前面的各指令之前先执行该特定指令,则以推测方式执行该特定指令。在前面的各指令可能是分支指令、或造成异常状况的指令,在此种情况中,重新排序缓冲区32可舍弃推测式结果。
将指令对准单元18的输出端上提供的经过解码的所述指令及直接数据或位移数据直接传送到各别的指令保留区22。在一个实施例中,每一个指令保留区22可存放多至三个的等候发出到对应的功能单元的待处理指令的指令信息(亦即,经过解码的指令以及操作数值、操作数标记、及(或)直接数据)。请注意,对于该图所示的实施例而言,每一个指令保留区22与一个专用的功能单元24相关联。因此,指令保留区22及功能单元24形成三个专用的″发出位置″。换言之,指令保留区22A及功能单元24A形成发出位置0。由功能单元24A执行对准且派发到指令保留区22A的指令。同样地,指令保留区22B及功能单元24B形成发出位置一;且指令保留区22C及功能单元24C形成发出位置二。
在对一个特定指令解码时,如果所需的操作数是寄存器位置,则将寄存器地址信息同时传送到重新排序缓冲区32及寄存器文件30。本领域技术人员当可了解,x86寄存器文件包括八个32位的实际寄存器(亦即,通常被称为EAX、EBX、ECX、EDX、EBP、ESI、EDI、及ESP)。在采用x86微处理器架构的微处理器10实施例中,寄存器文件30包含每一个所述32位实际寄存器的储存位置。寄存器文件30内可包含额外的储存位置,以便为MROM单元34所使用。重新排序缓冲区32包含用于改变了这些寄存器的内容的执行结果的若干暂时性储存位置,因而可容许非循序执行。将重新排序缓冲区32的暂时性储存位置保留给在解码时确定会修改其中一个所述实际寄存器的内容的每一个指令。因此,在执行特定程序的各时点上,重新排序缓冲区32可具有其中存放了特定寄存器的推测式执行内容的一个或多个位置。
如果在将特定指令解码之后,确定重新排序缓冲区32具有指定给寄存器且用来作为该特定指令的操作数的一个或多个先前位置,则重新排序缓冲区32将下列信息传送到对应的指令保留区:(1)最近指定的位置中的值;或(2)该最近指定的位置的一标记,而传送该标记的前提是最终将执行该先前指令的功能单元尚未生成该值。如果重新排序缓冲区32具有一个保留给特定寄存器的位置,则自重新排序缓冲区32提供该操作数值(或重新排序缓冲区标记),而不是自寄存器文件30提供该操作数值(或重新排序缓冲区标记)。如果重新排序缓冲区32中并没有任何保留给所需寄存器的位置,则直接自寄存器文件30取得该值。如果该操作数对应于记忆位置,则将该操作数值经由加载/储存单元26提供给指令保留区。
在一特定实施例中,重新排序缓冲区32被设定成储存并以一个单元的方式同时操作被解码的各指令。本文将该这种设定称为″线串导向″(″line-oriented″)。通过合起来操作数个指令,即可简化重新排序缓冲区32内所采用的硬件。例如,当指令对准单元18派发一个或多个指令时,本实施例中包含的一个线串导向重新排序缓冲区即分配足以储存与三个指令有关的指令信息的储存位置。相反地,在传统的重新排序缓冲区中,是根据实际派发的指令数目,而分配可变量量的储存位置。可能需要较大数目的逻辑闸,才能分配该可变量量的储存位置。当已执行了每一个同时被解码的指令时,即将各指令结果同时储存到寄存器文件30。然后该储存位置是可自由分配给另一组同时被解码的指令。此外,因为是将控制逻辑电路分摊到数个同时被解码的指令,所以减少了每一指令所采用的控制逻辑电路量。可将用来识别特定指令的重新排序缓冲区标记分成两个字段:一个缓存行标记及一个偏移量标记。该缓存行标记识别包含该特定指令的该组同时被解码的指令,而该偏移量标记识别该组内的哪一指令对应于该特定指令。请注意,将指令结果储存到寄存器文件30并释出对应的储存位置被称为使该指令″退休″(″retiring″)。又请注意,可在微处理器10的各种实施例中采用任何重新排序缓冲区的形式。
如前文所述,指令保留区22储存指令,直到对应的功能单元24执行所述指令为止。是在下列的条件下选择一指令以供执行:(i)已提供该指令的操作数;以及(ii)尚未提供在相同指令保留区22A至22C内且按照程序顺序是在该指令之前的那些指令的操作数。请注意,当其中一个功能单元24执行一指令时,将该指令的结果直接传送到正在等候该结果的任何指令保留区22,同时传送该结果,以便更新重新排序缓冲区32(通常将该技术称为″结果传送″(″result forwarding″))。在传送相关联的结果的时钟周期中,可选择一指令以供执行,并将该指令传送到一功能单元24A至24C。在此例中,指令保留区22将所传送的结果绕送到功能单元24。
在一个实施例中,将每一功能单元24A至24C设定成执行加法及减法的整数算术运算以及移位、旋转、逻辑运算、及分支操作。请注意,亦可采用浮点运算单元(图中未示出)来进行浮点运算。该浮点运算单元可用一个协同处理器的方式工作,自MROM单元34接收指令,然后与重新排序缓冲区32交换讯息,以便完成该指令。此外,可将功能单元24设定成执行地址生成,以供加载/储存单元26所执行的加载及储存内存操作。
每一个功能单元24还将与有条件分支指令的执行相关的信息提供给分支预测单元14。如果分支预测是不正确的,则分支预测单元14清除在该错误预测的分支之后的已进入指令处理线路的各指令,并从指令高速缓存16或主存储器提取所需的指令。请注意,在此种情况中,舍弃了原始程序序列中在该错误预测的分支指令之后发生的指令结果,其中包括已经经过推测式执行且暂时储存在加载/储存单元26及重新排序缓冲区32的那些指令结果。
如果正在更新寄存器值,则将功能单元24所生成的结果传送到重新排序缓冲区32,而如果记忆位置的内容改变了,则将该结果传送到加载/储存单元26。如果要将该结果储存在寄存器,则当将该指令解码时,重新排序缓冲区32将该结果储存在保留给该寄存器的值的位置。设有多个结果总线38,用以从功能单元24及加载/储存单元26传送结果。结果总线38传送所生成的结果、以及用来识别所执行的指令的重新排序缓冲区标记。
加载/储存单元26提供功能单元24与数据高速缓存28间的一接口。在一个实施例中,加载/储存单元26被设定成具有:一载入/储存缓冲区,该载入/储存缓冲区具有八个储存位置,用以储存待处理的加载或储存的数据及地址信息。当该缓冲区已填满时,指令对准单元18必须等候到加载/储存单元26有了可供待处理的加载或储存请求信息的空间为止。加载/储存单元26也执行加载内存操作对待处理的储存内存操作的相关性检查,以便确保数据的一致性。内存操作是在处理器10与主存储器子系统间的数据转移。内存操作可能是利用内存中储存的操作数的指令的结果,内存操作也可能是引发数据转移但并未引发任何其它操作的加载/储存指令的结果。此外,加载/储存单元26可包含用于诸如区段寄存器及与x86处理器架构所定义的地址转换机制有关的其它寄存器等的特殊寄存器的一特殊寄存器储存单元。
在一个实施例中,加载/储存单元26被设定成以推测方式执行加载内存操作。可按照程序顺序执行储存内存操作,但也可将储存内存操作以推测方式储存到所预测的路中。如果该预测的路是不正确的,则随即将在该储存内存操作之前的数据还原到该预测的路,且将该储存内存操作执行到正确的路。在另一个实施例中,也可以推测方式执行储存操作。将推测式执行的储存操作连同缓存行在更新之前的一份拷贝置入一储存缓冲区。如果后来因分支错误预测或异常状况而舍弃该推测式执行的储存操作,则可将该缓存行还原到该缓冲区中储存的值。请注意,可将加载/储存单元26设定成执行任何数量的推测式执行,其中包括没有任何推测式执行。
数据高速缓存28是一种高速的高速缓存,用以暂时性地储存在加载/储存单元26与主存储器子系统之间转移的数据。在一个实施例中,数据高速缓存28在八路组关系型结构中具有最多可储存64k字节数据的容量。与指令高速缓存16类似,数据高速缓存28可采用路预测机制。我们应当了解,可以用各种特定的存储器形式来实现数据高速缓存28,这些形式包括组关系型形式及直接映射式形式。
在采用x86微处理器架构的微处理器10的特定实施例中,指令高速缓存16及数据高速缓存28是被线性寻址的。利用指令所指定的偏移量及x86地址转换机制的区段部分所指定的基址而形成该线性地址。或可将线性地址转换为物理地址,以便访问主存储器。x86地址转换机制的记忆页部分指定了该线性地址至物理地址的转换。请注意,线性寻址的高速缓存储存线性地址标记。可采用一组物理标记(图中未示出),以便将线性地址对映到物理地址,并检测转换别名。此外,该物理标记区段可执行线性地址至物理地址的转换。
预提取/预解码单元及指令高速缓存
如前文所述,许多诸如Intel 82491/82492高速缓存SRAM的被用来作为微处理器的外部高速缓存的内存装置可以设定成储存奇偶校验信息。在一个实施例中,可针对每八个数据位而储存一个奇偶校验位。假设需要偶数的奇偶校验,则一个011010112的数据字节将有一个触发的奇偶校验位,因而触发的位的总数是偶数。可由微处理器生成该奇偶校验位,然后将该奇偶校验位连同数据字节储存在该外部高速缓存。当微处理器从该高速缓存读取该数据时,该微处理器可计算所触发的数据位及奇偶校验位的数目。如果所得到的值不符合所选择的奇偶校验,则发生了一奇偶校验错误,且该微处理器可采取适当的行动,例如将发生了一内存错误的讯息通知操作系统。其它的内存装置可将额外的位分配给错误检查及校正(Error Checking and Crrection;简称ECC)。
虽然诸如服务器等的高级系统通常支持奇偶校验检查及ECC,但是许多中低级系统的设计者会因为发生数据错误的机率较低,而选择不启动这些特殊功能。在这些系统中,可将二级高速缓存中的奇偶校验位及ECC位用来储存预解码信息。此种方式可以在不需要系统级上的广泛硬件改变的情况下,有利地提升效能。
现在请参阅图4,图中表示预解码单元12及指令高速缓存16的一个实施例的细节。在该实施例中,预解码单元12经由总线接口逻辑电路52而连接到高速缓存50。高速缓存50包含一低存取时间的宽频内存,该内存设于与微处理器10相同的硅芯片上,或设于连接到附近(例如,在子卡上、或在接近微处理器10的主机板上)的独立硅芯片上。高速缓存50可包括静态随机存取内存(Static Random Access Memory;简称SRAM)、同步动态随机存取内存(Synchronous Dynamic Random AccessMemory;简称SDRAM)、或其它类型的低存取时间内存。高速缓存50可设于与微处理器10相同的硅芯片、或独立的硅芯片上。在某些实施例中,可将高速缓存50称为″二级″高速缓存,这是因为该高速缓存是第二最接近微处理器10的功能单元的高速缓存,亦即,在第一级指令高速缓存16及数据高速缓存28之后。亦可将高速缓存50称为″外部高速缓存″,这是因为该高速缓存是在微处理器的外部。
总线接口逻辑电路52可包含多任务器、缓冲器、收发器、驱动器、或可起动或者改善微处理器10与高速缓存50间的数据信号、地址信号、及控制信号的传输的任何其它类型的总线接口逻辑电路。在某些实施例中,在微处理器10与二级高速缓存50之间可能不需要有任何总线接口逻辑电路52。例如,如果微处理器10及二级高速缓存50在物理上是充分相互接近,且其输出晶体管的驱动能力够高,则微处理器10及高速缓存50可在无须总线接口逻辑电路52的情况下相互连接。
预解码单元12被设定成:接收来自分支预测单元14预提取的指令地址,并将所述指令地址经由总线68、总线接口逻辑电路52、及内存总线56而传送到高速缓存50。如果二级高速缓存50正在储存对应于所请求地址的指令字节,则将预定数目的指令字节(例如,缓存行的32个字节经由总线56、总线接口逻辑电路52、及总线68而传送到预解码单元12。如果所请求的指令字节并未被储存在二级高速缓存50,则高速缓存50被设定成自主存储器子系统撷取所请求的指令字节。一旦自主存储器子系统传送了所请求的指令字节之后,即将所述指令字节传送到指令高速缓存16。亦可将所述指令字节储存在高速缓存50中。
当预解码单元12接收到所请求的指令字节时,即为每一个指令字节生成预解码信息。在该图所示的实施例中,预解码单元12为每一指令字节生成一起始位。假设预解码单元12响应一请求地址的输出而接收32个字节(例如一缓存行),则可将预解码单元12设定成:为每一指令字节生成一个起始位,因而总共生成32个起始位。一旦生成了起始位之后,即将所述起始位传送到指令高速缓存16,且将所述起始位连同其相关联的指令字节储存在指令高速缓存16。可局部地将指令高速缓存16组织成多个缓存行储存位置64及多个预解码信息储存位置62,其中一个预解码信息储存位置对应于一个缓存行储存位置。亦可将所述指令字节及预解码位直接传送到指令对准单元18。
一旦指令高速缓存16内的所有缓存行储存位置64被填满之后,可利用若干种不同的算法来确定在发生高速缓存未命中时应取代哪一缓存行。例如,为了减少在最近的未来将需要用到的信息被舍弃的机会,可使用记录了高速缓存访问顺序的最近最少使用(Least-RecentlyUsed;简称LRU)取代架构。当选择将要覆写的缓存行时,将对应的预解码信息储存位置62中储存的相关联的预解码信息自指令高速缓存16经由预解码单元12及总线接口逻辑电路52而输出到高速缓存50。预解码单元12亦传送对应于被覆写的指令高速缓存信息的地址。
当高速缓存50自预解码单元12及指令高速缓存16接收到所述预解码位及对应的地址时,高速缓存50设定成将所述预解码位储存在与对应的地址相关联的奇偶校验位储存位置60。在某些实施例中,亦可将指令高速缓存16中将要被覆写的所述实际指令字节连同所述预解码位输出到高速缓存50,以供储存。这种形式在支持自行修改程序代码的微处理器10的某些实施例中可能是有利的。例如,指令高速缓存16可″监视″储存地址,以便确定储存指令是否将覆写指令高速缓存16内储存的指令字节。如果确系如此,则可对指令高速缓存16及数据高速缓存28执行该储存指令,因而修改所需的指令字节。在这种形式中,可将预解码单元12设定成:重新计算已被修改的指令的预解码信息,然后将重新计算出的所述预解码位写到指令高速缓存16。如果高速缓存50被设定成延时写回式高速缓存(write-back cache),则当在指令高速缓存16中覆写用来储存所述被修改的指令字节的缓存行储存位置时,可将所述被修改的指令字节写到高速缓存50。
在将预解码信息(和指令字节,如按此设定)写到高速缓存50之后,可以用新的指令字节及新的预解码信息安全地覆写指令高速缓存16内的该缓存行储存位置及预解码信息储存位置。当预解码单元12接收到对已输出到高速缓存50的指令字节的预提取或提取请求时,预解码单元12将所请求的地址输出到高速缓存50。如果高速缓存50仍然储存所述对应的指令字节及预解码信息(亦即,所述指令字节及预解码信息尚未被取代),则可将高速缓存50设定成将所述指令字节及预解码信息传送到预解码单元12。预解码单元12可将所述指令字节及对应的预解码信息传送到指令对准单元18及指令高速缓存16。在该实施例中,有利之处为可避开为所请求的指令字节生成新的预解码信息的程序。如前文所述,当发生分支错误预测或高速缓存未命中,且功能单元24A至24C有停顿的危险时,此种方式可能对微处理器10的某些实施例特别有利。
另一方面,如果高速缓存50已经以位于另一地址上的其它指令字节取代了所需的所述指令字节,则可将高速缓存50设定成:从主存储器解取所请求的字节,并将所述字节传送到预解码单元12。可将高速缓存50设定成:当将所述指令字节传送到预解码单元12时,触发特定的控制信号,以便指示指令高速缓存16并未具有所传送的所述指令字节的有效预解码信息。
在另一个实施例中,控制单元80可监视高速缓存50,并将一特定的预解码位的无效序列写到对应于正在被来自主存储器的新指令字节取代的一指令储存位置58的奇偶校验/ECC位储存位置60。此种方式有效地″设定了″所述新指令字节的预解码信息的″起始值″。在该方式中,可将高速缓存50被设定成:当预解码单元12请求对应的指令字节时,输出该无效序列的预解码位。有利之处为:该该方式中,高速缓存50可以是一支持奇偶校验/ECC的标准高速缓存,且无须以任何方式修改该标准高速缓存,即可得知正在输出的预解码位是有效的或无效的。相反地,亦可将预解码单元12设定成检查其自高速缓存50接收的预解码位。如果所述预解码位与预定的无效序列相符,则可将预解码单元12设定成计算新的预解码信息。如果所述预解码位并不符合该预定的无效序列,则可将预解码单元12设定成将所述预解码位自二级高速缓存50传送到指令高速缓存16(且于必要时传送到指令对准单元18/解码单元20A至20C)。
请注意,总线56及68可以是任何方便的容量,例如16、32、64、或128位。可将数据、地址、及控制总线多任务化,而减少所用的总线信号线的数目。在某些实施例中,可将预解码单元12及二级高速缓存50设定成为所传送的及接收的地址生成奇偶校验位。然而,并不需要储存这些奇偶校验位,且可于传送每一地址之后,舍弃这些奇偶校验位。
在又一个实施例中,预解码信息以及起始位可被预解码单元12生成,且被储存在指令高速缓存16中。例如,用来识别其相关联的指令字节是否为指令的最后字节的终止位、以及用来指示其相关联的指令字节是否为一操作码字节的操作码位亦可被预解码单元12生成,并被储存在指令高速缓存16中。视高速缓存50内可用的奇偶校验及(或)ECC位60的数目而定,当在高速缓存16中取代指令字节时,可将这些预解码位的全部或部分传送到高速缓存50。
在某些实施例中,可将解码单元20A至20C设定成检测预解码单元12所提供的或自指令高速缓存16读取的预解码信息是否为不正确的。视用来生成预解码信息的方法而定,可能由于不同的原因而发生预解码信息的不正确。当预解码信息是不正确的时,可将解码单元20A至20C设定成在预解码单元12重新生成预解码信息时停顿所述解码单元。然后可将新的预解码信息写到指令高速缓存16,以便覆写该不正确的预解码信息。在另一个实施例中,可将解码单元20A至20C设定成:只须舍弃不正确的预解码信息,并自行完成解码。
现在请参阅图5,图中表示指令高速缓存16及高速缓存50的一个实施例的更多细节。如前文所述,可将指令高速缓存16设定成具有若干指令储存位置62及预解码信息储存位置64。每一个预解码信息储存位置对应于一个指令储存位置。例如,储存位置80中储存的预解码信息对应于指令储存位置82中储存的指令字节。在该图所示的实施例中,储存位置80储存对应于位置82中储存的每一指令字节的起始位。
如该图所示,高速缓存50可储存与指令高速缓存16相同的指令字节。例如,当首次向程序代码区段72请求指令时,可从主存储器将所述指令读取到二级高速缓存50及指令高速缓存16。然而,请注意,二级高速缓存50将没有程序代码区段72的预解码数据。因此,系将预定的无效常数(在此例中为00000000…)储存在位置90。当预解码单元12接收所述指令字节时,预解码单元12将检测该无效常数,并继续计算程序代码区段72的预解码信息。然后将该预解码信息储存在指令高速缓存16内的储存位置80。
当首次请求程序代码区段78中的指令时,将进行相同的程序。然而,一旦在指令高速缓存16中取代了程序代码区段78的所述指令字节之后,该预解码信息即被写回到二级高速缓存50,且被储存在位置94。如果在指令高速缓存16中取代了程序代码区段78之后,且在二级高速缓存50中取代了程序代码区段78之前,再度请求程序代码区段78,则可自位置94至96读取程序代码区段78的所述指令字节及预解码信息,并将所述指令字节及预解码信息储存在指令高速缓存16。此种状态系示于该图。
虽然可将任何预定序列的位用来作为一无效常数,但是在某些实施例中,选择一个不可能被预解码单元12生成的一预解码位序列可能是有利的。例如,假设最大的指令长度是16字节且一缓存行长度是32字节,则预解码单元12将不可能接收到具有32个连续指令字节且不含至少一个起始字节的一缓存行。因此,选择一个包含32个零的无效常数可能是有利的,这是因为该无效常数可减少不正确的无效操作的次数。当预解码单元12所计算出的预解码位等于预定的无效常数时,可能发生一个错误的无效操作。如果发生此种情况,则将舍弃从高速缓存50读取的原始预解码位,并可计算新的预解码位,而且即使原始的预解码位是正确的,也是如此执行。
在一个实施例中,可单独在微处理器10内实施前文所述的所述特征。例如,控制单元80的功能可被省略,或被包含在微处理器10内。同样地,在某些实施例中,总线接口逻辑电路52亦可被省略,或被包含在微处理器10内。完全在微处理器10内实施前文所述的所述功能时,可有利地降低实施一用来储存前文揭示的预解码信息的计算机系统的成本。在其它的实施例中,可将所需的所述功能分布到微处理器10以及一个或多个接口或支持芯片。
现在请参阅图6,图中表示用来将预解码信息储存在二级高速缓存50的方法的一个实施例的流程图。在步骤140中,首先从指令高速缓存16请求指令字节。如果在步骤142中确定所请求的字节储存在指令高速缓存16内,则在步骤152中将所述字节连同其对应的预解码信息传送到指令对准单元18及解码单元20A至20C。另一方面,如果在步骤142中确定所请求的指令字节并未被储存在指令高速缓存16内,则在步骤144中将所请求的地址传送到二级高速缓存50。如果在步骤146中确定所请求的指令字节并未被储存在二级高速缓存50,则在步骤148中自主存储器子系统读取所述指令字节。当在步骤148中自主存储器子系统接收到所请求的指令字节时,在步骤150中将所述指令字节连同无效常数储存在二级高速缓存50。如前文所述,该无效常数有效地设定二级高速缓存50内的预解码信息储存位置的起始值,因而将应生成新的预解码信息的讯息通知预解码单元12。当预解码单元12在步骤154中接收到所述指令字节及预解码位时,即在步骤156中检查所述预解码位,以便确定所述预解码位是否等于该无效常数。如果在步骤156中确定所述预解码位等于该无效常数,则预解码单元12设定成在步骤164中生成新的预解码信息。然后在步骤158中,将所述指令字节及新的预解码信息储存在指令高速缓存16。如果在步骤160中确定储存所述指令字节及新的预解码信息必须要取代指令高速缓存16内先前储存的缓存行,则在步骤166中将对应于正在被覆写的该先前储存的缓存行的预解码信息储存到二级高速缓存50。
请注意,此处以循序的方式描述该图中的所述步骤只是为了说明的目的。其它的实施例是可能的且可被考虑的。可合并或平行地执行前文所述的若干步骤。例如,可平行地执行步骤150及154。此外,如前文所述,涉及无效常数的使用的所有步骤都是可供选用的。
储存具有被舍弃的指令及数据字节的奇偶校验及(或)ECC信息
前文所述所述实施例的一个缺点在于:二级高速缓存中储存的指令及数据字节无法免除因奇偶校验及(或)ECC(错误检查及校正)位被用来储存预解码信息而生成的单一及多个位错误。然而,在某些实施例中,可修改前文所述的方法及系统,以便对二级高速缓存中储存的数据字节及指令字节提供对单一及(或)多个位错误的至少某些保护。
现在请参阅图7A,图中表示用来将预解码信息储存在二级高速缓存同时也保护所储存的数据字节及指令字节不会有单一及多个位错误的一个系统的实施例。通常将高速缓存设定成一般被称为缓存行的若干逻辑列及(或)行。如该图所示,指令高速缓存16中的每一缓存行可储存对应于所储存的指令字节184A的一个奇偶校验位180A及预解码信息182A。如参照前述的实施例而说明的,预解码位182A提供与指令字节184A有关的信息(例如,起始字节、终止字节、及操作码字节信息)。如前文所述,可将预解码位182A用来减少将指令字节184A解码所需的时间。例如,可将指示指令字节184A内的起始字节及终止字节的预解码位182A用来迅速地对准指令字节184A内的各指令。可根据预解码位182A及指令字节184A的总和,而计算奇偶校验位180A,以便生成偶数奇偶校验或奇数奇偶校验。在另一个实施例中,可只根据指令字节184A,而计算奇偶校验位180A(亦即,提供只检测指令字节184A内的奇数的位错误的能力)。在该实施例中,有可能将更多的保护提供给指令字节184A,而预解码位182A则未受到保护。此种方式在预解码位182A只是预测性的实施例中是可接受的。例如,可能稍后会确定预解码位182A是无效的。
可将数据高速缓存28设定成具有若干缓存行。每一缓存行可具有其本身一组的数据字节188A及对应的ECC位186A。如前文所述,可选择ECC位186A,以便可检测数据字节188A内的单一及某些多个位错误。在某些实施例中,亦可根据可检测并校正单一位错误的一算法而选择ECC位186A。
在本文的用法中,ECC信息意指错误校正码信息。在数字电子系统中,是以二进制格式(亦即若干一及零)来表示信息。当将二进制信息自一点传送到另一点,或将二进制信息储存在一内存时,必然有发生错误的机会。例如,可能将一个一当作一个零,或者可能将一个零当作一个一。可能因媒体缺陷、电子噪声、组件故障、连接不良、老化、辐射、其其它因素而造成此种错误。当错误地解释一个位时,即是发生了一个″位错误″。错误校正是检测所述错误并校正这些位错误的程序。可以用硬件或软件来执行错误校正,但是最好是以特殊用途的硬件来执行高数据传输速率的错误校正,这是因为软件解决方案通常是太慢了。由于内存组件密度及工作频率增加,所以发生单一或多个位错误的机率也可能增加。因此,错误校正码的支持可能变得更为重要。例如,在某些便携式系统中,由于可大幅减少内存更新的速率,因而现在也要靠错误校正码来大幅延长系统的电池使用时间。有利之处为:可利用若干种不同的ECC算法来实施本发明所揭示的系统及方法。算法的特定选择可能取决于内存结构、及可用来储存ECC信息的位数。又请注意,在某些实施例中,可将ECC位186A及数据字节188A合并成为ECC算法的一部分。
在本文的用法中,奇偶校验检查是一种用来检测内存系统中的单一位错误的基本方法。支持奇偶校验检查的内存通常为每一字节提供一个额外位的内存储存空间,但是其它设置也是可行的。该额外的位是用来储存可进行错误检测的信息。该系统内存中储存的每一字节的数据包含八个位的实际数据,而每一位是一个一或一个零。因此,可以算出一字节中的零或一的总数。例如,字节10110011具有三个零及五个一。字节00100100具有六个零及两个一。因此,某些字节具有偶数的一,而某些字节具有奇数的一。当起动奇偶校验检查时,每当将一个字节写入内存时,被称为奇偶校验生成器/检查器的逻辑电路即检查该字节,并确定该数据字节具有偶数的或奇数的一。如果该数据字节具有一偶数的一,则将第九(或奇偶校验)位设定为一个一,否则,将该第九位设定为一个零。其结果即是:不论原始八个数据位中有多少个一,当一起检查所有九个位时,必然是奇数的一。此种实施例被称为″奇数奇偶校验″。也可具有偶数奇偶校验,此时该奇偶校验生成器/检查器将使总和必然成为偶数。
当从内存读回数据时,该奇偶校验电路此时是用来作为检查器。该电路读回所有的九个位,并确定是否有一奇数或偶数的一。如果有一偶数的一,则在一奇数的这些位中必然有一错误。这就是奇偶校验内存用来检测单一位错误的方式。该奇偶校验生成器/检查器将可确定有一个位是错误的,但是与前文所述的ECC例子不同,该奇偶校验生成器/检查器并无法确定哪一位是错误的。有利之处为:可以与内存的读取及写入操作平行的方式来执行奇偶校验生成及检查。因此,奇偶校验生成及检查不会减缓该内存系统的操作。
在某些实施例中,亦可以平行的方式执行错误检查及校正码。在其它的实施例中,可以以循序操作的方式来执行错误检查及校正,因而将稍微减缓系统操作,这是因为需要有可让错误检查及校正电路来校正所检测到的任何错误的时间。然而,此种延迟取决于内存架构的实施,且可能是较缓慢的(例如,慢了百分之二至三)。
请再参阅图7A,在一个实施例中,可将数据高速缓存28设定成组关联的方式。因此,每一组可包含对应于一行的若干个″路″。ECC位186A可对应于特定缓存行中的数据(亦即,单一行与列或单一路间的交叉)。亦可以用类似的方式设定指令高速缓存16。因此,指令高速缓存16中的每一缓存行可以有其本身的一组奇偶校验位及预解码位180A及182A。在某些实施例中,可在处理器10的晶片上实现二级高速缓存50。有利之处为:此种方式可让二级高速缓存50在与处理器10相同的频率下工作。
在一个实施例中,可将二级高速缓存50设定成一个″内容独占式″高速缓存,此种内容独占式高速缓存只存放有将因发生冲突的未命中而要被写回到内存子系统的被舍弃的或复制回的缓存区段。这些术语″被舍弃的″(″victimized″)或″复制回的″(″copy-back″)意指先前存放在一级高速缓存(亦即指令高速缓存16及数据高速缓存28但必须被覆写(被舍弃的或被逐出的)以便腾出空间给较新的数据的缓存区段。在一个实施例中,二级高速缓存50可以是256K字节,而指令高速缓存16及数据高速缓存28可以分别是64K字节,因而将总共384K字节的专用储存空间提供给处理器10。请注意,这些高速缓存容量只是举例,且视处理器10的确切实施例而定,其它的容量也是可行的。同样地,可将二级高速缓存50实施为在处理器10之外的芯片上。在其它的实施例中,可将二级高速缓存50实施为″内容蕴含式″高速缓存,此种内容蕴含式高速缓存包含指令高速缓存16及数据高速缓存28中所有数据的一份拷贝。此外,在某些实施例中,指令高速缓存16及数据高速缓存28可以有不同的容量。在某些实施例中,亦可将二级高速缓存50实施为一组关系型高速缓存。
如该图所示,一旦指令高速缓存16中的一特定缓存行需要储存新的指令字节时,则先前预解码的指令字节182A及184A即″被舍弃″。因为二级高速缓存50可储存:(a)具有预解码信息及奇偶校验信息的指令字节、或(b)具有ECC信息的数据字节,所以可储存一指示位(例如程序代码指示位190),以便指示何种类型的信息被储存在该二级高速缓存中。解多任务器(demux)316可利用指示位190来选择来自奇偶校验检查单元314或错误检查及校正单元312的输出作为输出320。亦可将解多任务器316设定成:响应自奇偶校验检查单元314或错误检查及校正单元312接收到一个错误指示,而触发或输出一个错误中断信号318。例如,如果奇偶校验检查单元314确定已发生了一奇偶校验错误,则可将解多任务器316设定成触发中断信号318。同样地,可将解多任务器316设定成:响应来自错误检查及校正单元312的一对应的错误信号,而触发错误信号318。如该图所示,可将错误检查及校正单元312设定成接收ECC位186B及数据字节188B。
可将奇偶校验检查单元314设定成接收奇偶校验位180B、预解码位182B、及指令字节184B。如前文所述,可确定预解码位182B及指令字节184B中被触发位的数目,而生成奇偶校验位180B。如该图所示,指示位190及192可指示指令码或数据字节被储存在二级高速缓存50的对应的缓存行中。可将解多任务器316设定成接收指示位或数据类型位170(例如位190及192),以便选择来自奇偶校验检查单元314或ECC单元312的输出。
如该图所示,可针对指令高速缓存16中的每一缓存行而储存一个奇偶校验位180A。例如,可将奇偶校验位180A用来指示缓存行300的奇偶校验。同样地,可将ECC位186A用来把错误检查及校正提供给数据高速缓存28中的缓存行302内的数据字节188A。虽然图中将二级高速缓存50示为直接映射式高速缓存,但是亦可将二级高速缓存50实施为具有多个行或″路″的组关系型或完全关系型高速缓存。如该图所示,可响应正在写入指令高速缓存16及数据高速缓存28的新数据覆写了(亦即舍弃了)该资料,而将一级缓存行300及302写到二级高速缓存50。
虽然该图中并未示出,但是亦可将奇偶校验检查单元314用来检查自指令高速缓存16读取(亦即,包括读取被传送到该处理器的指令对准单元、解码单元、及执行单元的指令,并包括读取将被传送到二级高速缓存50的被舍弃的指令)的奇偶校验。在另一个实施例中,可实施奇偶校验检查单元314的另一实例,以便提供该功能。同样地,亦可将错误检查及校正单元312(或其另一实例)用来执行自数据高速缓存28读取的错误检查及校正。
在一个实施例中,可以两个部分来实施二级高速缓存50,其中每一部分储存不同类型的信息。例如,可将二级高速缓存50的该第一部分设定成唯一地储存指令字节以及对应的预解码位及奇偶校验位。可将二级高速缓存50的该第二部分设定成唯一地储存数据字节及ECC位。有利之处为:二级高速缓存的该实施例有可能减少储存数据类型位170(例如程序代码位190及数据位192)的需求。然而,当执行具有不同的指令字节与数据字节间的比率的不同程序时,此种类型有可能会降低二级高速缓存50的效率。请注意,可识别该信息来自一级高速缓存的哪一部分(亦即,来自指令高速缓存16或数据高速缓存28),而生成数据类型位170。例如,来自指令高速缓存16的信息可自动接收用来指示该信息是指令码信息的数据类型位。同样地,来自数据高速缓存28而将要储存在二级高速缓存50的信息可自动接收用来指示该信息是数据的数据类型位(例如数据位192)。
现在请参阅图7B,图中表示用来储存被舍弃的指令字节及预解码信息的系统的另一个实施例。在该实施例中,奇偶校验信息并未被储存在指令高速缓存16中,且ECC信息并未被储存在数据高速缓存28中。此种方式可有利地减少用来实施指令高速缓存16及数据高速缓存28所需的晶片空间。相反地,当自指令高速缓存16读出指令字节184A并将指令字节184A写到二级高速缓存50时,奇偶校验单元402可生成指令字节184A的奇偶校验位。同样地,当自数据高速缓存28读出数据字节188A并将数据字节188A储存到二级高速缓存50时,可将二级高速缓存设定成生成数据字节188A的ECC位。该系统的其余部分可以以与图7A所示实施例类似的方式操作。
现在请参阅图8A,图中表示用来储存预解码信息的方法的一个实施例。在该实施例中,于步骤240中开始提取,以便加载一组所需的指令字节。在步骤242中,响应该提取,而搜寻该指令高速缓存,以便确定该指令高速缓存是否储存了所需的指令字节。如果指令高速缓存的确储存了所需的指令字节,则在步骤252中自指令高速缓存读取所述指令字节及对应的预解码信息。此种情况被称为″指令高速缓存命中″,且通常是较佳的,这是因为指令高速缓存通常具有比内存系统较短的延迟时间。然而,如果指令高速缓存中并未储存所需的指令字节,则可在步骤244中向二级高速缓存请求所述指令字节。如前文所述,在某些实施例中,可再予处理器及一级高速缓存相同的芯片或晶粒上实施该二级高速缓存。如果在步骤246中确定该二级高速缓存中并未储存所需的信息,则可在步骤248中自主存储器读取所述指令字节及对应的奇偶校验信息。如本领域技术人员所了解的,可能有除二级高速缓存以外的额外级层的高速缓存,作为主存储器子系统的一部分。在某些实施例中,可将该主存储器子系统设定成支持奇偶校验信息或ECC。例如,可将该主存储器子系统设定成储存写到主存储器及自主存储器读取的数据的奇偶校验位及ECC位。然而,在其它的实施例中,该主存储器子系统可以不储存或支持奇偶校验信息及(或)ECC信息。
在某些实施例中,可将该二级高速缓存设定成储存该一级高速缓存中的所有信息的一复制拷贝。在这些实施例中,可将自主存储器读取的所述指令字节连同一奇偶校验位、一指示位(例如数据类型位)、以及尚未针对所述指令字节生成的预解码位的无效常数储存到该二级高速缓存。如果业已生成了所述预解码位,或者一旦已经生成了所述预解码位,则可在步骤250中将所述预解码位储存到该二级高速缓存,而覆写该无效常数。然而,如前文所述,在其它的实施例中,该二级高速缓存可以是″内容独占式高速缓存″,因而只储存来自一级高速缓存的被舍弃的信息。在这些实施例中,于该程序的此时点上,可以不将自主存储器子系统读取的所述指令字节储存到二级高速缓存。一旦自主存储器子系统接收到所述指令字节之后,可将一个或多个预解码单元设定成在步骤252中生成所述指令字节的预解码位。
在支持对自主存储器读取的信息进行奇偶校验检查的实施例中,可将该预解码单元(或一奇偶校验单元)设定成在步骤254中检查奇偶校验以便确保自主存储器正确地接收了数据。请注意,在某些实施例中,可在该预解码单元生成对应的预解码位之前或与其平行的方式,执行该奇偶校验检测。如果有一错误,则可将该预解码单元设定成在步骤256中将错误信号或中断发送到处理器。如果该奇偶校验检查并未指示错误,则可在步骤258中检查自主存储器子系统读取的所述预解码位,以便确定所述预解码位是否等于该无效常数。
如果所述预解码位等于该无效常数,则可将该预解码单元设定成在步骤260中生成新的预解码信息。如果所述预解码位不等于该无效常数,则可将该预解码单元设定成在步骤262中将所述指令字节及先前生成的预解码位储存到指令高速缓存。请注意,在某些实施例中,亦可将该指令高速缓存设定成储存所述指令字节的奇偶校验位。在其它的实施例中,一旦自指令高速缓存读出所述指令字节,并将所述指令字节储存到二级高速缓存之后(亦即,于被舍弃时),可生成所述指令字节的奇偶校验位。因此,在某些实施例中,可以只针对二级高速缓存执行奇偶校验检查。在其它的实施例中,可针对指令高速缓存(亦即一级高速缓存)及二级高速缓存执行奇偶校验检查。此外,在某些实施例中,亦可针对主存储器子系统执行奇偶校验检查。
如果所述预解码位等于该无效常数,则可将该预解码单元设定成在步骤262中将所述指令字节、所述预解码位、及奇偶校验信息储存到指令高速缓存。如果立即需要该数据,则亦可将所述指令字节提供给所述解码单元,以供处理。在稍后的时点上,可在步骤264中覆写或舍弃指令高速缓存中正在储存所述指令字节及预解码信息的对应的缓存行。在此种情况中,可在步骤266中将来自指令高速缓存的预解码信息及指令字节连同一对应的奇偶校验位及一数据类型位储存到二级高速缓存。
现在请参阅图8B,图中表示用来处理被舍弃的数据字节的方法的一个实施例。首先,加载/储存单元可在步骤370中请求或提取数据字节。作为该提取程序的一部分,可在步骤372中检查一级高速缓存或数据高速缓存,以便确定该高速缓存中是否储存了所需的数据字节。如果数据高速缓存中储存了所述数据字节,则可在步骤374中自数据高速缓存读取所述数据字节以及其对应的ECC信息。然而,如果数据高速缓存中并未储存所述所需的数据字节,则可在步骤376中向二级高速缓存请求该数据。如果在步骤378中确定二级高速缓存中并未储存该数据,则可在步骤380中自主存储器读取所需的数据字节。
如前文所述,与参照图8A所述的奇偶校验信息类似,ECC信息可被下列的方式支持:(a)只在二级高速缓存中支持ECC信息;(b)在一级高速缓存及二级高速缓存中支持ECC信息;或(b)在一级高速缓存、二级高速缓存、及主存储器子系统中支持ECC信息。其它的组合也是可行的(例如,只在主存储器子系统及二级高速缓存中支持ECC信息)。对于支持来自主存储器的ECC信息的实施例而言,一旦自主存储器子系统接收到所述数据字节之后,即可在步骤382中检查对应的ECC信息。如果该信息是错误的,则该错误检查及校正单元可尝试校正该错误。如果该错误是无法校正的,则可在步骤384中通知一错误。如果该ECC信息是正确的(或错误被校正了),则可在步骤386中将该ECC信息连同所述数据字节储存在二级高速缓存中,如前文中参照图8A所述的,该例子系假设内容蕴含式二级高速缓存。在某些实施例中,该二级高速缓存可以是内容独占式高速缓存,且在自主存储器直接读取的数据在一级高速缓存中被舍弃之前,可以不将该资料储存在二级高速缓存。
在稍后的某一时点上,可在步骤392中舍弃或覆写用来储存所述数据字节及ECC信息的一级缓存行。在此种情况中,可在步骤366中将来自数据高速缓存的所述数据字节连同对应的ECC位及一数据类型位储存到二级高速缓存。可将该数据类型位用来指示所储存的信息是数据及ECC信息(而不是指令字节以及奇偶校验信息及预解码信息)。
现在请参阅图9,图中表示被设定成储存被舍弃的指令字节的预解码信息且仍然对被舍弃的数据字节提供奇偶校验及(或)ECC保护的计算机系统的一个实施例。在该实施例中,处理器10包含一级指令高速缓存16及一级数据高速缓存28。处理器10亦包含预解码/预提取单元12及加载/储存单元26。如该图所示,预提取/预解码单元12及加载/储存单元26可分别包含一奇偶校验生成及检查单元402、以及错误检查及校正单元404。
在该实施例中,二级高速缓存50被设定成具有干储存位置406,而所述储存位置406被设定成储存二级高速缓存50中储存的对应的字节的奇偶校验信息及(或)ECC信息。在该实施例中,该计算机系统亦包含一内存控制器410。内存控制器410可包含奇偶校验单元414,而奇偶校验单元414被设定成为来自主存储器420的字节生成并检查奇偶校验。对于支持奇偶校验的实施例而言,可将主存储器子系统420设定成具有用来储存奇偶校验信息430的额外的储存位置。
在其它的实施例中,内存控制器410亦可包含错误检查及校正单元416,该错误检查及校正单元416被设定成为主存储器子系统420中储存的信息生成并检查错误校正码。请注意,可针对用来在内存420、内存控制器410、与处理器10之间传送信息的总线而生成额外的错误检查及校正信息。该信息可以是本文所述的ECC信息及(或)奇偶校验信息以外的信息。如前文所述,在某些实施例中,可将内存子系统420及内存控制器410设定成不支持奇偶校验信息及(或)ECC信息。亦如该图所示,在某些实施例中,可将二级高速缓存50设定成储存每一缓存行的数据类型位408。
舍弃缓存行,并自内存420读取对应的指令字节(所述指令字节本身也受到ECC信息的保护),即可利用一级指令高速缓存16中的奇偶校验位来校正所检测到的单一位错误。相反地,可修改一级数据高速缓存28中储存的数据,因而不会将内存420中的数据的原始拷贝用来校正错误。因此,在某些实施例中,在数据高速缓存28中设有ECC信息尤其是有用的,可提供校正错误的替代性机制,以取代自内存420复制数据字节。
例示的计算机系统
现在请参阅第10图,图中表示采用微处理器10的计算机系统500的一个实施例的方块图。在所示系统中,主存储器504经由内存总线506而连接到总线桥接器502(该总线桥接器502可用来作为内存控制器),且图形控制器508经由AGP总线510而连接到总线桥接器502。最后,多个PCI装置512A及512B经由PCI总线514而连接到总线桥接器502。可进一步设有辅助总线桥接器516,以便经由一EISA/ISA总线520而将电气接口提供给一个或多个EISA或ISA装置518。微处理器10系经由CPU总线524而连接到总线桥接器502。
总线桥接器502提供了微处理器10、主存储器504、图形控制器508、与连接到PCI总线514的各装置间的接口。当自连接到总线桥接器502的一个装置接收到操作时,总线桥接器502识别该操作的目标(例如,该目标是特定的装置;或者在PCI总线514的情况中,该目标是在PCI总线514)上)。总线桥接器502将该操作传送到目标装置。总线桥接器502通常将操作自来源装置所使用的协议转换为目标装置或总线所使用的协议。
除了将ISA/EISA总线接口提供给PCI总线514之外,辅助总线桥接器516可视需要而进一步设有额外的功能。例如,在一个实施例中,辅助总线桥接器516包含一主PCI仲裁器(图中未示出),用以仲裁PCI总线514的主控权。计算机系统500内亦可视需要而包含在辅助总线桥接器516外部或整合到辅助总线桥接器516内的输入/输出控制器(图中未示出),以便对一键盘及鼠标522以及各种串行端口及并行端口提供操作上的支持。在其它的实施例中,可在微处理器10与总线桥接器502之间将一外部高速缓存单元(图中未示出)进一步连接到CPU总线524。在替代实施例中,可将该外部高速缓存连接到总线桥接器502,且可将该外部高速缓存的高速缓存控制逻辑电路整合到总线桥接器502。
主存储器504是一种用来储存应用程序且微处理器10执行时所主要使用的内存。适用的主存储器504包括动态随机访问内存(DynamicRandom Access Memory;简称DRAM),且最好是多个记忆组的同步DRAM(Synchronous DRAM;简称SDRAM)。
PCI装置512A及512B代表诸如网络适配卡、视讯加速器、声卡、硬盘机或软盘机或磁盘控制器、小型计算机系统接口(Small ComputerSystem Interface;简称SCSI)卡、及电话卡等的各种周边装置。同样地,ISA装置518代表诸如调制解调器、声卡、及GPIB或现场使用总线适配卡等各种数据撷取适配卡等的各种周边装置。
提供图形控制器508,以便控制文字及影像在显示器526上的成像。图形控制器508可包含本领域已知的典型图形加速器,以便使可有效地移进及移出主存储器504的三维数据结构成像。图形控制器508因而可以是AGP总线510的一主控装置,这是因为图形控制器508可请求并取得总线桥接器502内的目标接口的使用权,因而可访问主存储器504。专用的图形总线可适应自主存储器504迅速地获取数据。对于某些操作而言,可将图形控制器508进一步设定成在AGP总线510上生成PCI协议交易。总线桥接器502的AGP接口因而可包含用来支持AGP协议交易以及PCI协议目标及来源装置交易的功能。显示器526是可显示影像或文字的任何电子显示器。适用的显示器526包括阴极射线管(CathodeRay Tube;简称CRT)及液晶显示器(Liquid Crystal Display;简称LCD)等。
请注意,虽然在前文的说明中使用了AGP、PCI、以及ISA或EISA总线作为例子,但是可视需要而代用任何的总线架构。又请注意,计算机系统500可以是包含额外的微处理器的一多重处理计算机系统。
又请注意,本发明的说明可能提及各种信号的触发。在本文的用法中,如果信号载有用来指示特定状况的数值,则该信号″被触发″(″asserted″)。相反地,如果信号载有用来指示缺少特定状况的数值,则该信号″被停止触发″(″deasserted″)。当信号载有逻辑零值时,或相反地,当信号载有逻辑一值时,可将该信号定义为被触发。此外,在前文的说明中,曾经述及舍弃了各种值。可以若干种方式舍弃一值,但通常涉及修改该值,以便接收该值的逻辑电路不理会该值。例如,如果如果该值包含一位,则可使该值的状态反相,而舍弃该值。如果该值是n位的值,则其中一种该n位的编码可指示该值是无效的。将该值设定为该无效的编码,即可使该值被舍弃。此外,一个n位的值可包含一有效位,而当设定该有效位时,即可指示该n位的值是有效的。该有效位的复位可包含该值的舍弃。也可以使用其它舍弃数值的方法。
至此已揭示了一种用来储存预解码信息以及被舍弃的指令字节及(或)数据字节的系统及方法。虽然已相当详细地讨论了各图式所述及及所示的实施例,但是其它的实施例是可能的且可被考虑的。我们当了解,所述图式及详细说明的用意并非在将本发明限制在所揭示的特定形式,相反地,其用意在涵盖在最后的申请专利范围所定义本发明的精神及范围内的所有修改、等效物、及替代形式。

Claims (10)

1.一种微处理器,包含:
预解码单元(12),该预解码单元被设定成接收指令字节,并生成对应的预解码信息;
连接到该预解码单元的一指令高速缓存(16),该指令高速缓存被设定成储存所述指令字节及对应于所述指令字节的预解码信息;
加载/储存单元(26),该加载/储存单元被设定成接收数据字节;
数据高速缓存(28),该数据高速缓存被设定成从该加载/储存单元接收并储存所述数据字节;以及
二级高速缓存(50),该二级高速缓存被设定成从该指令高速缓存接收并储存被舍弃的指令字节,并从该数据高速缓存接收并储存被舍弃的数据字节,其中该二级高速缓存被设定成接收并储存所述储存的被舍弃的指令字节的奇偶校验信息及预解码信息,其中该二级高速缓存被设定成接收并储存所述储存的被舍弃的数据位组的错误校正码位。
2.根据权利要求1所述的微处理器,进一步包含奇偶校验位生成及检查逻辑电路(402),该奇偶校验位生成及检查逻辑电路被设定成:为传送到该二级高速缓存的指令字节生成奇偶校验位,并检查从该二级缓存内存传送的指令字节的奇偶校验位。
3.根据权利要求1所述的微处理器,进一步包含错误检查及校正逻辑电路(404),且该错误检查及校正逻辑电路被设定成:为传送到该二级高速缓存的数据字节生成所述错误校正码位,并检查从该二级高速缓存传送的数据字节的所述错误校正码位。
4.根据权利要求3所述的微处理器,其中该错误检查及校正逻辑电路(404)被设定成利用所述错误校正码位来校正从该二级高速缓存传送的所述数据位组中的至少一个位错误。
5.根据权利要求1所述的微处理器,其中该二级缓存内存被分成若干缓存行,其中所述缓存行包含第一储存区及第二储存区,其中每一缓存行被设定成储存一个或多个指示位,用以指示:(a)各指令位组系储存在该缓存行的第一储存区,且各预先解码位及一奇偶校验位系储存在该缓存行的第二储存区;
或(b)各数据字节系储存在该缓存行的第一储存区,且各错误校正码位系储存在该缓存行的第二储存区。
6.一种方法,包含下列步骤:
接收指令字节;
生成所述指令字节的预解码信息;
将所述指令字节及预解码信息储存在第一内存(16)中;
响应所述指令字节在该第一内存中被覆写,而将至少一部分的所述指令字节及该预解码信息连同奇偶校验信息输出到第二内存(50);
接收数据字节;
将所述数据字节储存到第三内存(28);以及
响应所述数据字节在该第三内存中被覆写,而将至少一部分的所述数据字节连同对应的错误校正码信息输出到该第二内存。
7.根据权利要求6所述的方法,其中该第二内存被分成若干缓存行,其中该方法进一步包含将一指示位储存在该第二内存中的每一缓存行,其中该指示位系用来指示所述预解码位或所述错误校正码位被储存在该缓存行中。
8.根据权利要求7所述的方法,进一步包含下列步骤:
将每一逻辑区段的一指示位储存在该第二内存中,其中该指示位系用来指示预解码位或错误检查及校正位被储存在该第二内存中。
9.根据权利要求7所述的方法,进一步包含下列步骤:
将至少一个所储存的奇偶校验位以及所述指令位组的对应的储存部分及该预解码信息传送回该处理器,其中该处理器被设定成:如果该奇偶校验位是正确的,则使用所传送的该预解码信息,而不必生成新的预解码信息。
10.一种计算机系统,包含:
主系统内存(402);
连接到该主系统内存的内存控制器(410);
连接到如权利要求1-5任一项所述的内存控制器的微处理器(10)。
CNB028130103A 2001-06-26 2002-04-02 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位 Expired - Lifetime CN1287292C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/892,328 2001-06-26
US09/892,328 US6804799B2 (en) 2001-06-26 2001-06-26 Using type bits to track storage of ECC and predecode bits in a level two cache

Publications (2)

Publication Number Publication Date
CN1522410A true CN1522410A (zh) 2004-08-18
CN1287292C CN1287292C (zh) 2006-11-29

Family

ID=25399796

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028130103A Expired - Lifetime CN1287292C (zh) 2001-06-26 2002-04-02 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位

Country Status (8)

Country Link
US (1) US6804799B2 (zh)
EP (1) EP1399824B1 (zh)
JP (1) JP4170216B2 (zh)
KR (1) KR100884351B1 (zh)
CN (1) CN1287292C (zh)
DE (1) DE60223023T2 (zh)
TW (1) TW583541B (zh)
WO (1) WO2003003218A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158925B (zh) * 2006-10-04 2010-06-09 国际商业机器公司 用于支持跟踪和标准高速缓存行的同时存储的装置和方法
CN102012872A (zh) * 2010-11-24 2011-04-13 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
US7962725B2 (en) 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
CN102243643A (zh) * 2010-05-12 2011-11-16 国际商业机器公司 文件服务器、在客户机上进行显示的方法以及计算机程序
CN102346715A (zh) * 2010-07-30 2012-02-08 国际商业机器公司 保护内存中应用程序的方法、内存控制器和处理器
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751707B2 (en) * 2002-05-06 2004-06-15 Sony Computer Entertainment Inc. Methods and apparatus for controlling a cache memory
US7437593B2 (en) * 2003-07-14 2008-10-14 International Business Machines Corporation Apparatus, system, and method for managing errors in prefetched data
US7555703B2 (en) * 2004-06-17 2009-06-30 Intel Corporation Method and apparatus for reducing false error detection in a microprocessor
US7386756B2 (en) * 2004-06-17 2008-06-10 Intel Corporation Reducing false error detection in a microprocessor by tracking instructions neutral to errors
JP4673584B2 (ja) * 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US7415638B2 (en) * 2004-11-22 2008-08-19 Qualcomm Incorporated Pre-decode error handling via branch correction
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US8020047B2 (en) * 2006-01-17 2011-09-13 Xyratex Technology Limited Method and apparatus for managing storage of data
US8065555B2 (en) * 2006-02-28 2011-11-22 Intel Corporation System and method for error correction in cache units
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US8001361B2 (en) * 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US20080256419A1 (en) * 2007-04-13 2008-10-16 Microchip Technology Incorporated Configurable Split Storage of Error Detecting and Correcting Codes
US8055975B2 (en) * 2007-06-05 2011-11-08 Apple Inc. Combined single error correction/device kill detection code
FR2924836B1 (fr) * 2007-12-11 2010-12-24 Commissariat Energie Atomique Dispositif de service de fiabilite, systeme et procede electroniques mettant en oeuvre au moins un tel dispositif et produit de programme informatique permettant de mettre en oeuvre un tel procede.
US20090276587A1 (en) * 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US7814300B2 (en) 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
JP5202130B2 (ja) 2008-06-24 2013-06-05 株式会社東芝 キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法
US8145985B2 (en) 2008-09-05 2012-03-27 Freescale Semiconductor, Inc. Error detection schemes for a unified cache in a data processing system
US8356239B2 (en) * 2008-09-05 2013-01-15 Freescale Semiconductor, Inc. Selective cache way mirroring
US8291305B2 (en) * 2008-09-05 2012-10-16 Freescale Semiconductor, Inc. Error detection schemes for a cache in a data processing system
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US8364896B2 (en) * 2008-09-20 2013-01-29 Freescale Semiconductor, Inc. Method and apparatus for configuring a unified cache based on an associated error rate
US8316186B2 (en) * 2008-09-20 2012-11-20 Freescale Semiconductor, Inc. Method and apparatus for managing cache reliability based on an associated error rate
US8117497B1 (en) * 2008-11-17 2012-02-14 Xilinx, Inc. Method and apparatus for error upset detection and correction
KR101042197B1 (ko) 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
JP4865016B2 (ja) * 2009-08-27 2012-02-01 株式会社東芝 プロセッサ
KR101178293B1 (ko) 2011-03-25 2012-08-29 마사미 후쿠시마 중앙 처리 장치 및 마이크로컨트롤러
US8516225B2 (en) 2011-03-25 2013-08-20 Koichi Kitagishi Central processing unit and microcontroller
JP4862100B1 (ja) * 2011-03-25 2012-01-25 好一 北岸 中央演算処理装置及びマイクロコンピュータ
KR101788737B1 (ko) 2011-05-12 2017-10-24 에스케이하이닉스 주식회사 반도체 시스템
US8572441B2 (en) * 2011-08-05 2013-10-29 Oracle International Corporation Maximizing encodings of version control bits for memory corruption detection
EP3382556A1 (en) 2011-09-30 2018-10-03 INTEL Corporation Memory channel that supports near memory and far memory access
WO2013048503A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
CN103946812B (zh) 2011-09-30 2017-06-09 英特尔公司 用于实现多级别存储器分级体系的设备和方法
WO2013048500A1 (en) 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9112537B2 (en) 2011-12-22 2015-08-18 Intel Corporation Content-aware caches for reliability
US9043559B2 (en) 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US9021334B2 (en) * 2013-05-01 2015-04-28 Apple Inc. Calculation of analog memory cell readout parameters using code words stored over multiple memory dies
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US9672298B2 (en) 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
US9195593B1 (en) 2014-09-27 2015-11-24 Oracle International Corporation Hardware assisted object memory migration
US10210107B2 (en) * 2014-10-29 2019-02-19 Hewlett Packard Enterprise Development Lp Trans-fabric instruction set for a communication fabric
US10795681B2 (en) * 2014-12-23 2020-10-06 Intel Corporation Instruction length decoding
CN105938447B (zh) * 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
JP6158265B2 (ja) * 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
TWI569279B (zh) 2015-10-15 2017-02-01 財團法人工業技術研究院 記憶體保護裝置與方法
CN106445720A (zh) * 2016-10-11 2017-02-22 郑州云海信息技术有限公司 一种内存错误恢复方法和装置
US10268581B2 (en) * 2017-04-05 2019-04-23 Arm Limited Cache hierarchy management
US10291258B2 (en) 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
KR102490104B1 (ko) 2017-10-30 2023-01-19 삼성전자주식회사 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법
US20190265976A1 (en) * 2018-02-23 2019-08-29 Yuly Goryavskiy Additional Channel for Exchanging Useful Information
US11119909B2 (en) 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
EP3683679A1 (en) 2019-01-15 2020-07-22 ARM Limited Checksum generation
CN110311772A (zh) * 2019-06-15 2019-10-08 上海来远电子科技有限公司 一种可编程加解密方法及其系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747043A (en) 1984-02-10 1988-05-24 Prime Computer, Inc. Multiprocessor cache coherence system
JPS62151971A (ja) 1985-12-25 1987-07-06 Nec Corp マイクロ・プロセツサ装置
US5214769A (en) 1987-12-24 1993-05-25 Fujitsu Limited Multiprocessor control system
US5265004A (en) 1991-10-15 1993-11-23 Allen-Bradley Company, Inc. Sequence controller with combinatorial Boolean logic
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5721854A (en) 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5604753A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for performing error correction on data from an external memory
US6161208A (en) * 1994-05-06 2000-12-12 International Business Machines Corporation Storage subsystem including an error correcting cache and means for performing memory to memory transfers
US5752264A (en) 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5828895A (en) 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5819067A (en) 1996-02-23 1998-10-06 Advanced Micro Devices, Inc. Computer system configured to translate a computer program into a second computer program prior to executing the computer program
US5748978A (en) 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US5951671A (en) 1997-12-18 1999-09-14 Advanced Micro Devices, Inc. Sharing instruction predecode information in a multiprocessor system
US6108753A (en) * 1998-03-31 2000-08-22 International Business Machines Corporation Cache error retry technique
US6092182A (en) 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962725B2 (en) 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
CN101158925B (zh) * 2006-10-04 2010-06-09 国际商业机器公司 用于支持跟踪和标准高速缓存行的同时存储的装置和方法
CN102243643A (zh) * 2010-05-12 2011-11-16 国际商业机器公司 文件服务器、在客户机上进行显示的方法以及计算机程序
US8417724B2 (en) 2010-05-12 2013-04-09 International Business Machines Corporation File server for extracting and displaying file list on client, method of providing display on client, and computer program executable on file server
US9031989B2 (en) 2010-05-12 2015-05-12 International Business Machines Corporation File server for extracting and displaying file list on client, method of providing display on client, and computer program executable on file server
CN102346715A (zh) * 2010-07-30 2012-02-08 国际商业机器公司 保护内存中应用程序的方法、内存控制器和处理器
CN102346715B (zh) * 2010-07-30 2014-05-28 国际商业机器公司 保护内存中应用程序的方法、内存控制器和处理器
CN102012872A (zh) * 2010-11-24 2011-04-13 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
CN102012872B (zh) * 2010-11-24 2012-05-02 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法

Also Published As

Publication number Publication date
EP1399824A1 (en) 2004-03-24
EP1399824B1 (en) 2007-10-17
KR20040041550A (ko) 2004-05-17
TW583541B (en) 2004-04-11
US6804799B2 (en) 2004-10-12
JP2004531837A (ja) 2004-10-14
WO2003003218A1 (en) 2003-01-09
US20020199151A1 (en) 2002-12-26
DE60223023T2 (de) 2008-07-31
DE60223023D1 (de) 2007-11-29
KR100884351B1 (ko) 2009-02-18
JP4170216B2 (ja) 2008-10-22
CN1287292C (zh) 2006-11-29

Similar Documents

Publication Publication Date Title
CN1287292C (zh) 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位
CN1310134C (zh) 具有二级分支预测高速缓存的分支预测装置
CN1248118C (zh) 以推测方式使高速缓存中的缓存行失效的方法及系统
CN1208726C (zh) 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存
US6092182A (en) Using ECC/parity bits to store predecode information
US9208084B2 (en) Extended main memory hierarchy having flash memory for page fault handling
CN1324459C (zh) 利用提示缓冲器隐藏存储器访问等待时间的方法和装置
CN100414494C (zh) 根据多组高速缓存组预测来选择执行的指令的装置和系统
US9112537B2 (en) Content-aware caches for reliability
US8205136B2 (en) Fault tolerant encoding of directory states for stuck bits
CN1846200A (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
CN102117247A (zh) 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备
US9489203B2 (en) Pre-fetching instructions using predicted branch target addresses
KR20030010727A (ko) 변환 색인 버퍼 플러시 필터
CN101689146A (zh) 分层的高速缓存标签架构
US20120096241A1 (en) Performance of Emerging Applications in a Virtualized Environment Using Transient Instruction Streams
US8688961B2 (en) Managing migration of a prefetch stream from one processor core to another processor core
US20140244932A1 (en) Method and apparatus for caching and indexing victim pre-decode information
US7689891B2 (en) Method and system for handling stuck bits in cache directories
US6898738B2 (en) High integrity cache directory
US7624224B1 (en) System and method for directly executing code from block-based memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ADVANCED MICRO DEVICES INC

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100708

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA, USA TO: GRAND CAYMAN ISLAND RITISH CAYMAN ISLANDS

TR01 Transfer of patent right

Effective date of registration: 20100708

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

TR01 Transfer of patent right

Effective date of registration: 20201214

Address after: California, USA

Patentee after: Lattice chip (USA) integrated circuit technology Co.,Ltd.

Address before: Greater Cayman Islands, British Cayman Islands

Patentee before: GLOBALFOUNDRIES Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210318

Address after: No.1, Duhang 1st Road, Hsinchu City, Hsinchu Science Park, Taiwan, China

Patentee after: MEDIATEK Inc.

Address before: California, USA

Patentee before: Lattice chip (USA) integrated circuit technology Co.,Ltd.

TR01 Transfer of patent right
CX01 Expiry of patent term

Granted publication date: 20061129

CX01 Expiry of patent term