计算机组成原理易混淆知识点总结(持续更新)

news2024/11/17 21:27:01

目录

1.机器字长,存储字长与指令字长

2.指令周期,机器周期,时钟周期

3.CPI,IPS,MIPS

4.翻译程序和汇编程序

5.计算机体系结构和计算机组成的区别和联系

6.基准程序执行得越快说明机器的性能越好吗?


1.机器字长,存储字长与指令字长

不同的机器三者在数值上可以相等也可以不等:

机器字长CPU内部用于整数运算的数据通路的宽度(也就是CPU一次可以处理的二进制代码的位数)。通常等于ALU的宽度或通用寄存器的位数。

数据通路是指数据在指令执行过程中所经过的路径及路径上的部件,主要是CPU内部进行数据运算,存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此机器字长等于ALU的宽度或通用寄存器的位数。

存储字长:一个存储单元中包含的二进制代码的位数,它等于MDR的位数。

补充:MDR的位数:存储单元的位数        MAR的位数反映了最多可寻址的存储单元的个数,如MAR:10位,那么最多有2^10个存储单元,MAR的长度与PC的长度相等。

指令字长:一个指令字中包含的二进制代码的位数。

指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令,若指令字长等于存储字长,则只需要1个访存周期取指令,指令周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存储器便可取出一条指令或一个数据。随着计算机的发展,指令字长、存储字长都可变,但必须都是字节的整数倍。

机器字长会直接影响加法器(ALU),内部总线宽度(数据通路的宽度)及寄存器的位数,进而影响数据的精度和表示范围;如果提高机器字长,一个数能表示的精度和范围就越高,但随之而来的是成本的增加

2.指令周期,机器周期,时钟周期

指令周期:CPU从主存中取出并执行一条指令所需的全部时间

取出并执行一条指令包括:取出指令-->分析指令-->执行指令,如下图所示:

对指令译码的过程就是分析指令的过程

机器周期:

机器周期又称CPU周期,一个指令周期常用多个机器周期表示。一个如上图所示,取指操作算一个机器周期,执行指令操作也算一个机器周期。

时钟周期:一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)

CPU上标注的主频,例如主频=3.0GHz,就表示每秒钟可以发送3.0G次的时钟周期

若想了解得更加详细,推荐看看这篇:指令执行过程

3.CPI,IPS,MIPS

CPU时钟周期:上面讲过,时钟周期是CPU工作的最小时间单位。

主频:机器内部主时钟的频率,即时钟周期的导数(1/CPU时钟周期)。对于同一型号的计算机,主频越高,完成指令的一个执行步骤所用时间越短,执行指令的速度越快。

CPI(Cycle Per Instruction):执行一条指令所需要的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值

指令执行速度:主频/平均CPI,主频表示CPU内部主时钟的频率,例如主频1.5GHz说明1s有1.5G=1.5*10^9个时钟周期。平均CPI表示一条指令的时钟周期数,所以 指令执行速度=主频/平均CPI,即1s执行的指令数

用户CPU时间:总时钟周期数/主频,总时钟周期数=CPI(一条指令的时钟周期数)*指令条数,主频:1s的时钟周期数,所以用户CPU时间=总时钟周期数/主频

一定不要记,看题目理解即可!

IPC:表示每个时钟周期运行多少条指令,机CPI的倒数(1/CPI)。

IPS(Instructions Per Second):每秒执行多少条指令,IPS=主频/平均PCI。

CPU执行时间:CPU时钟周期数/主频=指令条数*CPI*时钟周期的长度=(指令条数*CPI)/主频

CPU执行时间取决于三个要素:CPI,主频和指令条数。三个条件下过户制约,例如,更改指令集可以减少程序所含指令条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。

MIPS(Million Instructions Per Second):每秒执行多少万条指令。

MIPS=指令条数/(执行时间*10^6)=主频/(CPI*10^6)

MIPS 对不同机器进行性能比较是有缺陷的。因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI 和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。

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

注意:

在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示,如1Kb=2^10b;在描述速率、频率等时,K、M、G、T通常用10的幂次表示。如 1kb/s=10^3b/s。通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景。

例题:

1.程序P在机器M上的执行时间是 20s,编译优化后,P执行的指令数减少到原来的 70%,而 CPI增加到原来的1.2倍,则P在M上的执行时间是()

