2025年计算机硬件基础知识点归纳总结(基础的计算机硬件知识)

计算机硬件基础知识点归纳总结(基础的计算机硬件知识)数据 高等动物会使用思维分析生存环境中物体 行为的各种属性 并得出处理方式 属性的本质是数据 比如物体的尺寸 位置 距离 颜色 味道 比如行为的移动方向 移动速度 移动时间 对于人类这种高等动物还会分析自己和他人 思维 本身的各种属性 并使用其属性值进行复杂社交活动 全球所有人都习惯使用十进制数 也许是因为远古时期人类使用手势交流的原因 使用十个手指表示十个数据 中文使用一 二 三

大家好,我是讯享网,很高兴认识大家。



【数据】

高等动物会使用思维分析生存环境中物体、行为的各种属性,并得出处理方式,属性的本质是数据,比如物体的尺寸、位置、距离、颜色、味道,比如行为的移动方向、移动速度、移动时间,对于人类这种高等动物还会分析自己和他人“思维”本身的各种属性,并使用其属性值进行复杂社交活动。

全球所有人都习惯使用十进制数,也许是因为远古时期人类使用手势交流的原因,使用十个手指表示十个数据。

中文使用一、二、三、四、五、六、七、八、九、十表示十个基础数据,并使用零表示没有此属性,单个字表示的数据范围是有限的,超过上限就使用多个数字的组合表示,高位数字表示低位数字十的倍数,高位一表示低位十的一倍,高位二表示低位十的二倍,这种多个数字组合的方式称为十进制,阿拉伯数字最高表示九,十使用10表示,高位1表示低位9+1的1倍,优点是将十的表示方式由两种统一为一种,方便进行数学运算,缺点是无法使用单个字表示十。

多位数据每个位置的数字都有自己的名称,也称为单位名,单位名用于描述每个数字表示的值,中文的基础单位名有五个:个、十、百、千、万,五位以上的数字使用单位名的组合进行描述,相当于五进制,个万与万含义相同,所以组合从十万开始,万万也称为亿,避免出现一万万这种不方便描述的数据,西欧人的多位数据只有四个基础单位名,西欧人没有万,万使用十千表示。

计算机的工作方式类似动物大脑,但是计算机使用二进制数据,通过半导体器件是否带电表示数字0和1,并且计算机没有2,使用高位1表示低位1+1的1倍。

在十进制数据中,乘以十会向高位移动一位,一个数字向高位移动一位等于原值的十倍,数据中的所有数字整体向高位移动一位等于数据整体乘以十,同理除以十会向低位移动一位。

二进制数据是遇二进一,数字向高位移动一位表示原值的两倍,所以二进制数据乘以2会向高位移动一位,除以2会向低位移动一位,在计算机中经常使用移位的方式操作二进制数据。

十进制:123 × 10 = 1230,   123 ÷ 10 = 12.3

二进制:101 × 10 = 1010,   101 ÷ 10 = 10.1

【数据进制转换】

所有的十进制整数都可以使用二进制表示,两者的最小数字都是1,通过调整低位的值即可进行精确转换。

 ● 整数十进制转二进制

将十进制数不断与2进行除法运算,结果保留余数,直到计算到1/2,之后将每次除法结果的余数当做二进制位进行组合,最开始的余数作为二进制数的低位,最后的余数作为二进制数的高位,即可得出对应的二进制数据。

38 ÷ 2 = 19余0

19 ÷ 2 = 9余1

9 ÷ 2 = 4余1

4 ÷ 2 = 2余0

2 ÷ 2 = 1余0

1 ÷ 2 = 0余1

十进制 38 转二进制为 。

转换原理如下:

1.第一次除以2,若能整除,则数据是双数,最低位为0,若不能整除,则数据是单数,最低位为1,二进制单数的最低位也为1,所以十进制数除以2的余数即是对应的二进制数的最低位。

2.第二次除以2,转换剩余的数字位,因为之前已经除以2并且不保留余数,等于二进制数据向低位移动一位并且不记录小数位,所以此时等于判断二进制整数次低位的值。

3.一直计算到1除以2,1是最小的非0整数,无法再进行整数除法,对应二进制数据的最高位,至此转换完毕。

 ● 整数二进制转十进制

