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

news2024/9/21 22:47:15

计算机底层和计算机原理!!!!

研究计算机硬件在底层是怎末运行的!

计算机硬件能识别的数据

用低电平表示0 用高电平表示1

皮卡丘使高电压!

计算机传递数据是用的电信号!!!

针脚是用来接受电信号的

1 计算机的发展

1.1 什么是计算机系统

计算机系统=硬件和软件!两个部分

硬件:计算机的实体部分看得见摸得到的部分

软件:看得见摸不着的 比如微信微博操作系统这些

硬件是物理基础--给出计算机系统的天花板在哪 而软件又可以让硬件发挥到什么程度!

软件

1.2 硬件的发展

电子管:【逻辑元件】用来处理电信号的最小单元!

只能识别0101,输入的时候就是要0101

体积变小了,但是是手动焊接的,不可靠

就是把晶体管、电容等高密度的集合在一起!

这个是可靠一点的

微处理器:intel

机器字长的提升会直接影响机器cpu的性能的!

16进制的加法 再8080上要运行两次 但在8086上只需要一次!

逻辑元件的集成度越来越高,元件越来越小,速度越来越快,功耗越来越低!

1.3 软件的发展

编程语言

机器语言--汇编语言--高级编程语言

编程语言是否方便好用直接决定了软件的世界是否足够丰富!

总结

2  计算机系统层次结构

2.1 计算机硬件的基本组成

现代计算机结构其实就是早期冯诺依曼结构的优化!

之前是说一句做一句 告诉一个指令然后做一个指令!

存储程序 一口气告诉计算器

0101二进制的数

运算器的中转进存储器

控制器:通过电信号来协调部件的工作,也负责解析存储器里的程序指令

逻辑等效:同一个功能既可以软件或者硬件完成!软件(成本和效率都低,硬件反之!)

冯特点:

以运算器为中心!!

数据传送也要运算器帮忙,本来运算器是用来数据处理的,这样就会导致效率降低!

本来采购部门可以直接给 仓储部门 加工之后放回到仓储 销售直接从仓储那 现在都要经过生产加工部门的帮忙 所以效率会降低!!!

解决方案:现代的计算机结构(以存储器为中心)

运算器和控制器十分紧密!

大规模集成电路出现以后 这两个通常是在一个芯片上的!

整合了这两个部件的芯片就是cpu

副存就是机械硬盘、固态硬盘

注意:主机只包含主存!!!

平时的app在副存!

当app启动的时候才进入主存

总结

2.2 各个硬件的工作原理

内部细节和如何运作的

主存储器

存储体是由存储元件构成 存放01

寄存器 也是存放数据的

类比菜鸟驿站:

cpu可以写也可以读!

存储体:

电容可以存储电荷 所以一个电容可以存储一个二进制的比特位 但不重要 只需要知道一个存储单元存储1bit就好!

MAR和MDR 与存储体的关系

字和字节!!!

运算器

X可能有多多个,但是1个就可以运算了

ALU是核心部件!!!实现算数运算和逻辑元素!

控制器

cu就是那个霸道总裁

计算机的工作过程

编码存入主存:

这些指令都是存储在存储体中的!

第一条指令:

第二条指令:

当取数指令 完成之后pc的值就会加一 也就是说这时运行下一条指令!

第二次的 操作码 是乘法 指令!

X和MQ存储的数进行相乘的操作!

如果进行乘商运算 操作数就放在乘商寄存器里!

b的值现在在乘胜寄存器MQ里【乘法运算的后一位(低位!)】

然后把a的值放入通用寄存器x里【乘法运算的高位!】

然后cu通过控制线告诉ALU(算数逻辑单元)让他进行乘法运算

运算的结果放在ACC里!

看出是乘法指令之后就会不同!

第三条

每一条指令结束之后 运算结果都在ACC里?

把后边的那个操作数 直接放在相应的乘商寄存器【做乘法】或x里【做累加的时候】

第四条

CU告诉存储体 我要进行的是存数的操作!

第五条

后边的就是操作系统的指令了

总结

cpu可以区分是指令还是数 然后指令放在IR里  数放在x或者MQ里  最后cu发送指令ALU 让ALU 进行运算!!!

存储体的概念弄清楚!字 字节 B b

2 只是放入不同的为止而已

4 有的计算机可以只是多个地址码 后面会将

5 在程序运行之前 指令和数据都会先存到主存里面!

2.3 计算机系统的多级层次结构

计算机系统的层次结构

微指令是对指令的分解!

汇编语言--虚拟机器 不能直接识别汇编语言!汇编语言和机器语言是一一对应的!

