计算机组成原理(计算机系统概述)

目录

  • 一. 计算机的发展
  • 二. 计算机硬件的基本组成
    • 2.1 早期冯诺依曼机
    • 2.2 现代计算机的结构
  • 三. 各硬件的工作原理
    • 3.1 主存储器的基本组成
    • 3.2 运算器的基本组成
    • 3.3 控制器的基本组成
  • 四. 计算机的工作过程

\quad

一. 计算机的发展

计算机系统 = 硬件 + 软件

软件
系统软件
应用软件
用来管理整个计算机系统: 比如操作系统 DBMS 语言处理程序
按任务需要编制成的各种程序: 比如抖音 王者荣耀

\quad

第一台电子计算机:ENIAC(1946)

\quad

硬件的发展

发展阶段逻辑元件优缺点
第一代电子管体积超大,耗电量超大
第二代晶体管体积、功耗降低, 出现面向过程的程序设计语言:FORTRAN,有了操作系统雏形
第三代中小规模集成电路计算机主要用于科学计算等专业用途,高级语言迅速发展,开始有了分时操作系统
第四代超大规模集成电路开始出现 “微处理器”、微型计算机、个人计算机(PC)萌芽, 操作系统:window、MacOS、Linux

\quad

微处理器的发展

微处理器的定义:
微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。
微处理器能完成取指令、执行指令,以及与外界存储器逻辑部件交换信息等操作,是微型计算机的运算控制部分。它可与存储器和外围电路芯片组成微型计算机。

微型计算机的发展以微处理器技术为标志
在这里插入图片描述
机器字长: 一次整数运算所能处理的二进制位数
\quad
\quad
\quad
在这里插入图片描述
故事是这样的:
肖克利发明了晶体管, 创建了公司卖晶体管
后来那八个人慕名加入了肖克利公司
由于肖克利管理公司能力欠佳, 那八人离开了肖克利公司,
被称为八叛徒的他们创立了仙童半导体公司

\quad

摩尔定律

摩尔定律揭示了信息技术进步的速度, 集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍

也就是说
就是说我现在买了个2000元的晶体管, 过了18个月后,还用两千元就可以买到性能是之前两倍的晶体管

\quad

计算机目前的发展趋势

“两极分化”:
1.是微型计算机向更微型化、网络化、高性能、多用途方向发展(智能手表,手机)
2.是巨型机向更巨型化、超高速、并行处理、智能化方向发展(神威.太湖之光)

在这里插入图片描述

\quad

二. 计算机硬件的基本组成

\quad

计算机硬件的基本组成
早期冯诺依曼机的结构
现代计算机的结构

\quad

2.1 早期冯诺依曼机

\quad
在这里插入图片描述
“存储程序” 的概念是指将指令以二进制代码的形式事先输入计算机的主存储器, 电脑再一条一条的去执行, 而不是像之前的每执行一条程序就要手动接线
\quad
\quad
在这里插入图片描述
程序指令的解析是由控制器来决定的
控制器指挥程序运行
\quad

在计算机系统中, 软件和硬件在逻辑上是等效的

Eg: 对于乘法运算, 可以设计一个专门的硬件电路实现乘法运算, 也可以用软件的方式, 执行多次加法运算来实现

软件和硬件都可以实现某个功能
软件实现的话,性能更低, 当然成本也更低
硬件实现的话(可以设计运算器的结构),性能更高, 成本也更高

在这里插入图片描述
效率低的原因就是输出设备要从存储器里取出数据还需要通过运算器来完成
以运算器为中心

\quad

2.2 现代计算机的结构

\quad

在这里插入图片描述
现代计算机以存储器为中心
CPU=运算器+控制器

在这里插入图片描述

需要注意的是: 主机=内存+CPU, 而不是包含风扇和其他的
主存就是内存, 辅存是机械硬盘和固态硬盘

在这里插入图片描述
\quad
\quad
在这里插入图片描述

\quad

三. 各硬件的工作原理

\quad

3.1 主存储器的基本组成

在这里插入图片描述
MAR是地址寄存器
MDR是数据寄存器

CPU的读写操作与我们取快递类似
在这里插入图片描述