二进制数据高位1表示低位1的两倍,根据此规律依次计算出每个二进制数字对应的十进制数据,之后相加即可。

比如:,其中的三个1分别表示十进制的32、4、2,三者相加等于38。

 ● 小数十进制转二进制

十进制使用低位5表示高位1的一半,二进制使用低位1表示高位1的一半,二进制的0.1等于十进制的0.5,二进制低位数字只能将高位数字平均分为2份,不能平均分为10份,所以十进制小数末尾数字必须是5才能使用二进制表示,否则转换时会丢失精度。

但即使十进制小数的最低位为5也不一定能完全转换为二进制,原因是二进制数据无法做到将一个数据平均分为十份,只能分为2的乘方份数,转换为十进制等于除以2、4、8、16,无法除以10,具体能否精确转换还需要判断十进制小数是否为2的乘方的倍数。

转换方式如下:

将十进制小数不断乘以2,每次乘法不计算整数部分,直到消除小数位,之后取每次乘法结果的整数部分组合为二进制小数。

0.125 × 2 = 0.25

0.25 × 2 = 0.5

0.5 × 2 = 1

十进制 0.125 转二进制为 0.001。

转换原理如下:

1.首先转换二进制小数的最高位,将十进制小数的最高位乘以2,之后观察结果是否向整数位进位。

若没有进位,则小数最高位为整数位1的一半以下,对应的十进制小数为0.5以下,对应的二进制小数为0.1以下,所以此时二进制小数的最高位为0。

若有进位,则小数最高位为整数位1的一半或以上,对应的十进制小数为0.5、或0.5以上,对应的二进制小数为0.1或0.1以上,所以此时二进制小数的最高位为1。

2.之后转换二进制小数的次高位,将十进制小数乘以2,从而让对应的二进制值向高位移动一位,二进制小数次高位变成最高位,因为第一步已经将数据整体乘以2,所以现在直接取第一步的结果即可,之后再次乘以2,观察是否向整数位进位,从而确定二进制小数次高位的值。

3.重复以上步骤,直到消除十进制数小数位,转换完毕。

 ● 小数二进制转十进制

    ★ 方式一

将二进制小数的每一位数字转换为对应的十进制小数,之后相加。

二进制0.1,表示十进制1的2分之1,等于0.5。

二进制0.01,表示十进制1的4分之1,等于0.25。

二进制0.001,表示十进制1的8分之1,等于0.125。

二进制小数0.101转十进制:0.5 + 0.125 = 0.625。

    ★ 方式二

将二进制小数还原为二进制整数除法运算式,之后将二进制整数转换为十进制整数,再计算十进制整数除法。

0.001 = 001 ÷ 1000 = 1 ÷ 8 = 0.125

0.011 = 011 ÷ 1000 = 3 ÷ 8 = 0.375

0.101 = 101 ÷ 1000 = 5 ÷ 8 = 0.625

二进制小数转除法运算式的原理是使用位移,乘以10(这里的10表示二进制)向高位移动一位,除以10向低位移动一位,这里将二进制数向高位移动3位,等于乘以1000,若要保持原值不变,需要再除以1000,1000转换为十进制等于8。

    ★ 方式三

将二进制小数的每个数字分别乘以2的负次方,最高位乘以2的负1次方,次高位乘以2的负2次方,以此类推,最后将计算结果相加。

比如将二进制小数0.011转换为十进制,步骤如下:

第一位为0,0乘以2的负1次方 = 0

第二位为1,1乘以2的负2次方 = 1 ÷ 2^2 = 1 ÷ 4 = 0.25

第三位为1,1乘以2的负3次方 = 1 ÷ 2^3 = 1 ÷ 8 = 0.125

最后 0.25 + 0.125 = 0.375

此方式的原理是将方式1和方式2进行组合。

【运算器设计原理】

计算机的运行是以逻辑电路为基础的,首先我们复习一下初中物理电路知识,了解逻辑电路的基础原理。

在电路中放置一个可以移动的衔铁,改变衔铁的位置可以控制电路连通或断开。

衔铁平时依靠弹性呈断开电路状态,在衔铁附近放置一个电磁铁,电磁铁通电产生磁性,吸引衔铁移动位置,将电路闭合,电路即可通电。

