深入理解计算机系统——CAEer的视角

2022-12-13 23:48:02

电磁CAE技术依托于“计算电磁学”的发展,深刻改变了硬件设计流程,但仅仅依靠CAE商业软件的仿真计算和设计人员手动参数调整或相对低级的自动参数扫描功能,更多优秀的硬件设计越来越难以支撑。学习和掌握最前沿的设计理念和优化策略,依靠扎实的数学基础将问题转化为数学模型,依靠扎实的编程素养将定性设计理念数字化、编程化并深度嵌入到硬件设计阶段,会不会给硬件设计带来更多的可能性?这就是这篇文章的“由来”。

作为计算机外行,学习“计算机系统”的过程大致可以分为三个阶段:

入门,学习从2021年11月上旬开始系统学习B站2021年11月上旬《计算机速成班》和《从0到1设计计算机》科普视频,结合两本科普书籍《计算机How does it run》、《How does a program run》完成了对计算机硬件系统的介绍。

深入,主要是靠对B站“王者考研”视频《计算机组成原理》(文中大量图片来源)的系统学习,结合高分计算机经典黑皮书《深入理解计算机系统》(作者RandalE.Bryant)阅读后完成对“计算机系统”的深入学习,并在此基础上进行消化-吸收-输出出来,终于完成了计算机系统知识体系的初步构建。

实践中,理论体系建立后,通过拆解笔记本主板重新认识,完成了知识体系的简单练习。

本文将本着“体系完整、结构清晰、层次递进”的原则,力图系统通俗地介绍各类“计算机系统”,希望能帮助电磁CAE设计人员入门。受作者专业和认知水平所限,文中描述难免有失偏颇,望指正。

本文将从三个方面展开:

1、底层认知:计算机系统大致是这样组成的。最底层是计算机硬件(计算机组成原理),上面是操作系统,上面是各种软件应用程序(算法和数据结构),这样就构成了一个计算机系统。通过计算机网络连接的功能齐全的计算机。本文作为“计算机系统”的缩略版,将着重讲述用高级语言编写的上层“代码”在运行过程中计算机底层“软件/硬件”的实现过程。

2、深入理解:完成计算机组成原理底层认知的讲解后,想要深入了解的同学需要打开计算机组件的包装,更具体地探究构成一个系统的各个子系统的结构组成和功能。计算机系统和执行机制。这部分内容始终围绕“硬”和“软”两个方面进行阐述。系统和I/O系统)结构组成和运行机制; “软”部分将详细介绍基于“0/1”二进制的信息表示和处理方法,以及控制计算机硬件协调的“指令系统”结构方法、运行机制,以及“规则”和“策略”以维持每个硬件子系统内的有序工作。

如果把计算机系统比作一个公司,那么“硬”部分就类似于由基本要素“人”(类似于晶体管)组成的各个职能部门(类似于硬件子系统)和构成这些职能部门的“机构”部门。 “结构”; “软”部分类似于建立在“核心概念”之上的各种“规章制度”。软硬结合,保证了公司的有序运作。

3、认识主板:“计算机系统”载体最好的案例应该是个人电脑的主板。当你初识“主板”时,毛细管一样的PCB走线、密密麻麻的电路元器件和大量被引脚包围的集成电路芯片,可能会让你身体不适,更不用说分析了。在深入了解并构建了一个比较完整的“计算机系统”体系后,再看“主板”,会不会有不一样的理解呢?这个过程本身也是加深对“计算机系统”理解的有益实践。

计算机是迄今为止最复杂的系统之一。它的作用是按照一定的顺序完成识别和预先设定好的指令,而这些预先设定的指令就是我们所熟悉的程序。

所谓复杂系统,一方面是因为其组成元件中的晶体管数量非常多。一个指甲盖大小的CPU核心包含了数亿个晶体管。计算机系统的强大之处在于它将大量晶体管互连起来,并允许它们按照严格的组织规则进行分工协作,从而实现远超个体能力的复杂功能。这与细胞-器官-智慧生命的实现逻辑是一致的。 《计算机系统》着重介绍了这个复杂系统的构建过程和工作机制: 1)在硬件层面,晶体管——计算机元件——功能完备的计算机; 2)在软件层面,0/1二进制信息表示和处理指令系统。

下面我们从上到下简单了解一下计算机硬件系统的具体组成。一个计算机硬件系统的基本组成包括两部分:1)主机(计算机的核心部分); 2)I/O设备(键盘、鼠标、显示器、CD-ROM等)。其中,上位机由CPU和主存组成,CPU主要包括运算器(执行逻辑和算术运算)和控制器(指挥程序的运行),主存用于存储程序和数据。

打开任意一款笔记本的销售页面,配置参数表介绍了电脑的主要性能参数,其中最重要的参数有:1)CPU型号; 2)内存(主存)容量; 3)硬盘容量(即辅助存储容量)。

CPU的主要功能是执行指令。该结构主要包括运算器和控制器。每个组件的功能是:

计算器:就像搬砖一样。主要工作是进行各种算术运算和逻辑运算。主要组成部分有: 1)算术逻辑单元:用于进行各种算术逻辑运算; 2)通用寄存器,用于存放要计算的操作数; 3)累加器,用于存储操作数和运算结果; 4)乘商寄存器,用于辅助计算乘商。

控制器:就像工头一样,主要工作是指挥运算器执行各种指令。主要组成部分有: 1)控制单元:分析指令,给出控制信号; 2)指令寄存器:用于存放要执行的指令; 3)程序计数器:用来存放下一条指令的地址。

主存储器是一个临时容器,用于存储由要运行的程序翻译的各种指令(数据)。它由三部分组成: 1)存储体,像容器一样存储大量的程序或数据; 2)MAR,地址寄存器,暂时存放要检索的程序或数据的地址(如拾取码); 3)MDR,数据寄存器,暂时存放要检索的程序或数据(如要检索的包)。

一个复杂庞大的系统要想有序运行,必须要有科学合理的组织架构来保驾护航。就像大公司的组织结构一样,计算机组成部分之间的分工与协作需要计算机硬件架构来保证。计算机硬件的组织形式主要有两种:1)冯·诺依曼结构; 2)现代计算机结构。

冯诺依曼结构

计算机科学家冯诺依曼建立了现代计算的基本组成和组织结构,即“冯诺依曼结构”。结构组成包括五部分:运算器、控制器、存储器、输入设备和输出设备。组织结构如下图所示,结构特点是以CPU为中心的组织形式,所有的数据流转、程序运行、结果输出均由CPU执行和协调。

如果将计算机比作一家公司,其五大组成部分大致可作如下比较。计算器好比生产部门,内存好比存储部门。所有采购的原材料和加工产品都需要经过生产部门,然后送到仓储部门。等相关部门,这显然让生产部门做了很多职责范围之外的工作,降低了生产效率。因此,现代计算机结构优化了五大组成部分的组织形式,这就是“现代计算机结构”。

现代计算机体系结构

现代计算机结构以内存为核心。所有输入的数据/程序和输出的计算结果都先存储在内存中,然后再送CPU执行或输出设备。现代计算机结构有效减轻了CPU的负担,让CPU更专注于执行指令,大大提高了效率。

以上,我们基本完成了一个计算机硬件系统的搭建,那么这个系统是如何工作的,各个组成部分之间又是如何分工合作,保证预先设定的指令顺利运行的。

