一 CPU的寻址方式
1.什么是内存容量
内存是由很多个内存单元组成的,每个内存单元占8个bit位(1字节),
也就是说内存中有多少个内存单元就意味着可以存储多少个字节,下
面是一个只有两个内存单元的内存概念图:
注:该图为博主自己画的概念图并非PCB板的设计图!
1.首先说一下,什么是总线
(总线参考文章:https://blog.csdn.net/qq_39759656/article/details/81700114)
各部件之间通过单独的连线叫做分散连接;将各部件连接到一组
公共信息传输线上叫做总线连接,早期的计算机使用的是总线连接。
所谓总线(Bus),一般指通过分时复用的方式,将信息以一个
或多个源部件传送到一个或多个目的部件的一组传输线。 按照功能划
分,大体上可以分为地址总线和数据总线。有的系统中,数据总线和
地址总线是复用的,即总线在某些时刻出现的信号表示数据而另一些
时刻表示地址;而有的系统是分开的。51系列单片机的地址总线和数
据总线是复用的,而一般PC中的总线则是分开的。
注:当多个部件与总线相连时,如果出现两个或两个以上的部件
同时向总线发送信息,必然会导致信号冲突,传输无效,所
以在某一时刻只允许一个部件向总线发送消息,但是可以允
许多个部件一同接收消息。
(1)地址总线
地址总线又称位址总线,属于一种电脑总线 (一部份),是由
CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写
入)电脑内存元件/地方的实体位址(物理内存)。
地址总线AB是专门用来传送地址的,由于地址只能从CPU传向
外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总
线不同。
地址总线的位数决定了CPU的直接寻址的内存空间大小,即CPU寻
址范围能力,地址总线越多CPU能寻址的范围也就越大,地址总线的
位宽以2的次方来算。地址总线就相当于计数器,告诉我们寻址范围。
使比如8位微机的地址总线为16位,则其最大可寻址空间为
216=64KB,6位微型机的地址总线为20位,其可寻址空间为
220=1MB。一般来说,若地址总线为n位,则可寻址空间为2n字节。
(2)数据总线
就是指主板上的桥段控制器数据从一个地方传到另一个地方
控制其传输速率的称谓数据总线。
数据总线是双向三态形式的总线,即他既可以把CPU的数据
传送到存储器或I/O接口等其它部件,也可以将其它部件的数据
传送到CPU。数据总线的位数是微型计算机的一个重要指标,通
常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其
数据总线宽度也是16位。需要指出的是,数据的含义是广义的,
它可以是真正的数据,也可以指令代码或状态信息,有时甚至是
一个控制信息,因此,在实际工作中,数据总线上传送的并不一
定仅仅是真正意义上的数据。
数据总线的性能指标:
* 总线的带宽
程序总线总线的带宽指的是单位时间内总线上传送的数
据量,即每钞钟传送MB的最大稳态数据传输率。与总
线密切相关的两个因素是总线的位宽和总线的工作频率,
它们之间的关系:
总线的带宽=总线的工作频率*总线的位宽/8
* 总线的位宽
总线的位宽指的是总线能同时传送的二进制数据的位数,
或数据总线的位数,即32位、64位等总线宽度的概念。
总线的位宽越宽,每秒钟数据传输率越大,总线的带宽
越宽。
* 总线的工作频率
总线的工作时钟频率以MHZ为单位,工作频率越高,总
线工作速度越快,总线带宽越宽
(3)控制总线
控制总线(ControlBus)简称CB。控制总线主要用来传送控制信
号和时序信号。控制信号中,有的是微处理器送往存储器和输入输出
设备接口电路的,比如:读/写信号、片选信号、中断响应信号等;也
有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线
请求信号、设备就绪信号等。因此,控制总线的传送方向由具体控制
信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需
要而定。实际上控制总线的具体情况主要取决于CPU。
(4)其它总线
去https://blog.csdn.net/bjbz_cxy/article/details/78508768里面找
2.CPU内部寻址方式
CPU的寻址是通过总线完成的,所以下面还会讲总线,只是侧重点在
CPU寻址上。
内存是由很多个内存单元组成的,每个内存单元占8个bit位(1字节),
也就是说内存中有多少个内存单元就意味着可以存储多少个字节,下
面是一个只有两个内存单元的内存概念图:
注:该图为博主自己画的概念图并非PCB板的设计图!
(1)地址总线
地址总线的位宽决定了CPU的寻址范围能力,地址总线越多CPU
能寻址的范围也就越大,地址总线就相当于计数器,告诉我们寻址范
围,地址总线是连接在内存的电路接口处的,地址总线的位宽以2的
次方来算。
注:寻址范围又叫寻址空间,一般指的是CPU对于内存寻址的
能力。通俗地说,就是能最多用到多少内存的一个问题。
上图是一个有两个内存单元的RAM,所以一根地址总线就可以表示,
2的1次方为2,所以CPU的寻址最大范围是2,对应的编号就是00,
01,内存中的存储顺序是以0开始的,这也是为什么数组下标都是以
0开始。
(2)数据总线
数据总线决定了内存中有多少bit位,当通过地址总线找对应的
内存单元时可以通过与指定内存单元连接的数据总线将数据传送回
来! 数据总线的位宽决定了一次可以传送多少个bit 位回来,一般均
为8bit!位宽不能代表有多少根数据总线.位宽决定了数据总线一次
传输bit 位的能力,比如上图有两个内存单元,CPU 通过地址总线找
到了第二个内存单元的地址,此时的数据总线位宽为8位; 那么一
次可以将第二个内存单元里的bit 全部读取出来,那么倘若将第一个
内存单元和第二个内存单元全部读取出来,那么需要分两次来读,
如果数据总线的位宽是16 位,那么可以一次读完,数据总线的位
宽是和地址总线直接挂钩的,假如说数据总线的宽度是32 位,每一
次读取数据都会动用32 根数据总线来读取,也就是一次可以读取4
字节,同时地址总线一次寻址范围也必须能够满足4字节,也就是说
每一次寻址都需要2根地址总线!
(2)控制总线
控制总线告诉CPU对这块内存单元做怎样的操作,读还是写,
同样控制总线也是接在电路接口处的,控制总线的位宽决定了
CPU能对电子元件有多少种控制方法,一般情况下内存中只有一
根控制总线,因为一般情况下内存就是读与写!
如果地址总线不满足要求则会出现硬件中断等,还有就是如
果地址总线的一次寻址范围是4字节倘若数据总线跟不上的话则
会分开读取!不过一般情况下数据总线的位宽是和地址总线的位
宽成正比例的,这也是为什么C语言和很多编程软件会有内存对
齐机制!
上面介绍的是地址总线,数据总线,控制总线都属于前端总线,前
端总线是将CPU与北桥芯片和内存连接起来的通讯线路,因为内存不属
于CPU内部结构单元,内存是在主板上的所以CPU是不能直接操作内存
的,需要通过前端总线与北桥交互,北桥芯片通过外部总线将内存中的
数据送到一级缓存中去,CPU在通过内部总线将其取到寄存器中!
(3)内部总线、外部总线、系统总线参看博客:
https://blog.csdn.net/bjbz_cxy/article/details/78508768
下面的部分
二 指令
计算机能解题是因为计算机本身存在一种语言,它能理解人的意图又能
被人识别,机器语言是由一条条语句构成的,某一种语句又能精确表达某种
语义,例如它可以命令机器做某种操作,指出参与操作的数或其它信息在什
么地方等。计算机就是连续执行每一条机器语句而实现全自动工作的,人门
习惯把每一条机器语言的语句叫做机器指令,而又将全部的指令的集合叫做
机器的指令系统,因此机器的指令系统反应了机器的功能。
三 虚拟内存技术
虚拟内存技术的核心就是利用了局部性原理,把所要运行的进程中的
数据不全部加载到内存中执行,而是加载一部分,当CPU在请求页表时,发
现页表中的页表条目中的有效位为0但是被虚拟存储系统分配了的虚拟页时,
就会把这个虚拟页从磁盘中调度到内存中(往往磁盘中的数据不常用,而在
内存中的物理页的数据是频繁使用的数据),这样一来,我们就实现了多个
进程同时加载到内存中并且还占用不是很多的内存的效果了(可以解决应用
程序比内存大的问题)。
详细参考文章:
https://blog.csdn.net/qq_30137611/article/details/66478426
四 内存分段
1.内存为什么要分段?
8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存
器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16
位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空
间分为若干个段,每段不超过64KB,在8086中设置4个16位的段寄存器,
用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。
2.段地址
段地址是针对内存的分段而言的,将每一段的段首地址定义为段地址。
段地址的存在是由系统的分段存储决定的,通过段地址和偏移地址就能对数
据进行寻访。
3.偏移地址(也叫偏移量或有效地址)
(1)由来
偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行
16位的运算,而8086/8088有20条地址线,直接寻址能力1MB。因此,
8086/8088所使用的20位物理地址,是由相应的段地址加上偏移地址
组成的。
(2)定义
偏移地址就是计算机里的内存分段后,在段内某一地址相对于段
首地址(段地址)的偏移量。如8086存储系统中20位的物理地址(就是数
据存储的实际地址)=16位的段基地址*16+16位的偏移量。
五 扇区、块、簇(簇的概念并没有摘录,有空补充)
1. 块、扇区的一些概念
首先搞清楚扇区一些单位大小关系
磁盘按层次分为磁盘组合 -> 单个磁盘 -> 某一盘面-> 某一磁道 -> 某一
扇区
现在在说扇区是什么
每个磁盘有多条同心圆似的磁道,磁道被分割成多个部分。每部分的
弧长加上到圆心的两个半径,恰好形成一个扇形,这就是扇区。扇区
是磁盘中最小的物理存储单位。通常情况下每个扇区的大小是512字
节。(由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是
4096字节)
磁盘块
磁盘块属于逻辑层面,是操作系统虚拟出来的, 块是操作系统中
最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘
块,磁盘的读写基本单位是块。
扇区和磁盘块的关系以及为什么要有磁盘块
由于扇区的数量比较小,数目众多在寻址时比较困难,所以
操作系统就将相邻的扇区组合在一起,形成一个块,再对块
进行整体的操作。扇区和磁盘块的关系,通过射磁盘块来映
射。
磁盘块和扇区大小的基本关系:
一个块大小=一个扇区大小*2的n次方(这个值只是个例子,
并不是固定的,由操作系统自己决定)