CN104216682A - 微处理器以及选择性解压缩微程序码的相关方法 - Google Patents

微处理器以及选择性解压缩微程序码的相关方法 Download PDF

Info

Publication number
CN104216682A
CN104216682A CN201410447345.1A CN201410447345A CN104216682A CN 104216682 A CN104216682 A CN 104216682A CN 201410447345 A CN201410447345 A CN 201410447345A CN 104216682 A CN104216682 A CN 104216682A
Authority
CN
China
Prior art keywords
mentioned
microprogram
instruction
microprogram code
memory
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
CN201410447345.1A
Other languages
English (en)
Other versions
CN104216682B (zh
Inventor
G·葛兰·亨利
泰瑞·派克斯
布兰特·比恩
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.)
Via Technologies Inc
Original Assignee
Via Technologies 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
Priority claimed from US14/088,565 external-priority patent/US9361097B2/en
Priority claimed from US14/088,620 external-priority patent/US9372696B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CN201611196464.XA priority Critical patent/CN107092464B/zh
Priority to CN201611196462.0A priority patent/CN107085513B/zh
Publication of CN104216682A publication Critical patent/CN104216682A/zh
Application granted granted Critical
Publication of CN104216682B publication Critical patent/CN104216682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供一种微处理器以及选择性解压缩微程序码的相关方法。该微处理器包括:一或多个存储器以及解压缩单元。一或多个存储器用以持有微程序码指令,其中至少一部分的微程序码指令被压缩。解压缩单元用以在被压缩微程序码指令自一或多个存储器存取之后且于被执行之前,由解压缩单元对被压缩微程序码指令进行解压缩操作。本发明能够降低微处理器的复杂度、减小微处理器的体积。

Description

