当前位置: 首页 > 专利查询>英特尔公司专利>正文

预解码单字节指令前缀和分支指令指示符的方法和系统技术方案

技术编号:2876689 阅读:223 留言:0更新日期:2012-04-11 18:40
说明一种对单字节指令前缀和分支指令指示符进行预解码的系统和方法。静态线路检测器生成多个指令指示符。此外,前缀和分支解码单元将该多个指令指示符中的至少两个相组合,并且预解码单元对组合的指令指示符进行解码。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术总的涉及计算机系统领域,更具体来讲,涉及一种用于长度解码以检测单字节前缀和分支型宏指令的系统与方法。
技术介绍
处理器(包括,但并不局限于,通用与特殊用途微处理器,微控制器和数字信号处理器(DSP))通常包括执行一系列称为微指令的指令的执行单元,这些指令来自于一个计算机程序。许多计算机程序采用计算机中央处理器(CPU)无法直接运行的高级语言来编写,因此,此类程序的指令必需被解码成可适于CPU执行的指令格式。例如,一个可由诸如C,C++,或Java的高级语言编写的程序被编译成相应的宏指令序列,随后解码成为用于最终执行的微指令。也可以直接用一系列宏指令(即,机器代码)来编写程序。宏指令通常以连续的数据块形式存储于诸如主存储器(因此,RAM)的内存资源中或高速缓冲存储器中,用于检索并提供给处理器内的解码单元,解码成微指令。为了使解码器单元能够成功地解码宏指令,应理解必需要识别构筑指令流的被检索的数据块中的指令边界,它指明了一个宏指令的结束和下一个宏指令起始的位置。在精简指令集计算机(RISC)处理器体系结构和指令集中,宏指令通常具有固定的长度,在这种情况下,当初始边界被识别之后,因为各指令具有已知的长度,指令之间的边界可相对容易地确定。对于一个可变长度的指令集,当初始边界被识别之后,还必需对每个宏指令的长度进行判别以识别随后的指令边界。对于为了支持遗留程序,支持多重数据和寻址大小的可变长度指令集使识别指令边界的任务更加复杂。在一种类型的精简指令集处理器中,指令可以具有一个或多个在指令前面的修改指令的操作的前缀字节。在此种指令集中,单字节前缀最为常见,但是,解码此种指令会增加解码过程的附加周期。另外,当存在分支指令时,指令流可能需要被重定向至正确的路径。在这方面,分支指令常导致周期延迟。专利技术概述说明一种用于对单字节指令前缀和分支指令指示符进行预解码的系统和方法。静态线路检测器(static line detect)生成多个指令指示符。此外,前缀和分支解码单元将该多个指令指示符中的至少两个相组合,并且预解码单元对组合的指令指示符进行解码。附图简述通过下面的详细介绍,本领域技术人员将了解此专利技术的目的,特征和优点,其中附图说明图1为由可按照本专利技术进行解码的字节组成的宏指令的一个实施例的方框图;图2为示出本专利技术可实现在其中的示范性微处理器体系结构的方框图;图3为示出有关按照本专利技术的示范性实施例的,可将其组合在图2所示微处理器中的有关取指令引擎与指令翻译引擎的体系结构细节的方框图;图4是一个8字节宏指令块与由图3的IPD所生成的相关字节标记矢量的示范性方框图;图5是图3的指令预解码器(IPD)体系结构的一个实施例的方框图;图6是图5的前缀和分支解码单元的一个实施例的方框图;图7是预解码单元的一个实施例的方框图,该预解码单元用于解码由图5的前缀和分支单元产生的不同信号;图8为预解码单字节指令前缀和指令分支指示符的一个实施例的流程图。专利技术详述说明一种对单字节指令前缀和指令分支指示符进行预解码的系统和方法。静态线路检测器生成多个指令指示符。此外,前缀和分支解码单元将该多个指令指示符中的至少两个相组合,并且预解码单元对组合的指令指示符进行解码。在下面有关本专利技术的详细描述中,提出大量的具体细节以提供对本专利技术的深入了解。但是显而易见的是,对于本领域技术人员来说,无需这些具体细节也可实践此专利技术。在某些例子中,众所周知的结构与装置以方框图的形式而不是详细地示出,以避免与本专利技术进行混淆。图1是示范性的宏指令100的图示性表示,它由可根据本专利技术的理论进行解码的字节组成。具体的说,图1说明了一个形成部分英特尔体系结构(IA)指令集的示范性宏指令的格式,此英特尔体系结构(IA)指令集由位于California,Santa Clara的英特尔公司开发。对于本说明书,术语“宏指令”与“指令”均用来指代通常理解的宏指令与非宏指令。正如英特尔体系结构指令集中所定义的,示范性的宏指令100可包含一到四个指令前缀102(每一个指令前缀102的长度为一个字节),一个操作码104(长度为一个或两个字节),一个ModR/M操作数指示符106(长度为0-1字节),一个108的SIB(长度为0-1字节),地址位移110(长度为0,1,2或4个字节),以及一个中间数据常量112(长度为0,1,2或4个字节)。操作码104的长度可或为一或为两个字节。对于二字节操作码来说,首字节为OF。ModR/M,如果存在,长度为一个字节并包含mod域114,reg/opcode域116与R/M域118。mod域114与R/M域118组合形成32个可能数值8寄存器和24寻址模式。reg/opcode域116规定或一个寄存器编号或另外三位操作码信息。原操作码104的首字节中规定了reg/opcode域116的使用。R/M域118可将一个寄存器规定为操作数,或可与mod域114组合,编码寻址模式。ModR/M字节106的某一编码需要一个第二寻址字节,比例变址基址(SIB)字节108,以完全规定指令的寻址模式。32位寻址的基址加变址与比例加变址形式需要SIB字节108。SIB字节108包含一个比例域120,它规定了比例因子,变址域122,它规定了变址寄存器的寄存器数目,和规定了基址寄存器的寄存器数目的基址域124。诸如Pentium Pro或Pentium II处理器之类的现有处理器可以在或16或32位模式下运行。每个宏指令可以下列形式进行解码并执行1.固定的8位数据/地址指令;2.固定的16位数据/地址指令;或3.可变的16位或32位数据/地址指令,由IA处理器内的模式操作位(通常称为D位)确定。图2为示出本专利技术可实现在其中的示范性微处理器30的方框图。微处理器30为流水线式结构,并包含有序前端电路32与乱序后端电路34。前端电路32包含取指令引擎36,它从与微处理器30相关的主存储器(未示出),或从高速缓存宏指令和数据的内部统一高速缓冲存储器48,通过总线接口单元37获取可按照图1所示格式的宏指令。在可替换的实施例中,高速缓冲存储器48可位于指令翻译引擎(instruction translate engine)38的下游,并使高速缓冲存储器解码由宏指令推出来的微指令。由取指令引擎36获取的宏指令随后传播给将宏指令翻译成相应的微指令的指令翻译引擎38。微指令由指令翻译引擎38发布给形成后端电路34的一部分的,并包含微编码序列发生器(MS)41和微编码控制只读存储器(ROM)43的控制单元40(也称为微编码单元)。控制单元40翻译发送给它的微指令,并处理异常事件,断点和中断。微指令被从控制单元40分派给包含地址生成单元42,整数执行单元44(也称为运算/逻辑单元(ALU))和/或浮点执行单元46的流水线。微处理器30还包括将线性地址翻译成物理地址的页面单元50,并包括至少一个为此目的的翻译后援缓冲器(TLB)。图3是示出有关图2所示示范性微处理器的取指令引擎36与指令翻译引擎38的进一步细节的方框图。图中所示取指令引擎36包含一个分支预测单元(BPU)52,该单元检测从主存储器47或统一高速缓冲存储器48接收的宏指令,并根据例如BPU52所维护的分支历史,为本文档来自技高网...

【技术保护点】
一种预解码单字节指令前缀和分支指令指示符的方法,包含: 生成多个指令指示符; 组合该多个指令指示符中的至少两个;并解码组合的指令指示符。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:FR格鲁纳B扎维里
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1