《计算机组成与设计》01. 计算机抽象及相关技术

news2024/12/30 1:13:25

文章目录

    • 计算机体系结构中的 8 个伟大思想
      • 面向摩尔定律的设计
      • 使用抽象简化设计
      • 加速经常性事件
      • 通过并行提高性能
      • 通过流水线提高性能
      • 存储层次
      • 通过冗余提高可靠性
    • 性能
      • 性能的度量
      • 时钟周期数和时钟周期长度与CPU时间的公式
      • 指令性能公式
      • 经典的 CPU 性能公式
      • CPI 计算公式
      • 程序执行时间计算公式
      • 理解程序性能
    • Amdahl 定律
    • MIPS 计算公式
    • 资料

计算机体系结构中的 8 个伟大思想

image-20230111152117193

面向摩尔定律的设计

摩尔定律指出单芯片上所集成的晶体管资源每 18 至 24 个月翻一倍。
由于计算机设计需要花费很长时间,因此项目结束时,每个芯片的可用晶体管资源相对设计开始时可以轻易实现双倍或四倍增长。
计算机架构师必须预测其设计完成时的工艺水平,而不是设计开始时的工艺水平。

使用抽象简化设计

提高硬件和软件生产率的主要技术之一是使用抽象来表示不同的设计层次 —— 隐藏低层细节以提供给高层一个更简单的模型。

相关例子:

  • 通过高级语言所编写的应用软件最终需要通过编译器转换为计算机可以识别的机器指令,因为上一级隐藏了低一级的细节。

加速经常性事件

加速经常性事件远比优化罕见情形能够更好地提升性能。
我的理解是:对代码已知可能发生的一些场景进行一些优化处理,而这些场景就是所谓的“经常性事件”,这些场景只有通过仔细的实验和测量才能得出,罕见的情形就不是不经常出现的情况,因此相比之下就显得不那么重要了。

通过并行提高性能

并行计算可以获得更高的性能。

通过流水线提高性能

并行性的一种特殊场景在计算机体系结构中非常普遍,因此它有着专门的名称:流水线。

存储层次

image-20230130160007022

通过冗余提高可靠性

由于物理设备可能发生故障,因此可通过引入冗余的组件使系统更可靠,该组件在系统发生故障时可代替失效组件并帮助检测故障。

引入的组件其实就是物理设备的副本,也就是有多个相同的物理设备,若某个设备坏了,这些备用设备可顶替上去。

性能

性能的度量

时间是计算机性能的衡量标准:完成同样的计算任务,用时最短的计算机是最快的。

程序的执行时间一般以秒为单位。响应时间、挂钟时间、运行时间等这些属于均表示某项任务所需的总时间,包括硬盘访问、内存访问、IO活动和操作系统开销等一系列时间。

计算机经常被共享使用,一个处理器可能同时运行多个程序。在这种情况下,系统可能更侧重于优化吞吐率,而不是致力于将单个程序的执行时间变得更短。

疑惑:把程序执行时间缩短了,不就更快了吗?为什么却侧重于优化吞吐率呢?
答:程序的可变因素有很多,例如内存访问、磁盘访问、IO操作等,你可能在执行某部分程序类型的时候快一些,但换到另一种类型的程序时就效果没那么显著了,所以不妨从整体上去优化吞吐率。

因此我们需要把运行任务本身的时间与其它时间区分开。

这里使用 CPU 执行时间来区分,简称 CPU 时间,只表示在 CPU 上所花费的时间,而不包括等待 IO 或运行其它程序的时间。

Tips:用户所感受到的是程序的运行时间,而不是 CPU 时间。

CPU 时间还可继续细分为:

  • 用户 CPU 时间: 执行用户程序本身所花费的时间。
  • 系统 CPU 时间: 为用户程序执行相关任务所花费的时间。

很难做到精确的区分这两种 CPU 时间,因为通常难以分清哪些操作系统的活动是属于哪个用户进程的,而且不同操作系统的功能也千差万别。

采用 CPU 性能表示用户 CPU 时间。

计算机硬件完成基本功能的速度的度量单位是时钟周期数,也称滴答数、时钟滴答数、时钟数、周期数。

  • 时钟周期数:计算机一个时钟周期的时间,通常是指处理器时钟,并在固定频率下运行。
  • 时钟周期的表示方式:
    • 完整时钟周期的时间:例如 250皮秒或 250ps。
    • 时钟周期的倒数,即时钟频率,即 1/时钟周期数,例如 4GHz。
  • 周期长度:每个时钟周期持续的时间长度。

时钟周期数和时钟周期长度与CPU时间的公式

程序的 C P U 执行时间 = 程序的 C P U 时钟周期数 × 时钟周期长度 程序的CPU执行时间=程序的CPU时钟周期数 \times 时钟周期长度 程序的CPU执行时间=程序的CPU时钟周期数×时钟周期长度