微处理器以及选择性解压缩微程序码的相关方法
技术领域
本发明有关于选择性压缩以及解压缩微程序码指令。
背景技术
现代先进的微处理器通常包括执行复杂及/或微处理器指令集架构的不常执行的指令微程序码。以微程序码实现指令集架构一些指令的好处为可降低微处理器其他功能单元(如执行单元)的复杂度。当指令集架构的指令数目以及复杂度增加时也需要微程序码,基于这项需求,微处理器会额外以非易失性存储器(如只读存储器(ROM))来储存微程序码。然而,增加存储器会消耗微处理器的实体资源,而这个问题将随着多核微处理器的核数目增加而加剧,因其中每一个核皆具有存储器用以储存微程序码。
发明内容
本发明提出一种微处理器。上述微处理器包括一或多个存储器,每一上述的一或多个存储器用以持有多个微程序码指令。至少一第一上述存储器用以提供多个压缩微程序码指令的M位宽微程序码字组,至少一第二上述存储器用以提供多个未压缩微程序码指令的N位宽微程序码字组,M以及N为大于零的整数,且N大于M。微处理器也包括一解压缩单元,在上述压缩微程序码指令自至少一上述第一存储器存取之后以及在上述压缩微程序码指令被执行之前,上述解压缩单元用以解压缩上述压缩微程序码指令。
本发明还提出一种选择性解压缩微程序码的方法。上述选择性解压缩微程序码的方法包括接收来自一存储器的一第一N位宽微程序码字组。上述选择性解压缩微程序码的方法也包括,判断上述第一N位宽微程序码字组的一既定部分是否为一既定数值。上述选择性解压缩微程序码的方法也包括,若上述既定部分并非上述既定数值,解压缩上述第一N位宽微程序码字组而产生一M位宽微程序码字组,其中M及N为大于零的整数,且M大于N。上述选择性解压缩微程序码的方法也包括,若上述既定部分为上述既定数值,接收来自上述存储器的一第二N位宽微程序码字组,并组合部分的上述第一N位宽微程序码字组以及上述第二N位宽微程序码字组而产生上述M位宽微程序码字组。
本发明还提出一种产生选择性压缩微程序码的方法。上述产生选择性压缩微程序码的方法包括接收一来源码,上述来源码包括多个微程序码组合语言指令,其中部分的上述微程序码组合语言指令的每一个皆以上述来源码的一指示所标示。产生选择性压缩微程序码的方法也包括,对于上述微程序码组合语言指令的每一个,若并非以上述指示所标示,则产生上述微程序码组合语言指令的一单一字组压缩二进制表示式,若由上述指示所标示,则产生上述微程序码组合语言指令的一多字组未压缩二进制表示式。
本发明还提出一种产生描述方法,适用于产生一解压缩微程序码装置的一描述。上述产生描述方法包括,接收一来源码,其中上述来源码包括多个微程序码组合逻辑语言指令。上述产生描述方法也包括,对于上述微程序码组合逻辑语言指令的每一个,产生一未压缩二进制表示式。上述产生描述方法也包括,对于上述微程序码组合语言指令的每一唯一指令,产生上述唯一指令的对应的上述未压缩二进制表示式的部分对应至一压缩二进制表示式的一对应关系。
本发明还提出一种微处理器。上述微处理器包括多个存储器,上述存储器的每一个用以持有多个微程序码指令。上述存储器的至少一第一存储器用以提供多个压缩微程序码指令的多个M位宽微程序码字组,并且上述存储器的至少一第二存储器用以提供多个未压缩微程序码指令的多个N位宽微程序码字组,其中M以及N为大于零的整数,且N大于M。上述微处理器也包括一解压缩单元,在上述压缩微程序码指令自至少上述第一存储器存取之后且于执行上述压缩微程序码指令之前,上述解压缩单元用以解压缩上述压缩微程序码指令。
本发明还提出一种选择性解压缩微程序码的方法,上述选择性解压缩微程序码的方法适用于解压缩具有多个存储器的一微处理器中的多个微程序码指令,上述存储器的每一个用以持有上述微程序码指令。上述选择性解压缩微程序码的方法包括,自上述存储器的至少一第一存储器存取上述压缩微程序码指令的多个M位宽微程序码字组。上述选择性解压缩微程序码的方法也包括,自上述存储器的至少一第二存储器存取多个未压缩微程序码指令的多个N位宽微程序码字组,其中M以及N是大于零的整数且N大于M。上述选择性解压缩微程序码的方法也包括,解压缩自上述第一存储器所存取的上述压缩微程序码指令。上述选择性解压缩微程序码的方法也包括,传送上述未压缩微程序指令而不需解压缩。
本发明还提出一种计算机程序产品,编程于至少一非暂态计算机可使用介质并与一计算装置一并使用。上述计算机程序产品包括,一计算机可用程序码体现于上述非暂态计算机可使用介质以指定一微处理器。上述计算机可用程序码包括,一第一程序码,指定多个存储器,每一上述存储器用以持有多个微程序码指令,其中上述存储器的至少一第一存储器用以提供多个压缩微程序码指令的多个M位宽微程序码字组。上述存储器的至少一第二存储器用以提供多个未压缩微程序码指令的多个N位宽微程序码字组,其中M以及N为大于零的整数且N大于M。上述计算机可用程序码也包括,一第二程序码,指定一解压缩单元,在上述压缩微程序码指令自上述第一存储器被存取后以及上述压缩微程序码指令被执行前,上述解压缩单元用以解压缩上述压缩微程序码指令。
本发明能够降低微处理器的复杂度、减小微处理器的体积。
附图说明
图1显示根据本发明一实施例所述的多核微处理器的方块图。
图2显示根据本发明图1实施例所述的处理核的详细方块图。
图3显示根据本发明图2实施例所述的解压缩单元的详细方块图。
图4显示根据本发明一实施例所述的由组合程序选择性压缩微程序码指令的流程图。
图5显示根据本发明一实施例所述的建立选择性压缩微程序码的流程图。
图6显示根据本发明一实施例所述的由组合程序组合微程序码的流程图。
图7显示根据本发明一实施例所述图2的复杂指令转译器(尤其是图3的解压缩单元)的动作流程图。
图8-图13显示根据本发明另一实施例所述的具有微程序码存储器的微处理器持有不同组合的压缩与解压缩的微程序码指令的方块图。
其中,附图中符号的简单说明如下:
100    微处理器
102    处理核
104    核微程序码只读存储器
106    仲裁逻辑
108    非核只读存储器
114    非核微程序码修补随机存取存储器
202    指令快取
204    简单指令转译器
206    暂存器别名表
208    保留站
212    执行单元
214    引退单元
216    指令存取单元
218    结构程序计数器
222    第一多工器
224    目标地址
226    微指令
232    非结构微程序码程序计数器
235    指令间接暂存器
236    微程序
237    微转译器
239    解压缩单元
242    结构指令
244    第一微指令
245    选择控制输入
246    第二微指令
247    第一微程序码指令
248    选择控制输入
251    第二微程序码指令
252    微程序码地址
253    未压缩微程序码指令
254    非结构微程序码存取地址
255    微指令信息
262    存储器子系统
264    暂存器
292    第二多工器
294    指令转译器
296    复杂指令转译器
306    修补内容可寻址存储器
308    修补地址
353    未压缩微程序码指令
355    38位结果
392    三端输入多工器
394    解压缩器
396    控制逻辑
398    缓冲器
402    第一微程序码组合语言指令
412    第一逃离指针
414    第二微程序码组合语言指令
432    第二逃离指针
434    下16位
436    上6位
438    上22位
1299   核修补随机存取存储器
502    来源码
504    组合语言
506    选择性压缩二进制微程序码
508    所有微程序码指令的列表
512    压缩程序
514    压缩表
516    解压缩描述
518    逻辑产生程序(ESPRESSO)
524    解压缩器暂存器传递语言文件
602~612、702~714  步骤。
具体实施方式
在此所述的微处理器,大多但非全部的微程序码指令压缩且维持于微程序码存储器中。微处理器包括一解压缩单元,用以选择性地对选择的压缩微程序码指令解压缩,例如图2的解压缩单元239。根据本发明的一实施例,维持于存储器的微程序码指令并未压缩,因而较存储器所维持的字节宽度更长。在此情况下,微程序码指令分为两个部分,并分别储存于存储器不同的两个字组中。在这些状况下,一既定数值(在此称为“跳出(escape)指针”)放置(例如,通过微程序码组合程序)于两字组序列第一字组的一既定部分。当解压缩单元侦测跳出指针存在于由存储器所读取的第一字组时,解压缩单元结合两字组的适当部分而产生未压缩微程序码指令。此方式有利于提供大多数维持于存储器中的微程序码指令能够被压缩,并使其宽度较不包括于选择性压缩机制的实现方式为短。
再者,许多实施例描述具有多个微程序码存储器的微处理器,至少一微程序码存储器具有压缩的微程序码指令的宽度以提供压缩微程序码指令,至少一微程序码存储器为具有非压缩微程序码指令的宽度以提供非压缩微程序码指令。在此详述压缩宽度以及非压缩宽度的核、非核以及修补微程序码存储器的各种组合。
请参考图1,图1显示根据本发明一实施例所述的多核微处理器100的方块图。微处理器100的实体位于一集成电路上,微处理器100包括许多处理核100、由许多处理核102所共用的非核只读存储器(ROM)108、由许多处理核102所共用的非核微程序码修补随机存取存储器(RAM)114、以及耦接处理核102至非核只读存储器108和非核微程序码修补随机存取存储器114的仲裁逻辑106(也称为控制逻辑)。每一处理核102包括对应的核微程序码只读存储器104,此对应的核微程序码只读存储器104并不与其他处理核102分享,而是专属于各自的处理核102。每一处理核102经由对应的总线112耦接至仲裁逻辑106。非核只读存储器108、非核微程序码修补随机存取存储器114、以及核微程序码只读存储器104皆为持有微程序码指令。
微处理器100包括称之为非核的部分。该非核部分为微处理器100的一部分但不属于任何处理核102的部分。非核只读存储器108以及非核微程序码修补随机存取存储器114位于微处理器100的非核部分。在一实施例中,处理核102是单一设计并重复复制。图1的实施例中显示四个处理核102,而其他实施例则具有不同数目的处理核102。仲裁逻辑106也安置于微处理器100的非核部分,当多个处理核102要求存取非核只读存储器108或非核微程序码修补随机存取存储器114时,由仲裁逻辑106执行仲裁决定。
非核只读存储器108提供某数量的字组(称为“J”)来储存微程序码指令,并可被所有处理核102所存取。每一核微程序码只读存储器104提供某数量的字组(称为“K”)来储存微程序码指令,并只能被对应的处理核102所存取。非核只读存储器108的J个字组与对应的核微程序码只读存储器104的K个字组,位于不同于处理核的微程序码存储器地址空间的地址空间上。总括来说,对于每一处理核,其对应的核微程序码只读存储器104与非核只读存储器108,提供J+K字组的储存空间给可被处理核102所存取的微程序码指令。
在一实施例中,非核只读存储器108具有J个可定址的存储器位置,每一个可定址的存储器位置皆为压缩微程序码指令的宽度。在一实施例中,每一非核只读存储器108具有K个可定址的存储器位置,每一个可定址的存储器位置皆为压缩微程序码指令的宽度。在一实施例中,压缩微程序码指定的宽度为28位,而非压缩或解压缩的微程序码指令的宽度为38位。
根据本发明的一实施例,非核只读存储器108包括为所有处理核102共用的单一读取端口,以及根据仲裁演算法用以授权处理核102使用读取端口的仲裁逻辑106。根据本发明的一实施例,若在一既定要求周期内仅有一处理核102要求存取非核只读存储器108时,则仲裁逻辑106允许此处理核102的要求;若在一既定要求周期内有多个处理核102要求存取非核只读存储器108时,则仲裁逻辑106依轮流法(round-robin)的顺序准予存取,但其他仲裁演算法亦可运用在本发明中。其他实施例中,可使非核只读存储器108对于每一处理核102均包括一读取端口。然而,应注意的是,当非核只读存储器108包括更多的读取端口时将增加更大的晶粒面积,因此与晶粒面积相关的技术功效就会降低。
利用非核只读存储器108的优点为,当从非核只读存储器108存取微程序码指令时,其可能以增加延迟时间的方式,作为降低微处理器100面积的代价。延迟时间的增加会造成每一处理核102的微程序码单元至非核只读存储器108之间更大的距离,也就是传送延迟会因额外的距离而增加,因而需要额外的管线级以及相关的额外时脉周期。此外,延迟时间的增加亦可归咎于因非核只读存储器108共用资源且必须分配给每个处理核102,并当多个处理核102要求存取非核只读存储器108时所造成的现象。再者,非核只读存储器108的共享本质可能导致变动的存取延迟时间,不像核微程序码只读存储器104具有固定的延迟时间。然而,在一些实施例中,增加及/或变动的延迟时间作为降低晶粒面积的代价。有利的是,非核只读存储器108的大小可利用在实施例所述的选择性微程序码压缩而进一步降低。
参考图2,图2显示根据本发明图1实施例所述的处理核102的详细方块图。处理核102包括一管线级,该管线级包括许多功能单元。在一实施例中,处理核102为一超纯量(superscalar)、非循序执行(out-of-order execution)、管线化数据的处理核。处理核102包括指令存取单元216、其再耦接至指令快取202、其再耦接至指令转译器294、其再耦接至暂存器别名表(RAT)206、其再耦接至保留站208、其再耦接至执行单元212、其再耦接至引退单元214。执行单元212自暂存器264(结构的或非结构的)以及存储器子系统262接收运算元。引退单元214引退微指令结果至暂存器264以及存储器子系统262。指令转译器294经由图1的总线112,耦接至仲裁逻辑106。存取单元216包括处理核102的结构程序计数器218,当引退单元214引退指令时,引退单元214更新结构程序计数器218。存取单元216提供结构指令存取地址至指令快取202。根据结构程序计数器218,存取单元216产生结构存取地址。此外,执行单元212可执行分支指令,且提供分支目标地址至存取单元216,用以产生结构存取地址。最后,存取单元216的分支预测器(图中并未显示)可提供预测分支目标地址,用以产生结构存取地址。结构程序计数器218与由指令转译器294所维持的指令非结构微程序码程序计数器224不同,并且由存取单元216所产生而传送至指令快取202的结构存取地址,与由存取单元216的微程序236(也称为控制逻辑)所产生的非结构微程序码存取地址254亦不同,这些将在以下详述。
指令快取202所快取的结构指令242,也称为微指令或ISA指令,由微处理器100(例如:x86、ARM、SPARC等等)的指令集架构所定义。指令转译器294翻译结构指令242成为处理核102微架构的微指令226,指令转译器294通常具有精简指令集(RISC)体系相关的特征。
指令转译器294以程序顺序提供微指令至暂存器别名表206。暂存器别名表206在引退单元214的重新排列缓冲器中,以程序顺序分配微指令的项目。暂存器别名表206执行暂存器264的重新命名。暂存器别名表206提供微指令至保留站208,当每一微指令的来源运算元可获得,且执行单元212能够执行该微指令时,微指令从保留站208被发送至执行单元212且以非循序方式来执行。引退单元214通过将执行单元212所执行微指令的结果,以程序顺序引退指令至处理核102的架构状态。执行单元212可包括载入单元、储存单元、整数单元、浮点数单元、分支单元、单一指令多重数据流计算机模组(Singleinstruction,multiple data,SIMD)单元等等。载入单元自第一阶(level-1,L1)数据快取中读出数据,储存单元将数据写入至第一阶数据快取。第二阶(level-2,L2)数据快取可作为第一阶数据快取以及指令快取202的备用储存装置。
指令转译器294自图2的指令快取202接收结构指令242的多个区块。结构指令242也称为微指令242或ISA指令242。指令转译器294转译结构指令242为提供至暂存器别名表206的实现微指令226。指令转译器294包括简单指令转译器(SIT)204、复杂指令转译器(CIT)296以及第二多工器292。简单指令转译器204输出实现第一微指令244以及微程序码地址252。复杂指令转译器296,也称为微程序码单元296,接收微程序码地址252,并提供实现第二微指令246。第二多工器292以一输入端自简单指令转译器204接收第一微指令244,并以另一输入端自复杂指令转译器296接收第二微指令246,且根据选择控制输入248提供实现微指令226至图2的执行单元212。
复杂指令转译器296包括微程序236、图1的核微程序码只读存储器104、指令间接暂存器(IIR)235、第一多工器222、解压缩单元239以及微转译器237。微程序236接收微程序码地址252,且维持非结构微程序码程序计数器(micro-PC)232。核微程序码只读存储器104接收根据非结构微程序码程序计数器232所存取的地址254。此外,非核只读存储器108也经由总线112,接收非结构微程序码存取地址254。第一多工器222的第一输入端接收来自非共用的核微程序码只读存储器104的微程序指令251,第二输入端则接收来自共用的非核只读存储器108的微程序码指令249(经由总线112),并根据由微程序236所产生的选择控制输入245而输出第一微程序码指令247。解压缩单元239接收来自第一多工器222的第一微程序码指令247,并且选择性地解压缩第一微程序码指令247,以产生未压缩微程序码指令253。微转译器237转译由解压缩单元239接收的未压缩微程序码指令253,以产生由复杂指令转译器296所输出的实现第二微指令246。由简单指令转译器204所产生的实现第一微指令244以及由复杂指令转译器296所产生的实现第二微指令246,皆为微处理器100微架构的微指令集的微指令226,并可由执行单元212管线执行。
第二多工器292由选择控制输入248所控制。通常第二多工器292选择来自简单指令转译器204的第一微指令244;然而,当简单指令转译器204遇到复杂结构指令242并转移控制权至(或经由设陷(traps)移转至)复杂指令转译器296时,简单指令转译器204控制选择控制输入248,而使得第二多工器292选择来自复杂指令转译器296的第二微指令246。当暂存器别名表206遭遇具有特殊位组的微指令226,以指出其是在顺序执行复杂结构指令242过程中最后的微指令226时(在此表示为“.T”位),暂存器别名表206控制选择控制输入248而使得第二多工器292回到选择来自简单指令转译器204的第一微指令244。此外,当引退单元214准备好引退微指令226但其状态指示此微指令226已造成一例外情况时,引退单元214控制选择控制输入248而使得第二多工器292选择来自复杂指令转译器296的第二微指令246。
简单指令转译器204接收结构指令242且将其解码,以决定结构指令242为简单微指令或复杂微指令。简单结构指令242是简单指令转译器204可为其发出所有实现微指令226以实现结构指令242的指令,亦即复杂指令转译器296不为简单结构指令242提供任何实现微指令。相反的,复杂结构指令242要求复杂指令转译器296提供若非全部、也是至少一部分的实现微指令226。在一实施例中,对结构指令242的子集合而言,简单指令转译器204发出实现结构指令242的第一部分微指令244以实现结构指令242,然后转移控制权至复杂指令转译器296,最后发出剩下微指令246来实现结构指令242。受控的第二多工器292首先将来自简单指令转译器204的实现微指令244转换成微指令226并提供至执行单元212,其次将来自复杂指令转译器296的实现微指令246转换成为微指令226并提供至执行单元212。简单执行转译器204知道由复杂指令转译器294所采用的各种微程序码程序的起始微程序码地址并用来产生各种复杂结构指令242的实现微指令226,并当简单指令转译器204解码一复杂结构指令242时,提供相关的微程序码地址252至复杂指令转译器296的非结构微程序码程序计数器232。简单指令转译器204发出的所有第一微指令244是被相对高比例执行的结构指令242,特别是结构指令242倾向由ISA机器语言程序以频繁的方式所执行,而仅有相对小比例需要复杂指令转译器296提供第二微指令246。在一实施例中,简单指令转译器204是利用众所周知的合成工具所合成的布林逻辑门方块。
复杂指令转译器296输出实现第二微指令246序列至第二多工器292。核微程序码只读存储器104或非核只读存储器108,储存微程序码程序的选择性压缩第二微程序码指令251以及选择性压缩微程序码指令249。核微程序码只读存储器104/非核只读存储器108输出选择性压缩第二微程序码指令251/选择性压缩微程序码指令249以响应非结构微程序码存取地址254,其中非结构微程序码存取地址254储存于非结构微程序码程序计数器232。通常,非结构微程序码程序计数器232自简单指令转译器204接收微程序码地址252的初始值,以响应简单指令转译器204所解码的复杂结构指令242。在其他情况下,比如响应一重置或例外时,非结构微程序码程序计数器232分别接收重置微程序码程序地址或适当的微程序码例外处理地址。一般来说,微程序236通过微程序码指令的大小(根据本发明的一实施例,微程序码指令的大小为核微程序码只读存储器104或非核只读存储器108中字组的大小)来递增非结构微程序码程序计数器232,用以依序通过微程序码程序。另外,微程序236依据由微转译器237所产生的目标地址224来更新非结构微程序码程序计数器232,以响应解码控制类型微程序码指令(例如分支指令);或响应控制类型微指令226的执行而由执行单元212所产生的目标地址来更新非结构微程序码程序计数器232;或是以位于核微程序码只读存储器104或非核只读存储器108的非序列位置来更新非结构微程序码程序计数器232以启动分支。核微程序码只读存储器104以及非核只读存储器108被制造于与微处理器100相同的半导体晶粒上。
除了实现复杂结构指令242的部分的简单结构指令242的第一微指令244,简单指令转译器204也产生微指令信息255,微指令信息255写入至指令间接暂存器(IIR)235。储存于指令间接暂存器235的微指令信息255包括有关结构指令242被转译的信息,例如辨别由结构指令242所指定的来源以及目标暂存器以及结构指令242的格式,诸如结构指令242是否操作于存储器的运算元或于微处理器100的一架构暂存器264。这样允许微程序码程序成为通用,也就是每一不同的来源及/或目标架构暂存器264不需要具有不同微程序码程序。特别的是,简单指令转译器204知道暂存器264,并在转译由结构指令242所提供的暂存器信息后,经由微指令信息255提供至暂存器264的适当暂存器中。微指令信息255也包括位移域、即时域、常数域、对于每一来源运算元以及微指令226本身的重新命名信息、指出实现结构指令242的微指令226序列的第一以及最后一个微指令的信息、以及由简单指令转译器204解码结构指令242时所收集的有用信息的其他位。
微转译器237接收来自解压缩单元239的未压缩微程序码指令253以及指令间接暂存器235的内容,并产生实现第二微指令246做响应。微转译器237根据指令间接暂存器235所接收的信息,例如根据结构指令242的格式以及由其指定的来源及/或目标架构暂存器264的组合,来转译某些未压缩微程序码指令253至微指令246的不同的序列。在一些状况下,大部分的微指令信息255与未压缩微程序码指令253做合并以产生实现第二微指令246。在一实施例中,每一未压缩微程序码指令253为38位宽,且每一第二微指令246大约为200位宽。在一实施例中,微转译器237能够自未压缩微程序码指令253,产生最多三个第二微指令246。微转译器237包括产生实现第二微指令246的布林逻辑门。
由于简单指令转译器204产生微指令信息255,故核微程序码只读存储器104与非核只读存储器108不需要储存由指令间接暂存器235所提供的微指令信息255,因此微转译器237所提供的一个优点为可减少核微程序码只读存储器104与非核只读存储器108的大小。再者,微程序码程序可包括较少的条件分支指令,因微程序码程序不需要包括针对每一不同微指令格式、以及针对每一来源及/或目标架构暂存器264的组合的个别程序。例如,若复杂结构指令242为存储器型式,简单指令转译器204可产生第一微指令244为开端,其包括第一微指令244以载入来自存储器的来源运算元而进入暂时暂存器264,而微转译器237可产生第二微指令246以从暂时暂存器将结果储存于存储器;若复杂结构指令242为暂存器格式,作为开端的第一微指令244可从结构指令242指定的来源暂存器移动来源运算元至暂时暂存器264,而微转译器237可产生第二微指令246以移动来自暂时暂存器的结果至由指令间接暂存器235所指定的架构目标暂存器264。在一实施例中,微转译器237在许多方面与申请日为2010年4月23日的美国专利案US 12/766,244中所述的微转译器237相似,该美国专利请求优先权至2009年8月14日的美国临时申请案号US61/234,008,其在2011年2月17号公开为美国公开号US2011/0040953的专利,每一个在此通过引用将其整体并入本文,并供各方面说明之用。
在另一实施例中,指令转译器294不包括微转译器237,而自核微程序码只读存储器104以及非核只读存储器108所存取的第二微程序码指令251以及微程序码指令249则在选择性解压缩的后,成为可由执行单元212执行的微指令。
应注意的是,非结构微程序码程序计数器232与结构程序计数器218不同;也就是,非结构微程序码程序计数器232不能维持结构指令242的地址,而维持于非结构微程序码程序计数器232的地址并不在系统存储器地址空间之内。
如上所述,第一微程序码指令247为储存于微处理器100的一或多个的核微程序码只读存储器104以及非核只读存储器108的非结构指令,且第一微程序码指令247是处理核102根据储存于非结构微程序码程序计数器232的非结构微程序码存取地址254所存取与使用,进而实现微处理器100的指令及结构指令242。未压缩微程序码指令253由微转译器237转译成第二微指令246而由执行单元212执行,或在本发明的另一实施例中,未压缩微程序码指令253直接由执行单元212执行(在此为第二微指令246)。未压缩微程序码指令253为非结构指令的意思为其并非微处理器100的指令集(ISA)结构的指令,而是根据与结构指令集不同的指令集所编码的。非结构微程序码程序计数器232并非由微处理器100的指令集结构所定义,且与结构定义程序计数器218有所不同。微程序码用以实现以下所述微处理器的指令集结构的某些或所有指令。响应于解码微程序码实现结构指令242,微处理器100,特别是简单指令转译器294,将转移控制权至与结构指令242相关的微程序码程序。微程序码程序包括微程序码指令。执行单元212执行未压缩微程序码指令253,或根据图2的实施例,未压缩微程序码指令253还转译成第二微指令246而被执行单元212所执行。由执行单元212执行未压缩微程序码指令253(或由未压缩微程序码指令253转译的第二微指令246)的结果是由结构指令242所定义的结果。因此,由执行单元212集体执行的关于结构指令242的微程序码程序(或由执行单元212集体执行的微程序码程序指令所转译的第二微指令246)来执行结构指令242;也就是由执行单元212集体执行的实现未压缩微程序码指令253(或由执行单元212集体执行的未压缩微程序码指令253转译的第二微指令246),执行结构指令242所指定的动作于结构指令242所指定的输入值,而产生结构指令242所定义的结果。此外,当为了调整微处理器而重置微处理器时,微程序码指令可被执行(或转译成被执行的微指令)。
根据本发明的一实施例,图1的仲裁逻辑106包括要求伫列(图中并未显示),其持有接收自处理核102并对非核只读存储器108或非核微程序码修补随机存取存储器114进行存取的要求。根据本发明的一实施例,每一介于仲裁逻辑106以及处理核102的总线112包括要求部分以及响应部分。关于要求部分,处理核102指定所要求的微程序指令字组的非结构微程序码存取地址254。关于响应部分,仲裁逻辑106提供微程序码指令字组、地址、核编号以及有效指针。微程序码指令字组、地址以及核编号仅于有效指针指示有效时才为有效。核编号指定仲裁逻辑106提供一响应至先前要求存取非核只读存储器108或非核微程序码修补随机存取存储器114的处理核102。地址指定由非核只读存储器108或非核微程序码修补随机存取存储器114所存取的微程序码指令字组的地址。根据本发明的一实施例,仲裁逻辑106于总线112设置延迟(Stall)信号至处理核102,用以指出仲裁逻辑106不能接收更多来自处理核102要求存取非核只读存储器108的请求。只要能够再次接收请求,仲裁逻辑106取消设置延迟信号。根据本发明的一实施例,若暂存器别名表206设置延迟信号至指令转译器294以指示无法接收更多的微指令226时,则指令转译器294清除任何正在进行的存取非核只读存储器108的动作。只要暂存器别名表取消设置延迟信号,微程序236会在传送至暂存器别名表206的最后微指令226的地址后的下一地址开始存取微程序码指令。根据本发明的另一实施例,指令转译器294储存正在存取非核只读存储器108或非核微程序码修补随机存取存储器114的状态,以便能避免重新存取相关的正在存取的微程序码指令。
非核只读存储器108的存取延迟大于对每一核微程序码只读存储器104的存取延迟。根据本发明的一实施例,核微程序码只读存储器104具有三个周期的存取延迟,并且非核只读存储器108的存取延迟在实施例中是可变的,其中其读取端口与多个处理核102相共用。
参考图3的方块图,其更详细显示根据本发明图2实施例所述的解压缩单元239,同样显示于图3的是修补内容可寻址存储器(CAM)306。当非结构微程序码存取地址254符合修补内容可寻址存储器306中项目之一的内容时,持有修补地址308的可寻址存储器306会将修补地址308从可寻址存储器306输出至微程序236,以响应非结构微程序码存取地址254。这种情况下,微程序236输出修补地址308作为非结构微程序码存取地址254而不是下一序列存取地址(或目标地址224),以响应非核微程序码修补随机存取存储器114在总线112上输出修补微程序码指令249。这样将引发从非核微程序码修补随机存取存储器114撷取修补微程序码指令249,而不是分别从非核只读存储器108或核微程序码只读存储器104撷取不想要的微程序码指令249或第二微程序码指令251。另一种做法是将可寻址存储器306以及非核微程序码修补随机存取存储器114的内容在响应包括系统软件的结构指令时加以载入,这些软件可以是基本输入输出系统(BIOS)或运作于微处理器100的操作系统。解压缩单元239包括解压缩器394、缓冲器398、三端输入多工器392以及控制逻辑396。
解压缩器394自图2的第一多工器222接收压缩的第一微程序码指令247,并解压缩此压缩的第一微程序码指令247而成未压缩微程序码指令353,且提供至三端输入多工器392的第一输入端。根据本发明的一实施例,解压缩器394包括由暂存器传递语言(RTL)码(如硬件描述(Verilog)码)所合成的可程序逻辑阵列(PLA),并由图6的可程序逻辑阵列产生器616自动产生。解压缩器394对压缩的第一微程序码指令247解压缩的方式的实施例,将于下文中详细叙述。
若控制逻辑396要求缓冲器398接收并载入28位的第一微程序码指令247的位[15:0],则缓冲器398遵循其要求而执行,否则缓冲器398维持其先前的数值。根据本发明的一实施例,在28位第一微程序码指令247的位[15:0]载入至缓冲器398的时脉周期后的下一个时脉周期中,缓冲器398的内容加上目前28位微程序码字组247的位[21:0],以产生三端输入多工器392的第二输入端的38位结果355。
控制逻辑396接收微程序码字组247的位[27:16],并决定其数值是否为既定的逃离指针数值。根据本发明的一实施例,既定逃离指针数值为0x3FF。若是如此,控制逻辑396控制暂存器398载入28位第一微程序码指令247的位[15:0]。此外,当第一多工器222提供下一个28位微程序码字组247时,控制逻辑396控制三端输入多工器392选择其第二输入端以提供未压缩微程序码指令253至微转译器237,也就是选择合并缓冲器398的16位内容与28位的微程序码字组247的位[21:0]的38位结果355。下一个28位微程序码字组247会是由非核只读存储器108/核微程序码只读存储器104所撷取的后续字组的微程序码指令249/后续字组的第二微程序码指令251,其跟随在载入至缓冲器398的字组247后面。
根据本发明的另一实施例,解压缩单元239可于相同时脉周期中接收具有逃离指针的微程序字组,以及两段未压缩微程序码指令。在此实施例中,缓冲器398被省略,且在该时脉周期时该相邻字组的适当部分被合并,并且提供至三端输入多工器392的第二输入端,而控制逻辑396则控制三端输入多工器392选择其第二输入端。
三端输入多工器392在第三输入端接收38位微程序码字组112,例如来自非核微程序码修补随机存取存储器114。若目前微程序码指令的来源是38位宽的存储器,例如来自非核微程序码修补随机存取存储器114,控制逻辑396控制三端输入多工器392以选择其第三输入端(也就是38位的微程序码字组112),否则控制逻辑396控制三端输入多工器392选择其第一输入端或第二输入端。若目前微程序码指令的来源是28位宽的存储器时,例如储存(除了压缩微程序码指令外)要求合并的未压缩微程序码字组的分离部分的非核只读存储器108或核微程序码只读存储器104、以及若先前字组包括逃离指针(即图4的第二逃离指针432)时,控制逻辑396控制三端输入多工器392选择其第二输入端(也就是38位的结果355)。若目前微程序码指令的来源为储存压缩微程序码指令(除了未压缩微程序码字组的分离部分以及逃离指针外)的28位宽的存储器,而且目前字组并未包括逃离指针时,控制逻辑控制三端输入多工器392选择其第一输入端(也就是解压缩器394的38位的未压缩微程序指令353)。
根据本发明的一实施例,由三端输入多工器392提供至微转译器237的38位未压缩微程序码指令253包括:根据一些指令格式,且通常为非立即指令的13位操作码域、5位的第一来源运算元地址域、5位的第二来源运算元地址域、5位的目标运算元地址域、指定运算元大小的4位大小域、指定每一5位运算元暂存器域如何由微转译器237进行解码的4位域、指定微程序码指令在执行x86指令的连续微程序码指令中是否为最后指令的一位“.T”域、以及一额外位。通常为立即指令的其他38位未压缩微程序码指令253的格式包括:包括16位即时数值的16位即时域,例如一即时运算元或跳跃指令的目标地址、以及上述其他域的子集合,如除了5位第二运算元域以外的域以及较小的操作码域。
请参考图4,其显示由组合程序选择性压缩微程序码指令的流程图。图4包括两个流程图,说明将第一微程序码组合语言指令402组合进单一字组压缩二进制指令404的范例,以及将由第一逃离指针412表示的第二微程序码组合语言指令414与包括逃离指针的多字组未压缩二进制指令进行组合的范例。
第一流程图说明将第一微程序码组合语言指令402组合进以单一字组储存于微程序码存储器的压缩二进制指令404,微程序码存储器如核微程序码只读存储器104或非核只读存储器108。图4的实施例中,单一字组为28位宽,也就是如图所示的核微程序码只读存储器104或非核只读存储器108的宽度。当单一字组压缩二进制指令404由核微程序码只读存储器104或非核只读存储器108读取出来时,如本发明所述,将经由图3的解压缩器394来解压缩为未压缩微程序码指令。在图4的实施例中。第一微程序码组合语言指令402将第一通用暂存器R2以及第二通用暂存器R3的内容相加,并将结果写入第三通用暂存器R4。在此实施例中,此为在组合之时存在压缩表项目的微程序码指令,其允许组合语言将其压缩,并在下文终将有详细描述。
第二流程图说明冠有第一逃离指针412的第二组合语言微程序码指令414组合至多字组未压缩二进制指令424的情形,多字组未压缩二进制指令424分离成两个28位字组。第一字组包括位于第一字组的既定位的第二逃离指针432。第二逃离指针432为图2的解压缩单元239(特别是控制逻辑396)用以响应与辨识,以将包含第二逃离指针432的字组的剩下部分434,与来自核微程序码只读存储器104或非核只读存储器108的下个字组的一部分438相结合。在本发明的一实施例中,逃离指针既定数值为0x3FF,第一字组的既定位是位[27:16]。然而既定位以及既定数值并非限定于实施例,而其他的实施例则为具有不同既定数值以及不同既定位。逃离指针为一既定字串(如:图4所示的“ESCAPE”),程序设计者可在微程序码来源码文件中,在微程序码指令前插入一行,这样会使得组合语言不会压缩随后的微程序码指令,但会分离该指令为两个具有压缩指令的长度的字组,且于二进制字组的开头包含第二逃离指针432。
第一字组的下16位为多字组未压缩二进制指令424的下16位434,第二字组的上22位为多字组未压缩二进制指令424的上22位438。当控制逻辑396于第一字组中侦测到第二逃离指针432位于开头的位置时,下16位434以及上22位438将由解压缩单元239加以组合。在实际操作上,第二字组的上6位436可全为零。在图4的实施例中,第二微程序码组合语言微程序码指令414将第二通用暂存器R3以及结构暂存器(例如,x86结构暂存器ESI)的内容相加,并将结果写入第三通用暂存器R4。在此实施例中,该微程序码指令在组合操作进行时压缩表项目并不存在,故需要包括第一逃离指针412以避免产生组合错误,这部分将于下文中做更详细的说明。
请参考图5的流程图,其说明建立选择性压缩微程序码的流程。流程开始于来源码502,其中来源码502由微程序码设计者所开发,而来源微程序码502可包括第一逃离指针412。组合程序504接收来源码502以及压缩表514。在一实施例中,压缩表514可包含于由以下所述的压缩程序512所产生的文件中。组合程序504使用压缩表514来组合来源码502,以产生选择性压缩二进制微程序码506。选择性压缩二进制微程序码506包括单一字组压缩二进制指令(如图4的单一字组压缩二进制指令404)以及多字组未压缩二进制指令,多字组未压缩二进制指令包括第二逃离指针432,如图4的多字组未压缩二进制指令424。来源码502通常包括多来源码文件,多来源码文件经由组合程序504的组合而产生选择性压缩二进制微程序码506。
组合程序504也产生所有微程序码指令的列表508,所有微程序码指令的列表508包含于选择性压缩二进制微程序码506之中。在一实施例中,所有微程序码指令的列表508是人类可读的清单,该清单包括在选择性压缩二进制微程序码506中的每一微程序码指令的项目。对于每一微程序码指令,该项目指定了:(1)其于核微程序码只读存储器104或非核只读存储器108的相关地址;(2)其未压缩二进制表示式,例如其38位二进制表示式;以及(3)一种与其组合语言表示式相似但经修正以方便压缩程序512产生压缩表514。根据微程序码指令是否由来源码502的第一逃离指针412所标示的微程序码指令,38位数值的未压缩二进制表示式,若非压缩为单一字组压缩二进制指定404,就是分离成图4的多字组未压缩二进制指令424的下16位434以及上22位438。
压缩程序512接收所有微程序码指令的列表508,并借此产生压缩表514。压缩表514为组合程序504的输入,随后组合程序504组合来源码502而成为选择性压缩二进制微程序码506。通常,随后的组合为新的或修改后的来源码502。此外,随后的组合可与原来用以产生压缩表514的来源微程序码502相同,例如当压缩表一开始是空的时候。
压缩程序512检查所有微程序码指令的列表508,并产生唯一指令表。举例来说,所有微程序码指令的列表508可包括多个具有一个指令的实例,其将R2减去R1并将结果放置于R3;然而,当产生唯一指令表时,压缩程序512将这些实例都当作一单一与唯一的微程序码。一个使得压缩微程序码有极高可能性的事实在于,对于许多微程序码指令而言,多个具有相同指令的实例可存在来源码502中。使微程序码指令单一化的的准则可根据不同实施例使用的压缩方法而改变,以下将通过一实施例做详细说明。在一实施例中,压缩程序512是以Python语言所撰写的程序。
在产生唯一指令表之后,压缩程序512指定每一唯一微程序码指令一对应的唯一数值。压缩表514包括一对一对应的唯一微程序码指令以及唯一压缩数值。在随后的组合实例中,组合程序504利用此对应关系来压缩并未由逃离指针标示的来源码502组合语言指令而成为压缩指令404。压缩数值变成单一字组压缩二进制指令404(或成为压缩二进制指令的一部分),解压缩器394解压缩该二进制数值而成为未压缩微程序指令353(或其一部分是未压缩微程序指令)。在一实施例中,仅对38位未压缩二进制表示式的一部分进行压缩,而剩下的位并未压缩。在一实施例中,将38位未压缩二进制表示法的22个位,压缩成28位压缩二进制指令404中的12个位,38位未压缩二进制表示式的剩下的16个位跳过未压缩程序而成为28位压缩二进制指令404的16位。如下所述,解压缩器394执行相反的相似流程。
在一实施例中,压缩器512产生三个压缩表514。压缩表514之一指定唯一压缩数值对应至即时跳跃微程序码指令;压缩表514之一指定唯一压缩数值对应至即时非跳跃微程序码指令;以及压缩表514之一指定唯一压缩数值对应至所有其他微程序码指令,在此称为“杂项(miscellaneous)”微程序码指令。在一实施例中,压缩的即时跳跃指令的28位压缩二进制指令404具有二进制“1”的数值于首位位(亦即位[27]),然而即时非跳跃微程序码指令以及杂项微程序码指令的28位压缩二进制指令404具有二进制“0”的数值于首位位,即时非跳跃微程序码指令的28位压缩二进制指令404在位[26:16]中的数值为0x000至0x2FF之间,而位于杂项微程序码指令的28位压缩二进制指令404的位[26:16]中的数值为0x300至0x7FF之间。在一实施例中,即时跳跃以及非即时跳跃的28位压缩二进制指令404的即时数值位于28位微程序码字组247的位[15:0]中。
压缩器512也产生解压缩描述516。解压缩描述516在概念上可理解为压缩表514的逆转,亦即解压缩描述516包括压缩表514的唯一压缩数值与唯一未压缩微程序码指令二进制表示式的一对一对应关系(或其一部分)。如上所述,解压缩器394可跳过压缩第一微程序码指令247的部分位(在一实施例为16位),使得解压缩描述516仅需包括部分的唯一12位压缩数值与未压缩微程序码指令二进制表示式的唯一22位的一对一对应关系。解压缩器394将唯一22位部分与跳过的16位部分结合以产生最终提供至微转译器237的38位未压缩微程序码指令253。因此,在一实施例中,解压缩描述516对应压缩表514的唯一12位压缩数值至唯一22位数值,且该对应关系用于制造或模拟输出唯一22位数值作为未压缩微程序码指令353的一部分,以响应接收对应的压缩第一微程序码指令247的唯一12位压缩数值的位[27:16]。
逻辑产生程序518(如众所皆知的ESPRESSO logic minimizer program)将解压缩描述516转变成解压缩器暂存器传递语言文件524,解压缩器暂存器传递语言文件524可用以制造或模拟解压缩器394。在一实施例中,解压缩器暂存器传递语言文件524可合成至形成解压缩器394的可程序逻辑阵列中。
一旦微处理器100的实例,特别是硬件的解压缩器394,利用解压缩器暂存器传递语言文件524所给定实例而被制造或模拟时,则由微处理器100的实例所执行的随后选择性压缩二进制微程序码506,必须由组合程序504利用压缩表514进行组合,其中压缩表514对应至产生解压缩器暂存器传递语言文件524的解压缩描述516。否则,解压缩器394可能不正确地解压缩选择性压缩二进制微程序码506。
举例来说,由微处理器100的模拟软件所执行的选择性压缩二进制微程序码506,必须由组合程序504利用压缩表514进行组合,其中压缩表514对应于在模拟软件中使用解压缩器暂存器传递语言文件524而产生的解压缩器描述516。根据另一实施例,其中载入至非核微程序码修补随机存取存储器114的修补微程序码被选择性地压缩,选择性压缩二进制微程序码506必须由组合程序504利用压缩表514进行组合,其中压缩表514对应至解压缩器暂存器传递语言文件524所产生的解压缩器描述516,并且解压缩器描述516用以制造微处理器100的实例。
根据另一实施例,微处理器具有许多半导体层,而通常核微程序码只读存储器104与非核只读存储器108被制造于最后一层,这样可提供给微程序码开发者一个继续发展微程序码的机会,尽管微处理器100需要先被制造的半导体层(通常包括解压缩器394)已被制造完成。在此状况下,必须由组合程序504利用压缩表514做组合,其中压缩表514对应至解压缩描述516,而解压缩描述516利用解压缩器暂存器传递语言文件524来制造微处理器100的实例。这点特别有利,因为能够在某些情况提供微程序码设计者在硬件设计者完成后数周的时间内继续开发微程序码。在此状况下,来源码502可包括未在所有微程序码指令的列表508中的新微程序码指令,其中所有微程序码指令的列表508用以自微处理器100的实例制造而产生解压缩器暂存器传递语言文件524。在此状况下,微程序码设计者需要在新微程序码指令之前插入第一逃离指针412至来源码502,如以下对图6步骤608的描述。
图6所示的流程图说明利用组合程序组合微程序码的流程。流程开始于步骤602。
在步骤602中,组合程序504接收图5的来源码502以及压缩表514。组合程序504利用压缩表514组合来源码502,来源码可包含逃离指针412。在组合实例开始时,压缩表514可为空的。要注意的是,微程序码开发者可能不知是否他已经插入了一新的微程序码指令至来源码502,例如在目前压缩表514并未具有一微程序码指令的对应关系。在此情况下,当组合程序504组合来源码502时就会产生相关的错误。流程则前进至步骤604。
在步骤604中,若组合程序504判断步骤602在组合中发生错误则流程前进至步骤606,否则流程前进至步骤612。特别的是,组合错误可能因为压缩表514不包括来源码502微程序码指令的对应关系所造成,其中来源码502微程序码指令并未由第一逃离指针412所标示。
步骤606中,组合程序504输出所有微程序码指令的列表508给来源码502,流程前进至步骤608。
步骤608中,在组合程序504因压缩表514并未包括对应关系而产生错误的该微程序码指令的前面,插入第一逃离指针412至来源码502中。在一实施例中,由微程序码设计者插入第一逃离指针412。在一实施例中,可通过一程序利用由组合程序504所产生的错误信息,自动插入第一逃离指针412。在另一组合来源码502的实例中流程将回到步骤602,直到没有错误产生为止。应注意的是,压缩表514在来源码502第一次被组合时是空的,在此状态下,组合程序504会对来源码502的所有微程序指令产生错误;然而,因为组合程序已产生所有微程序码指令的列表508,因此压缩器512可执行用以产生压缩表514,而相同的来源码502(没有插入第一逃离指针412的)可被重新组合而产生可由微处理器100的实例所执行的选择性压缩二进制微程序码506,其中微处理器100的实例包括解压缩器394的实例,在第二实例中,解压缩描述516产生解压缩器暂存器传递语言文件524,解压缩器暂存器传递语言文件524产生解压缩器394的实例,而解压缩描述516则由压缩器512所产生。
在步骤612中,组合程序504输出可用以制造微处理器100的所有微程序码指令的列表508、以及选择性压缩二进制微程序码506。具体而言,选择性压缩二进制微程序码506包括位于非核只读存储器108、核微程序码只读存储器104及/或非核微程序码修补随机存取存储器114的单一字组压缩二进制指令404以及多字组未压缩二进制指令424。流程结束于步骤612。
参考图7,所示的流程图说明图2的复杂指令转译器296的动作,尤其是图3的解压缩单元239的动作。流程开始于步骤702。
在步骤702中,图3的控制逻辑396接收图2的28位的压缩第一微程序码指令247的位[27:16],并对其解码。流程继续至步骤704。
在步骤704中,控制逻辑396判断是否在步骤702解码的目前28位的压缩第一微程序码指令247包括逃离指针。在一实施例中,若28位的压缩第一微程序码指令247的既定位等于一既定数值时,控制逻辑判断目前28位的压缩第一微程序码指令247包括逃离指针。在一实施例中,既定位为位[27:16],而既定数值为0x3FF,然而既定位以及既定数值并非做限定实施例之用。若目前28位的压缩第一微程序码指令247包括逃离指针,流程进行至步骤706;否则流程进行至步骤712。
在步骤706中,控制逻辑396控制缓冲器398载入28位的压缩第一微程序码指令247的位[15:0]。流程进行至步骤708。
在步骤708中,当下一28位的压缩第一微程序码指令247(例如,来自核微程序码只读存储器104或非核只读存储器108)到达时,控制逻辑396控制三端输入多工器392以选择由缓冲器398所输出的16位输出(例如,于步骤702解码的28位的压缩第一微程序码指令247的位[15:0])以及下一28位的压缩第一微程序码指令247的位[21:0]两者所结合的38位结果355,并输出此38位结果355作为38位未压缩微程序码指令253,其中此38位未压缩微程序码指令253在此情况下为未压缩的。在一实施例中,因为管线延迟或与其他处理核102争夺使用非核只读存储器108之故,下一28位的压缩第一微程序码指令247并未在一相对较大数量的时脉周期内到达。流程前进至步骤714。
在步骤712中,解压缩器394解压缩28位的压缩第一微程序码指令247成为38位的未压缩微程序码指令353。如上所述,在一实施例中,解压缩器394将28位的压缩第一微程序码指令247的12位对应至38位的未压缩微程序码指令353的22位,解压缩器394跳过28位的压缩第一微程序码指令247剩下的16位不进行对应,但这16位与对应的22位相结合而产生38位的未压缩微程序码指令353。在一实施例中,解压缩器394也包括多个多工器,其中多个多工器将对应的22位以及跳过的16位的每一位,导向至38位的未压缩微程序码指令353的各个位位置,以响应由解码28位的压缩第一微程序码指令247的逻辑所产生的选择信号。举例来说,在此实例中,压缩器512产生三个压缩表514以对应即时跳跃、即时非跳跃以及杂项微程序码指令,多工器直接根据三种类型的微程序码指令中,哪一种微程序码指令被压缩,而将对应的22位以及通过的16位导向至38位的未压缩微程序码指令353。举例来说,在一实施例中,在即时类型的微程序码指令的状态下,多个多工器将跳过的16位直接指向38位的未压缩微程序码指令353的即时域,尽管跳跃以及非跳跃的未压缩微程序码指令353的即时域位置不相同;然而在杂项指令的情况下,多个多工器将跳过的16位的子集合指向非即时的未压缩微程序码指令353的不同区域及/或子区域;并且多工器根据三种类型的压缩第一微程序码指令247的何者被解压缩,而将对应的22位的子集合指向不同的38位的未压缩微程序码指令353的区域及/或子区域。控制逻辑396控制三端输入多工器392自解压缩器394选择38位的未压缩微程序码指令353,并且输出选择结果353作为选择性压缩的38位未压缩微程序码指令253,在此情况下为对目前28位的压缩第一微程序码指令247解压缩,其中压缩第一微程序码指令247为步骤702所编码。流程前进制步骤714。
在步骤714,微转译器237转译选择性解压缩38位未压缩微程序码指令253成为第二微指令246,其中第二微指令246可由微处理器100的执行单元212所执行,流程结束于步骤714。
图8显示一实施例中非核只读存储器108为28位宽并维持压缩的微程序码字组,核微程序码只读存储器104为28位宽并维持压缩微程序码字组,以及非核微程序码修补随机存取存储器114为38位宽并维持非压缩微程序码字组。在另一实施例中,非核只读存储器108为38位宽并维持未压缩的微程序码字组而非压缩的微程序码字组,如图9、11、13所示,在此情况下三端输入多工器392可于一输入端接收来自非核只读存储器108的38位微程序码字组。在另一实施例,核微程序码只读存储器104为38位宽并维持非压缩微程序码字组而非压缩的微程序码字组,如图10所示,其中三端输入多工器392可于一输入端接收来自核微程序码只读存储器104的38位的微程序码字组。在另一实施例中,非核微程序码修补随机存取存储器114为28位宽并维持压缩微程序码字组而不是非压缩程序码字组,如图9所示,在此情况下来自非核微程序码修补随机存取存储器114的28位微程序码字组可提供至第一多工器222的一输入端,并选择以供应给三端输入多工器392、解压缩器394、控制逻辑396以及缓冲器398。再者,根据本发明的另一实施例,每一处理核102包括核修补随机存取存储器1299,核修补随机存取存储器1299的功能与非核微程序码修补随机存取存储器114,除了核修补随机存取存储器1299并非共用于多个处理核102而是各自对应至相对的处理核102,如图12、13所示。在图12的实施例中,核修补随机存取存储器1299为38位宽并维持未压缩微程序字组,在此情况下三端输入多工器392可于一输入端接收来自核修补随机存取存储器1299的38位微程序码字组。在图13的实施例中,核修补随机存取存储器1299为28位宽并维持压缩微程序码字组,在此情况下第一多工器222可在一输入端接收来自核修补随机存取存储器1299的28位微程序码字组。如上所述,在每一实施例中微程序码存储器为28位宽并维持压缩微程序码字组,微程序码存储器也可包括多字组未压缩二进制指令424,多字组未压缩二进制指令424可分为两个28位的字组。
在此所述的选择性压缩微程序码的性能的另一个优点,就是作为储存微程序码于微处理器的可程序非易失存储器越来越成为商业上可行的方式,微程序码可一直被开发直到微处理器100的零件的微程序码存储器的时间可被编程为止。再者,若零件/存储器可在现场被编程的,例如由使用者或现场技术人员,则使用者或技术人员还可在现场重新编程零件以修复错误。在任一情况中,新的来源微程序码502可能必须包括逃离指针,因为硬件的解压缩器394于该时间点被修复。
尽管所述的多个实施例中微程序码字组以及存储器皆被指定宽度,其中以范例叙述的三个实施例,其他实施例中的微程序码字组以及存储器可为不同宽度。再者,尽管在此所述的实施例中,压缩微程序码指令的宽度为特定宽度,并且未压缩微程序码指令的宽度为特定宽度,而这些实施例以范例的方式叙述,而其他实施例中各自的压缩以及非压缩微程序码指令可具有不同宽度。再者,尽管在此所述的多个实施例中使用选择性压缩微程序码指令于多核处理器,其他实施例包括单一微处理器,其中单一微处理器用以选择性压缩微程序码并包括具有压缩微程序码指令的微程序码存储器,而微程序码存储器具有未压缩微程序码指令亦可运用本发明而得以实施。最后,尽管在此所述的实施例在未压缩二进制表示式以及压缩二进制表示式之间具有特定对应关系,其他具有不同的对应关系的实施例则可能需要不同的微程序码指令集。特别的是,位的数目则多少与解压缩硬件可接受的延迟范围的需求有关。
当在此描述本发明的许多实施例,要知道这些实施例仅以范例的方式呈现而非限定于此。计算机相关领域技术人员皆了解,各种型式以及细节上的变形能够在不背离本发明的范围的情况下产生。举例来说,软件能够致能功能、制造、模拟、拟真、描述及/或测试在此所述的装置以及方法。这可经由使用一般的程序语言(例如:C、C++)、包括Verilog HDL、VHDL等等的硬件描述语言(hardware description languages,HDL)、或其他可得的程序语言。该软件可放置于任何已知的计算机可读介质,例如磁带(magnetic tape)、半导体、磁盘(magnetic disk)、或光盘(optical disc)(例如:CD-ROM、DVD-ROM等等),或是网络、有线、无线或其他通讯介质。在此描述的装置以及方法的实施例可包含于半导体智慧财产权核中,例如微处理器处理核(如体现或指定于硬件描述语言)以及转换制集成电路产品的硬件。此外,在此所述的装置以及方法可体现为硬件以及软件的组合。因此,本发明不应限定于任何在此所述的实施例,而应仅根据权利要求书的范围及其相似物来定义。特别的是,本发明可实现于微处理器装置,其中微处理器装置可用于通用计算机中。最后,该领域技术人员能够了解,他们能够使用揭露的概念以及特定的实施例最为基础而设计或调整其他架构,在不背离本发明于申请专利范围所定义的范围的情况下实现并完成本发明的相同目的。

