【计算机组成原理】第一章:计算机系统概述

发布于:2024-05-22 ⋅ 阅读:(256) ⋅ 点赞:(0)

本专栏内容为:计算机组成原理 通过本专栏的深入学习,你可以了解并掌握计算机组成原理。

💓博主csdn个人主页:小小unicorn
⏩专栏分类:计算机组成原理
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

前言知识

在正式学习计算机组成原理之前,我们先了解一下关于计算机组成原理的前言知识。

首先我们思考一下,一个计算机或者一个手机是如何产生的。

在这里插入图片描述
在我们这个信息化时代,不管是计算机还是手机,它都包含硬件以及软件部分。

而这个硬件部分就是我们所说的计算机组成原理。

我们用低/高电平分别表示0/1

而计算机硬件唯一能识别的数据为二进制数据。

那么什么是低电平?什么是高电平?
在这里插入图片描述
打火机大家都不陌生了,但是相信有很多人都尝试拆卸过打火机,其中有一个黑色的这个小东西,将我们的手指头按住那个线的末端,按一下打火按钮,手里会感觉到麻麻到效果,这就是低电平。

那什么是高电平呢?
在这里插入图片描述

皮卡丘大家都不陌生,我们让皮卡丘放出10w伏特的电压,而这个就是高电压。

接下来,我们就可以模拟一下这个传输数据的过程:
我们让打火机里面的黑色部件表示低电平,让皮卡丘表示高电压。
在这里插入图片描述
我们让他们都连接到我们的一只手中:
在这里插入图片描述
那么根据低电平和高电平所表示的二进制数据,那么对于上图我们通过电信号所传输的数据就是01101

介绍到这,基本上我们的前言知识就介绍差不多了,接下来有这么几个问题:

  1. 数字,文字以及图像是如何用二进制表示的呢?
  2. CPU如何对二进制数进行加减乘除?
  3. 如何存储这些二进制数的?
  4. 如何从内存中取出这些想要的数据
  5. CPU如何识别和执行我们所写的程序呢?

这些问题会在我们后续的学习课程中一一解答。

计算机的发展历程

在介绍计算机的发展历程之前,我们首先要知道什么是计算机系统?

计算机系统=硬件+软件

在这里插入图片描述
硬件部分:就是我们计算机的实体,例如主机,外设
软件部分:就是我们所知道的由具有各类特殊功能组成的程序

而我们平常所说的判断一个计算机性能的好坏就是取决于“软” “硬”件功能的组合

软件又可以具体划分为两部分:系统软件和应用软件。

在这里插入图片描述

接下来我们谈谈硬件的发展:

硬件的发展

世界上第一台通用计算机“ENIAC”(埃尼阿克)于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J.PresperEckert)。

美国国防部用它来进行弹道计算。它是一个庞然大物,用了18000个电子管,占地170平方米,重达30吨,耗电功率约150千瓦,每秒钟可进行5000次运算,这在现在看来微不足道,但在当时却是破天荒的。 ENIAC以电子管作为元器件,所以又被称为电子管计算机,是计算机的第一代。电子管计算机由于使用的电子管体积很大,耗电量大,易发热,因而工作的时间不能太长。
在这里插入图片描述
这台计算机的问世其实为军事而准备的。它所用的逻辑元件为电子管

1.计算机的四代变化

从1946年世界上第一台电子数字计算机(Electronic Numerical Integrator And Computer,
ENLAC
)问世以来,计算机的发展已经经历了四代。
在这里插入图片描述

1)第一代计算机(1946—1957年)——电子管时代。特点:逻辑元件采用电子管;使用机器语言进行编程;主存储器用延迟线或磁鼓存储信息,容量极小;体积庞大,成本高;
运算速度较低,一般只有几千次到几万次每秒。

在最之前,我们程序员使用的是机器语言编程,在纸带机中,线左侧和右侧依次打孔,代表0和1,但是突然此时飞过来一只虫子,那么此时我们的程序就会崩溃,运行出错,也就是说程序出现缺陷,当时就以bug来成为我们的程序缺陷,bug也就是小虫子的意思,至今我们也来用bug来代表我们的程序出现缺陷了。
在这里插入图片描述

2)第二代计算机(1958—1964年)——晶体管时代。特点:逻辑元件采用晶体管;运算速
度提高到几万次到几十万次每秒;主存储器使用磁芯存储器;计算机软件也得到了发展,
开始出现了高级语言及其编译程序,有了操作系统的雏形。

3)第三代计算机(1965—1971年)——中小规模集成电路时代。特点:逻辑元件采用中小
规模集成电路;半导体存储器开始取代磁芯存储器;
高级语言发展迅速,操作系统也进一步发展,开始有了分时操作系统。

4)第四代计算机(1972年至今)——超大规模集成电路时代。特点:逻辑元件采用大规模
集成电路和超大规模集成电路,产生了微处理器;诸如并行、流水线、高速缓存和虚拟
存储器等概念用在了这代计算机中,个人计算机(pc)开始萌芽

“微处理器”的发展就比如我们的手机芯片,在这里插入图片描述
苹果A13制造工艺为7nm,这么小的一个芯片拥有85亿个晶体管。

  1. 微处理器的发展

微型计算机的发展以微处理器技术为标志
在这里插入图片描述
这里的机器字长代表的是计算机一次整数运算所能处理的二进制位数

例如在8080这个处理器中,它一次整数运算所能处理的二进制位数为8位,而8086这个处理器中,它一次整数运算所能处理的二进制位数为16位

  1. 硬件的发展历史
    • 1947年,贝尔实验室,发明了“晶体管”
    • 1955年,肖克利在硅谷创建 肖克利实验室股份有限公司
    • 1957年,八叛徒(traitorous eight) 创立 仙童半导体公司
    • 1959年,仙童半导体公司发明“集成电路”
    • 1968年,摩尔等人离开仙童,创立 Intel
    • 1969年,仙童销售部负责人桑德斯离开仙童,创立 AMD

在这里插入图片描述
威廉肖克利的个人能力很强,但是他的管理能力“不行”,至此他的手下就都跑了,自己创立了公司。
其中摩尔离开仙童后就自己创立了公司,也就是我们现在都知道的inter,并且还发明了摩尔定律

摩尔定律
揭示了信息技术进步的速度
集成电路上可容纳的晶体管数目,约每隔18个
月便会增加一倍,整体性能也将提升一倍

在这里插入图片描述
晶体管的发展:
在这里插入图片描述

2.计算机元件的更新换代

1)摩尔定律
当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一
倍,性能也将提升一倍。也就是说,我们现在和18个月后花同样的钱买到的CPU,后者
的性能是前者的两倍。这一定律揭示了信息技术进步的速度。

2)半导体存储器的发展
1970 年,美国仙童半导体公司生产出第一个较大容量的半导体存
储器,至今,半导体存储器经历了11代:单芯片1KB、4KB、16KB、64KB、256KB、
1MB、4MB、16MB、64MB、256MB 和现在的1GB。

3)微处理器的发展
自1971年Intel公司开发出第一个微处理器Intel4004 至今,微处理器
经历了Intel 8008(8位)、Intel 8086(16位)、Intel 80386(32位)、Pentium(32位)、
PentiumI(64位)、Pentium 4(64位)、Core i7(64位)等。这里的32位、64位指的
是机器字长,是指计算机进行一次整数运算所能处理的二进制数据的位数。

软件的发展:

计算机软件技术的蓬勃发展,也为计算机系统的发展做出了很大的贡献。

计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级
语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的 FORTRAN、结构化程序
设计的 PASCAL到面向对象的 C+和适应网络环境的 Java。

与此同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系
统,如 Windows、UNIX、Linux等。
在这里插入图片描述

目前的发展形势

目前计算机的发展形势为一个"两极分化"的情况:

  1. 一极是微型计算机向更微型化、网络化、高性能、多用途方向发展;
    例如我们的智能手表,智能手机
    在这里插入图片描述

  2. 另一极是巨型机向更巨型化、超高速、并行处理、智能化方向发展
    例如我国的神威–太湖之光辉
    在这里插入图片描述
    知识回顾:
    在这里插入图片描述

计算机系统层次结构

计算机系统的组成

硬件系统和软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,是计算机系统中实际物理装置的总称。软件是指在硬件上运行的程序和相关的数据及文档。

计算机系统性能的好坏,很大程度上是由软件的效率和作用来表征的,而软件性能的发挥又
离不开硬件的支持。对某一功能来说,若其既可以用软件实现,又可以用硬件实现,则称为软/硬件在逻辑功能上是等价的。在设计计算机系统时,要进行软/硬件的功能分配。通常来说,一个功能若使用较为频繁且用硬件实现的成本较为理想,则使用硬件解决可以提高效率。

计算机硬件

早期冯诺依曼机

冯·诺依曼在研究 EDVAC机时提出了“存储程序”的概念,

**“存储程序”**的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束

**“存储程序”**的思想奠定了现代计算机的基本结构,以此概念为基础的各类计算机统称冯·诺依受机,其特点如下:

  1. 采用“存储程序”的工作方式。
  2. 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成。
  3. 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们。
  4. 指令和数据均用二进制代码表示。
  5. 指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。

“存储程序”的基本思想是:将事先编制好的程序和原始数据送入主存储器后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。

早期冯诺依曼的计算机的硬件结构如下:
在这里插入图片描述

在计算机系统中,软件和硬件在逻辑上是等效的。

例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算,也可以用软件的方式,执行多次加法运算来实现

里面我们会发现有五大部件,分别是:存储器,输入设备,运算器,控制器,输出设备。

(1)输入设备
输入设备的主要功能是将程序和数据以机器所能识别和接受的信息形式输入计算机。最常用
也最基本的输入设备是键盘,此外还有鼠标、扫描仪、摄像机等。

(2) 输出设备
输出设备的任务是将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形
式输出
。最常用、最基本的输出设备是显示器、打印机。输入输出设备(简称 VO 设备)是计算
机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。

(3) 存储器
存储器分为主存储器(也称内存储器或主存)和辅助存储器(也称外存储器或外存)。

CPU能够直接访问的存储器是主存储器。辅助存储器用于帮助主存储器记忆更多的信息,辅助存储器中的信息必须调入主存储器后,才能为CPU所访问。主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式。

主存储器的最基本组成如图1.1所示。存储体存放二进制信息,存储器地址寄存器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。 存储器数据寄存器(MDR)用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号
在这里插入图片描述
存储体由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码“0”“1”。因此存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是1B(8bit)或是字节的偶数倍。MAR 用于寻址,其位数反映最多可寻址的存储单元的个数,如 MAR 为 10 位,则最多有210=1024个存储单元,记为1K。MAR的长度与PC的长度相等。MDR 的位数通常等于存储字长,一般为字节的2 次幂的整数倍。

注意:
MAR与MDR虽然是存储器的一部分,但在现代计算机中却是存在于CPU中的;另外,
后文提到的高速缓存(Cache)也存在于CPU中。

(4)运算器
运算器是计算机的执行部件,用于进行算术运算和逻辑运算

算术运算是按算术运算规则进行的运算,如加、减、乘、除;逻辑运算包括与、或、非、异或、比较、移位等运算。

运算器的核心是算术逻辑单元(Arithmetic and Logic Unit,ALU)。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前三个寄存器是必须具备的。

运算器内还有程序状态寄存器(PSW),也称标志寄存器,用于存放ALU运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。

(5)控制器
控制器是计算机的指挥中心,由其“指挥”各部件自动协调地进行工作。控制器由程序计数
器(PC)、指令寄存器(IR)和控制单元(CU)组成。

PC用来存放当前欲执行指令的地址,具有自动加1的功能(这里的“1”指一条指令的长度),即可自动形成下一条指令的地址,它与主存储器的 MAR之间有一条直接通路。

IR 用来存放当前的指令,其内容来自主存储器的 MDR。指令中的操作码 OP(IR)送至 CU,用以分析指令并发出各种微操作命令序列;而地址码 Ad(IR)送往MAR,用以取操作数。

一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU 和主存储器共同构成主机,而除主机外的其他硬件装置(外存、I/O 设备等)统称外部设备,简称外设。

图1.2 所示为冯·诺依曼结构的模型机。CPU包含 ALU、通用寄存器组 GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器 PC、存储器地址寄存器 MAR和存储器数据寄存器 MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改 PC 以得到下一条指令的地址,可以控制 ALU执行什么运算,可以控制主存储器是进行读操作还是写操作(读/写控制信号)。
在这里插入图片描述
CPU 和主存储器之间通过一组总线相连,总线中有地址、控制和数据3组信号线。MAR 中的地址信息会直接送到地址线上,用于指向读/写操作的主存储器存储单元;控制线中有读/写信号线,指出数据是从 CPU写入主存储器还是从主存储器读出到 CPU,根据是读操作还是写操作来控制将 MDR 中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。

在后面我们会用具体示例来演示一下各部件是如何工作的。

冯诺依曼计算机具有以下特点:

  1. 计算机是由五大部分组成
  2. 指令和数据以同等地位存于存储器,可按地址寻访
  3. 指令和数据用二进制表示
  4. 指令是由操作码和地址码组成
  5. 存储程序
  6. 是以运算器为中心

在这里插入图片描述
我们的输入/输出设备与存储器之间的数据传送通过运算器完成的。

对我们冯诺依曼计算机硬件结构其实就类似于我们的一个加工厂:
在这里插入图片描述
一个作品的加工首先需要原材料,那么就需要我们的采购部门进行对原材料的购买,就类比我们计算机中需要对数据的进行处理,就首先需要输入数据也就是需要一个输入设备。原材料购买完之后就需要对材料进行加工加工完后就需要放入仓库或者直接交付给销售部门进行销售。而这个加工部门就对应我们计算机中的运算器。仓库就是我们计算机中的存储器,销售部门就是我们计算机中的输出设备。当然不管什么都需要一个领头羊来指导各部门的相互协调,至此就有了总裁,而这里的总裁就类比我们计算机中的控制器。

现代计算机的硬件结构

介绍完早期的冯诺依曼计算机硬件结构,那么我们现代计算机的硬件结构是什么呢?

现代计算机的硬件结构如下:
在这里插入图片描述
我们现代计算机的硬件结构是以存储器为中心,这样就打大大释放运算器的资源,提高效率。
当然,现在基本上都会把运算器和控制器集成在一个东西上,也就是我们现在所知道的CPU

CPU=运算器+控制器

那么上面的这个硬件结构图就可以简化成这样:
在这里插入图片描述
主机里面存放CPU以及主存储器,主机与I/O设备通过控制线和反馈线进行交互。

我们还要注意一点的是主存是属于主机部分,而我们的辅存是属于I/O设备当中。

主存就比如我们的内存
辅存就比如我们的机械硬盘

知识回顾与小结:
在这里插入图片描述

计算机各个硬件的工作原理

在我们知道了计算机的硬件结构后,我们来具体了解一下其中的一些相关细节:
在这里插入图片描述
我们先了解一下主存储器的组成:
在这里插入图片描述
主存储器里面有一个存储体以及两个寄存器。

分别是:
Memory Address Register
(存储地址寄存器)
Memory Data Register
(存储数据寄存器)

存储体:数据在存储体内是按地址存储
在存储体中,每个地址就对应了一个存储单元,地址从上到下由低到高。

MAR:MAR的位数反映存储单元的个数
MDR:MDR的位数就是存储的字长

存储单元:每个存储单元存放一串二进制代码
存储字:存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
存储元:存储二进制的电子元件,每个存储单元可存1bit

在这里插入图片描述

运算器的基本组成如下:
在这里插入图片描述运算器:用于实现算数运算(例如:加减乘除),逻辑运算(例如:与或非)

控制器的基本组成如下:
在这里插入图片描述
我们程序员写的代码都会被控制器处理成一条一条的指令进行执行。

接下来我们分析一下计算机的工作过程:
我们用C语言写一个表达式,并计算这个表达式的结果。

在这里插入图片描述
当这段代码被编译装入主存后就会被处理成指令,也就是变成机器语言,好让寄存器进行处理执行。

在这里插入图片描述
当PC指向0存储单元处理完后,pc就会自动+1.指向下一个主存地址。依次内推:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
当PC指向4的时候,是中断指令,利用中断机制通知操作系统终止进程。

在这里插入图片描述

在这里插入图片描述

知识回顾:
在这里插入图片描述

计算机软件

我们知道计算机是由硬件+软件组成,讲完硬件我们讲一下软件:

软件首先可以分为应用软件和系统软件。

系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户
使用。系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件
系统、网络软件系统、标准库程序、服务性程序等。

应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程
序、工程设计类程序、数据统计与处理程序等。
在本学科范畴内,编写诸如操作系统、编译程序等各种系统软件的人员称为系统程序员;利
用计算机及所支持的系统软件来编写解决具体应用问题的人员称为应用程序员

应用软件是用来为用户提供某种需求,例如抖音就满足了人们刷小视频的需求,QQ满足人们聊天的需求。

系统软件是用来运行我们的计算机硬件,当然也为我们的上层应用软件提供服务。
在这里插入图片描述
三种级别的语言分别是我们现在用的高级语言,汇编语言以及机器语言。
汇编语言和机器语言都是低级语言。

在这里插入图片描述

机器语言的特点

  1. 机器语言。也称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言
    是计算机唯一可以直接识别和执行的语言。
  2. 汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和
    理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其
    转换为机器语言程序后,才能在计算机的硬件系统上执行。
  3. 高级语言。高级语言(如 C、C+、Java等)是为方便程序设计人员写出解决问题的处理
    方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经

过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。

当我们写一个高级语言的代码后,会进行编译,编译成汇编语言,然后汇编语言又通过链接,链接成我们的机器语言,机器语言就可以直接让我们的cpu进行识别以及处理。

当然现在的编译器可以直接将我们的高级语言通过编译器直接翻译成我们的机器语言。

一个是编译程序一个是解释程序,解释程序就比如python,javaScript,但这两者的区别就是:
编译程序是直接一次性全部翻译成机器语言
而解释程序是每执行一句就翻译一句,那要是如果是一段相同的代码,那么解释程序翻译效率明显是没有编译程序效率高的。

在之前我们也了解过,软件和硬件的逻辑功能其实是等价的。
例如我们实现一个985*6

要是硬件实现了乘法电路,那么我们使用一次乘法指令即可
要是没有实现乘法电路,那么我们就用软件使用6次加法指令,来模拟乘法这个过程。

至此呢,软硬件其实逻辑功能等效,同一个功能既可以用硬件实现也可以用软件实现。

在这里插入图片描述
就是为了划分这个软硬件,就出现了指令集体系结构(ISA),就是用来定义一台计算机可以支持哪些指令,以及每条指令的作用是什么,每条指令的用法是什么。

硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现。对某一功能来说,既可以由硬件实现,又可以由软件实现,从用户的角度来看,它们在功能上是等价的。这一等价性被称为软/硬件逻辑功能的等价性。

例如,浮点数运算既可以用专门的浮点运算器硬件实现,又可以通过一段子程序实现,这两种方法在功能上完全等效,不同的只是执行时间的长短而已,显然硬件实现的性能要优于软件实现的性能。软件和硬件逻辑功能的等价性是计算机系统设计的重要依据,软件和硬件的功能分配及其界
面的确定是计算机系统结构研究的重要内容。

当研制一台计算机时,设计者必须明确分配每一级的任务,定哪些功能使用硬件实现,哪些功能使用软件实现。软件和硬件功能界面的划分是由设计目标、性能价格比、技术水平等综合因素决定的。

知识回顾:
在这里插入图片描述

计算机系统的层次结构

计算机是一个硬软件组成的综合体。因为面对的应用范围越来越广,所以必须有复杂的系统软件和硬件的支持。由于软/硬件的设计者和使用者从不同的角度、用不同的语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。关于计算机系统层次结构的分层方式,目前尚无统一的标准,这里采用如 下图 所示的层次结构
在这里插入图片描述
第1级微程序机器层,这是一个实在的硬件层,它由机器硬件直接执行微指令。

第2级传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。

第3级操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成
的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这
一层也称混合层。

第4级汇编语言层,这一层由汇编程序支持和执行,借此可编写汇编语言源程序。

第5级高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种

高级语言编译程序支持和执行。在高级语言层之上,还可以有应用程序层,它由解决实际问题的处理程序组成,如文字处理软件、多媒体处理软件和办公自动化软件等。没有配备软件的纯硬件系统称裸机。第3层~第5层称为虚拟机,简单来说就是软件实现的机器。

虚拟机器只对该层的观察者存在,这里的分层和计算机网络的分层类似,对于某层的观察者来说,只能通过该层的语言来了解和使用计算机,而不必关心下层是如何工作的。层次之间的关系紧密,下层是上层的基础,上层是下层的扩展。软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA 是指软件能感知到的部分,也称软件可见部分。

本门课程主要讨论传统机器 M1和微程序机器 M0 的组成原理及设计思想。

补充知识:
在这里插入图片描述
计算机体系结构和计算机组成原理两者不是同一个,计算机体系结构是如何设计硬件与软件之间的接口,而计算机组成原理是如何用硬件实现我们做定义的接口。

知识回顾:
在这里插入图片描述

计算机系统的工作原理

我们先回顾一下,从C语言到可执行文件是如何运行的:

首先我们的.c文件通过预处理器处理为.i文件,然后通过编译器将.i文件编译成.s文件(也就是汇编语言),其次通过汇编器将.s文件汇编成.o文件,最后我们的.o文件通过链接器链接为我们的可执行文件。在这里插入图片描述
最后可执行文件在外设中可以通过显示屏打印在屏幕上。
在这里插入图片描述
1.“存储程序”工作方式

“存储程序”工作方式规定,程序执行前,需要将程序所含的指令和数据送入主存储器,一旦程序被启动执行,就无须操作人员的千预,自动逐条完成指令的取出和执行任务。如图1.4 所示,一个程序的执行就是周而复始地执行一条一条指令的过程。每条指令的执行过程包括:从主存储器中取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。
在这里插入图片描述
程序执行前,先将程序第一条指令的地址存放到PC中,取指令时,将PC的内容作为地址访问主存储器。在每条指令执行过程中,都需要计算下条将执行指令的地址,并送至PC。若当前指令为顺序型指令,则下条指令地址为 PC 的内容加上当前指令的长度;若当前指令为转跳型指令,则下条指令地址为指令中指定的目标地址。当前指令执行完后,根据 PC 的内容到主存储器中取出的是下一条将要执行的指令,因而计算机能周而复始地自动取出并执行一条一条的指令。

2.从源程序到可执行文件

翻译过程的四个阶段

在计算机中编写的C语言程序,都必须被转换为一系列的低级机器指令,这些指令按照一种称为可执行目标文件的格式打好包,并以二进制磁盘文件的形式存放起来。以 UNIX 系统中的 GCC 编译器程序为例,读取源程序文件 hello.c,并把它翻译成一个可执行目标文件 hello,整个翻译过程可分为四个阶段完成,如图1.5所示。
在这里插入图片描述
1)预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,例如将#include
命令后面的.h文件内容插入程序文件。输出结果是一个以i为扩展名的源文件 hello.i。
2)编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。
汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
3)汇编阶段:汇编器(as)将 hello.s 翻译成机器语言指令,把这些指令打包成一个称为可
重定位目标文件hello.o,它是一种二进制文件,因此用文本编辑器打开会显示乱码。
4)链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文
件,简称可执行文件。本例中,链接器将 hello.0和标准库函数 printf 所在的可重定位目标
模块 printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上

3.指令执行过程的描述
可执行文件代码段是由一条一条机器指令构成的,指令是用0和1表示的一串0/1序列,用来指示 CPU 完成一个特定的原子操作。例如,取数指令从存储单元中取出一个数据送到CPU的寄存器中,存数指令将 CPU寄存器的内容写入一个存储单元,ALU 指令将两个寄存器的内容进行某种算术或逻辑运算后送到一个 CPU寄存器中,等等。指令的执行过程在第5章中详细描述。
下面以取数指令(送至运算器的ACC中)为例来说明,其信息流程如下:

  1. 取指令:PC→MAR→M→MDR→IR
    根据PC取指令到IR。将PC的内容送MAR,MAR 中的内容直接送地址线,同时控制器将
    读信号送读/写信号线,主存储器根据地址线上的地址和读信号,从指定存储单元读出指令,送到
    数据线上,MDR 从数据线接收指令信息,并传送到IR中。

  2. 分析指令:OP(IR)→CU
    指令译码并送出控制信号。控制器根据 IR 中指令的操作码,生成相应的控制信号,送到不
    同的执行部件。在本例中,IR中是取数指令,因此读控制信号被送到总线的控制线上。

  3. 执行指令:Ad(IR)→MAR→M→MDR→ACC
    取数操作。将IR中指令的地址码送 MAR,MAR 中的内容送地址线,同时控制器将读信
    号送读/写信号线,从主存储器中读出操作数,并通过数据线送至MDR,再传送到ACC中。
    每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1→PC

(PC)指程序计数器 PC中存放的内容

PC→MAR 应理解为(PC)→MAR,即程序计数器中的值经过数据通路送到 MAR,也即表示数据通路时括号可省略(因为只是表示数据流经的途径,而不强调数据本身的流动)。但运算时括号不能省略,即(PC)+1→PC不能写为PC+1→PC。

当题目中(PC)→MAR的括号未省略时,我们最好也不要省略

计算机的性能指标

存储器的性能指标:

在这里插入图片描述
补充知识:
在这里插入图片描述

cpu的性能指标

在平常购买电脑时,我们会看到一下信息,什么2.9GHz 3.7GHz这个就是cpu的主频

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

系统整体的性能指标

在这里插入图片描述

思考题:

问:主频高的CPU一定比主频低的CPU快吗?

不一定,如两个CPU,A的主频为2GHz,平均CPI=10;B的主频1GHz,平均CPI=1…

问:若A、B两个CPU的平均CPI相同,那么A一定更快吗?

也不一定,还要看指令系统,如 A不支持乘法指令,只能用多次
加法实现乘法;而B支持乘法指令

问:基准程序执行得越快说明机器性能越好吗?

基准程序中的语句存在频度差异,运行结果也不能完全说明问题

几个专业术语

  1. 系列机。具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组
    成的一个产品系列。
  2. 兼容。指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬/软件也能应用
    于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。
  3. 固件。将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸
    收了软件/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产
    物。例如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)。

知识回顾:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到