【408之计算机组成原理】计算机系统概述
目录
- 前言
- 一、计算机的发展历程
- 1. 计算机发展的四代变化
- 2. 计算机元件的更新换代
- 3. 计算机软件的发展
- 二、计算机系统层次结构
- 1. 计算机系统的组成
- 2. 冯诺依曼体系结构
- 3. 计算机的功能部件
- 1. 输入设备
- 2. 输出设备
- 3. 存储器
- 4. 运算器
- 5. 控制器
- 三、 分析计算机各个部件在执行代码中的过程(重难点)
- 四、计算机系统的层次结构
- 五、计算机的性能指标
前言
本文主要包含以下内容:计算机发展历程及计算机的系统层次结构(计算机系统的基本组成和计算机硬件的基本组成,计算机硬件和软件的关系,计算机系统的工作原理),和计算机的性能指标
一、计算机的发展历程
1. 计算机发展的四代变化
计算机的发展过程经理四个时代:电子管时代,晶体管时代,中小规模集成电路时代,超大规模集成电路时代。
- 电子管时代:逻辑元件采用电子管,使用机器语言进行编程,存储的容量小,体积大,成本高,运算速度慢。
- 晶体管时代:逻辑元件采用晶体管,运算速度相比于电子管时代的计算机提高一点,此时开始出现高级语言和编译程序,有了操作系统的雏形。
- 中小规模集成电路时代:逻辑元件采用中小规模集成电路,高级语言发展迅速,开始有了分时操作系统。
- 超大规模集成电路时代:逻辑元件采用大规模集成电路和超大规模集成电路,产生了微处理器(CPU),产生了并行、流水线、高速缓存和虚拟存储器等概念。
2. 计算机元件的更新换代
- 摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月就会增加一倍,性能也会提升一倍。
- 半导体存储器的发展
- 微处理器的发展:微处理器从刚开始只能处理8位发展到现在能够处理64位,这里的位指的是机器字长,也就是计算机进行一次整数运算所能处理的二进制数据的位数,例如:像处理一个整数,我们知道一个整数是4个字节,也就是8个比特位,那么如果采用刚开始的处理器,因为那时候的处理器一次只能处理8个比特位,所以那个时候的处理器处理一个整数需要4次,现在的处理器一次能够处理64个比特位,所以现在的处理器来处理一个整数一次就能够处理完毕。
3. 计算机软件的发展
计算机语言从刚开始的机器语言,逐渐发展产生了汇编语言和面向对象的高级语言,可见其发展是非常迅速的。
二、计算机系统层次结构
1. 计算机系统的组成
计算机系统是由硬件系统和软件系统组成的。
- 硬件系统:能够实际摸得着的那些东西:比如常见输入输出设备,存储器,运算器和控制器,这五大部件也是后面冯诺依曼体系结构中的重要组成部分。
- 软件系统:包括常见的使用高级语言编写而形成的软件,其能够让硬件完成对应的工作
计算机性能的好坏很大程度是取决于软件的,但是软件的运行又离不开硬件,硬件和软件其实对于实现某一个逻辑具有等效的作用,但是使用硬件和使用软件来完成的成本和效率是不一样的,其中,如果使用软件来完成逻辑运行的话,就是效率低,成本低,使用硬件来完成对应的逻辑运算的话就是效率高,成本高。比如:如果我们要完成一个乘法计算,那么对于硬件我们只需要实现一个乘法指令(成本高),让硬件进行计算即可(效率高),但是采用软件的话,就只能进行多次相加,所以显然效率就会比较低,但是成本也低
2. 冯诺依曼体系结构
早期的冯诺依曼体系结构

早期的计算机中的结构是按照上面的结构实现的,数据经过输入设备之后是将数据传送到运算器,然后再由运算器将数据输送到存储器,这个结构是以运算器为中心的,这个过程中效率就会相对比较慢了,所以后期的计算机中的结构做出了修改
后期的冯诺依曼体系结构