电磁铁断电,失去磁性,衔铁依靠弹性断开电路。

这样就实现了通过电磁铁控制电路的开关,这种通过电磁铁控制电路开关的器件称为电磁继电器。

使用继电器可以制作出三种基础的逻辑运算电路:与、或、非。

与运算,电路中放置两个继电器,两个继电器全部通电时,电路通电,可以使用串联电路实现。

或运算,电路中放置两个继电器,两个继电器有一个通电时,电路即可通电,可以使用并联电路实现。

非运算,电路中放置一个继电器,将电路通电状态取反,通电变为不通电,不通电变为通电。电路平时处于闭合状态,电磁铁通电产生磁性,改变衔铁位置后,电路变成断开状态,即可实现非运算。

以上三种基础逻辑运算电路还可以组合为复杂逻辑运算:


讯享网

异或,判断两个子电路状态是否不同,若不同则电路通电,若相同则电路不通电。

与非,两个继电器全部通电时,电路不通电,等于先进行与运算、之后进行非运算。

或非,两个继电器有一个通电时,电路不通电,等于先进行或运算、之后进行非运算。

 ● 加法器

计算机使用带电与不带电两种状态表示二进制数字0和1,对于不产生进位的二进制加法可以使用或运算实现,分别比较两个数据中相同位置的数字是否至少有一个为1,是的话计算结果此位为1,否则此位为0。

但是加法运算是不可能避免产生进位的,只使用或运算无法实现完整的加法器,加法器应该首先使用与运算判断两个数字是否都为1,是的话则产生一个进位,否则再进行或运算。

完整的加法器计算两个数据相加时,每个二进制位都会计算3个数字相加,分别是两个加数和一个进位值,若没有进位则加0,实现方式很简单。

 ● 减法器

设计一个减法器要复杂的多,减法运算有很多逻辑判断分支,其中最复杂的是借位,若同位置数字中被减数为0、减数为1,则被减数需要向高位借位,如果紧邻的高位为0,还需要向更高的位借位,每次借位后都需要更新被减数的值,一次减法运算可能会发生多次借位,这些问题导致减法器的电路设计要比加法器复杂很多,运算速度也要慢得多,为了增加减法运算的速度,计算机使用加法代替减法,CPU中虽然有减法指令,但是内部还是将两个减数送到加法器中运算的。

使用十进制数来说明转换原理:

9 - 3 = 6

可以转换为:

9 + 7 = 16

16 - 10 = 6

转换原理很简单,因为 -3 与 +7 的结果正好相差10,所以 -3 转换为 +7 之后只需要再减10即可,而这里减10可以无需计算,只需要不保留进位产生的高位即可。

3和7相加的结果可以产生一个进位,并且低位全为0,这两个数满足相加的结果去除高位等于减10的条件,那3和7就可以称为彼此的补数。

对于 9 - 3 运算,只需要计算出3的补数即可将减法转换为加法,3的补数计算方式为 10 - 3 = 7,我们需要将减法转换为加法,而计算补数时却又产生了另一个减法,这个问题在十进制中很难解决,而在二进制数中却非常的简单。

补数的目的就是让两个数相加产生一个进位,并且低位全是0,在二进制加法中,如果两个数的每个位都相反,那计算结果的每个二进制位都为1,比如 1010 + 0101 = 1111,这个结果再 +1 就会产生进位,并且低位全是0。

所以我们计算 1010 的补数时,只需要将其每个位取反值,得到 0101,之后再 +1 即可,取反与 +1 可以合并为一个步骤,这样就得到了 1010 的补数为 0110。

【计算机存储数据的方式】

 ● 负数的存储方式

负数本质上是一个减数,计算机中减法使用加法代替,所以负数使用补数存储,称为补码。

计算机将一个数据按照是否有正负号分为两种类型:无符号数、有符号数。

1.无符号数,数据的所有二进制位都用于表示属性值,只能表示正数。

2.有符号数,最高位称为符号位,用于表示正负号,0表示正,1表示负,剩余位称为数据位,若是负数则数据位表示的值使用补码存储。