过程大致是这样的:当你在手机上打开一个应用程序时,后台实际上是在运行用高级语言编写的代码。这些代码被翻译成计算机硬件通过称为编译器(逐行二进制)代码)理解的机器语言,然后通过 I/O 加载到主内存中。

当用机器语言表示的指令和数据加载到主存后,CPU 就开始访问主存来取指令并开始执行。具体过程如下:

step1:程序计数器PC指向当前指令地址

Step2:内存库根据MAR的拾取码将相应位置的数据发送到数据寄存器MDR;

Step3:MDR将指令发送到控制器的指令寄存器IR进行指令解析;

Step4:IR将指令的操作码发送给控制单元CU,并将地址码发送给MAR,CU根据操作码通知运算单元进行什么操作;

step5:根据MAR的取件码,存储体将

这样,你就对计算机的各种硬件如何相互配合,以保证程序的顺利运行有了一个大概的了解。

入门之后,这部分将从“软件”和“硬件”两个方面正式深入计算机的各个子系统,介绍它们的结构和工作机制。

二进制是信息科学的基础,就像晶体管是计算机硬件系统的基础一样。现代计算机存储和处理以二进制信号表示的信息。这些普通的二进制数或位构成了数字革命的基础。

我们熟悉的数学理论都是基于十进制信息表示和处理的理论,但是十进制的每个位状态包含10种(0~9),状态太多不利于工程实现,但是二进制的一个位状态由只有两种 (0, 1),二进制值在机器中存储和处理信息时效果更好。二进制信号可以很容易地表示、存储和传输,例如,穿孔卡上的孔或无孔、电线上的高电压或低电压,或磁场感应的顺时针或逆时针。

本章主要分为三个部分: 1)信息存储,主要介绍二进制理论基础的一些基本概念; 2) 整数的表示与计算,介绍用无符号数和二进制补码表示和运算整数的理论基础;3) 浮点数的表示与运算,介绍用科学记数法的二进制表示的方法实数和相关运算的性质。

1、信息存储

1.1 进位计数系统

我们生活的现实世界是基于十进制的,但计算机硬件只能理解 0/1 的二进制语言。要在两个世界之间建立紧密的联系,就离不开各个基础系统之间的转换。最常见的是十进制、二进制、八进制和十六进制之间的转换。其中,十进制、八进制和十六进制与二进制之间的相互转换如下,十进制、八进制和十六进制之间的相互转换可以通过二进制传递来实现。

1.2个字

大多数计算机使用 8 位块或字节作为最小的可寻址存储单元。内存块不是访问内存中的每一位,而是可以将内存视为一个非常大的字节数组,称为虚拟内存,每个字都有一个“门牌号”,也就是一个地址。所有地址的集合就是虚拟内存地址空间。空格的大小就是计算机的字长。例如,对于32位的计算机,虚拟地址空间限制为4GB,64位为8GB。

1.3 数据大小

常用的数据类型有几种,字符型、整型和浮点型。字符类型一般用于存储字符串中的单个字符,整数类型用于存储各种长度的整数,浮点类型用于存储不同精度的浮点数。

1.4 寻址和字节顺序

如果一条数据跨越多个存储字节,则必须规范数据的存储顺序。在几乎所有机器中,多字节对象都存储在连续的字节序列中。对表示对象的字节序列进行排序有两个通用规则: 1) 大端模式; 2)小端模式。

如图所示,在地址

1.5串

字符串由字符组成,在计算机中,每个字符与“0/1”的连接是通过ASCII编码(8bit)实现的,其中ASCII值用十六进制表示。

1.6 常用操作

1. 位级操作

所谓位运算,就是可以将用二进制表示的数据的每一位作为一个个体,进行相应的布尔运算。主要操作是AND

2.逻辑运算

逻辑运算(或 ||,和

3、班次操作

将位模式左移或右移的移位操作。左移表示为x<>k,但是右移的具体操作有两种情况: 1)逻辑右移是高位补0; 2)算术右移是高位补最高位,具体操作如下图所示。对于无符号数据,右移必须符合逻辑,而对于有符号数据,几乎所有机器都默认为算术移位。

2.整数的表示与运算

本节将介绍整数的两种表示形式,一种只能表示非负数,另一种可以表示负数、零和正数。它的数学特性与后续的机器级实现密切相关。

2.1 整数数据类型

2.2 无符号数和补码

所谓无符号数就是没有“/-”符号的数,只能表示非负数,其二进制码表示与真值的映射关系为:

即w位的无符号二进制码,其真值可以通过上式计算,该式建立了二进制码(类似于一个w维向量)与真值(类似于w维向量的模),公式看似复杂,其实就是前面二进制转十进制时用到的求幂求和法。

对于有符号数(即包含“/-”),需要对符号位进行编码,以区分正数和负数。具体实现有两种方案:

原码(S)表示最高位作为符号位,其真值计算可表示为B2S。从下图可以看出,最高有效位(sign bit)决定了真值的正负,其他位只决定了绝对值的大小;

补码(T)表示最高有效位定义为负权重,其真值的计算可以表示为B2T。从下图可以看出,其真值的结果表示为一个负数和一个正数,其中有无负数取决于最高位(负权重位),而正数数字取决于其他位。

需要注意的是,原码在表达有符号数时存在一些先天缺陷,如下图:原码定义的5和-5的二进制表示加起来为-10,显然与实际不符.但使用补码定义,计算结果为0,与实际情况相符。因此,有符号数的表示在大多数情况下都使用补码方案。

不同类型数据的二进制表示及其真值的计算方法如下图所示。有符号数的反码定义为原码到补码转换的过渡形式,实际上是没有用的。

2.3 有符号数和无符号数之间的转换

所谓有符号数和无符号数的转换,实际上并没有改变二进制数的位表示,而是由于有符号数和无符号数的定义不同,对二进制数的每一“位”的解释不同,导致二进制数表示的真值发生变化。

补码到无符号数的转换如下图通过公式和图解所示:

从无符号数转换为二进制补码正好相反。公式及说明如图:

2.4 数字的扩展和截断

不同字长的整数之间的转换、短字长的二进制数转换为长字长的二进制数等常用操作需要扩展位,长字长的数转换为短字长的数长度需要截断。

补码和无符号数的展开方式也不同: 1)无符号数的展开方式是高位补0; 2)二补码的扩展是高位补码最高有效位。建立这个展开规则是为了保证展开前后二进制所代表的真值不变。

截断会改变二进制表示的真值。对于一个无符号数x,将其截断为k位的结果相当于计算mod(即真值的模)。总之,无符号数和补码的截断结果可以分别表示如下:

2.5 整数运算

整数运算主要围绕无符号数和二进制补码。常用的运算主要有:1)加法运算; 2) 不运行; 3)乘法运算; 4) 乘以2的幂运算; 5)除以2的幂运算。

对于加法运算,我们通常关心的是计算结果是否溢出。对于无符号数和二进制补码,加法计算结果如下:

对于乘法运算,我们可以看到,无论是无符号数还是补码运算,乘法运算都可以等效地通过“位”截断来实现,而无需添加专门的乘法器,体现了极大的便利性。无符号数与补码数的乘积如下:

对于乘以2的次方和除以2的次方,可以通过移位运算实现计算过程,大大提高了操作的便利性。其中: 1)乘法,无论是无符号数还是补码,都可以通过左移k位等价实现; 2)除法,对于无符号数或者补码,可以通过算术k等右移。高效实现(其中无符号数补0,补码补最高位)。

3.浮点数的表示与运算

3.1 浮点表示

浮点表示以 - 形式对有理数进行编码。其中,s为符号位(1位,只有0/1两种状态,表示/-),M为有效数(n位,),E为指数(k位,--),为二进制表示,只需要对这三个数字进行编码即可。对于单精度浮点格式(float,32位),k=8,n=23;对于双精度格式(双精度,64 位),k=11,n=52。知道了浮点数的二进制编码表示,求出浮点数的真值,计算结果如下。

需要注意的是,无论指数的编码是否全0/1,浮点数编码对应的真值有两种计算方法:

当指数码既不全0也不全1时,此时浮点数为归一化值,其中指数字段-,e为无符号数,位表示为--,--;小数字段,其中 --;

当指数码全为0时,浮点数为非规格化值,此时-,;

当指数码全为1时,浮点数是一个特殊值。当小数域全为0时,表示无穷大,s=0,就是; s=1,为-;当小数域不为 0 时,为 NaN。

3.2 浮点运算

浮点数的加法运算与整数的加法运算性质不同,缺少很多属性(比如不满足结合律和分配律),这里不再赘述。

4.总结

“十进制”是所有与“数字”有关的现代理论的基础。它是我们最熟悉的表示世界的“方式”,而“二进制”作为信息世界的基础,提供了另一种“方式”,因此必须在两种“方式”之间建立联系(基础转换),同时,需要以“二进制”为基础来表示各种数(无符号数、有符号数、定点数、浮点数等),阐明各类运算的数学性质,这就是第一章所涵盖的全部内容。

存储系统就像计算机系统中的“仓库”。用于存储程序、指令、数据等各种信息。将分为三个部分: 1)什么是“存储系统”,介绍取速度梯度形成的层次结构的抽象模型; 2)为什么叫“系统”,介绍了各种存储技术,以及基于“局部性原理”的存储系统的金字塔结构; 3)“存储系统”是如何工作的,重点介绍了存储系统的结构和最重要的“主存”和“高速缓存”,并说明了它们是如何配合CPU顺利完成数据访问的。

一、什么是“存储系统”

1.1 抽象层面的理解

如上图所示,到目前为止,在我们对计算机系统的研究中,我们一直依赖于一个简单的计算机系统模型,CPU 执行指令,内存为 CPU 存储指令和数据。在这个简单的模型中,内存系统是一个线性字节数组,CPU 可以在常数时间内访问每个内存位置。具体来说,如下图,它包含一个存储体(存储数据),然后是两个接口(地址接口,数据接口)。虽然到目前为止这是一个有效的具体模型,但它并没有反映现代系统实际工作的方式。

1.2 层次结构

事实上,一个内存系统(memorysystem)是一个层次结构的存储(storage)设备,具有不同的容量、成本和访问时间。 CPU 寄存器保存最常用的数据。靠近 CPU 的小而快速的缓存内存(cache)缓冲区。主存储器临时保存存储在大而慢的磁盘上的数据,这些磁盘通常用作存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区。

2、为什么叫“系统”

2.1 存储技术的多样性

信息技术发展以来,存储技术日新月异,二进制信息的存储方式有很多种。

根据存储介质的种类,存储器可分为:1)半导体存储器(主要用于主存和Cache); 2)磁性表面存储器(主要是磁盘和磁带); 3)光存储器(主要是光盘等)。

其中,半导体存储器发展迅速,分类较多:

SRAM是一种静态随机存取存储器:它的存储单元是一个双稳态电路,每个单元由6个晶体管电路实现。只要有电,就可以无限期地保持两种电压配置或稳定状态,电路复杂度相对较高,因此成本相对较高,一般用于CPU中的缓存和寄存器;

DRAM是一种动态随机存取存储器:每一位的存储元件是一个位电容,二进制0/1状态由电容的充放电来表示。 DRAM的存储单元对干扰非常敏感,成本比SRAM便宜很多。一般用于Main memory(记忆棒)。

ROM(readonlymemory)只读存储器,只能读不能写。与RAM(断电后DRAM和SRAM中存储的信息会丢失)不同,ROM是非易失性存储器,即使断电,存储在其中的信息也不会丢失。存储在ROM设备中的程序通常称为固件(firmware),当电脑通电时,就会运行存储在ROM中的固件。一些系统在固件中提供了少量最基本的输入和输出功能(例如 BIOS 例程)。图形卡和磁盘驱动器等复杂设备也依赖固件来转换来自 CPU 的 I/O 请求。

磁盘:结构由磁盘(存储数据)、主轴(驱动磁盘旋转)、读写头(读取磁盘信息)组成。磁盘是磁盘的核心部件,被分成许多同心圆(磁道),许多扇区交替分布在磁道上(扇区以间隙划分),磁盘以扇区位为单位存储数据。

2.2 内存构造原理

由上可知,二进制0/1信息的存储方式有很多种。在构建计算机系统时,我们应该如何选择这些存储器呢?

如上所述,尽管上述设备都可以存储信息,但它们的性能和成本却相差甚远。

正因为如此,为了兼顾计算机系统的成本、容量(存储字数*字长)和速度(数据宽度/存储周期),计算机存储设备并不是选择哪种技术系统的简单选择, 但

根据存储设备与计算机大脑(CPU)之间的距离,存储系统按照传输速度由快到慢排列。从而形成了“金字塔结构”的仓储系统布局设计。

如图,以我的笔记本电脑的存储系统为例,其基本组成如下: 1)CPU配备三级缓存(L1/L2/L3),容量为256KB,1.0 MB 和 6.0MB,分别。依次增加; 2)电脑主内存为7.9GB DRAM; 3)辅助存储盘为239GB的SSD(固态硬盘)。可见,存储设备距离CPU越远,存储容量越大。

2.3 就地原则(可行性基础)

上文提到,为了平衡容量、成本和传输速度,我们设计了一个“金字塔形”的存储系统层次结构,这样的结构是否可以实现存储系统中存储设备之间数据的平滑“上下行”,以保证计算机系统的顺利运行?

“局部性原则”为这种结构的合理性提供了理论依据。所谓局部性原则,即编写良好的计算机程序倾向于引用与其他最近引用的数据项接近的数据项,或者引用自引用的数据项。这一原则对软件系统和硬件系统的设计都有很大的影响。局部性通常有两种形式: 1)时间局部性,即一个被引用一次的内存位置可能在不久的将来被引用多次; 2)空间局部性,即一个内存位置被引用一次,那么程序在不久的将来可能会引用附近的内存位置。

局部性原则在工程上有现实需求。例如,在硬件层面,计算机引入缓存,将主存中相邻的数据集提前复制到缓存中,从而利用缓存的速度优势,提高数据传输的速度。 .

3.“存储系统”是如何工作的

3.1 系统结构组成

由上可知,存储系统中的各个设备按照其与CPU的“远近”逐渐形成“金字塔结构”布局。在本节中,我们将深入了解这些存储设备如何相互连接以及如何与 CPU 连接,以及如何划分写入。

