对复杂指令译码生成微码的译码装置和方法制造方法及图纸

技术编号:2918434 阅读:236 留言:0更新日期:2012-04-11 18:40
公开了一种对复杂指令译码生成微码的译码装置,包括:初步译码模块,用于生成与输入的复杂指令相对应的、索引uROM中所存储的微码程序段的入口地址,并提供给uROM地址控制器;uROM地址控制器,用于根据初步译码模块输入的用于索引uROM中所存储的微码程序段的入口地址,将与输入的复杂指令相对应的微码程序段的已编码微码从uROM中读取到微码解码器;uROM,用于存储与复杂指令相对应的微码程序段;以及微码解码器,根据输入的复杂指令信息和处理器运行时刻状态信息,对从uROM中读取的已编码微码进行解码。

【技术实现步骤摘要】

本专利技术涉及通用处理器,尤其涉及一种对复杂指令译码生成微码 的译码装置和方法,通过暂停/恢复译码机制确保了译码的准确运行,且减小了用于存储微码程序段的ROM的容量。
技术介绍
超标量通用中央处理器采用多发射的流水线结构获得高性能,划 分为取指、译码、执行、写回、提交等流水级。在译码阶段,使用精 简指令集系统的处理器通常由处理器中硬件电路直接译码指令,而使用复杂指令集系统的处理器可能需要将l条复杂指令译码为处理器可 执行的2条或多条简单的指令,或者称之为微码。例如,在x86指令系统中,由于一部分指令实现了较为复杂的功能,因此x86处理器中需要 使用微码程序段完成指令的功能。当复杂指令对应的微码程序段较长 时,这些微码通常存储于处理器的ROM块中。在通用中央处理器中,指令以二进制流的方式表示。在一些中央 处理器系统上,指令的长度固定,而在另外一些系统上,指令的长度 不相同,如x86指令系统,指令的长度可为1字节到15字节,其中操作 码长度为1字节到2字节,其余字节指定了指令的寻址模式、操作数等 细节。x86指令通用的构成如图l所示,可以看到,x86指令可能含有1 4 字节可选的前缀,广2字节的操作码,l字节可选的寻址模式字节 (Mod/RM), 1字节可选的寻址地址字节(SIB),广4字节可选的地址偏移 字节和1 4字节可选的立即数操作数字节。x86指令的操作数域区分了不同指令的基本操作,受到前缀字节 的影响。例如前缀字节可以改变指令的操作数宽度和地址宽度属性, 改变内存访问段,或者指示处理器进行循环操作等。寻址模式字节和寻址地址字节(仅在32位模式下使用)指定了寄存器操作数或者访问存 储器的寻址模式所需要的操作数。可选的地址偏移字节指定了访问存 储器相对于基地址的偏移量。可选的立即数操作数字节作为指令的立 即数操作数参与运算。x86指令集中部分指令完成的功能非常复杂,需要中央处理器多 个连续的操作才能完成,这类指令称为复杂指令,l条复杂指令对应的 连续的操作称为该指令的微码程序段。例如P0PA指令,将ESP寄存器的 值(堆栈指针)指定的存储器中堆栈的值装载至^6寄存器中,并在每一 次装载过程中改变ESP寄存器值,这样的功能在处理器中使用连续的 Load操作和加法运算完成。不同的x86指令由于实现功能的不同使用不 同的微码程序段,对应的微码程序段通常存储于ROM中,通过读取R0M 中的对应的微码程序段完成译码工作。含有复杂指令的指令集系统的中央处理器接收指令后,将指令区 分为简单指令和复杂指令,简单指令由硬件电路直接译码,复杂指令 生成ROM中对应微码程序段的入口地址,由ROM控制电路通过地址索引 ROM单元得到微码程序段。同一条复杂指令可能由于指令操作数、处理器状态等不同使用不 同的微码或微码程序段,需要将不同的情况下的微码都预先存储于ROM中。ROM容量的增加导致微码读出的延迟增大,不利于越来越高速的处 理器的实现。同时,ROM容量的增加也使处理器成本提高。因此,减小 ROM容量是复杂指令系统处理器设计者所遇到的挑战。
技术实现思路
本专利技术的目的是提出一种对复杂指令译码生成微码的译码装置 和方法,通过暂停/恢复译码机制确保了译码的准确运行,且减小了用 于存储已编码的微码程序段的ROM的容量。根据本专利技术,提出了一种对复杂指令译码生成微码的译码装置,包括初步译码模块,用于生成与输入的复杂指令相对应的、用于索引uROM中所存储的微码程序段的入口地址,并提供给uROM地址控制器; uROM地址控制器,用于根据初步译码模块输入的用于索引uROM中所存储的微码程序段的入口地址,将与输入的复杂指令相对应的微码程序段中的已编码微码从uROM中读取到微码解码器;uR0M,用于存储与复 杂指令相对应的微码程序段;以及微码解码器,根据输入的复杂指令 信息和处理器运行时刻状态信息,对从uROM中读取的已编码微码进行解码。优选地,所述译码装置还包括暂停译码控制模块,用于检测能够改变处理器运行时刻状态信息的微码的译出或发射事件,暂停从uROM读取新微码,直到对所述能够改变处理器运行时刻状态信息的微 码的操作完成为止。优选地,所述已编码微码包括在操作码域、操作数域、操作数宽 度域上经过了编码的微码。优选地,所述输入的复杂指令信息和处理器运行状态信息包括用 于解码在操作码域、操作数域、操作数宽度域上经过了编码的微码所需的操作信息。根据本专利技术,还提出了 一种包括前述对复杂指令译码生成微码的 译码装置的通用中央处理器。根据本专利技术,还提出了一种对复杂指令译码生成微码的译码方 法,包括生成与输入的复杂指令相对应的、用于索引uROM中所存储 的微码程序段的入口地址,并提供给uROM地址控制器;uR0M地址控制 器根据生成的用于索引uROM中所存储的微码程序段的入口地址,将与 输入的复杂指令相对应的微码程序段中的己编码微码从uROM中读取到 微码解码器;根据输入的复杂指令信息和处理器运行时刻状态信息, 对从uROM中读取的已编码微码进行解码。优选地,所述译码方法还包括在检测到能够改变处理器运行时 刻状态信息的微码的译出或发射事件时,暂停从uROM读取新微码,直 到对所述能够改变处理器运行时刻状态信息的微码的操作完成为止。附图说明通过参考以下结合附图对所采用的优选实施例的详细描述,本专利技术的上述目的、优点和特征将变得显而易见,其中200610088938.9说明书第4/8页图l是示出了长度可变的x86指令的构成的示意图2是示出了一种通用中央处理器的具体实现的方框图,该中央 处理器包括根据本专利技术实施例的译码装置;图3是示出了包括在图2的中央处理器中的根据本专利技术实施例的译码装置的构成的方框图;以及图4是示出了根据本专利技术实施例的复杂指令译码方法的流程图。具体实施例方式下面将参考附图来描述本专利技术的优选实施例。图2是示出了一种通用中央处理器的具体实现的方框图,该中央 处理器包括根据本专利技术实施例的译码装置。如图2所示,所述中央处理器包括预转移预测模块201、寄存器堆 203、指令缓存205、译码器207、指令调度模块209、执行功能部件211、 译码/预取模块213、总线接口模块215和数据缓存217。在典型的处理器中,程序运行时代码和数据存储在存储器中,总 线接口模块215负责完成处理器对存储器的数据的装载和保存的请求。 预译码/预取模块213从总线接口模块215接收指令,将指令装载入指令 缓存205中的同时,对指令进行预译码。转移预测模块201根据预译码 后的指令预测下一个指令基本块的起始地址,指示预译码/预取模块 213预取预测的指令基本块。指令缓存205中的指令进入译码器207进行 译码,变换为执行部件可执行的内部指令格式。简单指令可能译码为 单条对应的指令,复杂指令可能译码为多条指令。译码后的指令进入 指令调度模块209,指令调度模块209在指令准备好操作数后,发射指 令至各个不同的执行功能部件211完成对应的功能。执行功能部件211 可能需要从寄存器堆203存取数据,也可能存取数据缓存217缓存的存 储器数据。当存取的数据无法在数据缓存217中找到时,数据缓存217 请求总线接口模块215从存储器中取回该数据。下面将描述图3。图3是示出本文档来自技高网
...

【技术保护点】
一种对复杂指令译码生成微码的译码装置,包括:初步译码模块,用于生成与输入的复杂指令相对应的、用于索引uROM中所存储的微码程序段的入口地址,并提供给uROM地址控制器;uROM地址控制器,用于根据初步译码模块输入的用于索引u ROM中所存储的微码程序段的入口地址,将与输入的复杂指令相对应的微码程序段中的已编码微码从uROM中读取到微码解码器;uROM,用于存储与复杂指令相对应的微码程序段;以及微码解码器,根据输入的复杂指令信息和处理器运行时刻状态 信息,对从uROM中读取的已编码微码进行解码。

【技术特征摘要】

【专利技术属性】
技术研发人员:袁楠范东睿
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

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

1