比如使用8位二进制数表示-5,符号位为1,表示负数,5转换为二进制为101,之后取反加一转换为补码,等于111 1011,整合符号位得出二进制编码:1 111 1011。

    ★ 计算结果为负数的问题

计算机使用加法代替减法,若减法结果为负数,则计算机会直接计算出正确结果的补数。

用10进制数来说明问题,5 - 6 = -1,转换为加法,10 - 6 = 4,5 + 4 = 9,显然9并不是 5 - 6 的正确结果,而是正确结果绝对值的补数。

当减法结果为负数时,减数大于被减数,减数的补数就会小于被减数的补数,被减数加小于自身补数的值,必定不会产生进位,所以计算结果也就没有去除高位这一步骤,导致比正确值大10。

若想得到正确结果,我们需要自行减去10,9 - 10 = -1, 从而得到 5 - 6 的正确结果。

若不减10的话,此数据正是减法结果正确值的补数,负数使用补码存储,所以计算机无需转换,直接存储补码即可。

当计算机使用加法代替减法运算时,若不会产生导致溢出的进位,则CPU认为计算结果是负数,将计算结果符号位设置为1,之后直接存储补码。

    ★ 正0与负0编码重复的问题

对于有符号数来说,每个数据都有正负之分,但是将0分为正0和负0显然不合理,容易造成混乱,为了避免混乱,计算机将负0当做一个固定长度数据能够表示的最大负值再减1。

比如8位有符号数,去除符号位剩余7位,最大值为 111 1111,转换为十进制为 127,所以它的表示范围是 +127 到 -128,其中-128使用-0编码表示。

使用-0表示-128也不会引发混乱,在8位有符号数中,-128为最小的负数,不能再减,减1等于-129,超出表示范围,发生溢出,这种运算本身就是错误的,肯定会得到错误结果,错上加错也无所谓,但是可以再加,加1等于-127,-127可以使用正常编码方式表示。

 ● 小数的存储方式

3. 可以使用如下科学计数法表示:

× 10^7

0. × 10^-1

计算机中的小数也是使用科学计数法,只不过底数由10改为2,使用科学计数法表示小数的方式也称为浮点表示法,使用浮点表示法的优势是可以充分利用存储器中的所有数字位,避免造成浪费,若不使用浮点表示法,那我们只能约定小数点在数据中固定的位置,比如一个长度32位的二进制数据,我们可以约定前16位表示整数,后16位表示小数,若小数为0.xxx,则整数位会浪费掉,若小数为xxx.0,则小数位会浪费掉。

根据科学计数法的计算原则,乘方指数+1,则尾数的值等于它乘以10。

二进制小数浮点表示法的乘方底数固定为2,指数+1则尾数乘以2,二进制小数向高位移动一位,指数-1则尾数除以2,小数向低位移动一位,修改指数即可移动小数点。

浮点数由三部分组成:符号位、阶码(乘方指数)、尾数。

符号位,表示小数的正负号。

阶码,表示乘方的指数。

尾数,科学计数法的尾数,它的数字位全部用于表示小数,整数部分默认为0,可以通过改变阶码的方式移动小数点的位置,从而表示整数位不为0的小数。

乘方的底数固定为2,无需使用任何数据存储,这是计算机的一种约定,从而节省两位存储空间。

浮点数的符号位占用最高位,之后是阶码,最后是尾数,IEEE754标准规定了三种长度的浮点数:

1.单精度浮点数,长度32位,符号位占1位,阶码长度8位,尾数长度23位。

2.双精度浮点数,长度64位,符号位占1位,阶码长度11位,尾数长度52位。

3.扩展双精度浮点数,长度80位,符号位占1位,阶码长度15位,尾数长度64位。

    ★ 阶码表示指数的方式

阶码用于表示乘方的指数,指数可以是负数,但是阶码没有符号位,这样规定的原因是让长度有限的阶码表示更大范围的指数,那阶码如何表示负指数呢。

实际上计算机并不会直接存储指数,而是让指数加一个数据再存储,存储的数据称为阶码,阶码将有符号数的所有表示范围映射到无符号数中,从而避开负数,单精度浮点数加127,双精度浮点数加1023,扩展双精度浮点数加16383,增加的数据称为校正值。

以单精度浮点数为例介绍原理:

若指数范围 -127 至 0,则加127后等于 0 至 127,阶码使用 0 至 127 表示指数的 -127 至 0。

若指数范围 1 至 128,则加127后等于 128 至 255,阶码使用 128 至 255 表示指数的 1 至 128。

    ★ 尾数的表示方式

当浮点数表示一个整数位为0的小数时,小数位的高位可能会有一个或多个0,比如 0.375 转换为二进制为 0.011。

为了节省存储空间,浮点数的尾数部分不存储这些高位的0,空出的存储元件可以存储更多的低位值,从而增加浮点数的精度,由此导致尾数与原值不同的问题,通过修改指数的方式将尾数还原,比如上述的 0.011 需要记录为 0.11 × 10^-1。

既然尾数的最高位必须是1,那这个位其实也可以省略,从而又节省一位存储元件,这是浮点数的约定,使用浮点数时再加上这个省略的1即可。

因为最高位的1被省略,尾数的次高位变成了最高位,导致尾数又向高位移动了一位,所以此时需要将指数再减1,还原尾数的原值。

比如0.011,使用浮点表示法应该存储为 0.1 × 10^-2,其中小数位包含一位隐藏的高位1,实际从次高位开始存储,你也可以理解为 1.1 × 10^-2,只不过整数位的1省略不存储。

三种浮点数的最高位都必须为1,但是只有单精度、双精度浮点数会省略最高位的1不存储,扩展双精度浮点数最高位的1不省略,直接存储。

    ★ 浮点数的合规类型

浮点数根据编码是否合规分为以下几类:

1.合规数(normal),单精度与双精度浮点数的尾数为0至最大值(实际表示的最小值不为0,因为包含了隐藏不存储的高位1),扩展双精度浮点数的尾数为1至最大值,阶码为1至最大值减1(比如单精度浮点数阶码1-254)。

2.零(zero),尾数与阶码都是0,此时单精度与双精度浮点数都忽略隐藏的高位1,使用此特殊编码表示0.0,包括+0.0与-0.0。

3.无限大(infinite),单精度与双精度浮点数尾数为0,扩展双精度浮点数尾数最高位为1,阶码为最大值,包括正无限大与负无限大。

4.不合规数(denormal),尾数不为0,阶码为0。阶码0必须与尾数0同时出现,否则不合规,此时阶码0表示最小的负指数,所以不合规数也称为极小值。

5.NaN(not a number),尾数不为0,阶码为最大值,又分为以下两类:SNaN(signalling NaN),尾数存储位(不包含隐藏高位1)的最高位为0,QNaN(quiet NaN),尾数存储位(不包含隐藏高位1)的最高位为1。

    ★ 浮点数编码示例

示例1,单精度浮点数 0.625,转换为二进制为 0.101

符号位,这里是正数,符号位设置为0。

阶码,尾数最高位的1隐藏不存储,次高位变成了最高位,尾数向高位移动了一位,指数设置为-1,还原尾数原值,之后指数加校正值得出阶码,-1 + 127 = 126,转换为二进制为 0111 1110。

尾数,原值为101,最高位的1隐藏,尾数存储为01。

最终编码为:0 0 000000000000

示例2,单精度浮点数 -0.375,转换为二进制为 0.011

符号位为1,表示负数。

阶码,尾数首先向高位移动一位,去除最高位的0,之后将最高位的1隐藏,尾数总共向高位移动了两位,指数设置为-2,-2 + 127 = 125,转换为二进制为 0111 1101。

尾数,原值为011,高位的0和1不存储,实际存储为1。

最终编码为:1 0 000000000000

示例3,单精度浮点数 1.25,转换为二进制为 1.01

符号位为0,表示正数。

阶码,尾数向低位移动一位,消除整数位,之后小数位向高位移动一位,将最高位的1隐藏,最终小数位固定不变,指数为0,0 + 127 = 127,转换为二进制为 0111 1111。

尾数为01。

最终编码为:0 0 000000000000

【计算机硬件组成】

计算机主要由如下4种设备组成:

中央处理器,英文简称为CPU,提供数学运算、逻辑运算、设备运行控制功能。

存储器,存储二进制数据。

输入设备,用于向CPU发送数据。

