全部科目 > 数据库系统工程师 >
2023年上半年 上午试卷 综合知识
第 2 题
知识点 高速缓存   控制器   CPU   DM   存储体系   指令   中断  
关键词 CPU   DMA   存储体   高速缓存   控制器   数据   硬盘   指令   中断   主存  
章/节 硬件基础知识  
 
 
在由高速缓存、主存和硬盘构成的三级存储体系中,CPU执行指令时需要读取数据,那么DMA控制器中断CPU发出的数据地址是(  )。
 
  A.  高速缓存地址
 
  B.  主存物理地址
 
  C.  硬盘的扇区地址
 
  D.  虚拟地址
 
 




 
 
相关试题     虚拟存储器基本工作原理、多级存储体系 

  第3题    2015年上半年  
Cache的地址映像方式中,发生块冲突次数最小的是( )。

  第20题    2022年上半年  
能够不访问页表,实现快速将虚拟地址映射到物理地址的硬件机制是()。

  第3题    2009年上半年  
(3)是指按内容访问的存储器

相关试题     CPU的组成 

  第1题    2014年上半年  
在CPU中,常用来为ALU执行算术逻辑运算提供数据并暂存运算结果的寄存器是()。

  第1题    2020年下半年  
下列属于CPU中算术逻辑单元的部件是( )。

  第1题    2010年上半年  
