当前位置: 首页 > article >正文

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

文章目录

  • 概要
  • 计算机硬件的基本组成
    • 早期冯诺依曼的结构
      • 介绍
      • 特点
    • 现代计算机的结构
      • 介绍
      • 五大部件的归属
    • 五大部件
      • 存储器:
        • 存储体
      • 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文件,可执行文件生成之后放在外村,在运行时调入内存。

在这里插入图片描述

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


http://www.kler.cn/a/231638.html

相关文章:

  • 利用Python爬虫获取淘宝店铺详情
  • 阿里云引领智算集群网络架构的新一轮变革
  • C/C++中使用MYSQL
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • 前端隐藏元素的方式有哪些?HTML 和 CSS 中隐藏元素的多种方法
  • C++ 内联函数
  • python将word文件转换成pdf文件
  • 队列---数据结构
  • 学习与非学习
  • Docker-Learn(三)创建镜像Docker(换源)
  • nohup基本使用
  • Ubuntu权限相关命令
  • 【Linux】Ubuntu 22.04 升级 nodejs 到 v18
  • Java学习网络编程
  • QT QCombox 样式表 比起作用
  • Verilog刷题笔记28
  • canvas实现涂鸦画板功能
  • Apollo分布式配置中心
  • 使用QT编写一个简单QQ登录界面
  • 操作系统-【预备学习-1】(Linux 文件目录)
  • linux系统非关系型数据库redis的配置文件
  • TCP 粘包/拆包
  • 1-1 动手学深度学习v2-线性回归-笔记
  • 数模.matlab画图
  • Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案
  • 网络5.0内生安全可信体系关键技术(上)