CPU的设计原理?CPU有哪几部分组成?CPU为何有32位和64位之分?CPU位数到底和数据总线有关还是和地址总线有关?什么是数据总线?什么是地址总线?

宁可思一近,莫在思一停。


前言

本文目的在于为想要转硬件方向的程序员解释CPU的设计原理及组成,数据总线地址总线与CPU位数的关系。


一、CPU和总线示意图

站在程序员的角度学习CPU设计原理

在这里插入图片描述

上图总体其实为SoC片上系统,但是一直叫被叫成CPU叫习惯了,准确来说里面的才是CPU

可以认为一个CPU里分成三部分:运算器、控制器、寄存器,真实CPU里不止这三个部分,还有时钟系统等。

二、CPU的组成

2.1 运算器

CPU对信息进行处理和运算的部件,常进行算术运算和逻辑运算,核心是算术逻辑单元ALU
CPU中用各种数字电路搭配成各种运算电路,如加、减、乘、除、取余、左移、右移等。

【示例】:加法运算器

32 位处理器一次只能进行 32 位数据的处理

在这里插入图片描述

2.2 控制器

控制器:整个计算机的指挥中心。

CPU的取指、译码、运行都是由控制器控制的。

2.3 寄存器

寄存器是CPU里快速的临时内存,用来暂存从外部读取的数据。

CPU内部是没有内存的,内存在外面,比如FlashDDR

三、存储器

一个系统的运行必须有三部分:CPUFlashDDR

3.1 Flash

Flash就相当于电脑的硬盘,用来存储程序,程序躺在Flash里是不动的。

Flash通过总线和CPU连接,需要时通过总线读取到CPU的寄存器中。

3.2 DDR

RAMRandom Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。

DDR本质上是RAM
DDRDouble Data Rate SDRAM的缩写(双倍数据速率)

程序要在DDR中运行,Flash中的内容是不能直接到DDR中的,必须要通过寄存器来中转。

CPU先将Flash中的内容读到寄存器中,再放到DDR中,在DDR中运行。

四、内部外设

CPU通过内部总线连接到串口控制器上,串口控制器就是前面所说的内部外设。

串口控制器本来和FlashDDR一样的,但随着半导体工业的发展,串口控制器跑到SoC里面去了。

内部总线和外部总线的区别:
内部总线在芯片的内部,其的速度更快,抗干扰能力更强。
外部总线受限于PCB板的布线,速度不会太快。

五、地址总线和数据总线

地址总线传输的是地址;数据总线传输的是数据。

地址总线和数据总线可以合二为一,但是速度会慢。

  1. CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。

  2. 地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量。

    CPU的位数取决于数据总线,而不取决于地址总线。

  3. 总线的速度决定CPU和外设互换信息的速度。

5.1 地址总线

在这里插入图片描述

5.2 数据总线

数据总线的位数实际上就是CPU的位数。

32 位的CPU有 32 根数据总线,CPU每次能够读/写 32 位的数据。
如果要写一个 16 位的short,会将 16 位的short放到 32 根数据总线中的一半,剩下的 16 根数据总线空跑。
即每次运送一个short或一个intCPU的性能开销是一样的。
所以 C语言 编程中能使用int尽量使用int,使用short并不会减少CPU的性能开销。

5.3 注意

  1. CPU的地址总线位数和数据总线位数是可以不同的(典型代表就是 51单片机),但一般都是相同的。

    51单片机是 8 位的,有 8 根数据总线,但它有 16 根地址总线。

  2. CPU的位数指的是数据总线的位数,不是地址总线的位数。

  3. 地址总线是 32 位的CPU寻址的范围是4G,所以最多支持4G内存。

  4. 数据总线是 32 位,所以内存是 32 位的好,所以编程最好用int,匹配的时候效率是最高的。

总结

尽信书而不如无书。请同志们带着审视的态度来看此文章,人都是会犯错的;带着不信任感去审视它;如果它是对的,你就会越发觉得它对;如果它是错的,你就会在辩证中得到真理。

宁可一思进 莫在一思停:在搏斗中须树立克敌制胜的信念,突出战斗进取精神。在搏斗中,只能思进,不能思存,更不能思退!一旦思存思退,斗志先馁,便没胜利的希望了。比武的时候,一思一念间,宁进不停。停下来反应的一瞬间,说不定你已经输了。

学习亦是如此,把惰性和拖延当做自己的敌人,和它们拼个你死我活。

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值