OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4885|回复: 2

处理器8位?32位?64位?有关处理器位数的问题

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2022-8-31
在线时间
2 小时
发表于 2022-9-8 13:35:59 | 显示全部楼层 |阅读模式
1金钱
在学习STM32时,提到STM32使用32位处理器,其最大寻址范围为2^32=4G,处理器单次处理的数据长度为32位。针对这个我有个疑问想请教一下。
1。通过查找资料了解到,处理器总线可以分为数据总线,控制总线,地址总线。那32位宽度是指哪个总线的宽度为32?按我的理解地址总线宽度应该是32,数据总线宽度也是32么?否则为什么说CPU一次处理的数据长度为32位?
2。最大寻址内存为4G是指,4G个字节(4Gbyte)么?虽然32位系统的寻址范围为0~2^32=4G,但是每个地址单元存放数据的大小不一定是一个字节吧,如果数据总线为32位(那就是4个字节),则内存大小是否应该是2^3*4=17Gbyte?那所谓的4G内存是指什么呢?
3。STM32有多组IO口,每个IO口有16个引脚,和32是否有关呢?
4。在不同的系统中定义的int类型的字节长度是否不同?在32位系统中定义的int为4个字节(4*8=32)?在使用8位处理器的ST89C51中定义的int是否只有2个字节?难道int的定义是指该系统所能表示的最大整数?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8015
金钱
8015
注册时间
2014-8-13
在线时间
1594 小时
发表于 2022-9-9 06:39:45 | 显示全部楼层
个人理解:32位的处理器主要是寄存器和运算器一次处理数据的最大宽度,寄存器和运算器是处理器的内核部分,处理器多少位,应该取决于这个,而IO口之类应该是外设,内核只要有地址的位操作能力就可以操作单个IO。而总线宽度其实不用与寄存器和运算器宽度匹配的,比如串行总线。在不同系统中定义的int长度是不同的,而且处理器不知道什么int不int,主要取决与编译器,而编译器将int定义成多宽,取决于多宽最适合当前处理器。如果需要固定长度的数据类型,可以使用long
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4031
金钱
4031
注册时间
2015-11-14
在线时间
545 小时
发表于 2022-9-9 20:53:51 | 显示全部楼层
一个地址还是8位的,所以是4G Byte内存地址。一次可以处理32位,那就是4字节。这也是平时说的为什么要4字节对齐。简单的认为,32位最多可以同时操作32位数据(注意是同时), 至于为啥一组IO是16个口,这个得问ST了,理论上是可以32个口同时操作的,但是毕竟很少一个端口用软件同时操作的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 19:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表