计算机系统知识要点:

√ 冯·诺依曼计算机核心思想与工作方式

冯诺依曼核心思想是基于硬件结构的计算机科学。他提出了冯诺依曼架构,这是一种通用的计算机硬件结构,以便可以执行任意的算法。他的工作方式是通过设计通用的硬件结构来实现计算,这样程序员就可以通过编写软件来使用该硬件结构。

可概括为 ‘存储程序’ 和 ‘程序控制’

冯诺依曼的核心思想对当今的计算机科学产生了深远的影响,并且被认为是计算机科学的基石之一。

基本思想:

       1. 采用“存储程序”工作方式
        2. 计算机由运算器、控制器、存储器、输入、输出设备组成
        3. 存储器中存放指令和数据
        4. 内部以二进制表示指令和数据

工作方式:

​ 按地址访问指令并自动按序执行程序

√二进制的意义

二进制是一种表示数字的方式,其中数字是由0和1组成的。它是计算机科学的基础,因为计算机内部的运算和存储都是以二进制的形式进行的。

在二进制系统中,数字的每一位都代表一个特定的权值。例如,在一个8位二进制系统中,最左边的位代表2的7次方,第二位代表2的6次方,以此类推。每一位上的0或1决定了是否加上对应的权值,从而得到整个数字的值。

二进制的优点在于它的简单性,因为它只有两个数字,0和1,可以很容易地用电路来实现。它还是计算机处理和存储数据的基础,并且对于计算机网络和全球互联网的运作至关重要。

√ 有关计算机中指令和数据

指令是指计算机执行的指令,而数据是指计算机处理的信息。指令是指导计算机如何处理数据的指令,而数据是指计算机处理的信息。指令是由计算机程序员编写的,而数据是由用户输入的。

√ 计算机系统抽象层次的描述和顺序关系

计算机系统的抽象层次描述了系统的不同组成部分,以及它们如何与系统中其他部分交互。抽象层次分解可以帮助开发人员更好地理解系统的结构和行为,从而更容易地设计和开发系统。

一般来说,计算机系统的抽象层次有如下几层:

  1. 硬件层:描述了系统的硬件组件,如 CPU、内存和磁盘。
  2. 操作系统层:描述了如何管理和控制硬件资源的系统软件,如 Windows、Linux 和 macOS。
  3. 应用软件层:描述了如何与用户交些的软件,如浏览器、文本编辑器和游戏。
  4. 用户界面层:描述了如何与用户进行交互的用户界面,如图形用户界面和命令行界面。

从下到上,这些抽象层次构成了一个层次结构,并且每个层次都隐藏了底层细节,使上层层次可以更加抽象地表示问题。

√ 从计算机系统的不同用户的角度描述计算机系统功能层次结构

从不同的用户角度描述计算机系统功能层次结构,可以有不同的方法:

  1. 从系统管理员的角度:系统管理员可能关注系统的底层硬件和操作系统,以确保系统的稳定性和可靠性。他们可以分解系统的硬件资源,如 CPU、内存和磁盘,并且管理操作系统如何使用这些资源。
  2. 从应用开发人员的角度:应用开发人员可能关注的是操作系统的 API 和应用软件层。他们可以利用操作系统提供的 API 来开发和管理应用程序。
  3. 从普通用户的角度:普通用户可能只关注应用软件和用户界面。他们可以使用应用程序来完成任务,并且在用户界面中进行交互。

从不同的用户角度描述计算机系统的功能层次结构可以帮助更好地理解系统的结构和行为,从而更容易地使用和管理系统。

√基于计算机语言的计算机系统功能层次结构的描述

计算机系统功能层次结构是一种基于计算机语言的抽象模型,它将计算机系统的功能划分为不同的层次,每一层次都有自己的功能和特性。最底层的层次是硬件层,它包括计算机的硬件设备,如处理器、内存、磁盘等。接下来是操作系统层,它提供了计算机系统的基本服务,如内存管理、文件系统管理、进程管理等。然后是应用程序层,它提供了特定的应用程序,如浏览器、文本编辑器等。最上层是用户界面层,它提供了用户与计算机系统的交互界面,如图形用户界面、命令行界面等。

计算机系统采用层次化结构,从最上面的应用层到最下面的硬件层,其层次依次为:

​ 高级语言虚拟机 -> 汇编语言虚拟机 -> 操作系统虚拟机 -> 机器语言机器

数据编码与数据运算知识要点:

√求十进制或二进制负数的8位补码表示

1
2
3
4
5
6
7
8
9
1. x=-46,y=117,则[x-y]补和[x+y]补分别等于()。
> x-y = -163 = 16 * 10 + 3 = -A3H
> [x-y]补等于最高位左移一位减去(x-y)即:100H-A3H = 5DH
> x+y=71=16*4+7=47H,正数的补等于本身即[x+y]补=47H

