常见的MCU有8位、16位、32位、64位以及更早之前有4位(当然现在也在使用),至于128位的?可能PowerPC有的吧,但貌似已经不属于MCU的范围了吧。
那么到底我们是怎么来划分这个“位”的呢?
取决于Internal Data Bus Width 内部数据总线宽度。
目前MCU有两种架构:
1.冯·诺依曼结构(Von-Neumann Architecture)或(普林斯顿体系架构(Princetion Architecture))
PM(Program Memory)和DM(Data Memory)两个存储器共用一个总线,此总线位数即为单片机的位数。
例如:MSP430
MSP430G2系列是16-bit RISC CPU,内核包含一个16-bit的ALU,寄存器也是16位,16-bit address bus、16-bit data bus也就是MABW(Memory Address Bus Width) 等于MDBW(Memory Data Bus Width)。
一般来说标准的架构是这样的,但现在更多的是改进型架构,会出现PMBW(Progrm Memory Bus Width)大于DMBW(Data Memory BusWidth)的情况,此时MABW大于等于MDBW。
例如:MSP430
MSP430F5系列是16-bit RISC CPU,但内核包含一个16-bit或20-bit的ALU,寄存器是20位,但16-bit address bus或20-bit address bus、16-bit data bus也就是MABW大于等于MDBW。
此时能因为ALU是20位,寄存器是20位就说这个CPU是20位CPU吗?显然不能,因为前面说了“位”取决于IDBW,MABW的改变只是提升了CPU的寻址范围,从16位的64KB提高到了20位的1MB。
注:这里说MSP430X CPU是Von-Neumann Architecture改进型为个人看法。
2.哈佛架构(Harvard Architecture)
在Harvard Architecture中PM和DB是相互独立的,那么PMBW(Pragram Memory Bus Width)和DMBW(Data Memory Bus Width)就可以不同,或者说Harvard Architecture就是为了这个的不同才设计的。
例如:PIC 8位系列
“Instructions and Data on separate busses”,也就是说PMB和DMB是相互独立的。
“Wide program memory buses (12, 14 & 16-bit)”,程序存储器位宽(PMW)分为12-bit、14-bit和16bit,官方手册里面写的是“12-Bit Wide Instructions”(PIC10F系列)这个就是PMW,此时我们不能说它是12位的CPU,因为DMW是8位的,ALU和寄存器都是8位的。
说明:PMB的AW(Addess Width)和DMB的AW也可以不同,不仅这两个可以不同,PMAW(Program Memory Address Width)和PMW、DMAW(Data Memory Address Width)和DMW也可以不同。
以上为个人总结,仅供参考,如有侵权请告知。
以下为参考资料
MAB(Memory Address Bus) 存储器地址总线 MABW(Memory Address Bus Width) 存储器地址总线位宽
MDB(Memory Data Bus) 存储器数据总线 MDBW(Memory Data Bus Width) 存储器数据总线位宽
以上两者的位宽(Width)在Von-Neumann Architecture中是相等的,即MABW=MDBW。
在一定总线频率下,位宽越宽,带宽越宽,也就意味着提高了数据存取的速率。
附:
总线基础知识:
1、总线的带宽(总线数据传输速率)
总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:
总线的带宽=总线的工作频率*总线的位宽/8
2、总线的位宽
总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。
3、总线的工作频率
总线的工作时钟频率以Mhz为单位,工作频率越高,总线工作速度越快,总线带宽越宽。