由于时钟频率和时钟周期长度互为倒数,故另一种表达形式为:

程序的 C P U 执行时间 = 程序的 C P U 时钟周期数 时钟频率 程序的CPU执行时间 = \frac{程序的CPU时钟周期数}{时钟频率} 程序的CPU执行时间=时钟频率程序的CPU时钟周期数

指令性能公式

C P U 时钟周期数 = 程序的指令数 × 指令平均时钟周期数 CPU时钟周期数 = 程序的指令数 \times 指令平均时钟周期数 CPU时钟周期数=程序的指令数×指令平均时钟周期数

指令平均时钟周期数(CPI): 表示执行每条指令所需的时钟周期平均数。

经典的 CPU 性能公式

C P U 时间 = 指令数 × C P I × 时钟周期长度 CPU时间 = 指令数 \times CPI \times 时钟周期长度 CPU时间=指令数×CPI×时钟周期长度

或考虑到时钟频率和时钟周期长度互为倒数,可写为:
C P U 时间 = 指令数 × C P I 时钟频率 CPU时间 = \frac{指令数 \times CPI}{时钟频率} CPU时间=时钟频率指令数×CPI
指令数: 执行某程序所需要的总指令数量。

CPI 计算公式

C P I = C P U 时钟周期数 指令数 CPI = \frac{CPU时钟周期数}{指令数} CPI=指令数CPU时钟周期数

CPI 对于不同应用程序是不同的,对于相同指令系统的不同实现方式也是不同的。

程序执行时间计算公式

根据图 1-15 所列出的指标,可以计算出程序的执行时间(单位:秒)。
执行时间 = 秒 程序 = 指令数 程序 × 时钟周期数 指令 × 秒 时钟周期 执行时间 = \frac{秒}{程序}=\frac{指令数}{程序}\times\frac{时钟周期数}{指令}\times\frac{秒}{时钟周期} 执行时间=程序=程序指令数×指令时钟周期数×时钟周期
image-20230130234634099

只用一种因素去评价性能是危险的。当比较两台计算机时必须考虑全部的三个因素,它们组合起来才能确定执行时间。

理解程序性能

程序的性能与算法、编程语言、编译器、体系结构以及实际的硬件有关,如下:

image-20230130235125055

Amdahl 定律

例题:假设一个程序在一台计算机上运行需要 100 秒,其中 80 秒的时间用于乘法操作。如果要把该程序的运行速度提高 5 倍,乘法操作的速度应该要改进多少?
改进后的执行时间 = 受改进影响的执行时间 改进量 + 不受影响的执行时间 改进后的执行时间=\frac{受改进影响的执行时间}{改进量}+不受影响的执行时间 改进后的执行时间=改进量受改进影响的执行时间+不受影响的执行时间
本题计算:
20 = 80 n + ( 100 − 80 ) 20=\frac{80}{n}+(100-80) 20=n80+(10080)
最后得到 0 = 80 n 0=\frac{80}{n} 0=n80 ,也就是说乘法运算占总负载的 80%,则无论怎样改进乘法,也无法达到性能提高 5 倍的结果。针对特定情况的性能提升,受到被改进的特征所占比例的限制。这个概念在日常生活中被称为收益递减定律。

当我们知道一些功能所消耗的时间及其可能的加速比时,就可以使用 Amdahl 定律对性能提升进行预估。

MIPS 计算公式

M I P S = 指令数 执行时间 × 1 0 6 MIPS = \frac{指令数}{执行时间\times10^6} MIPS=执行时间×106指令数

MIPS:每秒百万条指令数。

MIPS 是指令执行的速率,它规定了性能与执行时间成反比,越快的计算机具有越高的 MIPS 值。

在同一台计算机上,不同的程序会有不同的 MIPS,因而一台计算机不能拥有单一的 MIPS 分值。例如,将执行时间用 MIPS、CPI、时钟频率代入之后可得:
M I P S = 指令数 指令数 × C P I 时钟频率 × 1 0 6 = 时钟频率 C P I × 1 0 6 MIPS = \frac{指令数}{\frac{指令数\times CPI}{时钟频率}\times 10^6}=\frac{时钟频率}{CPI\times 10^6} MIPS=时钟频率指令数×CPI×106指令数=CPI×106时钟频率

如果一个新程序执行的指令数更多,但每条的执行速度更快,则 MIPS 可能独立于性能而发生变化。

资料

  • ABI

  • 指令集体系结构

  • 动态随机存取存储器

  • 静态随机存取存储器

  • 只读存储器

  • 随机存取存储器

  • 快闪存储器

  • 辅存

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

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

相关文章

微前端基础

一、什么是微前端 微前端是一种软件架构,可以将前端应用拆解成一些更小的能够独立开发部署的微型应用,然后再将这些微应用进行组合使其成为整体应用的架构模式。微前端架构类似于组件架构,但不同的是,组件不能独立构建和发布&…

7 MMSegmentation 代码教学

