文章目录
1.1 计算机系统概述
- 计算机系统的定义与组成
计算机系统 (Computer System) 是指用于数据管理的计算机硬件、软件及网络组成的系统。它是按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。
计算机系统可划分为硬件(子系统)和软件(子系统)两部分。硬件由机械、电子元器件、磁介质和光介质等物理实体构成;软件是一系列按照特定顺序组织的数据和指令,并控制硬件完成指定的功能。 - 计算机系统分类
计算机系统的分类维度很多,也较为复杂,可以从硬件的结构、性能、规模上划分,亦可从软件的构成、特征上划分,或者从系统的整体用途、服务对象等进行分类。例如:- 嵌入式计算机:电信设备(基站、网络交换、移动终端等)、家用电子设备(视听设备)、可穿戴设备、医疗设备、交通设备等。
- 通用计算机:个人计算机、网络服务器、超级计算机等。
1.2 计算机硬件
1.2.1 计算机硬件组成
- 冯·诺依曼结构(普林斯顿结构):将计算机硬件划分为运算器、控制器、存储器、输入设备、输出设备 5个部分。但在现实的硬件中,控制单元和运算单元被集成为一体,封装为通常意义上的中央处理器(Central Processing Unit,CPU)。
- 程序指令存储器和数据存储器合并在一起的存储器结构。
- 指令和数据都通过相同的数据总线传输。
- 一般用于PC处理器I3、I5、I7等。
- 哈佛结构:
- 有独立的程序指令存储器和数据存储器,可以并行读取,有较高的数据吞吐率。
- 有4条总线:指令和数据的数据总线、地址总线。
- 一般用于嵌入式处理器DSP
1.2.2 处理器
- CPU的组成:
- 运算器
- 算术逻辑单元ALU:数据的算术计算和逻辑计算。
- 累加寄存器AC:通用寄存器,为ALU提供工作单元,暂存数据。
- 数据缓存寄存器DR:写内存时,暂存指令和数据。
- 状态条件寄存器PSW:存状态标志和控制标志。
- 控制器
- *程序计数器PC:存储下一条要执行指令的地址。
- 指令寄存器IR:存储即将执行的指令。
- 指令译码器ID:对指令中操作码字段进行解析。
- 时序部件:提供时序控制信号。
- 运算器
- 专用处理器
- GPU图形处理器:常有数百数千个内核,可并行运行大量计算。
- DSP数字信号处理器:专用于实时的数字信号处理。
- SoC片上系统:包含完整系统并有嵌入软件的全部内容的系统级芯片。
- FPGA (Field Programmable Gate Array) 现场可编程逻辑门阵列。
- MPU微处理器:微小型的处理器。
- MCU微控制单元(单片机):芯片级计算机。
- 国产处理器:海光(X86)、龙芯、飞腾、申威、兆芯等。
- 指令集:
- CISC复杂指令集:指令数量多,可变长格式,支持多种寻址方式,微程序控制技术(微码,可由程序员编码),以Intel、AMD的x86为代表。
- RISC精简指令集,指令少,定长格式,操作寄存器,支持寻址方式少,硬布线逻辑控制为主,适合采用流水线,有效支持高级语言。以ARM和 Power为代表, RISC 已经成为计算机指令集发展的趋势。
1.2.3 存储器
- 存储器的硬件结构可分为:ROM(BIOS)、SRAM、DRAM、NVRAM、Flash、EPROM、Disk等。
- 按照与处理器的物理距离可分为4个层次:(分级存储体系)
- 片上缓存:寄存器,在处理器核心中直接集成的缓存,程序员可编程操作(SRAM)
- 片外缓存:Cache,高速缓存,按内容存取(相联存储器),对程序员透明的,不可编程操作,由硬件操作(SRAM)
- 主存:内存(DRAM)
- 外存:硬盘、U盘、光盘等
- Cache
突破冯诺依曼瓶颈,即CPU与存储速度不匹配问题,使用Cache可以改善系统性能依据是程序等局部性原理:- 时间局部性:程序某条指令执行后,不久该指令可能再次执行。典型原因就是程序中存在大量的循环操作,例如:for(i=0;i<10000;i++) { j=i+1}。
- 空间局部性:程序访问某个存储单元,不久可能访问它的临近单元。其典型情况就是程序的顺序执行。
- Cache访问命中率(命中率高低与其替换算法有关)
如果h为Cache访问命中率,t1为Cache的周期时间,t2为主存的周期时间,以读操作为例,使用Cache+主存的系统平均周期为t3,则:t3=ht1+(1-h)t2,其中(1-h)又称失效率(未命中率)。(1uS92%+100uS8%=8.92uS)
主存编址计算
- 字长:不固定,4bit、32bit(32位计算机)、64bit(64位计算机)
- 字节:固定为8bit,计作B,1B=8bit
- 存储单元个数 = 最大地址 - 最小地址 + 1
- 存储器总容量 = 字长 * 存储单元个数
- 计算机中的换算:
- 1K = 2^10 (1024)
- 1M = 2^20
- 1G = 2^30
- 16进制:
- 计作H,ABCDEF表示10,11,12,13,14,15。例如:CBFFFH - A4000H = 28FFFH。
- 16进制转10进制:逐位乘以16的次方之和。例如:2AF5H = 216^3 + A16^2 + F*16^1 + 5 = 10997
- 例题:内存按字节编址,利用8k*4bit存储器芯片构成84000H到8FFFFH的内存共需多少片?
- 存储器总容量 = (8FFFFH - 84000H + 1) * 8bit = (90000H - 84000H) * 8bit = C000H * 8bit = 12 * 16^3 * 8bit
- 共需片数 = (12 * 16^3 * 8bit) / (8k * 4bit) = (12 * (222*2)^3 * 8bit) / (8k * 4bit) = (12 * 2^12 * 8bit) / (8 * 2^10 * 4bit) = 3 * 2^2 = 12
磁盘存取时间计算
- 基本结构:磁头、磁柱、磁道、扇区
- 读取磁盘数据时间包括:找磁道的时间、找块(扇区)的时间,即旋转延时(旋转周期)、传输时间
- 存取时间 = 寻道时间 + 旋转延时 + 传输时间
- 例题:某磁盘磁头从一个磁道移到另一个磁道的时间为10ms,文件在磁盘上非连续存放,逻辑上相邻数据块平均移动距离为10个磁道,每块的旋转延时时间和传输时间为100ms和2ms,则读取一个100块的文件需要多少ms时间?
- (10*10 + 100+2) * 100 = 20200mS
磁盘优化分布计算
- 例题:假设磁盘每个磁道划分为11个物理快(扇区),逻辑记录R0~R10顺序存放同一磁道上,如果磁盘旋转周期为33ms,磁头当前处在R0开始处,若系统使用单缓冲区顺序处理数据,每个记录处理时间为3ms,则处理这11条记录的最长时间是多少,经优化分布后处理这11条记录的最少时间少多少?
- 读取单个记录的时间 = 33/11 = 3ms,处理R0的时间 = 3+3 = 6ms,由于单缓冲区每次只能有一条纪录,而磁盘在匀速旋转中,处理完R0纪录,磁头正好在R2开始位置,那么要读取R1,需要等到磁盘旋转10个物理快才能到R1开始位置读取,所以处理R1的时间 = 310 + 3+3 = 36ms,以此类推。结论:处理这11条记录的最长时间 = 6 + (310+3+3)*10 = 366ms。
- 优化分布思路:以上在读取R0后,由于逻辑记录是顺序存放,读取其他的10记录都需等待3ms*10的旋转延时。所以可以调整逻辑记录的存放位置,让读取完R0后,磁头正好处于R1开始位置,省去选择延时,即R0、R6、R1、R7、R2、R8、R3、R9、R4、R10、R5,那么经过优化分布后处理者11条记录的时间 = (3+3)*11 = 66ms。
磁盘单缓冲区与多缓冲区计算
- 例题:假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为15us,由缓冲区送入用户区时间为5us,用户区每块数据的处理时间为1us,若将大小为10个磁盘块的doc1文件逐块读入缓冲区,并送至用户区处理,那么使用单缓冲区需要花费的时间是多少?使用双缓冲区的时间是多少?
- 正常思路:
- 使用单缓冲区花费的时间 = (15+5)*10+1 = 201us
- 使用双缓冲区花费的时间 = 15*10 + 5+1 = 156us
- 流水线思路:总时长 = 流水线建立时间 + 流水线周期 * (循环次数-1)
- 使用单缓冲区花费的时间 = (15+5+1) + (15+5)*(10-1) = 201us
- 使用双缓冲区花费的时间 = (15+5+1) + 15*(10-1) = 156us
磁盘移臂调度算法
- 调度算法
- 先来先服务(FCFS):按申请提交的顺序
- 最短寻道时间优先(SSTF):从最近开始
- 扫描算法(SCAN):又称电梯算法,双扫描
- 循环扫描(CSCAN):单扫描
- 例题:假设磁头位于15号柱面上,进程采取最短寻道时间优先算法,系统的响应序列应为()?
数据传输控制方式I/O
- 控制方式
- 程序控制(查询)方式:分为无条件传送和程序查询方式两种。方法简单,I/O能力不高,严重CPU利用率。
- 中断方式:CPU无须等待,提升CPU效率,中断时保存现场断电常见鼠标键盘此方式。
- DMA方式:直接内存访问方式,使用硬件DMA控制器实现主存外设传输,比以上效率都高。常见硬盘为此方式。
- 通道方式:属硬件方式,效率更高。
- I/O处理机:属硬件方式,效率更高。
1.2.4 总线
总线 (Bus) 是指计算机部件间遵循某一特定协议实现数据交换的形式,即以一种特定格式按照规定的控制逻辑实现部件间的数据传输。
- 总线特点:共享、分时(同一时刻仅允许一个部件向总线发送数据,部件可同时向总线接收数据)
- 总线宽度:即总线的线数,会影响计算机指标,例如:假设地址总线的宽度为32位,那么可访问空间大小为2^32即4G,那么32位操作系统配4G内存比较合适。
- 总线带宽:
- 总线分类
- 数据总线:在CPU和RAM之间传输数据。
- 地址总线:用来指定在RAM中存储数据的地址。
- 控制总线:将微处理器控制单元的信号传送到周边设备。
- 按照总线在计算机中所处的位置划分为:
- 内总线:芯片内部互连,也可称为片上总线。
- 系统总线:计算机中CPU、 主存、 I/O 接口的总线
- 外部总线:是计算机板和外部设备之间,或者计算机系统之间互联的总线,又称为通信总线。
- 目前,计算机总线存在许多种类,常见的有:
- 并行总线:多条双向数据线,效率高,适合近距离连接,主要为计算机内部总线,PCI、PCle和ATA(IDE) 等,例如:系统总线(计算机各部件)。
- 串行总线:只包含一条双向数据线或两条单向数据线,数据按bit位以一定的速度和顺序串行发送,但适合长距离连接,多用于通信总线(计算机之间或计算机与其他系统间),主要包括USB、SATA、CAN、RS-232、RS-485、RapidIO和以太网等。分为:单工(只能单项发送或接收)、半双工(轮流实现发送和接收)、全双工(成对双向发送和接收)
流水线
- 流水线时间计算公式:1条指令的执行时间(流水线建立时间) + (指令条数-1) * 流水线周期
- 理论公式:(t1+t2+t3+…tk) + (n-1)*t
- 实践公式:(k*t) + (n-1)*t (在使用理论公式无答案时用实践公式)
- 流水线吞吐率计算公式:1/t 即流水线周期的倒数
- 流水线加速比计算公式:顺序执行时间 / 使用流水线执行时间
- 例题:某计算机采用5级流水线执行指令,设每条指令的执行时间由取指令2t、分析指令1t、取操作数3t、运算1t、和写回结果2t组成,并分别用5个子部件完成,该流水线最大吞吐率为多少?若连续输入10条指令,则流水线的加速比是多少?
- 流水线最大吞吐率 = 1/3 (取操作数3t是该流水线的周期)
- 流水线加速比 = (2+1+3+1+2)*10 / (2+1+3+1+2) + (10-