首先,CPU和内存是通过总线相连的(?为什么CPU要与内存直接相连,而不与硬盘(flash)直接相连,因为内存访问频繁,通过总线直接相连可以实现效率高访问快,缺点则是可拓展性差,资源有限。)
那么,总线是什么呢,一般网上是这么说的
总线的概念
所谓总线(Bus),一般指通过分时复用的方式,将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。是电脑中传输数据的公共通道。可以将总线理解为,CPU与外设传输数据的通道。
总线的分类
一般系统中总线按功能分为三类,地址总线(adress bus),数据总线(data bus)和控制总线(control bus)。
地址总线的数量决定了虚存(理想状态下)最大内存的大小,32根地址总线最多可寻址 2^32 = 4GB。
数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel8086微处理器字长16位,其数据总线宽度也是16位,数据总线32位 意思说 你CPU 一次可以写 32位的数据。
控制总线,传送一些控制信号。
那么,CPU的地址总线的位数在设计的时候就已经确定,所以CPU的最大寻址空间是一定的。而内存是占用了CPU的寻址空间的。
而CPU不仅能访问内存,还能访问各种外设(IO),对外设的访问,通常有两种方式。
一种是类似于访问内存,把外设的寄存器,当做一个内存地址来访问,从而可以像访问内存一样去访问外设,这种方式即是内存与外设统一的编址方式,称作统一编址。
另一种是使用专用的CPU指令来进行访问特定的外设,称作独立编址。
外设与内存统一的编址方式,优点是编程简单,因为可以像访问内存一样去访问外设。缺点是IO也占用CPU的寻址空间。
而独立编址的方式,优点是不占用CPU的寻址空间,但是CPU的构造比较复杂。(因为额外的CPU指令需要对CPU进行额外的设计处理)。
Inter的处理器采用的就是独立编址,ARM一般是统一编址。