输出设备,用于接收CPU发出的数据。

 ● 中央处理器

中央处理器主要分为4个部分:控制器、运算器、缓存、寄存器。

1.控制器,控制CPU的运行,CPU对外提供的功能由指令确定,每一种功能对应一条指令。

2.运算器,负责进行数学运算、逻辑运算、移位运算。

3.寄存器,存储CPU执行时最频繁使用的数据,数据读写速度最快,容量也最小。

4.缓存,存储CPU次级频繁使用的数据,读写速度低于寄存器,存储容量高于寄存器。

CPU内部各部分使用片内总线相连,片内总线单次可以传输的数据长度称为CPU位宽,64位CPU一次可以传输长度64位的二进制数据,寄存器的长度一般与CPU位宽相同。

 ● 存储器

存储器用于存储二进制数据,存储器有两种基础操作:

1.写入操作,向存储器存入数据。

2.读取操作,调用存储器中的数据。

1个二进制数字称为一个比特位,英文名bit,简写为小写b,8个比特位组成一组使用,称为一个字节,英文名Byte,简写为大写B,两个字节称为一个word,计算机按字节存储数据,读写数据时至少操作一个字节。

为了更方便的描述存储器容量,还会以字节为基础组成的更大单位,这些单位都使用1024进制:

1024B  = 1KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

1024TB = 1PB

1024PB = 1EB

1024EB = 1ZB

1024ZB = 1YB

存储器中用于存储一个二进制数字的器件称为存储元件,8个存储元件组成一个存储单元,每个存储单元都有一个数据编号,称为存储单元地址,地址从0算起,0表示第一个地址,计算机使用此地址确定要操作的存储单元。

存储器按作用分为主存、辅存,也称为内存、外存,另外还有NOR Flash存储器,它集合了主存与辅存的特点。

    ★ 主存

主存也称为随机存取存储器,英文简称RAM,是一种半导体器件存储器,可以看做是纳米级的微型电容,根据器件是否带电表示0和1。

主存的特点是可以单独读写任意一个存储单元,读写速度快于辅存,但是容量小,数据不能永久保存,断电后数据丢失,适用于存储计算机运行时需要使用的数据。

    ★ 辅存

辅存读写速度低于主存,但是容量更大,数据可以长期存储,计算机断电后数据由辅存存储,计算机启动后数据需要从辅存读取到主存中再使用。

辅存存储数据的原理有很多:有用光盘实现的,有用磁盘实现的,有用半导体器件实现的。

辅存一般将多个存储单元组成一组使用,比如512B、1KB、2KB、4KB,读写数据时至少操作一组存储单元,多个小组还可以继续组合为一个大组,就像树枝分叉那样,这样可以减少内部线路复杂度、增加容量、降**作成本。

    ★ NOR Flash

NOR Flash 没有统一的中文名称,可以理解为高速读取闪存,是一种半导体存储器,它集合了主存与辅存的特点,读取速度快、写入速度慢、断电后数据不会丢失,存储单元可以单独进行读数据操作,但是写数据操作需要按组进行。

NOR Flash 用于存储计算机固件程序,固件是计算机启动后执行的第一个程序,用于检查计算机各种设备是否正常,之后引导操作系统执行,固件要求数据读取速度快,可以单独读取任意存储单元,但是很少有修改数据的需求,计算机启动后,CPU从固定的内存地址处读取指令开始执行,这个地址与 NOR Flash 存储器绑定,从而读取其中的固件执行。

 ● 输入输出设备

输入设备,向CPU发送数据,有些设备用于控制计算机的运行,比如键盘、鼠标,有些设备用于形成计算机执行某种功能所需的数据,比如录音录像设备。

输出设备,接收CPU发出的数据,有些设备用于将数据以人能够识别的方式展示,比如显示器、音响,有些设备用于辅助CPU进行数据运算,比如声卡、网卡、显卡,有些设备用于辅助人类完成某些工作,比如打印机。

输入输出设备统称为IO设备,有些IO设备既有输入功能也有输出功能。

IO设备会对外提供一组寄存器,称为IO设备端口,用于与外界交换数据。

输入设备端口,存储输入设备发送给CPU的数据,比如键盘设备,用户按下某个键之后发出数据,这些数据首先存储在IO设备端口中,等待CPU读取。

