计算机组成原理——计算机系统概述

文章目录

  • 概要
  • 计算机硬件的基本组成
    • 早期冯诺依曼的结构
      • 介绍
      • 特点
    • 现代计算机的结构
      • 介绍
      • 五大部件的归属
    • 五大部件
      • 存储器:
        • 存储体
      • MAR、MDR
      • 运算器
      • 控制器
    • 运行原理
  • 计算机软件
    • 系统软件和应用软件
    • 三种级别的语言
      • 编译程序与解释程序的区别
    • 软件硬件功能程序的等价性
    • 指令集体系结构(ISA)
    • 总结
  • 计算机系统的层次结构
  • 计算机系统的工作原理

概要

  1. 了解冯诺依曼式计算机的结构组成及其特点
  2. 掌握评价计算机硬件的技术指标;
  3. 掌握计算机系统的工作过程;
  4. 掌握计算机的层次结构;
  5. 了解计算机的发展史及计算机的分类方式。

计算机硬件的基本组成

早期冯诺依曼的结构

介绍

早期ENIAC类型的计算机由于需要手动接线来控制计算,虽然简算速度快,但是被手动控制速度大大抵消,整体运行过程中却很慢。

冯诺依曼对此提出了存储程序的概念,所谓存储程序是指将指令的二进制代码的形式事先输入计算机的主存储器,然后按其在存储程序的首地址执行第一条指令,以后就按该程序的规定顺序执行其他命令,直至程序执行结束。

存储结构的概念旨在按顺序执行替代手动控制大大提高运行速度。

在这里插入图片描述

特点

  1. 计算机有五大部件组成
  2. 指令和数据以同等地位存于存储器,可按地址寻访
  3. 指令和数据采用二进制
  4. 指令由操作码和地址码组成
  5. 存储程序
  6. 以运算器为中心(输入设备/输出设备之间的数据传输需要运算器中转完成)

为何说是运算器为中心的?
以下图一个工程为例,计算机的五大部件可以看做加工厂的各个部门,原材来不是直接进入仓储部门,而是经加工部门放入仓储部门,然后才从仓储部门拿出来进行加工,在输出方面,处理好的数据也不是直接由销售部门从仓储部门取走,而是先将数据过一下生产加工部门的中转,然后再给到销售部门。可以说早期的冯诺依曼设计模式是低效的。
在这里插入图片描述

现代计算机的结构

介绍

针对冯诺依曼以运算器为中心特点的低效性,现代计算机作出了优化,改变为以存储器为中心的模式。

现代计算机结构:数据由输入设备直接进入存储器,运算器,控制器,存储器三者相互搭配合,处理完的数据直接从存储器传出输出设备。
·在这里插入图片描述
由于运算器和控制器的关系及其紧密,所以在大规模集成电路工艺出现以后,通常把运算器和控制器整合在同一个芯片上,这个芯片也就是我们常说的CPU。

以下为计算机的实际结构图:
在这里插入图片描述

五大部件的归属

在这里插入图片描述

五大部件

存储器:

主存: 存储体+MAR+MDR

存储体

存储体有一个的存储单元构成,存储单元里边存放的数据叫做存储字(二进制代码),存储字的长度叫做存储字长;
存储单元有存储元构成,存储元是一个个电子元件,表示0/1,可就是可以表示1bit;
每个存储单元是8的倍数;
在这里插入图片描述
MAR的位数决定存储单元的个数: MAR = 4位,可推出总共有2^4个存储单元。
MDR的位数等于存储字长,根据不同的服务器存储字长不一样。

MAR、MDR

MAR:存储地址寄存器,暂存地址。
MDR:存储数据寄存器,暂存数据。

下图是一个主存储器的基本组成示例图,工作方式类似照菜鸟驿站的工作方式。
在这里插入图片描述

取:
彭于晏告诉店员(地址寄存器)想要你的取货码(地址),店员会在货架(存储体)上找到对应的货物(数据),然后把货物放到柜台(数据寄存器)上。由彭于晏取走。
存:
将数据放到数据寄存器中,并在地址寄存器上写下数据想要存储的位置,有主存将数据放到对应的位置

运算器

运算器是用于实现算术运算(加减乘除)、逻辑运算(与或非)。

ACC:累加器,用于存放操作数(加数,减数),或者运算结果(和、差)
MQ:乘商寄存器,在乘除运算时,用于存放操作数(乘数,除数)或者运算结果(积、商)。
X:通用的操作数寄存器(可能有多个),用于存放操作数(被加数,被乘数,被除数,被减数)
ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算。核心部件

ACC、MQ、X都是数据寄存器,ALU是运算器,成本最高

控制器

控制器

CU: 控制单元,分析指令,给出控制信号,最核心
IR:指令寄存器,存放当前执行的指令
PC:程序计数器,存放下一条指令地址,有自动加一的功能

