软件设计师 上午题 计算机系统

软件设计师 上午题 计算机系统

众所周知,计算机系统是由软件和硬件组成的。其中其基本硬件系统则由运算器、控制器、存储器、输入设备和输出设备5大部件组成。而运算器和控制器又被集成在一起组成了中央处理单元(CPU),亦即硬件系统的核心。

一、中央处理单元(CPU)

正如前文所述,CPU由运算器和控制器,以及寄存器组组成(需要注意的是,运算器是在控制器的命令下进行动作的执行部件):

Ⅰ CPU的组成部件

  1. 运算器
    正如其名,运算器是一种用来完成计算机的各种算术和逻辑运算的数据加工处理部件。因此其具有以下两个主要功能:

    1. 执行所有的算术运算,例如基本的四则运算。
    2. 执行所有的逻辑运算并进行逻辑测试,例如与或非及零值测试。

    而运算器又是由以下几个部件组成的:

    1. 算术逻辑单元(Arithmetic and Logic Unit, ALC),负责处理数据,实现对数据的算术运算和逻辑运算。
    2. 累加寄存器(Accumulator register, AC),亦即累加器。其主要功能是为ALU开辟一片工作区,这个过程与我们使用栈来进行数学计算的过程类似。由于最终的运算结果是存储在累加器中的,因此每个运算器中都至少要有一个累加器
    3. 数据缓冲寄存器(DR)和状态条件寄存器(PSW)了解即可,前者是CPU和内存间交换数据的中转站,后者则是用来判别当前指令完成后的状态。
  2. 控制器
    和只能完成运算的运算器不同,控制器用于控制整个CPU的工作,实现了计算机运行的自动化。它不仅要保证程序的正确执行,还要能够处理异常事件。
    控制器主要的功能有指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑:

    1. 指令控制逻辑:即完成取指令、分析指令和执行指令的一系列操作,包含了以下部件(需要了解是,一条指令通常是由地址码和操作码组成的):
      1. 程序计数器(Program Counter, PC):每次执行指令时,CPU都会自动修改PC的内容,使得其保持的始终都是将要执行的下一条指令的地址。
      2. 指令寄存器(Instruction Register, IR):当CPU要从PC中得到了将要执行的下一条指令的地址时,这条指令的转移过程为:内存–>数据缓存寄存器(DR)–>指令寄存器(IR)。
      3. 指令译码器(Instruction Decoder, ID):ID根据IR的内容获得指令,进而对指令中的操作码字段进行分析解释,进而向操作控制器发出具体的控制信号以完成所需的功能。
      4. 地址寄存器(Address Register, AR):由于内存和CPU的操作速度不同,需要AR来保存当前CPU所访问的内存单元的地址,直到内存的I/O操作完成。
    2. 时序控制逻辑:为每条指令按时间顺序提供应有的控制信号。
    3. 总线控制逻辑:控制总线,即控制为多个功能部件服务的信息通路。
    4. 中断控制逻辑:控制各种中断请求,并根据优先级的高低对中断请求进行排队。
  3. 寄存器组
    寄存器组可分为专用寄存器和通用寄存器,前者是指控制器和运算器中的寄存器,而后者的用途更为广泛,具体功能可以由程序员来定义。

Ⅱ CPU的功能

通过以上几个组成部分的协作,CPU主要具备了以下几种功能:

  1. 程序控制:CPU通过执行指令来控制程序的执行顺序。
  2. 操作控制:一条指令的实现需要若干个操作信号配合完成,因此CPU会产生每条指令的操作信号并将其送往对应的部件,使其按指令的功能要求进行操作。
  3. 时间控制:CPU对各种操作进行时间上的控制。
  4. 数据处理:CPU通过对数据进行加工处理来生成可以被人们利用的结果,这是CPU最根本的任务
  5. 异常响应:CPU需要对系统内外的中断(异常)做出响应。

Ⅲ 寻址

寻址根据操作数的存放位置不同主要有以下几种类型:

