1.1计算机系统组成
计算机系统是一个硬件和软件的综合体
1.1.1计算硬件的组成
控制器
是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令
包括:程序计数器PC,指令寄存器IR,指令译码器ID,时序部件
运算器
也称为算术逻辑单元,主要是在控制器的控制下完成各种算术运算和逻辑运算
包括:算术逻辑单元ALU,累加寄存器AC,数据缓冲寄存器DR,状态条件寄存器PSW
主存储器
也称为内存储器(内存或主存),存储现场操作的信息与中间结果,包括机器指令和数据
辅助存储器
也称为外存储器(外存或辅存),存储需要长期保存的各种信息
输入设备
任务是把人们编好的 程序和原始数据送到计算机中去,并转换为计算机内部所能识别和接受的信息方式
输出设备
任务是将计算机的处理结果以人或其它设备所能接受的形式送出计算机
1.1.2计算机系统结构的分类
flynn分类,根据不同的指令流-数据流组织方式,计算机系统分为四类
单指令流单数据流SISD(传统的顺序执行的单处理器计算机),单指令流多数据流SIMD(并行处理机、矩阵处理机),多指令流单数据流MISD(流水线计算机),多指令流多数据流MIMD(多核处理器、多处理机)
1.1.3复杂指令集系统与精简指令集系统
指令系统的优化设计分为两类。
复杂指令系统计算机CISC
把一些原来由软件实现的、常用的功能改为硬件的指令系统来实现
特点:指令数量众多,指令使用频率相差悬殊,支持很多种寻址方式,变长的指令,指令可以对主存单元中的数据直接进行处理,以微程序控制为主
精简指令系统计算机RISC
尽量简化指令功能,只保留那些功能简单,能在一个节拍内执行完成指令,较复杂的功能用子程序来实现
特点:指令数量少,指令的寻址方式少,指令长度固定,以硬布线逻辑控制为主,单周期指令执行,优化的编译器CPU中的通用寄存器数量多
1.1.4总线
是一组能为多个部件分时共享的公共信息传送线路。同一时刻只允许有一个部件向总线发送信息,允许多个部件同时从总线上接收相同的信息。
按总线相对于CPU或其他芯片的位置可分为内部总线和外部总线两种
在CPU内部,寄存器之间和算术逻辑部件与控制部件之间传输数据所用的总线为内部总线
CPU与内存RAM、ROM和输入/输出设备接口之间进行通信的通路。
按总线功能划分分为地址总线、数据总线、控制总线三类
地址总线用来传送地址信息,数据总线用来传送数据信息,控制总线用来传送各种控制信号。
1.2存储器系统
传统存储器系统一般分为高速缓冲存储器(cache)、主存、辅存三级,
主存
可由CPU直接访问,存取速度快,容量较小
辅存
设置在主机外部,存储量大,价格较低,存取速度较慢
Cache
CPU速度很高时,为了是访问存储器速度能与CPU的速度相匹配,在主存与CPU之间增设Cache,存取速度比主存更快,但容量更小
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取、相连存取
1.2.1主存储器
用来存放计算机运行期间所需要的的程序和数据,CPU可直接随机进行读/写。根据工艺和技术不同,可分为随机存取存储器和只读存储器。
随机存取存储器(RAM):可读可写,断电后信息无法保存,只能暂存数据。
只读存储器(ROM):只能读不能写,信息一旦写入就固定不变了,又称固定存储
存储器编址方式分为字编址和字节编址
1.2.2辅助存储器
磁带存储器,顺序存储,特点:存取时间长,存储容量大,便于携带,价格便宜。现主要用于资料的归档保存
硬盘存储器,硬盘存取时间 = 寻道时间+旋转延迟时间
1.2.3 Cache 存储器
功能是提高CPU数据输入输出的速率。
1.3 流水线
流水线技术把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,这些机构可以同时并行工作。
1.3.1流水线周期
过程中,会将需要处理的工作分为N个阶段,最耗时的那一段所消耗的时间为流水线周期。
例如:流水线技术执行100条指令,每条指令取值2ms,分析4ms,执行1ms,则流水线周期为4ms
1.3.2计算流水线执行时间
理论执行时间 = 第一条任务的执行时间 + (n-1)*流水线周期,n为任务数量
实践时,考虑到处理的复杂性,会将指令的每个执行阶段的时间统一为流水线周期
1.3.3流水线的吞吐率
是指在单位时间内流水线所完成的任务数量或输出的结果数量。
公式为:n为任务数量,Tk为处理完成n个任务所用的时间 \(TP=\frac{n}{T_k}\) 最大吞吐率为: \(TP_max=\lim_{x\to ∞}\frac{n}{(k+n-1)Δt}=\frac{1}{Δt}\) 例题:
吞吐率为 \(\frac{100}{(Δt+3Δt+Δt+2Δt+Δt)+99*3Δt}=\frac{100}{305Δt}\)
1.3.4流水线的加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。
实际加速比:k为流水线的段数,n为任务数 \(S=\frac{nkΔt}{(k+n-1)Δt}=\frac{nk}{(k+n-1)}\) 最大加速比为k