完成一条指令:取指令,分析指令,执行指令三步

运行原理

说实话,比较难,大体知道运行过程就可,后续如果必须了解再补上

取指、分析指令

  1. (PC) -->MAR :将PC中的地址放入MAR中

  2. M(MAR)–>MDR : 主存按照MAR中的地址在存储体中寻找相应的指令放入MDR中

  3. (MDR) ->IR:将MDR中的指令存入IR中

  4. (PC)+1–>PC:程序计数器+1
    ——取指令结束——

  5. OP(IR) -->CU: 将IR中的指令的操作码经由CU中进行分析,判断是何种指令
    ——分析指令结束——

  6. Ad(IR) --> MAR:将指令中的地址码放入MAR中

  7. M(MAR)–>MDR : 主存按照MAR中的地址在存储体中寻找相应的指令放入MDR中

  8. (MDR)–>ACC/X/MQ:将数据放入ACC或者X或者MQ中
    ——执行指令结束——

1到5对应取指和分析指令的步骤,过程都是一样的,剩下的步骤根据指令中的操作码不同会有不同的变化

计算机软件

系统软件和应用软件

三种级别的语言

高级语言:源程序,由常用的编程语言编写C、C++、Java、Python等
汇编语言:汇编语言是对机器语言进行符号化的表示,使用助记符和符号可以更容易地理解和编写底层的计算机程序。每个汇编语言指令都对应着底层的机器指令,这些指令直接在计算机的处理器上执行
机器语言:机器语言(Machine language)是计算机可以直接执行的二进制指令表示形式。它是一种底层的、与具体计算机硬件密切相关的编程语言。机器语言使用二进制代码(由0和1组成的位模式)来表示计算机指令和数据。

高级语言都要转化成机器语言才能被计算机识别,由高级语言向低级语言转化主要有三种路径
1.高语言通过编译程序先变为汇编语言,再通过汇编程序转化为机器语言;
2.由高级语言通过编译器直接变为机器语言,暂无例子;
3.由高级语言通过解释器直接变为机器语言;

详细见下图:
在这里插入图片描述

编译程序与解释程序的区别

编译程序:将高级语言的源程序一次性全部翻译成机器语言,而后在再执行机器语言程序
解释程序:将源程序的一条语句翻译成机器语言,并立即执行,紧接着再翻一下一句再执行,一次只翻译一条

编译程序类似于作文翻译,一次翻译拿给领导看,解释程序类似同时传译,听到一句翻译一句。

软件硬件功能程序的等价性

同一个需求既可以依赖软件实现也可以依赖硬件实现,比如要完成 9856的数值计算,如果计算机硬件支持MUI数乘计算(借用于新的电路)直接可以获取结果,不过不支持数乘运算,则可用加法替代,6个985相加用以完成9856的数值计算的需求

软件和硬件的逻辑功能等价性是指同一个功能即可用硬件实现(性能高成本低高),也可用软件实现(性能第成本低),因此往往需要总和考虑性能和成本之间的权衡,因此引出指令集体系结构(ISA)
在这里插入图片描述

指令集体系结构(ISA)

指令集体系结构(ISA):是指定义一台计算机可以支持哪些指令,以及每条指令的最用是什么,每条指令的用法是什么

总结

在这里插入图片描述

计算机系统的层次结构

在这里插入图片描述

当汇编语言变为机器语言是,需要依赖一些库函数,因此在软件层面需要借助系统调用

计算机系统的工作原理

如下图:
在这里插入图片描述

程序员编写的代码先进行预编译,后经过编译器,汇编器变为机器语言,最后通过链接器变为可执行的.exe文件,可执行文件生成之后放在外村,在运行时调入内存。

在这里插入图片描述

可执行文件在主存中的样子是运行原理中看到的指令数据图:
·在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLaMA 模型中的Transformer架构变化

目录 1. 前置层归一化(Pre-normalization) 2. RMSNorm 归一化函数 3. SwiGLU 激活函数 4. 旋转位置嵌入(RoPE) 5. 注意力机制优化 6. Group Query Attention 7. 模型规模和训练超参数 8. 分布式模型训练 前置归一化与后置…

音视频色彩:RGB/YUV

目录 1.RGB 1.1介绍 1.2分类 1.2.1RGB16 1)RGB565 2)RGB555 1.2.2RGB24 1.2.3RGB222 2.YUV 2.1介绍 2.2分类 2.2.1 YUV444 2.2.2 YUV 422 2.2.3 YUV 420 2.3存储格式 2.3.1 YUYV 2.3.2 UYVY 2.3.3 YUV 422P 2.3.4 YUV420P/YUV420SP 2.3.5 YU12 和…

