计算机的相关计算

进制的转换

首先可以先把2的0~10次方背一下。

存储的单位转换

计算机体系结构

  • 运算器

  • 控制器

  • 存储器

  • 输出设备

  • 输入设备

控制器主要组成的部件

  1. 程序计数器pc:存放下一条指令的地址

  2. 程序寄存器IR:存放当前执行的命令

  3. 指令译码器ID:分析命令中的操作码

  4. 地址寄存器AR:保存CPU目前访问的内存单元的地址

  5. 时序部件:控制各个部件的有序协调

运算器主要组成部件

  1. 算数逻辑单元ALU:执行算数和逻辑的运算

  2. 累加寄存器AC:暂时存放算数中间的结果

  3. 数据缓冲寄存器:存放一条指令或顺序

  4. 状态条件寄存器:保存运算中各种标志位信息

  5. 多路转换器:对送入加法器的数据进行选择和控制的电路

指令系统基础

指获得操作数的方法。在指令系统中可采用多种寻址分数,用以实现扩大寻址空间并提高编程灵活性的目的

操作码:指明该指令完成的操作,如取数、做加法或输出数据等

地址码:指明操作数的内容或所在的存储单元地址

寻址方式

  • 立即寻址

  • 变址寻址

  • 直接寻址

  • 间接寻址

  • 寄存器寻址

  • 寄存器间接寻址

直接寻址和立即寻址是计算机指令系统中两种不同的寻址方式,主要区别如下:

定义

直接寻址

直接寻址是一种基本的寻址方式,在这种方式下,指令中直接给出操作数所在内存单元的地址。CPU 根据这个地址从内存中读取相应的操作数进行处理。

例如,在某条汇编指令中,指令指明操作数存放在内存地址为 2000H 的单元中,CPU 就会直接访问 2000H 这个内存地址来获取操作数。

立即寻址

立即寻址是指操作数直接包含在指令中,即指令的操作码后面紧跟着的就是操作数本身,而不是操作数的地址。当执行该指令时,CPU 直接从指令中取得操作数,无需再到内存中去查找。

例如,指令 “MOV AX, 1234H”,这里的 1234H 就是立即数,它直接作为操作数被传送到寄存器 AX 中。

操作数位置

直接寻址

操作数存放在内存中,指令中给出的是该操作数在内存中的具体地址。CPU 需要根据这个地址访问内存来获取操作数,涉及到内存的读写操作,速度相对较慢。

立即寻址

操作数直接包含在指令代码中,与指令一起存放在内存的代码段中。当 CPU 从内存中取出指令时,同时也就获得了操作数,不需要额外的内存访问操作来获取操作数。

灵活性

直接寻址

可以访问内存中的任意地址,只要该地址在 CPU 可寻址的范围内。这使得程序可以灵活地处理存放在不同内存位置的数据,适合处理需要动态变化数据的情况,例如数组、变量等。但如果需要频繁访问不同地址的数据,每次都要修改指令中的地址字段,编程相对复杂。

立即寻址

操作数是固定在指令中的,一旦指令确定,操作数也就确定了,无法在程序运行过程中动态改变。因此,立即寻址的灵活性较差,通常用于给寄存器或内存单元赋一个固定的初始值,或者进行一些简单的常量计算。

指令长度

直接寻址

由于指令中需要包含操作数的内存地址,而内存地址通常需要一定的位数来表示(例如在 16 位系统中可能需要 16 位,在 32 位系统中可能需要 32 位),所以指令长度相对较长。

立即寻址

指令长度主要取决于操作码和立即数的长度。如果立即数较小,占用的位数较少,指令长度可能相对较短。但如果立即数较大,也会增加指令的长度。

执行速度

直接寻址

由于需要访问内存来获取操作数,涉及到内存的读写操作,而内存的访问速度相对 CPU 内部的寄存器和运算单元来说较慢,所以直接寻址的执行速度相对较慢。

立即寻址

操作数直接包含在指令中,CPU 无需额外的内存访问操作,因此执行速度较快,能够快速完成指令的执行。

常见的寻址方式的特点

指令系统类型

两种指令集系统

CISC(复杂):

指令:数量多,使用频率差别打可变长格式

寻址方式:支持多种

实现方式:微程序控制技术

RISC(精简):

指令:数量少,使用频率接近,定长格式,大部分为单周期指令

寻址方式:支持方式少

实现方式:增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线。

CISC和RISC的特点对比

对比项

CISC(复杂指令集计算机)

RISC(精简指令集计算机)

指令集复杂度

指令数量多(如 x86 有数百条),功能复杂,支持多寻址方式

指令数量少(如 ARM、MIPS 仅几十条),功能简单,寻址方式有限

设计目标

