CN101878467A - 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 - Google Patents
用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 Download PDFInfo
- Publication number
- CN101878467A CN101878467A CN2008801182334A CN200880118233A CN101878467A CN 101878467 A CN101878467 A CN 101878467A CN 2008801182334 A CN2008801182334 A CN 2008801182334A CN 200880118233 A CN200880118233 A CN 200880118233A CN 101878467 A CN101878467 A CN 101878467A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- predecode information
- repairing
- length
- 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
Links
- 230000008439 repair process Effects 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 claims abstract description 48
- 230000015654 memory Effects 0.000 claims description 83
- 239000000284 extract Substances 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
本发明描述处理器中的一种预解码修复高速缓冲存储器,其能够提取和执行可变长度指令,所述可变长度指令具有可在一程序中混合的具有至少两个长度的指令。指令高速缓冲存储器可操作以在指令高速缓冲存储器线中存储具有至少第一长度和第二长度的指令,所述第二长度比所述第一长度长。预解码器可操作以预解码从所述指令高速缓冲存储器提取的具有无效预解码信息的指令,以形成经修复的预解码信息。预解码修复高速缓冲存储器可操作以存储与跨越所述指令高速缓冲存储器中两个高速缓冲存储器线的具有所述第二长度的指令相关联的所述经修复的预解码信息。本发明还描述用于填充所述预解码修复高速缓冲存储器和用于执行跨越两个高速缓冲存储器线的指令的方法。
Description
技术领域
本发明大体上涉及改进处理具有多种长度的指令的处理器中的效率的技术,且更明确地说,涉及用于在预解码修复高速缓冲存储器中存储针对跨越两个或两个以上高速缓冲存储器线的指令的预解码信息的有利技术。
背景技术
许多处理器支持具有可变长度指令的指令组。举例来说,处理器的指令组可由32位指令和16位指令组成。处理器也可具有分级存储器配置,所述分级存储器配置具有多层高速缓冲存储器,包含(例如)指令高速缓冲存储器、数据高速缓冲存储器和系统存储器。如果处理器还具有在高时钟速率下以持续时间较短的管线级操作的深执行管线,那么也有可能处理器具有预解码级,用以预处理指令以便使后续的解码级简化,且因此使管线成流线型。所述预解码管线级一般在指令高速缓冲存储器未中期间操作,以部分地解码因指令未中而提取的指令。预解码信息连同所提取的指令一起被写入到指令高速缓冲存储器中。
在可变长度指令处理器中,因未中而提取的指令可具有不同的长度,且较长的指令可能跨越两个高速缓冲存储器线。对于跨越两个高速缓冲存储器线的指令,指令的两个部分均必须被提取以便正确地预解码所述指令,这增加了预解码功能的复杂性,且可能影响性能和电力利用率。
发明内容
在本发明的若干方面中,本发明认识到可通过使用预解码修复高速缓冲存储器来改进性能和节省电力。本发明的第一实施例认识到需要一种填充预解码修复高速缓冲存储器的方法。提取指令的存储在第一高速缓冲存储器线中的第一部分。还提取指令的存储在下一高速缓冲存储器线上的第二部分。在处理器管线级中预解码指令的第一部分和第二部分,以形成经修复的预解码信息。利用与所述指令相关联的地址将经修复的预解码信息写入预解码修复高速缓冲存储器中。
本发明的另一实施例提出一种用于执行跨越两个高速缓冲存储器线的指令的方法。提取跨越两个高速缓冲存储器线的指令的第一部分,指令的第一部分存储在指令高速缓冲存储器中的第一高速缓冲存储器线中。从与指令高速缓冲存储器分开的预解码修复高速缓冲存储器提取与所述指令相关联的预解码信息。还提取指令的存储在第一高速缓冲存储器线之后的下一高速缓冲存储器线中的第二部分。响应于预解码信息而执行所述指令。
另一实施例提出一种用于利用预解码修复高速缓冲存储器的设备。指令高速缓冲存储器可操作以在指令高速缓冲存储器线中存储具有至少第一长度和第二长度的指令,第二长度比第一长度长。预解码器可操作以预解码从指令高速缓冲存储器提取的具有无效预解码信息的指令,以形成经修复的预解码信息。预解码修复高速缓冲存储器可操作以存储与指令高速缓冲存储器中跨越两个高速缓冲存储器线的具有第二长度的指令相关联的经修复的预解码信息。
从以下具体实施方式和附图将明白对本发明以及本发明的其它特征和优点的更完整的理解。
附图说明
图1说明其中可有利地使用本发明的实施例的示范性无线通信系统;
图2说明具有处理器、层1指令高速缓冲存储器(L1 I高速缓冲存储器)、层2高速缓冲存储器(L2高速缓冲存储器)和预解码修复高速缓冲存储器的指令流逻辑;
图3A说明含有16位和32位的不同长度指令的示范性程序段;
图3B说明含有来自图3A的程序段300的指令的示范性L1 I高速缓冲存储器线;
图4A说明示范性L1 I高速缓冲存储器段;
图4B说明用于准备预解码修复高速缓冲存储器条目的管线级图;
图4C是说明用以通过从预解码修复高速缓冲存储器提取用于跨线指令(跨越两个高速缓冲存储器线的指令)的有效预解码位来节省电力的操作的处理器管线级图;
图5是在L1 I高速缓冲存储器中的未中时遵循的且用于准备到预解码修复高速缓冲存储器的条目的操作步骤的过程;及
图6是当从L1 I高速缓冲存储器提取跨线指令时遵循的操作步骤的流程图。
具体实施方式
现在将参看附图更完整地描述本发明,附图中展示了本发明的若干实施例。然而,本发明可以各种形式体现,且不应被理解为限于此处所陈述的实施例。相反,提供这些实施例是为了使本发明将透彻和完整,且将完全将本发明的范围传达给所属领域的技术人员。
用于被操作和用于执行根据本发明的教示的操作的计算机程序代码或“程序代码”可用例如C、C++、JAVASmalltalk、JavaScriptVisual BasicTSQL、Perl等高级编程语言或用各种其它编程语言编写。用于目标处理器架构的程序也可直接用本机汇编器语言编写。本机汇编器程序使用机器级二进制指令的指令助记表示。如本文中所使用的程序代码或计算机可读媒体是指格式可被处理器理解的机器语言代码,例如对象代码。
图1说明其中可有利地使用本发明的实施例的示范性无线通信系统100。出于说明目的,图1展示三个远程单元120、130和150以及两个基站140。将认识到,常见的无线通信系统可具有多得多的远程单元和基站。远程单元120、130和150包含硬件组件、软件组件或这两者,如由组件125A、125B和125C表示,其已适合于体现下文进一步论述的本发明。图1展示从基站140以及远程单元120、130和150的前向链路信号180,以及从远程单元120、130和150到基站140的反向链路信号190。
在图1中,将远程单元120展示为移动电话,将远程单元130展示为便携式计算机,且将远程单元150展示为无线本地环路系统中的固定位置远程单元。举例来说,远程单元可替代地是手机、寻呼机、步话机、手持式个人通信系统(PCS)单元、便携式数据单元(例如个人数据助理),或固定位置数据单元(例如读表装备)。尽管图1说明根据本发明的教示的远程单元,但本发明不限于这些示范性的所说明的单元。本发明的实施例可合适地用于使用具有可变长度指令的在指令高速缓冲存储器中存储预解码信息的管线式处理器的任何装置中。
图2说明指令流逻辑200,其具有处理器204、层1指令高速缓冲存储器(L1 I高速缓冲存储器)206、层2高速缓冲存储器(L2高速缓冲存储器)208和预解码修复高速缓冲存储器210。指令流逻辑200进一步包含预解码器214、填充缓冲器216、指令高速缓存级1(IC1)218、指令高速缓存级2(IC2)220、多路复用器222以及到达系统存储器224的接口。为了对本发明的说明和论述的清楚起见,未展示可连接到处理器204的外围装置(例如通信子系统)。指令流逻辑200可合适地用于硬件组件125A到125C以用于执行程序代码。处理器204直接耦合到L1 I高速缓冲存储器206和多路复用器222。处理器204以分级方式从高速缓冲存储器和系统存储器提取指令。举例来说,处理器204通过在L1 I高速缓冲存储器输入总线228上产生提取地址来提取指令。处理器204也可向指令流逻辑200提供操作模式状态信号,作为处理器的由编程人员指定的操作模式的指示符。
处理器的指令组包含以多种长度格式编码的指令,其中较长的指令一般是在可变长度指令组中可用的最短指令格式长度的倍数。由于指令可具有复合编码(其可依据指令的长度而变化)且所述指令可能邻近于具有不同长度的指令,所以所提取的指令的对准和解码可能需要超过在具有较短持续时间的时钟周期的单处理器管线级中能够实现的处理的处理。如下文更详细地描述,由于指令复杂性的等级,处理器可包含单独的指令对准管线级,且可将指令解码操作分成预解码步骤和一个或一个以上解码管线级。
通过在L1 I高速缓冲存储器未中的处理期间进行预解码操作,预解码步骤可合适地向普通管线执行隐藏。当在L1 I高速缓冲存储器中未找到所提取的指令且必须从存储器层级的较高层提取指令时,L1 I高速缓冲存储器未中处理发生。在接收到所提取的指令(例如从L2高速缓冲存储器208)后,预解码所述所提取的指令。预解码操作将预解码信息连同所提取的指令一起存储在L1指令高速缓冲存储器中。由于可变长度指令,指令可具有致使所述指令跨多个指令高速缓冲存储器线而存储的长度。举例来说,32位指令可分裂成两个部分,其中第一16位部分存储在第一指令高速缓冲存储器线的末尾,且第二16位部分存储在下一循序指令高速缓冲存储器线的开头。如下文更详细地论述,当指令跨越高速缓冲存储器线边界时,预解码操作的复杂性增加。
在操作中,处理器204存取L1 I高速缓冲存储器206,以通过使用匹配机制来确定L1 I高速缓冲存储器中是否存在所寻址的指令。如果在L1 I高速缓冲存储器206中针对所提取的指令未发现匹配,那么未中发生。处理器206随后向L2高速缓冲存储器208作出存取请求232。举例来说,在L1 I高速缓冲存储器206的初始化后,将I高速缓冲存储器视为具有无效内容,且随着L1 I高速缓冲存储器206被填充有指令,将存在未中。此外,当程序分支到新的代码区段时,在L1 I高速缓冲存储器提取时发生I高速缓冲存储器未中的概率较大。
对于L2高速缓冲存储器208中的指令命中,在端口A234上将含有所要指令的L2高速缓冲存储器线输出到预解码器214。预解码器214在处理管线中的预解码管线级期间操作,所述预解码管线级控制在未中时遵循的步骤的顺序。预解码器214部分地解码从L2高速缓冲存储器提取的指令,并在耦合到填充缓冲器216的输出总线238上提供指令、与所述指令相关联的预解码位以及标签信息。填充缓冲器216提供弹性存储以适应不同的存储和处理器等待时间。填充缓冲器216的输出总线240将经缓冲的指令、相关联的预解码位以及标签信息耦合到L1 I高速缓冲存储器206且耦合到多路复用器222,指令在被多路复用器控制(Mctl)信号242选择时从多路复用器222前进到处理器204。
在L1 I高速缓冲存储器206中的指令命中时,所提取的指令和预解码位经由指令总线244耦合到多路复用器222,所述指令和预解码位在被Mctl信号242选择时从多路复用器222前进到处理器204。预解码位可以多种方式格式化以支持高效的处理。举例来说,可结合每一16位指令提供四个预解码位(Pd4),且可结合每一32位指令提供两组Pd4位。依据需要存储在预解码位中的信息,可预解码2个位、3个位或多于3个位并将其连同相关联的指令一起存储在L1 I高速缓冲存储器线中。
图3A说明可合适地含有16位和32位的不同长度指令的示范性程序段300。示范性程序段300可合适地存储在指令流逻辑200的存储器层级中,包含L1 I高速缓冲存储器206和L2高速缓冲存储器208。应注意,尽管为了说明目的而假定程序段是从一个或一个以上高速缓冲存储器线检索的,但本发明的教示适用于存储程序段的其中可变长度指令可跨越存储段边界的任何存储器装置。一般来说,术语“高速缓冲存储器线”也可称为指令串或指令流。由于高速缓冲存储器线可具有固定长度,因此术语“指令串”或“指令流”是指可跨越高速缓冲存储器线的边界且可具有越过边界而分裂的指令的一个或一个以上程序段。
程序段300包含指令302,其来自由16位和32位指令组成的可变长度指令组。举例来说,处理器204可针对多种类型的指令使用16位和32位指令格式,且可支持指定并限制指令类型使用的若干操作模式。举例来说,处理器204可具有指定可使用仅32位指令的第一操作模式,以及指定可使用16位指令与32位指令的组合的第二操作模式。虽然处理器可具有多种操作模式,但为了本发明的论述的清楚起见,对示范性处理器204的描述主要限于上文所述的第二操作模式。
为了说明各种实施例,在图3A中说明若干示范性16位和32位指令。出于说明目的,程序相对字节指示符304表示高速缓冲存储器线中指令开始的字节位置,且间接地指示指令的大小。举例来说,ADD R5、R4、R3指令306在相对字节位置00处开始,且在字节位置01处结束。因此ADD R5、R4、R3指令306是16位指令。类似地,ADD指令309的长度也是16位。加载(LOAD)指令307、LOAD指令308和存储(STORE)指令310的长度是32位。
依据(例如)处理器和存储器层级的设计中基于所使用的制造技术而作出的选择,高速缓冲存储器线大小在不同的处理器实施方案中可不同。举例来说,L2高速缓冲存储器208可使用256位或512位高速缓冲存储器线,且L1高速缓冲存储器206可使用较小的高速缓冲存储器线,例如128位高速缓冲存储器线。请注意,出于说明性目的,已将程序段300展示为在相对地址00处开始。将了解,此程序段300可定位为在高速缓冲存储器线中的各个点处开始,且可跨越于多个高速缓冲存储器线之间。
图3B说明含有来自图3A的程序段300的指令的示范性L1 I高速缓冲存储器线350。示范性第一L1 I高速缓冲存储器线320和示范性第二L1 I高速缓冲存储器线322是图2的L1 I高速缓冲存储器206中的相邻的高速缓冲存储器线。举例来说,第一L1 I高速缓冲存储器线320由多个20位字段组成,其中每一20位字段(例如20位字段326)由16位字段327与相关联的4位预解码(Pd4)字段328组成。在此实例中,L1高速缓冲存储器将128个位用于指令,且还需要额外的空间以用于八个Pd4字段,从而产生160位L1高速缓冲存储器线。单个4位Pd4字段用于16位指令,且两个Pd4字段用于32位指令。4位Pd4字段可含有与Pd4字段相关联的指令或指令区段的至多达十六个经编码特性。举例来说,编码可指示所述指令是加载或存储指令、算术指令还是需要微码支持的复合指令。编码还可指示相关联的一组16个指令位的是32位指令的前一半还是单独的16位指令,所述指令是否为分支类型的指令等等。编码可进一步指示无法获得有效的预解码信息,且相应地对Pd4位进行标记。Pd4信息在指令对准、解码中是有用的,且可用于其它目的,例如分支处置。
图3A的程序段300的指令可位于L1高速缓冲存储器线中,以图3A的16位ADDR5、R4、R3指令306开始,且其相关联的Pd4字段分别存储在L1高速缓冲存储器线段327和328中。图3A的32位LOAD指令307和其相关联的Pd4字段被组织成段330,且以不同于单个16位指令的方式存储在L1高速缓冲存储器线中。出于说明性目的,16位L1高速缓冲存储器线段331含有LOAD指令307的高阶16个位。Pd4字段332提供用于32位LOAD指令的预解码信息,而接下来的16位L1高速缓冲存储器线段333含有LOAD指令307的低阶16个位。Pd4字段334含有用于32位LOAD指令307的额外预解码信息。由于其它程序段可能在不同时间占用高速缓冲存储器线,所以可使用Pd4字段334以支持16位指令,所述16位指令(例如)存储在16位L1高速缓冲存储器线段333中。
L1高速缓冲存储器线中的下一指令是图3A的32位LOAD指令308,其越过两个指令高速缓冲存储器线而存储。LOAD指令308的高阶16个位连同其相关联的预解码位字段作为20位段336存储在第一L1 I高速缓冲存储器线320中,20位段336由16位字段337和4位Pd4字段338组成。LOAD指令308的低阶16个位连同其相关联的Pd4位字段作为20位段340存储在第二L1 I高速缓冲存储器线322中,20位段340由16位字段341和4位Pd4字段342组成。ADD R8、R6、R7指令309和STORE指令310(均见图3A)以类似于段326和330的方式存储在第二L1 I高速缓冲存储器线322中。
请注意,对于仅32位指令的第一操作模式,所有指令均根据架构定义而位于字对准边界上。对于此第一操作模式,程序段由仅32位指令(未图示)组成,所述指令并不越过指令高速缓冲存储器线边界。
本发明的一个方面涉及确定关于越过指令高速缓冲存储器线边界的指令的预解码信息以及填充预解码修复高速缓冲存储器。本发明的另一方面涉及执行跨越两个高速缓冲存储器线的指令以改进处理器性能且节省电力。下文更详细地描述本发明的这些和其它方面。
返回参看图2的指令流逻辑200,处理器204通过在L1 I高速缓冲存储器输入总线228上提供待提取的指令的地址(提取地址),来起始从L1 I高速缓冲存储器206提取指令,且可在提取时提供当前程序指定的操作模式状态信息。提取时的操作模式状态信息可包含处理器是处于在字对准边界上使用仅32位指令的第一操作模式,还是使用16位和32位两种指令的第二操作模式,还是其它处理器模式。
如果在L1 I高速缓冲存储器206中发生未中,那么处理器204继续从L2高速缓冲存储器208提取指令,或者如果在L2高速缓冲存储器208中未找到所述指令,那么从系统存储器提取所述指令。在因存储器存取定时导致的等待时间之后,从系统存储器或从L2高速缓冲存储器输出234提供指令,且将所述指令耦合到预解码器214以产生预解码位。通过部分地解码所述指令来产生预解码四个位(Pd4)。在合适的高速缓冲存储器线地址处将指令的16位字段和其相关联的Pd4位写入到L1 I高速缓冲存储器。
经预解码的指令和Pd4位存储在填充缓冲器216中,且从填充缓冲器216分配到多路复用器222和L1 I高速缓冲存储器206。对于指令,例如图3A的LOAD指令308(其跨越L1 I高速缓冲存储器线320和322),将存储在图3B的段338中的Pd4位设置为指示相关联的16位字段337是32位指令的高阶16个位,且LOAD指令308越过高速缓冲存储器线边界。在这一点处,LOAD指令308的第二半是不可用的。强行从L2高速缓冲存储器208或从系统存储器进行第二次提取以获得LOAD指令308的第二半的技术通常实施起来将较昂贵,且将影响处理器性能。不是强行提取LOAD指令的第二半,而是将在自然程序进程中提取下一高速缓冲存储器线。
将LOAD指令308的高阶16个位加载到指令对准(IDA)管线级250中。在提取下一指令高速缓冲存储器线之后,将LOAD指令308的低阶16位一半加载到IDA管线级250中。使在指令对准级250中接收到的指令对准,且使其准备就绪以用于后续的处理器预解码器252和解码器254管线级。在解码器254之后,选择经解码的指令以穿过多路复用器256,且可在将所述指令加载到解码寄存器258中之前进一步在解码器257中对所述指令进行解码,所述指令从解码寄存器258继续执行。处理器预解码器252形成新的Pd4预解码位,作为用于所述指令的经修复的预解码信息。L1 I高速缓冲存储器206中的指令的地址和经修复的预解码信息经由预解码修复总线260传送到预解码修复高速缓冲存储器210。随后将所述地址和新的PD4位存储在预解码修复高速缓冲存储器中。在替代实施例中,指令、地址和其相关联的新Pd4位可经由预解码修复总线260传送并存储在预解码修复高速缓冲存储器中。
在命中跨线LOAD指令308的后续提取后,检索存储在预解码修复高速缓冲存储器210中的信息(例如指令和新的Pd4位),并使用新的Pd4位代替来自与L1 I高速缓冲存储器206的指令一起存储的Pd4位。在命中或未中信号261上指示预解码修复高速缓冲存储器210中的命中。预解码修复高速缓冲存储器输出总线262将预解码修复高速缓冲存储器210耦合到多路复用器222,多路复用器222耦合到IDA级250。在使用预解码修复高速缓冲存储器所存储的Pd4位的情况下,来自IDA级250的指令在IDA总线264上直接前进到解码器266,接着酌情在解码器257中进一步解码,且随后前进到解码寄存器258,绕过在处理器预解码器252中遇到的多个周期。在跨线指令位于程序环路中的情形下,可通过使用来自预解码修复高速缓冲存储器210的经修复的预解码信息而不必在每次穿过环路时都经过处理器预解码器252管线级来节省相当大的性能。
图4A说明示范性L1 I高速缓冲存储器段400。L1 I高速缓冲存储器段400包含第一80位L1 I高速缓冲存储器线402和第二80位L1 I高速缓冲存储器线404。所述高速缓冲存储器线中的每一者由20位的区段406到409组成,其包含16位指令字段和Pd4字段。示范性程序段存储在高速缓冲存储器线402和404中,由20位字段划分且由20位字段0-7和相关联的16位或32位指令A-E来标记。实例程序段包含由单个20位字段(0,A)411组成的16位指令A、由两个20位字段(1,B)412和(2,B)413组成的32位指令B、由(3,C)414和(4,C)415组成的32位指令C、由(5,D)416组成的16位指令D以及由(6,E)417和(7,E)418组成的32位指令E。存储在L1I高速缓冲存储器段400中的程序段类似于图3A的程序段300。此程序段用于说明图2的指令流逻辑200中的操作的处理器管线级。对图4B的管线级图420和图4C的管线级图450的描述也涉及图2的指令流逻辑。
图4B说明用于准备预解码修复高速缓冲存储器条目的管线级图420。管线级图420由时间周期“t”422、“t+1”423等直到“t+7”429组成。管线级被说明为行,且包含指令高速缓存级1(IC1)430、指令高速缓存级2(IC2)431、指令对准级(IDA)432、解码级(DCD)433和修复级434。
管线序列在时间“t”422处以含有指令A,(0,A)411;指令B,(1,B)412和(2,B)413;以及指令C,(3,C)414的前一半的第一L1 I高速缓冲存储器线402进入指令高速缓存级1(IC1)430(例如L1指令高速缓冲存储器206的IC1 218)而开始。此状态在管线级图420中在行IC1 430中被说明为时间“t”422处的16位字段0-3。
在时间“t+1”423处,第一L1 I高速缓冲存储器线402进入指令高速缓存级2(IC2)431,例如L1指令高速缓冲存储器206的IC2 220。此外,在时间“t+1”423处,含有指令C,(4,C)415的第二半;指令D,(5,D)416以及指令E,(6,E)417和(7,E)418的第二L1 I高速缓冲存储器线404进入IC1 430,如IC1 218。此状态在管线级图420中在行IC1 430中被说明为时间“t+1”423处的16位字段4-7。此时还接收到由Mctl信号261指示的预解码修复高速缓冲存储器210中的未中,其指示用于跨越两个高速缓冲存储器线的指令C的预解码位尚未修复。
在时间“t+2”424处,第一L1 I高速缓冲存储器线402穿过多路复用器222进入指令对准(IDA)管线级432,例如处理器204的IDA 250。在这一点处,确定指令C的仅一半存在于高速缓冲存储器线中。在此示范性场景中,指令C的第二半在IC2 431(例如管线的IC2 220级)中。此外,使来自下一所提取的高速缓冲存储器线的指令进入到指令高速缓存级1(IC1)430(例如L1指令高速缓冲存储器206的IC1 218)中。这些接下来的指令被说明为“…”以指示提取下一组指令。
在时间“t+3”425处,具有有效预解码位(Pd4)的指令A和B(例如)通过经由IDA总线264传送到解码寄存器258而进入解码DCD管线级433。此状态被说明为管线的DCD 433级中的A/B。指令C的第二半从IC2级431获得,且与指令C的第一半组合,从而在IDA级432中产生指令C,3C/4C,其具有无效的预解码位。由来自第二L1I高速缓冲存储器线404的指令D(5,D)416和指令E(6,E)417和(7,E)418组成的指令D和E保留在管线的IC2级431处。
在时间“t+4”426处,在处理器预解码器252中预解码指令C,(3,C)414和(4,C)415,且将结果加载到预解码修复高速缓冲存储器210的前端中。此状态被说明为预解码修复的第一周期,且展示为时间“t+4”426和修复级434处的“1”。还使预解码器结果可供解码器254使用。指令(5,D)416和指令E,(6,E)417和(7,E)418保留在管线的IC2级431处。
在时间“t+5”427处,将预解码器252的结果(例如有效预解码位)加载到预解码修复高速缓冲存储器210中。此状态被说明为修复的第二周期,如展示为时间“t+5”427和修复级434处的“2”。对指令C的解码也在此时进行。指令(5,D)416和指令E,(6,E)417和(7,E)418保留在管线的IC2级431处。
在时间“t+6”428处,指令C的解码结果由多路复用器256选择,可进一步在解码器257中解码,并保存在解码寄存器258中。指令(5,D)416以及指令E(6,E)417和(7,E)418进入IDA级432,例如处理器204的IDA级250。
在时间“t+7”429处,指令D和E到达解码寄存器258,且继续执行。由于指令C跨越两个高速缓冲存储器线,所以使用个周期的管线泡(pipeline bubble)来修复用于指令C的预解码位,并将所述预解码位存储在预解码修复高速缓冲存储器210中。所述个周期中的两个周期被说明为画圈部分435,且1/2个周期被展示为画圈部分436。
图4C是说明用以通过从预解码修复高速缓冲存储器提取用于跨线指令的有效预解码位来节省电力的操作的处理器管线级图450。管线级图450由时间周期“t”452、“t+1”453等直到“t+6”458以及管线级组成,所述管线级包含指令高速缓存级1(IC1)460、指令高速缓存级2(IC2)461、指令对准级(IDA)462、解码级(DCD)463和修复级464。
管线序列在时间“t”452处以第一L1 I高速缓冲存储器线402开始(第一L1 I高速缓冲存储器线402含有指令A411、B412和413以及指令C414的前一半),从而进入指令高速缓存级1(IC1)460,例如L1指令高速缓冲存储器206的IC1 218。此状态在管线级图450中在行IC1 460中说明为时间“t”452处的16位字段0-3。
在时间“t+1”453处,第一L1 I高速缓冲存储器线402进入指令高速缓存级2(IC2)461,例如L1指令高速缓冲存储器206的IC2 220。此外,在时间“t+1”453处,含有指令C,(4,C)415的第二半;指令D(5,D)416以及指令E,(6,E)417和(7,E)418的第二L1 I高速缓冲存储器线404进入IC1 460,例如IC1 218。此状态在管线级图450中在IC1 460中说明为时间“t+1”453处的16位字段4-7。还接收到由Mctl信号261指示的预解码修复高速缓冲存储器210中的命中,其向指令流逻辑200指示用于跨越高速缓冲存储器线的指令C的预解码位已被修复。
在时间“t+2”454处,第一L1 I高速缓冲存储器线402进入指令对准(IDA)管线级462,例如处理器204的IDA 250。在这一点处,确定指令C的仅一半存在于高速缓冲存储器线中。在此示范性场景中,指令C的第二半在IC2 461(例如管线的IC2 220级)中。由于预解码修复高速缓冲存储器210中存在命中,所以用于指令C的有效预解码位是可用的。此外,来自下一所提取的高速缓冲存储器线的指令被输入到指令高速缓存级1(IC1)460(例如L1指令高速缓冲存储器206的IC1 218)中。接下来的这些指令被说明为指令“8-11”,其中8-11群组的第一指令为指令“F”,其可为16位或32位指令。
在时间“t+3”455处,指令A和B具有有效预解码位(Pd4)并(例如)通过传送到解码寄存器258而进入解码DCD管线级463。此状态被说明为管线的DCD 463级中的A/B。指令C的第二半是从IC2级461获得,与指令C的第一半组合,且进一步与来自预解码修复高速缓冲存储器210的有效预解码位组合,以在IDA级462中产生完整的指令C。所述组合是通过多路复用器222来控制,多路复用器222受Mctl信号242和IDA管线级250中的对准逻辑控制。举例来说,从预解码修复高速缓冲存储器210提取的经修复的预解码信息可具有第一部分(例如第一组经修复的预解码位)和第二部分(例如第二组经修复的预解码位)。多路复用器222可选择经修复的预解码位的第一部分和第二部分以及来自指令C的指令位,以进入指令对准(IDA)管线级250。IDA管线级250使选定位对准,且用有效的经对准预解码信息来产生重新汇编的指令。来自第二L1 I高速缓冲存储器线404的指令D(5,D)416和指令E(6,E)417和(7,E)418保留在管线的IC2级461中。指令8-11保留在IC1级460中。
在时间“t+4”456处,由(3,C)414和(4,C)415组成的指令C/-进入解码DCD管线级463,从而(例如)传送到解码寄存器258。指令(5,D)416、(6,E)417和(7,E)418进入IDA管线级462。接下来的指令“8-11”进入IC2级461。
在时间“t+5”457处,指令D,(5,D)416和由(6,E)417和(7,E)418组成的指令E进入解码DCD管线级463。从时间“t+6”458开始并持续,处理对来自下一指令群组“8-11”的其余指令继续。
如图4C的处理器管线级图450中所说明,画圈部分435(其表示在图4B的处理器管线级图420中发生的管线泡)的2个周期被取消,从而节省了电力并改进了性能。
图5是在L1 I高速缓冲存储器中的未中时遵循的且用于准备到预解码修复高速缓冲存储器的条目的操作步骤的过程500。在框502处,向L1 I高速缓冲存储器的提取导致未中。在框504处,处理器从L2高速缓冲存储器或系统存储器提取指令,其中指令具有两种类型。第一类型指令以第一长度(例如16位)格式化,且第二类型指令以第二长度格式化。第二长度(例如32位)比第一长度长。在框506处,将指令串布置到一个或一个以上L1 I高速缓冲存储器线中。举例来说,可提取单个高速缓冲存储器线且将其布置在高速缓冲存储器线(例如图3B的第一L1 I高速缓冲存储器线320)中。在框508处,预解码指令串,从而产生用于经部分解码的指令的预解码信息。
在决策框510处,确定是否找到作为跨越两个层1指令高速缓冲存储器线之间的跨线指令且具有位于第一线上的第一部分的第二类型指令。如果未找到跨线指令,那么过程500前进到决策框512。在决策框512处,确定有效的预解码信息是否可供管线化指令使用。如果有效的预解码信息可供管线化指令使用,那么过程500前进到框514。在框514处,(例如)通过选择IDA总线264从而绕过在图2的处理器预解码器252中遇到的多个周期来绕过处理器预解码器级。在框515处,对指令进行解码,其可包含在可实施的解码器266和解码器257中的解码。在框516处,指令流逻辑200继续指令执行。
返回到决策框512。如果确定有效的预解码信息不可供管线化指令使用,那么过程500前进到框518。可(例如)通过检查从自L1 I高速缓冲存储器206中提取的指令获得的Pd4位来确定有效的预解码信息。Pd4位可指示(例如)指令的前16位是跨线指令的一部分,且有效的预解码信息不可供跨线指令使用。在框518处,管线化指令进入处理器预解码器级,例如图2的处理器预解码器252,其产生经修复的预解码信息,例如新的预解码位。在决策框520处,确定是否存在跨线指令。如果不存在跨线指令,那么过程500前进到框522。在框522处,管线化指令进入解码器级,例如图2的解码器254。在解码器级之后,过程500前进到框516以继续指令执行。
返回决策框520,在此处确定存在跨线指令。过程500前进到框524。在框524处,将与跨线指令相关联的新的预解码位写入到预解码修复高速缓冲存储器,例如图2的预解码修复高速缓冲存储器210。随后过程500前进到框522,以提供对管线化指令的解码。过程500随后前进到框516以继续指令执行。
返回决策框510,在此处确定存在跨线指令。在决策框524处,确定跨线指令的第二部分是否可用。如果跨线指令的第二部分可用,那么过程500前进到决策框512,并按上文所指继续。如果在决策框524处确定跨线指令的第二部分不可用,那么过程500前进到框526。在框526处,提取指令串以获得跨线指令的第二部分。举例来说,此指令串可从填充缓冲器216或L1 I高速缓冲存储器206提取。过程500随后前进到决策框512,并按上文所指继续。
图6是当从L1 I高速缓冲存储器提取跨线指令时所遵循的操作步骤的流程图600。在框602处,提取指令。在决策框604处,确定跨线指令的第一部分是否在L1 I高速缓冲存储器(例如图2的L1 I高速缓冲存储器206)中。如果跨线指令的第一部分不在L1 I高速缓冲存储器中,那么记录未中,且过程600前进到图5的过程500的框502。如果跨线指令的第一部分在L1 I高速缓冲存储器中,那么记录命中,且过程600前进到决策框606。
在决策框606处,确定跨线指令的第二部分是否在L1 I高速缓冲存储器中。如果跨线指令的第二部分不在L1 I高速缓冲存储器中,那么记录未中,且过程600前进到图5的过程500的框526。如果跨线指令的第二部分在L1 I高速缓冲存储器中,那么记录命中,且过程600前进到决策框608。
在决策框608处,确定指令提取地址是否在预解码修复高速缓冲存储器(例如图2的预解码修复高速缓冲存储器210)中命中。如果指令提取地址未在预解码修复高速缓冲存储器中命中,那么记录未中,且过程600前进到图5的过程500的框518。如果指令提取地址确实在预解码修复高速缓冲存储器中命中,那么记录命中,且过程600前进到框610。在框610处,将来自L1 I高速缓冲存储器的跨线指令的第一部分和第二部分与从预解码修复高速缓冲存储器提取的预解码修复位组合。组合器可由多路复用器(例如多路复用器222)和对准逻辑(例如可在IDA管线级250中找到)组成。过程600随后前进到图5的过程500的框514。
为了维持正确的操作,与处理器204相关联的指令流逻辑200或代码的一部分跟踪L1 I高速缓冲存储器的操作。举例来说,每当L1 I高速缓冲存储器被冲洗时,预解码修复高速缓冲存储器也被冲洗。此外,每当L1 I高速缓冲存储器被写入时,预解码修复高速缓冲存储器中的现有条目失效。
也应注意,随着在特定实施方案中L1 I高速缓冲存储器线的宽度减小,预解码修复高速缓冲存储器的大小将趋向于增加,因为跨线指令的百分比将趋向于增加。举例来说,对于160个位的L1 I高速缓冲存储器线,两个预解码修复高速缓冲存储器线对于许多应用来说可能是足够的。
本发明不限于所说明的指令流逻辑200,且进一步适用于具有可变长度指令的在指令高速缓冲存储器中存储预解码信息的任何管线处理器。本发明可容纳可变长度处理器指令的扩展部分,前提是所述扩展部分支持指令组使用的唯一模式,使得可选择性地控制预解码信息,从而节省写入和读取电力。举例来说,可指定操作模式,其中16位、32位和64位指令可操作,使得32位和64位指令可跨越两个L1 I高速缓冲存储器线。使用64位指令类型的处理器可为上文所述的示范性处理器204的扩展部分。扩展的处理器可具有(例如)针对以下状态而编码的操作模式状态:仅限于32位指令的第一状态;用于16位和32位两种指令的第二状态;用于16位、32位和64位指令的第三状态以及仅限于64位指令的第四状态。I高速缓冲存储器线中的64位指令可被划分成四个20位字段,其中每一20位字段具有64位指令的区段以及相关联的Pd4字段。对于L1 I高速缓冲存储器线中的64位指令,将针对整个64位指令使用与64位指令的16位字段中的每一者相关联的Pd4字段。
本发明也不限于为二的幂的指令长度。举例来说,考虑具有16位和24位指令的替代架构。在此实例中,可将指令高速缓冲存储器线划分成8位指令区段和2位预解码区段。16位指令可由20个位组成,所述20个位(例如)组织成{8个位,2个位的Pd2,8个位,2个位的Pd2}。24位指令可由30个位组成,所述30个位(例如)组织成{8个位,2个位的Pd2,8个位,2个位的Pd2,8个位,2个位的Pd2}。存储16位指令的160位高速缓冲存储器线将能够保持八个16位指令,其针对总共160个位组织成八个20位区段,其中所有位均完全被利用。存储24位指令的160位高速缓冲存储器线将能够保持五个24位指令,其针对总共150个位组织成五个30位区段,其中线中的其余10位未被利用。
虽然已在目前优选的场境中揭示了本发明,但将认识到,本教示可适合于与本发明和所附权利要求书一致的多种场境。
Claims (20)
1.一种填充预解码修复高速缓冲存储器的方法,所述方法包括:
提取指令的存储在第一高速缓冲存储器线中的第一部分;
提取所述指令的存储在下一高速缓冲存储器线中的第二部分;
在处理器管线级中预解码所述指令的所述第一和所述第二部分,以形成经修复的预解码信息;以及
利用与所述指令相关联的地址在所述预解码修复高速缓冲存储器中写入所述经修复的预解码信息。
2.根据权利要求1所述的方法,其中将所述指令的所述第一和第二部分存储在层1指令高速缓冲存储器中。
3.根据权利要求1所述的方法,其进一步包括:
在所述预解码之前,确定所述所提取的指令是否含有有效的预解码信息。
4.根据权利要求3所述的方法,其进一步包括:
利用与指令高速缓冲存储器中的所述指令相关联的地址从所述预解码修复高速缓冲存储器中提取预解码信息;
在所述预解码修复高速缓冲存储器中的所寻址的位置处未中;以及
响应于确定有效的预解码信息不可用,在所述预解码修复高速缓冲存储器中写入所述经修复的预解码信息。
5.根据权利要求1所述的方法,其中所述第一高速缓冲存储器线保持以至少两种不同长度格式化的指令。
6.根据权利要求1所述的方法,其中在与所述指令的所述第一部分相关联的第一组预解码位和与所述指令的所述第二部分相关联的第二组预解码位中对所述预解码信息进行编码。
7.根据权利要求2所述的方法,其进一步包括:
每当所述层1指令高速缓冲存储器被冲洗时,冲洗所述预解码修复高速缓冲存储器。
8.根据权利要求2所述的方法,其进一步包括:
每当一条目被写入到所述层1指令高速缓冲存储器时,使所述预解码修复高速缓冲存储器中的条目失效。
9.一种用于执行跨越两个高速缓冲存储器线的指令的方法,所述方法包括:
提取跨越两个高速缓冲存储器线的指令的第一部分,所述指令的所述第一部分存储在指令高速缓冲存储器中的第一高速缓冲存储器线中;
从与所述指令高速缓冲存储器分开的预解码修复高速缓冲存储器中提取与所述指令相关联的预解码信息;
提取所述指令的存储在所述第一高速缓冲存储器线之后的下一高速缓冲存储器线中的第二部分;以及
响应于所述预解码信息而执行所述指令。
10.根据权利要求9所述的方法,其进一步包括:
将所述预解码信息与所述指令的所述第一和第二部分组合,以产生具有有效的经对准预解码信息的经重新汇编的指令。
11.根据权利要求10所述的方法,其中所述将所述预解码信息与所述指令的所述第一和第二部分组合进一步包括:
选择所述预解码信息的第一部分和第二部分;
从所述指令高速缓冲存储器中选择所述指令的所述第一部分和所述第二部分;以及
使所述预解码信息的所述第一部分和所述第二部分与所述指令的所述第一部分和所述第二部分对准,以产生具有有效的经对准预解码信息的经重新汇编的指令。
12.根据权利要求9所述的方法,其中所述指令的所述第一部分包括第一组指令位和相关联的第一组预解码位,且所述指令的所述第二部分包括第二组指令位和相关联的第二组预解码位。
13.根据权利要求12所述的方法,其进一步包括:
预解码所述第一组指令位以形成第一组经修复的预解码位;以及
预解码所述第二组指令位以形成第二组经修复的预解码位。
14.根据权利要求13所述的方法,其进一步包括:
选择所述第一组经修复的预解码位以代替所述第一组预解码位;
选择所述第二组经修复的预解码位以代替所述第二组预解码位;以及
响应于已修复所述预解码信息而绕过处理器预解码器级。
15.一种用于利用预解码修复高速缓冲存储器的设备,所述设备包括:
指令高速缓冲存储器,其可操作以在指令高速缓冲存储器线中存储具有至少第一长度和第二长度的指令,所述第二长度比所述第一长度长;
预解码器,其可操作以预解码从所述指令高速缓冲存储器中提取的具有无效预解码信息的指令,以形成经修复的预解码信息;以及
预解码修复高速缓冲存储器,其可操作以存储与跨越所述指令高速缓冲存储器中两个高速缓冲存储器线的具有所述第二长度的指令相关联的所述经修复的预解码信息。
16.根据权利要求15所述的设备,其进一步包括:
组合器,其可操作以将从所述预解码修复高速缓冲存储器中提取的经修复的预解码信息与具有所述第二长度的指令的第一部分和第二部分组合,以产生具有有效的经对准预解码信息的经重新汇编的指令。
17.根据权利要求15所述的设备,其进一步包括:
围绕所述预解码器的旁路路径,其可操作以针对从所述指令高速缓冲存储器中提取的具有有效预解码信息的指令绕过所述预解码器。
18.根据权利要求16所述的设备,其进一步包括:
围绕所述预解码器的旁路路径,其可操作以针对所述具有有效的经对准预解码信息的经重新汇编的指令绕过所述预解码器。
19.根据权利要求16所述的设备,其中所述组合器包括:
多路复用器,其可操作以利用与具有所述第二长度的指令相关联的地址来选择从所述预解码修复高速缓冲存储器中提取的经修复的预解码信息的第一部分和第二部分,且选择从所述指令高速缓冲存储器中提取的具有所述第二长度的所述指令的第一部分和第二部分;以及
对准逻辑,其可操作以将所述经修复的预解码信息的所述第一部分与具有所述第二长度的所述指令的所述第一部分组合,且将所述经修复的预解码信息的所述第二部分与具有所述第二长度的所述指令的所述第二部分组合。
20.根据权利要求18所述的设备,其中当所述预解码器被绕过时,所述预解码器被选通关断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410446244.2A CN104267927B (zh) | 2007-11-02 | 2008-10-31 | 用于执行跨越两个高速缓冲存储器线的指令的方法和设备 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/934,108 US8898437B2 (en) | 2007-11-02 | 2007-11-02 | Predecode repair cache for instructions that cross an instruction cache line |
US11/934,108 | 2007-11-02 | ||
PCT/US2008/081951 WO2009059103A1 (en) | 2007-11-02 | 2008-10-31 | Predecode repair cache for instructions that cross an instruction cache line |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410446244.2A Division CN104267927B (zh) | 2007-11-02 | 2008-10-31 | 用于执行跨越两个高速缓冲存储器线的指令的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101878467A true CN101878467A (zh) | 2010-11-03 |
CN101878467B CN101878467B (zh) | 2014-10-08 |
Family
ID=40091563
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880118233.4A Expired - Fee Related CN101878467B (zh) | 2007-11-02 | 2008-10-31 | 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 |
CN201410446244.2A Expired - Fee Related CN104267927B (zh) | 2007-11-02 | 2008-10-31 | 用于执行跨越两个高速缓冲存储器线的指令的方法和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410446244.2A Expired - Fee Related CN104267927B (zh) | 2007-11-02 | 2008-10-31 | 用于执行跨越两个高速缓冲存储器线的指令的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8898437B2 (zh) |
EP (2) | EP2220555A1 (zh) |
JP (2) | JP5384509B2 (zh) |
KR (1) | KR101182903B1 (zh) |
CN (2) | CN101878467B (zh) |
WO (1) | WO2009059103A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335305A (zh) * | 2015-10-30 | 2016-02-17 | 深圳市申议实业有限公司 | 一种交互式可编程硬件的缓冲机制实现方法及装置 |
CN107918557A (zh) * | 2016-10-05 | 2018-04-17 | 联发科技股份有限公司 | 一种运行多核系统的装置和方法及多核系统 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898437B2 (en) * | 2007-11-02 | 2014-11-25 | Qualcomm Incorporated | Predecode repair cache for instructions that cross an instruction cache line |
US9075622B2 (en) * | 2008-01-23 | 2015-07-07 | Arm Limited | Reducing errors in pre-decode caches |
US7925866B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
US7925867B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Pre-decode checking for pre-decoded instructions that cross cache line boundaries |
CN101833437B (zh) * | 2009-05-19 | 2013-06-26 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
KR101252032B1 (ko) | 2010-07-08 | 2013-04-10 | 삼성전자주식회사 | 반도체 발광소자 및 이의 제조방법 |
CN102436367A (zh) * | 2011-09-26 | 2012-05-02 | 杭州中天微系统有限公司 | 16/32位混合架构指令预取缓冲器装置 |
US9798548B2 (en) | 2011-12-21 | 2017-10-24 | Nvidia Corporation | Methods and apparatus for scheduling instructions using pre-decode data |
US20130166882A1 (en) * | 2011-12-22 | 2013-06-27 | Jack Hilaire Choquette | Methods and apparatus for scheduling instructions without instruction decode |
US9460018B2 (en) | 2012-05-09 | 2016-10-04 | Qualcomm Incorporated | Method and apparatus for tracking extra data permissions in an instruction cache |
US8819342B2 (en) | 2012-09-26 | 2014-08-26 | Qualcomm Incorporated | Methods and apparatus for managing page crossing instructions with different cacheability |
US20140244932A1 (en) * | 2013-02-27 | 2014-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for caching and indexing victim pre-decode information |
US9495297B2 (en) * | 2014-07-22 | 2016-11-15 | International Business Machines Corporation | Cache line crossing load techniques for a caching system |
US10445091B1 (en) * | 2016-03-30 | 2019-10-15 | Apple Inc. | Ordering instructions in a processing core instruction buffer |
US11151006B2 (en) | 2018-07-02 | 2021-10-19 | Samsung Electronics Co., Ltd. | HBM RAS cache architecture |
GB2577738B (en) * | 2018-10-05 | 2021-02-24 | Advanced Risc Mach Ltd | An apparatus and method for providing decoded instructions |
US11979478B2 (en) * | 2020-05-19 | 2024-05-07 | Qualcomm Incorporated | Signaling for relaying prior to decoding |
KR20220023649A (ko) | 2020-08-21 | 2022-03-02 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5951671A (en) * | 1997-12-18 | 1999-09-14 | Advanced Micro Devices, Inc. | Sharing instruction predecode information in a multiprocessor system |
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
US6502185B1 (en) * | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
CN1894660A (zh) * | 2003-12-22 | 2007-01-10 | 英特尔公司 | 具有指令预解码器的直接存储器访问单元 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6020255A (ja) | 1983-07-15 | 1985-02-01 | Fujitsu Ltd | バツフア記憶制御方式 |
JPS63245745A (ja) | 1987-04-01 | 1988-10-12 | Hitachi Ltd | バツフア記憶制御装置 |
JPH04255995A (ja) | 1991-02-08 | 1992-09-10 | Fujitsu Ltd | 命令キャッシュ |
JPH04257948A (ja) | 1991-02-13 | 1992-09-14 | Fujitsu Ltd | キャッシュメモリ、該キャッシュメモリを備えたシステムおよび該システムにおける命令デコード方式 |
JP3424759B2 (ja) | 1992-04-28 | 2003-07-07 | 東洋紡績株式会社 | 磁気記録媒体 |
US5987235A (en) * | 1997-04-04 | 1999-11-16 | Advanced Micro Devices, Inc. | Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions |
US5918062A (en) * | 1997-10-23 | 1999-06-29 | Advanced Micro Devices, Inc. | Microprocessor including an efficient implemention of an accumulate instruction |
US6092182A (en) * | 1998-06-24 | 2000-07-18 | Advanced Micro Devices, Inc. | Using ECC/parity bits to store predecode information |
US6460132B1 (en) * | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
US6564298B2 (en) * | 2000-12-22 | 2003-05-13 | Intel Corporation | Front end system having multiple decoding modes |
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 |
US7568070B2 (en) | 2005-07-29 | 2009-07-28 | Qualcomm Incorporated | Instruction cache having fixed number of variable length instructions |
US8898437B2 (en) * | 2007-11-02 | 2014-11-25 | Qualcomm Incorporated | Predecode repair cache for instructions that cross an instruction cache line |
-
2007
- 2007-11-02 US US11/934,108 patent/US8898437B2/en not_active Expired - Fee Related
-
2008
- 2008-10-31 CN CN200880118233.4A patent/CN101878467B/zh not_active Expired - Fee Related
- 2008-10-31 EP EP08843383A patent/EP2220555A1/en not_active Ceased
- 2008-10-31 JP JP2010533175A patent/JP5384509B2/ja not_active Expired - Fee Related
- 2008-10-31 CN CN201410446244.2A patent/CN104267927B/zh not_active Expired - Fee Related
- 2008-10-31 KR KR1020107012102A patent/KR101182903B1/ko active IP Right Grant
- 2008-10-31 EP EP12008657.4A patent/EP2600240A3/en not_active Withdrawn
- 2008-10-31 WO PCT/US2008/081951 patent/WO2009059103A1/en active Application Filing
-
2013
- 2013-10-02 JP JP2013207762A patent/JP5701954B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0498654B1 (en) * | 1991-02-08 | 2000-05-10 | Fujitsu Limited | Cache memory processing instruction data and data processor including the same |
US5951671A (en) * | 1997-12-18 | 1999-09-14 | Advanced Micro Devices, Inc. | Sharing instruction predecode information in a multiprocessor system |
US6502185B1 (en) * | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
CN1894660A (zh) * | 2003-12-22 | 2007-01-10 | 英特尔公司 | 具有指令预解码器的直接存储器访问单元 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335305A (zh) * | 2015-10-30 | 2016-02-17 | 深圳市申议实业有限公司 | 一种交互式可编程硬件的缓冲机制实现方法及装置 |
CN105335305B (zh) * | 2015-10-30 | 2018-05-15 | 深圳盛思科教文化有限公司 | 一种交互式可编程硬件的缓冲机制实现方法及装置 |
CN107918557A (zh) * | 2016-10-05 | 2018-04-17 | 联发科技股份有限公司 | 一种运行多核系统的装置和方法及多核系统 |
Also Published As
Publication number | Publication date |
---|---|
JP5384509B2 (ja) | 2014-01-08 |
CN101878467B (zh) | 2014-10-08 |
US8898437B2 (en) | 2014-11-25 |
WO2009059103A1 (en) | 2009-05-07 |
JP2011503719A (ja) | 2011-01-27 |
EP2600240A2 (en) | 2013-06-05 |
JP5701954B2 (ja) | 2015-04-15 |
US20090119485A1 (en) | 2009-05-07 |
JP2014044731A (ja) | 2014-03-13 |
CN104267927B (zh) | 2017-05-03 |
EP2220555A1 (en) | 2010-08-25 |
KR20100075670A (ko) | 2010-07-02 |
KR101182903B1 (ko) | 2012-09-13 |
EP2600240A3 (en) | 2013-12-11 |
CN104267927A (zh) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101878467B (zh) | 用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器 | |
CN101506773B (zh) | 用于模拟显式子例行程序调用的分支预测行为的方法和设备 | |
CN100478872C (zh) | 最小化未调度d缓存缺失流水线停顿的方法和装置 | |
CN101164040B (zh) | 用于可变长度指令的功率节省方法和设备 | |
EP0927394B1 (en) | A cache line branch prediction scheme that shares among sets of a set associative cache | |
CN103238134B (zh) | 编码于分支指令中的双模态分支预测器 | |
CN101449238A (zh) | 本地和全局分支预测信息存储 | |
JPS5991546A (ja) | 中央処理装置 | |
CN101627366A (zh) | 用以预加载来自除当前执行的指令集之外的指令集的指令的系统、方法及软件 | |
CN101646999A (zh) | 以适当的预解码预载来自可变长度指令集的指令的系统、方法和软件 | |
WO2007099604A1 (ja) | コンピュータの分岐予測装置 | |
CN101763249A (zh) | 对非控制流指令减少分支检验 | |
CN101493762A (zh) | 多指令集的指令预解码 | |
US7831815B2 (en) | Data processing apparatus and method for identifying sequences of instructions | |
CN101189574B (zh) | 指令存储器单元和操作方法 | |
CN1307534C (zh) | 微计算机装置的分支控制系统以及相关方法 | |
US7603545B2 (en) | Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching | |
US20050108508A1 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
US7447885B2 (en) | Reading prediction outcomes within a branch prediction mechanism | |
CN101699391B (zh) | 提高Java处理器取指令带宽的字节码缓冲装置及使用方法 | |
JPH10214188A (ja) | プロセッサの命令供給方法及び装置 | |
CN201548950U (zh) | 用于提高Java处理器取指令带宽的字节码缓冲装置 | |
US11334491B1 (en) | Side cache array for greater fetch bandwidth | |
KR20050109624A (ko) | 캐시 메모리 장치, 및 이를 포함하는 프로세서 및 컴퓨터시스템 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141008 Termination date: 20211031 |
|
CF01 | Termination of patent right due to non-payment of annual fee |