输出设备端口,接收CPU发出的数据,从而确定如何运行,比如显示器设备,根据CPU发出的数据确定每个像素三原色的亮度,从而确定整个像素的颜色与亮度,CPU通过向输出设备端口写入数据控制输出设备的运行。

有些IO设备也会内置一块辅存,用于长期存储数据,比如某些设备可以由用户设置工作方式,设置的参数会保存在内部辅存中,防止断电后丢失。

计算机基础IO设备的运行、控制方式是通用的,比如键盘、鼠标、显示器,程序根据通用规则直接使用它们。

有些IO设备的运行、控制方式不通用,比如打印机,不同厂家的产品使用方式不同,此时需要通过厂家提供的设备驱动程序使用它。

    ★ CPU与IO设备交换数据的两种方式

CPU需要传输给IO设备的数据大多数存储在内存中,IO设备发送给CPU的数据多数情况下也需要使用内存暂时存储,CPU与IO设备交换数据时需要使用内存进行中转,中转方式有两种:PIO模式、DMA模式。

PIO模式:

CPU向IO设备发送数据时,首先在内存中读取要发送的数据,之后将数据写入到IO设备端口。

IO设备向CPU发送数据时,CPU读取IO设备端口中的数据并写入到寄存器,若数据暂时不需要使用则将数据从寄存器写入内存。

DMA模式:

CPU与IO之间传输大量数据时,使用PIO模式效率太低,可以在内存与IO设备之间建立一条总线,让两者直接传输数据,无需经过CPU,这种方式称为直接内存访问,英文简称DMA。

使用DMA模式在IO设备与内存之间传输数据时,虽然不再经过CPU,但是需要由专用的控制器进行控制,称为DMA控制器,DMA控制器一般会集成在CPU内部。

PIO模式与DMA模式是互补关系,而非代替关系,不同类型的IO设备使用不同的数据传输方式,PIO模式适用于传输数据量少、数据需要立即处理的IO设备,比如键盘、鼠标,DMA方式适用于传输数据量大的IO设备,比如网卡、显示器。

 ● 总线与地址空间

    ★ 总线

CPU与内存、IO设备连接的线路称为总线,总线分为内存总线、IO总线。

内存总线连接CPU与内存、显存、NOR Flash,内存总线的数据传输工作由内存控制器管理,内存控制器一般会集成在CPU内部。

IO总线连接CPU与IO设备,IO总线再分出多个IO接口分别连接不同的IO设备,所有的IO设备汇总连接到IO总线,之后由IO接口统一连接到CPU,IO总线的使用由IO控制器管理。

    ★ 地址空间

CPU使用一个数据指定要读写的存储单元,这个数据称为地址,地址是CPU为存储单元分配的数字编号,CPU可以使用的地址范围称为地址空间,地址空间分为内存地址空间、IO地址空间。

内存地址空间:

内存地址空间绑定内存、显存、NOR Flash存储器,使用内存总线传输数据,内地址长度一般与CPU位宽相同、或大于CPU位宽。

计算机启动后CPU需要直接执行固件程序,所以 NOR Flash 连接内存地址空间。

显卡用于辅助CPU计算显示英文字符和图形时显示器对应像素的三原色亮度,显卡会内置一块主存存储运算数据,称为显存,因为程序需要大量、快速的显示字符和图形来告知用户执行结果,所以显存也连接在内存地址空间。

IO设备地址空间:

IO设备地址空间绑定IO设备,IO地址分配给IO设备端口,使用IO总线传输数据,IO总线会再分出多个IO接口,分别连接不同的IO设备,所有的IO设备汇总连接到IO总线,由IO总线统一连接到CPU,IO总线的使用由IO控制器负责分配和管理,IO地址长度一般为16位,可以分配给65535个IO设备端口。

辅存是连接在IO总线中的,CPU将辅存当做IO设备管理,CPU并不能直接读写辅存中的存储单元,而是向辅存IO端口写入控制数据要求进行读写操作,之后辅存启动内部读写功能,并通过IO端口与CPU交换数据。

小讯
上一篇 2025-05-09 07:33
下一篇 2025-05-12 17:43

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194218.html