本文是openmmlab AI实战营的第七次课程的笔记,以下是我比较关注的部分。本次课程的主要内容是 mmsegmentation的代码教学实战,我会稍微详细记载。环境安装云在线平台 :Featurize推荐代码运行环境:GPU RTX3060 ,CUDA 11.2安装pytor…

[SSD固态硬盘技术 0] SSD的结构和原理导论

版权声明: 本文禁止转载机械硬盘的存储系统由于内部结构,其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大。以Nand Flash为存储介质的固态硬盘技术的发展,性能瓶颈得到缓解。1. 什么是SSD固态硬盘(Solid State Drives&#xf…

Python爱心代码

前言 Python漂浮爱心,具体源码见:Python动态爱心代码_爱心代码-Python文档类资源-CSDN下载 爱心类 class Heart(): #每个爱心(爱心类) def __init__(self): self.r ra.randint(10,15) #爱心的半径 …

[LeetCode 1138]字母板上的路径

题目描述 题目链接:[LeetCode 1138]字母板上的路径 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所…

图形编辑器:绘制图形需要用到的填充算法

大家好,我是前端西瓜哥。今天我们来谈谈图形编辑器中,简单说说图形编辑实现图形工具,需要用到的填充算法。 图形的特点是宽高是固定的,在图形编辑器绘制图片有两种方案。 一种是将 宽高比锁死,不允许改变&#xff0c…

SpringCloud和微服务介绍

SpringCloud介绍 SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集。 该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作提供了一种简单的开发方式。 SpringCloud中包含了多个子项目: Spring …

Properties类读配置文件、修改配置文件

Properties类简介(1)Properties类是专门用于读写配置文件的集合类(2)配置文件的后缀名为.properties,内容格式为:# 可以用“#”作为注释 键值 键值**注意:**键值对不需要有空格,值不需要用引号一起来。默认类型是String。键、值不可以是null(3)Properties类的方法可查找api文档…

Java编程介绍以及学习路线

1.Java的起源 Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采…

数据挖掘,计算机网络、操作系统刷题笔记48

数据挖掘,计算机网络、操作系统刷题笔记48 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

2.11sql的增删查改

一.CURD(增删查改1.c新增insert往表里添加数据注意事项1.2.3.4.5.如果是蓝丁文的2.R1.全列查找这一步很危险2.指定列查找3.带表达式的查找4.别名5.查找结果去重:DISTINCT6 排序:ORDER BY7 条件查询:WHERE1.比较运算符WHERE条件可以使用表达式&#xff0c…

如何生成毕业论文的目录和创建模板

有粉丝同学最近在写毕业论文,其中比较让人恼火的是毕业论文的目录,折腾了几遍没弄好,想让我写个简单地教程,那就来吧。主要分为三步:第一步是从模板里面提取标题的样式,第二步是对自己的论文使用设置好的标…

DaVinci:调色版本

调色版本 Grade Version记录着片段的全部调色信息。将一种调色风格或效果,保存为一个调色版本,从而可在多个调色版本之间查看、比较、挑选或者渲染输出。调色版本类型本地版本Local Versions在没有创建新的调色版本之前,片段的调色信息默认记…

MySQl单表查询

表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar…

1dB压缩点和三阶交调点、相位差与延时

1dB压缩点与三阶交调点 要知道放大器是一个非线性系统,传输函数基本用泰勒级数表示 如果输入信号幅度很小,那么上式中2次及以上的项就可以忽略而成为小信号的情况。在许多情况下我们可以忽略3次以上的项。 如果输入一个正弦信号 1、可以看到一个单频率…

webpack-dev-server 的 host 配置 0.0.0.0

webpack-devserver 的 host 配置 0.0.0.0配置成0.0.0.0有什么意义为什么会有以上现象什么是webpack-dev-server什么是0.0.0.0什么是127.0.0.1什么是localhost配置成0.0.0.0有什么意义 假如某个vue项目的webpack配置如下: 在这module.exports {dev: {...//其余的配…

ubuntu部署quark-5

下载源代码 解压zip sudo apt-get install unzip unzip xxxxx.zip安装所需要的包 sudo apt install python2 # 查看是否配置了默认的python sudo update-alternatives --list python若没有设置,会显示: # update-alternatives: error: no alterna…

多行文本在块元素中垂直居中

单行文本垂直居中对齐 在块元素中&#xff0c;让单行文本居中&#xff0c;可以使用line-height等于块元素的高&#xff0c;即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…

Java:SpringMVC的使用(1)

目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…

Android 进阶——Framework核心 之Binder Java成员类详解(三)

文章大纲引言一、Binder Java家族核心成员关系图二、Binder Java家族核心成员源码概述1、android.os.IBinder1.1、boolean transact(int code, Parcel data, Parcel reply, int flags) send a call to an IBinder object1.2、String getInterfaceDescriptor()1.3、boolean ping…