汇编语言 只是更便于人理解而已 和机器语言相比没有本质的区别 依然是低级语言!

高级语言--c+、java、python 

虚拟:(看起来机器好像直接能理解 但不是!!!)

三种级别的语言

机器语言程序才是可以让cpu运行的程序!

编译:一次 生成exe文件 效率高【手写翻译】

解释:翻译一句立即执行 效率低【同声传译】

C,C++是编译语言 而java python是解释型语言!

作用都是:把高级语言转换成低级语言!

总结

注意编译程序和解释程序的区别!

计算机体系结构vs计算机组成原理

3 计算机性能指标

3.1 存储器的性能指标

MAR 地址寄存器:有几个就有多少个地址编号!32位就有 2的32次方个地址!

MDR 数据寄存器:读入或者写入的数据是什么 就存储在MDR里!有几位就是几bit!

所以就可以计算总容量!

n个二进制位可以表示 2的n次方 种状态

2048 2 的11次方!

单位之间的换算

1KB = 1024B

3.2 cpu的性能指标

主频 每秒有多少个时钟周期

脉冲信号:指挥cpu所有部件一步一步工作的节奏!(广播体操 )

动作有先后顺序!

主频是10HZ表示的就是 1秒有10个脉冲信号!

对于相同型号的cpu来说,主频越高的话cpu速度就会越快

cpu主频很大程度上反应了cpu的性能 但是不是唯一指标!

还有其他因素:

CPI执行一个指令所需要的时钟周期数

之前的例子:取数指令需要9个步骤,乘法11,这两个指令所需要的时钟周期肯定不一样!

不同的cpu尽管执行的都是乘法程序,根据乘法指令实现的方式不同,时钟周期数量也可能不同!

同一个cpu执行相同的指令也有可能不同 比如取数 如果主存储器现在负荷太大的话 可能要花费更多的时钟周期!

cpi通常使用的是平均值

时钟周期长度 是 主频的倒数 

cpi是执行一条指令所需的周期数!

eg :cpu执行时间:

IPS每秒执行多少指令

主频是 每秒有多少个时钟周期

CPI是一个指令需要多少时钟周期

除一下就是 每秒执行多少指令

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

这里的KMGT 和存储单位哪里是不一样的!

2MIPS表示的是:仪表可以执行2*10的6次方个指令!

*单位在不同场景下 换算不同!!!

当描述存储器的容量或者文件的大小的时候:

数据的处理速率的时候:

3.3 系统整体性能指标【前几个是静态的】

数据带宽通路

cpu和内存 内存和I/O设备 之间的信息传输都是通过数据总线!!

比如数据带宽是8bit 如果要传输16bit 则需要传输两次

传两次肯定比传一次慢,因此 数据通路的带宽会直接影响到数据传输的效率!

吞吐量

可以理解成一条指令就是一个请求 或者一个完整的程序运行是一个请求 在不同的场景下理解也不同!食堂打饭的师傅:每秒可以完成多少个同学的饭就是师傅的吞吐量!

响应时间

也是很宽泛的指标

3.4 系统整体的性能指标(动态测试)

思考!?

A1秒可以运行0.2G这么多条指令

B1秒可以运行1G

总结:

注意cpu的计算!

注意单位换算的不同!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生-搭建dhcp服务并测试kickstart脚本

# 安装DHCP服务 【为其他服务器提供分配ip地址的功能,前提是其他服务器网卡必须设置成DHCP获取IP地址模式】 [rootpxe ~]# yum install dhcp.x86_64 -y[rootpxe ~]# rpm -qc dhcp /etc/dhcp/dhcpd.conf[rootpxe -]# cat /etc/dhcp/dhcpd.conf## DHCP Server Configu…

NLP论文阅读PALM

NLP论文阅读PALM 模型构成Joint Modeling of Autoencoding and AutoregressionInput&Output RepresentationsCopying Tokens from Context扩展词汇的分布复制分布最终分布 PALM: Pre-training an Autoencoding&Autoregressive Language Model for Context-conditioned …

[flink]部署模式