操作数和前文中提到的操作码并不相同,操作数是指令的操作对象,提供操作所需的数据或数据存储位置;而操作码则是指令中指定操作类型的部分,告诉CPU执行何种操作(如加法、跳转等)

  • 立即寻址:操作数就包括在指令当中。
  • 直接寻址:操作数存放在内存单元当中,指令中直接给出操作数所在存储单元的地址。
  • 间接寻址:指令中给出操作数地址的地址。
  • 寄存器寻址:操作数存放在某一寄存器当中,指令中给出存放操作数的寄存器名。
  • 寄存器间接寻址:操作数存放在内存单元中,该单元的地址在某个寄存器中。

Ⅳ 真题赏析

C,一条将要被CPU执行的指令都将存放在指令寄存器(IR)当中,而操作码和地址码都是指令的一部分,也都将被存放在IR当中。


“对用户透明”(Transparent to the User)在计算机科学中指的是:
某个硬件或软件组件的存在和操作对用户(程序员或普通用户)不可见,无需用户主动干预或直接操作。

B,IR存储当前正在执行的指令内容,由 CPU 内部自动管理,程序员无法直接访问或修改,因此对用户完全透明。


C,虽然指令是被寄存在IR当中的,但正如上文中所说的“当CPU要从PC中得到了将要执行的下一条指令的地址时…”,首先需要在PC处获取下一条指令的地址才能从内存中读取指令操作码。


B,题干中的#45即为操作数,操作数直接包含在指令当中,为立即寻址,将要把操作数放在寄存器当中,为寄存器寻址。


计算机的​​字长​​(Word Size)是指计算机在​​一次操作中能够处理的数据位数​​,它是CPU设计中的一个核心参数,直接影响计算机的性能和效率。根据字长,我们可以确定计算机一次能处理的二进制位数,即“字”(Word)。

C,按字编址说明寻址的基本单位是“字”,即最小寻址单位就是一个Word,在本题的情境下,即32bits = 4Byte。而内存容量2GB = 2048MB = 2312^{31}Byte。
那么可寻址范围即为

231÷22 = 229Byte = 512MB2^{31}\div 2^2\ =\ 2^{29}Byte\ =\ 512MB


A,寻址速度:立即寻址>寄存器寻址>直接寻址>寄存器间接寻址>间接寻址。

二、计算机中的数据表示

机器数的原反补及移码表示不再赘述,我们下边来了解一下定点数和浮点数:

Ⅰ 定点数和浮点数

定点数即小数点的位置固定不变的数,又可以细分为定点整数和定点小数。但是定点数所能表示的数值范围比较小,在运算中很容易因为结果超出范围而溢出,因此我们需要引入能表示更大范围的浮点数。
正如一个十进制数83.12583.125既可以写作103×0.08312510^3\times 0.083125也可以写作104×0.008312510^4\times 0.0083125,一个二进制数1011.101011011.10101也既可以写作24×0.1011101012^4\times 0.101110101也可以写作25×0.01011101012^5\times 0.0101110101。也就是说,一个二进制数N可以用一种更一般的形式来表示:

N=2E×FN=2^E\times F

其中,E被称之为阶码,它与浮点数能够表示的范围有关,F被称之为尾数,它与浮点数能够表示的精度有关(尾数一定是一个纯小数,即其整数部分一定为0)。
用阶码和尾数来表示的数即为浮点数,这种表示数的方法也被称之为浮点表示法,显然我们可以用多个浮点形式表示同一个数。
此外,为了利用尾数来表示更多的有效数字,我们通常采用规格化浮点数,即将尾数的绝对值控制在区间[0.5, 1]。

Ⅱ 真题赏析

在两个浮点数相加时,需要先对阶,即将阶码保持一致。假如现在需要对104×0.123410^4\times 0.1234102×0.123410^2\times 0.1234加和,如果我们将大阶向小阶对齐的话,104×0.123410^4\times 0.1234(int(1234))需要对齐为102×0.340010^2\times 0.3400(int(34)),这样一来就损失了1200;而如果我们将小阶向大阶对齐的话,102×0.123410^2\times 0.1234(int(12.34))就需要更改为104×0.00123410^4\times 0.001234(int(0.1234)),这样一来就损失了12.2166
两相比较,显然需要采用的是小阶向大阶对齐,并将小数点左移,即尾数右移。

三、校验码

计算机系统在运行时通常会采用校验码的方法来确保数据在传送过程中正确无误,常用的校验码有以下三种:

Ⅰ 奇偶校验码