如上图所示,数据在存储系统中的运行过程大致是这样的: 1)各种应用软件安装在计算机的C盘/D盘(ROM)中。由于ROM的非易失性,即使断电,安装在其中的App也不会被删除; 2)当您打开电脑并启动微信App时,相关的运行程序会被复制到主存中并开始运行; 3)缓存加载从主存/程序子集中复制数据,以备CPU及时调用; 4) CPU从缓存中取出指令和数据进行处理,并向用户输出预期的结果。

3.2 主存

在上面的描述中,我们仍然将主存作为一个抽象的黑盒子来分析。下面我们就深入主存,探究一下主存的组成和运行机制。

主存储器的基本组成

由上可见,主存的基本构成包括三部分: 1)存储数据的存储体,类似于容器,每条数据就像一个包; 2)地址寄存器用于存放CPU要取数据的地址,就像取包裹时的pickup code; 3)数据寄存器用于暂存CPU要取的数据,就像要取的包裹一样。三者之间的有序发展有赖于时序控制逻辑的协调。

继续深入内存条的结构细节,它由密密麻麻的集成电路组成。储“位”,它由一个MOS管和一个电容组成,其中电容相当于一个“蓄水池”,可以蓄水也可以放水。有水为“1”,无水为“0”; MOS管相当于一个水管阀,控制着是存水还是防水,对应的是“写入”还是“读取”电容中的数据。因此,连接水管出口的“绿线”是写入或读取存储单元中的数据,8个存储“位”组成一个存储“字”,而连接水管的“红线”开关阀G决定是否允许相应单元写入或读取数据,红线统一接在地址寄存器上,地址寄存器的数据可以用来控制数据选通到哪个位置。

其实直接把“红线”接到地址寄存器(MAR)上还是比较浪费的,因为毕竟红控制线只有一根线是导通的(对应“1”),而其他线都是关闭的(对应“0”),所以n条地址线只决定了n个状态,这是一种资源浪费。通过桥接解码器,可以通过n位地址线控制一种状态,从而充分利用资源。通过读写控制线判断当前内存的读写状态。

忽略电路细节,主存是一个封装好的芯片,包含一组地址线引脚和数据线引脚,加上读写控制线引脚,片选线引脚(由于主存芯片是由多个芯片并联进入,芯片选择线控制使用哪个存储芯片)。

内存的总容量=存储单元的个数*存储字的长度(存储单元包含的位数),比如8KB,其中1B(word)=8bit(位),所以8KB=8K *1B=8*8bit,即地址线有13位,数据线有8位。

主存与CPU的连接

上面我们已经把主存分析清楚了,那么主存是怎么和CPU连接起来的,让CPU可以自由的读取里面存放的数据呢。其实很简单,数据线接数据线,地址线接地址线。

如果主存的容量不能满足CPU的需要,可以通过内存扩展来解决。有两种扩展方式:

主存位数不够(相当于快递柜体积太小装不下大包裹),可以通过位扩展(快递柜扩展)实现;

如果主存中的字数不够(存储单元数量不够,相当于快递柜数量太少装不下太多包裹),可以通过字扩充实现。

3.3 缓存

缓存产生的背景是计算机技术的飞速发展导致主存中传输数据的速度无法与CPU的运算速度相匹配,严重影响了计算机的运行速度。

解决方法是在CPU和主存之间增加一个传输速度较快的缓存,将要执行的程序拷贝到主存中,供CPU操作调用。这个策略就像京东快递和其他快递的区别。京东速递在每个城市都自建仓库,提前存放货物。买家下单后,货物通常会直接从仓库发货,而不是从原产地发货。 ,从而实现“一日达”的高效率。

高速缓存与主存的映射关系

计算机的主存相当于一个大水库,缓存相当于一个小水库。主存预先将数据复制到缓存中。如果把主存看成是数据的集合,那么缓存就是数据的集合。子集,所以必须明确子集与原始集合的映射关系,这样CPU从缓存中获取数据时才不会混淆。

由于cache缓存相当于主存的一个子集,所以有必要明确一下子集与原始集合的映射关系。缓存与主存的映射关系主要分为三种:

全关联映射: 1)映射方式,主存和缓存之间的数据传输是以块为单位的,每个块包含多个字的数据,在全关联映射中,如下图所示:在Cache中

直接映射: 1)在映射方式中,主存中的块只能按照一定的顺序排队,放入Cache中的某一行。因此,Cache块数=主存块数%(取余)Cache总块数; 2)内存访问方式,CPU取地址码001110去Cache取数据,Cache用主存块号取行号8的余数结果为

Group associative mapping,1)映射方式,介于1)和2)映射方式之间,Cache中的block可以提前分组,主存中的block必须按照一定的顺序放在Cache中的某一组中,但可以随意放在组中; 2)内存访问方式,CPU取地址码001110去Cache找数据,Cache用主存块号取组号4的余数结果为

三种映射方式的优缺点总结比较如下:

缓存替换策略

上一节我们介绍了缓存和主存的映射方式以及不同映射方式下CPU的内存访问方式。皆大欢喜,这里介绍一下错过了怎么办。遗漏有两种情况:

如果有空的空间可以存放数据,就将内存块地址对应的数据复制到该点;

如果没有空的空间可以存放数据(即要放置的位置被原来的数据块占用),就需要更换这两个块,以保证计算机的正常运行。三种不同的映射方法的替换前提是不同的。区别如下: 1)full associative不挑剔,除非Cache满了,否则可以使用; 2)直接映射是最具体的,对应的行必须非空,否则会被替换; 2)set associative比较适中,在两个之间,当对应的group满了,就会被替换掉。

实际替换也有不同的策略。主要有四种: 1)随机算法(RAND),在满足要求的块中随机选择一个块进行替换,效果较差; 2) 先进先出算法(FIFO),先将最新的主内存块调入Cache进行替换; 3)最近最少使用(LRU),替换最长时间未被使用的主内存块,基于“局部性原则”,命中率更高; 4) Recently Less commonly used (LFU),替换访问次数最少的主内存块。

缓存写策略

上面介绍了CPU从缓存中读取数据的一些策略,但同时CPU的计算结果必须同时写回缓存和主存,以供后续使用。这时候写命中和写也有不同的策略。两种未命中情况有不同的处理策略。

写命中时: 1)全写方式,即写命中后,需要将结果同时写入缓存和主存; 2)回写方式,即写命中后,只将结果写入缓存,当缓存中相应位置的数据要被替换时,才将结果写回主存;

Write miss: 1)Write allocation方式,当CPU写入cache miss时,将主存中的block调入cache,并在cache中进行修改,通常与write-back方式配合使用; 2)Non-write allocation method,当CPU漏写cache时,只写主存,不转cache,一般与full write方式配合使用。

4.总结

本章更深入地介绍了存储系统,介绍了多种存储技术,不同的存储方式由于速度和成本的差异服务于计算机的不同部分,从而形成了“金字塔”形式的层次结构,并介绍详细介绍了层次结构中主存和缓存缓存的结构组成、运行机制以及与CPU的协调机制。

如下图所示,我们知道计算机系统的层次结构是这样的:晶体管是计算机系统的基本元件,它们通过高/低电平的切换来实现自身的价值;大量的晶体管组成一个超大规模的集成电路,这些集成电路由于不同的功能(存储器、CPU、输入/输出等)可以发挥不同的作用,而这些具有不同功能的集成电路组合起来就构成了计算机硬件系统。但是,这个硬件系统只能识别由0和1组成的机器语言,这与程序员编写的程序(高级语言)有很大区别,需要通过编译器进行翻译才能相互通信。这些0和1组成的数据串就是指令,是计算机运行的最小功能单元,而这些能实现各种功能的指令集合就是指令系统。

编译器编译后的指令序列放入主存的存储体中。在程序计数器PC的控制下,CPU从主存中一条一条地取出指令,CPU控制器进行指令分析,指挥CPU运算单元根据指令要求完成相应的运算处理,具体运算过程可以参考上面。

指令体系章节将从三个方面进行展开: 1)指令格式,介绍指令的基本构成和按不同标准的分类; 2)指令/数据寻址,执行前需要从主存中提取寻址,分别介绍指令和数据(指令的操作数)寻址的各种方式; 3)CISC和RISC,介绍两种主流指令系统(复杂指令集和精简指令集),简要说明两者的本质区别、优缺点和典型应用。

1.命令格式

指令格式如下图所示。它由一个操作码和一个地址码组成。操作码指定操作数的操作类型(求和、移位等),地址指定操作数的位置。

由于运算任务的类型不同,指令地址的个数也不同,主要分为:1)零地址指令; 2)单地址指令; 2)双地址指令; 3)三地址指令; 4)四地址指令。

零地址指令

一种情况是不需要操作数,例如 no-op、stop 和 interrupt-off 指令;另一种情况是栈计算机,两个操作数隐式存储在栈顶和子栈顶,计算结果在子栈顶。

一个地址指令

一种情况是只需要一个操作数,比如加1、减1、取反、取反等;另一种是需要两个操作数,但一个操作数隐含在某个寄存器(如ACC)中。

二地址指令

它常用于与需要两个操作数的算术运算和逻辑运算相关的指令中。

三地址指令

常用于需要两个操作数的算术运算和逻辑运算相关指令,将计算结果写入A3。

四地址指令

常用于需要两个操作数的算术运算和逻辑运算相关的指令,将计算结果写入A3,同时告知下一条要执行指令的地址。

指令的分类还可以根据长度和类型来区分: 1)定长指令字结构,即指令系统中所有指令的长度相同; 2)变长指令字结构,即指令系统中各种指令的长度各不相同。

按操作类型分类: 1)数据传输类,在主存和CPU之间传输数据(如LOAD:将内存中的数据放入寄存器;STORE:将寄存器中的数据放入内存); 2)算术/逻辑运算,其中算术运算包括加、减、乘、除、加1、减1、补、浮点运算、小数运算等。逻辑运算包括AND、OR、NOT、XOR、位运算、位测试、位清零、位取反等; 3)移位操作,包括算术移位、逻辑移位、循环移位等; 4)转移操作,包括无条件转移JMP、条件转移(JZ:结果为0;JO:结果溢出;JC:结果有进位)、调用返回(CALL和RETURN)、陷阱(Trap)和陷阱指令; 5)输入/输出操作,CPU寄存器和IO端口(端口是接口中的IO寄存器)之间的数据传输。

2. 指令/数据寻址

指令寻址的目的是如何确定下一条指令的存储位置。主要有两种: 1)顺序寻址,程序计数器PC不断加1,顺序执行内存中的指令; 2) 跳转寻址,通过转移指令(JMP)状态。两条指令寻址的操作过程如下图所示。

与指令寻址相比,数据寻址的种类要丰富得多。数据寻址的主要任务是确定这条指令的地址码所指示的真实地址。

以一条地址指令为例,地址码的构成包括两部分(寻址特征形式地址),操作数的有效地址EA(实地址)只有按照规定的运算处理形式地址才能得到通过寻址功能。寻址特性规定了数据寻址的方式,有多种类型,如下图所示。

立即解决

不需要寻址,形式地址就是操作数(一般用补码形式表示)。

优点是不需要访问内存,速度快。缺点是形式地址的位数限制了操作数的范围。

直接寻址

指令中的形式地址A是操作数的实际地址,即EA=A。

优点是指令结构简单,一条指令只执行一次内存访问。缺点是A的位数决定寻址范围,操作数地址不易修改。

间接寻址

指令地址域给出的形式地址不是操作数的真实地址,而是操作数有效地址所在存储单元的地址,即EA=(A)。

优点是可以扩大寻址范围(有效地址EA的位数大于形式地址A的位数),缺点是指令执行过程中需要多次寻址。

隐式寻址

操作数的地址隐含在指令中,而不是明确给出操作数的地址。

优点是有利于缩短指令字长,缺点是需要增加存储操作数或隐式地址的硬件。

寄存器寻址

指令字中直接给出操作数所在寄存器的编号,即EA=Ri,操作数在Ri指向的寄存器中。

优点是指令在执行阶段不需要访问主存,只访问寄存器,指令字短执行速度快,支持向量/矩阵运算。缺点是寄存器价格昂贵,计算器中的寄存器数量有限。

注册间接寻址

寄存器Ri中给出的不是操作数,而是操作数所在主存储单元的地址,EA=(Ri)。

特点是比一般的间接寻址速度快,但指令的执行阶段需要访问主存(因为操作数在主存中)。

基地址

将CPU中基地址寄存器(BA)的内容与指令格式中的形式地址A相加,构成操作数的有效地址,即EA=(BR)A。

好处是方便程序“浮动”,方便实现多个程序的并发运行。

索引寻址

有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和,即EA=(IX)A,其中IX可称为编程寄存器(专用),通用寄存器也可以用作变址寄存器。与基址寻址方法的区别在于 IX 可以由用户修改。

优点:在数组处理过程中,可以将A设置为数组首地址,可以不断改变编程寄存器IX的内容,轻松构成数组中任意数据的地址,特别适合编程循环程序。

相对寻址

程序计数器PC的内容与指令格式中的形式地址A相加,构成操作数的有效地址,即EA=(PC)A,其中A为相对于指令所指向地址的位移PC,可证明为负,补码表示。

优点:操作数的地址不固定,随着PC值的变化而变化,指令地址之间总是有一个固定的值差,便于程序浮动。

堆栈寻址

操作数存储在堆栈中,隐式使用堆栈指针 (SP) 作为操作数地址。堆栈是内存中按照“后进先出(LIFO)”原则管理的特定存储区域。存储区中读写单元的地址由一个特定的寄存器给出,称为栈指针。 (SP)(类似于程序计数器PC)。

基于栈寻址,下图展示了一个加法运算的过程:

step1:栈指针SP指向R0,对应数据0001出栈进入ACC,SP指向R1;

step2:SP对应数据1001出栈进入寄存器X,SP指向R2;

step3:ALU计算ACC与X(1010)之和,送入寄存器Y;

step4:计算结果入栈,SP指向R1,Y(1010)送入栈寄存器R1。

根据栈数据的存储位置,可以分为硬栈和软栈。 hard stack使用寄存器存储操作数,成本高但速度快;软栈使用主存存储操作数,成本低但速度相对较慢。

不同寻址方式的有效地址计算方式和内存访问次数总结如下表:

3. CISC 和 RISC

指令集的设计有两个主流方向,一个是以X86架构为代表的CISC(Complex Instruction Set Computer),即复杂指令集,另一个是以ARM架构为代表的RISC(Reduced Instruction Set Computer),即是,减少指令集。两者的设计思路都是偏左的。

CISC:设计思路是用一条指令完成一个复杂的基本功能。一条指令可以通过专门的电路来完成。通过“存储程序”(微程序)的设计思路,将更复杂的指令存储在更通用的电路中。该部分已完成。典型应用为X86架构,主要用于笔记本、台式机等;

RISC:设计思想是由一条指令完成一个基本的“动作”和多条指令组合完成复杂的基本功能。一个典型的应用就是ARM架构,主要用在手机和平​​板上。

如果说“指令”是计算机硬件系统的语言,那么CISC和RISC就是两种语言系统规范。其中,CISC以“词”为元素构建语言系统,每个词都可以表达一个意思,表达复杂的意思。 ,可以组合单词,优点是简单,缺点是单词可能很多;而RISC构建以“字母”为元素的语言系统,每个字母不能表达确切的意思,需要将很多字母组合起来表达丰富多样的意思,优点是“元素”的数量少,只有26个,缺点是要表达任何意思,需要组合很多字母。

两种指令集的对比如下图所示:

4.总结

本章详细介绍了指令系统的相关内容,依次介绍了什么是指令系统及其在计算机系统中的作用、一条指令的组成(指令格式)、指令与数据的寻址方式(寻址方式)以及2 一个典型的指令系统(CISC和RISC)。

正如 Randall E. Bryant 在《深入理解计算机系统》中所说,现代处理器可以被视为人类创造的最复杂的系统之一。在一块指甲盖大小的硅芯片上,可以容纳完整的高性能处理器和大缓存,以及用来连接外部设备的逻辑电路,是计算机的核心。

上面说了CPU主要由运算单元和控制器组成,但是这样的抽象模型显然不是我们理解的终点。本章我们将深入CPU内部,了解CPU的功能和结构组成,以及CPU是如何完成指令的。抽取与执行,抽取的数据如何在CPU内部流动,控制器(CU)如何通过控制信号发挥其调度功能,如何通过流水线概念提高CPU运行效率。

一、CPU功能及结构

CPU的主要功能是:

指令控制:完成取指令、解析指令、执行指令的操作,即程序的时序控制;

操作指令:一条指令的功能往往是通过若干个操作信号的组合来实现的。 CPU管理并产生从内存中取出的每条指令的运行信号,并将各种运行信号发送给相应的部件,从而控制这些部件按照指令的要求进行动作;

时间控制:时间控制应用于各种操作,时间控制应按时间顺序为每条指令提供合适的控制信号;

数据处理:对数据进行算术和逻辑运算;

中断处理:处理计算机运行过程中出现的异常情况和特殊请求。

CPU的基本结构包括运算单元和控制器。运算器的作用是处理数据;控制器的作用是协调和控制计算机各组成部分的指令序列来执行程序。基本功能包括: 1)取指令并自动形成指令地址,发出取指令命令; 2)分析指令,分析得到的指令(操作码操作数地址),解码操作码(分析完成什么操作),生成操作数的有效地址EA; 3)执行指令,根据分析指令得到的“操作命令”和“操作数地址”形成操作信号控制序列,协调ALU、存储器和I/O设备完成相应的操作; 4)中断处理,管理总线和I/O,处理异常。

1.1 运算单元的基本结构

运算器主要包括具有算术/逻辑运算功能的ALU和用于暂存各种输入输出结果的通用寄存器。它们通过 CPU 内部总线连接。像飞镖一样的内部总线简化了设备之间的通信连线。

1.2 控制器的基本结构

控制器(CU)的核心是指令译码器ID和微操作信号发生器。它们以后会分析放置在主存和指令寄存器(IR)中的指令,产生微操作信号来指挥CPU中的各种功能。装置合理有序地开展各项工作。指令和操作数数据从主存/缓存通过地址总线和数据总线,以及地址寄存器MAR和数据寄存器MDR到达CPU。地址总线和数据总线更像是乡间小路。

1.3组合

将计算系统和控制系统组装在一起构成一个功能齐全的CPU,两部分之间的数据传输通过CPU内部总线进行。

看似复杂的结构组成图,实际上可以按照功能分为四大块。

2. 指令执行过程

2.1 指令周期

CPU中的时间单位主要包括这三种: 1)时钟周期,又称振荡周期,由CPU中的振荡电路产生,常定义为时钟脉冲频率的倒数,即序列中的最小时间单位; 2)机器周期,又称CPU周期。在计算机中,为了便于管理,往往将一条指令的执行过程分为几个阶段(如取指、译码、执行等),每个阶段完成一个基本操作。完成一个基本操作所需的时间称为一个机器周期。一般来说,一个机器周期由几个时钟周期组成; 3)指令周期,CPU每取指执行一条指令,都要完成一系列操作,这一系列操作所需要的时间通常称为一个指令周期。换句话说,一个指令周期是获取一条指令并执行它所花费的时间。由于每条指令的运算功能不同,因此每条指令的指令周期也不同。例如,加法指令的指令周期不同于乘法指令的指令周期。

每条指令的执行过程按照下图所示的流程图进行。计算机通过4个触发器的状态(取EF、间接地址IND、执行EX、中断INT)判断指令进行了哪一步。

2.2 指令数据流

在指令获取、间接寻址、执行和中断期间数据如何在 CPU 中流动。

取周期

取值循环的主要任务是从内存中取指令,主要过程是:

step1:将当前指令地址送入内存的地址寄存器MAR,即(PC)->MAR;

Step2:CU发出控制信号,通过控制总线传给主存,这里是读信号,即1->R;

Step3:将MAR指向的主存中的内容通过数据总线发送给MDR,即M(MAR)->MDR;

step4:将MDR的内容发送到指令寄存器IR,即(MDR)->IR;

step5:CU发出控制信号,组成下一条指令的地址,即(PC)1->PC。

间接循环

间接循环的主要任务是获取操作数(数据)的有效地址EA。 EA的获取是根据寻址特性操作正式地址完成的。以间接地址为例,数据流为:

Step1:将指令的地址码送入MAR,即Ad(IR)->MAR;

Step2:CU发送控制信号,启动内存读操作(R),即1->R;

Step3:将MAR指向的主存中的内容(EA)通过数据总线发送给MDR,即M(MAR)->MDR;

Step4:发送有效地址(EA)到指令的地址码域,即(MDR)->Ad(IR)。

执行周期

执行周期根据IR中指令字的操作码和操作数,通过运算器进行相关运算,产生执行结果,没有统一的数据流向。

中断周期

中断周期的主要任务是暂停当前任务,完成其他任务。暂停之前,需要保存断点。一般用栈(SP存放栈顶地址)来保存断点。具体过程如下:

Step1:控制器将SP减1(准备入栈),将修改后的地址发送给MAR,即(SP)-1->SP,(SP)->MAR;

step2:CU发送控制信号,启动内存写操作(W),即1->W;

Step3:将断点(PC的内容)通过MDR写入SP指向的地址;

Step4:CU控制向PC发送中断服务程序的入口地址,开始执行中断程序。

2.3 指令执行方案

方案一:单指令周期,所有指令以相同的执行时间完成,取最大值;

方案二:多个指令周期,不同的指令,选择不同的执行时间;

方案三:流水线方案,让尽可能多的指令并行执行;

3.数据通路的作用和基本结构

CPU功能的实现是通过运行指令来实现的,而指令运行过程的本质是各个部件(运算单元、寄存器等)之间的数据传输,数据通路是指数据传输的路径功能组件之间。如下图所示,总线方式用于介绍CPU运行时的数据通路(以取指周期为例)。

一个取指周期可以分解为若干个微操作,每个微操作的本质是数据的流动。数据流的背后是一系列由on/off控制的控制信号(即微操作是通过控制信号触发实现的)。

数据通路的基本结构分为两类: 1)CPU内部总线方式(上面介绍过),优点是电路布局简单,缺点是数据流转过程有冲突,以及效率相对较低。 ;2) 专用数据路径模式,优点是设备之间有专用路径,不存在冲突,速度块;缺点是电路布局复杂。

四、控制器的作用及工作原理

程序运行时,将高级语言编写的代码编译成一行0/1的二进制代码(指令)装入主存,每条指令可分解为4个机器周期(取指)周期、地址间周期、执行周期和中断周期),每个机器周期又可以分为若干个微操作(数据流),而在这些微操作开启的背后是一系列控制的on/off控制信号,控制器是对这些控制信号进行集中管理的组件。

控制器的作用: 1)取指令; 2)分析指令; 3)产生控制信号。实现相关功能主要有3个组成部分: 1)程序计数器PC,用于指示当前要执行的指令在主存中的位置; 2)指令寄存器IR,用于存放要执行的指令,对指令进行解析,将指令的操作代码部分提供给控制单元; 3)控制单元CU也是控制器的核心。根据指令操作码的要求、集成节拍发生器提供的时序、机器周期触发器提供的周期标志和各执行单元的反馈信号,输出一组控制指令(微指令),集中控制控制信号,指导微操作的执行。

以上介绍了CPU控制器的功能、结构组成和工作机制。可见控制单元CU是控制器的核心。该核心部件的功能实现有两种实现思路: 1)硬布线思路,基于硬件电路实现; 2)微程序思想是基于软件微指令的实现。这已经是CU设计层面的内容了。下面笔者只讲解简单的原理,不做详细展开。

4.1 硬接线(硬件思维)

CU上面抽象为一个黑盒子,它的输入分为4部分(时序信号、命令信号、周期标志、反馈信号),输出是一组控制信号,如下图所示,思路硬接线是通过逻辑电路建立输入信号和输出信号之间的连接的一般过程是先建立输出变量和输入变量之间的逻辑表达式,然后利用数字电路的知识实现相应的逻辑表达式.

硬布线的实现过程是纯硬件控制,优点是响应速度快,缺点是设计和实现过程比较复杂,硬件实现的扩展性比较差。它适用于RISC指令系统,因为指令系统中的指令比较简单,在电路中易于实现。

4.2 微程序(软件思路)

在计算机系统层面,软件实现等同于硬件实现。控制单元CU的输入信号和输出信号的本质是一组0/1编码指令。映射关系,并存储在专用内存(控制内存CM)中,通过内存访问运行提取控制信号代码,实现微操作。结构示意图如下所示。

工作时,CU根据编码输入信号,通过微地址形成部分转换出对应控制信号的编码地址,访问CM提取对应控制信号的编码,发送给各控制信号(微指令),执行相应的微操作,结合微操作形成命令控制。这个过程与访问内存非常相似,所以很多组件和进程都在“访问内存”的学名上加上了“微”字。微程序控制器的优点是设计和实现比较简单,可扩展性好。缺点是微指令的执行需要访问内存,速度比较慢。适用于CISC系统,因为指令系统中的指令比较复杂,使用微操作指令很容易。完成。

5.指令流水线

与顺序执行方式相比,流水线方式可以大大缩短程序的总执行时间。

5.1 理想状态

理想情况下,每个阶段花费的时间相同,每个阶段结束后可以立即进入下一阶段。这时候只要简单的按照流水线的概念进行排列,就可以大大提高指令运行的效率。

流水线的两种表示方法: 1)指令执行过程图,主要用于分析指令执行过程; 2)时空图,主要用于分析管道的性能。

评价流水线的三个性能指标: 1)吞吐率,指单位时间内流水线完成的任务数; 2)加速比,完成同一批任务,不使用流水线所花费的时间与使用流水线所花费时间的比值; 3)效率,流水线设备利用率。

5.2 非理想状态

实际情况是指令批处理过程中会出现各种冲突,影响流水线的运行效率。影响流水线的主要因素分为三类:

结构相关(资源冲突),即多条指令同时竞争同一个资源造成的冲突;

数据关联(data conflict),在程序中,有一种情况是必须先执行完上一条指令才能执行下一条指令,即两条指令的数据关联;

控制相关(control conflict),当流水线遇到传输指令和其他改变PC值导致中断的指令时,就会引起控制相关。

6.总结

本节详细介绍了CPU的结构组成、运行机制和数据流向,介绍了CPU的核心,介绍了控制器的功能、结构组成、运行机制和两种实现策略。最后介绍了基于流水线的技术。 CPU指令的高效运行策略。

总线是计算机系统中的“高速公路”,为计算机系统中不同硬件之间的“通信”提供公共通道,协调它们之间的“数据流”,使其始终有条不紊地进行。本章展开三个方面: 1)概述,简要介绍总线的基本概念,按不同标准分类,4种典型结构; 2)总线仲裁与传输,重点解决三种类型的仲裁,解决多设备争用总线的问题 3)总线标准,由于传输速度要求的发展和应用场景的不同,出现了种类繁多的总线标准被形成。

1 概述

1.1 基本概念

总线是一组可以由多个组件分时共享的公共信息传输线。就像公共交通中的高速公路。总线的出现大大简化了不同设备之间的数据传输线路。

母线的特性: 1)机械特性、尺寸、形状、引脚数及排列顺序; 2)电气特性、传输方向和有效电平范围; 3)功能特性,每条传输线的功能(地址、数据、控制); 4)时间特性,信号的时序关系。

1.2 总线的分类和经典结构

1、按数据传输格式分类

按数据传输的格式分类,可分为串行总线和并行总线: 1)串行总线就像一条单行道,数据只能排队,一个接一个地按顺序传输。优点是成本低,适合远距离传输。 ,缺点是在发送和接收过程中需要提前对数据进行拆装; 2)并行总线就像双向六通道,数据不需要排队,并行发送数据。简单,缺点是信号线多,远距离传输成本高。

2、按总线功能分类

按总线的功能分类,可分为三种类型:

片上总线

CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线;

系统总线

主存系统总线按传输信息的内容可分为三种: 1)数据总线,用于在各功能部件的地址间传输数据。它是一条双向传输线。位数与机器字长和存储字长有关。 ;2) 地址总线用于指出数据总线上源数据或目的数据所在的主存单元或I/O端口地址。是单向传输线,地址总线的位数与主存地址空间的大小有关; 3)控制总线传递控制信息,包括CPU发送的控制命令和主存(或外设)返回给CPU的反馈信号。