部署模式 在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。 Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode)、单作业模式(Per-Job Mode&…

Linux系统驱动(四)自动创建设备节点

自动创建设备节点 (一)创建设备节点的机制 1. mknod 将驱动编译到内核中,在内核启动时驱动自动被安装执行 2.devfs(2.4内核) 3. udev(2.6内核至今) 注:hotplug — 热插拔 &…

KamaCoder 101. 孤岛的总面积

题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。 现在你需…

Bugku -----Web-----全题目解析 (二) 超详细步骤

————————————————————分割线———————————————————— 6.矛盾 这一行从 URL 查询字符串中获取名为 num 的参数值,并将其赋值给 $num 变量。如果 URL 中没有提供 num 参数,或者参数值不是有效的字符串,则…

Modbus-RTU详解

目录 Modbus-RTU协议 帧结构示例 CRC16校验算法 CRC16算法的过程 modbus-rtu的使用 发送数据 接收数据 tcp网口完整实现modbus-rtu协议 使用NModbus4实现modbus-rtu协议 安装NModbus4库。 串口实现NModbus4 Modbus-RTU协议 Modbus RTU 协议是一种开放的串行协议,广…

基于51单片机的无线模块PWM电机调速设计

一、概述 为了实现对直流电机无极调速的需求,提出了一种基于STC 89C52微控制器的直流PWM可调速系统设计方案。根据系统所需达到的控制目的,UL2003驱动芯片作为电动机驱动电路,实现对电机的驱动。控制算法采用经典PWM脉宽调制算法作为控制策略…

充电宝哪个牌子好?学生党适合哪种充电宝?推荐四款性价比充电宝

对于学生党而言,保持手机电量充足是学习、社交和娱乐的基本保证。然而,面对频繁的使用,手机电量常常不够用,这时一款性能优良的充电宝就显得尤为重要。那么,充电宝哪个牌子好呢?对于学生党来说,…

番茄钟工作法

目录 1.使用番茄钟的注意事项和技巧: 2.番茄工作法的优点: 3.番茄钟案例: 从棉花糖实验说起 我得了什么「病」? 外界的诱惑 失效的 Deadline 永远停留在纸上的计划 番茄土豆大作战:番茄工作法简明教程 计划 执行 记录与分析 番茄工作法怎么…

可视化图表与源代码显示的动态调整

可视化图表与源代码显示的动态调整 页面效果描述:本篇代码实现了通过拖动一个可调整大小的分隔符,用户可以动态地调整图表显示区域和源代码显示区域的大小。通过监听鼠标事件,当用户拖动分隔符时,会动态计算并更新两个区域的大小 …

俄组织Fighting Ursa利用虚假汽车销售广告传播HeadLace后门

最近,Palo Alto Networks的科研人员揭露了有一个与俄罗斯有关联的威胁行动者——Fighting Ursa(亦称APT28、Fancy Bear或Sofacy)。该组织通过散布虚假的汽车销售广告,特别是针对外交官群体,散播名为HeadLace的后门恶意…

6款打印刻录监控与审计系统 | 一键解锁器功能探析

信息高度敏感的社会环境,企事业单位对于文档的安全传输、打印与刻录过程的监控与审计需求日益迫切。 然而,为了全面满足读者对安全工具的了解需求,这篇文章小编将首先概述几款领先的打印刻录监控与审计系统,随后简要提及“一键解…

【Java】Collection中自定义类重写contains方法。

如果集合中存储的是自定义对象,也想使用contaisn方法来判断是否包含,那么在javabean类中,一定要重写equals方法。 因为contains方法的底次是使用equals方法实现的,所以重写equals方法。 Main类: package demo;import…

SQL注入(闯关游戏)

目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…

vue+element 根据父容器动态设置table高度出滚动条

可以通过CSS样式来控制表格的高度&#xff0c;并使用JavaScript动态地设置这个高度。 HTML: <template><el-table:data"tableData":height"tableHeight"style"width: 100%"><!-- 列配置 --></el-table> </template&…

【Kubernetes】Deployment 的清理策略

Deployment 的清理策略 在 Deployment 中配置 spec.revisionHistoryLimit 字段&#xff0c;可以指定其 清理策略。该字段用于指定 Deployment 保留旧 ReplicaSet 的个数&#xff0c;即更新 Pod 前的版本个数。该字段的默认值是 10。 创建 revisionhistory-demo.yaml 文件&…

一文了解K8S(Kubernates)

一、K8S 1. 概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态&#xff0c;其服务、支持和工具的使用范围相当广泛。 Kubernetes 这个名字源于希腊…

Unity 功能 之 创建 【Unity Package】 Manager 自定义管理的包使用配置URL,使用 git URL加载的简单整理

Unity 功能 之 创建 【Unity Package】 Manager 自定义管理的包使用配置URL&#xff0c;使用 git URL加载的简单整理 目录 Unity 功能 之 创建 【Unity Package】 Manager 自定义管理的包使用配置URL&#xff0c;使用 git URL加载的简单整理 一、简单介绍 二、Unity Package …

【你也能从零基础学会网站开发】SQL Server 2000中的数据类型之String字符串类型

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 SQL Server 中…