奇偶校验码(Parity Codes)通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。

所谓码距,是指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。例如,4位 8421 码的码距为 1,在传输过程中,该代码的一位或多位发生错误,都将变成另外一个合法的编码,因此这种代码无检错能力。码距越长,一种编码的检验和纠错能力就越长。

进行奇校验时,奇偶检验码只能检测代码中奇数位出错的编码,但不能发现偶数维出错的情况。

Ⅱ 海明码

海明码(Hamming Code)是一种利用奇偶性的检验方法,其构成方法是在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错(海明码的码距为3,码距大于等于3之后编码开始具备纠错能力)。
设数据位是n位,校验位是k位,则n和k必须满足以下关系:

2k1n+k2^k-1\ge n+k

Ⅲ 循环冗余校验码

循环冗余校验码(Cyclic Redundancy Check,CRC)为k个数据位产生r个校验位来进行编码,其总长度为k+r,CRC的代码格式如下图所示:

在CRC当中,校验码是由信息码产生的,校验码位数越多,该代码的校验能力就越强。
此外,在求CRC编码时,采用的是按位的模2运算。

Ⅳ 真题赏析

A,海明码是一种利用奇偶性来检错和纠错的编码。C选项,CRC不具有纠错能力,错误。


C,奇偶校验码是通过判断编码中1的个数是否满足奇校验或者偶校验的一种校验方法。当采用奇校验时,其要求编码中所有数据位中1的个数之和为一个奇数,因此只有奇数个位出错时才可以检验到错误,如果是偶数个的话错误会相互抵消。此外,奇偶校验码只能检测到存在错误而不能定位错误所在,因此不具备纠错能力。

四、计算机指令系统

Ⅰ CISC和RISC

CISC和RISC是指令集发展的两种途径。

Ⅱ 指令流水线

指令流水线即模仿工业生产过程中的流水线,使得一个指令的子过程能够在专用模块上有效地并发工作:

以下比较重要的几个概念:

  1. 吞吐率是指单位时间内流水线处理机流出的结果数,如果流水线的子过程所用时间不一样,吞吐率p为最长子过程的倒数,即为:

p=1/max{t1,t2,...,tm}p\,\,=\,\,1/\max \left\{ \bigtriangleup t_1,\bigtriangleup t_2,...,\bigtriangleup t_m \right\}

= n/执行1条指令的时间+(n1)×最长时间段=\ n/\text{执行1条指令的时间}+\left( n-1 \right) \times \text{最长时间段}

其中n是连续输入指令的个数,显然最大吞吐率取决于流水线中最慢一段所需的时间。
2. 流水线从起始状态到达最大吞吐率需要一定时间,这段时间即为建立时间。
3. 加速比也是衡量一条流水线性能的关键指标,其为非流水线系统的执行时间和流水线系统执行时间的比

Ⅲ 真题赏析

D,流水线中处理n条连续命令的时间即为(执行1条指令的时间)+(n-1)*(最长时间段)

五、计算机存储系统

