1.引言
微控制器(Microcontroller)自上世纪70年代出现以来,在将近30年的时间里得到了迅猛的发展和广泛的应用。8位微控制器是目前应用数量最大的微控制器,也是目前最多公司致力耕耘的市场;其市场及价格竞争都极为激烈,各种多功能需求以及不同规格的产品推陈出新的速度也极为快速。随着集成电路和半导体工艺技术的快速发展,FPGA和SOC技术的不断竞争和融合,电子产品的设计逐渐向系统性能更好、功耗更小、成本更低、可靠性更高、开发更容易的方向发展。因此,迅速推出符合市场需求的高性价比、低功耗、高经济效益的8位微控制器芯片或IP Core成为了现今不少公司竞争相逐的热点。
2.目前8位微控制器的更新和设计趋势
对于不同的微控制器(MCU)产品应用,不仅需要考虑不同厂家MCU的性价比,而且还需要考虑不同指令系统下MCU应用特点。针对不断涌现出来的新的智能化电子产品,人们一直在开发适合于不同嵌入式系统应用的MCU新产品[2]。不同厂家的MCU产品其指令集各不相同,特别是指令集系统架构的不同,如市场上广泛应用的MCS51系列和PIC系列微控制器则分别采用CISC指令系统和RISC指令系统。
微控制器按照指令系统可以分为CISC、RISC、类RISC(RISC-LIKE)等几种。传统的MCS51控制器属于CISC型,其代码密度高,但大多数指令需要多个时钟周期完成。RISC型一般指令密度较低,但指令效率很高。类RISC型则兼有CISC和RISC的优点。RISC和类RISC之所以有如此高的指令效率,得益于小指令集带来的硬布线结构和流水线结构。简单的指令集可以用硬布线进行指令译码,而不需要用微码控制的方式,提高了译码的效率。流水线结构将指令分成几步完成,在流水线填满工作时,每条指令的平均执行时间(CPI)在1个时钟周期左右[3]。一般来说,RISC比同等的CISC要快50%--70%,同时更容易设计和纠错。
因此,目前对8位微控制器的产品开发和研究设计主要是以兼容市场上已被客户广泛采用的产品为前提,不断提高性能并降低功耗以适应市场竞争和技术发展。对于原先为CISC指令系统的微控制器产品,在层出不穷的更新系列中已经渐渐的融合进了RISC思想;对于采用RISC指令系统的微控制器来说,更多的做法仍然是针对高性能低功耗的需求对其整个体系架构不断地进行优化和改善,尤其是流水线结构的改进最为多见。本文正是在这种形势下提出的,主要讨论RISC体系架构的8位微控制器产品的设计技术。
3.RISC微处理器的结构特征和设计原则
虽然现在业界对RISC 处理器应该具有什么特征还有不同的看法,但是各种RISC结构都有一些共性[4]:(1)采用哈佛总线结构,大多数指令在一个时钟周期内完成以便于实现结构流水化;(2)采用独立且简单的装载/存储结构;(3)指令解码通常都是硬连线实现而不是微解码,以便加快执行速度;(4)多数指令具有固定格式,以简化指令编码和译码;(5)较小的指令集和少数几种寻址模式;(6)数据通道流水线化,使处理过程高度并行;(7)采用大容量高速寄存器堆(或称为寄存器文件),尽量避免与速度较低的系统RAM交换数据。尽量将运算数据存放在寄存器中,从而减少访问内存的次数。根据以上的讨论,下文重点从体系架构的角度出发,就高性能、低功耗两方面对8位RISC微控制器在设计中的关键技术进行了探讨研究。
4.关键技术
4.1 RISC指令集的选取
控制器系统的使用跟软件编程与硬件设计之间的规格接口密切相关,这个接口就是微控制器的指令集。指令体系结构(ISA)是进行微处理器软硬件协同设计的前提。指令集必须完备,使所有可计算的功能都在合理的程序空间内得以实现;而且指令集又必须是高效的,以便使常用的功能可以用相对少的指令实现。因此,提供给应用软件开发的微控制器系统必须有一个完备而高效的指令集。
指令集直接决定微控制器的内部硬件结构,同时也是用户程序编译生成目标代码的依据。指令集的最终确定与整个系统所需的程序存储器、数据存储器、寄存器变量及存储器寻址方式密切相关且相互制约。各个部件乃至具体的字节都应该有唯一的地址,以便指令集能够正确对各个部件或字节进行辨认操作。因此也就有了相应的一系列针对不同产品的不同措施: 1)从所需要的地址长度和相应增加的寄存器来权衡指令的长度;2)对指令进行分类并分别确定各类的指令字节格式,以简化操作控制信号的译码逻辑;3)增加相应的寄存器以弥补指令字节长度的不足;4)指令字节格式分配应考虑到相应部件的结构复杂度及对应的寻址方式;5)存储器、寄存器、I/O口是否统一寻址。以上所列举的并不详尽也无先后顺序之分,应该同时进行分析。相应的措施所对应的性能、功耗、设计复杂度各不一样,应统一考虑。
对ISA进行功耗分析应该从指令代码容量和指令执行效率两方面考虑。指令集大小、寄存器变量、存储器寻址方式、流水线结构等技术的选定都和指令代码密度有紧密联系。研究发现,在RISC的精简指令集中适当增加一些特定的复杂指令不失为提高代码密度、保证处理器高性能、低功耗的可行方法。因此能够产生高指令代码密度的指令集无疑是RISC低功耗设计的首选[5]。
4.2 具有共享区的寄存器堆的分页设计
RISC设计思想的最主要特点是所有的操作都是面向寄存器的。利用寄存器---寄存器操作的指令进行数据传送,加快了速度,而且还简化了指令控制逻辑,缩小了硬布线逻辑构成的控制部件的芯片面积。
在指令中固定寄存器地址的位数必然限制寄存器的数量,但是引入高端处理器的分段、分页的设计思想就可以扩展寻址的范围。分段、分页的设计思想的根本出发点在于将存储器的线性地址分解成二维或多维地址;在指令中只表达最低维地址,而使用其它设施(如段号寄存器、页号寄存器)用来存放高维地址。一般将寄存器堆分成若干个页,每个页有固定的大小,在指令中只使用寄存器的页内地址。在系统专用寄存器中设置一个页号寄存器,通过改变其内容来切换对不同页寄存器的访问[6]。
为克服单纯分页机制中的各种缺陷,通常采用具有共享区的分页设计,这样不仅减少了指令中寄存器逻辑地址的位数,而且在任何时候都能够访问系统寄存器,同时便于不同页寄存器之间通过共享区中的通用寄存器交换信息。当然还得有相应的逻辑地址到物理地址的映射的方法措施。
4.3 程序空间的分页设计
由于和寄存器堆同样的原因,在指令中若采用完整的程序空间地址,也会局限程序空间的大小,所以对程序空间通常也采用了分页的设计思想,同时在不同页内设置了公共程序区(若指令长度完全符合程序空间地址的要求,则无需此思想),其设计思想类同于具有共享区的寄存器分页设计,在此不再赘述。唯一与寄存器公共区不同的是:程序公共区是为程序在不同页之间跳转提供平台。
4.4 流水线技术
流水线设计与8位RISC微控制器体系架构密不可分,是整个系统的设计核心,它的选用优劣直接影响到系统的性能和功耗。
流水线技术能最大限度地利用了微控制器资源,使每个部件在每个时钟周期都工作,大大提高了效率,但由于流水线的各个段之间存在很强的依赖关系。如果处理不当, 指令的运行将达不到预期的结果,因此必须熟知流水线的相关和转移问题。其一为资源冲突, 即同一时间内争用同一功能部件, 一般为同时访问存储器, 这就需要停顿一拍流水线; 其二为数据相关冲突, 有三种类型: RAW、WAR、WAW , 解决该冲突使用内部直通结构或者延迟一拍流水线; 其三为控制转移冲突, 即对于条件跳转指令, 根据运算结果判断是否跳转, 才能确定新的PC值, 运算结果是在执行阶段后获得, 这使流水线丧失很多的性能, 一般采用增加硬件预先获得运算结果解决该冲突[3]。
越是长的流水线,相关和转移两大问题也越严重:一方面导致硬件控制电路复杂程度大大增加, 另一方面, 由于流水线节拍的停顿, 导致CPI值的增大及系统性能的下降。所以,流水线并不是越长越好,找到一个速度与效率的平衡点才是最重要的。
在8位RISC微控制器的流水线设计中,存在很多种方案。不同方案所对应的面积、速度与功耗各不相同。具体的选用则应该从多个方面融合考虑。首先应该由系统的工作速率要求和流水线级数、深度推导出多种具体的流水线结构方案及其所需要的严格时序;然后从系统的功耗、面积、性能及由流水线相关和转移问题引起的设计复杂度等方面考虑出发,判断各方案的优劣;最后折衷选择符合的最优方案。
4.5 低功耗技术
随着半导体工业的迅猛发展,集成电路进入深亚微米阶段,微处理器的时钟频率和芯片集成度不断提高,功耗已在很多设计领域成为了首要关注的问题,这点最为突出的即是高性能微处理器和便携电子设备产品[7]。
在根据系统功能说明进行软硬件协同设计、确定指令体系结构时,不同的设计出发点所导致的设计功耗结果差别会很大。因此整个体系架构的确定无疑是低功耗问题应该考虑的首要问题,主要体现以下几个方面[5]:1)尽可能根据功能需求优化指令集,简化系统的译码单元和执行单元;2)通过开发硬件的并行性以及功能单元的流水执行来实现低功耗的结构;3)合理设置确定存储器、寄存器的容量,减少所需的总线数目;4)系统硬件的各个子模块划分以及软件上设置不同的工作状态对功耗的优化非常重要。
5.结束语
体系结构设计是整个设计关键之关键,其后的所有工作,都是依赖于所设计的体系结构来进行的。本文就此对8位RISC体系架构中采用的关键技术所应该考虑的问题进行了分析和探讨,具有一定的研究价值和意义。
评论
查看更多