减少程序指令总数,依赖硬件实现复杂指令

提高指令执行速度,依赖编译器优化

硬件结构

硬件复杂(含微代码),通用寄存器少,依赖内存操作

硬件简单,通用寄存器多,减少内存访问

执行方式

指令长度可变,执行周期差异大,流水线效率低

指令长度固定,单周期执行,流水线效率高

编译器与编程

编译器优化难度低,代码密度高

依赖编译器优化,代码密度低

典型应用

桌面 / 服务器处理器(如 x86)

嵌入式系统、移动设备(如 ARM、RISC-V)

fly分类方法

类型

结构(控制部分 / 处理器 / 主存模块)

关键特性

代表

单指令流单数据(SISD)

1 个控制部分 / 1 个处理器 / 1 个主存模块

一次仅执行一条指令,顺序处理数据

单处理器系统

单指令流多数据(SIMD)

1 个控制部分 / 多个处理器 / 多个主存模块

各处理器异步执行同一条指令,并行处理多组数据

并行处理机、阵列处理机、超级向量处理机

多指令流单数据(MISD)

多个控制部分 / 1 个处理器 / 多个主存模块

被证明不实用(理论上存在,实际无典型应用)

无(文献称流水线计算机属此类)

多指令流多数据(MIMD)

多个控制部分 / 多个处理器 / 多个主存模块

全面支持作业、任务、指令级并行,各处理器独立执行不同指令

多处理机系统、多计算机

流水线技术

取指->分析->执行

未使用流水技术执行指令的情况

使用流水线执行指令的情况

流水线周期

各流水线中执行时间最长的那一段

流水线时间的计算

n条指令,采用流水线其执行时间为:(t1+t2+t3)+(n-1)t

其中的t是流水周期,它是t1/t2/t3中最长的那一段。

流水线技术指标

吞吐率:单位时间内流水线完成的任务数量,Tp=n/Tk

n表示指令条数,Tk表示处理n条指令所需要的时间。

理论上最大的吞吐率是: 1/流水线周期

加速比:不使用流水线所用的时间与使用流水线所用的时间比即为加速比。

效率:流水线的设备利用率称为流水线效率。(采用流水线完成n个任务占用的的时空区域有效面积与所占区域总面积之比)。

注:各段流水时间相同,就越能提升流水线的性能

存储器系统

多级存储结构

采用多级存储结构的目的:解决存储容量、成本和速度之间的矛盾的问题

  • CPU(寄存器)

  • cache:按内容存取(相联存储器)

  • 内存(主存):RAM和ROM

  • 外存:硬盘、光盘、U盘等

cache缓存->主存层次和主存->辅存层次

层次

主要作用

实现方式

cache缓存——主存层次

缓和CPU和主存之间的速率矛盾

硬件

主存——辅存层次

逻辑扩大主存空间

软、硬件

  • 局部性原理:是层次化存储结构的支撑

  • 时间局部性:刚被访问的内容,立即又被访问。

  • 空间局部性:刚被访问的内容,临近的空间很快被访问。

主存

简称“主存”,起作用是存放指令和数据,并能有中央处理器(CPU)直接随机存取。主要有随机存储器RAM和只读存储器ROM组成,主要为DRAM组成

主存

可读

掉电丢失

需要动态刷新

ROM

仅可读

RAM/SRAM

RAM/DRAM

芯片类型

闪速存储器(Flash Memory):简称闪存,在不加电的情况下能长时间保存存储的信息,它既有ROM的特点,又有很高的存取速度,而且易于擦除和重写,功耗很小,也可用作固态大容量存储器的存储芯片。

芯片类型

可读可写

可擦除

ROM

只读存储器

不可

EPROM

可擦除可编程ROM

紫外线可擦除

EEPROM

电可擦除可编程ROM

电可擦除

Flash Memory

易于擦除和重写

EEPROM的升级

主存容量

  • 采用随机存取方式存储,对每个存储内存单元进行编址

  • 地址编号通常采用16进制表示。

主存容量=存储单元的个数*存储单元的容量

表示存储容量的相关单位

  • 位:用bit表示,一个二进制表示1bit;

  • 字节:用B表示,,1B=8bit;

  • 字:通常位字节的整数倍,常见的字长有8/16/32/64bit;实际表示CPU一次处处理的二进制位数;

K:1K=210

M:1M=210K=220

G:1G=210M=220K=230

存储芯片片数计算

主存的总容量,实际上又是一片或多片存储芯片配以控制电路构成的,因此可知:

存储芯片片数=主存总容量/单个存储芯片容量1

Cache

Cache高速缓冲寄存器是位于CPU和主存之间,容量较小,当速度很高的的存储器,通常由SRAM组成。
Cahe利用局部性原理,将主存中可能被访问的内容调入速度更快的cache中,以解决CPU和主存之间速度不匹配的问题,而进行提升计算机性能。

