金水明“80451”单片机64位指令集的寄存器组简介
STCx51虚拟单片机与编译器(2):金水明“80451”单片机64位指令集的寄存器组简介
(一)金水明“80451”指令集简介
(1)“金水明”是笔者过去的一个“单片机虚拟CPU指令集”研究项目的代号,该项目的主要研究目的是利用软件模拟的方法提前研究一个新架构的单片机CPU的指令集,通过典型的应用模拟来确定新架构的CPU指令集的完备性和工作模式。
(2)单片机CPU指令集也分为CISC和RISC两种,未来的技术主流是RISC。随着技术的不断发展,单片机CPU的应用场景越来越复杂。对于RISC指令集,虽然可以用编译器来实现各种复杂的算法,但是对于特殊领域的应用,RISC指令集的到底应该包括哪些指令?这些指令的应该如何使用和配合?在单片机CPU正式定型之前就需要用“单片机虚拟CPU指令集”的方法来进行提前研究。
(3)“金水明80451指令集”是“金水明80451 64位单片机虚拟CPU指令集”的简称,是“金水明”研究项目的一项成果。
(4)CPU架构按应用分为两种类型:面向运算的和面向控制的,就像ARM Cortex分为A和M两个系列一样。“金水明80451指令集”的定位是面向控制的单片机RISC指令集。
(5)为了适应单片机工业控制领域的各种传输控制协议和网络数据流,80451指令集需要单独支持8/16/32位的数据处理,因此80451采用了类似80x86/80251的等级式寄存器结构,本文将介绍金水明80451指令集中的寄存器组的构成和设计思路。
二、金水明80451 CPU 8位、16位、32位和64位寄存器地址映射表
其中:寄存器按高端定义,左边的字节是高位字节。
80451 CPU寄存器在设计时就考虑了与Intel 80251 CPU的兼容性,它们之间的对应关系如下表。
从上表中可以看到,除系统堆栈段页寄存器“SS”外,二者是一一对应的。由于80451指令集有一个80251指令子集,因此在80451的汇编语言中,当你使用那些80251指令时,也可以直接使用80251寄存器名,在同一地址的不同名寄存器存取的内容是一样的。
三、金水明80451寄存器设计思路
(6)80451运算指令是面向寄存器的。这是指运算是在两个寄存器之间进行的。
(7)许多的80451运算指令是不对称的,比如64位乘法只有 “MULU QAX, QCX”(QAX=QAX*QCX)指令,没有“MULU QCX, QAX”(QCX=QCX*ACX)指令。
因此80451寄存器是配对,不对称的运算操作只在这些配对的寄存器之间。
(8)80x86汇编语言项目当年是很多高校和计算机等级考试的的标准汇编语言,因此80451指令集的寄存器名借用了80x86的寄存器等级命名规则。
(9)在C51/C251里面,函数调用(Z=F(X,Y)的基本规范是第一个参数的寄存器是X=R7(8位变量)、X=R6R7(16位变量)和X=R4R5R6R7(32位变量),第二个参数的寄存器是Y=R3(8位变量)、Y=R2R3(16位变量)和Y=R0R1R2R3(32位变量),函数的返回值的寄存器是Z=R7(8位变量)、Z=R6R7(16位变量)和Z=R4R5R6R7(32位变量)。
在80x86汇编语言中,不对称指令(比如乘法)的结果通常在AX中,因此在80451的寄存器名称中,AX对应了R6R7而不是R2R3.
(10)80451指令集当年的研究目标之一是设计和验证一组面向内存大规模数据运算(比如AI常用的矩阵和卷积运算)的指令,因此80451有两个32位的通用指针寄存器“EFP”和“EGP”。32位的地址指针支持4TB的内存,这个规模对于64位单片机内核在若干年内应该是足够了,因此80451指令集就没有更高位数的指针了。
(11)80451指令集当年的研究目标之一是设计和验证一组专门用于单片机RTOS和单片机DOS的指令,因此设置了两个32位的专用指针寄存器“EBP”和“EVP”,前者用于RTOS的可重入函数堆栈指针,后者用于DOS的任务内存动态分配和回收。
四、结束语
(12)寄存器组是CPU内核的最重要的组成部分,所有的CPU操作都是围绕它们进行的。虽然80451指令集只支持32位的地址和数据总线,但是80451指令集有两个64位的寄存器QAX和QCX,并且支持这两个寄存器之间的64位的乘除法,因此金水明80451指令集属于64位单片机指令集。
电子器件的“中控室”:单片机MCU详解
上一篇(只有想不到,没有嵌不到,嵌入式系统科普 )文章介绍了嵌入式系统的组成部分。其中提到了单片机MCU,其实它也是一个小系统,它是控制电子产品的大脑。现如今,我们生活中的许多电器都含有单片机。例如:手机、电视机、冰箱、洗衣机、以及开关、LED等。那么,什么是单片机?它在这些电器中究竟做了些什么呢?以及是如何构成的?
它是如何诞生的
单片机诞生于1971年,经历SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位。早期的单片机都是4位或8位。其中最成功的是英特尔的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。如今已发展到32位甚至64位。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高,相继诞生了一批经过市场考验获得良好口碑的单片机制造厂商。
“神通广大”,到哪儿都有它
实际工作中并不是任何场合都要求计算机有很高的性能。应用的关键看是否够用,是否有很好的性价比。单片机是电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的外围功能电路动作。
为什么很多电器设备都要使用单片机呢?我们用一个点亮LED电路为例来说明。
(右)无单片机的电路是一个由LED,开关和电阻构成的简单电路。很显然,使用单片机的电路要复杂得多,而且设计电路还要花费精力与财力。这样看来使用单片机并没有什么优点,其实不然。
如果我们让这个电路做一些比较复杂的操作,会怎么样呢。例如:如果希望LED在按下开关后,经过一段时间再点亮或熄灭,那么,对于安装有单片机的电路来说,只需更改单片机中的程序就可以了,并不需更改原电路。另一方面,对于没有单片机的电路来说,就必须在元电路中加入定时器IC,或者用标准逻辑IC和FPGA构成逻辑电路,才能实现这个功能。也就是说,在更改和添加新功能时,带有单片机的电路显然更加容易实现。
单片机通常用于工业生产的控制、生活与程序和控制有关领域。由于单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。据了解,一辆汽车上要配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作。这样算下来,单片机的数量已经远超过地球人口的数量了。
那么“无所不能”的单片机都由哪些器件构成的?
以PC为例,一台计算机主要有这几个部位组成:中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。而在单片机中,这些部份全部被做到一块集成电路芯片中,所以就称为单片机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。此外,现在的单片机绝大多数都是基于冯·诺伊曼结构。
以51单片机为例,其功能组件及作用主要有:
1、CPU主芯片(内部通过总线连接扩展的设备)
2、时钟电路(为单片机提供震荡脉冲)
3、电源电路(为单片机提供电源)
4、内部数据存储器RAM(包括通用数据寄存器和专用寄存器SFR,主要是数据存储区。)
5、程序存储器ROM(主要是存储程序,51系列有4K内部程序ROM,可以外扩64K。)
6、并行端口4*8位(P0,P1,P2,P3主要是数据交换接口。)
7、串行口(TXD,RXD用于串口通信。)
8、中断系统(外中断0,定时计数T0,外中断1,定时计数T1,串口中断。)
9、定时/计数器(16位用于外部的计数和定时功能。)
在这些组成里,内存是单片机的记忆装置,主要记忆程序和数据,但ROM与RAM有所区别:
ROM是只读内存的简称。保存在ROM中的数据不能删除,也不会因断电而丢失。ROM主要用于保存用户程序和在程序执行中保持不变的常数。
RAM是可随机读/写内存的简称。可以随时读写数据,但关机后,保存在RAM中的数据也随之消失。主要用于存储程序中的变量。在单芯片单片机中,常常用SRAM作为内部RAM。SRAM允许高速访问,但是,内部结构太复杂,很难实现高密度集成,不适合用作大容量内存。除SRAM外,DRAM也是常见的RAM。DRAM的结构比较容易实现高密度集成,因此,比SRAM的容量大。但是,将高速逻辑电路和DRAM安装于同一个晶片上较为困难,因此,一般在单芯片单片机中很少使用,基本上都是用作外围电路。
工作原理
虽说CPU相当于人的大脑,但是它却不能像人的大脑一样,能有意识的、自发的思考。CPU只能依次读取并执行事先存储在内存中的指令组合。
单片机自动完成赋予它的任务过程,即一条条执行的指令过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
所以必须把要把问题编成一系列指令,这一系列指令的集合就成为程序,程序需要预先存放在存储器中。存储器由许多存储单元组成,你可以想像成宾馆的房间,指令就存放在这些房间里,房间里的指令取出并执行就像入住要分配房间一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。
主流单片机
现在主流单片机有:
51系列单片机——对所有兼容Intel 8031指令系统的单片机的统称,51单片机是基础入门的一个单片机,还是应用最广泛的一种。
PIC系列单片机——用来开发的去控制外围设备的集成电路,有计算和记忆功能,处理能力一般,存储器容量也很有限。
AVR系列单片机——AVR最大的优点就是哈佛结构速度快;片上资源丰富;驱动能力强;功耗低;可选择型号种类多;性价比高;保密性好;带PWM脉冲宽度调制、串行外设接口SPI,片内RC 振荡器,SRAM比51大。
这些是应用最多的三大系列单片机。其主要特点就是:51系列单片机是冯.诺依曼结构,后两种是哈佛结构。
典型玩家介绍
经多年发展,MCU厂商可谓是多种多样。简单介绍下这个圈里典型玩家
1. 恩智浦(收购飞思卡尔)
单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求。NXP的MCU几乎都是采用cortex-m系列架构。
2. 瑞萨电子
NEC电子和瑞萨科技于2010年4月1日通过合并诞生了“瑞萨电子”,现为全球首屈一指的微控制器供应商,也是SoC系统晶片与各式类比及电源装置等先进半导体解决方案的领导品牌之一。他们推出的针对中国市场的MCU产品RL78系列分为通用产品和集成LCD驱动的产品,通用产品的升级款又围绕着传感器、小系统、马达驱动等具体应用领域做了相应拓展。
3. 微芯科技(Microchip)(收购爱特梅尔(Atmel))
微芯科技是全球领先的单片机和模拟半导体供应商,微芯单片机是市场份额增长最块的单片机。 他们强调节约成本的最优化设计,使用量大、档次低、价格敏感的产品。
4.三星(Samsung)
三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机。
5. 意法半导体(ST)
意法半导体微控制器拥有一个强大的产品阵容,从稳健的低功耗8位单片机STM8系列,到基于各种ARM Cortex-M0和M0+、 Cortex-M3、Cortex-M4、Cortex-M7内核的32位闪存微控制器STM32家族。STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。
6. 英飞凌(Infineon)
其前身是西门子集团的半导体部门。英飞凌8位单片机能实现高性能的电机驱动控制,在严酷环境下(高温、EMI、振动)具有极高的可靠性。英飞凌针对中国市场推出的XMC1000工业单片机,在电机控制领域拥有很高的性价比。
7. 德州仪器(TI)
TI是全球领先的模拟及数字半导体 IC 设计制造公司。除了提供模拟技术、数字信号处理 (DSP) 以外,TI 在单片机领域也涉入较深,推出一系列的32位单片机,其中Piccolo系列微处理器最具代表性,具体型号如C2000和F28x系列。
8. 东芝(Toshiba)
东芝单片机的特点从4位机到64位,门类齐全。4位机在家电领域仍有较大的市场。8位机主要有870系列、90系列等,该类单片机允许使用慢模式,采用32K时钟时功耗低至10uA数量级。CPU内部多组寄存器的使用,使得中断响应与处理更加快捷。东芝的32位单片机采用MIPS3000ARISC的 CPU结构,面向VCD、数字相机、图像处理等市场。
9. Silicon Laboratories(芯科实验室)
Silicon Laboratories成立于1996年,位于美国德州奥斯汀市,是一家专业研发设计类比电路及混合信号IC的公司,为成长快速的通信产业设计等提供广大应用。在8051系列MCU领域居于领先军团行列。这家公司2013收购了一家叫Energy Micro的节能型MCU公司,所以产品有两个型号。
10. Maxim
Maxim的超低功耗32 位 Arm® Cortex®-M4 FPU微控制器(单片机),可以帮助您在任意地方收发其他超低功耗MCU的产品。超低功耗MCU系列产品既智能又省电。他们在去年发布了一款名为MAX78000的革命性芯片。这颗低功耗神经网络加速微控制器能将人工智能(AI)推向边缘端,更重要的是,因为其低功耗特性,那就意味着即使在将其应用在电池供电的物联网(IoT)设备里,芯片性能并未受到影响。
11. ADI
ADI提供日渐增多的DSP、混合信号控制处理器、嵌入式处理器和模拟微控制器产品,适合广泛的通用和专用需求。例如产品包括:带有微处理器的模数转换芯片ADuC844和ADuC846,用于IoT超低功耗MCU ADuCM4050。
12. 高通(Qualcomm)
高通的MCU主要应用于智能手机、平板电脑、无线调制解调器等等,功能非常强大。主要提供16位,32位MCU。
其余厂商见图片。
MCU作为微型计算机的一个重要分支,应用面很广,发展很快。自MCU诞生至今,已发展为上百种系列的近千个机种。而且随着半导体集成工艺的不断发展,MCU的集成度将更高、体积将更小、功能将更强。
相关问答
单片机 有4位、8位、16位、32位以及 64位 现在,请问的是在4位、8位这些个事什么意思?首先要知道这里的“位数定义”:CPU内部总线的位数就是单片机的位数。这里的位也就是就是指单片机中CPU处理的数据是位数的。比如:51单片机属于8位机,就是CPU...
单片机 用位操作指令实现下列操作:1、使ACC.0置1;2、清除累加...[最佳回答]1.使ACC.0置1;ORLA,#01H2.清除累加器高4位;ANLA,#0FH3、清除ACC.3,ACC.4,ACC.5,ACC.6ANLA,#10000111B4.编写两个16位数的减法...
64 脚的 单片机 怎样焊接?焊接64脚的单片机(如64脚封装的微控制器)时,需要遵循一些基本的焊接步骤和注意事项,以确保焊接质量并避免损坏器件。以下是焊接64脚单片机的基本步骤:1.**...
单片机 的中断程序能否存储在 64 kb的程序存储器的任意区域? - 懂得每个中断源的中断入口地址处是预留了8个单元的空间,可这8个单元不可能放过多的指令的,所以,就只能放一条跳转指令,而这条跳转指令所指向的存储空间...
单片机 的单位是字还是字节?在单片机应用中,字节常用于表示一组数据或一段程序的长度,而字是计量处理器位宽的单位。例如,一个单片机的存储器容量可以以字节为单位进行描述,比如16KB的...
8 位单片机 为何可以拓展内存32KB?你说的存储器扩展功能,不是所有的8位单片机都有,51是有的,AVR肯定没有,PIC我不熟,不好说,下面以51为例。51单片机的构架中最多可以提供16根地址线(P2,P0...
单片机 的地址总线的宽度是什么?地址总线宽度决定了CPU可以访问的物理地址空间,简单地说就是CPU到底能够使用多大容量的内存。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位单片...
单片机 的中断程序能否存储在 64 kb的程序存储器的任意区域? - ...每个中断源的中断入口地址处是预留了8个单元的空间,可这8个单元不可能放过多的指令的,所以,就只能放一条跳转指令,而这条跳转指令所指向的存储空间...
51 单片机 有几个引脚?[最佳回答]原发布者:吖董董董51单片机引脚介绍(上)单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。⒈电源:⑴VCC-芯片电源,接+5V;⑵V...
stm32系列 单片机 区别?1、内核:51单片机采用的是51Core,8Bit@2MHzMax(分频后),0.06DMIPS;STM32采用的是ARMCortex-M3,32Bit@72MHz,1.25DMIPS2、地...