在这里插入图片描述
存储单元: 每个存储单元存放一串二进制代码
存储字长:存储单元中二进制代码的位数
存储字(word):存储单元中二进制代码的组合
(一个存储字可代表一个二进制数,也可代表一串字符,如存储字为0011011001111101,既可表示为由十六进制字符组成的367DH(ASCII码),又可代表16位的二进制数,此值对应十进制数为13 949,还可代表两个ASCII码:“6”和“}”。一个存储字还可代表一条指令。)
存储元:即存储二进制的电子元件,每个存储元可存1bit

在这里插入图片描述
例如:
MAR=4位 \quad ->总共可以有24个存储单元
MDR=16位 \quad ->每个存储单元可以存放16bit

\quad

1字节(Byte) = 8位(bit)固定的,注意B与b的区别
在16位的系统中(比如8086微机) 1字 (word)= 2字节(Byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(Byte)=32(bit)
在64位的系统中(比如win64)1字(word)= 8字节(Byte)=64(bit)

\quad

3.2 运算器的基本组成

\quad
运算器:用于实现算术运算(加减乘除)、逻辑运算(与或非)的

在这里插入图片描述
ACC(累加器):用于存放操作数或运算结果
MQ(乘商寄存器):在乘除运算时,用于存放操作数或运算结果
X(通用操作数寄存器):用于存放操作数
ALU(算术逻辑单元):通过内部复杂的电路实现算术运算、逻辑运算,是运算器的核心部件

\quad

3.3 控制器的基本组成

在这里插入图片描述
CU(控制单元):分析指令,给出控制信号,是控制器的核心部件
IR(指令寄存器):存放当前执行的指令
PC(程序计数器):存放下一条指令地址,有自动加1功能

在这里插入图片描述

\quad
\quad

四. 计算机的工作过程

\quad
\quad
以c语言为例 运行y=a*b+c的过程
在这里插入图片描述
指令由操作码地址码构成
这个是16bit的指令(有16位二进制)
\quad
在这里插入图片描述
寄存器名加上括号的意思是寄存器里面的内容(比如(MAR=0))
Memory(存储器)

程序计数器PC指向第一条指令, 主存地址为0, PC存放的内容需要通过地址总线传送到MAR(地址寄存器)中, 也就是说控制器要向主存地址要0号地址的指令,而且是读操作, 那么MAR就去存储体里面找出0号地址所对应的指令取出来放到MDR(数据寄存器)
\quad
\quad
在这里插入图片描述
IR为指令寄存器, MDR的指令传到IR里面

\quad

在这里插入图片描述

IR会把操作码送到CU控制单元里面, CU就会分析这个操作码, 结果是取数操作, 所以把这条指令的地址码对应的数据取出来放进ACC寄存器中(地址码所对应的十进制数是5, 那么就在主存地址5中拿到原始数据是a=2,然后a=2就会被送到ACC累加寄存器中)

第1~4步是取指令的过程
第5步是分析指令
第6~9步是执行取数指令

在完成取指令之后pc会自动加1

在这里插入图片描述
在这里插入图片描述

MQ(乘商寄存器)

在这里插入图片描述
被乘数a先被放在X(通用寄存器), b被放在MQ里面, 最后CU会让ALU(算数逻辑单元)进行乘法运算, 最后把乘得的结果放到ACC里面

如果ACC放不下, 就会把结果的低位放在MQ里面

在这里插入图片描述
ACC存放加数, X存放被加数

在这里插入图片描述
在这里插入图片描述

存数指令, 会把ACC里面的值传到MDR,而且MAR里面是存数指令地址为8, CU会告诉存储体为写操作, 于是存储器就会根据MAR里的地址把MDR的值存在存储体里

在这里插入图片描述

CPU区分指令和数据的依据: 指令周期的不同阶段

在这里插入图片描述

现在的计算机通常把MAR、MDR也集成在CPU内

科普:CPU是超大规模的集成电路的一种,而集成电路都可以叫做芯片

链接: 王道考研计算机组成原理

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十大排序之选择排序(详解)

文章目录 🐒个人主页🏅算法思维框架📖前言: 🎀选择排序 时间复杂度O(n^2)🎇1. 算法步骤思想🎇2.动画实现🎇 3.代码实现 🐒个人主页 🏅算法思维框架 &#x1f…

基于IDEA+SpringBoot+微服务开发的P2P平台项目

基于springboot的社区养老医疗综合服务平台 项目介绍💁🏻 项目名称:基于P2P的金融项目 一个基于P2P(点对点)模式的金融服务平台,致力于提供透明、高效、安全的金融服务。我们的目标是连接借款人与投资者&am…

pat实现基于邻接矩阵表示的深度优先遍历[含非递归写法]

文章目录 1.递归2.非递归 1.递归 void DFS(Graph G, int v) {visited[v] 1;printf("%c ", G.vexs[v]);for (int i 0; i < G.vexnum; i) {if (!visited[i] && G.arcs[v][i]) DFS(G, i);} }2.非递归 #include <stack> #include <iostream> …

如何打造垂直LLM的护城河

B2B人工智能初创企业的一个伟大策略是打造“垂直人工智能”产品&#xff1a;成为特定行业的人工智能助手&#xff0c;比如律师、金融服务、医生。 听起来很简单&#xff1a;你可以利用LLM的超能力&#xff0c;并将其应用于宠物行业的特定数据和用例。 这就是我们在Explain所做的…

【Clang Static Analyzer 代码静态检测工具详细使用教程】

Clang Static Analyzer sudo apt-get install clang-tools scan-build cmake .. scan-build make -j4 编译完成之后会在终端提示在哪里查看报错文档: scan-build: 55 bugs found. scan-build: Run scan-view /tmp/scan-build-2023-11-24-150637-6472-1 to examine bug report…

双向链表超详解——连我奶奶都能学会的复杂链表(带头双向循环)

文章目录 前言一、双向链表的概念二、双向链的结构设计三、双链表的基本功能接口四、双向链表接口的实现4.1、创建结点4.2、初始化链表4.3、打印链表4.4、尾插结点4.5、尾删结点4.6、头插结点4.7、头删结点4.8、在pos结点前面插入4.9、删除pos位置的结点4.10、查找链表中的某个…

VR Interaction Framework2.0使用

1 按键 &#xff0c;比如按压下手柄的B键 if (InputBridge.Instance.BButtonDown){print("kkkkkkbbbbb456");} 2抓取某个物体&#xff0c;那么就在要抓取的那个物体上加一些组件&#xff0c;特别是Grabble Unity Events

PyTorch-ReID重识别算法库与数据集资料汇总

Torchreid 是一个用于深度学习人员重新识别的库&#xff0c;用 PyTorch 编写&#xff0c;为我们的 ICCV’19 项目 Omni-Scale Feature Learning for Person Re-Identification 开发。 PyTorch-ReID的特点是 多GPU训练支持图像和视频 REID端到端培训和评估极其轻松地准备 Rei…

面试题:什么是自旋锁?自旋的好处和后果是什么呢?

文章目录 什么是自旋自旋和非自旋的获取锁的流程 自旋锁的好处AtomicLong 的实现实现一个可重入的自旋锁示例自旋的缺点适用场景 什么是自旋 “自旋”可以理解为“自我旋转”&#xff0c;这里的“旋转”指“循环”&#xff0c;比如 while 循环或者 for 循环。“自旋”就是自己…

JSP JSTL引入依赖并演示基础使用

然后 我们来讲 JSTL Java server pages standarded tag library 简称 JSTL 这是 一个 JSP的标准标签库 JSP标准标签的集合 封装了JSP中的通用核心功能 根据JSTL类库提供的标签 可以将他分为5个类 1 核心标签 2 格式化标签 3 SQL标签 4 XML标签 5 函数标签 这边 我们主要将 核…

Unity阻止射线穿透UI的方法之一

if(UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) return; 作者&#xff1a;StormerZ https://www.bilibili.com/read/cv27797873/ 出处&#xff1a;bilibili

C# 读写FDX-B(ISO11784/85)动物标签源码

本示例使用的发卡器&#xff1a;EM4305 EM4469 ISO11784/85协议125K低频FXD-B动物标签读写发卡器-淘宝网 (taobao.com) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using S…