Ⅰ 存储器的分类

  1. 按存储器所处位置分类:
    1. 内存:也称之为主存,用来存放机器当前运行所需的程序和数据,以便向CPU提供信息,容量小、速度快。
    2. 外存:也称之为辅存,用来存放当下不参与运行的大量信息,而在需要时调入内存。
  2. 按存储器的工作方式分类:
    1. 读/写存储器(Read/Write Memory):RAM的一种,既能读取数据也能存入数据。
    2. 只读存储器:
      1. 固定只读存储器(Read Only Memory, ROM):在出厂时就被商家写好了数据,其内容只可读取不可改变。
      2. 可编程的只读存储器(Programmable Read Only Memory, PROM):其中的内容可以由用户一次性地写入,随后不能再更改。
      3. 可擦除可编程的只读存储器(Erasable Programmable Read Only Memory, EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以再修改。擦除的方式是使用紫外线照射。
      4. 电擦除可编程的只读存储器(Electrically Erasable Programmable Read Only Memory, EEPROM):和EPROM类似,只是擦除方式为电擦除。
      5. 闪速存储器(Flash Memory):即闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM,使用电信号进行信息擦除。以一整块为单位,闪存可以在数秒之内删除,速度远快于EPROM。
  3. 按寻址方式分类:
    1. 随机存储器(Random Access Memory, RAM):可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间都是相同的。
    2. 顺序存储器(Sequentially Addressed Memory, SAM):访问数据所需要的时间与数据所在的存储位置有关。
    3. 直接存储器(Direct Addressed Memory, DAM):介于随机存取和顺序存取之间的一种寻址方式。例如磁盘就是一个直接存储器,它对于每一个磁道的寻址是随机的,但在一个磁道当中的寻址是顺序的。

Ⅱ 相联存储器

相联存储器是一种按内容访问的存储器,它可以将数据的某一部分作为关键字写入,特别适合于信息的检索和更新。

Ⅲ 高速缓存 Cache

Cache位于CPU和主存之间,用来存放当前最活跃的程序和数据。Cache也分为控制器和存储器两部分,控制部分会判断CPU想要访问的内容是否在Cache存储器中,存在即为命中,否则为没有命中。命中时直接对Cache存储器寻址,反之则要按照替换原则决定主存的信息将要放在Cache中的哪一块里(没有命中就说明CPU想要的内容Cache当中没有,那么Cache就需要去拷贝主存的部分信息,随后再让CPU来获取)。

而常见的替换算法有以下几种:

  1. 随机替换算法:用随机数发生器产生一个要替换的块号,将该块替换出去。
  2. 先进先出算法:将最先进入的Cache块替换出去。
  3. 近期最少使用算法:将近期最少使用的Cache块替换出去。
  4. 优化替换算法:这种算法要求先执行一次程序来统计Cache的替换情况,随后据此在第二次执行该程序时选择最有效的方式。

一个好的替换算法可以使Cache获得尽可能高的命中率。

此外,正如前文所述,CPU在调取信息时送出的是主存单元的地址,但是首先会从Cache中读写信息,这就要求主存地址和Cache地址之间能够有效转换,我们将这种转换称之为地址映像,具体有如下几种方法:

  1. 直接映像:主存的块与Cache的块的对应关系是固定的。

其优点为地址变换很简单,但具有灵活性差的缺点,比如不同区号中块号相同的块无法同时调入Cache中,将造成空间浪费。

  1. 全相联映像:主存的任一块可以调入Cache中的任何一个块的空间中。

这种映像的主要优点是主存的块调入Cache的位置不受限制,十分灵活,而主要缺点是无法从主存块号直接获得Cache的块号,变换更加复杂,速度变慢。

Ⅳ 真题赏析

A,虚拟存储器是一种用于扩展物理内存容量的核心技术,它一般采用主存-辅存两级结构来实现。这是由于主存(DRAM)昂贵且容量有限,因此可以仅将活跃数据存放在高速且容量小的主存当中,而将非活跃数据暂存到低速但容量大的辅存当中。这样就可以抽象出一块比物理内存大得多的逻辑空间。


C,内存中保存的信息在断电后会被清除,属于易失性存储器,而闪存则是一种非易失性存储器,两者不可互换。


B,CD都属于非易失性存储器,直接排除。A选项SRAM是静态RAM,无需刷新;B选项DRAM是动态RAM,它利用电容电荷存储数据,电荷会自然泄露,因此需要每隔几毫秒刷新一次。


A,组相联映像是全相联映像和直接映像的一种折中方案,由于全相联映像中内存块号和Cache块号没有了一一对应的关系,冲突次数显著降低。发生块冲突次数:直接映像>组相联映像>全相联映像。


A,地址映像由专门的硬件自动完成。

六、输入/输出技术

一般有以下三种I/O控制方式:

Ⅰ 程序查询方式

这种方式下CPU会执行程序逐一对外设进行查询,判断它们是否做好了接收或者发送数据的准备,发现哪个设备就绪就对该外设服务。这种方式有如下两个缺点:

  1. 严重降低了CPU的效率。
  2. 对外部突发事件无法做出实时响应。

Ⅱ 中断驱动方式

由于程序查询方式会严重浪费CPU的算力,使其一直等待IO系统的结果,那么就可以利用中断方式完成数据的I/O过程。这种方式下CPU不会等待IO系统的结果,而是直接转身去处理其它任务,而当IO系统就绪时,就会向CPU发送一个中断请求。CPU在接收到这个中断请求之后,就会保存当下正在执行的现场,转入IO系统完成数据交换,然后再返回刚才的现场继续完成执行。

关于中断有以下两个概念:

  1. 中断向量:中断向量提供了中断服务程序的入口地址。
  1. 中断响应时间:即从发送中断请求开始到进入中断服务程序所需的时间。

Ⅲ 直接存储器存取方式

在上文提到的控制方式中,无论是查询方式传送还是中断方式传送,都需要由CPU执行程序来实现,这就限制了数据的传送速度。
而直接内存存取(Direct Memory Access, DMA)是指数据在内存和I/O设备间直接成块传送,不需要CPU的任何干涉。除了在开始和结束时需要CPU进行处理之外,其余操作都由DMA硬件来完成,在此期间CPU可进行其它任务。

Ⅳ 真题赏析

A,C选项中由于DMA方式采用的是以块为基本单位的数据传送,其传输数据的速度是要大于程序中断方式的。

七、计算机安全

Ⅰ 加密技术

根据具体实现的不同,可以将加密技术分为对称加密和非对称加密两类:

  1. 对称加密技术:其特点是文件加密和解密时使用相同的密钥。由于只有一把密钥,该技术在密钥分发上是有缺陷的。但其加密解密速度很快,适合用来加密大量明文数据。
  2. 非对称加密技术:和对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(Publickey)和私有密钥(Privatekey)。这种技术进行加密的基本过程为:甲方生成一对密钥并将其中的一把作为公钥公开,得到该公钥的乙方使用该密钥加密后将密文发给甲方,甲方再使用自己的私钥对其进行解密。由于非对称加密技术避免了密钥的交换,因此其克服了密钥分发上的缺陷,只是会降低加密解密速度。

Ⅱ 认证技术

认证技术则主要用来验证用户、设备或数据的真实身份​​,确保通信双方可信,防止冒充或篡改。常见的认证技术主要以下几种:

  1. 摘要:将想要发送的明文经过Hash算法后得到摘要,将摘要和密文一同发送。接收方通过验证解密后得到的明文进行Hash算法的结果和摘要是否一致来进行认证。
  2. 数字签名:发送方使用私钥将摘要加密后得到签名,随后将签名附送。其余步骤和摘要认证类似。
  3. 数字证书:数字证书由权威机构(CA)发放,用户需要将自己的个人信息和公钥交给CA,CA随后使用自己的私钥对数字证书签名。接收者可以使用CA的公钥解密数字证书,进而得到用户的公钥。

Ⅲ 真题赏析

AD

甲方生成一对密钥并将其中的一把作为公钥公开,得到该公钥的乙方使用该密钥加密后将密文发给甲方,甲方再使用自己的私钥对其进行解密。

私钥用于解密而公钥用于加密,66题BD排除,67题AC排除。

发送方使用私钥将摘要加密后得到签名。

私钥用于签名,66题C排除,67题B排除。


A,网站的真伪就在于数字证书的真伪,数字证书的真伪就在于CA的真伪,那么就可以通过CA的签名来判断CA的真伪。


A,PKI体制即为公钥体制(PublicKey Infrastructure),在此体制下维护数字证书肯定是依靠公共性的机构,即CA。而正如上文所述,CA是使用自己的私钥对数字证书签名的。


D,私钥是无论如何都不能互换的,AC选项排除。A、B互信的前提应该是I1、I2互信,即I1、I2能够交换公钥。

八、计算机可靠性

计算机系统十分复杂,若要分析其可靠性,可将这个大系统分割成若干个子系统来简化分析过程,常见的系统可靠性数学模型有以下几种:

Ⅰ 串联系统

该系统当且仅当所有子系统都能正常工作时系统才能正常工作,其可靠性R为:

R=R1R2RNR=R_1R_2\cdot \cdot \cdot R_N

Ⅱ 并联系统

假如一个子系统能够正常工作,整个系统就能正常工作,其可靠性R为:

R=1(1R1)(1R2)(1RN)R=1-\left( 1-R_1 \right) \left( 1-R_2 \right) \cdot \cdot \cdot \left( 1-R_N \right)


软件设计师 上午题 计算机系统
http://example.com/2025/04/20/note24/
作者
谢斐
发布于
2025年4月20日
许可协议