专利名称:由可改变的指令格式而提高程序码密集度的微控制器结构的制作方法
技术领域:
本发明有关于嵌入式系统的微控制器结构,尤其指一种由可改变的指令格式而提高程序码密集度的微控制器结构。
高整合度是嵌入式系统(Embedded System)中非常重要的特色之一,而伴随着嵌入式设备处理的功能日益增加,只读存储器(ROM)的容量亦随之增加。但较大容量的只读存储器已逐渐变成影响整体系统成本的主要因素,而且也可能是指令提取的瓶颈所在,因而进一步影响执行效能。
要解决此一问题,技术上所面临的挑战即是在不牺牲系统功能性与执行效能的条件下,如何减少只读存储器的容量?目前已提出的解决方案可归纳成二类,(1)提供原始指令集结构的精简版(Compact Subset ofthe Original ISA),及(2)采用指令区块导向的压缩方法(Instruction BlookOriented Compression Scheme)。
前述第一种方案的典型代表为ARM Thumb与SGI MIPS16,它们分别为ARM与MIPS的精简版。此类方法较常用于原始指令集为32位元的指令长度,由减少每个栏位的位元数而达到16位元的指令长度,因此是原来指令集的精简版。以MIPS为例说明,MIPS的指令是32位元固定长度的指令格式,分成三类别I类(Immediate)、J类(Jump)及R类(Register-to-Register)。以I类为例,如
图1所示,它由运算码(Opcode)、来源暂存器(Source Register)、目标暂存器(Target Register)、及立即值(Immediate Value)栏位所构成。在某些预先规范的条件下,若缩小每个栏位的长度,即可得到相对应的I类16位元精简版(如图的MIPS16所示)。
由此类似的方法,可以定义出MIPS精简版指令集MIPS16。因此,使用MIPS16表示的程序码会减少其长度。而在硬件方面,如图2所示,需额外加入MIPS16解压缩逻辑22,以将由指令快取存储器21中所提取的MIPS16的指令解压缩(还原)为MIPS指令,然后再馈入原来标准的MIPS管线23中加以执行。
前述方案有下列缺点(1)通常精简版指令集不能单独存在,并须与原始的指令集结构共存,因而,降低了弹性。(2)因为是精简版也是子集合的缘故,所以会造成原始程序指令数的增加,降低压缩的效果。(3)硬件实作方面乃是通过解压缩逻辑的辅助而依序完成,所以可能影响原始的管线设计造成临界路径(Critical Path),进而降低执行速率。(4)没有针对不同的应用程序执行不同程度的压缩优化(Optimization),而提供订制(ustomization)的好处。
又,前述第二类方案的典型代表为IBM CodePack与Wolfe CCRP(Compressed Code RISC Processor)。此方案通常为了达到执行时期解压缩的有效性,大多数乃采用修正的赫夫曼(Huffman)编码作为压缩的演算法,把指令快取列(Instruction Cache Line)作为压缩单位,将压缩后的程序储存在主存储器中,而指令快取存储器乃存放解压缩后的指令。
以CCRP为例,图3显示了CCRP中存储器系统的组织结构。如上所述,指令存储器31(Instruction Memory)储存了压缩后的程序码,而指令快取存储器32(Instruction Cache)则存放未压缩的指令;另外,快取存储器回填引擎33(Cache Refill Engine)则负责指令解压缩的动作。程序执行时,若发生快取存储器存取击中(Cache Hit)时则中央处理单元34(CPU)乃直接提取此未压缩的指令列加以执行。但是,当发生快取存储器存取未击中(Cache Miss)时,快取存储器回填引擎33会从指令存储器31中提取压缩后的指令,执行解压缩,再将解压缩后的指令存入指令快取存储器33中,然后CPU34再从指令快取存储器32中提取刚存入的指令继续执行。
另,此存储器系统并采用了行位址表311(Line Address Table,LAT)与快取行位址缓冲器35(Cache Line Address Lookaside Buffer,CLB)。此行位址表311乃是在压缩阶段时由压缩软件工具所产生,用以映对未压缩指令区块的位址至压缩后的指令区块的位址,以便解决控制转移(Control Transfer)指令所造成分歧目的位址(Branch Target Address)不一致的问题。而快取行位址绘冲器35则是辅助行位址表311的使用,减少快取存储器存取未击中时指令回填所需的时间。
前述方案则有下列的缺点(1)当指令区块大小递减时,LAT储存表格的额外负担就会递增。(2)在微控制器(Microcontroller)或较低阶的嵌入式应用中,并没有指令快取存储器的存在,所以此方法不适用于这些系统。(3)没有针对不同的应用程序执行不同程度的压缩优化,而提供订制(Customization)的好处。
由是可知,前述用以减少程序码的大小的已知技术仍有诸多失,而无法满足实际需要,因而仍有予以改进的必要。
本发明的目的丰提供一种由可改变的指令格式而提高程序码密集度的微控制器结构,以通过指令压缩的方式,在不牺牲系统功能性与执行效能的条件下,降低只读存储器容量的需求,进而减少整体系统的成本。
为达到前述目的,本发明的微控制器结构包括一存储器,储存有压缩后的指令,其中,每一压缩的指令由一群组字首附加至少一索引所构成;一压缩指令缓冲器,用以将自存储器所提取的指令予以存放缓冲;一下个位址逻辑,依据微控制器的目前状态以决定是否自存储器提取指令,或是直接将压缩指令缓冲器的下一个指令送出;以及一指令解压缩器,用以将由该压缩指令缓冲器所送出的目前压缩指令加以解压缩成原始指令格式;其中,该指令解压缩器具有复数个指令群解码表,每一指令群解码表储存有预定类型的原始指令,该指令解压缩器依据该压缩指令的群组字首而选择一指令群解码表,并以该压缩指令的索引来搜寻取出该指令群解码表的相对应原始指令。
其包含一解码与执行单元,以将解压缩的指令解码成硬件控制讯号,以操控执行核心执行相应的动作。
该指令解码器包括一指令群萃取器及一多工器,该指令群萃取器用以将由该压缩指令缓冲器所送出的目前压缩指令加以分解,以依据压缩指令的群组字首来控制该多工器,选择一指令群解码表,并以压缩指令的索引来搜寻取出该指令群解码表中相对应的原始指令,而由该多工器输出至该解码器与执行单元以执行。
该存储器为一只读存储器。
该存储器所储存的压缩指令由一第一群组字首附加一指令索引所构成,该指令索引值用于搜寻一第一指令群解码表,而该第一指令群解码表存放有对应的原始指令。
该存储器所储存的压缩指令由一第二群组字首附加一表示分歧条件码的运算码索引及一表示分歧目的位址的位移索引所构成,该运算码索引及该位移索引分别用以搜寻一第二指令群解码表的第一及第二解码子表,该第一解码子表存放有对应的原始指令的分歧条件码,该第二解码子表存放有对应的原始指令的分歧目的位址。
该存储器所储存的压缩指令由一第三群组字首附加一表示运算码的运算码索引及一表示立即值的立即索引,该运算码索引及该立即索引分别用以搜寻一第三指令群解码表的第三及第四解码子表,该第三解码子表存放有对应的原始指令的运算码,该第四解码子表存放有对应的原始指令的立即值。
该存储器中亦储存有一第四群组字首附加原始指令的程序码。
该群组字首为固定长度。
该存储器中出现频率较高的指令具有较短的群组字首。
下面以较佳实施例并结合附图对本发明作详细说明,其中图1显示已知MIPS及MIPS16指令的映对关系;图2概略显示已知MIPS16系统的硬件结构;图3概略显示已知CCRP的存储器系统结构;图4显示以使用本发明的微控制器结构来提供嵌入式系统设计的解决方案;图5显示依据本发明的订制指令与解码表格间的关系;图6显示本发明的微控制器结构的方块图;图7显示本发明的微控制器结构中的指令解压缩器的方块图。
有关本发明的由可改变的指令格式而提高程序码密集度的微控制器结构的一较佳实施例,请先参照图4所示以使用的结构来提供嵌入式系统设计的解决方案,其设计基于以下特性
(1)嵌入式系统中,应用程序的特定功能且不随时改变,亦即,在产品开发阶段,程序的规格与特性大致已固定。
(2)一般而言,不论是组合语言程序码或是编译器产生的程序码均趋向仅使用所有可用指令中的少量指令。
因此,如图4所示,在程序开发阶段(Coding Phase),前述的方案如传统方式一般,依然可用组合语言或高阶语言(例如C)撰写应用程序,而得到原始指令集(未压缩)所构成的执行档43。接着,在编码(压缩)阶段(Encoding Phase),可通过压缩软件工具(例如Profiler、Translator)的辅助而得到订制指令集46(压缩)所构成的执行档44,以及可供解码的资讯45,以进一步用于微控制器结构41的硬件设计。
前述订制的指令集46可以依据原始指令的特色(例如出现频率与指令格式)加以归类成不同的指令群(Instruction Group),然后以更精简的方式表示,而达到指令压缩的效果。例如以较少的位元数表示较常出现的指令,而此新的订制指令即代表某一表格的索引值;而微控制器结构41即可利用表格查询(Table Lookup)方式对应出原来的指令或直接解码出控制讯号。
图5显示了前述订制指令与可供解码的资讯的解码表格间的关系的一范例。在此范例中,系假设将原来指令归类成四种指令群组G1R-Group(Instruction without Immediate),此指令群通常为由最简单的指令所构成,它不是控制转移的指令,也不是含有立即值的指令。
G2C-Group(Control Transfer),此类型指含有控制转移的指令,通常它也含有分歧目的的位址栏位。
G3I-Group(Instruction with Immediate),此类型指令为含有立即值的指令,但不是控制转移指令。
G4M-Group(Miscellaneous Instruction),此类型是指未归类的指令。
对于G1类型的指令,其对应的订制指令由群组字首(Group Prefix)GI附加一指令索引(Instruction Index)栏位所构成,其中,该指令索引值用于搜寻对应GI指令群解码表51,而该GI指令群解码表51即存放有对应的原始指令。
对于G2类型的指令,其对应的订制指令由群组字首G2附加一表示分歧条件码的运算码索引(Opcode Index)及一表示分歧目的位址的位移索引(Displacement Index)栏位所构成,而此二个索引值是分别用于搜寻G2指令群解码表52的两个不同的解码子表521及522,而该解码子表521即存放有对应的原始指令的分歧目的位址。由此,可映对出不同的资讯而构成完整的指令解码。
对于G3类型的指令,其对应的订制指令由群组字首G3附加一表示运算码的运算码索引(Opcode Index)及一表示立即值的立即索引(Immediate Index),而此二个索引值是分别用于搜寻G3指令群解码表53的两个不同的解码子表531及532,而该解码子表531即存放有对应的原始指令的运算码,该解码子表532存放有对应的原始指令的立即值。由此,可映对出不同的资讯而构成完整的指令解码。
而G4类型的指令是属于没有压缩的指令,所以,此类型不需用解码表解压缩成原来的指令格式,而是用原来的方式加以解码,因此,其对应的订制指令由群组字首G4附加原始的指令(Original Instruction)。
前述群组字首G1-G4可为固定长度(例如2位元),亦可为可变长度的编码,例如依据赫夫曼(Huffman)编码而将较短的码赋予给出现频率较高的类型的指令的群组字首。
前述所归纳的G1-G4指令群仅为一示例,在实际应用时,可以依据应用程序的特性与硬件实作考量,配合着Profiling资讯,再加以明确定义,定义指令群的分类方式与总数、群组字首的格式与长度、及订制指令的长度等选项,以依据应用程序的不同做优化处理,达到订制(Customization)的效果。而其中显而易见的限制就是,大部分订制指令的指令长度必须小于原始指令的长度,如此才会达到指令压缩的效果。
经压缩后的订制指令由本发明的微控制器结构41所执行,图6即显示了本发明的微控制器结构41的方块图,其包括有一存储器61、一压缩指令缓冲器62、一下个位址逻辑63、一指令解压缩器64、及一解码与执行单元65,其中,该存储器61用以储存压缩后的程序码,由于嵌入式系统的程序码不需要修改,所以该存储器61较佳地为一只读存储器(ROM)。
该压缩指令缓冲器62供微控制顺在提取指令时,将自存储器61所提取的区块的内容予以存放缓冲。而由于订制指令的指令长度小于原始指令的长度,因此,该压缩指令缓冲器62可能内含数个压缩的指令。
该下个位址逻辑63的功能是依据微控制器的目前状态而决定是否要去存储器61提取指令,或是直接将压缩指令缓冲器62的下一个指令送出。
该指令解压缩器64用以将该压缩指令缓冲器62送出的目前压缩指令加以解压缩(还原)成原始指令格式,然后再进一步馈入该解码与执行单元65,由控制讯号解码器651解出硬件控制讯号,以操控执行核心652执行相应的动作,其中,该控制讯号解码器651与执行核心652为一般微控制器所既有,故在此不再详述其结构。
而由前述下个位址逻辑63及解压缩指令缓冲器62的使用,微控制器可正确地提取所要执行的指令,其运作方式由如下步骤所示(1)该下个位址逻辑63依据目前微控制器的内部状态,而得知下一个要存取的指令位址为何。
(2)该压缩指令缓冲器62将内含指令个数等资讯告诉下个位址逻辑63,以便决定即将要执行的指令是否存在于该压缩指令缓冲器62中。
(3)若不存在于压缩指令缓冲器62,则下个位址逻辑63会将要存取的指令位址送出,以由该存储器61进行下一笔指令提取动作。然后跳至步骤(5)执行。
(4)若存在于压缩指令缓冲器62,则该压缩指令缓冲器62由提取的指令区块中选取正确的指令,并馈入指令压缩器64进行解压缩的动作。然后跳至步骤(1)执行。
(5)将由存储器61提取区块的内容存入该压缩指令缓冲器62内部的缓冲器,并加以对齐(Alignment)。
(6)依据指令群组字首加以决定压缩指令的长度。
(7)如此,该压缩指令缓冲器62即可知道此指令区块内含多少个压缩的命令,以及每个压缩指令的边界。将上述相关的资讯,通过控制讯号告知下个位址逻辑63。
经前述所提取的压缩指令再由该指令解压缩器64将其解压缩成原始指令,图7显示该指令解压缩器64的方块图,其包括一指令群萃取器641、复数个指令群解码表50、及一多工器643,其中,该指令群萃取器641用以将由该压缩指令缓冲器62所送出的目前压缩指令加以分解,以依据压缩指令的群组字首的内容来控制该多工器643,选择一指令群解码表50,并以压缩指令的索引栏位的值来搜寻取出该指令群解码表50中相对应的原始指令,而由该多工器643输出至该解码与执行单元65执行。
又前述指令群解码表50的资讯可通过压缩软件工具Translator的辅助加以获得,而且这些表格可利用可程序逻辑阵列(PLA)实作,在产品量产阶段再加以程序化(Programming)。此外,由于本发明在订制新指令时,已依据指令特性加以分类,所以对这些解码表而言,并不会造成单一个大表格,而是由一些小表格所构成。基于此特性,通过表格查询方式完成的解压缩动作并不会造成硬件的冲击,亦不致产生很长的存取时间。
由以上说明可知,本发明可由在产品开发时期分析收集应用程序的原始指令码特性,而重新订制指令集结构,以减少程序码的大小,而新的指令即代表某一表格的索引值,解码电路可利用表格查询方式对应出原来的指令,因此,相较于已知技术,本发明确具有以下优点(1)使用可改变的指令格式,以一对一的指令层次压缩方式,故适用于较低阶的嵌入式系统中(例如微控制器的应用)。
(2)针对不同的嵌入式应用程序的需求,以订制式指令集结构加以优化且压缩原始各序,进而提供订制的好处。
(3)优化且压缩的结果可获得较高的程序码密集度(Code Density)及较少的程序码,进而降低只读存储器容量的需求。
(4)因为提高了程序码密集度,增加了指令提取利用率,所以降低了存储器总线流量(Memory Bus Traffic),进而减少了整体系统的功率消耗。
(5)在产品开发阶段采用软硬件协同设计(Software/HardwareCodesign),因而提高了成本有效性(Cost-Effective)。
综上所述,本发明无益就目的、手段及功效,均显示其不同于已知技术,应说明的是,上述诸多实施例仅为了便于说明而举例而已,本发明所主张的权利范围自应以申请专利范围所述为准,而非仅限于上述实施例。
权利要求
1.一种由可改变的指令格式而提高程序码密集度的微控制器结构,其特征在于,主要包括一存储器,储存有压缩后的指令,其中,每一压缩的指令由一群组字首附加至少一索引所构成;一压缩指令缓冲器,用以将自存储器所提取的指令予以存放缓冲;一下个位址逻辑,依据微控制器的目前状态以决定是否自存储器提取指令,或是直接将压缩指令缓冲器的下一个指令送出;以及一指令解压缩器,用以将由该压缩指令缓冲器所送出的目前压缩指令加以解压缩成原始指令格式;其中,该指令解压缩器具有复数个指令群解码表,每一指令群解码表储存有预定类型的原始指令,该指令解压缩器依据该压缩指令的群组字首而选择一指令群解码表,并以该压缩指令的索引来搜寻取出该指令群解码表的相对应原始指令。
2.如权利要求1所述的微控制器结构,其特征在于,其包含一解码与执行单元,以将解压缩的指令解码成硬件控制讯号,以操控执行核心执行相应的动作。
3.如权利要求2所述的微控制器结构,其特征在于,其中,该指令解码器包括一指令群萃取器及一多工器,该指令群萃取器用以将由该压缩指令缓冲器所送出的目前压缩指令加以分解,以依据压缩指令的群组字首来控制该多工器,选择一指令群解码表,并以压缩指令的索引来搜寻取出该指令群解码表中相对应的原始指令,而由该多工器输出至该解码器与执行单元以执行。
4.如权利要求1所述的微控制器结构,其特征在于,其中,该存储器为一只读存储器。
5.如权利要求1所述的微控制器结构,其特征在于,其中,该存储器所储存的压缩指令由一第一群组字首附加一指令索引所构成,该指令索引值用于搜寻一第一指令群解码表,而该第一指令群解码表存放有对应的原始指令。
6.如权利要求1所述微控制器结构,其特征在于,其中,该存储器所储存的压缩指令由一第二群组字首附加一表示分歧条件码的运算码索引及一表示分歧目的位址的位移索引所构成,该运算码索引及该位移索引分别用以搜寻一第二指令群解码表的第一及第二解码子表,该第一解码子表存放有对应的原始指令的分歧条件码,该第二解码子表存放有对应的原始指令的分歧目的位址。
7.如权利要求1所述的微控制器结构,其特征在于,其中,该存储器所储存的压缩指令由一第三群组字首附加一表示运算码的运算码索引及一表示立即值的立即索引,该运算码索引及该立即索引分别用以搜寻一第三指令群解码表的第三及第四解码子表,该第三解码子表存放有对应的原始指令的运算码,该第四解码子表存放有对应的原始指令的立即值。
8.如权利要求1所述的微控制器结构,其特征在于,其中,该存储器中亦储存有一第四群组字首附加原始指令的程序码。
9.如权利要求1所述的微控制器结构,其特征在于,其中,该群组字首为固定长度。
10.如权利要求1所述的微控制器结构,其特征在于,其中,该存储器中出现频率较高的指令具有较短的群组字首。
全文摘要
本发明为一种由可改变的指令格式而提高程序码密集度的微控制器结构,在存储器储存有压缩后的指令,其中,每一压缩指令由一群组字首附加至少一索引所构成,并以一指令解压缩器将欲执行的压缩指令加以解压成原始指令格式,其中,该指令解压缩器具有复数个指令群解码表,每一指令群解码表储存有预定类型的原始指令,该指令解压缩器依据该压缩指令的群组字首而选择一指令群解码表,并取出该指令群解码表的相对应原始指令。
文档编号G06F9/22GK1393767SQ01129569
公开日2003年1月29日 申请日期2001年6月27日 优先权日2001年6月27日
发明者高敏富, 李桓瑞 申请人:凌阳科技股份有限公司