计算机体系结构----基本概念(一)

本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等

计算机体系结构----基本概念

  • 计算机系统设计的定量原理
    • 1. Amdahl定律(阿姆达尔定律)
    • 2. CPU性能公式
    • 3. 程序的局部性原理

计算机系统设计的定量原理

1. Amdahl定律(阿姆达尔定律)

Amdahl 定律告诉我们:当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。它可以用来具体地计算.当对计算机系统中的某个部分进行改进后,所能获得的加速比的大小。

加速比说明了改进后的计算机比改进前快了多少倍。假设对某台计算机进行了某种改
进,那么所获得的加速比为
在这里插入图片描述
这个加速比的大小与两个因素有关。一个是在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例,简称可改进比例,记为 Fe。Fe 总是小于1的;另一个是可改进部件改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比,简称部件加速比,记为 Se。Se 总是大于 1。

例如,一个需运行 60s 的程序中有 20s 的运算可以加速,那么其 Fe 就是 20/60。若该系统改进后,可改进部分的执行时间减少为 5s,则其 Se 为 20/5。

部件改进后,程序中可改进部分的执行时间被缩短为原来的 1/Se,但不可改进的那部分的执行时间没有变化。所以改进后程序的总执行时间为
在这里插入图片描述
其中 T0为改进前整个程序的执行时间,1-Fe 为不可改进比例。
改进后,整个系统的加速比为
在这里插入图片描述
例 1.1 将计算机系统中某一功能的处理速度加快 15 倍,但该功能的处理时间仅占整个系统运行时间的 40%,则采用此改进方法后,能使整个系统的性能提高多少?
在这里插入图片描述
例 1.2 某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的 25 倍,而系统运行某一程序的整体性能提高到原来的 4 倍,试计算该程序中浮点操作所占的比例。
在这里插入图片描述
Amdahl 定律还表达了一种性能改进的递减规则:如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。

当 Se->∞时,S,=1/(1-Fe)。即如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过 1/(1-Fe)。

在用 Amdahl定律计算系统的加速比时,需要知道可改进比例是多少,但通常很难直接计算出这个比例。下面介绍的 CPU 公式从另一个角度来计算和比较性能。

2. CPU性能公式

执行一个程序所需的 CPU 时间可以这样来计算。
CPU 时间 = 执行程序所需的时钟周期数 X 时钟周期时间
其中时钟周期时间是时钟频率的倒数。

引入新的参数 CPI(Cycles Per Instruction),即每条指令的平均时钟周期数,有时简称为指令的平均时钟周期数。
CPI = 执行程序所需的时钟周期数 /所执行的指令条数
则有以下的 CPU 性能公式。
CPU 时间 =IC X CPI X 时钟周期时间
其中 IC 为所执行的指令条数。

根据这个公式可知,CPU 的性能取决于以下三个参数.

  1. 时钟周期时间:取决于硬件实现技术和计算机组成;
  2. CPI: 取决于计算机组成和指令系统的结构 ;
  3. IC:取决于指令系统的结构和编译技术。

改进任何一个参数,都能提高 CPU 的性能。不过,这些参数是相互关联的,很难做到能单独地改进某一个参数指标而不影响其他两个指标(变坏)。幸运的是,有可能设法使这种影响不会太大,或者至少是可以预测的。

CPU 设计中还经常用到下面计算 CPU 时钟周期总数的方法。
在这里插入图片描述
其中 I C i IC_i ICi为程序执行的过程中第种指令出现的次数, C P I i CPI_i CPIi为执行第i种指令所需的平均时钟周期数, n n n为指令的种数。
CPI可以表示为
在这里插入图片描述
其中( I C i / I C IC_i/IC ICi/IC)反映了第 i i i种指令在程序执行过程中所占的比例。

3. 程序的局部性原理

程序的局部性原理(Principle of Locality)是人们经常加以利用的程序属性。它是指:程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。现在常用的一个经验规则是: 程序执行时间的 90%都是在执行程序中 10%的代码。数据访问也具有局部性,不过其局部性弱于代码访问的局部性。