为实现程序指令的顺序执行,CPU (1)中的值将自动加1。

 
知识点讲解
· 高速缓存
· 控制器
· CPU
· DM
· 存储体系
· 指令
· 中断
 
        高速缓存
        高速缓存(Cache)用来存放当前最活跃的程序和数据,其特点是:容量一般在几千字节到几兆字节之间;速度一般比主存快5~10倍,由快速半导体存储器构成;其内容是主存局部域的副本,对程序员来说是透明的。
        Cache一般位于CPU与主存之间,主要包括管理模块、由相联存储器构成的存储表以及小容量高速度存储器,如下图所示。应用中首先判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定将主存的一块信息放到Cache存储器的哪一块里。
        
        Cache的组成
               高速缓存的地址映像
               CPU工作时给出的是主存的地址,要从Cache存储器中读写信息,就需要将主存地址转换成Cache存储器的地址,这种地址的转换叫作地址映像。Cache的地址映像有以下三种方法:
               (1)直接映像。直接映像是指主存的块与Cache块的对应关系是固定的,如下图所示。在这种映像方式下,由于主存中的块只能存放在Cache存储器的相同块号中,因此,只要主存地址中的主存区号与Cache中的主存区号相同,则表明访问Cache命中。一旦命中,根据主存地址中的区内块号立即可得到要访问的Cache存储器中的块,而块内地址就是主存地址中给出的低位地址。
               
               直接映像示意图
               直接映像方式的优点是地址变换很简单,缺点是灵活性差。例如,不同区号中块号相同的块无法同时调入Cache存储器,即使Cache中有空闲块也无法使用。
               (2)全相联映像。全相联映像的示意图如下图所示。同样,主存与Cache存储器均分成容量相同的块。这种映像方式允许主存的任一块可以调入Cache存储器的任何一个块的空间中。
               
               全相联映像示意图
               进行地址变换时,利用主存地址高位表示的主存块号与Cache中保存的主存块号进行比较,若相同即为命中。这时根据块号就可知道要访问的是哪一块。Cache存储器的块找到后,块内地址就是主存的低位地址。这时便可以读写Cache块中的内容。在变换时,当找到主存块号命中时,还必须知道主存的这一块存到了Cache的哪一块里面。
               全相联映像的主要优点是主存的块调入Cache的位置不受限制,十分灵活。其主要缺点是无法从主存块号中直接获得所对应Cache的块号,变换比较复杂,速度比较慢。
               (3)组相联映像。这种方式是前面两种方式的折衷。具体做法是将Cache中的块再分成组。例如,假定Cache有16块,再将每两块分为1组,则Cache的块就分为8组。主存同样分区,每区16块,再将每两块分为1组,则每区的块就分为8组。
               组相联映像就是规定组采用直接映像方式而块采用全相联映像方式。也就是说,主存任何区的0组只能存到Cache的0组中,1组只能存到Cache的1组中,依此类推。组内的块则采用全相联映像方式,即一组内的块可以任意存放。也就是说,主存一组中的任一块可以存入Cache相应组的任一块中。
               这种方式下,通过直接映像方式来决定组号,在一组内再用全相联映像方式来决定Cache中的块号。由主存地址高位决定主存区号与Cache中区号比较可决定是否命中。主存后面的地址即为组号。
               高速缓存的替换算法
               替换算法的目标就是使Cache获得最高的命中率。常用算法有如下几种:
               (1)随机替换算法。这种方法是用随机数发生器产生一个要替换的块号,将该块替换出去。
               (2)先进先出算法。这种方法是将最先进入Cache的信息块替换出去。
               (3)近期最少使用算法。这种方法是将近期最少使用的Cache信息块替换出去。
               (4)优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
               高速缓存的性能分析
               Cache的性能是计算机系统性能的重要方面。命中率是Cache的一个重要指标。Cache的设计目标是在成本允许的条件下达到较高的命中率,使存储系统具有最短的平均访问时间。设Hc为Cache的命中率,tc为Cache的存取时间,tm为主存的访问时间,则Cache存储器的等效加权平均访问时间ta为:
               ta=Hctc+(1-Hctm=tc+(1-Hc)(tm-tc
               这里假设Cache访问和主存访问是同时启动的,其中,tc为Cache命中时的访问时间,(tm-tc)为失效访问时间。如果在Cache不命中时才启动主存,则:
               ta=tc+(1-Hctm
               在指令流水线中,Cache访问作为流水线中的一个操作阶段,Cache失效将影响指令的流水。因此,降低Cache的失效率是提高Cache性能的一项重要措施。当Cache容量比较小时,容量因素在Cache失效中占有比较大的比例。降低Cache失效率的方法主要有选择恰当的块容量、提高Cache的容量和提高Cache的相联度等。
               Cache的命中率与Cache容量的关系是:Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加Cache容量意味着增加Cache的成本和增加Cache的命中时间。
               在多级Cache的计算机中,Cache分为一级(L1 Cache)、二级(L2 Cache)等,CPU访存时首先查找L1 Cache,如果不命中,则访问L2 Cache,直到所有级别的Cache都不命中,才访问主存。目前,CPU内的Cache通常为二级结构。通常要求L1 Cache的速度足够快,以赶上CPU的主频。L1 Cache的容量一般都比较小,为几千字节到几十千字节;L2 Cache则具有较高的容量,一般为几百字节到几兆字节,以具有足够高的命中率。
 
        控制器
        控制器用于控制整个CPU的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。
        指令控制逻辑要完成取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。控制器在工作过程中主要使用下述几个部件:
        (1)指令寄存器(IR)。当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入IR暂存,指令译码器根据IR的内容产生各种微操作指令,控制其他部件协调工作,完成指令的功能。
        (2)程序计数器(PC)。PC具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址。执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量产生,或者根据转移指令给出的直接转移的地址产生,再送入PC。
        (3)地址寄存器(AR)。AR保存当前CPU所访问的内存单元的地址。由于内存和CPU存在着操作速度上的差异,所以需要使用AR保持地址信息,直到内存的读/写操作完成为止。
        (4)指令译码器(ID)。指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别要进行的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。
        时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。
 
        CPU
        CPU即中央处理器,它是计算机系统的核心部分。刚才所列的系统性能评价指标都是围绕CPU的。当然,这些指标的评价结果是建立在CPU与其他系统部件(如内存)的协同工作的基础上的。单就CPU而言,考察它在系统中的工作性能要关注CPU利用率、队列长度、每秒中断次数,等。
 
        DM
        DM(Delta Modulation)即增量调制,又称ΔM调制,是最简单的有损预测编码方法,早期在数字电话中被采用,是一种最简单的差值脉冲编码。实际的采样信号与预测的采样信号的差的极性若为正,则用1表示,反之则用0表示。由于DM编码只用1位对声音信号进行编码,所以DM系统又称1位系统。
 
        存储体系
        计算机中,用于存放程序或数据的存储部件有CPU内部寄存器、高速缓冲存储器(Cache)、主存储器(内存储器、内存)和辅存(外存储器、外存)。它们的存取速度不一样,从快到慢依次为寄存器→Cache→内存→辅存。一般来讲,速度越快,成本就会越高。因为成本高,所以容量就会越小。严格来说,CPU内部寄存器不算存储系统。因此,在计算机的存储系统体系中,Cache是访问速度最快的设备。
               主存储器
               内存采用的是随机存取方式,因此简称为RAM。如果计算机断电,则RAM中的信息会丢失。内存需对每个数据块进行编码,即每个单元有一个地址,这就是所谓的内存编址问题。内存一般按照字节编址或按照字编址,通常采用的是十六进制表示。例如,假设某内存储器按字节编址,地址从A4000H到CBFFFH,则表示该存储器有(CBFFFA4000)+1个字节(28 000H字节),也就是163 840个字节(160KB)。
               编址的基础可以是字节,也可以是字(字是由一个或多个字节组成的),要算地址位数,首先应计算要编址的字或字节数,然后对其求2的对数即可得到。例如,上述内存的容量为160KB,则需要18位地址来表示(217=131 072,218=262 144)。
               内存这个知识点的另外一个问题就是求存储芯片的组成问题。实际的存储器总是由一片或多片存储器配以控制电路构成。其容量为W×B,W是存储单元的数量,B表示每个单元由多少位组成。如果某一芯片规格为w×b,则组成W×B的存储器需要用(W/w)×(B/b)块芯片。例如,上述例子中的存储器容量为160KB,若用存储容量为32K×8b的存储芯片构成,因为1B=8b(一个字节由8位组成),则至少需要(160K/32K)×(1B/8)=5块。
               高速缓冲存储器
               Cache的功能是提高CPU数据输入输出的速率,突破所谓的“冯·诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。高速存储器能以极高的速率进行数据的访问,但因其价格高昂,如果计算机的内存完全由这种高速存储器组成,则会大大增加计算机的成本。因此通常在CPU和内存之间设置小容量的高速存储器Cache。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,就如同其存储系统容量与内存相当而访问速度近似于Cache。
               使用Cache改善系统性能的依据是程序的局部性原理。依据局部性原理,把内存中访问概率高的内容存放在Cache中,当CPU需要读取数据时就首先在Cache中查找是否有所需内容。如果有,则直接从Cache中读取;若没有,再从内存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache中找到(称为访问命中),则可以大大提高系统性能。
               如果以h代表对Cache的访问命中率(“1-h”称为失效率,或者称为未命中率),t1表示Cache的周期时间,t2表示内存的周期时间,在读操作中使用“Cache+主存储器”的系统的平均周期为t3。则:
               t3=t1×h+t2×(1-h
               系统的平均存储周期与命中率有很密切的关系,命中率的提高即使很小也能导致性能上的较大改善。
               当CPU发出访存请求后,存储器地址先被送到Cache控制器以确定所需数据是否已在Cache中,若命中则直接对Cache进行访问。这个过程称为Cache的地址映射。常见的映射方法有直接映射、相联映射和组相联映射。
               当Cache产生了一次访问未命中之后,相应的数据应同时读入CPU和Cache。但是当Cache已存满数据后,新数据必须淘汰Cache中的某些旧数据。最常用的淘汰算法有随机淘汰法、先进先出淘汰法(FIFO)和近期最少使用淘汰法(LRU)。
               因为需要保证缓存在Cache中的数据与内存中的内容一致,相对于读操作而言,Cache的写操作比较复杂,常用的有以下几种方法。
               (1)写直达(Write Through)。当要写Cache时,数据同时写回内存,有时也称为写通。
               (2)写回(Write Back)。CPU修改Cache的某一行后,相应的数据并不立即写入内存单元,而是当该行从Cache中被淘汰时才把数据写回到内存中。
               (3)标记法。对Cache中的每一个数据设置一个有效位,当数据进入Cache后,有效位置1;而当CPU要对该数据进行修改时,数据只需写入内存并同时将该有效位清0。当要从Cache中读取数据时需要测试其有效位:若为1则直接从Cache中取数,否则从内存中取数。
               磁盘
               本知识点的要点是掌握与磁盘相关的最重要的概念与计算公式。
               磁盘是最常见的一种外部存储器,它是由一至多个圆形磁盘组成的,其常见技术指标如下。
               (1)磁道数=(外半径-内半径)×道密度×记录面数
               说明:硬盘的第一面与最后一面是起保护作用的,一般不用于存储数据,所以在计算的时候要减掉。例如,6个双面的盘片的有效记录面数是6×2-2=10。
               (2)非格式化容量=位密度×3.14×最内圈直径×总磁道数
               说明:每个磁道的位密度是不相同的,但每个磁道的容量却是相同的。一般来说,0磁道是最外面的磁道,其位密度最小。
               (3)格式化容量=总磁道数×每道扇区数×扇区容量
               (4)平均数据传输速率=每道扇区数×扇区容量×盘片转速
               说明:盘片转速是指磁盘每秒钟转多少圈。
               (5)存取时间=寻道时间+等待时间
               说明:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。显然,寻道时间与磁盘的转速没有关系。
               RAID
               廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID)技术旨在缩小日益扩大的CPU速度和磁盘存储器速度之间的差距。其策略是用多个较小的磁盘驱动器替换单一的大容量磁盘驱动器,同时合理地在多个磁盘上分布存放数据以支持同时从多个磁盘进行读写,从而改善了系统的I/O性能。小容量驱动器阵列与大容量驱动器相比,具有成本低、功耗小和性能好等优势;低代价的编码容错方案在保持阵列的速度与容量优势的同时保证了极高的可靠性,同时也较容易扩展容量。但是由于允许多个磁头同时进行操作以提高I/O数据传输速度,因此不可避免地提高了出错的概率。为了补偿可靠性方面的损失,RAID使用存储的校验信息来从错误中恢复数据。最初,inexpensive一词主要针对当时另一种技术(Single Large Expensive Disk,SLED)而言,但随着技术的发展,SLED已是明日黄花,RAID和non-RAID皆采用了类似的磁盘技术。因此RAID现在代表独立磁盘冗余阵列(Redundant Array of Independent Disks),同时用independent来强调RAID技术所带来的性能改善和更高的可靠性。
               RAID机制中共分8个级别,RAID应用的主要技术有分块技术、交叉技术和重聚技术。
               (1)RAID 0级(无冗余和无校验的数据分块):具有最高的I/O性能和最高的磁盘空间利用率,易管理,但系统的故障率高,属于非冗余系统。它主要应用于那些关注性能、容量和价格而不是可靠性的应用程序。
               (2)RAID 1级(磁盘镜像阵列):由磁盘对组成,每一个工作盘都有其对应的镜像盘,上面保存着与工作盘完全相同的数据拷贝,具有最高的安全性,但磁盘空间利用率只有50%。RAID 1主要用于存放系统软件、数据及其他重要文件。它提供了数据的实时备份,一旦发生故障,所有的关键数据即刻就可重新使用。
               (3)RAID 2级(采用纠错海明码的磁盘阵列):采用了海明码纠错技术,用户需增加校验盘来提供单纠错和双验错功能。对数据的访问涉及阵列中的每一个盘。大量数据传输时I/O性能较高,但不利于小批量数据传输,因此实际应用中很少使用。
               (4)RAID 3级和RAID 4级(采用奇偶校验码的磁盘阵列):把奇偶校验码存放在一个独立的校验盘上。如果有一个盘失效,其上的数据可以通过对其他盘上的数据进行异或运算得到。读数据很快,但因为写入数据时要计算校验位,因此速度较慢。
               (5)RAID 5级(无独立校验盘的奇偶校验码磁盘阵列):与RAID 4类似,但没有独立的校验盘,校验信息分布在组内所有盘上,对于大批量和小批量数据的读写性能都很好。RAID4级和RAID 5级使用了独立存取技术,阵列中每一个磁盘都相互独立地操作,所以I/O请求可以并行处理。因此,该技术非常适合于I/O请求率高的应用,而不太适应于要求高数据传输率的应用。与其他方案类似,RAID 4级和RAID 5级也应用了数据分块技术,但块的尺寸相对大一些。
               (6)RAID 6级(具有独立的数据硬盘与两个独立的分布式校验方案):在RAID 6级的阵列中设置了一个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路,但其性能改进有限,价格却很昂贵。
               (7)RAID 7级(具有最优化的异步高I/O速率和高数据传输率的磁盘阵列):是对RAID6级的改进。在这种阵列中的所有磁盘都具有较高的传输速度,有着优异的性能,是目前最高档次的磁盘阵列。
               (8)RAID 10级(高可靠性与高性能的组合):由多个RAID等级组合而成,建立在RAID 0级和RAID 1级基础上。RAID 1级是一个冗余的备份阵列,而RAID 0级是负责数据读写的阵列,因此该等级又称为RAID 0+1级。由于利用了RAID 0极高的读写效率和RAID 1级较高的数据保护和恢复能力,使RAID 10级成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。
 
        指令
        指令是指挥计算机完成各种操作的基本命令。
        (1)指令格式。计算机的指令由操作码字段和操作数字段两部分组成。
        (2)指令长度。指令长度有固定长度的和可变长度的两种。有些RISC的指令是固定长度的,但目前多数计算机系统的指令是可变长度的。指令长度通常取8的倍数。
        (3)指令种类。指令有数据传送指令、算术运算指令、位运算指令、程序流程控制指令、串操作指令、处理器控制指令等类型。
 
        中断
        中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的,从这个意义上来说它是异步的。硬件中断的异常处理程序常常被称为中断处理程序(interrupt handler)。
               硬中断与软中断
               硬中断是由硬件产生的,例如磁盘、网卡、键盘、时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上。
               软中断是一组静态定义的下半部分接口,可以在所有的处理器上同时执行,即使两个类型相同也可以。但是一个软中断不会抢占另外的一个软中断,唯一可以抢占软中断的是硬中断。
               可屏蔽中断与不可屏蔽中断
               可屏蔽中断和不可屏蔽中断都属于外部中断,是由外部中断源引起的。不可屏蔽中断源一旦提出请求,CPU必须无条件响应,而对可屏蔽中断源的请求,CPU可以响应,也可以不响应。
               CPU一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(Non Maskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。IF位可以由用户控制,指令STI或Turbo C的Enable()函数,将IF位置1(开中断),指令CLI或Turbo_c的Disable()函数,将IF位清0(关中断)。
               中断优先级
               当多个中断源同时请求中断时,而CPU一次只能响应其中的一个中断,同时为了能响应所有中断,就引入中断优先级来处理。系统会根据引起中断事件的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。中断优先级有两种:查询优先级和执行优先级。
               查询优先级是不可以更改和设置的,在该方式下当多个中断源同时产生中断信号时,中断仲裁器会选择中断源优先处理的顺序,此过程与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高查询优先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。
               由于可屏蔽的中断源很多,故需要对其进行管理,如区分是哪个中断源发出的中断信号?哪个中断源最优先及怎样处理多级中断嵌套等。为此,可使用中断控制器对多个可屏蔽中断源进行管理。
               中断控制器能够对中断进行排队管理,避免中断信号的丢失,同时支持对不同中断进行优先级的配置,使高优先级中断能够中断低优先级中断,满足系统中具有更高时间约束特性功能的需要。
               中断嵌套
               当处理器正在处理一个中断时,有比该中断优先级高的中断源发出中断请求时,如果处理器正在执行中断处理程序,那么处理器会对高优先级的中断进行立即处理,处理完之后再返回到低优先级的中断服务程序继续执行。这样就形成了中断服务程序中套用中断服务程序的情况,即中断嵌套。可嵌套中断的处理流程和中断服务框图如下图所示。
               
               可嵌套中断处理流程



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有