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

【计算机组成原理 - 第一章】计算机系统概论(完结)

本章参考王道考研相关课程:

【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili

【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili

【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili

【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili

目录

一、计算机的发展

二、计算机软硬件概念

三、计算机系统层次结构

1、三个级别的语言

2、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?

四、计算机的基本组成

1、冯诺依曼计算机特点

2、计算机硬件框图

(1)主存储器(cpu可以直接访问)、辅助存储

(2)运算器

(3)控制器

五、计算机工作过程

1、取数指令 ​编辑

2、乘法指令

 3、加法指令

4、存数指令

5、计算机工作过程总结

1、取指阶段(必经阶段)

2、分析阶段(必经阶段)

3、执行阶段(根据不同指令步骤不同)

六、计算机性能指标 

1、机器字长

2、存储器的性能指标

3、CPU的性能指标

4、系统整体性能指标

5、主频高的CPU一定比主频低的CPU快吗?为什么?


一、计算机的发展

  • 第一代:电子管计算机
  • 第二代:晶体管计算机
  • 第三代:较小规模集成电路
  • 第四代:较大规模集成电路

二、计算机软硬件概念

279dc12d04f24bd1a21efb79884ff0c2.jpg

  • 系统软件:标准程序库、语言处理程序、操作系统、服务程序、数据库管理系统、网络软件等
  • 应用软件:科学计算类程序,工程设计类程序,数据统计与处理程序

三、计算机系统层次结构

8bc55da0348547cb851e1e0055568b40.jpg

1、三个级别的语言

  • 机器语言:二进制代码,计算机唯一可以直接识别和执行的语言
  • 汇编语言:用英文单词或其缩写代替二进制指令,必须经过一个称为汇编程序的系统软件翻译,将其转换为机器语言,才能在计算机的硬件系统上执行
  • 高级语言:为方便程序员处理问题,经过编译程序编译成汇编语言,然后通过汇编程序转换成机器语言,或直接由高级语言程序翻译成机器语言

  • 高级语言 ——编译——> 汇编语言 ——汇编——> 机器语言
  • 边翻译边执行叫做解析

2、翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?

翻译程序:包括编译程序解释程序

  • 编译程序:将高级语言一次全部翻译成目标程序
  • 解释程序:翻译一句执行一句,并且不会生成目标程序

汇编程序:将汇编语言翻译成机器语言

四、计算机的基本组成

1、冯诺依曼计算机特点

  • 计算机由运算器存储器控制器输入设备输出设备组成
  • 指令和数据以同等地位存放于存储器内,并按地址寻访
  • 数据和指令均用二进制数表示
  • 指令由操作码地址码组成
  • 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
  • 早期冯诺依曼机最根本特征是【程序存储】,即按照地址访问并顺序执行指令
  • 计算机五大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能

2、计算机硬件框图

8a605fc6cf654ed59599217a457e0011.jpg

(1)主存储器(cpu可以直接访问)、辅助存储

存储体含有许多存储单元,每个存储单元包含若干个存储元,每个存储元可以0或1

  • 存储字:一个存储单元存储一串二进制代码
  • 存储字长:这串二进制代码的位数

为了实现按地址存取,主存配置两个寄存器:

  • 地址寄存器MAR:指明要读/写哪个存储单元。位数=存储单元的个数
  • 数据寄存器MDR:暂存要读/写的数据。位数=存储字长

e6a361e30993479e9e1bd68aed8a94ae.jpg

(2)运算器

  • 运算器最少包括3个寄存器和一个算数逻辑单元ALU
  • 寄存器:ACC累加器、MQ乘商寄存器、X操作数寄存器

(3)控制器

  • 完成一条指令操作:取指阶段PC、分析阶段IR、执行阶段CU
  • 控制器由PC程序计数器、IR指令寄存器、CU控制单元组成

  • (Program Counter)PC程序计数器:存放下一条指令的地址,将指令传给MAR,有自动+1功能
  • (Instruction Register)IR指令寄存器:存放当前执行的指令,拆分出操作码传给CU,拆分出地址码传给MAR,MAR在主存储体中取出数据传给MDR
  • (Control Unit)CU控制单元:分析指令,给出控制信号

五、计算机工作过程

【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili(16min开始)

高级语言的一段代码

int a=2,b=3,c=1,y=0;

void main()
{
    y=a*b+c;
}

1、取数指令 

2、乘法指令

 3、加法指令

4、存数指令

5、计算机工作过程总结

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