映射方式

映射方式

基本原理

优点

缺点

应用场景

直接映射

主存块按照模运算规则,被固定映射到 Cache 里特定的块中,即主存块号对 Cache 总块数取模,以此确定其在 Cache 中的位置。

实现起来较为简单,访问速度极快。

冲突概率高,当多个主存块映射到同一个 Cache 块时,就需要频繁地进行替换操作。

常用于嵌入式系统或者对成本较为敏感的场景。

全相联映射

主存中的任意一个块都能够被放置到 Cache 的任意一个块位置,完全没有固定的映射规则。

命中率较高,因为它的灵活性很强,冲突的可能性较低。

硬件开销大,需要配备专门的地址比较器,并且查找的时间较长。

适用于小容量的 Cache,例如 TLB(Translation Lookaside Buffer,转换后备缓冲器)。

组相联映射

把 Cache 划分成若干个组,主存块按照模运算映射到对应的组,而在组内的块位置则可以任意选择。

具备较高的命中率,同时实现成本相对较低。

存在一定的复杂度,需要进行组内的查找以及替换策略的管理。

广泛应用于 CPU 的一级缓存和二级缓存。

三种映射方式的比较

对比项

直接映射

全相联映射

组相联映射

映射规则

主存块固定映射到 Cache 特定块

主存块可映射到 Cache 任意块

主存块映射到 Cache 特定组内的任意块

地址结构

主存块号 = Cache 块号 + 标记

主存块号 = 标记 + 块内地址

主存块号 = 组号 + 标记 + 块内地址

冲突概率

高(多主存块竞争同一 Cache 块)

低(灵活选择 Cache 块)

中等(组内冲突)

硬件复杂度

低(无需比较器)

高(需全比较器)

中等(需组内比较器)

访问速度

最快(直接定位)

最慢(需遍历所有块)

中等(组内遍历)

命中率

最低

最高

中等

替换策略

无(固定位置覆盖)

LRU/FIFO 等

LRU/FIFO 等

典型应用

嵌入式系统、早期缓存

TLB、小容量缓存

CPU 一级 / 二级缓存

注:主存于Cache之间的地址映射直接由硬件自动完成。

Cache命中率

Cache 命中率指 CPU 访问数据时,所需数据在 Cache 中直接命中的概率,计算公式为:
命中率 = 命中次数 / 总访问次数
命中率越高,说明 Cache 的有效性越强,CPU 访问主存的次数越少,系统性能越优。

Cache淘汰算法

算法

核心思想

优点

缺点

典型应用

LRU(最近最少使用)

淘汰最长时间未被访问的块

命中率高,符合局部性原理

硬件实现复杂(需维护访问顺序)

CPU 一级缓存、TLB

FIFO(先进先出)

淘汰最早进入 Cache 的块

实现简单,硬件成本低

可能淘汰仍需使用的块(如循环数据)

早期缓存、嵌入式系统

LFU(最不经常使用)

淘汰访问次数最少的块

适合长期冷热数据区分

需维护访问计数,硬件开销大

缓存热点数据(如 Web 服务器)

随机替换

随机选择淘汰块

实现最简单,无额外计算

命中率低,依赖运气

片上缓存(如 GPU)

伪 LRU

用近似方法模拟 LRU(如计数器法)

硬件复杂度低于真 LRU,命中率接近

存在误差,可能略低命中率

现代 CPU 缓存(如 Intel 酷睿)

硬盘

硬盘接口

接口

全称

传输方式

最大速率

典型应用

特点

SATA

串行 ATA

串行

6 Gb/s(SATA 3.0)

消费级 PC、服务器

成本低、热插拔、支持 AHCI 协议

SCSI

小型计算机系统接口

并行

320 MB/s

早期服务器、工作站

多设备支持、高可靠性但成本高

SAS

串行连接 SCSI

串行

12 Gb/s(SAS 3.0)

企业级存储、RAID 系统

兼容 SATA、支持双端口冗余

FC

光纤通道

光纤 / 铜线

32 Gb/s

高端 SAN、数据中心

低延迟、长距离、高成本

按照硬盘材质分位两大类

  1. HDD:传统硬盘,即机械硬盘

  2. SSD:固态硬盘

固态硬盘SSD的组成

固态硬盘SSD:可采用2种芯片类型,FLASH芯片或DRAM芯片

各类存储器的存取方式

  • 相联存储:按内容存取(Cache)

  • 随机存储:有地址,与位置无关(内存、U盘)

  • 直接存储:有地址,与位置有关(硬盘、软盘、光盘)

  • 顺序存储:无地址(磁盘)