1.计算机系统概述

目录

一. 计算机的发展

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

三. 各个硬件的工作原理

(1)主存储器

(2)运算器

(3)控制器

(4)一个例子

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

五. 计算机的性能指标

(1)CPU

(2)系统整体性能指标


一. 计算机的发展

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

冯诺伊曼机——“存储程序”的概念:是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

在计算机系统中,软件和硬件在逻辑上是等效的。例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法运算来实现。

冯·诺依曼计算机的特点:

  1. 计算机由五大部件组成
  2. 指令和数据以同等地位存于存储器,可按地址寻访
  3. 指令和数据用二进制表示
  4. 指令由操作码和地址码组成
  5. 存储程序
  6. 以运算器为中心

输入/输出设备与存储器之间的数据传送通过运算器完成。

现代计算机:以存储器为中心。CPU=运算器+控制器。

计算机的组成结构:

注意:主存(Main Memory)是计算机中用于存储数据和程序的部分。它是计算机的内部存储器,也被称为内存或随机存取存储器(RAM)。主存具有较快的读写速度,可以直接被中央处理器(CPU)访问。辅存(Secondary Storage)是计算机中用于长期存储数据和程序的部分。它通常是磁盘驱动器或固态硬盘(SSD),用于存储操作系统、应用程序、文件和其他数据。辅存的读写速度较慢,但它可以存储大量数据,并且可以长期保存数据,即使计算机关闭或断电。辅存也被称为外部存储器。

三. 各个硬件的工作原理

(1)主存储器

存储体:存放数据,由一系列存储元件构成,可存放二进制数据0和1。数据在存储体内按地址存储。

  • 存储单元:每个存储单元存放一串二进制代码
  • 存储字(word):存储单元中二进制代码的组合
  • 存储字长:存储单元中二进制代码的位数
  • 存储元:即存储二进制的电子元件(电容),每个存储元可存1bit。多个存储元加线路就组成存储单元。

Memory Address Register(MAR)存储地址寄存器:寄存器也用来存放数据。MAR的位数反映了存储单元的个数。例如:MAR=4位→总共有2^4=16个存储单元。

Memory Data Register(MDR)存储数据寄存器:MDR的位数=存储字长。例如:MDR=16位→每个存储单元可存放16bit,1个存储字(word)= 16bit。

现代计算机也通常把MAR和MDR集成在CPU里。

易混淆:1个字节(Byte) = 8bit,1B=1个字节,1b=1个bit

总容量=存储单元个数×存储字长bit=存储单元个数×存储字长/8 Byte。

Eg: MAR为32位,MDR为8位,总容量=2^{32}*8bit=4GB 

注意:K=2^{10},M=2^{20},G=2^{30},T=2^{40}
 

(2)运算器

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

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

(3)控制器

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

(有时也把前两个统称为取指)

(4)一个例子

下面举例来说明各硬件的工作过程。例如,在计算机中运行C程序:

计算机经过编译后把程序翻成二进制码,同时数据存入主存。代码和数据都存入存储体:

以第一条语句为例,读取a至累加器ACC:

  • 初:(PC)=0,指向第一条指令的存储地址
  • #1:(PC)→MAR,导致(MAR)=0
  • #3:M(MAR)→MDR(把存储体中MAR地址中的数据读到MDR),导致(MDR)=000001 0000000101
  • #4: (MDR)→IR,导致(IR)=000001 0000000101
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是一条取数指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=5
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000010=2
  • #9: (MDR)→ACC,导致(ACC)=0000000000000010=2