1、取指阶段(必经阶段)

  • PC存放下一条指令的地址 ——> MAR(存放欲访问的存储单元地址)
  • MAR在存储体内找到存储指令的地址 ——> MDR(存放从主存储体取来的数据)
  • MDR将指令 ——> IR(存放当前执行的指令)
  • 取数阶段结束 PC++

2、分析阶段(必经阶段)

  • IR拆分出操作码 ——> CU   
  • 分析阶段结束

3、执行阶段(根据不同指令步骤不同)

  • IR拆分出地址码 ——> MAR
  • MAR在存储体内找到存储的数据的地址 ——> MDR
  • MDR ——> ACC
  • 执行阶段结束

六、计算机性能指标 

1、机器字长

CPU一次能处理数据的位数,一般等于内部寄存器的大小,决定了计算机的运算精度

2、存储器的性能指标

  • MAR:位数反映存储单元的数量
  • MDR:位数反映存储字长(存储字长=存储单元二进制码的位数)

总容量 = 存储单元个数×存储字长 bit(b)

            = 存储单元个数×存储字长÷8 byte(B)

1 byte = 8 bit

eg:MAR为32位,MDR为8位

总容量 = 2^{32}\times 8 \ bit=4GB

描述存储容量、文件大小时:

K—2^{10}        M—2^{20}        G—2^{30}        T—2^{40}        P=2^{50}

3、CPU的性能指标

1、时钟周期:CPU中最小时间单位(单位:微秒、纳秒)

2、CPU主频(时钟频率):CPU内数字脉冲信号振荡频率,主频越高的CPU不一定比主频低的CPU快

CPU主频=1/时钟周期 (单位:Hz)

3、CPI:执行一条指令所需的时钟周期数,不同指令CPI不同,相同指令CPI也可能变化

4、CPU执行时间(运行一个程序花费的时间) =(指令条数×CPI)÷主频

eg:某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3,问该程序走该CPU上执行需要多久?

100×3÷1000=0.3s

5、IPS:每秒执行多少条指令 IPS=主频÷平均CPI

KIPS、MIPS——比如:2MIPS,即每秒能执行 2\times 10^{6} 条指令

6、FLOPS:每秒执行多少次浮点运算

KFLOPS、MFLOPS、GFLOPS、TFLOPS

7、核数——处理器个数(核心数:八核)

描述频率、速度时: 

K=10^{3}      M=10^{6}     G=10^{9}      T=10^{12}     

4、系统整体性能指标

1、数据通路带宽:数据总线一次所能并行传送信息的位数,各硬件部件通过数据总线传输数据

2、吞吐量:指系统在单位时间内处理请求的数量,主要取决于主存的存储周期

3、响应时间

4、基准程序(动态测试):像鲁大师这种跑分软件,一般情况下,基准测试程序能够反映机器性能的好坏。但由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题

5、主频高的CPU一定比主频低的CPU快吗?为什么?

衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏

CPU的主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、 Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象


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

相关文章:

  • 微服务篇-深入了解 MinIO 文件服务器(你还在使用阿里云 0SS 对象存储图片服务?教你使用 MinIO 文件服务器:实现从部署到具体使用)
  • Web开发:ORM框架之使用Freesql的分表分页写法
  • 安卓15预置第三方apk时签名报错问题解决
  • module ‘django.db.models‘ has no attribute ‘FieldDoesNotExist‘
  • 浏览器http缓存问题
  • 【Android】application@label 属性属性冲突报错
  • 理解 zk-SNARKs 和 zk-STARKs 的区别
  • Vue3做出B站【bilibili】 Vue3+TypeScript+ant-design-vue【快速入门一篇文章精通系列(一)前端项目案例】
  • 20年程序员生涯,读了200多本技术书,挑了几本精华好书分享给大家
  • 【代码随想录训练营】【Day44】第九章|动态规划|完全背包理论基础|518.零钱兑换 II|377.组合总和 Ⅳ
  • 操作技巧 | 在Revit中借用CAD填充图案的方法
  • Linux操作系统基础的常用命令
  • 【数论】最大公约数、约数的个数与约数之和定理
  • python自动化办公(二)
  • JAVA进阶 —— Stream流
  • java八股文--java基础
  • Tesla都使用什么编程语言?
  • 处理机调度与死锁-----计算机操作系统
  • 一眼看破五花八门的链表结构
  • 【Linux】进程的程序替换
  • 使用new bing简易教程
  • 操作系统(2.1)--进程的描述与控制
  • Spark的基本概念与架构
  • STM32F103R8T6 SPWM实现正弦波输出
  • MySQL 约束介绍
  • Python如何打包exe文件?如何换成喜欢的图标?