Claims (37)

1.一种微处理器,其特征在于,包括:
一或多个存储器,用以维持多个微程序码指令,其中至少一部分的上述微程序码指令被压缩;以及
一解压缩单元,用以在上述多个微程序码指令自上述一或多个存储器存取后且于被执行之前,由上述解压缩单元解压缩被压缩的上述微程序码指令。
2.根据权利要求1所述的微处理器,其特征在于,
上述一或多个存储器用以提供多个微程序码字组以响应一地址输入,其中上述微程序码字组包括上述微程序码指令,至少一部分的上述微程序码指令被压缩;
上述解压缩单元用以判断从上述一或多个存储器存取的上述微程序码字组是否包括一压缩微程序码指令或一未压缩微程序码指令的一第一部分,其中上述未压缩微程序码指令还具有包含于一相邻字组中的一第二部分;以及
上述解压缩单元用以解压缩上述压缩微程序码指令而成为多个未压缩微程序码指令,并且将通过解压缩上述压缩微程序码指令而获得的上述未压缩微程序码指令与上述第一部分以及上述第二部分合并而成为多个未压缩微程序码指令。
3.根据权利要求2所述的微处理器,其特征在于,判断存取自上述一或多个存储器的上述微程序码字组是否包括一压缩微程序码指令或一未压缩微程序码指令的一第一部分,上述解压缩单元用以判断上述微程序码字组的一既定部分是否即为一既定数值。
4.根据权利要求3所述的微处理器,其特征在于,压缩的上述微程序码字组的每一个为N位宽,
其中在解压缩压缩的多个微程序码指令而成为多个未压缩微程序码指令的步骤中,上述解压缩单元用以解压缩N位宽的上述微程序码字组以产生一M位宽微程序码字组,其中M以及N为大于零的整数,且M大于N。
5.根据权利要求4所述的微处理器,其特征在于,解压缩N位宽的上述微程序码字组以产生上述M位宽微程序码字组,上述解压缩单元用以:
根据一既定对应关系输出多个唯一L位数值,以响应包含于N位宽的上述微程序码字组的一既定K位的多个唯一数值,其中K为大于零的整数且小于N,L为大于零的整数且小于M;以及
通过N位宽的上述微程序码字组的剩下多个(N-K)位,作为上述M位宽微程序码字组的剩下多个(M-L)位。
6.根据权利要求5所述的微处理器,其特征在于,通过的上述(N-K)位包括上述压缩微程序码指令的一即时数值域。
7.根据权利要求1所述的微处理器,其特征在于,上述一或多个存储器的一第一存储器用以维持由上述第一存储器所提供的多个压缩微程序码指令作为多个N位宽微程序码字组,其中上述一或多个存储器的一第二存储器用以维持由上述第二存储器所提供的多个未压缩微程序码指令作为多个M字节宽微程序码字组,其中M以及N为大于零的整数,且M大于N。
8.根据权利要求7所述的微处理器,其特征在于,上述一或多个存储器的上述第二存储器用以维持包括上述未压缩微程序码指令,其中上述未压缩微程序码指令包括一或多个修补至由上述第一存储器所提供的上述压缩微程序码指令。
9.根据权利要求1所述的微处理器,其特征在于,还包括:
多个处理核,每一上述处理核包括一微程序码存储器,上述微程序码存储器是用以维持被压缩的上述微程序码指令的一部分的上述一或多个存储器之一;以及
一非核微程序码存储器,共用于上述处理核,用以维持被压缩的上述微程序码指令的一部分。
10.一种选择性解压缩微程序码的方法,其特征在于,包括:
接收来自一存储器的一第一N位宽微程序码字组;
判断上述第一N位宽微程序码字组的一既定部分是否为一既定数值;
若上述既定部分并非为上述既定数值,解压缩上述第一N位宽微程序码字组而产生一M位宽微程序码字组,其中M及N为大于零的整数;以及
若上述既定部分为上述既定数值,接收来自上述存储器的一第二N位宽微程序码字组,并组合部分的上述第一N位宽微程序码字组以及上述第二N位宽微程序码字组而产生上述M位宽微程序码字组。
11.根据权利要求10所述的选择性解压缩微程序码的方法,其特征在于,上述第一N位宽微程序码字组的上述既定部分与上述M位宽微程序码字组互斥,上述M位宽微程序码字组为上述第一N位宽微程序码字组的部分与上述第二N位宽微程序码字组结合所产生。
12.根据权利要求10所述的选择性解压缩微程序码的方法,其特征在于,上述第二N位宽微程序码字组位于上述存储器中与上述第一N位宽微程序码字组相邻的一邻近地址。
13.根据权利要求10所述的选择性解压缩微程序码的方法,其特征在于,若上述既定部分并非上述既定数值,解压缩上述第一N位宽微程序码字组而产生一M位宽微程序码字组的步骤包括:
解压缩上述第一N位宽微程序码字组的多个K位,并通过上述第一N位宽微程序码字组的多个(N-K)位,其中K为大于零的整数,且N大于K。
14.根据权利要求13所述的选择性解压缩微程序码的方法,其特征在于,上述解压缩上述第一N位宽微程序码字组的多个K位的步骤包括:
根据一既定对应关系输出多个唯一L位数值,以响应多个唯一数值,上述唯一数值包含于上述N位宽微程序码字组的一既定K位,K为大于零的整数且小于M。
15.一种产生选择性压缩微程序码的方法,其特征在于,包括:
接收一来源码,上述来源码包括多个微程序码组合语言指令,其中部分的上述微程序码组合语言指令的每一个皆以上述来源码的一指示所标示;以及
若并非以上述指示所标示,对于上述微程序码组合语言指令的每一个,产生上述微程序码组合语言指令的一单一字组压缩二进制表示式,若由上述指示所标示则产生上述微程序码组合语言指令的一多字组未压缩二进制表示式。
16.根据权利要求15所述的产生选择性压缩微程序码的方法,其特征在于,上述单一字组未压缩二进制表示式以及上述多字组未压缩二进制表示式的每一字组是储存于一微处理器的一存储器的一宽度。
17.根据权利要求15所述的产生选择性压缩微程序码的方法,其特征在于,还包括:
接收一对应关系,对于上述来源码的并非由上述指示标示的唯一微程序码指令的每一个,上述对应关系对应上述唯一微程序码指令至一唯一压缩数值,其中上述产生上述单一自组二进制表示式的步骤根据上述对应关系而执行。
18.根据权利要求17所述的产生选择性压缩微程序码的方法,其特征在于,上述唯一压缩数值对应至上述唯一微程序码指令的哪一个的步骤包括产生至上述微程序码组合语言指令的上述单一字组压缩二进制表示式的多个位的一子集合。
19.一种产生描述方法,其特征在于,适用产生一解压缩微程序码装置的一描述,产生描述方法包括:
接收一来源码,其中上述来源码包括多个微程序码组合逻辑语言指令;
对于上述微程序码组合逻辑语言指令的每一个,产生一未压缩二进制表示式;以及
对于上述微程序码组合语言指令的每一唯一指令,产生上述唯一指令的对应的上述未压缩二进制表示式的部分对应至一压缩二进制表示式的一对应关系。
20.根据权利要求19所述的产生描述方法,其特征在于,还包括:
利用上述对应关系,产生上述解压缩微程序码装置的一暂存器传递语言表示式。
21.一种微处理器,其特征在于,包括:
多个存储器,上述存储器的每一个用以维持多个微程序码指令,其中上述存储器的至少一第一存储器用以提供多个压缩微程序码指令的多个M位宽微程序码字组,上述存储器的至少一第二存储器用以提供多个未压缩微程序码指令的多个N位宽微程序码字组,其中M以及N为大于零的整数且N大于M;以及
一解压缩单元,在上述压缩微程序码指令自至少上述第一存储器存取之后且在执行前,由上述解压缩单元用以解压缩上述压缩微程序码指令。
22.根据权利要求21所述的微处理器,其特征在于,还包括:
多个处理核,上述处理核的每一个包括一核微程序码存储器;以及
一非核微程序码存储器,共用于上述处理核,
其中上述非核微程序码存储器以及上述核微程序码存储器的每一个为上述存储器之一,用以维持上述微程序码指令。
23.根据权利要求22所述的微处理器,其特征在于,
上述核微程序码存储器的每一个是用以提供上述压缩微程序码指令的上述第一存储器之一;以及
上述非核微程序码存储器是用以提供上述未压缩微程序码指令的上述N位宽微程序码字组的上述第二存储器之一。
24.根据权利要求23所述的微处理器,其特征在于,上述非核微程序码存储器为可写入,且用以提供多个修补微程序码指令的微程序码字组,上述修补微程序码指令用以修补上述核微程序码存储器之一或多个上述压缩微程序码指令。
25.根据权利要求24所述的微处理器,其特征在于,还包括:
一第二非核微程序码存储器,共用于上述处理核,
其中上述第一非核微程序码存储器还用以提供上述修补微程序码指令的微程序码字组,上述修补微程序码指令用以修补上述第二非核微程序码存储器之一或多个上述压缩微程序码指令。
26.根据权利要求22所述的微处理器,其特征在于,
上述核微程序码存储器的每一个是用以提供上述未压缩微程序码指令的上述第二存储器之一;以及
上述非核微程序码存储器是用以提供上述压缩微程序码指令的微程序码字组的上述第一存储器之一。
27.根据权利要求21所述的微处理器,其特征在于,上述存储器的至少一个为可写入,且用以提供多个修补微程序码指令的微程序码字组以修补其他上述存储器之一或多个上述微程序码指令的一修补微程序码存储器。
28.根据权利要求27所述的微处理器,其特征在于,
上述修补微程序码存储器为上述第二存储器的一部分,用以提供多个未压缩微程序指令的多个微程序码字组;以及
上述存储器的另一个为至少一第一存储器之一,用以提供多个压缩微程序码指令。
29.根据权利要求21所述的微处理器,其特征在于,上述解压缩单元用以传送上述未压缩微程序码指令而不需解压缩。
30.一种选择性解压缩微程序码的方法,其特征在于,适用于具有多个存储器的每一个用以维持多个微程序码指令的一微处理器,上述选择性解压缩微程序码的方法包括:
自上述存储器的至少一第一存储器存取多个压缩微程序码指令的多个M位宽微程序码字组;
自上述存储器的至少一第二存储器存取多个未压缩微程序码指令的多个N位宽微程序码字组,其中M以及N为大于零的整数且N大于M;
解压缩自上述第一存储器存取的上述压缩微程序码指令;以及
传送上述未解压缩微程序指令而不需解压缩。
31.根据权利要求30所述的选择性解压缩微程序码的方法,其特征在于,上述微处理器还包括多个处理核,上述处理核的每一个包括一核微程序码存储器以及由上述处理核所共用的一非核微程序码存储器,其中上述非核微程序码存储器以及上述核微程序码存储器的每一个用以维持多个微程序码指令。
32.根据权利要求31所述的选择性解压缩微程序码的方法,其特征在于,
上述自上述存储器的至少一第一存储器存取多个压缩微程序码指令的上述M位宽微程序码字组的步骤包括自上述核微程序码存储器的每一个存取上述压缩微程序码指令的上述M位宽微程序码字组;以及
上述自上述存储器的至少一第二存储器存取多个未压缩微程序码指令的多个N位宽微程序码字组的步骤包括自上述非核微程序码存储器存取上述未压缩微程序码指令的上述N位宽微程序码字组。
33.根据权利要求32所述的选择性解压缩微程序码的方法,其特征在于,上述非核微程序码存储器为可写入,选择性解压缩微程序码的方法还包括:
自上述非核微程序码存储器存取多个修补微程序码指令的微程序码字组,以修补上述核微程序码存储器的一或多个上述压缩微程序码指令。
34.根据权利要求33所述的选择性解压缩微程序码的方法,其特征在于,上述微处理器包括一第二非核微程序码存储器,上述第二非核微程序码存储器共用于多个处理核,选择性解压缩微程序码的方法还包括:
自上述第一非核微程序码存储器存取上述修补微程序码指令的微程序码字组,以修补上述第二非核微程序码存储器的一或多个上述微程序码指令。
35.根据权利要求31所述的选择性解压缩微程序码的方法,其特征在于,
上述自上述存储器的至少一第二存储器存取多个未压缩微程序码指令的多个N位宽微程序码字组的步骤包括自上述核微程序码存储器的每一个存取上上述未压缩微程序码指令的上述N位宽微程序码字组,上述核微程序码存储器的每一个是用以提供上述未压缩微程序码指令的上述第二存储器之一;以及
上述自上述存储器的至少一第一存储器存取多个压缩微程序码指令的多个M位宽微程序码字组的步骤包括自上述非核微程序码存储器存取上述压缩微程序码指令的上述M位宽微程序码字组,上述非核微程序码存储器是用以提供上述压缩微程序码指令的上述第一存储器之一。
36.根据权利要求30所述的选择性解压缩微程序码的方法,其特征在于,还包括:
自至少一上述存储器中存取多个修补微程序码指令的微程序码字组,以修补另一上述存储器的一或多个上述微程序码指令。
37.根据权利要求36所述的选择性解压缩微程序码的方法,其特征在于,另一上述存储器为上述第一存储器之一,其中上述自上述存储器的至少一个存取上述修补微程序码指令的微程序码字组的步骤包括自上述存储器的至少一个存取上述微程序码指令的多个未压缩微程序码字组,以修补另一上述存储器的一或多个上述压缩微程序码指令。
CN201410447345.1A 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的相关方法 Active CN104216682B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611196464.XA CN107092464B (zh) 2013-10-18 2014-09-04 产生选择性压缩微程序码和选择性解压缩微程序码的方法
CN201611196462.0A CN107085513B (zh) 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的方法

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201361893126P 2013-10-18 2013-10-18
US61/893,126 2013-10-18
US201361897327P 2013-10-30 2013-10-30
US61/897,327 2013-10-30
US14/088,565 2013-11-25
US14/088,565 US9361097B2 (en) 2013-10-18 2013-11-25 Selectively compressed microcode
US14/088,620 US9372696B2 (en) 2013-10-18 2013-11-25 Microprocessor with compressed and uncompressed microcode memories
US14/088,620 2013-11-25

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN201611196464.XA Division CN107092464B (zh) 2013-10-18 2014-09-04 产生选择性压缩微程序码和选择性解压缩微程序码的方法
CN201611196462.0A Division CN107085513B (zh) 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的方法

