【计算机组成入门到入土】解码计算机:冯·诺依曼架构如何主宰你的每一次点击

🔥小陈又菜: 个人主页

📖个人专栏: 《MySQL:菜鸟教程》《小陈的C++之旅》《Java基础》

✨️想多了都是问题,做多了都是答案!



目录

[1. 计算机系统简介](#1. 计算机系统简介)

[1.1. 现代计算机的多态性](#1.1. 现代计算机的多态性)

[1.2. 计算机的软硬件概念](#1.2. 计算机的软硬件概念)

[1.2.1. 计算机系统](#1.2.1. 计算机系统)

[1.2.2. 计算机系统的层次结构](#1.2.2. 计算机系统的层次结构)

[1.3. 计算机系统结构和计算机组成](#1.3. 计算机系统结构和计算机组成)

[2. 计算机的基本组成](#2. 计算机的基本组成)

[2.1. 冯诺依曼计算机的特点](#2.1. 冯诺依曼计算机的特点)

[2.2. 计算机硬件框图](#2.2. 计算机硬件框图)

[2.3. 计算机的工作步骤](#2.3. 计算机的工作步骤)

程序举例:

指令格式举例:

指令和数据都是保存在存储器中的:

存储器的基本组成

运算器的基本组成和操作过程

控制器的基本结构与功能

运算器、控制器、存储器构成了什么?

[3. 计算机硬件的主要技术指标](#3. 计算机硬件的主要技术指标)

[3.1. 机器字长](#3.1. 机器字长)

[3.2. 运算速度](#3.2. 运算速度)

[3.3. 存储容量](#3.3. 存储容量)


1. 计算机系统简介

1.1. 现代计算机的多态性

  • 传感器
  • 个人信息处理器
  • PC
  • 服务器
  • 高性能计算机

从广义上来将这些都是计算机,但是我们如果从高层抽象出来,可以发现它们的一些共性。

1.2. 计算机的软硬件概念

1.2.1. 计算机系统

更细分来讲,软件可以分为系统软件和应用软件:

1.2.2. 计算机系统的层次结构

我们采用一个简单的层次结构来说明软件和硬件之间的关系:

硬件在底层,软件在上层,硬件提供自己的接口给系统软件,系统软件调用接口来实现自己的功能,同时提供自己的接口给应用软件。

然后我们站在程序员的角度来看一看计算机的系统结构层次:

  • 使用编译程序翻译成汇编语言程序
  • 使用汇编程序翻译得到机器语言程序
  • 机器语言程序解释操作系统
  • 使用微指令解释机器指令
  • 硬件直接使用微指令

1.3. 计算机系统结构和计算机组成

从内容上讲,计算机组成和计算机系统结构有什么区别呢?

维度 计算机系统结构 计算机组成
核心问题 做什么? 怎么做?
抽象层次 程序员可见的抽象视图和功能属性。 对程序员透明的具体实现细节。
关注点 指令集、数据类型、寻址模式、I/O机制、外部接口。 数据通路、控制信号、存储器层次结构、ALU设计、时钟。
类比 建筑蓝图(规定有几个房间、每个房间的功能、门窗在哪)。 施工方案(决定用砖墙还是混凝土、水管电线如何铺设)。
目标 定义功能和行为,优化软件开发的效率和系统的性能价格比。 在系统结构定义的框架内,以最佳的性能价格比实现硬件。

我们总结一下:

  • 系统结构是计算机组成的抽象,组成是系统结构的具体化
  • 例如:同一种系统架构可以有不同的组成,Intel的Core i7和AMD的Ryzen处理器都遵循x86系统结构,但它们的内部组成(微架构)完全不同

2. 计算机的基本组成

2.1. 冯诺依曼计算机的特点

  • 计算机有五大部件组成
  • 指令和数据以同等的地位存于储存器
  • 指令和数据使用二进制表示
  • 指令有操作码和地址码组成
  • 存储程序
  • 以运算器为中心
  • 实线表示数据传输
  • 虚线表示控制和状态转换

然后我们简单介绍一下五大组件的功能:

  • 运算器:算数运算、逻辑运算
  • 存储器:存放数据和程序
  • 控制器:指挥、控制程序运行
  • 输入设备:将信息转换成机器能够识别的形式
  • 输出设备:将信息转换成人熟悉的形式

2.2. 计算机硬件框图

冯诺依曼结构的缺点:

  • 以运算器为中心的机器,导致运算器成为瓶颈

我们改进成为以储存器为中心框图(如上)

  • 冯诺依曼的计算机结构框图并没有分明的层次

现代的计算机框图(更加有层次):

从上面的这个框图我们也可以看出系统复杂性的管理我们有着科学的方法:

  • 层次化(将系统划分成为多个模块和子模块)
  • 模块化(有明确的定义和接口)
  • 规则化(模块更容易被复用)

2.3. 计算机的工作步骤

程序举例:

左边和右边是两个算法,右边明显更优。

指令格式举例:

上面的图我们可以知道,指令由操作码和地址码组成,那么根据上面的指令,我们可以写出上面那个计算程序的清单:

指令和数据都是保存在存储器中的:

  • 存储器的结构?
  • 如何进行访问?
  • 每次访问获得的数据的位数是多少?
存储器的基本组成

存储体 - 存储单元 - 存储元件(0/1)可以类比成:大楼 - 房间 - 床位(无人/有人)

  • 存储单元:存放一段二进制代码
  • 存储字:存储单元中二进制代码的组合
  • 存储字长:存储单元中二进制代码的位数(每一个存储单元都有一个地址)

MAR:存储器地址寄存器(保存了存储单元的地址/编号),反应存储单元的个数

MDR:存储器数据寄存器(保存了从内存中读取的数据/要写到内存中的数据),反应存储字长

这个地方我们做一个形象一点的解释:

MAR相当于我们借书时的图书索引号(几号柜几排几列),而MDR就相当于借书还书的柜台(柜台里面放了我们想要借出的书/想要归还的书)。

运算器的基本组成和操作过程

首先直观地通过这张图我们分析一下运算器的组成:

  • ALU:算数逻辑单元
  • ACC:累加器(存放操作数、存放运算结果、同时可以作为ALU的输入)
  • MQ:因为乘法操作导致结果长度增加一倍(多出来的部分储存在MQ)
  • X:储存另一个操作数

操作流程:

  • 加法操作
  • 减法操作
  • 乘法操作
  • 除法操作
控制器的基本结构与功能

控制器的功能:

  • 解释指令
  • 保证指令的按序执行

控制器的基本组成:

  • PC:程序计数器(存放当前要执行的指令的地址,并且具有计数功能(PC)+1 -> PC)
  • IR:指令寄存器(存放当前要执行的指令)
运算器、控制器、存储器构成了什么?

一条指令在主机上完成过程:

以一个取数指令为例,

  1. 程序就是一条条的指令构成的,PC中存放了当前要执行指令的地址
  2. PC会将这条地址送到MAR(用来保存这条指令的地址),MAR送入存储体
  3. MDR将指令的地址取出,并且传给给IR(存放要执行的指令)
  4. 此时OP(IR)也就是指令的操作码由CU接收进行分析
  5. CU会将取到的数据(放在指令的地址中)传回给MAR -> M -> MDR -> ACC

3. 计算机硬件的主要技术指标

3.1. 机器字长

CPU一次能够处理的数据的位数,与CPU的寄存器的位数有关

3.2. 运算速度

  • 主频
  • 核数
  • 吉普森法:
  • CPI:执行一条指令所需要的时钟周期数
  • MIPS:每秒执行多少百万条指令
  • FLOPS:每秒浮点运算次数

3.3. 存储容量

存放二进制的总位数


(本篇完)

相关推荐
凯子坚持 c2 小时前
通往Docker之路:从单机到容器编排的架构演进全景
docker·容器·架构
西陵8 小时前
Nx带来极致的前端开发体验——任务缓存
前端·javascript·架构
roshy10 小时前
x86、arm、rsc-v指令集架构,指令集、OS、应用3者的关系
java·arm开发·架构
科技百宝箱11 小时前
03-AI Agent全栈架构系统化落地指南
人工智能·架构
趣味编程11112 小时前
物联网系统三层架构解析
物联网·架构
mit6.82412 小时前
[Backstage] 认证请求的流程 | JWT令牌
架构
2351614 小时前
【MQ】RabbitMQ:架构、工作模式、高可用与流程解析
java·分布式·架构·kafka·rabbitmq·rocketmq·java-rabbitmq
wanhengidc15 小时前
云手机长期使用会消耗很多流量吗
网络·游戏·智能手机·架构·云计算
程序猿阿伟16 小时前
《3D山地场景渲染进阶:GPU驱动架构下细节与性能平衡的6大技术实践》
3d·架构
文火冰糖的硅基工坊16 小时前
[创业之路-691]:历史与现实的镜鉴:从三国纷争到华为铁三角的系统性启示
人工智能·科技·华为·重构·架构·创业