x=-67,y=114,则[x-y]补和[x+y]补分别等于
> x-y=-181,负数的补也可以用正数的补取反加一进行计算,181=10110101B
> 取反:01001010B,再加一:01001011B=4BH,[x-y]补=4BH
> x+y=47=2 * 16 + 15= 2FH,[x+y]补=2FH

√典型数值的补码表示(-1与最小负数)

1
2
3
4
5
6
7
8
9
10
11
计算机中-1的补码是 11111111
1、通常把一个数的最高为定义为符号位,用“0”表示正,用“1”表示负。

因为【-1】为负,所以【-1】的原码=10000001
2、反码:对于负数,数符位为1,数符位不变,将数值位诸位取反为反码。

【-1】的反码=11111110

3、补码:对于负数,数符位为1,数符位不变,将反码+1=补码。

【-1】的补码=11111111

√定点整数的补码表数范围(8位、10位)

( -128, +127】

√符号数的补码加减运算与溢出判断

双符号位判断溢出:
原来符号位只有一个,现在为了方便再加一个。
正数:00 负数 11
结果01时,结果为正,发生正溢出(正数太大了)
结果10时,结果为负,发生负溢出(负数太小了)
举例:我们想让结果进位到符号位,又要让加数最小(绝对值最大,这样才能溢出)
11100是最好的用例(这是发生进位的最小补码)。
我们把两个 11100 相加
11100+11100=111000 -> 11000 这时发生溢出了吗?
11000是-8,加数 11100是-4。
没有发生溢出。

√计算机减法的实现以及补码运算的意义

对于减法运算,计算机也是用加法器来实现的

可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计

√算术右移的运算与【X/2】补

算术右移是在左端补k个最高有效位的值

操作 值一 值二
参数 x 0110 0011 1001 0101
x >> 4 0000 0110 1111 1001

[X/2]补码:

将[X]补码连同符号位一起右移1位,最高位补上符号位即可。

​ 如:若 [X]补=00101100,则[X/2]补=00010110
​ 若 [X]补=10101100,则[X/2]补=11010110

指令系统与C语言程序的机器级表示知识要点:

√汇编语言DEBUG工具中的-G、-D、-U命令

1
2
3
4
5
6
7
8
- D: 命令查看内存中的内容,例如: -d 1000:0 就是查看内存1000:0处的内容.
- E: 命令修改内存中的内容.
- U: 命令将内存单元总的内容翻译为汇编指令显示.
- T: 命令执行CS:IP指向的指令.
- A: 以汇编指令形式向内存中写入指令.
- t: 单步执行.
- g: [0000] 直接跳转到指定的地址.
- p: 自动重复执行循环中的指令.知道(cx)=0为止.

√条件转移指令中的条件设置的可能性分析、以及条件转移指令机器代码的反汇编结果分析(示例1)

已知IA-32是小端方式处理器,根据给出的IA-32机器代码的反汇编结果(部分信息用x表示),回答下述问题。

已知jb指令的操作码是0111 0010,jb指令的转移目标地址是什么?

movl指令中的目的地址是如何反汇编出来的?

08048390: 72 f6 jb xxxxxxxx

08048392: c6 05 00 a8 04 08 01 00 00 00 movl $0x1, 0x0804a800

解析:

​ > 1. jb的操作码01110010=72H jb xxx的起始地址为08048390,操作码为72H 即f6为跳转地址

​ > 08048390 + 2(操作码) + f6 = 08048488

​ (2) movl的机器代码有10个字节,c6 05是操作码等,后面的是目的和源操作数,所以其目的地址为00 a8 04 08,

​ 由于是小端方式,也就是0x0804a800

√subw%bx,%ax指令和addw%bx,%ax指令的执行与标志位的状态

。。。(咕咕咕)

CPU功能结构与控制器设计知识要点:

√8086CPU:数据线与字长、地址线与寻址空间

8086有16根数据线和20根地址线,既能处理16位数据,也能处理8位数据,可寻址的内存空间为1MB。

计算地址线和数据线的方法:

​ 1、地址线的数量n满足:2^n >= 存储容量的比特数,解出最小的n,即是地址线的数量。

​ 2、地址线是用来读取或写入数据的,所以数据线的数量,与存储单元的位数相同。

​ 地址线是用来传输地址信息用的。举个简单的例子:cpu在内存或硬盘里面寻找一个数据时,先通过地址线找到地址,然后再通过 数据线将数据取出来。 如果有32根.就可以访问2的32次方的空间,也就是4GB。

例题:某计算机字长为32位,其存储容量为16M×32位,它的地址线和数据线?

​ 字长32位的计算机即数据线有32位,其基本寻址的存储单元也是1个字节,即8位,32位的字长共占4个存储单元,所以 16M * 4 = 64M存储单元 64M=2^26 即地址总线为26根 ,

​ 字长 = 数据总线, 即数据总线为32

√CPU中的寄存器(指令寄存器和程序计数器)

CPU中的寄存器(指令寄存器、程序计数器、状态寄存器、栈指针、通用寄存器)

√模型机中各功能模块的作用,用RTL方式描述

√指令的执行流程(参考模型机功能结构图)

√复杂指令系统计算机CISC特点(P242)三多

  1. 指令系统复杂。指令条数多、寻址方式多、指令格式多
  2. 指令周期长
  3. 相关指令会产生显式的条形码,存放在专门的标志寄存器中,可用于条件转移或条件传达
  4. 指令周期差距大
  5. 难以进行编译优化

√精简指令系统计算机RISC特点(P244)三少

  1. 指令条数少、寻址方式少、指令格式少
  2. 指令格式规整
  3. 采用load/store型指令设计风格
  4. 采用流水线方式执行指令
  5. 采用大量通用寄存器
  6. 采用硬连线路控制器
  7. 实现细节对机器级程序可见

√微程序存储器的名称与类型

微程序存储器的名称与类型包括ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除只读存储器)和EEPROM(可擦除可编程只读存储器)。