解答:

假设原来的指令条数为x,则执行时间=指令条数*每条指令的时钟周期数*时钟周期的长度=

x*CPI*1/f        得到:20=(x*CPI)/f        所以原来的CPI=20f/x

经过编译优化后,指令条数减少为原来的70%,即指令条数为0.7x,而CPI增加到原来的1.2倍,即24f/x,则现在P在M上的执行时间=(0.7x * 24f/x) / f =24*0.7=16.8s

2.假定计算机 M1和M2具有相同的指令集体系结构,M1的主频为2GHz,程序P在M1上的运行时间为 10s。M2采用新技术可使主频大幅提升,但平均 CPI也增加到 M1 的 1.5 倍,则 M2的主频至少提升到多少才能使程序P在M2上的运行时间缩短为6s?

解答:

程序P在M1上的时钟周期数=指令条数xCPI=CPU执行时间x主频=10s*2GHz=2*10^10。M2的平均CPI为 M1 的1.5倍,因此程序P在 M2 上的时钟周期数 =1.5*2*10^10=3x10^10。
要使程序 P在 M2上的运行时间缩短到6s,则M2 的主频至少应为:

程序P所含时钟周期数/CPU执行时间=3x10^10/6s=5GHz

由此可见,M2的主频是 M1的 2.5 倍,但 M2 的速度却只是 M1 的 1.67 倍。

所以,这也可以看出主频高的CPU不一定比主频低的CPU快:

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

4.翻译程序和汇编程序

翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。

汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。

编译程序与汇编程序的区别:若源语言是诸如C、C++、Java 等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。

5.计算机体系结构和计算机组成的区别和联系

计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器的指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,则完全可以不同,即可以认为它们的组成方式是不同的。

例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别。即使是同一系列的不同型号机器,其性能和价格差异也很大。

6.基准程序执行得越快说明机器的性能越好吗?

一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。

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

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

相关文章

VMware ESXi 兼容性查询

官网兼容性查询地址:https://www.vmware.com/resources/compatibility/search.php

Android Studio自带Profiler工具进行CPU资源及线程问题分析步骤

1、运行需要检测CPU资源问题与线程问题的程序 这里以“com.example.opengltest”程序为例。 2、点击Profiler按钮 3、点击SESIONS ""号按钮选择设备,选择对应设备下的应用或进程 4、双击CPU区块 5、选择Trace config选项,选择“Java/Kotli…

Reader类的使用方法和技巧,你掌握了吗?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

raft 协议和etcd实战

文章目录 leader选举日志复制安全性preVote 阶段preVote 投票阶段preVote阶段的作用 集群成员变更etcd raft实践etcd raft写流程时序图问题如何保障消息的幂等性,不能重复提交如何保障消息的原子性,不能提交一半raft wal日志的作用是MVCC方式的作用etcd …

瑞吉外卖项目学习笔记(一)

项目展示: 一、软件开发整体介绍 1.1 软件开发流程 作为软件开发人员,我们的主要工作是在 编码阶段 1.2 角色分工 1.3 软件环境 二、瑞吉外面项目介绍 2.1 项目介绍 系统管理后台页面: 移动端页面: 2.2 产品原型展示 产品原型是…

2024 年科技裁员综合清单

推荐阅读: 独立国家的共同财富 美国千禧一代的收入低于父辈 创造大量就业机会却毁掉了财富 这四件事是创造国家财富的关键 全球财富报告证实联盟自始至终无能 美国人已陷入无休止债务循环中,这正在耗尽他们的财务生命 2024 年,科技行业…

二分例题(D.负重越野,I.路径规划)

这两天的训练赛都有一道二分的题&#xff0c;但是都没往二分上面想&#xff0c;同样不知道怎么二分。 D. Fast and Fat 思路 二分的关键也就是check函数怎么写了&#xff0c;求队伍最大速度&#xff0c;可以分为速度>mid和<mid两部分&#xff0c;再判断&#xff0c;能不…

课时138:变量进阶_变量实践_综合案例

2.1.3 综合案例 学习目标 这一节&#xff0c;我们从 免密认证、脚本实践、小结 三个方面来学习 免密认证 案例需求 A 以主机免密码认证 连接到 远程主机B我们要做主机间免密码认证需要做三个动作1、本机生成密钥对2、对端机器使用公钥文件认证3、验证手工演示 本地主机生成…

