第一章 计算机系统概述

📅 发布时间:2026/7/9 0:31:51 👁️ 浏览次数:
第一章 计算机系统概述
第一章 计算机系统概述1.2 计算机系统简介1.2.1 计算机系统的概念和分类计算机系统由“硬件”和“软件”两大部分组成。所谓“硬件”即指计算机的实体部份它由看得见摸得着的各种电子元器件、各类光、电、机设备的实物组成如主机、外设等等。所谓“软件”它是看不见摸不着的由人们事先编制成具有各类特殊功能的信息组成。通常把这些信息 诸如各类程序寄寓于各类媒体中 如RAM、ROM、磁带、磁盘、光盘、甚至纸带等。它们通常被作为计算机的主存或辅存的内容。​ 计算机的软件通常又可以分为两大类系统软件和应用软件。系统软件又称为系统程序主要用来管理整个计算机系统监视服务使系统资源得到合理调度确保高效运行。它包括标准程序库、语言处理程序(如将汇编语言翻译成机器语言的汇编程序将高级语言翻译成机器语言的编译程序)、操作系统(如批处理系统、分时系统、实时系统)、服务性程序(如诊断程序、调试程序、连接程序等)、数据库管理系统、网络软件等等。应用软件又称为应用程序它是用户根据任务需要所编制的各种程序。如科学计算程序数据处理程序过程控制程序事务管理程序等等。1.3 计算机系统的层次结构1.3.1 计算机系统的基本组成一 计算机硬件冯·诺依曼计算机​ 冯·诺依曼在研究EDVAC计算机时提出了 “存储程序”的概念“存储程序”的思想奠定了现代计算机的基本结构以此概念为基础的各类计算机通称为冯•诺依曼计算机其特点如下采用“存储程序”的工作方式。计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成。指令和数据以同等地位存储在存储器中形式上没有区别但计算机应能区分它们。指令和数据均用二进制代码表示。指令由操作码和地址码组成操作码指出操作的类型地址码指出操作数的地址。计算机的功能部件存储器分为主存和辅存中央处理器可以直接访问的程序和数据存放在主存中。运算器完成对信息或数据的处理和运算如算术和逻辑运算。控制器完成对计算机各部件协同运行的指挥控制即保证指令按预定的次序执行保障每一条指令按规定的执行步骤正确执行还要处理各项紧急事件。输入设备用来输入原始数据和程序如键盘、鼠标。输岀设备用来输出计算机的处理结果如显示器和打印机。一般将运算器和控制器集成到同一个芯片上称为中央处理器(CPU)。CPU和主存储器共同构成主机而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备简称外设。二 计算机软件软件的分类​ 软件按其功能分类可分为系统软件和应用软件。三个级别的计算机语言1 机器语言​ 机器语言由二进制编码组成它是计算机唯一可以直接识别和执行的语言。2 汇编语言​ 汇编语言是用英文单词或其缩写代替二进制的指令代码更容易为人们记忆和理解。汇编语言程序必须经过汇编操作转换为机器语言后才能在计算机硬件上执行。3 高级语言​ 高级语言如C、C、Java等程序需要先经过编译程序编译成汇编语言程序再经过汇编操作成为机器语言程序。高级语言程序也可直接通过解释的方式“翻译”成机器语言程序。​ 由于计算机无法直接理解和执行高级语言程序因此需要将高级语言程序转换为机器语言程序通常把进行这种转换的软件系统称为翻译程序。翻译程序有以下三类汇编程序汇编器将汇编语言程序翻译成机器语言程序。解释程序解释器将高级语言源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。编译程序编译器将高级语言源程序翻译成汇编语言程序或机器语言程序。1.3.2 计算机硬件的基本结构​ 典型的冯·诺依曼计算机是以运算器为中心的如下图所示。其中输入、输出设备与存储器之间的数据传送都需通过运算器。图中实线为数据线虚线为控制线和反馈线。​ 现代的计算机已转化为以存储器为中心如下图所示。图中实线为控制线虚线为反馈线双线为数据线。图中各部件的功能是运算器用来完成算术运算和逻辑运算并将运算的中间结果暂存在运算器内存储器用来存放数据和程序控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式常见的有键盘、鼠标等。输出设备可将机器运算结果转换为人们熟悉的信息形式如打印机输出、显示器输出等。​ 由于运算器和控制器在逻辑关系和电路结构上联系十分紧密尤其在大规模集成电路制作工艺出现后这两大部件往往制作在同一芯片上因此通常将它们合起来统称为中央处理器(Central Processing Unit) 简称CPU。把输入设备与输出设备简称为I/O设备(Input/Output equipment) 。​ 这样 现代计算机可认为由三大部分组成CPU、IO设备及主存储器(Main MemoryMM) 。CPU与主存储器合起来又可称为主机 I/O设备叫作外部设备。主存储器是存储器子系统中的一类用来存放程序和数据 它可以直接与CPU交换信息。另一类叫辅助存储器 简称辅存 又叫外存。ALU(Arithmetic Logic Unit) 算术逻辑运算单元用来完成算术逻辑运算。CU(Control Unit) 控制单元 用来解释存储器中的指令 并发出各种操作命令来执行指令。​ ALU和CU是CPU的核心部件。I/O设备也受CU控制用来完成相应的输入、输出操作。可见计算机有条不紊地自动工作都是在控制器统一指挥下完成的。1.3.3 计算机软件和硬件的关系​ 硬件实现的往往是最基本的算术和逻辑运算功能而其他功能大多通过软件的扩充得以实现。对某一功能来说既可以由硬件实现也可以由软件实现。从用户的角度来看它们在功能上是等价的。这一等价性被称为软、硬件逻辑功能的等价性。​ 由于“软件”的发展它不仅可以充分发挥计算机的“硬件”功能提高计算机的工作效率而且已经发展到能局部模拟人类的思维活动因此在整个计算机系统内“软件”的地位和作用已经成为评价计算机系统性能好坏的重要标志。当然“软件”性能的发挥也必须依托“硬件”的支撑。因此概括而言计算机性能的好坏取决于 “软”、 “硬”件功能的总和。1.3.4 计算机系统的多级层次结构​ 从用户的角度看人们在操作系统提供的运行环境下首先用高级语言编写程序称为源程序然后将源程序翻译成汇编语言程序再将其翻译成机器能识别的机器语言程序称为目标程序最后用微程序解释每条机器指令。这样就构成一个常见的计算机系统的5级层次结构如下图所示​ 从计算机系统的5级层次结构来看可以将硬件研究的对象归结为微程序机器 M0与传统机器 M1也就是实际机器。而软件研究的对象主要是操作系统及其以上的各级虚拟机器。通常将除硬件系统外的其余层级称为虚拟机器包括操作系统机器 M2、汇编语言机器 M3和高级语言机器 M4。简单来说虚拟机器就是由软件实现的机器。​ 相邻层级之间的关系下层是上层的基础上层是下层的扩展。随着超大规模集成电路技术的不断发展部分软件功能可以由硬件来实现所以软/硬件交界面的划分也不是绝对的。1.3.5 计算机系统的工作原理1. 从源程序得到可执行程序​ 用高级语言编写好一段程序之后需要经过一系列“翻译“过程才能得到计算机能够执行的机器代码。比如我们用C语言写了一个简单的 hello world 程序源程序文件命名为 hello.c用GCC编译器可以将它翻译成一个可执行目标程序 hello。具体的过程可以分为4个阶段如下图所示​ 1预处理阶段预处理器cpp对源程序中以 ”#“ 开头的命令进行处理输出结果是一个以 ”.i“ 为扩展名的文件 hello.i。例如 ”#include“ 就会将后面的头文件内容插入程序文件中。​ 2编译阶段编译器ccl对预处理后的源程序进行编译生成一个汇编语言源程序 hello.s。汇编语言源程序中的每条语句都用文本格式描述了一条机器语言指令。​ 3汇编阶段汇编器as将 hello.s 翻译成机器语言指令把这些指令打包成一个”可重定位目标程序“ hello.o它是一个二进制文件用文本编辑器打开会显示乱码。​ 4链接阶段链接器ld将多个可重定位目标程序和标准库函数合并成一个可执行目标程序。上面的例子中链接器将 hello.o 和标准库函数 printf 所在的可重定位目标模块 printf.o 合并生成可执行程序 hello。最终生成的可执行程序被保存在磁盘上。2. 存储程序的基本思想​ “存储程序”的基本思想就是将程序和数据一样存放在主存中运行时通过地址访问到程序的内容解析出对应的指令进行执行。程序执行前先将第一条指令的地址存放在程序计数器PC中将PC的内容作为地址访问主存取出指令在每条指令执行过程中都需要计算下一条将执行指令的地址并送至PC。如果当前指令是顺序执行的则下一条指令地址是PC的内容加上当前指令的长度如果是跳转指令则下一条指令的地址是指定的目标地址当前指令执行完毕后再根据PC的值作为地址访问主存取出的是下一条将要执行的指令。这样计算机就可以周而复始地自动执行程序中的每一条指令了。3. 计算机硬件组成的细化说明​ 为了更清楚地了解计算机的工作过程我们需要将计算机的组成部件进一步细化如下图所示。​ 除了之前已经列出的核心部件 ALU、CU 以及主存的存储器MCPU和主存储器中还必须配置一些寄存器Register用来存放特定的信息。下面我们分别进行简单介绍。​ 1主存储器​ 主存储器简称主存或内存包括了存储体M、各种逻辑部件以及控制电路等。存储体由许多存储单元组成每个存储单元又包含若干个存储元件每个存储元件能存放一位二进制代码0或者1。这样每个存储单元可以存储一串二进制代码这就被称为一个”存储字“存储字的二进制位数称为”存储字长“。​ 主存中的每个存储单元有一个唯一的编号叫做存储单元的”地址“Address。主存的工作方式就是按照存储单元的地址来实现对存储字各位的存写入取读出。这种存取方式叫做”按地址访问存储器“。​ 为了实现按地址访问的方式主存中还必须配置两个寄存器MAR 和 MDR。MARMemory Address Register存储器地址寄存器用来存放想要访问的存储单元的地址它的位数决定了能访问的存储单元的最大个数。MDRMemory Data Register存储器数据寄存器用来存放从存储体单元中取出或者准备向存储体单元存入的数据它的位数和存储字相等。​ 当然如果想要完整地实现一个存取数据的操作还需要 CPU 给主存加上各种控制信号比如读命令、写命令以及地址译码驱动信号等。随着硬件技术的发展主存现在都是统一制作的大规模集成电路芯片所以一般都将MAR 和 MDR 集成在 CPU 芯片中。​ 2运算器​ 运算器包括了一个算术逻辑单元ALU和最少三个寄存器。ACC Accumulator累加器MQ Multiplier-Quotient Register乘商寄存器X 操作数寄存器​ 这三个寄存器在完成不同的算术运算时所存放的操作数也各不相同。具体的情况如下表所示加法减法乘法除法ACC被加数及和被减数及差乘积高位被除数及余数MQ————乘数及乘积低位商X加数减数被乘数除数​ 不同机器的运算器结构也有所不同有的机器用 MDR 取代 X 寄存器。​ 3控制器​ 控制器由控制单元CU和程序计数器PC、指令寄存器IR组成。PC Program Counter程序计数器用来存放当前将要执行指令的地址。它与主存的 MAR 之间之间有一条直接通路且具有自动加1的功能也就是可以自动形成下一条指令的地址。IR Instruction Register指令寄存器用来存放当前的指令。IR 的内容来自主存的 MDR包含了操作码和地址码。IR 中的操作码 OPIR会送至 CU可以记作 OPIR → CU用来分析指令而地址码 AdIR作为操作数的地址送至存储器的 MAR可以记作 AdIR → MAR。​ CU 是控制器的核心组件用来分析当前指令所需完成的操作并发出各种微操作命令序列从而控制所有被控对象。控制器是计算机的神经中枢由它指挥各部件自动协调地工作完成一条指令操作需要取指、分析和执行3个阶段。​ 4I/O​ I/O 系统包括各种 I/O 设备及其相应的接口。每一种 I/O 设备都由 I/O 接口与主机联系它接收 CU 发出的各种控制命令并完成相应的操作。4. 计算机硬件的工作过程​ 总结一下当计算机接收到机器语言程序后硬件的工作过程分为以下几步把程序和数据装入主存储器从程序的起始地址运行程序按照程序的首地址从存储器中取出第一条指令经过译码等步骤控制计算机各功能部件协同运行完成这条指令的功能并计算下一条指令的地址用新得到的指令地址继续读出第二条指令并执行直到程序结束为止。每条指令都是在取指、译码和执行的循环过程中完成的。​ 我们现在以从主存中取数据的指令为例详细分析一下它的执行过程​ 1取指令 PC → MAR → M → MDR → IR​ 根据 PC 取指令到 IR。将 PC 的内容送至 MAR将 MAR 的内容送至地址线同时控制器将读信号送至读/写信号线从主存指定存储单元读出指令并通过数据线送至 MDR再传送至 IR。​ 2分析指令 OPIR → CU​ 指令译码并送出控制信号。控制器根据 IR 中指令的操作码生成相应的控制信号送到不同的执行部件。这里 IR 中是取数指令所以读控制信号被送到总线的控制线上。​ 3执行指令AdIR → MAR → M → MDR → ACC​ 取数操作。将 IR 中指令的地址码送至 MAR将 MAR 的内容送至地址线同时控制器将读信号送至读/写信号线从主存指定存储单元读出操作数并通过数据线送至 MDR再传送到 ACC 中。​ 4每取完一条指令还必须计算下一条指令的地址为取下一条指令做准备PC 1 → PC1.4 计算机性能指标​ 衡量一台计算机的性能是由多项技术指标综合确定的既包含硬件的各类性能又包括软件的各种功能这里主要讨论硬件的技术指标。1.4.1 主要性能指标机器字长​ 机器字长是指 CPU 一次能处理数据的位数也就是 CPU 内部用于整数运算的数据通路的宽度。字长通常就等于 CPU 的通用寄存器宽度也就是 CPU 内用于整数运算的运算器位数它反映了计算机处理信息的能力。我们平常所说”一台16位或32位的机器“这里的16、32就是指字长。​ 字长越长数的表示范围也越大精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短 又要运算位数较多的数据 那么需要经过两次或多次的运算才能完成这样势必影响整机的运行速度。当然机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU) 、数据总线以及存储字长的位数。指令字长一条指令中包含的二进制代码的位数。存储字长一个存储单元中存储的二进制代码的长度。​指令字长和存储字长都必须是字节Byte的整数倍。指令字长一般取存储字长的整数倍如果指令字长等于存储字长的2倍那么取一条指令就需要2个机器周期如果指令字长等于存储字长那么取指周期就等于机器周期。数据通路带宽​ 数据通路带宽是指数据总线一次所能并行传送信息的位数它关系到数据的传送能力。这里所说的数据通路带宽是指外部数据总线的宽度它与 CPU 内部的数据总线宽度机器字长可能不同。存储容量​ 存储器的容量包括主存容量和辅存容量。我们一般主要关心主存容量。​ 主存容量是指主存中所能存储信息二进制代码的最大容量通常以字节数来衡量。​ 存储容量 存储单元个数 × 存储字长​在主存储器中MAR 的位数反映了存储单元的个数 MDR 的位数则反映了存储字的长度。例如 MAR 为16位 表示 216 65536 也就是说对应的存储体内有65536个存储单元一般称为64K内存 1K1024而如果 MDR 为32位 那么主存的存储容量为 216× 32 221 2 位1220。​ 现代计算机中常以字节的个数来描述容量的大小一个字节Byte被定义位8位二进制代码。所以上述存储容量是 2M 位bit也可用 218字节Byte简写为 B表示记作 218B 或 256KB。​ 同理辅存容量也可用字节数来表示例如某机辅存如硬盘容量为 128 GB1G 1KM 230。运算速度​ 计算机的运算速度与许多因素有关如机器的主频、CPU 的结构、执行什么样的操作、主存本身的速度主存速度快取指、取数就快等等都有关。1.5.2 专业术语解释​吞吐量系统在单位时间内处理请求的数量主要取决于主存的存取周期。​响应时间从用户向计算机发送一个请求到系统对该请求做出响应并获得所需结果的时间。通常包括 CPU 时间计算机执行程序的时间和等待时间用于磁盘访问、存储器访问、I/O操作等的时间。​主频CPU 时钟频率机器内部主时钟的频率它是衡量机器速度的重要参数。对统一型号的计算机主频越高完成指令的一个步骤所用的时间越短执行指令的速度越快。通常以赫兹Hz为单位。​CPU 时钟周期节拍脉冲的宽度或周期也就是主频的倒数它是 CPU 中最小的时间单位。​CPU 时钟周期 1 / 主频​CPIClock cycle Per Instruction执行一条指令所需的时钟周期数。对一个程序或一台机器来说CPI 指的是该程序或该机器指令集中所有指令执行所需要的平均时钟周期数。​CPU 执行时间运行一个程序所花费的时间。​CPU 执行时间 指令数 × CPI/ 主频​ 对于同一个程序CPU 的执行时间就代表了 CPU 的性能它主要取决于三个要素主频、CPI 和 指令数。这三者是相互制约的。不同的机器可以有不同的指令集更改指令集可以让程序的指令数更少但 CPI 可能就会增大同时可能引起 CPU 结构的调整从而造成主频的降低。​ 现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量并用 MIPSMillion Instruction Per Second作为计量单位 即每秒执行百万条指令。比如某机每秒能执行200万条指令 则记作2 MIPS。​MIPSMillion Instructions Per Second每秒执行百万条指令的数目。​MIPS 主频 /CPI × 106​FLOPSFLoating-point Operations Per Second每秒执行浮点运算的次数。​MFLOPS百万次浮点运算每秒。 MFLOPS 浮点操作次数 /执行时间 * 106​GFLOPS十亿次浮点运算每秒。 GFLOPS 浮点操作次数 /执行时间 * 109​TFLOPS万亿次浮点运算每秒。 TFLOPS 浮点操作次数 /执行时间 * 1012​PFLOPS千万亿次浮点运算每秒。 PFLOPS 浮点操作次数 /执行时间 * 1015​EFLOPS百京次浮点运算每秒。 EFLOPS 浮点操作次数 /执行时间 * 1018​ZFLOPS十万京次浮点运算每秒。 ZFLOPS 浮点操作次数 /执行时间 * 1021​需要注意在计算机中描述存储容量、文件大小时K、M、G、T 等数量单位通常用2的幂次表示比如 1 KB 210B而在描述速率、频率等概念时通常用10的幂次表示比如 1 kb/s 103b/s。