一种指令集的优化制造技术

技术编号:2820804 阅读:338 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种指令集的优化。在第一方面,提供一种微处理器,包括指令存储器,混合存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指令;指令译码单元,将第一长度指令和第二长度指令分别译码;和,转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界。采用该优化的指令集,程序代码尺寸得以显著降低。

【技术实现步骤摘要】

本专利技术涉及微处理器,具体地说涉及对微处理器所采用的指令集 的优化。
技术介绍
如今,存储子系统的成本逐渐高于微处理器。压缩代码以适应受 到成本或空间限制的存储子系统已经成为嵌入式系统开发的 一项重要事务。节约存储成本, 一方面需要编写紧凑的代码;另一方面,微处 理器的指令集对存储器的消耗同样影响很大。通常,微处理器的指令 为32比特,其中有些指令用足32比特,比如ADDRd, Ra, Rb。有些 指令不需要32比特,比如JUMP和PUSH指令。为此,有人设计了 16比特的指令子集或者长度指令,以降低代码尺寸。以ARM公司的代码压缩方案(Thumb)为例。Thumb实际上是添加到 ARM的标准RISC指令集之上的独立指令集,由大约36条16位长度指 令构成。通过一条模式切换指令在这两种指令集之间进行切换。通过 使用这些较短的指令替换ARM标准的32位指令,可以将某些代码的规 模减小。然而,Thumb代码和标准ARM代码不能混杂使用,必须显式 地在两种模式间进行切换。这迫使程序员将所有的16位代码与32位 代码分开并隔离到独立的模块中。图l是采用Thumb方案的代码存储 示意图。另外,Thumb模式下不能使用全部寄存器。还有些代码压缩方案能够实现任意地动态混合16比特和32比特。 图2 (a)是一种16比特和32比特混合存储的示意图。然而,这样的 代码压缩方案需要复杂的硬件配置加以支撑。另外,当转移指令指向 il指令时,il指令的存储位置受到限制。此时,iO和il的存储位置 如图2 (b)所示。由图2 (b)可见,存储空间存在一定的浪费。因此,迫切地需要有一种能够克服以上问题的指令代码压缩方案
技术实现思路
在第一方面,本专利技术提供一种微处理器。微处理器包括指令存储 器,混合存储具有不同长度的第一长度指令和第二长度指令,所述第 一长度指令具有小于第二长度指令的长度,所述第 一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取 混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指 令;指令译码单元,将第一长度指令和第二长度指令分别译码;和, 转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指 令之任何一个的边界。在第二方面,本专利技术提供一种在微处理器中执行指令的方法,所 述指令包括具有不同长度的第一长度指令和第二长度指令,所述第一 长度指令具有小于第二长度指令的长度,所述第 一长度指令和第二长 度指令采用操作码加以区分,所述方法包括从存储器中提取混合存 储的指令;根据操作码从中分离出第一长度指令和第二长度指令;将 第一长度指令和第二长度指令分别译码;当进行转移操作时,转移指 令指向第 一和第二长度指令之任何一个的边界。在第三方面,本专利技术提供一种计算机程序产品,包括计算机可读 介质,其上混合存储具有不同长度的第一长度指令和第二长度指令, 所述第一长度指令具有小于第二长度指令的长度,所述第 一长度指令 和笫二长度指令釆用操作码加以区分,以便在执行时微处理器根据操 作码从混合存储的指令分离出第一长度指令和第二长度指令,并且当 进行转移操作时,转移指令指向第 一和第二长度指令之任何一个的边 界。根据第四方面,提供一种供微处理器执行的指令集,包括具有不 同长度的第一长度指令和第二长度指令,第一长度指令具有小于第二 长度指令的长度,第 一长度指令和第二长度指令采用操作码加以区分 并且可以混合存储,以便在执行时微处理器根据操作码从混合存储的 指令分离出第一长度指令和第二长度指令,并且当进行转移操作时, 转移指令指向第 一和第二长度指令之任何一个的边界。在第一、第二、第三和第四方面中,优选地,所述第一长度指令 具有小于第二长度指令的长度。优选地,操作码在第一长度指令中。 优选地,第一长度指令是16比特;第二长度指令是32比特。本专利技术有效解决了 32比特和16比特指令的混合存储问题,它可以任意混合16比特和32比特;可以分支到任何16比特指令边界。程 序代码尺寸得以降低,可以达到20-30%。另外,16比特指令可以全面 使用寄存器。附图说明下面将参照附图对本专利技术的优选实施方案进行更详细的说明,其中图1是采用Thumb方案的代码存储示意图2 ( a )是一种现有技术的16比特和32比特指令混合存储的示 意图2 (b)是现有技术的包含转移指令的混合指令存储的示意图3是根据本专利技术的一个实施方案的指令格式图4是实施本专利技术的一种微处理器结构图;以及图5是指令抽取之后指令緩冲区的一种数据格式示意图。具体实施例方式图3是根据本专利技术的一个实施方案的指令格式图。如图3所示, 有一个32比特存储空间。该32比特存储空间可能存储一个32比特, 也可能存储2个16比特指令。译码时首先将32比特的字当作为32比 特指令,并且查看第27-31位。如果第27-31位不是16比特指令的操 作码,则表明这是一个32比特指令。如果第27-31位存在16比特指 令的操作码,则表明32位字的高16位(第16-31位)属于16比特指 令,显然,32位字的低16位(第0-15位)也属于16比特指令,故 此低16位译码为另一个16比特指令。需要说明,该操作码并非仅仅设置在16比特的高5位。它可以设 置在16比特的任意位置,也可以由一定数量的比特组合而成。根据本专利技术,16比特指令可以全面使用寄存器,比如32个寄存器。 通常的指令操作往往需要占用32比特的存储空间。例如add rd rl r2。 它实际进行的操作是rd-rl+r2。由于要全面使用32个寄存器,每个 寄存器需要占据5个比特的空间。寄存器rd、 rl、 r2就要占据5X3=15 比特空间。因此, 一般意义下16比特存储空间不足以存储完成此类操 作的指令。作为变通, 一种常规的办法是限制指令所访问的寄存器范围,而将指令从32比特压缩为16比特。本专利技术针对这种情况作了相 应的改变,允许16比特指令访问所有寄存器(32个寄存器)。在一 个例子中,在执行add rd rl r2加法操作时,用2个寄存器rl、 r2 来解决,也就是add r2 rl r2, rl、 r2仅占用5X2=10比特。这样, 原本需要32比特的操作就可以用16比特指令来完成。因此,本专利技术 利用类似的方法来充分利用16比特指令,使得16比特指令可以全面 地使用寄存器。根据本专利技术,转移指令可以任意转移到16比特边界和32比特边 界。在通常的操作中,32比特指令要占4个字节,因此在取指令单元 每执行完一次操作,程序计数器PC就要自动加4,在转移控制指令时 会把32比特的地址写入PC,因此转移控制指令只能寻找32位边界。 在本专利技术中,为了充分使用16比特指令,在取指令时会针对指令字节 数判断指令计数器PC的增加量。在一个例子中,32比特指令加4, 16 比特指令加2。这样,在执行转移控制指令时,就可以转移到16位的 边界。例如分支branch指令既可以寻找32位的地址边界,也可以寻 找16位的地址边界。包含这样的16比特指令和32比特指令的程序(例如c语言)由 编译器编译成紧凑的二进制文件,存储在内存或指令高速緩冲存储器(简称指令緩存)中。图4是实施本专利技术的微处理器结构图。如图4所示,微处理器包 括指令抽本文档来自技高网
...

【技术保护点】
一种微处理器,包括指令存储器,混合存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指令;指令译码单元,将第一长度指令和第二长度指令分别译码;和,转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈新中卢佳文梅思行
申请(专利权)人:北京简约纳电子有限公司
类型:发明
国别省市:11[中国|北京]

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

1