02-安全攻防之CPU总线的知识小记
每一个CPU芯片
都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互。如下图:
总线
一根根导线的集合
总线的分类
地址总线
数据总线
控制总线
举个例子:
如上图中,内存地址是从0开始, 每个地址代表着该地址在内存存放的数据。
- CPU通过地址总线,可以定位到内存地址;
- 根据控制总线了解到对该地址的读或者写的操作;
- 根据数据总线,将数据传送过来。
地址总线
它的
宽度决定了CPU的寻址能力
8086的地址总线宽度是20,所以寻址能力是1M( 2^20 )
怎么理解宽度决定了CPU的寻址能力
呢?
- 就是电脑都是通过
0或1来读取数据
,每根电线表示2种数据,即0或1。通电了表示1,没通电表示0
。地址总线的宽度
,表示地址总线有多少根电线
连接内存地址。- 例如8086的地址总线的宽度为20,表示有20根电线连接着内存的地址。假设20根电线都通着电,那么这个设备可以读取的最大的内存地址是
2^20次方
= 1M。- 也就是说,超过1M的内存地址,该设备都读取不到,数据也存储不进去。
- 但是,现在我们的地址总线一般都是
64位
,也就是有64根电线连接着内存地址,64位的二进制换成10进制就是一个很大的数据了,所以现在的内存地址都是够用的。![]()
2^20次方是怎么得来的?
- 我们都知道,当二进制数据 为10 时,那么换算成10进制为1 * 2^1 + 0 * 2^0 = 2;
- 当二进制数据为101 时, 那么换算成10进制为1 * 2^2+ 0 * 2 ^ 1 + 1 * 2^0 = 5;
- 那么20根电线都通电的情况下,表示 有20个1的二进制位,即 1111 1111 1111 1111 1111 换算成十进制,也就是 2^20 次方
每个地址都有对应的一个内存,每个内存都是以8个bit
为一个单位
,而8个bit等于1byte(1个字节)
。也就是说,每个内存单元都是1个字节。
不管是编写的代码,还是存储的图片或者视频以及文字,最后都会转成由0和1组成的二进制数据
。当这个二进制要存到内存中时,总是以8个二进制位
为一个单元存
放到内存中的。
数据总线
它的
宽度决定了CPU的单次数据传送量
,也就是数据传送速度
, 也称”数据吞吐量“
8086的数据总线宽度是16
,所以单次最大传递2个字节的数据
其中,这个数据总线的宽度的理解与地址总线的理解是一样的。就不展开了。
控制总线
它的宽度决定了CPU对其他器件的控制能力、能有多少种控制