Publications (2)

Publication Number Publication Date
CN104216682A true CN104216682A (zh) 2014-12-17
CN104216682B CN104216682B (zh) 2017-04-19

Family

ID=52098223

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201611196464.XA Active CN107092464B (zh) 2013-10-18 2014-09-04 产生选择性压缩微程序码和选择性解压缩微程序码的方法
CN201410447345.1A Active CN104216682B (zh) 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的相关方法
CN201611196462.0A Active CN107085513B (zh) 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201611196464.XA Active CN107092464B (zh) 2013-10-18 2014-09-04 产生选择性压缩微程序码和选择性解压缩微程序码的方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201611196462.0A Active CN107085513B (zh) 2013-10-18 2014-09-04 微处理器以及选择性解压缩微程序码的方法

Country Status (2)

Country Link
CN (3) CN107092464B (zh)
TW (1) TWI522910B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107250991A (zh) * 2015-02-13 2017-10-13 谷歌公司 透明硬件辅助存储器解压缩

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI582586B (zh) * 2016-06-01 2017-05-11 神雲科技股份有限公司 輸出電腦系統的機器檢查例外資訊的方法
CN107656854A (zh) * 2016-07-26 2018-02-02 佛山市顺德区顺达电脑厂有限公司 输出计算机系统的机器检查例外信息的方法
CN111384965B (zh) * 2018-12-28 2022-06-17 上海寒武纪信息科技有限公司 数据压缩解压装置和数据解压方法
US11262938B2 (en) * 2020-05-05 2022-03-01 Silicon Motion, Inc. Method and apparatus for performing access management of a memory device with aid of dedicated bit information

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9406666D0 (en) * 1994-04-05 1994-05-25 Communicate Ltd Computer system
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
CN101398752B (zh) * 2007-09-29 2011-08-31 国际商业机器公司 重叠指令存取单元和重叠指令存取方法
CN101866279B (zh) * 2009-08-14 2012-05-30 威盛电子股份有限公司 微处理器及其相关方法
US8621153B2 (en) * 2009-12-26 2013-12-31 Intel Corporation Microcode refactoring and caching

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107250991A (zh) * 2015-02-13 2017-10-13 谷歌公司 透明硬件辅助存储器解压缩
CN107250991B (zh) * 2015-02-13 2020-08-28 谷歌有限责任公司 透明硬件辅助存储器解压缩