√微程序、微指令、微地址、指令周期

  • 微地址:微指令在控存中的地址。

  • 微指令:把在同一CPU周期内并行执行的微操作控制信息,存储在控制存储器里,称为一条微指令(Microinstruction)

  • 微程序:一系列微指令的有序集合就是微程序

  • 微地址寄存器 UAR :存放微地址的寄存器。

  • 微指令寄存器 UIR :存放从控存取出的微指令的寄存器。

  • 微周期:指从控存中取出并执行一条微指令需要的时间,一般与一个机器周期相当。

  • 指令周期:一条指令从取指令到执行完成的时间间隔

√机器指令与微程序(微指令)的关系

机器指令是一种指令,它指示计算机执行特定的操作,而微程序(微指令)是一种指令,它指示计算机执行一系列操作,以完成某项任务。

机器指令是微程序的基础,微程序是由一系列机器指令组成的。

机器指令和微指令的关系是: 每一条机器指令由一段用微指令编成的微程序来解释执行

存储器系统知识要点:

√DRAM和SRAM的存储原理与作用

(1)SRAM:依靠双稳态电路(内部交叉反馈)存储信息,适用于容量较小而速度较高场合。
(2)DRAM:依靠电容暂存电荷存储信息,适用于容量较大而速度较SRAM稍慢的场合。

√多级存储结构的作用和映射原理

1.多级存储结构的作用是提高存储器的存取效率,减少存取时间。

2.它的映射原理是将存储器的地址空间分割成多个等大的块,每个块又分割成多个等大的字,每个字又分割成多个等大的字节,以此类推,形成一个多级存储结构。

√主存与CACHE之间的直接和组相联映像方式,及其主存地址分段(示例4)

  1. 直接映射

    ​ 特点:是一种多对一的映射关系,主存的第 i 块一定映射到Cache的第 j 行,且j = i % 2^c

    * 优点 :映射方式简单,易实现。
    * 缺点:机制不灵活,Cache命中率低。
    

    例题 设有一个cache的容量为2K字,每个块为16字,求

    ​ (1)该cache可容纳多少个块?
    ​ (2)如果主存的容量是256K字,则有多少个块?
    ​ (3)主存的地址有多少位?cache地址有多少位?
    ​ (4)在直接映象方式下,主存中的第i块映象到cache中哪一个块中?
    ​ (5)进行地址映象时,存储器的地址分成哪几段?各段分别有多少位?

    ​ 解:(1) cache中有 2048/16=128个块。
    ​ (2) 主存有 256K/16=16384个块
    ​ (3) cache容量为2K=2^11字,所以cache字地址为11位。
    ​ (4) 主存中的第i块映象到cache中第imod128个块中。
    ​ (5) 存储器的字地址分成三段:主存标记、块号、块内字地址
    ​ 主存标记的长度为18-11=7位,块号为7位。块内字地址为4位

    解释:Cache与主存的交换基本单位为

    1. 全相联映射

    ​ 特点:是多对多的映射关系,对于主存的任何一块均可以映射到Cache的任何一行

    * 优点:机制灵活,命中率高。
    * 缺点:比较器电路难于设计和实现,因此只适合于小容量的Cache。
    

    列题主存4GB (按字节编址), Cache 512KB,块大小16B 读主存234589ABH的过程(假设Cache空白)

    ​ 主存地址: 32位 4GB 的大小 块大小 16=2^4 ,又是按字节编址的,所以块内地址:4位

    ​ 高位标记:32-4=28位

    1. 组相联映射

    ​ 特点:将Cache的行分成 2^c-r 组,每组 2^r 行。

    ​ 组相联映像通常采用2路、4路和8路比较,即取r=1 r=2 r=3

    ​ 主存的字块存放到Cache中的固定组,至于映射到该组哪一行是灵活的,即有如下函数关系:

    ​ 主存的第 i 块映射到Cache的第 j 行 j = (i % 2^c-r) * 2^r + k

    • 优点:大大增加了映射的灵活性,主存中一块可映射到Cache的 2^r 块,提高了命中率。

    例题1Cache的容量为1K字,主存的容量是128K字,每个块为32字,进行2路组相联映像时存储器的地址分成哪几段?各段分别有多少位?在2路组相联映像方式下,主存中的142号块映像到cache中哪一个2路组中?

    ​ 1. 分成三段:主存标记、组号、块内地址

    ​ 8位 4位 5位

    1. 主存:128K = 2^17 Cache:1K = 2^10 块:32=2^5 路:2 = 2^1

      Cache分为2^10 / 2^5 = 2^5 块 分为 2^5 / 2^1 = 2^4 = 16 组

      142 mod 16 = 14 故主存中的142号块映像到cache中14组中

    例题2Cache的容量为1K字,主存的容量是128K字每个块为32字,在直接映像方式下,主存中的179号块映像到cache中哪一个块中?进行直接地址映像时,存储器的地址分成哪几段?各段分别有多少位?

    1. 分成三段:主存标记、块号、块内地址

      ​ 7 5 5

      1. 主存:128K = 2^17 Cache:1K = 2^10 块:32=2^5

        ​ Cache分为2^10 / 2^5 = 2^5

        ​ 179 mod 32= 19

