• 计算机组成原理学习笔记:计算机的性能指标


    存储器的性能指标

    容量

    • MAR的位数也就是地址寄存器的位数,可以反映出这个存储体总共有多少个存储单元
    • 另外MDR数据寄存器的位数可以反映出每一个存储单元可以存放多少个二进制比特位
    • 所以我们只需要利用这样的两个信息就可以算出整个存储器,它总共可以存放多少个二进制比特位(bit)
    • 如果把比特再除以8的话就可以转换成字节(Byte), 即:
      • 总容量 = 存储单元个数 * 存储字长 bit = 存储单元个数 * 存储字长/8 Byte
      • 1 Byte = 8 bit
    • 例子:MAR为32位,MDR为8位
      • 总容量 = 2 32 ∗ 8 2^{32} * 8 2328 bit = 4 GB
    • 备注:
      • MAR的位数反映存储单元的个数(最多支持多少个)
      • MDR位数 = 存储字长 = 每个存储单元的大小
    • n个二进制位能表示出多少种不同的状态?
      • 1个二进制位:0, 1, 即: 2 1 2^1 21
      • 2个二进制位:00, 01, 10, 11, 即: 2 2 2^2 22
      • 3个二进制位:000, 001, 010, 100, 101, 110, 111, 即: 2 3 2^3 23
      • n个二进制位: 2 n 2^n 2n
    • 32位的二进制数最多可以表示 2 32 2^{32} 232这么多个二进制数, 也就是这么多的地址(存储单元)
    • 我们需要熟练记住: 2 1   2 10 2^1 ~ 2^{10} 21 210 的值
    • 同样,也需要熟练记住:
      • 2 10 2^{10} 210:K
      • 2 20 2^{20} 220:M
      • 2 30 2^{30} 230:G
      • 2 40 2^{40} 240:T
    • 1B = 8bit
    • 1KB = 1024B

    CPU的性能指标

    • 举个例子:i9-9900KF/3.6GHZ/8核/16线程
      • i9-9900KF 是CPU的型号
      • 3.6GHZ 是CPU的主频

    CPU主频

    • CPU主频:CPU内数字脉冲信号震荡的频率
      • 脉冲信号:指挥CPU内部所有的部件协调工作的节奏, 类似于广播体操,有人带口号
      • 脉冲信号是有规律,有节奏的发生, 每一个信号都会去执行动作
      • 结合之前的例子,CPU在执行指令的时候,会做很多的动作, 而且动作都有先后顺序,每个动作执行完毕后才会开始下一个动作
      • CPU的脉冲信号给这些动作的执行带来了一个节奏, 当然有的动作也可能在一个脉冲时间内完成不了

    CPU时钟周期

    • 我们把每个脉冲信号的时间称为CPU的时钟周期,通常以微秒或纳秒为单位
    • CPU主频和时钟周期的关系:CPU主频(时钟频率) = 1 C P U 时钟周期 \frac{1}{CPU时钟周期} CPU时钟周期1 单位是 Hz
    • 举例:主频是10Hz表示每秒钟有10个脉冲信号

    CPI

    • 除了主频外,还有其他因素影响CPU的性能, 比如CPI
    • CPI (Clock cycle Per Instruction): 执行一条指令所需的时钟周期数
    • 对于同一个CPU,执行不同的指令有可能消耗不同的时钟周期
    • 对于不同的CPU,即便执行的都是乘法指令,根据乘法指令实际实现的方式不同,两个CPU所需要的时钟周期数量也可能不一样
    • 即便同一个CPU,两次执行相同的指令,这两次的时钟周期数量也可能不一样
      • 比如CPU要从内存取走一个数,这个指令的执行,除了和CPU本身相关,还与主存,内存,当前状态有关
      • 如果主存当前负荷比较大,CPU想要取走一个数,就要花更多的时间
    • 所以,统计CPU执行一条指令所需的时钟周期数在微观上来看是毫无意义的, 因为可以影响这个指标的因素太多
    • 我们有公式:执行一条指令的耗时 = CPI * CPU时钟周期

    例子

    • 假设某个CPU的主频是1000Hz,某个程序包含了100条指令,平均看来指令的CPI等于3,也就是说平均每执行一条指令需要3个时钟周期, 那么这100条指令的程序在这个CPU上执行需要花多长时间呢?

      • 分析:
        • 这个程序总共包含100条指令,每一条指令平均需要3个时钟周期可以执行完,而一个时钟周期的长度应该是主频分之一
        • 100 ∗ 3 ∗ 1 1000 100 * 3 * \frac{1}{1000} 100310001 = 0.3 s
    • 得出公式:CPU执行时间(整个程序的耗时) = CPU时钟周期数/主频 = (指令条数 * CPI) / 主频

    IPS

    • IPS (Instructions Per Second):每秒执行多少条指令
    • 公式: I P S = 主频 平均 C P I IPS = \frac{主频}{平均CPI} IPS=平均CPI主频
      • 主频的值反映了每秒钟多少个数字脉冲(时钟周期)
    • 一般测试时可以加一些常见的单位,如:
      • KIPS
      • MIPS

    FLOPS

    • FLOPS (Floating-point Operations Per Second):每秒执行多少次浮点运算
    • 常见的单位有:
      • KFLOPS
      • MFLOPS
      • GFLOPS
      • TFLOPS
      • 注:K,M,G,T是数量单位, 而且和之前的容量单位是有区别的
        • K = Kilo = 千 = 1 0 3 10^3 103
        • M = Million = 百万 = 1 0 6 10^6 106
        • G = Giga = 十亿 = 1 0 9 10^9 109
        • T = Tera = 万亿 = 1 0 12 10^{12} 1012

    系统整体的性能指标

    数据通路带宽

    • 是指:数据总线一次所能冰属性传递的信息的位数 (各硬件部件通过数据总线传输的数据)
      • 比如:CPU 和 内存;内存和IO设备 之间的信息传输都是通过数据总线来进行的
      • 如果一台计算机的数据通路带宽为8bit, 要从存储体中读取16bit数据,需要传输2次
    • 所以,读取多次一定比读取一次要慢,所以数据通路带宽会直接影响各个硬件部件之间数据传输的效率

    吞吐量

    • 是指:系统在单位时间内处理请求的数量, 这里的请求是一个比较抽象的概念
      • 可以理解为一条指令就是一个请求
      • 也可以理解为一个完整的程序运行
    • 举例:
      • 淘宝服务器处理用户发起的HTTP请求,其每秒钟可以处理多少个HTTP请求

    响应时间

    • 是指:从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间
    • 举例:
      • 右键弹出菜单,从点击触发到弹出菜单的时间
    • 影响响应时间的因素
      • CPU时间(运行一个程序所花费的时间)
      • 等待时间(用于磁盘访问, 存储器访问, I/O操作, 操作系统开销等时间)

    动态测试

    • 以上都是静态指标,但静态指标有时很难反映出一个计算机的综合能力
    • 很多时候,我们会用一个基准程序来测量计算机实际处理速度
    • 基准程序,也就是跑分软件
      • 已经设计好的程序代码,在代码中包含各种各样的指令
      • 各种指令出现的频率是不一样的
    • 会根据你电脑运行程序的耗时来给定综合的评分

    思考

    • 1 ) 主频高的CPU一定比主频低的CPU快么?
      • 不一定:如两个CPU,A的主频为2GHz, 平均CPI=10;B的主频1GHz, 平均CPI=1…
      • 对于B来说1s可执行1G条指令,对A来说,1s只能执行 2 10 \frac{2}{10} 102 = 0.2G条指令
      • 强调一下:描述CPU主频的时候,是用10进制来描述的,1G = 1 0 9 10^9 109, 而不是 2 3 0 2^30 230
      • 所以,主频高的CPU未必比主频低的CPU快
    • 2 ) 对于A、B两个CPU的平均CPI相同,那么A一定更快么?
      • 看起来好像是,但是对比,一定要保持其他变量全都相同
      • 不同的CPU指令系统可能也不一样,若A不支持乘法指令,只能用多次的加法实现乘法,而B支持乘法指令
      • 这样的话,B的整体表现可能会比A更好
    • 3 ) 基准程序执行得越快和说明机器性能越好么?
      • 基准程序中的语句存在频度差异,运行结果也不能完全说明问题
      • 计算机多是用于浮点科学计算,但是用测试显卡的基准程序来测试,这样肯定不科学
      • 所以, 不能盲目相信跑分软件,要结合实际的场景来测试

    总结

    • 计算机的性能指标
      • 存储器的容量
        • MAR的位数反应存储单元数量
        • MDR反映每个存储单元大小
      • CPU
        • 时钟周期:CPU中最小的时间单位,每个动作至少要1个时钟周期
        • 主频(时钟频率): 1 时钟周期 \frac{1}{时钟周期} 时钟周期1,单位 Hz
        • CPI:执行一条指令所需要的时钟周期数
        • CPU执行时间
          • 运行一个程序所花费的时间
          • = 指令条数 ∗ C P I 主频 \frac{指令条数*CPI}{主频} 主频指令条数CPI
        • IPS:每秒执行多少条指令 = 主频 平均 C P I \frac{主频}{平均CPI} 平均CPI主频
        • FLOPS:每秒执行多少次浮点运算
      • 其他:数据通路带宽、吞吐量、响应时间、基准程序
      • 常用数量单位
        • 描述存储容量、文件大小时: K = 2 10 K=2^{10} K=210, M = 2 20 M=2^{20} M=220, G = 2 30 G=2^{30} G=230, T = 2 40 T=2^{40} T=240
        • 描述频率,速率时: K = 1 0 3 K=10^3 K=103, M = 1 0 6 M=10^6 M=106, G = 1 0 9 G=10^9 G=109, T = 1 0 12 T=10^{12} T=1012
  • 相关阅读:
    windows 电脑改成安卓桌面
    jar 命令启动java 指定配置文件路径 jar如何启动
    309. 最佳买卖股票时机含冷冻期
    osgEarth示例分析——osgearth_imageoverlay
    浅谈React中的ref和useRef
    正则表达式
    常见的几种身份验证方法
    面向对象——抽象类
    【有源码】基于uniapp的农场管理小程序springboot基于微信小程序的农场检测系统(源码 调试 lw 开题报告ppt)
    Zotero: 扩容
  • 原文地址:https://blog.csdn.net/Tyro_java/article/details/126692573