计算机组成原理易混淆知识点总结(持续更新)
目录
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.基准程序执行得越快说明机器的性能越好吗?
一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
相关文章:
计算机组成原理易混淆知识点总结(持续更新)
目录 1.机器字长,存储字长与指令字长 2.指令周期,机器周期,时钟周期 3.CPI,IPS,MIPS 4.翻译程序和汇编程序 5.计算机体系结构和计算机组成的区别和联系 6.基准程序执行得越快说明机器的性能越好吗? 1.机器字长,存储字长与指令字长 不同的机器三者…...
【STM32踩坑】HAL固件库版本过高导致烧录后无法运行问题
问题引入 目前STM32CUBEMX已经更新到了6.11版本,对应的固件库也一直在更新; 以STM32F1库为例,目前最新的库对应版本为1.8.5 但是我们会发现,如果直接使用1.8.5版本的固件库生成HAL源码后,烧录是可以烧录,但…...
芯片丝印反查
芯片丝印反查网 - IC芯片丝印,IC芯片代码,IC芯片印字,IC芯片顶标,SMD code,marking code,top mark芯查查-电子信息产业数据引擎 ic/芯片丝印反查网-芯查查...
C语言之指针详解(5)(含有易错笔试题)
文章目录 一、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 二、数组和指针笔试题2.1 一维数组2.2 字符数组2.3 二维数组 三、指针运算笔试题3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 一、sizeof和strlen的对比 有一个很神…...
discuzX2.5的使用心得 札记一
从开始接受php论坛的开发任务,对php感兴趣的我开始迷恋上discuz这个产品了, 像戴志康这样的创新人才,是我们这代人的骄傲和学习的榜样 应该是了解一下,啥事discuzX2.5,百度看一下 discuz x2.5_百度百科 看完百度词条…...
【Python】 探索Django框架的高并发处理能力
基本原理 Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django遵循MVC(模型-视图-控制器)设计模式,提供了一个全栈式的解决方案,使得开发者能够快速构建功能丰富的Web应用。Django的高并发处…...
C-数据结构-平横二叉树
平衡二叉树(Balanced Binary Tree)是一种二叉树,其中任意节点的两棵子树的高度差不超过 1。也可以说是一棵空树或者左右子树高度差不超过 1 的二叉树。 特点和性质 高度平衡:平衡二叉树是一种高度平衡的二叉树,任意节…...
算法训练营day41
动态规划理论基础(主要就是确定动态规划的几个步骤) 题目1:509. 斐波那契数 - 力扣(LeetCode) class Solution { public:int fib(int n) {if(n 0) return 0;if(n 1) return 1;int dp1 0;int dp2 1;int dp3 0;fo…...
cesium开发实例分享
反正 cesium 看到的效果几乎都有...
字符串和字符串函数(1)
前言: 字符串在C语言中比较特别,没有单另的字符串类型,想要初始化字符串必须用字符变量的数组初始化,但是在C语言标准库函数中提供了大量能对字符串进行修改的函数,比如说可以实现字符串的的拷贝,字符串的追…...
基于springboot+vue的班级综合测评管理系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
蓝海项目揭秘:跨境选品师的崛起与挑战
随着全球化贸易的日益深入和电子商务的蓬勃发展,跨境选品师这一新兴职业逐渐走进人们的视野。跨境选品师,顾名思义,就是专门负责为跨境电商平台挑选和推荐适合海外市场的商品的专业人士。那么,跨境选品师这一职业能否被视为一个蓝…...
酷黑简洁大气体育直播自适应模板赛事直播门户网站源码
源码名称:酷黑简洁大气体育直播自适应模板赛事直播门户网站源码 开发环境:帝国cms 7.5 安装环境:phpmysql 支持PC与手机端同步生成html(多端同步生成插件) 带软件采集,可以挂着自动采集发布,无…...
2024年电工杯高校数学建模竞赛(B题) 建模解析| 大学生平衡膳食食谱的优化设计
问题重述及方法概述 问题1:膳食食谱的营养分析评价及调整 数学方法:线性规划模型、营养素评价模型、比较分析 可视化数据图:营养素含量表、营养素摄入量对比图、营养素缺乏情况图 问题2:基于附件3的日平衡膳食食谱的优化设计 数…...
学习编程对英语要求高吗?
学习编程并不一定需要高深的英语水平。我这里有一套编程入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习编程,不妨点个关注,给个评论222,私信22,我在后台发给你。 虽然一些编程资源和文档可能…...
使用 Django 和 RabbitMQ 构建高效的消息队列系统
文章目录 RabbitMQ 简介Django 中使用 RabbitMQ总结与拓展 在现代的 Web 应用程序开发中,构建一个高效的消息队列系统变得越来越重要。使用消息队列可以帮助我们解耦系统中不同模块的任务,并提高系统的性能和可扩展性。本文将介绍如何结合 Django 和 Rab…...
Pycharm常见问题1
问题: ValueError at /user/users/ The view user.views.get_users didnt return an HttpResponse object. It returned None instead. 问题分析: 视图user.views.get_users未返回HttpResponse对象,它返回值为None。也就是说在视图文件没有…...
开发一个comfyui的自定义节点
文章目录 目标功能开发环境comfyui自定义节点的实现原理仓库地址完整代码目标功能 开发一个comfyui的自定义节点,该节点的功能是:可以对comfyui工作流中最终输出的图像添加一些自定义文案,且可以指定文案在图像上的位置、文案的字体样式、字体大小、字体颜色等。最终效果如…...
Prime算法构造最小生成树(加点法)
一、算法逻辑 想要轻松形象理解Prime的算法逻辑,视频肯定比图文好。 小编看过很多求相关的教学视频,这里选出一个我认为最好理解的这一款安利给大家。 因为他不仅讲解细致,而且还配合了动画演示,可以说把一个抽象的东西讲的非常…...
【VTKExamples::Utilities】第五期 CommandSubclass
很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例CommandSubclass,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. CommandSubclass …...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
RKNN开发环境搭建2-RKNN Model Zoo 环境搭建
目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程. 本…...
Vue.js教学第二十一章:vue实战项目二,个人博客搭建
基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…...
OCC笔记:TDF_Label中有多个相同类型属性
注:OCCT版本:7.9.1 TDF_Label中有多个相同类型的属性的方案 OCAF imposes the restriction that only one attribute type may be allocated to one label. It is necessary to take into account the design of the application data tree. For exampl…...