dolphinscheduler standalone安装

官方文档&#xff1a;https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装&#xff08;以放在/home为例&#xff09; 下载见&#xff1a;https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…

《中国改革报》的发行范围有哪些?

《中国改革报》是国家发展和改革委员会主管的全国性综合类报纸&#xff0c;其发行范围广泛&#xff0c;涵盖了全国各地。 该报在全国范围内公开发行&#xff0c;读者群体包括政府部门、研究机构、企业界、学术界以及关注中国改革与发展的社会各界人士。 它通过订阅、零售等多…

力扣hot100学习记录(十)

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题意 将两个有序列表合并 思路 用两个指针分别指向两个链表最开始&#xff0c;每次把较小的拿出来&#xff0c;相应指针后移&#xff0c;直到一个链表…

Java 多线程(01)

运行一个 Java 程序就是跑一个 Java 进程&#xff0c;该进程至少有一个线程即主线程&#xff0c;而 main 方法就是主线程的入口&#xff1b; 一、常见多线程名词解释 并发&#xff1a;一个 CPU 核心上&#xff0c;通过快速轮转调度的方式&#xff0c;执行多个进程&#xff0c…

linux文件编程api: creat

1.基本信息 功能 创建新文件 头文件 #include<fcntl.h> 函数形式 int creat(const char *pathname, mode_t mode); 返回值 如果成功&#xff0c;则返回文件描述符号 如果失败&#xff0c;则返回-1 参数 pathname: 创建的文件名 mode: 新建文件时&#xff0c;文件权限…

Android LAME原生音频

前言 我想大家都做过录音的功能吧&#xff0c;首先想到的是不是MediaRecorder&#xff1f;今天我们不用MediaRecorder&#xff0c;而是使用LAME库自己编译音频编码模块&#xff0c;很明显&#xff0c;这个需要用到NDK。凡是涉及到音视频编解码这块的&#xff0c;都需要用到And…

BUG: VS Code C++输出中文乱码

BUG: VS Code C输出中文乱码 环境 Windows 11 VS Code 编辑器详情 在Windows 使用 cout 函数输出中文时出现乱码 问题的原因在cmd的显示编码和c程序编码的不同。cmd默认的是gbk编码&#xff0c;而VS Code 软件的CMD终端默认是utf-8编码&#xff0c;因而在输出中文文本时会出…

QQ名片满级会员展示生成HTML源码

源码介绍 QQ名片满级会员展示生成HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;保存素材去选择QQ个性名片-选择大图模板-把图上传照片墙即可 源码效果 源码下载 蓝奏云&#xff1a;http…

唯众云课堂:领航智慧教育,赋能职教未来,打造高效人才培养新平台

随着《中国智慧教育发展报告 2023》的发布&#xff0c;智慧教育被正式定义为数字教育发展的高级阶段。然而&#xff0c;各职院在智慧教育的发展道路上&#xff0c;往往面临着诸多挑战&#xff0c;如缺乏一体化教学平台、优质教学资源不足等。唯众凭借深厚的产业洞察与教育实践经…

Pytorch中的torch.save()文件保存格式探索以及mmdetection加载预训练模型参数对不齐和收到意外参数报错解决方案

使用mmdetection时遇到的问题比较多&#xff0c;首先要对自己要使用的预训练模型有一定的了解&#xff0c;并且懂得使用各种分类模型时不同的模型不同任务执行阶段需要参数上的对其。&#xff08;比如mask-rcnn和它的三个头之间的参数&#xff09;。 首先&#xff0c;谈谈torc…

基于SpringBoot设计模式之结构型设计模式·适配器模式

文章目录 介绍开始使用委托的适配器&#xff08;媒体播放器&#xff09;架构图定义被适配者定义需求接口定义适配者 使用继承的适配器&#xff08;手机充电接口&#xff09;架构图定义被适配者定义需求接口定义适配者 测试样例 总结优点缺点 介绍 在程序世界中&#xff0c;经常…

Python | Leetcode Python题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution:def numDistinct(self, s: str, t: str) -> int:m, n len(s), len(t)if m < n:return 0dp [[0] * (n 1) for _ in range(m 1)]for i in range(m 1):dp[i][n] 1for i in range(m - 1, -1, -1):for j in range(n …