【计组】计算机的基本概念、组成结构
这学期学校开了《计算机组成原理》这门课,作为四大金刚之一,内容还是比较难理解的,很多知识点都需要去反复记忆,所以我结合自己的理解将大部分内容整理出来,才疏学浅,如有错误,欢迎大家指正!
以下为本节目录:
1 计算机的基本概念
1.1 计算机的软硬件概念 1.2 计算机的分类
2 计算机的诞生与发展
2.1 冯 · 诺依曼体系 2.2 计算机发展历程 2.3 未来的发展趋势
3 计算机系统的组织
3.1 硬件系统 3.2 软件系统 3.3 计算机系统层次结构 3.4 软件与硬件的逻辑等价性
4 计算机系统的性能指标
计算机是 20 世纪人类最伟大的发明之一,是一种能够存储程序,通过执行程序指令,自动、高速、精确地对各种信息进行复杂运算处理,并输出运算结果的一种电子设备。
谁也不曾想到,当初只是当作军事计算工具应用的电子计算机,在半个世纪中竟然会成为改变社会结构,乃至促进人们的工作和生活方式发生惊人变化的宠儿。
1 计算机的基本概念
1.1 计算机的软硬件概念
计算机系统由**“硬件”和“软件”两部分组成**。
硬件是指看得见摸得着的各种电子元器件。如主机、键盘、鼠标等。 软件看不见摸不着,但在逻辑上,我们确实可以感知到它的存在,它由人们事先编制的具有某种功能的程序组成。比如操作系统、编程语言等。
计算机的软件通常又分为:系统软件和应用软件。
系统软件:又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度。它包括:操作系统、语言处理程序、数据库管理系统、网络软件、服务程序等。 应用软件:又称为应用程序,它是用户根据需要事先编制的程序。比如 QQ、微信等。
1.2 计算机的分类
计算机的种类很多,从不同的角度看,有不同的分类。
按照计算机的处理信息的方式,可以分为数字计算机和模拟计算机。
数字计算机:通过信号的两种不同状态(1 和 0)来表示信息,可以方便地对数字信号进行算术和逻辑运算,具有速度快、精度高、便于存储等优点。通常讲的计算机一般是指数字计算机。 模拟计算机:一般只能处理模拟信号,如连续变化地电压、电流和温度等。这类计算机应用邻域有限,通用性不强。 按照计算机通用性地差异,计算机可以分为专用计算机和通用计算机。
专用计算机:专门为某一问题而设计的计算机。功能比较单一,对应用环境地适应性很差。例如计算导弹弹道的专用计算机。 通用计算机:各行业和各种环境都能使用的计算机,一般具有较高的运算速度、较大的内存容量。我们平常使用的个人台式计算机都属于通用计算机。 按照计算机系统的规模和处理能力,通用计算机可以分为以下几类:
微型机 小型机 大型机 超级计算机
2 计算机的诞生与发展
2.1 冯 · 诺依曼体系
1945 年,被称为“计算机之父”的美籍匈牙利科学家冯 · 诺依曼在研究 EDVAC 时提出了“存储程序”的概念。以此概念为基础的各类计算机称为冯 · 诺依曼机。它的特点可以归纳如下:
计算机的结构应由五大部分组成:运算器、控制器、存储器、输入设备、输出设备。 指令和数据以同等地位存放在存储器内,并可按地址寻访。 指令和数据均用二进制数表示。 指令由操作码和地址码组成,操作码用来表示操作码的性质,地址码用来表示操作数在存储器中的位置。 指令在存储器内按顺序存放。
典型的冯 · 诺依曼计算机是以运算器为中心的,如下图所示。
现代的计算机已转化为以存储器为中心,如下图所示。
图中各部件的功能如下:
运算器用来完成算术运算和逻辑运算,并将运算结果暂时存放在运算器内。 存储器用来存放数据和程序。 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。 输出设备可将机器运算结果转换为人们熟悉的信息形式,常见的有打印机输出、显示器输出等。
计算机的五大部件在控制器的统一指挥下,有条不紊地自动工作。
由于运算器和控制器在逻辑关系和电路结构联系上十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往集成在同一芯片上。因此,通常将它们合起来统称为中央处理器(Central Processing Unit,CPU)。
把输入设备与输出设备简称为 I/O 设备(Input/Output Equipment)。
这样,现代计算机可认为由三大部分组成:CPU、I/O 设备及主存储器(Main Memory,MM),如下图所示。
CPU 与主存储器合起来又可称为主机,I/O设备又可称为外部设备。
2.2 计算机发展历程
第一代,电子管计算机(1946 - 1957 年) 第二代,晶体管计算机(1958 - 1964 年) 第三代,中小规模集成电路计算机(1965 - 1971 年) 第四代,大规模和超大规模集成电路计算机(1971 年至今)
2.3 未来的发展趋势
计算机的发展趋势可以用五个字概括:巨、微、多、网、智。
巨型化 微型化 多媒体化 网络化 智能化
3 计算机系统的组织
3.1 硬件系统
在冯 · 诺依曼体系中,计算机硬件系统是由运算器、控制器、存储器、输入设备和输出设备五大部件组成的。
随着计算机技术的发展,计算机硬件系统的组织结构发生了许多重大的变化,如运算器和控制器已组合成一个整体,称为中央处理器(Central Processing Unit,CPU)。
存储器已成为多级存储器体系,包含主存、高速缓存和外存三个层次。
下图是一种计算机硬件系统的简化结构模型示意图,其中包含 CPU、存储器、输入/输出(I/O)设备和接口等部件,各部件之间通过系统总线相连接。
(1)CPU
CPU 是计算机硬件系统的核心部件,由运算部件、寄存器组和控制器组成,它们通过 CPU 内部的总线相互交换信息。
运算器
功能:完成算术运算(定点数运算、浮点数运算)和逻辑运算。
基本组成:
主要由 ALU(算术逻辑单元)构成,执行算术、逻辑运算以及移位循环等操作,是 CPU 功能的主要执行操作。 ALU 以累加器为核心,具有多种运算功能。 运算的位数越多,计算精度就越高,但器件也更复杂。 运算器的数据宽度一般是:8 位、16 位、32 位或 64 位。 寄存器组用来存放数据信息和控制信息。
控制器
功能:产生控制命令(微命令),控制全机操作。
基本组成:
(2)存储器
功能:存储数据和数字化后的程序。
不论是数据,还是程序,存储器存储的全是用 0 或 1 表示的二进制代码。
存储器有以下几个基本概念:
存储单元:在存储器中保存一个 n 位二进制数的 n 个存储电路,组成一个存储单元。
存储元件:能够存放一位二进制代码 0 或 1 的器件。存储器由许多存储单元组成,每个存储单元又包含若干个存储元件。
存储字:一个存储单元可以存储一串二进制代码,称这串二进制代码为一个存储字。
存储字长:存储字(也就是存储单元存储的二进制代码)的位数称为存储字长。
地址:存储器由许多存储单元组成,每个存储单元的编号,称为地址。
存储容量:存储器所有存储单元的总数。
存储容量越大,能存储的信息越多,常用的单位有 “KB、MB、GB、TB、PB” 等。
这几个概念比较晦涩,举个栗子来帮助理解:
我们可以把存储器看作一栋大楼,那么每个存储单元就可以看作大楼中的每个房间,每个存储元件可以看作房间中的一张床位,床位有人值为 1,无人为 0,床位数相当于存储字长。为了方便寻找某一个房间,每个房间需要有一个房间编号,这个房间编号就相当于地址。
存储器用来存储计算机中的所有信息,一个存储器无法同时满足存储容量大、存取速度快的需求,因此常将存储器分为主存、外存、缓存三级存储体系。
主存用来存放 CPU 需要使用的程序和数据。主存的每个存储单元都有固定的地址,CPU 可以按地址直接访问他们。这样就要求主存的存取速度很快,但目前由于技术限制,都只有几个 G。通常将 CPU 和主存合称为主机,由于主存在在主机之内,所以主存又叫做内存。 外存位于主机之外,用来存放 CPU 暂不使用的程序和数据。CPU 并不直接按地址访问它们,而是按文件名将它们从外存调入主存。因此外存的容量很大,但存取速度比主存慢,如磁盘、固态硬盘和 U 盘都是常用的外存。 高速缓存(Cache)是为了提高 CPU 的访存速度,它设置在 CPU 和主存之间,是一个存取速度很快的存储器,不过容量较小,用来存放 CPU 当前正在使用的程序和数据。
(3)输入/输出设备
输入设备将各种形式的外部信息转换为计算机能够识别的代码形式送入主机。例如键盘、鼠标等。
输出设备将计算机处理的结果转换为人们所能识别的形式(字符、图像、声音)输出。例如显示器、打印机等。
输入设备和输出设备都与主机传输数据,所以将它俩合称为输入/输出(Input/Output,I/O)设备。按照逻辑划分,它们位于主机之外,我们又称它为外设。我们经常所说的外设就是它们了。
(4)总线
总线是一组能为多个部件分时共享的信息传输线。
根据传送信息不同,可分三类:
传送各种数据信息的数据总线(Data Bus) 传送各种地址信息的地址总线(Address Bus) 传送各种控制信号的控制总线(Control Bus)
(5)接口
外设的种类、数量是多变的,为了将标准的系统总线与各类外设连接,需要在系统总线与 I/O 设备之间设置一些接口部件,具有缓冲、转换、连接等功能,这些部件就被称为接口。
3.2 软件系统
软件类别:系统软件和应用软件。
系统软件:又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度。它包括:操作系统、语言处理程序、数据库管理系统、网络软件、服务程序等。
应用软件:又称为应用程序,它是用户根据需要事先编制的程序。比如 QQ、微信等。
3.3 计算机系统层次结构
早期计算机只有机器语言(用 0、1 代码表示的语言),程序员必须用机器语言来编写程序。这样就要求程序员对他们计算机硬件和指令系统非常熟悉,编程难度相当大。不过编写的程序计算机可以直接运行。直接执行机器语言的机器称为实际机器 M1。
20 世纪 50 年代开始出现了符号式的程序设计语言,也就是汇编语言。它用符号 ADD、SUB 等分别来表示加法、减法,并且用符号来表示指令和数据所在存储单元的地址。
相比机器语言,编程难度有所降低,但是没有机器能够直接识别汇编语言,每台机器都需要编写一套对应指令的汇编语言,这样就导致程序员这对程序员来说简直是天灾。
将具有翻译功能的汇编程序的计算机看做 M2,M2 是在 M1 之上,因为需要汇编程序将汇编语言翻译成对应的机器语言。
源程序进入机器 M1 运行前,必须先将高级语言程序翻译成汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序;也可以将高级语言程序直接翻译成机器语言程序。
这些工作都是由虚拟机 M3 来完成的,对程序员来说,它们不需要知道这个翻译过程,因此降低了编程难度。
由此可得出具有三级层级的计算机系统。
将高级语言翻译成机器语言的软件称为翻译程序。翻译程序分为两种:
编译程序:将用户编写的高级语言程序(源程序)的全部语句一次全部翻译称机器语言,然后执行此程序。 解释程序:将源程序的每一条语句翻译成对应于机器语言的一条语句,并且执行这条语句,重复这个步骤,直到翻译完这个程序。
由于软件的发展,在实际机器 M1 的基础上向上延伸构成了各级虚拟机器。那么,机器 M1 也可以向下延申形成下一级的微程序机器 M0,机器 M0 是将机器 M1 中的每一条机器指令翻译成一组微指令,构成一个微程序。
机器 M0 也是实际机器,为了区别于 M1,通常将机器 M1 称为传统机器,将 M0 称为微程序机器。这样就可以认为计算机系统具有四级层次结构。
在上述四级层次结构的系统中,实际上在实际机器 M1 和虚拟机器 M2 之间还有一级虚拟机器,它是由操作系统构成的。
3.4 软件与硬件的逻辑等价性
软件的特点
易于实现各种逻辑和运算功能,但是常受到速度指标和软件容量的制约。
硬件的特点
可以高速实现逻辑和运算功能,但是难以实现复杂功能或计算,受到控制复杂性指标的制约。
计算机中的软件,理论上都可以 “固化” 或 “硬件化”,以提高执行速度。
4 计算机系统的性能指标
1. 基本字长
算术运算可以分为定点运算和浮点运算两大类。基本字长就是指处理器参加一次定点运算的操作数位数。
一次数据操作的基本位数。 它会影响计算的精度、指令的功能。
一般 4 位、8 位、16 位、32 位、64 位等。
2. 外频
外频也叫外部频率或基频,有时也称为系统时钟频率,经过倍频系数放大,用作各部件的工作频率,如 CPU、内存、各类总线等。
3. 常用的 CPU 性能指标
单位换算的简化关系:1K = 1000,1M = 1000K,1G = 1000M
(1)CPU 主频 = 外频 X 倍频系数
CPU 的主频是 CPU 内核的工作频率,有时也叫 CPU 的时钟频率。通常说的某款 CPU 多少 GHZ,说的就是它的主频。提高上述公式中的任一指标,都可以提高 CPU 的主频,也就是超频。
CPU 主频的高低是决定计算机工作速度的重要因素,不过两者之间没有正比关系。
(2)CPU 执行某种运算总时间 = CPU 时钟周期数 / 主频 = (指令条数 X CPI) / 主频
在 CPU 时钟频率中,相邻两个时钟脉冲之间的间隔为一个时钟周期,它与 CPU 完成一步微操作所需的时间是对应的。
下面详细说一下时钟频率(主频)与时钟周期的关系:
通过 CPU 的工作方式来看,CPU 分为两种控制方式:同步控制、异步控制。为了解时钟频率与时钟周期的关系,我们先看同步控制 CPU 的工作方式,异步控制方式在接下来的章节会提到。
既然是同步控制 CPU,那就需要一个同步机制,不然你做一样,我做一样,没有统一协调,岂不乱套?
在计算机中,通过时序发生器来完成这项工作,它由一个晶体振荡器和一组计数倍频逻辑组成。它不停给芯片其他部件发送一个连续的脉冲信号。每一次脉冲到来,芯片内的晶体管就改变一次状态,让整个芯片完成一定任务。统一指挥,完成任务。
电脑中的各种部件就是在时序发生器发送的特定时钟频率下有条不紊地进行工作的。
如图,时序发生器发出的脉冲信号做出周期变化的最短时间称之为振荡周期,也成为 CPU 时钟周期。正如前面所说,相邻两个时钟脉冲之间的间隔为一个时钟周期。它是计算机中最基本的、最小的时间单位。
一个震荡周期内,晶体管只会改变一次状态。那么,更小的时钟周期就意味着更高的工作频率。
一秒(1s)内,震荡周期的个数称为时钟频率,称为主频。
我们把主频看作 f,时钟周期看作 T,可以得出 f = 1 / T。
(3)IPS = 指令条数 / 执行时间 X 106 = 主频 / CPI
CPU 平均每秒执行指令的数量,IPS(Instructions Per Second),常用更大的单位 MIPS 或 GIPS 表示。
(4)CPI = 总时钟周期数 / 总指令数
CPU 执行程序时,每条指令所需的平均时钟周期数,CPI(Clock cycles Per Instruction)。
(5)FLOPS = (浮点运算的次数 / 执行时间)/ 106
CPU 每秒能够完成的定点或者浮点运算次数(非指令数)。高性能计算机主要进行浮点向量运算,一般用每秒能完成的浮点运算次数(Floating-point Operation Per Second)。比如,天河二号,其实测速度:33.86PFLOPS。
(6)CPU 的功耗 P = C X U2 X f
4. 数据通路宽度与数据传输率
(1)数据通路宽度
数据总线一次能并行传输的数据位数。数据通路宽度分为 CPU 内部和 CPU 外部两种情况:
CPU 内部数据通路宽度一般与 CPU 的基本字长相同,也等于 CPU 内总线的位宽。 CPU 外部数据通路宽度等于系统数据总线的位宽。
有的 CPU 内外的数据通路宽度一样,有的不同。
(2)数据传输率(Data Transfer Rate,DTR)
也叫比特率,指单位时间内信道的数据传输量,基本单位是 bps。也常常借用带宽(Bandwidth)一词来表示数据传输率。
数据传输率与传输信道的数据通路宽度和最大的工作频率有关,公式如下:
注意:不论何种设备,理解带宽概念时,只需要紧紧把握住单位时间内传输的数据量这一本质特性即可。
计算 PCI-E 总线的带宽时,一般还要考虑编码方式、单双工模式和通道路数等。
结合这个小节的内容,来举个栗子:
假设该 I/O 程序由 2000 条指令构成,CPU 每次执行该程序可并行输出 4KB 数据。CPU 主频 3.2GHz,求 I/O 带宽。
解:
平均 CPI = 15 X 40% + 20 X 30% + 15 X 20% + 10 X 10% = 16
CPU 执行这个包含 2000 条指令的程序,所需的时钟周期总数 = 指令数 X 平均每条指令所需的时钟周期
程序的时钟周期数 T = 2000 X 16 = 32000 = 32K 个
CPU 主频 = 3.2GHz,表明 1 秒钟能产生 3.2G 个时钟周期,因此每秒钟此程序可被执行次数 = 每秒钟的时钟周期总数 / 程序完整执行一次所需的时钟周期数
该程序每秒执行次数 = f / T = 3.2G / 32K = 105 次
I/O 带宽指的是单位时间内传输的总数据量,总数据量 = 程序被执行的次数 X 每次输出的数据量
I/O 带宽 = (105 X 4 KB)/ 秒 = 400 MBps(兆字节/秒)
5. 存储器容量
存储器分为内存(主存)和外存(辅存)。
(1)内存(主存)
存放 CPU 当前需要处理的数据和需要执行的程序。主存容量越大,可以减少 CPU 反复读取主存数据的次数和等待时间。
主存的容量取决于主存的编址单元数和每个编址单元的位数(宽度)。经常用字节数表示主存容量:
字节数
微型机的主存多按字节编址,每个编址单元含有 8 位数据。因此 1MB = 220,1K = 210。现在家用电脑主存容量可达到 8GB(1G = 230)以上。
(2)外存(辅存)容量
外部存储器能够存储的最大数据量,基本单位一般用 B、MB、GB 或者 TB 等来表示常用的外存有硬盘、U 盘等。
计算机中的软件资源和数据,如操作系统、编译程序、数据库管理系统等,它们没有运行的部分都是保存在外存中,需要时再载入内存。
注意:外村容量取决于存储器自身,与地址总线的位数无关。
另注: 本文在开源项目:github.com/MujieJava/JavaStudy 中已收录,包含计算机基础技术文章、资源干货等,资源持续更新中...
我是木节,觉得这篇文章对你有帮助的话,可以来个点赞 + 在看,下期再见!