免费智能真题库 > 历年试卷 > 程序员 > 2011年上半年 程序员 上午试卷 综合知识
  第9题      
  知识点:   RAM   SRAM   数据信号   信号
  关键词:   RAM   并行传输   存储单元   存储容量   地址信号   数据信号   传输   容量   数据   信号        章/节:   硬件基础知识       

 
若SRAM芯片的存储容量为64KX16位,则其地址线与数据线数目应为(9)。使得访问其指定存储单元时,能将地址信号数据信号一次性地并行传输。
 
 
  A.  16和16
 
  B.  64和16
 
  C.  16和64
 
  D.  6和8
 
 
 

 
  第9题    2010年下半年  
   41%
使用电容存储信息且需要周期性地进行刷新的存储器是(9)。
  第7题    2012年下半年  
   68%
计算机中主存储器主要由存储体、控制线路、地址寄存器、数据寄存器和(7)组成。
  第10题    2016年下半年  
   28%
在计算机系统中总线宽度分为地址总线宽度和数据总线宽度。若计算机中地址总线的宽度为32位,则最多允许直接访问主存储器(10)的..
   知识点讲解    
   · RAM    · SRAM    · 数据信号    · 信号
 
       RAM
        易失性存储设备的代表是随机存取存储器(Random Access Memory,RAM)。在计算机存储体系结构中,RAM是与CPU直接交换数据的内部存储器,也叫主存或内存,其内部结构图如下图2-12所示。
        
        RAM结构图
        RAM电路由地址译码器、存储矩阵和读写控制电路三部分组成,如上图所示。存储矩阵由触发器排列而成,每个触发器能存储一位数据(0/1)。通常将每一组存储单元编为一个地址,存放一个“字”;每个字的位数等于这组单元的数目。存储器的容量以“字数×位数”表示。地址译码器将每个输入的地址代码译成高(或低)电平信号,从存储矩阵中选中一组单元,使之与读写控制电路接通。在读写控制信号的配合下,将数据读出或写入。
        RAM的特点之一就是随机读写,其含义指的是当RAM存储器中的数据被读取或写入时,所需要的时间与这段信息所在位置或所写入位置是无关的。
        RAM的读写速度很快,几乎是所有访问设备中写入和读取速度最快的,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
        RAM存储器在断电时将丢失其存储内容,所以称为易失性存储设备,其主要用于存储短时间使用的程序。易失性和RAM的结构有关:随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失电荷。需要刷新就解释了随机存取存储器的易失性。
        按照RAM存储单元的工作原理,RAM又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。
               SRAM
               静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。SRAM将每个位存储在一个双稳态存储器单元,每个单元用一个六晶体管电路实现。
               数据一旦写入,其信息就稳定的保存在电路中等待读出。无论读出多少次,只要不断电,此信息会一直保持下去。SRAM初始加电时,其状态是随机的。写入新的状态,原来的旧状态就消失了。新状态会一直维持到写入新的状态为止。
               在电路工作时,即使不进行读写操作,只要保持在加电状态下,电路中就一定有晶体管导通,就一定就有电流流过,带来功率消耗。因此与DRAM相比,SRAM功耗较大,集成度不能做得很高。
               高速缓存Cache一般采用SRAM。高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。
               DRAM
               DRAM将每个位存储为对一个电容的充电,每个单元由一个电容和一个访问晶体管组成。当DRAM存储器单元中的电容非常小,它被干扰之后很难恢复,也有很多原因会造成电容漏电,因此为了避免存储信息的丢失,必须定时地给电容补充电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构非常简单,所用元器件少且功耗低,可以制造得很密集,已成为大容量RAM的主流产品。
               DRAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。
               DRAM必须定时不断刷新,以保证所存储的信息不会丢失,这或许是称之为动态的原因。初始加电时,其状态是随机的。写入新的状态,原来的旧状态就消失了。新状态会一直维持到写入新的状态为止。在电路上加上电源不进行读写及刷新操作时,只是保持在加电状态下,电路中没有晶体管导通,也就没有电流流过(会有极其微小的漏电流存在),也就没有功率消耗(或功耗可忽略不计)。因此,DRAM的功耗非常小,其集成度可做的很高,当前的一块DRAM芯片的集成度可达GB级别。
               常说的内存条,就是由DRAM构成。随着时间发展,DRAM经历若干代变更,早期的PM DRAM、EDO DRAM均已淘汰,目前仍在使用的主要是SDRAM和DDR SDRAM。
               DDR SDRAM
               双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDR SDRAM)。通常人们习惯称之为DDR。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系。
               内存主频和CPU主频一样,习惯上被用来表示内存的速度,它代表着该内存所能达到的最高工作频率。内存主频是以MHz(兆赫)为单位来计量的。内存主频越高在一定程度上代表着内存所能达到的速度越快。内存主频决定着该内存最高能在什么样的频率正常工作。
 
       SRAM
        静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。SRAM将每个位存储在一个双稳态存储器单元,每个单元用一个六晶体管电路实现。
        数据一旦写入,其信息就稳定的保存在电路中等待读出。无论读出多少次,只要不断电,此信息会一直保持下去。SRAM初始加电时,其状态是随机的。写入新的状态,原来的旧状态就消失了。新状态会一直维持到写入新的状态为止。
        在电路工作时,即使不进行读写操作,只要保持在加电状态下,电路中就一定有晶体管导通,就一定就有电流流过,带来功率消耗。因此与DRAM相比,SRAM功耗较大,集成度不能做得很高。
        高速缓存Cache一般采用SRAM。高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。
 
       数据信号
        数据可分为模拟数据与数字数据两种。在通信系统中,表示模拟数据的信号称为模拟信号,表示数字数据的信号称为数字信号,二者可以相互转化。模拟信号在时间和幅度取值上都是连续的,其电平随时间连续变化,如下图所示。例如,语音是典型的模拟信号,其他由模拟传感器接收到的信号如温度、压力、流量等也是模拟信号。数字信号在时间上是离散的,在幅值上是经过量化的,它一般是由二进制代码0、1组成的数字序列,如下图所示,如计算机中传送的是典型的数字信号。
        
        模拟信号和数字信号
        传统的电话通信信道是传输音频的模拟信道,无法直接传输计算机中的数字信号。为了利用现有的模拟线路传输数字信号,必须将数字信号转化为模拟信号,将这一过程称为调制(Modulation)。在另一端,接收到的模拟信号要还原成数字信号,这个过程称为解调(Demodulation)。通常由于数据的传输是双向的,因此,每端都需要调制和解调,这种设备称为调制解调器(Modem)。
        模拟信号的数字化需要3个步骤,即采样、量化和编码。采样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流,这样得到的数字信号可以通过电缆、光纤、微波干线、卫星通道等数字线路传输,在接收端则与上述模拟信号数字化过程相反,经过滤波又恢复成原来的模拟信号。上述数字化的过程又称为脉冲编码调制。
 
       信号
        任务间同步的另一种方式是异步信号。在两个任务之间,可以通过相互发送信号的方式,来协调它们之间的运行步调。
        所谓的信号,指的是系统给任务的一个指示,表明某个异步事件已经发生了。该事件可能来自于外部(如其他的任务、硬件或定时器),也可能来自于内部(如执行指令出错)。异步信号管理允许任务定义一个异步信号服务例程ASR(Asynchronous Signal Routine),与中断服务程序不同的是,ASR是与特定的任务相对应的。当一个任务正在运行的时候,如果它收到了一个信号,将暂停执行当前的指令,转而切换到相应的信号服务例程去运行。不过这种切换不是任务之间的切换,因为信号服务例程通常还是在当前任务的上下文环境中运行的。
        信号机制与中断处理机制非常相似,但又各有不同。它们的相同点是:
        .都具有中断性:在处理中断和异步信号时,都要暂时地中断当前任务的运行;
        .都有相应的服务程序;
        .都可以屏蔽响应:外部硬件中断可以通过相应的寄存器操作来屏蔽,任务也能够选择不对异步信号进行响应。
        信号机制与中断机制的不同点是:
        .中断是由硬件或特定的指令产生,而信号是由系统调用产生;
        .中断触发后,硬件会根据中断向量找到相应的处理程序去执行;而信号则通过发送信号的系统调用来触发,但系统不一定马上对它进行处理;
        .中断处理程序是在系统内核的上下文中运行,是全局的;而信号处理程序是在相关任务的上下文中运行,是任务的一个组成部分。
        实时系统中不同的任务经常需要互斥地访问共享资源。当任务试图访问资源时被正使用该资源的其他任务阻塞,可能出现优先级反转的现象,即当高优先级任务企图访问已被某低优先级任务占有的共享资源时,高优先级任务必须等待直到低优先级任务释放它占有的资源。如果该低优先级任务又被一个或多个中等优先级任务阻塞,问题就更加严重。由于低优先级任务得不到执行就不能访问资源、释放资源。于是低优先级任务就以一个不确定的时间阻塞高优先级的任务,导致系统的实时性没有保障。下图为是一个优先级反转的示例。
        
        一个优先级反转的示例
        如上图所示,系统存在任务1、任务2、任务3(优先级从高到低排列)和资源R。某时,任务1和任务2都被阻塞,任务3运行且占用资源R。一段时间后,任务1和任务2相继就绪,任务1抢占任务3运行,由于申请资源R失败任务1被挂起。由于任务2的优先级高于任务3,任务2运行。由于任务3不能运行和释放资源R,因此任务1一直被阻塞。极端情况下,任务1永远无法运行,处于饿死状态。
        解决优先级反转问题的常用算法有优先级继承和优先级天花板。
               优先级继承协议
               L. Sha、R. Rajkumar和J. P. Lehoczky针对资源访问控制提出了优先级继承协议(Priority Inheritance Protocol,PIP)。
               PIP协议能与任何优先级驱动的抢占式调度算法配合使用,而且不需要有关任务访问资源情况的先验知识。优先级继承协议的执行方式是:当低优先级任务正在使用资源,高优先级任务抢占执行后也要访问该资源时,低优先级任务将提升自身的优先级到高优先级任务的级别,保证低优先级任务继续使用当前资源,以尽快完成访问,尽快释放占用的资源。这样就使高优先级任务得以执行,从而减少高优先级任务被多个低优先级任务阻塞的时间。低优先级任务在运行中,继承了高优先级任务的优先级,所以该协议被称作优先级继承协议。
               由于只有高优先级任务访问正被低优先级任务使用的资源时,优先级继承才会发生,在此之前,高优先级任务能够抢占低优先级任务并执行,所以优先级继承协议不能防止死锁,而且阻塞是可以传递的,会形成链式阻塞。另外,优先级继承协议不能将任务所经历的阻塞时间减少到尽可能小的某个范围内。最坏情况下,一个需要μ个资源,并且与v个低优先级任务冲突的任务可能被阻塞min(μ,v)次。
               优先级冲顶协议
               J. B. Goodenough和L. Sha针对资源访问控制提出了优先级冲顶协议(Priority Ceiling Protocol,PCP)。
               PCP协议扩展了PIP协议,能防止死锁和减少高优先级任务经历的阻塞时间。该协议假设所有任务分配的优先级都是固定的,每个任务需要的资源在执行前就已确定。每个资源都具有优先级冲顶值,等于所有访问该资源的任务中具有的最高优先级。任一时刻,当前系统冲顶值(current priority ceiling)等于所有正被使用资源具有的最高冲顶值。如果当前没有资源被访问,则当前系统冲顶值等于一个不存在的最小优先级。当任务试图访问一个资源时,只有其优先级高于当前系统冲顶值,或其未释放资源的冲顶值等于当前系统冲顶值才能获得资源,否则会被阻塞。而造成阻塞的低优先级任务将继承该高优先级任务的优先级。
               已经证明,PCP协议的执行规则能防止死锁,但其代价是高优先级任务可能会经历优先级冲顶阻塞(Priority ceiling blocking)。即高优先级任务可能被一个正使用某资源的低优先级任务阻塞,而该资源并不是高优先级任务请求的。这种阻塞又被称作回避阻塞(avoidance blocking),意思是因为回避死锁而引起的阻塞。即使如此,在PCP协议下,每个高优先级任务至多被低优先级任务阻塞一次。使用PCP协议后,能静态分析和确定任务之间的资源竞争,计算出任务可能经历的最大阻塞时间,从而能分析任务集合的可调度性。在PCP协议下,高优先级任务被阻塞时会放弃处理器,因此,访问共享资源的任务可能会产生4次现场切换。
   题号导航      2011年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第9题    在手机中做本题