Also Published As

Publication number Publication date
CN107085513B (zh) 2020-06-12
TWI522910B (zh) 2016-02-21
CN107092464B (zh) 2020-06-23
CN107085513A (zh) 2017-08-22
CN107092464A (zh) 2017-08-25
TW201516861A (zh) 2015-05-01
CN104216682B (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
CN107111550B (zh) 用于隐藏程序提取的页遗漏转换时延的方法和装置
JP6761565B2 (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
US9372696B2 (en) Microprocessor with compressed and uncompressed microcode memories
CN104216682A (zh) 微处理器以及选择性解压缩微程序码的相关方法
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
CN103748550B (zh) 用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备
US10691462B2 (en) Compact linked-list-based multi-threaded instruction graduation buffer
CN105446773A (zh) 高速缓存行的非对齐加载指令的推测并行执行系统和方法
DE102013206381A1 (de) Anweisungs-optimierender Prozessor mit Verzweigungs-Zähl-Tabelle in Hardware
US10296341B2 (en) Latest producer tracking in an out-of-order processor, and applications thereof
KR102161682B1 (ko) 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법
TW201423579A (zh) 指令碼轉譯的自訂鏈結存根
US9830155B2 (en) Microprocessor using compressed and uncompressed microcode storage
CN101714076B (zh) 对指令束进行解压缩的处理器和方法
US7519799B2 (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
US7747840B2 (en) Method for latest producer tracking in an out-of-order processor, and applications thereof
TWI502498B (zh) 微處理器、積體電路、計算機程式產品與提供微碼指令儲存空間的方法
EP3798825A1 (en) Instruction length decoder system and method
DE102020132898A1 (de) Anweisungssatzarchitekturbasierte und automatische verfolgung von ladeoperationen für opportunistische umlenkung von unzuverlässigen datenabhängigen verzweigungen

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant