2024考研408-计算机组成原理第一章-计算机系统概述

news2024/12/23 17:47:06

文章目录

  • 起步:认识计算机
  • 一、计算机发展历程
    • 1.1、什么是计算机系统
    • 1.2、计算机硬件的发展
      • 1.2.1、总览四代发展
      • 1.2.2、四代发展详细介绍
      • 1.2.3、计算机硬件的发展历史
      • 1.2.4、摩尔定律介绍
    • 1.3、计算机软件的发展
      • 1.3.1、软件的发展
      • 1.3.2、目前的发展趋势
    • 知识回顾与重要考点
  • 二、计算机的层次结构
    • 2.1、计算机硬件的基本组成
      • 2.1.1、冯诺依曼基本思想及特点(以运算器为中心,包含五大部件)
      • 2.1.2、现代计算机的结构(以存储器为中心)
      • 知识点回顾与重要考点
    • 2.2、各个硬件的工作原理
      • 2.2.1、主存储器的基本组成
      • 2.2.2、运算器的基本组成
      • 2.2.3、控制器的基本组成
      • 2.2.4、计算机的工作过程
        • 高级语言示例并分析指令执行
        • ①第一条指令:执行取数指令
        • ②第二条指令:执行乘法指令
        • ③第三条指令:执行加法指令
        • ④第四条指令:执行存储操作
      • 知识点回顾与总结
    • 2.3、计算机系统的层次结构
      • 2.3.1、计算机的层次结构
      • 2.3.2、三种级别的语言(机器、汇编与高级语言,汇编、编译与解释程序)
      • 知识回顾与重要考点
    • 2.4、计算机体系结构vs计算机组成原理
  • 三、计算机的性能指标
    • 3.1、存储器的性能指标
    • 3.2、CPU的性能指标
    • 3.3、系统整体的性能指标
    • 3.4、基准程序(整体的性能指标,动态测试)
    • 关于电脑机器性能好是否只由主频、CPI或者基准测试程序分数决定?
  • 知识点回顾与重要考点

起步:认识计算机

计算机中通过电信号来传递数据:计算机识别二进制数据的原理

image-20230520204944172

熟悉硬件:

image-20230520205155304

  • 主板上的印刷电路如何传输数据:可以看到有多个电路,这个就是各个部件之间传输电路的通道。

一、计算机发展历程

1.1、什么是计算机系统

image-20230520205454696

软件的分类:

image-20230520205603541

计组中主要去探究硬件部分!


1.2、计算机硬件的发展

1.2.1、总览四代发展

主要是利用电路来进行运算,下面是各个时代发展阶段:

image-20230520211514201


1.2.2、四代发展详细介绍

第一代:电子管时代

在这一代时,程序员都是使用机器语言来进行编程

image-20230520210107286

image-20230520210355990

第二代:晶体管时代,替代了电子管

体积减小、功耗降低,计算速度也达到了质的飞跃,此时出现面向过程的语言:FORTRAN,有了操作系统雏形。

image-20230520210746924

第三代:中小规模集成电路时代,集成电路

计算机变得越来越小,功耗变低,集成电路比手动焊接的晶体管的可靠性更好,此时高级语言迅速发展,此时有了分时操作系统。

  • 其实就是将晶体管、电容元器件高密度的存在了电路板上。

此时阶段主要用于科学计算,暂时还没有步入个人生活:

image-20230520211054607

第四代:大规模,超大规模集成电路

随着集成电路的提升,出现第四代,此时开始出现微处理器,也就是CPU,例如苹果的A13。

芯片技术的进步导致微处理器的诞生,同时也导致微型计算机的诞生,之后微型计算机开始逐步步入每一个人的生活。

image-20230520211456581

看一下Intel公司处理器的发展:

image-20230520211726696

  • 例如采用8080的8位CPU处理16位字长,则需要处理两次,而采用8086则只需要处理一次即可。

1.2.3、计算机硬件的发展历史

image-20230520212102141


1.2.4、摩尔定律介绍

摩尔定律出自仙童公司的摩尔提出的:

image-20230520212244305


1.3、计算机软件的发展

1.3.1、软件的发展

image-20230520212637853


1.3.2、目前的发展趋势

image-20230520213003858


知识回顾与重要考点

image-20230520213221616


二、计算机的层次结构

2.1、计算机硬件的基本组成

image-20230521084610532

2.1.1、冯诺依曼基本思想及特点(以运算器为中心,包含五大部件)

早期的冯诺依曼机器

原本的手动接线需要程序员或操作员先去手动的操作布线,之后才操作完成之后才能够进行运算。

而冯诺依曼提出了存储程序的概念,提前可以将二进制代码输入计算机的主存储器,之后按照存储器的首地址执行程序的第一条指令,接着就往后执行其他指令直到结束。

image-20230521085201475

image-20230521085723038

  • 存储器->控制器中的传输线:控制器从存储器中读取指令的一个数据流

对于同一个功能可以使用软件来实现,也可以使用硬件来实现。

  • 软件实现成本更低,效率更低。
  • 硬件实现成本更高,效率更高。

冯诺依曼计算机特点

image-20230521093542902

以运算器为中心,那么相当于所有的数据都要经过运算器,那么就会导致效率降低,针对于这个问题,现代计算机做了优化,实际加工厂例子

image-20230521093942804

image-20230521145049932

  • 有些计算机的指令可执行多个地址码的,例如一条指令包含两条地址,这种指令被称为二地址指令。
  • 存储程序:在程序运行之前,会将指令与数据提前存储到内存当中。

2.1.2、现代计算机的结构(以存储器为中心)

优化之前冯诺依曼以运算器为核心的架构,现代计算机的机构是以存储器为核心,如下图:

image-20230521094617794

输入设备的数据是直接放入到存储设备中去的,当运算器处理完毕之后,输出设备也会直接从存储器中取出数据,此时就可以更多的解放运算器的时间,让运算器进行更多的计算。

注:由于运算器、控制器之间的逻辑关系十分紧密,在大规模集成电路工艺出现了之后,这两个部件通常是集成到同一个部件上的,整合了整两个部件就是现在的CPU。

看一下硬件的组成部分及主机、IO设备的包含范围

image-20230521094905203


知识点回顾与重要考点

image-20230521095012634


2.2、各个硬件的工作原理

寄存器也是存放二进制数据,MAR是存放与地址相关的二进制数据,MDR是存放实际的数据

2.2.1、主存储器的基本组成

左边是主存储器的结构,而右边则是去仿照主存储器来说明的现实应用:

image-20230521105124995

接下来理解一下MAR与MDR的作用

对于存储器来说,CPU可以指明要写入到哪个位置(放入到MAR),写入的哪个数据(放入到MDR),最后CPU会通过控制总线告诉主存储器说这次要进行的操作是写操作,那么主存储器根据CPU发出的这三个信息,就可以往对应的位置写入CPU想要写的数据了。

image-20230521105214928

接着来理解下存储体:一个存储体包含多个存储单元,一个存储单元对应一个地址

image-20230521110232597

  • 一个字的大小要看主存储器的计算机硬件如何设计,有8、16、32位的。不要将其和1个字节混淆,还有1B、1b。

额外扩展:例如宽带的100Mbps换算对应的迅雷下载为B,则中间有8倍的关系,实际下载为10MB/s。

image-20230521110017491


2.2.2、运算器的基本组成

主要有三个不可或缺的寄存器以及一个核心部件。

运算器里面制造成本最高的是ALU,其他基本都是存放操作数的。

image-20230521110856466


2.2.3、控制器的基本组成

在控制器中CU才是真正的核心,很多时候会将PC、IR统称为取指阶段,CU表示为执行阶段:

image-20230521111123178


2.2.4、计算机的工作过程

高级语言示例并分析指令执行

下面执行一段程序,我们来看在计算机硬件部分是如何运行的:

image-20230521145155073

接下来看一下对于一条y=a*b+c指令在硬件指令的运行过程

image-20230521133707528


①第一条指令:执行取数指令

执行主存地址0的一条指令流程:其是一条取数指令,包含下面的多个硬件执行步骤

初步:PC(0):取出地址为0的指令并执行。

#1:(PC)->MAR:会导致(MAR)=0,控制器向主存指明了接下来要访问的是0号地址的这一串数据,同时控制器会通过控制总线告诉主存储器这次要进行的是读操作,接下来主存储器会根据MAR记录的这条地址去存储器里找出0号地址所对应的二进制数据,并将二进制数据放入到MDR当中。

  • (MAR)有括号,表示的是里面的内容。

#3 M(MAR)->MDR:表示将主存储器中的MAR地址中的数据放入到MDR当中。

  • M(MAR):表示的是主存储器里的MAR

#4 (MDR)->IR:会将当前MDR中的数据放入到IR寄存器中。

#5 OP(IR)->CU:会将IR的前6位送到CU中,CU识别6位二进制为取数指令。

#6 Ad(IR)->MAR:此时会将在IR中的地址码送到MAR中,导致(MAR)=5

#8 M(MAR)->MDR:表示将主存储器中的MAR地址中的数据放入到MDR当中。

最终在控制单元的操作下,会将MDR的数据传输到ACC中。

#9 (MDR)->ACC:将MDR中的值传输到ACC累加器中。

上面的多个步骤实际上可分为取指令、分析指令以及执行指令:

image-20230521134441988

此时当一条指令执行完成之后,PC会自动+1,也就是说会去执行主存地址为1的指令。


②第二条指令:执行乘法指令

接下来执行第二条指令:很明显中间过程也是让CU去处理识别操作码000100,即为乘法指令,对应的地址码指定主存地址为6的

image-20230521141334902

执行第二条指令的完成步骤如下图所示:

image-20230521142602925

注意在这一个阶段将MDR中的数据会传输到MQ当中去,此时b=3。

接着会将对应的被乘数2,也就是(ACC)->x,将ACC中的值放入到x中,令(x)=2。

最终执行由ALU执行完乘法操作,(MQ)*(x)->ACC,将乘法求得的数放置到ACC中。

注意:其中的取指令、分析指令过程与执行指令一一致,对于执行xx指令的步骤不相似。


③第三条指令:执行加法指令

上面第二条指令执行完毕之后,PC同样会加1,此时开始执行主存地址为2的PC指令:

image-20230521143333212

在执行加法的时候,X中存放被加数,ACC中存放加数。


④第四条指令:执行存储操作

第三条指令执行完成后,执行主存地址为3的指令:实际就是将之前的y=a*b+c=2*3+1=7存储到指定0000000000000111地址空间中

image-20230521143955752

第五条指令:执行停机指令

image-20230521144052288


知识点回顾与总结

image-20230521144458868


2.3、计算机系统的层次结构

2.3.1、计算机的层次结构

上面计算机工作过程中执行多条指令中的一个指令的多个命令,实际上就是微指令:

image-20230521152107649

像这里的层次结构(与操作系统有些不同)更多的是从编程人员与硬件设计人员角度来考虑的。


2.3.2、三种级别的语言(机器、汇编与高级语言,汇编、编译与解释程序)

image-20230521151222481

部分语言并不是直接通过编译程序来进行一步步编译到机器语言的,而是通过解释程序来翻译成与之对等的机器语言程序。

编译程序与解释程序区别

  • 编译程序是可以编译成.exe文件来最终执行的。(只需要翻译一次)
  • 解释程序则是翻译一句就立即执行,每次执行都要翻译。(每次执行都要翻译一次)

知识回顾与重要考点

image-20230521152305109


2.4、计算机体系结构vs计算机组成原理

image-20230521152738919

两者的不同点

  • 计算机体系结构:探讨的指令系统怎么设计,我设计的计算机需要对上层的程序员提供什么样的指令,有无乘法指令,若是不提供乘法指令,那么想要实现乘法功能的程序员,那么就只能通过执行多次加法来得到最终结果。
  • 计算机组成原理:如果我要给上层提供乘法指令,那么对于乘法指令我如何用硬件来实现。

三、计算机的性能指标

3.1、存储器的性能指标

主要包含MAR与MDR:

image-20230521154057314

注意下下面的一些注意点

点1:MAR的位数可以直接表示实际的容量,也就是按照最大值来算就可以了。

  • 因为在现实情况中并不是都有满的容量情况,考试直接按照最大来算即可。

点2:关于MAR多少位,为什么就可以直接使用232来计算呢?

image-20230521154235968


3.2、CPU的性能指标

指标:CPU时钟频率、CPU主频、CPI

image-20230521155250952

主频越高,速度也越快,很大程度上反应了CPU的性能。并不是只有主频才会影响CPU运行,还有如CPI等一些指标。

CPI:不同的指令,CPI也有可能会不同,甚至是相同的指令,也会有变化。

  • 一般来说我们都是去计算的一条指令平均耗时:一条指令的耗时 = CPI x CPU的时钟周期

此时我们可以做一题示例

image-20230521155450533

  • 其中3* (1 / 1000)就是一条指令的耗时,那么100条指令耗时就得到了上面的式子。

指标:IPS、FLOPS

image-20230521164522934

  • 例如:2MIPS表示每秒钟2百万条指令。2GIPS表示每秒二十亿条指令。
  • 3TFLOPS:表示3万亿次的浮点运算,拆分为3、T、FLOPS。

3.3、系统整体的性能指标

image-20230521165110495


3.4、基准程序(整体的性能指标,动态测试)

image-20230521165413024

本质上就是给你设计好了一大段程序代码,在这段代码中包含了各种各样的指令,各种指令出现的频次,频率是不一样的,会根据你电脑所运行指令的耗时来评定打分。


关于电脑机器性能好是否只由主频、CPI或者基准测试程序分数决定?

结论:决定执行指令速度的快慢与主频、CPI(一条指令执行的时间)、指令系统(不同的指令系统指令不一样都有,例如若是乘法指令没有就需要执行多条加法指令)有关

**问1:主频高CPU一定比主频低CPU快?**并不是,若是CPI快,后者可能执行的指令也很快!

image-20230521165859244

问2:若是问1中CPI一样呢,是否还是主频高的CPU快

image-20230521170027112

问3:基准程序跑分越好,电脑机器性能越好

image-20230521170057234

分数越高未必越好,要根据你的实际用途来进行测试,例如你的电脑对于运算十分擅长,但是你却用来进行显卡测试,明显不会高分。


知识点回顾与重要考点

image-20230521170216363


整理者:长路 时间:2023.5.20-21

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/582130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis中的Reactor模型和执行命令源码探索

文章目录 摘要1、 了解Linux的epoll2、了解Reactor模型 一、Redis初始化1.1、配置初始化1.2、服务初始化1.3、网络监听初始化1.4、Reactor线程池初始化1.5、Reactor事件主循环 二、Reactor2.1、Reactor事件处理器2.2、读事件2.2.1、第一次读事件(accept)…

基于MATALB编程的深度信念网络DBN的01分类编码三分类预测,DBN算法详细原理

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN的语音分类识别 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN算法对数据采用01编码分析…

【数据湖仓架构】数据湖和仓库:Azure Synapse 视角

是时候将数据分析迁移到云端了。我们将讨论 Azure Synapse 在数据湖和数据仓库范式规模上的定位。 在本文中,我们将讨论 Microsoft 的 Azure Synapse Analytics 框架。具体来说,我们关注如何在其中看到数据仓库和数据湖范式的区别。为了熟悉这个主题&…

【Linux】Linux环境基础工具的基本使用及配置(yum、vim)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 文章目录 Linux软件包管理器 - y…

60分钟吃掉detectron2

本范例演示使用非常有名的目标检测框架detectron2 🤗🤗 在自己的数据集(balloon数据)上训练实例分割模型MaskRCNN的方法。 detectron2框架的设计有以下一些优点: 1,强大:提供了包括目标检测、实例分割、全景分割等非常…

Spring Boot启动流程

1 Springboot 启动流程 创建一个StopWatch实例,用来记录SpringBoot的启动时间。 通过SpringFactoriesLoader加载listeners:比如EventPublishingRunListener。 发布SprintBoot开始启动事件(EventPublishingRunListener#starting()&#xff0…

性能测试——基本性能监控系统使用

这里写目录标题 一、基本性能监控系统组成二、环境搭建1、准备数据文件 type.db collectd.conf2、启动InfluxDB3、启动grafana4、启动collectd5、Grafana中配置数据源 一、基本性能监控系统组成 Collectd InfluxdDB Grafana Collectd 是一个守护(daemon)进程,用来…

【数据结构】时间复杂度与空间复杂度

目录 前言一、算法效率1. 算法效率的定义 二、时间复杂度1. 时间复杂度的定义2. 时间复杂度的计算 三、空间复杂度1. 空间复杂度的定义2. 空间复杂度的计算 四、时间复杂度曲线图结尾 前言 在学习C语言的时候,大多数的小伙伴们并不会对算法的效率了解,也…

视频采集到录制 - 音频采集到降噪

继续上篇的视频采集到录制 视频采集相对来说还是算正常,如果资源够用,使用第三方库也是种解决办法 但音频采集网上资料相对也少,走了一遍,也发现存在很多坑 1. 音频采集 一般来说,采用MIC采集,采集出来的格…

内存泄露的循环引用问题

内存泄漏一直是很多大型系统故障的根源,也是一个面试热点。那么在编程语言层面已经提供了内存回收机制,为什么还会产生内存泄漏呢? 这是因为应用的内存管理一直处于一个和应用程序执行并发的状态,如果应用程序申请内存的速度&…

希尔伯特旅馆里,住着AI的某种真相

“无穷”和“无穷1”,哪个更大? 已经吸收了不知道多少数据的AI模型,和比他多学习一条数据的模型,哪个更智能? 想聊聊这个问题,出于一个偶然的机会。很早之前我在测试ChatGPT的时候,突然想问他个…

简单工厂、工厂方法、抽象工厂模式-这仨货的区别

要想明白这三玩意的区别就需要知道这三玩意的优缺点; 之所以有三种工厂模式,就说明它们各有所长,能解决不同场景的问题; 一、简单工厂模式 UML图 代码 public class MobileFactory {public static Mobile getMobile(String brand)…

【Linux】线程概述、创建线程、终止线程

目录 线程概述1、创建线程函数解析代码举例 2、终止线程函数解析代码举例 橙色 线程概述 与进程类似,线程是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。 进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单位。…

回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计学习总结参考资料 预测效果 基本介绍 MATLAB实现…

【笔记整理】轻量级神经网络 MobileNetV3

【笔记整理】轻量级神经网络 MobileNetV3 文章目录 【笔记整理】轻量级神经网络 MobileNetV31、深度可分离卷积2、翻转残差块和线性瓶颈结构3、h-swish 函数和 SE 模块4、网络结构搜索 近年来关于 CNN 的研究在飞速发展,CNN 模型在目标检测、图像分割等领域都取得了…

力扣sql中等篇练习(二十九)

力扣sql中等篇练习(二十九) 1 计算每个销售人员的影响力 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT s1.salesperson_id,s1.name,IFNULL(t.total…

毕业季到底是去大厂还是去小公司

(点击即可收听) 毕业季到底是去大厂还是去小公司 相信很多人在选择大小公司的时候,会比较痛苦,外面的人想进去,里面的人想出来,至于选择大厂还是小公司 这是因人而异的,不同的阶段都可以有不同的选择 进大厂不一定就是对的,进小公司也不一定就是错的,学习东西,增长经…

股票量化分析工具QTYX使用攻略——涨停个股挖掘热门板块(更新2.6.5)

搭建自己的量化系统 如果要长期在市场中立于不败之地!必须要形成一套自己的交易系统。 行情不等人!边学习边实战,在实战中学习才是最有效地方式。于是我们分享一个即可以用于学习,也可以用于实战炒股分析的量化系统——QTYX。 QTY…

软考A计划-试题模拟含答案解析-卷九

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

JetBrains的多数据库管理和SQL工具DataGrip 2023版本在Win10系统的下载与安装配置教程

目录 前言一、DataGrip 安装二、使用配置总结 前言 DataGrip是一款多数据库管理和SQL工具,适用于不同类型的数据库。它提供了丰富的功能和工具,可以帮助开发人员更高效地管理数据库、编写SQL查询和执行数据操作。 DataGrip的主要特点: ——…