JavaScript流程控制详解之循环结构(倒三角、九九乘法表)

循环结构 在JavaScript中,循环语句指的是在满足某个条件下重复执行 指定的一段代码。若条件结果为true,则重复执行,则进入循环,否则结束循环。 在JavaScript中,循环语句如下: while语句do…while语句for语句 while…

springboot163美食推荐商城的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

WifiConfigStore初始化读取-Android13

WifiConfigStore初始化读取 1、StoreData创建并注册2、WifiConfigStore读取2.1 文件读取流程2.2 时序图2.3 日志 1、StoreData创建并注册 packages/modules/Wifi/service/java/com/android/server/wifi/WifiConfigManager.java mWifiConfigStore.registerStoreData(mNetworkL…

Windows 安装 MySQL 最新最简教程

Windows 安装 MySQL 最新最简教程 官网地址 https://dev.mysql.com/downloads/mysql/下载 MySQL zip 文件 配置 MySQL1、解压文件 2、进入 bin 目录 搜索栏输入 cmd 回车进入命令行 C:\Users\zhong\Desktop\MySQL\mysql-8.3.0-winx64\mysql-8.3.0-winx64\bin 注意这里是你自己…

【数据分享】1929-2023年全球站点的逐日平均风速数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…

深入探索 Express.js 的高级特性

引言 Express.js 是一个基于 Node.js 平台的 Web 开发框架,旨在提供一种简单、易于使用的方式来创建 Web 应用程序。由于其灵活性和可扩展性,它已经成为了 Node.js 社区最受欢迎的框架之一。在本文中,我们将重点介绍 Express.js 的高级特性&…

Python 深入理解 os 和 sys 模块

Python 深入理解 os 和 sys 模块 OS 介绍代码智能连接(拼接)路径创建目录展示(列出目录)删除文件重命名文件或目录 sys 介绍代码命令行参数处理 (sys.argv)标准输入输出重定向 (sys.stdin, sys.stdout, sys.stderr):解…

08-Java过滤器模式 ( Filter Pattern )

Java过滤器模式 实现范例 过滤器模式(Filter Pattern)或允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来 过滤器模式(Filter Pattern) 又称 标准模式(Criteria Pattern…

基于LLM的Agent的兴起及其潜力:综述

原文链接:https://arxiv.org/pdf/2309.07864v1.pdf 1. Introduction LLM-based Agent的基本构成。本文认为,构成LLM-based Agent的核心部件有三个: brain: 主要目标有2个—信息记忆、信息处理perception: 主要目标在于让agent能够感受到更…

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

二进制安全虚拟机Protostar靶场(8)heap3 Fastbins unlink exploit

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 heap3 程序静态分析 https://exploit.education/protostar/heap-three/#include <stdlib.h> #include …

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…

携程网首页案例制作(移动端)

技术选型 方案&#xff1a;采用单独制作移动页面方案 技术&#xff1a;布局采用flex布局 body样式 通常要设置最大宽度&#xff0c;最小宽度&#xff0c;水平居中&#xff0c;字体设置&#xff0c;背景颜色以及相关初始化 body {max-width: 540px;min-width: 320px;margin…

CDH6.3.2 多 Spark 版本共存

一 部署Spark客户端 1.1 部署spark3客户端 tar -zxvf spark-3.3.1-bin-3.0.0-cdh6.3.2.tgz -C /opt/cloudera/parcels/CDH/lib cd /opt/cloudera/parcels/CDH/lib mv spark-3.3.1-bin-3.0.0-cdh6.3.2/ spark3将 CDH 集群的 spark-env.sh 复制到 /opt/cloudera/parcels/CDH/li…

RxJava Subject

目录 AsyncSubjectBehaviorSubjectPublishSubjectReplaySubjectSerializedSubjectUnicastSubject 在Rxjava中&#xff0c; Subject可以同时表示Observer和Observable, 允许从单个源到多个子观察者multiple child Observers。 除了 onSubscribe(io.reactivex.disposables.Dispos…

25、数据结构/二叉树相关练习20240207

一、二叉树相关练习 请编程实现二叉树的操作 1.二叉树的创建 2.二叉树的先序遍历 3.二叉树的中序遍历 4.二叉树的后序遍历 5.二叉树各个节点度的个数 6.二叉树的深度 代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h> ty…

使用easyExcel 定义表头 字体 格式 颜色等,定义表内容,合计

HeadStyle 表头样式注解 HeadFontStyle 表头字体样式 HeadStyle(fillPatternType FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor 22) HeadFontStyle(fontHeightInPoints 12) 以下为实现效果

PostgreSql与Postgis安装

POstgresql安装 1.登录官网 PostgreSQL: Linux downloads (Red Hat family) 2.选择版本 3.安装 ### 源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm ### 客户端 yum install postgresql14 ###…