局部性包括时间局部性和空间局部性。时间局部性是指: 程序即将用到的信息很可能就是目前正在使用的信息。空间局部性是指:程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。

利用程序的局部性原理,可以根据程序最近的访问情况来比较准确地预测将要访问的指令和数据。凡是涉及数据重用的地方都可能会用到它。它是存储层次的基础。

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

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

相关文章

计算机组成原理期中题库

计算机组成原理题目集 2.1 下面是关于计算机中存储器容量单位的叙述,其中错误的是 A. 最基本的计量单位是字节(Byte),一个字节等于8bit B. 一台计算机的编址单位、指令字长和数据字长都一样,且是字节的整数倍 C. 最小…

C++ 学习之函数成员指针的一个小细节

看看下面的代码,你能看出错误吗 class A { public:void fun(){}}; int main() {A a;void (A:: * p)() &A::fun;(*p)(); } 这段代码在调用成员函数时存在问题。正确的方式是使用对象来调用成员函数,而不是通过指针。以下是修正后的代码&#xff1a…

【JavaScript】表单校验

input中允许输入年或年月或年月,即 2023 或 2023-09 或 2023-09-11 pattern:/(^[1-2][0-9][0-9][0-9]-([1][0-2]|0?[1-9])-([12][0-9]|3[01]|0?[1-9])$)|(^[1-2][0-9][0-9][0-9]-([1][0-2]|0?[1-9])$)|(^[1-2][0-9][0-9][0-9]$)/只允许填入英文,数字,下划线和 - …

【Lustre相关】应用部署-02-Lustre软件源码编译

文章目录 一、前言二、编译说明1、配置yum源2、升级内核3、安装依赖3、源码编译 三、Q&A1、/usr/bin/ld: cannot find -lxxxa、问题说明b、原因分析c、解决措施 2、Deprecated feature: REMAKE_INITRDa、问题说明b、解决措施 3、源码编译安装lustre-zfs软件包后&#xff0c…

JAVA基础进阶(十一)

一、创建线程的三种方式 Java语言中是用Thread类来表示线程,线程的创建和开启都是通过Thread类来实现的。 继承Thread类重写run方法。 调用线程对象的start()方法启动线程(启动后还是执行run方法的),而不是调用创建的子类对象的run()方法。…

MSUSB30模拟开关可Pin to Pin兼容FSUSB30/SGM7222

MSUSB30/MSUSB30N 是一款高速、低功耗双刀双掷 USB 模拟开关芯片,其工作电压范围是1.8V 至5.5V。可Pin to Pin兼容FSUSB30/SGM7222。其具有低码间偏移、高通道噪声隔离度、宽带宽的特性。 MSUSB30/MSUSB30N 主要应用范围包括:具有 USB2.0 接口的手持设备…

Linux “grep“ 命令

1. 目标 本文主要介绍 Linux "grep" 命令:用于查找文件里符合条件的字符串或正则表达式。 2. grep 命令 "grep" 命令的基本语法是: grep [options] pattern [files]pattern - 表示要查找的字符串或正则表达式。 files - 表示要查…

shared_ptr子类指针转换成父类指针

