CN102591620B - 预解码可变长度指令 - Google Patents
预解码可变长度指令 Download PDFInfo
- Publication number
- CN102591620B CN102591620B CN201110378670.3A CN201110378670A CN102591620B CN 102591620 B CN102591620 B CN 102591620B CN 201110378670 A CN201110378670 A CN 201110378670A CN 102591620 B CN102591620 B CN 102591620B
- Authority
- CN
- China
- Prior art keywords
- instruction
- bit
- cache
- length
- decode
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- 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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- 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
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Disinfection, Sterilisation Or Deodorisation Of Air (AREA)
- Stereo-Broadcasting Methods (AREA)
- Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
Abstract
本发明涉及预解码可变长度指令。可变指令长度处理器中的预解码器指示与指令一起存储在指令高速缓冲存储器中的预解码位中的指令的性质。当定义了与一个长度指令相关联的预解码位的所有编码时,可通过以下方式来指示所述长度的指令的性质:更改所述指令以模拟不同长度的指令;以及在与所述不同长度的指令相关联的所述预解码位中编码所述性质。可如此指示的性质的一个实例是未定义指令。
Description
分案申请的相关信息
本申请为发明名称为“预解码可变长度指令”的原中国发明专利申请的分案申请。原申请的申请号为200780015631.9;原申请的申请日为2007年4月20日;原发明专利申请案的优先权日为2006年5月4日。
技术领域
本发明大体上涉及处理器领域,且确切地说,涉及一种预解码可变长度指令以便识别未定义指令的方法。
背景技术
可变长度指令集架构在此项技术中是已知的。举例来说,当将Thumb(16位)扩展添加到ARM(32位)指令集时,所得的混合可视为可变长度指令集。作为另一实例,可执行Java代码包括一系列字节码,其中每个指令的长度的范围在2与256字节之间。一般来说,可变长度指令集包括具有基础尺寸的指令以及整数倍的基础尺寸的较长指令。
处理器架构及指令集随着时间而进化。确切地说,随着半导体技术的进步,可在硬件中呈现原来需要扩展性软件例行程序来实现的功能性。为了有效地利用高级硬件结构,将新指令添加到指令集。然而,稳定的处理器架构的一个特征是向后兼容性。也就是说,针对一个处理器架构编写的软件应当可在符合所述架构的较老式的处理器上执行,即使所述较老式的处理器并未实施最近的功能性或直接执行最近的指令。因此,常见的处理器架构包含产生异常的“未定义”指令,且在软件中执行与未定义的指令相关联的功能。
用来优化指令解码的常规高性能处理器的一种常见方法是预解码。预解码器是在于指令高速缓冲存储器(I-cache)中存储指令之前检查并部分地解码从存储器获取的指令的逻辑电路。预解码器产生少数预解码位,所述预解码位与每个指令一起存储在I-cache中。一旦从高速缓冲存储器获取指令,管线解码器便可利用预解码位来简化指令解码任务。预解码位可例如识别分支指令、识别可变长度指令架构中的指令的长度等。预解码位也可用来识别未定义的指令。
在实施预解码的可变长度指令集处理器中,少数预解码器位可与最短或基础指令长度相关联。已知的指令高速缓冲存储器实施方案是使此数目的预解码位与每个I-cache存储位置(其每一者对应于基础指令长度)相关联。占据整数倍的I-cache存储位置的较长指令与较大数目的预解码位对应地相关联。因此,可编码成与指令相关联的预解码位的离散性质的数目是基础指令长度的最小值。如果以其它方式定义对基础指令长度的可用预解码位编码,则利用预解码位来识别未定义的基础长度指令将需要增加与基础指令长度相关联的预解码位的数目。此技术又将增加与每个存储位置一起存储在I-cache中的预解码位的数目。由于很少遇到未定义的指令,且比基础长度长的指令具有充裕的预解码位编码空间,所以添加预解码位以识别未定义的基础长度指令可浪费昂贵的I-cache存储空间。
发明内容
根据本文所描述的一个或一个以上实施例,预解码器可在与指令长度相关联的预解码位编码空间完全定义时指示指令的性质。通过更改指令以模拟不同长度的指令,预解码器可利用与不同长度指令相关联的预解码位的可用编码来指示性质。
一个实施例涉及一种在处理器中预解码指令的方法。识别第一指令的性质。更改第一指令以模拟第二指令。产生用于第二指令的识别第一指令的性质的预解码位。
另一实施例涉及一种经操作以从存储器中读取指令的处理器。所述处理器包含存储从存储器中读取的指令以及与每个指令相关联的预解码位的指令高速缓冲存储器。处理器也包含介于存储器与指令高速缓冲存储器之间的预解码器,所述预解码器经操作以识别第一指令的性质;更改第一指令以模拟第二指令;产生用于第二指令的识别第一指令的性质的预解码位;并将用于第二指令的预解码位写入到指令高速缓冲存储器。
附图说明
图1是处理器的功能方框图。
图2是描绘将可变长度指令从存储器映射到指令高速缓冲存储器的功能方框图。
图3是描绘将未定义指令从存储器映射到指令高速缓冲存储器的功能方框图。
图4描绘根据一个实施例的预解码指令的方法。
具体实施方式
图1是处理器10的功能方框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。管线12可以是超标量设计,具有多个并行管线,如12a和12b。每个管线12a、12b包含组织成管级的各种寄存器或锁存器16,以及一个或一个以上算术逻辑单元(ALU)18。管级寄存器或锁存器16及ALU 18可从通用寄存器堆28中的寄存器读取运算数,且/或将结果写入到所述寄存器。
管线12a、12b从指令高速缓冲存储器(I-Ccache或I$)20获取指令,其中由指令侧翻译旁视缓冲器(ITLB)22管理存储器寻址和准许。从数据高速缓冲存储器(D-Cache或D$)24存取数据,其中由主翻译旁视缓冲器(TLB)26管理存储器寻址和准许。在各种实施例中,ITLB 22可包括TLB 26的一部分的副本。或者,ITLB 22和TLB 26可经整合。类似地,在处理器10的各种实施例中,I-cache 20和D-cache 24可经整合或合并。I-cache 20和/或D-cache 24中的未命中导致在存储器接口34的控制下存取主(芯片外)存储器36。
从存储器获取的指令在存储在I-Cache 20中之前在预解码器电路37中经处理。预解码器37部分地解码指令,并附加预解码位,所述预解码位与指令一起存储在I-Cache20中。当从I-Cache 20获取指令时,预解码位提供关于每个指令的信息,管线12a和12b内的解码管级可使用所述信息来更快速且/或更有效地解码指令。举例来说,预解码位可识别可变长度指令集架构中的指令的长度、识别分支指令等。
处理器10可包含输入/输出(I/O)接口38,其控制对各种外围装置40、42的存取。所属领域的技术人员将认识到,处理器10的多种变化形式是可能的。举例来说,处理器10可包含用于I高速缓冲存储器和D高速缓冲存储器中的任一者或两者的二级(L2)高速缓冲存储器。此外,可从特定实施例中省略在处理器10中描绘的功能块中的一者或一者以上。
图2是描绘用于一个说明性的且非限制性的实施方案的通过预解码器37将指令从存储器36映射到I-cache 20中的线的功能方框图。指令A是16位指令(对于此实例是基础指令长度)。一旦从存储器获取指令A,预解码器37便附加两个预解码位PA,将所述预解码位与指令A一起存储在I-cache 20中。指令B是32位指令,其在存储器36中存储为B0和B1。预解码器37附加四个预解码位,其在I-cache 20中存储为PB0和PB1。指令C是16位指令,且与两个预解码位PC一起存储在I-cache 20中。
如图2的表所指示,每一者具有两个预解码位的指令A和C具有四的预解码位编码空间。也就是说,可将四个离散性质-例如指令长度、指令是否为分支等-编码成用于指令A和C的预解码位。具有四个预解码位的指令B具有16的预解码位编码空间。如果架构支持,则48位指令将具有六个预解码位以用于64的编码空间,依此类推。
假设在给定实施方案中定义了用于如A和C的16位指令的全部四个预解码位编码,则可将额外的预解码位添加到I-cache 20中的每个16位存储位置,以利用预解码位来指示未定义的16位指令。这将导致I-cache 20中的每个存储位置具有三个相关联的预解码位。16位指令接着将具有八的预解码编码空间-只将利用其中的五个。另外,32位指令将具有64的预解码编码空间;48位指令将具有512的预解码编码空间。由于这远远超过了关于预解码器可指示的指令的离散性质的数目,从而增加用于16位指令长度的预解码位的数目导致大量浪费昂贵的I-cache 20存储空间。
根据一个实施例,可更改此实例中的未定义的16位指令以模拟32位指令。将所述指令实际上是16位的未定义指令的性质编码成与32位指令相关联的16预解码编码中的一者。在图3中,指令D是16位未定义指令。一旦将指令D写入到I-cache 20,便将其更改以模拟32位指令,包括D0和D1。写入预解码位PD0和PD1,从而指示指令D实际上是16位的未定义指令。
在一个实施例中,其中管线12只需要16位未定义指令的事实,预解码器37可只将预解码位PD0和PD1写入到I-cache 20,放弃指令D。在另一实施例中,例如其中指令的位字段内的数据对于引导软件陷阱是常见或有帮助的,可将指令D写入到D0或D1或这两者,以及将预解码位PD0和PD1写入到I-cache 20。在又一实施例中,预解码器37可将指令D写入到D0或D1中的一者,且可将额外的信息写入到另一16位I-cache 20存储位置,以及写入预解码位PD0和PD1。在任何情况下,正是预解码位PD0和PD1两者在模拟32位指令(使得读取所有预解码位)并指示指令实际上是16位未定义指令。以此方式,预解码器37可指示基础尺寸的未定义指令,而不扩展与基础尺寸指令相关联的预解码位,因此避免了低效的存储器利用。
在图3描绘的实施例中,指令E及F均未经预解码或加载到I-cache 20中。由于线中的指令的有效长度已在存储器36与I-cache 20之间更改,所以高速缓冲存储器线的其余部分无法含有对应存储器空间中的所有剩余指令(例如,E与F两者)。预解码器37可将高速缓冲存储器线的其余部分标记成未使用或无效,或者可简单地在适当的位位置中插入无效或未定义的预解码位。在正常执行中,处理器将在执行未定义指令后便陷入到软件,且将很可能更换高速缓冲存储器线。利用软件异常处置程序来处置未定义指令所引起的陷阱允许软件模拟在处理器(例如处理器10)固定在硅或其它半导体材料中时未曾预期的指令。如果其它代码恰好分支到高速缓冲存储器线中,则其将遇到不正确的预解码且/或不认识既定指令,从而引起高速缓冲存储器线重新加载或可能引起异常。由于假设很少遇到未定义指令,所以因更改的未定义指令模拟不同长度的指令而对受破坏的I-cache线引起的性能影响不是太大的问题。
本文所揭示的方法不限于上述具有基础指令长度的未定义指令。一般来说,对于一般可经由预解码位来指示但其中完全定义了用于相关联的指令长度的预解码位编码空间的任何指令性质,可通过更改指令以模拟不同长度的指令并利用对不同长度指令的可用预解码位编码来指示所述性质。举例来说,假设先前实例中与32位指令相关联的四个预解码位的全部16个编码均被定义,但只定义了与16位指令相关联的两个预解码位的四个编码中的三个或更少的编码。在此情况下,可通过以下方式来指示在32位指令预解码位中未定义的32位指令的特定性质:更改32位指令以模拟16位指令,并在与16位指令相关联的两个预解码位的可用预解码位编码中编码相关性质。在此情况下,丢掉32位指令位字段中的一半,因此正被编码的性质优选是与指令位字段无关的性质(例如指令未被定义的事实,但这并不是可如此指示的唯一性质)。
图4描绘根据一个实施例对指令进行预解码的方法。一旦在I-cache 20中未命中,存储器接口34便从存储器36获取至少第一指令(方框50)。预解码器37检查第一指令,并识别第一指令的性质(方框52),例如第一指令未经定义。预解码器37更改第一指令以模拟第二指令(方框54),例如不同长度的第二指令。预解码器37另外产生用于第二指令的识别第一指令的性质的预解码位(方框56)。也就是说,将与第二指令长度相关联的预解码位的可用编码中的一者分配给第一指令的相关性质。预解码器37将第二指令及相关联的预解码位写入到I-cache 20(方框58)。当管线12从I-cache 20获取第二指令及其预解码位时,解码管级中的逻辑检查预解码位以识别第一指令的性质(方框60),例如第一指令未经定义的事实。管线12接着采取适当行动,例如引起异常以在软件中处置未定义指令。
根据本文所描述的一个或一个以上实施例,预解码器37可在与指令长度相关联的预解码位编码空间被完全定义时指示所述指令的性质。通过更改指令以模拟不同长度的指令,预解码器37可利用与不同长度指令相关联的预解码位的可用编码来指示性质。当在较长指令的预解码位编码中指示较短指令的性质时,将从I-cache线中转移一个或一个以上指令或一指令的多个部分。当在较短指令的预解码位编码中指示较长指令的性质时,丢掉一些指令位字段。因此,一般采用本文所揭示的指令性质指示技术来指示引起异常的指令性质,例如指令未经定义的事实,但并不限于此些情况。
虽然已在本文中相对于本发明的特定特征、方面和实施例描述了本发明,但将明白,在本发明的广泛范围内可能有许多更改、修改和其它实施例,且因此将所有更改、修改和实施例视为属于本发明的范围。因此,应在所有方面将当前实施例理解为说明性而非限制性,且希望其中包含属于所附权利要求书的意义和等效范围内的所有变化。
Claims (1)
1.一种在处理器中执行指令的方法,其包括:
从指令高速缓冲存储器获取具有第一格式的第一指令,所述第一格式包括第一指令部分和第一组预解码位;
将所述获取的第一指令识别为具有第二指令的性质,所述第二指令的格式的长度不同于所述第一格式的长度,所述第二指令的性质由所述第一组预解码位识别;以及
基于所述第二指令的性质执行所述获取的第一指令,其中所述第一指令是所述第二指令的编码;其中,具有所述第一格式的所述第一指令在获取后进行执行时将产生异常;以及
其中,所述第二指令是未定义指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/381,545 US7962725B2 (en) | 2006-05-04 | 2006-05-04 | Pre-decoding variable length instructions |
US11/381,545 | 2006-05-04 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800156319A Division CN101432692B (zh) | 2006-05-04 | 2007-04-20 | 预解码指令方法及其处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102591620A CN102591620A (zh) | 2012-07-18 |
CN102591620B true CN102591620B (zh) | 2015-02-11 |
Family
ID=38335641
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110378670.3A Expired - Fee Related CN102591620B (zh) | 2006-05-04 | 2007-04-20 | 预解码可变长度指令 |
CN2007800156319A Expired - Fee Related CN101432692B (zh) | 2006-05-04 | 2007-04-20 | 预解码指令方法及其处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800156319A Expired - Fee Related CN101432692B (zh) | 2006-05-04 | 2007-04-20 | 预解码指令方法及其处理器 |
Country Status (12)
Country | Link |
---|---|
US (1) | US7962725B2 (zh) |
EP (1) | EP2018609B1 (zh) |
JP (2) | JP5340919B2 (zh) |
KR (1) | KR101019347B1 (zh) |
CN (2) | CN102591620B (zh) |
AT (1) | ATE493702T1 (zh) |
BR (1) | BRPI0711165A2 (zh) |
CA (1) | CA2649675A1 (zh) |
DE (1) | DE602007011596D1 (zh) |
MX (1) | MX2008014048A (zh) |
RU (1) | RU2412464C2 (zh) |
WO (1) | WO2007130798A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769983B2 (en) | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US7962725B2 (en) * | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
US7711927B2 (en) * | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
US7925866B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
US8037286B2 (en) * | 2008-01-23 | 2011-10-11 | Arm Limited | Data processing apparatus and method for instruction pre-decoding |
US8347067B2 (en) * | 2008-01-23 | 2013-01-01 | Arm Limited | Instruction pre-decoding of multiple instruction sets |
US7925867B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Pre-decode checking for pre-decoded instructions that cross cache line boundaries |
US9075622B2 (en) * | 2008-01-23 | 2015-07-07 | Arm Limited | Reducing errors in pre-decode caches |
US7917735B2 (en) * | 2008-01-23 | 2011-03-29 | Arm Limited | Data processing apparatus and method for pre-decoding instructions |
US7747839B2 (en) | 2008-01-23 | 2010-06-29 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
GB2466984B (en) * | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
CN101853148B (zh) * | 2009-05-19 | 2014-04-23 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US10223204B2 (en) * | 2011-12-22 | 2019-03-05 | Intel Corporation | Apparatus and method for detecting and recovering from data fetch errors |
US9354888B2 (en) | 2012-03-28 | 2016-05-31 | International Business Machines Corporation | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
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 |
US20170083341A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
WO2019046716A1 (en) * | 2017-08-31 | 2019-03-07 | MIPS Tech, LLC | CONTROLLED INSTRUMENT PROCESSING BY POINTER SIZE |
CN108415729A (zh) * | 2017-12-29 | 2018-08-17 | 北京智芯微电子科技有限公司 | 一种cpu指令异常的处理方法及装置 |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
US20220100516A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Circuitry and methods for power efficient generation of length markers for a variable length instruction set |
CN114625419B (zh) * | 2022-05-16 | 2022-08-26 | 西安芯瞳半导体技术有限公司 | 一种可变长指令的缓存结构、方法及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423774A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 用于64位寻址的调用选通扩充 |
CN1450450A (zh) * | 2003-05-15 | 2003-10-22 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4013A (en) * | 1845-04-26 | Machine fqe making match-splihts and arranging them in dipping | ||
US5026A (en) * | 1847-03-20 | Cut-off valve | ||
JPH03168836A (ja) * | 1989-11-29 | 1991-07-22 | Toshiba Corp | エミュレーションプロセッサ |
US5619408A (en) | 1995-02-10 | 1997-04-08 | International Business Machines Corporation | Method and system for recoding noneffective instructions within a data processing system |
BR9714600A (pt) | 1997-03-21 | 2002-09-10 | Canal Plus Sa | Extração de seções de dados de um fluxo de dados transmitidos |
US6269384B1 (en) | 1998-03-27 | 2001-07-31 | Advanced Micro Devices, Inc. | Method and apparatus for rounding and normalizing results within a multiplier |
JP3867427B2 (ja) * | 1999-01-11 | 2007-01-10 | ソニー株式会社 | プロセッサ装置および集積回路 |
JP2001142692A (ja) | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US6804799B2 (en) | 2001-06-26 | 2004-10-12 | Advanced Micro Devices, Inc. | Using type bits to track storage of ECC and predecode bits in a level two cache |
EP1450252B1 (en) * | 2001-11-29 | 2010-08-18 | Fujitsu Limited | Central processing unit, method, and operation program for managing a plurality of operation modes |
US6816962B2 (en) * | 2002-02-25 | 2004-11-09 | International Business Machines Corporation | Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions |
US6968430B1 (en) * | 2002-10-22 | 2005-11-22 | Lsi Logic Corporation | Circuit and method for improving instruction fetch time from a cache memory device |
US6952754B2 (en) * | 2003-01-03 | 2005-10-04 | Intel Corporation | Predecode apparatus, systems, and methods |
US7962725B2 (en) * | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
-
2006
- 2006-05-04 US US11/381,545 patent/US7962725B2/en active Active
-
2007
- 2007-04-20 DE DE602007011596T patent/DE602007011596D1/de active Active
- 2007-04-20 BR BRPI0711165-7A patent/BRPI0711165A2/pt not_active IP Right Cessation
- 2007-04-20 WO PCT/US2007/067057 patent/WO2007130798A1/en active Application Filing
- 2007-04-20 MX MX2008014048A patent/MX2008014048A/es not_active Application Discontinuation
- 2007-04-20 EP EP07760992A patent/EP2018609B1/en not_active Not-in-force
- 2007-04-20 RU RU2008147711/08A patent/RU2412464C2/ru not_active IP Right Cessation
- 2007-04-20 KR KR1020087029666A patent/KR101019347B1/ko not_active IP Right Cessation
- 2007-04-20 JP JP2009509934A patent/JP5340919B2/ja not_active Expired - Fee Related
- 2007-04-20 CN CN201110378670.3A patent/CN102591620B/zh not_active Expired - Fee Related
- 2007-04-20 AT AT07760992T patent/ATE493702T1/de not_active IP Right Cessation
- 2007-04-20 CA CA002649675A patent/CA2649675A1/en not_active Abandoned
- 2007-04-20 CN CN2007800156319A patent/CN101432692B/zh not_active Expired - Fee Related
-
2012
- 2012-05-15 JP JP2012111714A patent/JP5653963B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1423774A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 用于64位寻址的调用选通扩充 |
CN1450450A (zh) * | 2003-05-15 | 2003-10-22 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
Also Published As
Publication number | Publication date |
---|---|
JP5653963B2 (ja) | 2015-01-14 |
US20070260854A1 (en) | 2007-11-08 |
JP2012185843A (ja) | 2012-09-27 |
WO2007130798A1 (en) | 2007-11-15 |
EP2018609A1 (en) | 2009-01-28 |
US7962725B2 (en) | 2011-06-14 |
RU2412464C2 (ru) | 2011-02-20 |
DE602007011596D1 (de) | 2011-02-10 |
CN102591620A (zh) | 2012-07-18 |
JP2009535744A (ja) | 2009-10-01 |
RU2008147711A (ru) | 2010-06-10 |
KR101019347B1 (ko) | 2011-03-07 |
CA2649675A1 (en) | 2007-11-15 |
KR20090007629A (ko) | 2009-01-19 |
JP5340919B2 (ja) | 2013-11-13 |
EP2018609B1 (en) | 2010-12-29 |
MX2008014048A (es) | 2008-11-14 |
CN101432692A (zh) | 2009-05-13 |
BRPI0711165A2 (pt) | 2011-08-23 |
ATE493702T1 (de) | 2011-01-15 |
CN101432692B (zh) | 2012-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591620B (zh) | 预解码可变长度指令 | |
JP5313228B2 (ja) | 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア | |
CN101627366B (zh) | 预加载指令的方法及装置 | |
JP5231018B2 (ja) | ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制 | |
KR101005633B1 (ko) | 일정한 개수의 가변 길이 명령을 가진 명령 캐시 | |
US6816962B2 (en) | Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions |
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: 20150211 Termination date: 20210420 |
|
CF01 | Termination of patent right due to non-payment of annual fee |