按结构,系统总线可分为: 1)单总线; 2)双总线; 3)三总线; 4) 四总线。计算机系统结构越复杂,相应的总线结构也就越复杂。

通讯总线

用于计算机系统之间或计算机系统与其他系统(电信设备、测试设备等)之间的信息传输。

通过时间控制

分为同步总线和异步总线。

1.3 性能指标

总线的性能指标主要包括: 1)总线周期,总线运行一次(包括应用阶段、寻址阶段、传输阶段)所需的时间,通常由若干个总线时钟周期组成; 2)总线时钟周期,即机器时钟周期,由时钟系统决定; 3)总线的工作频率,总线周期的倒数,实际上是指一秒内可以传输多少次数据; 4)总线的时钟频率,即机器时钟频率; 5)总线宽度,通常是数据总线的根号,决定了可以同时传输的位数;

6) 总线带宽

总线的数据传输速率,总线带宽=总线工作频率*总线宽度(bit/s)。

7)总线复用

在不同时间承载不同类型信息的信号线(例如地址总线与数据总线的复用)。

8) 信号线数量

地址总线、数据总线和控制总线的总数就是信号线的数量。

2、总线仲裁与传输

2.1 仲裁

如何解决多个设备争用总线的问题?这时候就需要引入仲裁策略,可以分为两类:集中式仲裁和分布式仲裁。中心化仲裁有三种方式: 1)链式查询方式; 2)柜台查询方式; 3)独立请求模式。

链式查询

总线控制单元收到总线请求BR后,按照远近链方式通过各个设备接口检查请求状态。在经过设备接口0时,发现没有触发BR,然后依次查看设备接口1。当它发现 BR 被触发时,它会向它发送一个总线许可。 BG触发总线忙BS,设备1接口获得总线控制权。

柜台查询方式

总线控制器收到总线请求BR后,判断总线处于空闲状态,计数器开始计数,并将数值通过设备地址发送到各个设备接口。当请求设备的接口地址与该值一致时,设备获得总线控制权,计数器停止计数和查询,触发总是先忙BS。

独立请求方式

每个有需求的设备向总线控制器发送总线请求BR,总线控制器按照一定的优先级顺序向相应设备发送请求许可BG,并触发总线忙BS,相应设备获得总线控制权.

三种中心化仲裁方式的比较:

分布式仲裁:当设备被总线请求时,它们各自将自己唯一的仲裁号发送到共享仲裁总线,每个仲裁号相互PK,优先级最高的可以获得总线的许可。这种仲裁方式的特点是:不需要中央仲裁器,每个潜在的主控模块都有自己的仲裁器和仲裁号,多个仲裁器竞争总线的使用权。

2.2 传输过程

一对占用总线的设备如何进行数据传输?总线周期的四个阶段(总线传输过程):

在申请分配阶段,使用总线的主模块提出申请,总线仲裁决定授予某个申请者在下一个传输周期使用总线的权利。这个阶段又可以细分为传输请求和总线仲裁两个阶段;

在寻址阶段,获得使用权的主模块通过总线发送本次要访问的从模块的地址和相关命令,并启动参与本次传输的从模块;

在传输阶段,主模块和从模块交换数据,可以单向或双向进行数据传输;

在结束阶段,主模块的相关信息从系统总线中退出,放弃总线使用权。

3、总线标准

总线标准是用于互连计算机内不同模块的规范。根据总线在计算机系统中的位置,可分为: 1)系统总线; 2) 当地巴士; 3)设备总线和通信总线。

计算机硬件结构如图所示,主要硬件模块之间互连的总线标准及相关总线接口图如下所示。需要补充说明:

北桥芯片负责控制高速设备(主存、显示适配器(显卡))与CPU之间的互连。总线具有较高的传输速度,也称为系统总线。但是现在很多电脑都把北桥芯片的功能集成到了CPU中;

南桥主要负责电脑上一些低速设备(网卡、USB设备、音响、硬盘等)的互联控制;

Super I/O主要负责I/O设备的控制和计算机互联,在I/O系统中会详细介绍。

常见的总线标准及其参数总结如下。了解几种常用总线的名称、数据传输格式(并行传输、串行传输)、应用场景(连接哪些硬件模块)、总线位置(系统总线、本地总线或设备总线)很重要。

4.总结

总线是计算机中一个分时的公共信息通道,就像高速公路一样。优点是大大简化了计算机系统的线路规模。引入的问题是总线使用权的分配,因此着重引入了“仲裁”机制和总线。 “转移过程”。最后介绍了一些常用的总线标准、主要参数和应用场合。

“I/O系统”是计算机核心部分(CPU、主存)与外部设备之间的“中转站”,起着数据中转、传递协调的作用。本章主要从四个方面展开: 1)基本概念,介绍I/O系统的组成和I/O控制的方式; 2)外接设备,各种外接设备的简单介绍; 3) I/O接口作为I/O系统中最重要的部分,介绍其主要功能和一般结构组成,以及内部端口的寻址方法; 4)I/O方法,着重介绍了三种I/O控制方法(程序查询方法、程序中断方法和DMA方法),并解释了各种方法的运行机制和优缺点。

一、基本概念

1.1I/O系统组成

一般来说,I/O系统由两部分组成:I/O硬件和I/O软件。 1)I/O硬件:包括外部设备、I/O接口、I/O总线; 2)I/O软件:包括驱动程序、用户程序、管理程序、升级补丁等。I/O命令和通道命令通常用于主机和I/O设备之间的信息交换。

1)输入输出命令

命令码是CPU指令的一部分,与普通的指令格式略有不同。操作码指定 CPU 将对 I/O 设备执行的操作,命令代码指定 I/O 接口将对设备执行的操作。

2)通道命令

通道可以识别的指令,通道程序是预先编译好的,放在主存中。在有通道的计算机中,CPU执行I/O指令向通道发出指令,通道代替CPU对I/O设备执行一系列通道指令。管理。

I/O接口:又称I/O控制器(device controller,一种芯片,通常集成在主板上),负责协调主机与外部设备之间的数据传输。它的作用不仅仅是一个接口,更是主机与外设之间的调度。

1.2I/O控制方式

I/O控制方式主要分为4种:

程序查询方式:CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“完成”后,从数据寄存器中取出输出数据;

程序中断方式:等待I键盘/O时,CPU可以先执行其他程序,键盘I/O完成后,I/O控制器向CPU发送中断请求,CPU响应中断请求并带走输入数据;

DMA(direct memory access)控制方式:在主存和I/O设备之间增加一条直接数据通路(DMA总线),DMA控制器自动控制磁盘和主存之间的数据“读/写”,在向 CPU 发送中断请求之前,没有完成整个 Block 数据的读写;

通道控制方式:通道根据CPU的要求执行主存中的通道程序,控制I/O设备完成一系列任务,并在指定任务完成后向CPU发送中断请求.

2.外部设备

外部计算机系统的外围设备主要分为: 1)输入/输出设备; 2)外部存储设备。种类繁多,本节不做详细介绍。

输入/输出设备

输入设备:键盘、鼠标。

输出设备:显示器(主要参数:屏幕尺寸、分辨率、灰度、刷新率、显存容量及借贷)、打印机。

外部存储设备

磁盘(存储机制、结构组成、性能参数、内存访问过程)、CD-ROM和固态硬盘(SSD)。

<