后期的计算机中,数据经输入设备之后是直接到达存储器,然后需要运算的时候再将数据传送给运算器进行运算。所以这个结构是以存储器为中心的。
- 存储程序:将事先编制好的程序和原始数据送入主存(内存)后才能执行(CPU执行),一旦程序被启动,就无需操作人员干预,计算机会自动逐条执行指令,直到程序运行结束。存储程序相比于原始的计算机所具有的优点:不需要人为进行干预,从而提高了计算机运行的效率。
- 冯诺依曼体系计算机的特点:
- 采用存储程序的工作方式
- 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备构成
- 指令和数据以同等地位存储在存储器中,形式上没有区别,但是计算机能够对它们进行区分
- 指令和数据均以二进制的形式进行表示。指令是由操作码和地址码组成,其中,操作码指出操作的类型,就是告诉CPU这条指令需要执行什么操作,比如:加法操作和减法操作。地址码是指出操作数的地址,就是告诉CPU这个要去哪里找这个指令运算对应的操作数。
3. 计算机的功能部件
前面我们知道冯诺依曼体系结构中包含五大部件:输入设备,输出设备,存储器,运算器和控制器。下面我们将逐一介绍其中的原理:
1. 输入设备
输入设备的主要作用就是将程序和数据以计算机能够识别的机器语言形式输入给计算机,最常用的输入设备:键盘,鼠标,扫描仪,摄像机
2. 输出设备
输出设备的主要功能就是将计算机处理的结构以人类能够识别的形式输出。最常用的输出设备:显示器、打印机。
3. 存储器
存储器包括两类基本的存储器:主存储器和辅助存储器
- 主存储器:指内存,就是CPU能够直接访问的存储器,一般大小为:8GB或者16GB
- 辅助存储器:CPU不能直接访问的存储器,主要的任务是帮助主存储器存储更多信息,因为CPU无法直接访问这里的信息,所以当这些信息需要被执行的时候,需要先将这些信息调入内存才能被执行。常见的辅助存储器:比如电脑中的磁盘,手机的SD卡,U盘之类的存储器。
- 按地址存取方式:主存储器的工作方式是按照存储单元的地址进行存取的,这里的存储单位,主存储器一般会被划分为很多个小的存储单元,每一个单元从头到尾依次会进行编号,每一个存储单元对应的编号就是这个存储单元对应的地址。

主存储器中主要包含:存储体、地址寄存器(MAR)和数据寄存器(MDR) - 存储体:存储体会被分成很多个存储单元,数据在存储体中是按照地址进行存取的,存储单元中包含很多个存储元件,每一个存储元件存储一个二进制的1或者0,所以一个存储单元存储的是一串二进制数的序列,我们将这串二进制序列称为存储字,这串二进制序列的二进制位数称为存储字长。
- 地址寄存器(MAR):存放的是数据在存储体中的地址,形式为二进制。其中地址寄存器有几位,对应的存储体中就有2的几次方个存储单元。如:一个主存储器中的地址寄存器有8位,那么这个主存储器中的存储体就被分成2^8个存储单元。
- 数据寄存器(MDR):存放的是写入存储体中的数据或者即将从存储体中读出的数据,位长为存储字的长度(一次只能存储一个数据)。
需要注意的是:地址寄存器(MAR)和数据寄存器(MDR)虽然是存储器的一部分,但是在现代计算机中却是存在于CPU中的。
4. 运算器
运算器是计算机中的执行部件,用于进行算数运算和逻辑运算
- 算数运算:按照算数运算规则进行的运算,如:加、减、乘、除
- 逻辑运算:按照逻辑进行的运算,如:与、或、非、异或、比较、移位
运算器中包含很多个寄存器,主要用于暂时存储操作数和中间结果,如:累加器(ACC),乘商寄存器(MQ),**操作数寄存器(X)**等,其中,这三个是运算器中必须具备的寄存器。
- 累加器(ACC):存放操作数或运算结果
- 乘商寄存器(MQ):在乘除时,存放操作数或运算结果
- 操作数寄存器(X):存放操作数
- 算术逻辑单元(ALU):通过内部实现的复杂的电路来实现算数运算和逻辑运算
5. 控制器
控制器是计算机的指挥中心,计算机中主要是由控制器指挥各个部件自动协调地工作。控制器主要由控制单元(CU),指令寄存器(IR),**程序计数器(PC)**组成
- 控制单元(CU):分析指令,给出控制信号
- 指令寄存器(IR):存放当前执行的指令
- 程序计数器(PC):存放下一条执行指令的地址,有自动加1的功能,1是指一条指令的长度,即可以自动形成下一条指令的地址,它和主存中的MAR有一条直接的通路。
三、 分析计算机各个部件在执行代码中的过程(重难点)
任何一条执行的执行都要经历三个步骤:取指令,分析指令,执行指令
下面以一个具体的例子来介绍这个过程:

比如:我们要让计算机执行上面的代码,上面的代码逻辑非常简单,就是先执行ab,再执行ab+c,然后讲结果放在y中。其中对应的数据有:a,b,c,y
首先需要将对应的指令和数据存入主存储器的存储体中,存储的过程是按照存储单元的地址进行存储的,存储的形式是二进制,如下:

- 执行第一条指令
- 取指令:刚开始PC寄存器中存储的是第一条指令的地址,此时会将PC中存储的指令地址传给地址寄存器(MAR),然后PC指向下一条指令,此时MAR中对应的值为0,然后再到存储体中取出地址为0的存储单元中的数据(指令),放入数据寄存器(MDR),然后再将数据寄存器中的指令传给指令寄存器(IR),此时IR会将指令分为两个部分:操作码和地址码,操作码会交给控制单元(CU)进行分析,地址码会交给地址寄存器(MAR)。
- 分析指令:控制单元经分析得出该指令想要执行的操作是取数操作。
- 执行指令:通过MAR中存储的地址到存储体相应的位置取出对应的数据放在数据寄存器(MDR)中,所以此时MDR中存放的值为a = 2,再将2的值放入累加寄存器(ACC)
具体过程如下:

- 执行第二条指令
- 取指令:第一条指令执行结束之后,PC指向的指令是第二条指令,此时将PC中存放的指令地址传给MAR,PC再指向下一条指令,此时MAR存放的是第二条指令的地址,因此到存储体中该地址处找到存储的数据(第二条指令),并将该指令放到MDR中,此时数据寄存器MDR将该指令交给指令寄存器IR
- 分析指令:IR将该指令分成两个部分:操作码和地址码,操作码交给控制单元(CU),地址码交给地址寄存器(MAR),CU经分析得知该指令想要执行乘法操作
- 执行指令:到存储体中MAR中存储的地址对应的存储单元处找到对应的数据,并将该数据放入数据寄存器(MDR),再将该数据输出到乘商寄存器(MQ)中,此时累加寄存器(ACC)中存放的是a的值,MQ中存放的是b的值,再将累加寄存器中的值放入通用寄存器(X)中,此时控制单元向算数逻辑单元(ALU)发送信号,执行乘法操作:将X中存储的值和MQ存储的值进行相乘,再将数据存到累加寄存器(ACC)中。
具体过程如下:

- 执行第三条指令
- 取指令:第二条指令执行结束之后,PC指向的指令是第三条指令,此时将PC中存放的指令地址传给MAR,PC再指向下一条指令,此时MAR存放的是第三条指令的地址,因此到存储体中该地址处找到存储的数据(第三条指令),并将该指令放到MDR中,此时数据寄存器MDR将该指令交给指令寄存器IR
- 分析指令:IR将该指令分成两个部分:操作码和地址码,操作码交给控制单元(CU),地址码交给地址寄存器(MAR),CU经分析得知该指令想要执行加法操作
- 执行指令:到存储体中MAR中存储的地址对应的存储单元处找到对应的数据,并将该数据放入数据寄存器(MDR),再将该数据输出到通用寄存器(X)中,此时累加寄存器(ACC)中存放的是a*b的值,通用寄存器中存储的是c的值,此时控制单元向算数逻辑单元(ALU)发送信号,执行加法操作:将ACC中存储的值和X中存储的值进行相加,再将数据存到累加寄存器(ACC)中。
具体过程:

- 执行第四条指令
- 取指令:第三条指令执行结束之后,PC指向的指令是第四条指令,此时将PC中存放的指令地址传给MAR,PC再指向下一条指令,此时MAR存放的是第四条指令的地址,因此到存储体中该地址处找到存储的数据(第四条指令),并将该指令放到MDR中,此时数据寄存器MDR将该指令交给指令寄存器IR
- 分析指令:IR将该指令分成两个部分:操作码和地址码,操作码交给控制单元(CU),地址码交给地址寄存器(MAR),CU经分析得知该指令想要执行存数操作
- 执行指令:将累加寄存器(ACC)中存储的数据放入数据寄存器(MDR)中,通过数据寄存器MAR中存储的地址找到存储体中对应的存储单元,此时将MDR中存储的数据放入这个存储单元即可。
具体过程:

- 执行第五条指令
- 取指令:第四条指令执行结束之后,PC指向的指令是第五条指令,此时将PC中存放的指令地址传给MAR,PC再指向下一条指令,此时MAR存放的是第五条指令的地址,因此到存储体中该地址处找到存储的数据(第五条指令),并将该指令放到MDR中,此时数据寄存器MDR将该指令交给指令寄存器IR
- 分析指令:IR将该指令分成两个部分:操作码和地址码,操作码交给控制单元(CU),地址码交给地址寄存器(MAR),CU经分析得知该指令想要执行停机操作
- 执行指令:利用操作系统中学习的中断处理机制结束该进程
具体过程:

四、计算机系统的层次结构
五、计算机的性能指标
相关文章:
【408之计算机组成原理】计算机系统概述
目录前言一、计算机的发展历程1. 计算机发展的四代变化2. 计算机元件的更新换代3. 计算机软件的发展二、计算机系统层次结构1. 计算机系统的组成2. 冯诺依曼体系结构3. 计算机的功能部件1. 输入设备2. 输出设备3. 存储器4. 运算器5. 控制器三、 分析计算机各个部件在执行代码中…...
1.Spring Cloud (Hoxton.SR10) 学习笔记—基础知识
本文目录如下:一、Spring Cloud基础知识什么是微服务架构?服务拆分 有哪些注意事项?什么是分布式集群?分布式的 CAP 原则?组件 - Spring Cloud 哪几个组件比较重要?组件 - 为什么要使用这些组件?组件 - Na…...
嵌入式开发工具箱【持续更新中】【VMware、Ubuntutftp、nfs、SecureCRT、XShell、Source Insight 4.0】
一、概述 本文主要介绍嵌入式开发过程中需要用到的工具及简单的使用方法。避免在搭建嵌入式开发环境时,需要四处寻找文档,收藏此文章,一文搞定。 大多数嵌入式开发环境是使用Linux作为目标开发系统,所以开发主机一般都是Linux系统…...
深究Java Hibernate框架下的Deserialization
写在前面 Hibernate是一个开源免费的、基于 ORM 技术的 Java 持久化框架。通俗地说,Hibernate 是一个用来连接和操作数据库的 Java 框架,它最大的优点是使用了 ORM 技术。 Hibernate 支持几乎所有主流的关系型数据库,只要在配置文件中设置好…...
微服务一 实用篇 - Docker安装
《微服务一 实用篇 - Docker安装》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - Docker安装》《微服务一 实用篇 - Docker安装》0.安装Docker1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker…...
JavaSE22-集合2-map
文章目录一、集合概念二、map集合1、Map集合的特点2、HashMap2.1 HashMap特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 使用entrySet遍历2.4.2 使用keySet遍历3、HashMap的key去重原理一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集…...
【项目精选】病历管理系统设计与实现(源码+视频)
点击下载源码 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量,促进医学科研、教学;减轻各类事务性工作的劳动强度,使他们腾出更多的精力和时间来服务于病人。本系统结构如下: 电子病例系统: 病人登…...
如何用Python把篮球和鸡联系起来
文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来,都首先得有个球,或者说要有一个球面,用参数方程可以表示为 xrcosϕcosθyrcosϕsinθzrsinϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…...
【RocketMQ】消息的刷盘机制
刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略: public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …...
AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed
💡Note:本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习ὤ…...
Java知识复习(八)Spring基础
1、什么是Spring框架? Spring :是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework,就是指如上图所示的各项功能模块Spr…...
WuThreat身份安全云-TVD每日漏洞情报-2023-02-27
漏洞名称:OTFCC 缓冲区错误漏洞 漏洞级别:中危 漏洞编号:CVE-2022-35060,CNVD-2023-11996,CNNVD-202209-1527 相关涉及:OTFCC OTFCC 漏洞状态:EXP 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-23648 漏洞名称:MuYucms 存在任意代码执行漏洞 漏洞级别:高危…...
上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》
❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...
dpi数据接入shell脚
原文:dpi数据接入shell脚本_weixin_34416754的博客-CSDN博客 ##############从ftp服务器拿数据文件 #!/bin/bash #获取感知优良率DPI数据 #DCN服务器信息 uSichuan pS988188# ip137.192.5.53 #获取日期,根据日期抓取文件 Tdate -d "3 days ago&…...
Easyrecovery数据恢复软件工作原理及使用介绍教程
Easyrecovery是一款强大的数据恢复软件,它专门解决磁盘数据恢复问题。在计算机世界里,数据丢失经常是一件令人头疼的事情,但是有了Easyrecovery,您可以放心大胆地享受数据备份和恢复的乐趣。EasyRecovery使用Ontrack公司复杂的模式…...
【面试题】社招中级前端笔试面试题总结
大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库typeof null 的结果是什么,为什么?typeof null 的结果是Object。在 JavaScript 第一个版本中,所有值都存储在…...
设备运行状况不能远程手机查看。难道就妥协吗?为何不试试这个办法
一、背景 随着国家经济结构逐步调整,纺织行业自动化、智能化水平逐步提高,业内竞争程度也将加大;整个市场变化快,并呈现出智能化、通用化、网络化、复杂化的新发展趋势。客户订单小批量、个性化、快速交货的特点越来越明显&#…...
重新认识 Java 中的内存映射(mmap)
mmap 基础概念 mmap 是一种内存映射文件的方法,即将一个文件映射到进程的地址空间,实现文件磁盘地址和一段进程虚拟地址的映射。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页到对应的文…...
224. 基本计算器
224. 基本计算器给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1:输入:s "1 1"输出:2示例 2&#…...
微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题
前言 博主自己在22年夏天根据课程要求做了一个小程序连接阿里云服务器的案例,在最近又碰到了相应的需求。 原参考文章:微信小程序 Node连接本地MYSQL_微信小程序nodejs连接数据库_JJJenny0607的博客-CSDN博客 ,还请多多支持原作者! 第二次…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
