四、存储
(一)开放系统
基于Windows、Linux和Unix等操作系统的服务器称为开放系统,开放系统的数据存储方式分为内置存储和外挂存储。
其中外挂存储可根据连接的方式分为直连式存储(DAS)和网络化存储,常用的网络化存储有网络接入存储(NAS)和存储区域网络(SAN)。
(二)计算机存储体系
一般计算机系统中有两种存储体系,如下:
1、Cache存储体系
由高速缓冲存储器Cache和主存储器组成,主要目的是提高存储器速度,对系统程序员以上均透明;
2、虚拟存储体系
由在线磁盘存储器和主存储器等辅存组成,主要目的是扩大存储器容量,对应用程序员透明。
虚拟内存属于计算机内存管理技术,它会开辟一个逻辑连续的内存(一段连续完整的地址空间),在物理上,它通常被分隔成多个物理内存碎片,还有部分存储在外部磁盘存储器上,只有在需要时才进行数据交换。
(三)主存和Cache
主存(主存储器)主要由存储体、控制线路、地址寄存器、数据寄存器和地址译码电路组成(地址译码电路将地址转换成对应的存储单元地址),主存储器用于存放将要参与运行的程序和数据。
另外为了使主存的速度与CPU速度相匹配,会在主存与CPU之间插入一种比主存速度更快、容量更小的高速缓冲存储器Cache,它也称为缓存,现通常将Cache制作在CPU内。由硬件自动通过地址映射将主存的程序按一定的方法装进Cache中,从而建立主存与Cache的地址对应关系。
(四)存储器分类
存储器分类有很多分类方法,
1、按存储器在计算机中的作用可分类如下几种存储器:
2、按数据的存取方式可分为以下五种存储器:
(1)RAM和ROM
常说的比如手机或电脑内存多少G+多少G也就是指的是RAM和ROM(运行内存即对应的RAM,而ROM则是存储容量),它们最大的区别是数据的易失性,即一旦断电后RAM所存储的数据将随之丢失,所以在计算机和数字系统中RAM用来暂时存储程序、数据和中间结果,常用于主存和高速缓存中;ROM是固定的,它是非易失性存储器,所以它被用作操作系统的固化,即只能对存储的内容读出,但不能对其重新写入修改,ROM的读取速度通常比RAM慢一些。
DRAM以电容充电放电原理来寄存信息,SROM以触发器原理来寄存信息,其中SRAM在不断电的情况下,其储存的信息一直不会丢失,而DRAM会随着时间的延长而逐渐消失,它只能保持很短的时间,所以需要定时对其刷新来保持信息不丢失。
总的来说,RAM和ROM这两种存储器共同作为主存的一部分,统一构成主存的地址域,其中由于DRAM需要刷新,速度较低,但其成本也低,所以用作主存储器,即计算机系统的主存主要是由DRAM构成的,而SRAM无须刷新、功耗小、速度快,但其集成度低,常用于CPU与主存之间的高速缓存。
(2)SAM
SAM存储器只能按照某种顺序进行顺序存取,存取时间的长短与信息在存储体上的物理位置有关,例如磁带就是SAM的一种。
(3)DAM
DAM采用直接存取方式对信息进行存取,当存取时,直接指向该存储器的某个范围(某个磁道),然后在范围内进行顺序检索,找到地址后再进行读写操作,所以说这种存储器的存取时间与信息所在的物理位置有关。
(4)CAM
CAM是一种基于数据内容进行访问的存储器,写入数据时,自动选择一个未使用的空单元进行存储;读取数据时,不直接使用存储单元的地址,而是使用该数据或该数据的一部分内容来检索地址,由于它能同时对所有存储单元的数据进行比较,是并发进行的,所以CAM速度非常快。
(五)闪存
闪存,也称为快闪存储器,它是一种电子式可清除程序化只读存储器(ROM)的形式,即使断电后数据也不会丢失,所以说它是一种非易失性存储器,而RAM断电后数据会丢失;随机存取存储器(RAM)是以字节为单位来改写数据,而闪存存储是以固定的区块为单位,由于闪存写入次数有限制,且读写速度相对于RAM较慢,所以不适合作为主存,但可将其作为ROM的替代品使用。
(六)高速缓存中的命中率
在高速缓存中,设直接访问主存的时间为M秒,访问高速缓存的时间为N秒,CPU访问内存的平均时间为L秒,命中率为H,则满足L=M×(1-H)+N×H。
(七)内存地址编址
编址是给内存单元进行编号,通常通过十六进制数字表示,按照从小到大连续编排成为内存的地址,其中每个内存单元的大小为一个字节,即8bit,其内存容量等于最高地址-最低地址+1。
例1、内存单元按字节编址,求地址0000A000H-0000BFFFH共有多少个存储单元。
答:M=[(0000B-0000A)+1]×4K=2×4K=8K,所以共有8K个存储单元。
例2、内存单元按字节编址,地址为A0000H到CFFFFH,共有_________字节,若用存储器芯片存储容量为64K×8bit来构成,则至少需________片。
答:M=(D-A)+1=CFFFF-A0000+1=30000H个地址空间,转为二进制则为:0011 0000 0000 0000 0000=192K,按字节编制为192KB,所以192K×8/64K×8=3片。
例3、内存单元按字节编址,若用存储容量为32K×8bit的存储器芯片构成从地址A0000H到DFFFFH的内存,求至少需要多少片芯片。
答:M=[(D-A)+1]×64K=256K,即共256K个存储单元,256/32=8,所以至少需要8片芯片。
五、计算机的运算方法
(一)无符号数和有符号数
前面已经讲到过,CPU进行一次运算所能处理的二进制数据位数称为机器字长,以单位bit(位,也称为比特)来衡量,即寄存器的位数为机器字长,在寄存器中每一位都用于存放数值,在计算机中参与运算的数分为两类:无符号数和有符号数。
这两种数的区别是,有符号数在存放时,需在其最高位留位置用于存放其符号【正号“+”代表0,负号“-”代表1】,而无符号数不需要,当机器字长相同的情况下,两种数对应的数值范围是不同的。
符号 | 有符号数的符号含义 |
+ | 0 |
- | 1 |
如下,以机器字长为4位为例,无符号数的数值范围与有符号数值范围是不同的:
(二)数的定点和浮点表示
在计算机中,小数点的表示方法有两种,分为定点表示和浮点表示,我们将分别用定点表示和浮点表示的数称为定点数和浮点数。定点数的小数点的位置是固定的,当其位于机器数的符号和第一数值位之间时,这种数称为纯小数,而小数点位于数值位之后的机器数称为纯整数。
浮点数其小数点的位置可以浮动,表示方法:N=S×rj,即浮点数由阶码j、尾数S和基数r组成。
总的来说,浮点数在数的表示范围、数的精度、溢出处理等方面上均优于定点数,但在运算规则、运算速度及硬件成本方面不如浮点数。
(三)原码、补码、反码与移码
1、原码
原码是直接用二进制表示的数值的编码,但在数值前添加了一位符号(+代表0,-代表1),在计算机中通常不使用原码表示数据。若一个定点整数或定点小数为正数,则它们的原码为其本身,当为负数时,定点整数的原码为2n-X,定点小数的原码为1-X,另外整数的符号位与数值位之间通过逗号“,”隔开,小数的符号位与数值位之间通过小数点“.”隔开。
例如求下列定点整数和定点小数的原码:
注:例如8位原码的表示范围为-127至-0以及+0至127,一共256个。
2、反码
正数的反码也是其本身,而负数的反码是对其原码的所有位,除符号位之外按位取反(1->0,0->1),从而得到反码;负数的反码也可以通过公式求得,其中定点整数的反码为2n+1-1+X,定点小数的反码为2-2-n+X。
例如求下列定点整数和定点小数的反码:
3、补码
正数的补码与原码、反码一样,都是其本身,而负数的补码是对其原码所有位,除符号位之外按位取反(1->0,0->1),并在末位补加1【简述为取反加一】,它比反码就多了加1这个步骤;负数的补码也可以通过公式求得,其中定点整数的补码为2n+1+X,定点小数的补码为2+X。
例如求下列定点整数和定点小数的补码:
注:例如8位补码的表示范围为-127至0至127,一共256个。
4、移码
移码又称为增码,是符号位取反的补码,即移码与补码只是符号位相反,一般用做浮点数的阶码表示,因此只用于整数,目的是保证浮点数的机器零为全零。
(四)移位运算
对于一个正数,由于其原码=补码=反码,所以经过经过移位后出现的空位以0补齐;而对于负数,由于各种编码的表示形式不同,所以当机器数移位时,对空位的补齐要根据相关规则来进行补齐,如下表:
真值 | 补齐代码 |
正数 | 以0补齐 |
负数 | 原码以0补齐;反码以1补齐;补码若左移以0补齐,若右移以1补齐 |
六、系统总线
(一)总线的概念
总线是计算机中各功能部件之间传送信息的公共通信干线,计算机使用总线结构便于增减外设,同时减少了信息传输线的条数,可以提高系统的可扩展性。
(二)总线的分类
总线可分为内部总线和系统总线,内部总线是指CPU内部连接各寄存器的总线,系统总线是指CPU与主存储器及外部设备接口相连的·总线。
按照计算机所传输的信息种类,计算机的总线可以划分为数据总线(DB)、地址总线(AB)和控制总线(CB),它们分别用来传输数据、数据地址和控制信号,如下:
1、数据总线
数据总线用于传输各功能部件之间的数据信息,它一般是双向总线,其位数称为数据总线宽度,它是衡量系统性能的一个重要参数。
2、地址总线
地址总线是单向总线,它用于指出数据总线上的源数据或目的数据在主存单元的地址或I/O设备的地址,地址线的位数与存储单元的个数有关,若地址线的根数为M,则对应的存储单元个数(地址总线可访问的最大存储容量)为2M字节。
3、控制总线
控制总线是用于发出各种控制信号的传输线,各部件能在不同时刻占有总线使用权,需通过控制总线实现,通常来说它也是单向总线。
(三)总线周期
总线周期是指在CPU完成一次访问指令缓存或I/O端口操作所需要的时间,CPU响应直接内存存取(DMA)请求时,只能是完成一个总线周期结束时。
七、中断
(一)中断、中断向量、中断源
当计算机在执行程序的过程中,出现异常情况或特殊请求,计算机停止了现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序,称为中断,而中断程序的入口地址称为中断向量,另外我们把凡是能向CPU提出中断请求的各种因素称为中断源,同时还要注意当多个中断源同时向CPU提出中断请求时,此时CPU坚持一个原则,即任何瞬间只接受一个中断源的请求。
(二)中断系统的分类
中断系统可以根据对中断处理策略的不同分类为单级中断系统和多级中断系统,单级在响应某一中断请求后,在此期间不允许被其他中断源打断,也就是只能等其执行完毕;而多级中具有多个不同优先级的中断源,其中优先级级别高的可以打断优先级级别低的中断服务程序,从而以程序嵌套的方式进行工作,即为了便于实现多级中断,使用堆栈来保护断点和现场最有效(实现中断嵌套后进先出的栈来保护断点和现场)。
(三)中断服务程序
一般中断服务程序的流程分为以下四个部分:
CPU暂停现行程序,此时保护程序的断点(由中断隐指令完成)和保存CPU中各种寄存器的值(由中断服务程序完成),称为保护现场,中断服务程序的最后一条指令是中断返回指令;当执行结束后,即中断返回至原程序的断点处,从而整个完整的程序中断处理过程完成。
(四)DMA方式
当CPU处理I/O事件时有大量数据需处理时,通常不使用中断,而是使用使CPU效率更高的DMA控制方式,在该方式下,主存和外设之间建立了直接的数据通路,其中具体操作由DMA控制器来实行和完成(不需要CPU参与),当数据传送完成后再将信息反馈给CPU,这样就提高了I/O系统处理数据的能力,并减少了CPU周期的浪费,例如磁盘适合用DMA方式来实现输入输出操作。