假设有如下应用场景: class Base { public:void addChild(std::shared_ptr<Base>& child){...} }class Derived : public Base {}int main() {Base a;std::shared_ptr<Derived> b std::make_shared<Derived>();a.addChild(b); // Error } 该代码中声…

Response(Http协议连载)

Response对象 功能&#xff1a; 设置响应消息 设置响应行 格式&#xff1a;HTTP/1.1 200 ok 设置状态码&#xff1a;setStatus(int sc) 设置响应头 设置头&#xff1a;setHeader(String name,String value); 设置响应体 使用步骤&#xff1a; 获取输出流 字符输出流&#xff…

[UGUI]实现从一个道具栏拖拽一个UI道具到另一个道具栏

在Unity游戏开发中&#xff0c;实现UI道具的拖拽功能是一项常见的需求。本文将详细介绍如何使用Unity的UGUI系统和事件系统&#xff0c;实现从一个道具栏拖拽一个UI道具到另一个道具栏的功能。 一、准备工作 首先&#xff0c;你需要在Unity中创建两个道具栏和一些UI道具。道具…

事件机制?

事件流&#xff1a; 描述的页面接收事件的顺序。先进行事件捕获 到达目标元素 在进行事件冒泡 分为事件捕获和事件冒泡 事件冒泡&#xff1a;从具体元素从内向外依次触发事件 从下面这个小案例可以清楚了解什么是事件冒泡 <!DOCTYPE html> <html lang"en"…

C++ -- 每日选择题 -- Day2

第一题 1. 下面代码中sizeof(A)结果为&#xff08;&#xff09; #pragma pack(2) class A {int i;union U{char str[13];int i;}u;void func() {};typedef char* cp;enum{red,green,blue}color; }; A&#xff1a;20 B&#xff1a;21 C&#xff1a;22 D&#xff1a;24 答案及解析…

leecode 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…

Linux 挂载文件系统为可读写 mount -uw / 和 mount -o remount,rw /

Linux 挂载文件系统为可读写 mount -uw / 和 mount -o remount,rw / 在挂载文件系统为可读写时&#xff0c;我发现一个问题&#xff0c;有时用mount -uw /就可以把文件系统挂载成可写的状态。但有时就会发生 “read-only file system” 的错误&#xff0c;这时我用mount -o re…

智能优化算法应用:基于纵横交叉算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于纵横交叉算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于纵横交叉算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.纵横交叉算法4.实验参数设定5.算法结果6.参考…

【字符串探秘:手工雕刻的String类模拟实现大揭秘】

【本节目标】 1. string类的模拟实现 2.C基本类型互转string类型 3.编码表 &#xff1a;值 --- 符号对应的表 4.扩展阅读 1. string类的模拟实现 1.1 经典的string类问题 上面已经对string类进行了简单的介绍&#xff0c;大家只要能够正常使用即可。在面试中&#xff0c;…

1.网络编程基础知识 - 基础概念、TCP网络通信、UDP网络通信

网络编程 文章目录 网络编程一、概念1.1 网络1.2 IP地址1.2.1 IPv4 介绍1.2.2 IPv6 介绍1.2.3 查看IP地址 1.3 域名和端口1.4 网络协议1.5 TCP与UDP1.6 InetAddress类1.7 Socket 二、TCP网络通信编程2.1 介绍2.2 案例2.2.1 字节流编程案例12.2.2 字节流编程案例22.2.3 字符流编…

【UGUI】Unity教程:实现物品的拖拽功能

大家好&#xff0c;今天&#xff0c;我们将一起学习如何在Unity中实现物品的拖拽功能。这是一个非常实用的技能&#xff0c;无论你是在制作RPG游戏的背包系统&#xff0c;还是在制作策略游戏的建筑放置功能&#xff0c;都会用到这个技能。那么&#xff0c;让我们开始吧&#xf…

5. 文件属性和目录

5. 文件属性和目录 1. Linux 系统的文件类型1.1 普通文件1.2 目录文件1.3 字符设备文件和块设备文件1.4 符号链接文件1.5 管道文件1.6 套接字文件 2. stat 系统调用2.1 struct stat 结构体2.2 st_mode 变量2.3 struct timespec 结构体 3. fstat 和 lstat 函数3.1 fstat 函数3.2…

python中的序列

文章目录 序列类型标准类型运算符标准类型运算符序列类型运算符字符串 序列类型 字符串 列表 元组 由元组构成的列表 标准类型运算符 &#xff08;1&#xff09;按字符串大小比较 标准类型运算符 序列类型运算符 序列类型转换内建函数 注&#xff1a; &#xff08;1&#xff…