√存储器的基本组织及其逻辑结构图

前置知识:存储器的扩展

​ D 数据总线,A 地址总线,MREQ# (存储器的访问控制信号,低电平有效),

​ R/W# (读写控制信号,低电平为写信号,高电平为读信号)

​ EN# 译码器的时能信号(低电平有效)。

  1. 位扩展:

    ​ 用1K×4位的SRAM芯片扩展为1K×8位的SRAM存储器(位并联)

    1. 字扩展

    用1K×8位的SRAM芯片扩展为2K×8位的SRAM存储器(地址串联)

    1. 字位扩展

(1) 用1K×4位SRAM芯片构成4K×8位的存储器。

解析 4Kx8位的SRAM的 地址线为2^13即10根(底:A0~A9、高A10~A11)数据 8 根即(D0~D7)

​ 现在需要构成4Kx8的存储器 位扩展2位(并联芯片两片)和子扩展4位(串联芯片4片)

(2) 用8K×4位SRAM芯片构成40K×8位的存储器。

(示例3):有一个256K×16位的存储器由64Kx8位的DRAM芯片构成:

​ 总共需要多少DRAM芯片?画出此存储器与CPU连接的逻辑结构图。

  1. 256 / 64 + 16 /8 = 6片

课堂图片:

中断技术与I/O接口知识要点:

√8086对中断请求响应优先级

由高到低:内部中断→NMM→NTR→单步中断

√CPU与I/O接口之间的传送控制方式及各自特点的比较,DMA方式的应用

  1. CPU与I/O接口之间的传送控制方式有中断方式、程序控制方式和DMA(Direct Memory Access)方式。

  2. 中断方式是CPU控制I/O设备,当I/O设备完成操作时,会发出中断信号,CPU接收到中断信号后,会转入中断处理程序,完成数据传输。

  3. 程序控制方式是CPU控制I/O设备,CPU会不断检测I/O设备的状态,当I/O设备完成操作时,CPU会完成数据传输。
  4. DMA方式是I/O设备控制CPU,当I/O设备完成操作时,会发出DMA请求信号,CPU接收到DMA请求信号后,会把数据传输给I/O设备。
  • 中断方式的特点是传输效率低,但是可以实现多任务的切换;
  • 程序控制方式的特点是传输效率高,但是不能实现多任务的切换
  • DMA方式的特点是传输效率高,而且可以实现多任务的切换。

DMA方式的应用主要是用于大量数据传输,如磁盘读写、网络传输等。

√中断向量表中关于中断类型号、中断服务程序逻辑地址和物理地址的相关参数

(示例5): 已知中断向量表中,002A4H中存放数据1020H,002A6H中存放数据3040H,则该中断服务分配的中断类型号是多少?并分别写出该中断服务程序的逻辑地址和物理地址。

分析:中断向量表的起始位置为0H,顺序存储对应中断类型码的中断处理程序的入口,

​ 存储每一个中断向量要用4个字节. 中断服务的地址存放格式,先偏移地址后段地址,低两位存放的是CS,高两位存放IP

题解: 002A4H / 4 = A9H 所以002A4H的中断服务为A9H

​ CS:3040H IP:1020H 逻辑地址:3040:1020 物理地址:31420H