取指令(#1~#4),PC自动加1→分析指令(#5)→执行取数指令(#6~#9)。

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

上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2

  • #1:(PC)→MAR,导致(MAR)=1
  • #3:M(MAR)→MDR,导致(MDR)=000100 0000000110
  • #4:(MDR)→lR,导致(IR)= 000100 0000000110
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,000100是一条乘法指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=0000000110(2)=6
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000011=3
  • #9:(MDR)→MQ,导致(MQ)=0000000000000011=3
  • #10:(ACC)→x,导致(X)=2
  • #11:(MQ)*(X)→ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储

取指令(#1~#4),PC自动加1→分析指令(#5)→执行乘法指令(#6~#11)

上一条指令取指后(PC)=2,执行后,(ACC)=6

  • #1:(PC)→MAR,导致(MAR)=2
  • #3:M(MAR)→MDR,导致(MDR)= 000011 0000000111
  • #4:(MDR)→>IR,导致(IR)= 000011 0000000111
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,000011是一条加法指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=7
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000001=1
  • #9:(MDR)→x,导致(X)=0000000000000001=1
  • #10:(ACC)+(X)→ACC,导致(ACC)=7,由ALU实现加法运算

取指令(#1~#4),PC自动加1→分析指令(#5)→执行加法指令(#6~#10)

上一条指令取指后(PC)=3,执行后,(ACC)=7

  • #1:(PC)→MAR,导致(MAR)=3
  • #3:M(MAR)→MDR,导致(MDR)=000010 0000001000
  • #4:(MDR)→IR,导致(IR)= 000010 0000001000
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是一条存数指令
  • #6: Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=8
  • #7:(ACC)→MDR,导致(MDR)=7
  • #9:(MDR)→地址为8的存储单元,导致y=7

上一条指令取指后(PC)=4:

  • #1:(PC)→MAR,导致(MAR)=4
  • #3:M(MAR)→MDR,导致(MDR)=000110 0000000000
  • #4:(MDR)→R,导致(IR)= 000110 0000000000
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知这是停机指令,利用系统中断机制停止该进程。

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

操作系统层:由操作系统程序实现。操作系统程序由机器指令和广义指令组成,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,这一层也称为混合层。

编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)

解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)

编译、汇编、解释程序,可统称翻译程序。

五. 计算机的性能指标

(1)CPU

CPU主频:CPU内数字脉冲信号振荡的频率。CPU主频与时钟周期互成倒数关系:

CPI (Clock cycle Per Instruction):执行一条指令所需的时钟周期数。不同的指令,CPI不同。甚至相同的指令,CPl也可能有变化。

执行一条指令的耗时=CPI×CPU时钟周期,CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频

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

解:\frac{1}{1000}\times 100\times3=0.3s

IPS ( Instructions Per Second ):每秒执行多少条指令(KIPS,MIPS)

FLOPS ( Floating-point Operations Per Second):每秒执行多少次浮点运算(KFLOPS...)

注:此处K、M、G、T为数量单位:
K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9,T=Tera=万亿=10^12

(2)系统整体性能指标

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

吞吐量:指系统在单位时间内处理请求的数量。

它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。

响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。

基准程序(动态测试):是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。(eg.跑分软件)

问1:主频高的CPU一定比主频低的CPU快吗?——不一定,如两个cPU,A的主频为2GHz,平均CPl=10;B的主频1GHz,平均CPl=1...
问2:若A、B两个CPU的平均CPI相同,那么A一定更快吗?——也不一定,还要看指令系统,如A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令。
问3:基准程序执行得越快说明机器性能越好吗?——基准程序中的语句存在频度差异,运行结果也不能完全说明问题。

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

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

相关文章

linux下使用vscode对C++项目进行编译

项目的目录结构 头文件swap.h 在自定义的头文件中写函数的声明。 // 函数的声明 void swap(int a,int b);swap.cpp 导入函数的声明&#xff0c;写函数的定义 #include "swap.h" // 双引号表示自定义的头文件 #include <iostream> using namespace std;// 函…

Idea 对容器中的 Java 程序断点远程调试

第一种&#xff1a;简单粗暴型 直接在java程序中添加log.info()&#xff0c;根据需要打印信息然后打包覆盖&#xff0c;根据日志查看相关信息 第二种&#xff1a;远程调试 在IDEA右上角点击编辑配置设置相关参数在Dockerfile中加入 "-jar", "-agentlib:jdwp…

React 项目结构小结

React 项目结构小结 简单的记录一下目前 React 项目用的依赖和实现 摸索了大半年了大概构建一套用起来还算轻松的体系……&#xff1f;基本上应该是说可以应对大部分的项目了 使用的依赖 目前项目还在 refactoring 的阶段&#xff0c;所以乱得很&#xff0c;这里是新建一个…

NLP之Bert多分类实现案例(数据获取与处理)

文章目录 1. 代码解读1.1 代码展示1.2 流程介绍1.3 debug的方式逐行介绍 3. 知识点 1. 代码解读 1.1 代码展示 import json import numpy as np from tqdm import tqdmbert_model "bert-base-chinese"from transformers import AutoTokenizertokenizer AutoToken…

基于变色龙算法的无人机航迹规划-附代码

基于变色龙算法的无人机航迹规划 文章目录 基于变色龙算法的无人机航迹规划1.变色龙搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用变色龙算法来优化无人机航迹规划。 1.变色龙…

系列十二、过滤器 vs 拦截器

一、过滤器 vs 拦截器 1.1、区别 &#xff08;1&#xff09;触发时机不一样&#xff0c;过滤器是在请求进入容器后Servlet之前进行预处理的&#xff0c;请求结束返回也是&#xff0c;是在Servlet处理完后&#xff0c;返回给前端之前&#xff1b; &#xff08;2&#xff09;过滤…

MySQL性能优化的最佳20条经验

概述 关于数据库的性能&#xff0c;这并不只是DBA才需要担心的事。当我们去设计数据库表结构&#xff0c;对操作数据库时(尤其是查表时的SQL语句)&#xff0c;我们都需要注意数据操作的性能。下面讲下MySQL性能优化的一些点。 1. 为查询缓存优化你的查询 大多数的MySQL服务器…

企业财务数字化转型的机遇有哪些?_光点科技

随着数字技术的飞速发展&#xff0c;企业正面临着一个前所未有的转型机会。尤其在财务领域&#xff0c;数字化不仅仅是一种技术进步&#xff0c;更是一个全面提升企业竞争力的战略选择。那么&#xff0c;企业财务数字化转型所带来的机遇有哪些&#xff1f; 提高效率与生产力 数…

机器学习中的关键组件

机器学习中的关键组件 数据 每个数据集由一个个样本组成&#xff0c;大多时候&#xff0c;它们遵循独立同分布。样本有时也叫作数据点或数据实例&#xff0c;通常每个样本由一组称为特征或协变量的属性组成。机器学习会根据这些属性进行预测&#xff0c;预测得到的称为标签或…

鸿蒙LiteOs读源码教程+向LiteOS中添加一个简单的基于线程运行时的短作业优先调度策略

【⭐据说点赞收藏的都会收获好运哦&#x1f44d;】 一、鸿蒙Liteos读源码教程 鸿蒙的源码是放在openharmony文件夹下&#xff0c;openharmony下的kernel文件夹存放操作系统内核的相关代码和实现。 内核是操作系统的核心部分&#xff0c;所以像负责&#xff1a;资源管理、任…

使用JMeter进行接口压力测试

1.我首先创建一个线程组 2.创建好之后如图所示 3. 进行配置 4. 然后添加一个https请求 5.创建好之后设置请求方法和对应参数 6.设置表格监听器 7.创建好之后如图所示 8.保存jmx文件后点击运行进行测试&#xff0c;结果反馈如下图

从源码中看@Qualifier注解

theme: smartblue 摘要 Qualifier注解通常和Autowired注解一起使用&#xff0c;那么首先来看Autowire是怎么把Bean对象注入到Spring容器中的。 前置-Autowired注入原理 前置条件&#xff1a;需要读者了解Autowired是如何将类注入进来的。 深入解析 Spring Framework 中 Au…