美文网首页
第一章 理解高性能程序(2)

第一章 理解高性能程序(2)

作者: 耕田者 | 来源:发表于2022-07-04 21:01 被阅读0次

现代处理器架构

       所有的经典的关于性能的建议或算法大多来源于早期CPU时代,那是处理器和内存的速度基本相同。但那之后处理器的速度以摩尔定律的每年60%的速度爆发式的增长,而内存的访问速度每年只增长10%,不足以匹配CPU的速度。问题的症结在于主存(动态随机访问存储器DRAM)包含着极小的电容,保持电荷时表示比特“1”,没有电荷时表示比特“0”。这样做的好处是电路成本低,没有必要一直保持电压,但这种机制是基于模拟电路,无法从数字器件的巨大进步中受益。

       自那之后的第二个变化是摩尔定律简单形式的终结。2000年前后CPU制造商不断提升CPU频率,让CPU越来越快。这是通过增加芯片上的晶体管数量实现的,摩尔定律预言,芯片上的晶体管数量将每18个月翻倍,简言之,CPU的速度每两年倍增。

       这一趋势会一直延续到处理器制造商达到物理极限,即所谓的功率极限(power wall), 当密集的晶体管产生了大量的热以至于不能用消费级技术进行有效地冷却(高端昂贵的水冷系统对桌面、移动设备而言成本太高了)。所以必须找到一种新的提升CPU性能的方法。

缓存

          为克服以上问题的尝试产生了计算机架构上的创新。首先,CPU与内存速度的不匹配通过一种我们已知的传统优化技术来解决,即在芯片级别增加缓存。这种芯片上的静态随机存储器(SRAM)每个比特需要6个晶体管(构成触发器),并且所有晶体管都需要供电。这意味着这是一种昂贵的方案,并且会导致功耗的增长(必须小心地避免达到功率极限)。带来地好处是:内存地访问速度接近光速,因为是通过电流进行输入和输出操作。

       所以,这一思想便是在CPU和慢而便宜的大容量主存之间增加少量昂贵但快速的片上内存作为缓存。同时,现代CPU可以寻址多达三级的缓存,通常缩写为L1, L2和L3, 这三级缓存的的晶体管密度和速度逐级递减,但容量逐级递增。下图展示了现代CPU的层级存储结构:

Fig.1 CPU, 主存,缓存示意图

       在本书写作时,L1缓存的访问时间是3个时钟周期,L2为12个时钟周期,L3为38个时钟周期,而主存的访问时间大约是100到300个时钟周期。主存的高访问延时主要是由DRAM的模拟本质决定的。除此之外还有周期性的充电刷新,读取前对读取行的预充电,模拟-数字转换,与存储器控制单元(MCU)的通信等,诸如此类。

缓存由缓存行构成,在当今Intel架构下,每个缓存行为64字节长度。每次缓存更新会从主存中读取整个缓存行,这是以缓存行的大小做数据预取。说到数据预取,Intel处理器有一种特殊的预取指令,我们可以用汇编代码调用,做非常底层的优化。

除了数据缓存,还有一种指令缓存,在冯·诺伊曼体系中,这两者都在通用存储器(common memory)中。指令缓存是在Intel Pentium Pro (P6)尝试增加的,但那之后就一直保留了下来。

相关文章

  • 读《深入理解Java虚拟机》- 笔记03

    《深入理解Java虚拟机:JVM高级特性与最佳实践》第2版 第5章 调优案例分析与实战 23. 高性能硬件上的程序...

  • 多进程网络服务

    1、高性能网络服务程序 Linux的一个应用优势是可用于设计各种高性能网络服务程序,高性能的一个特点就是实现并发...

  • Java SE基础巩固(二):String类

    String使用频率非常高,无论是在大型还是小型的应用程序都会大量的使用String类。所以,理解并以高性能的方式...

  • 1设计模式 概述

    通过学习了解图解设计模式这本书,对于设计模式有了更好的理解。作为程序,如何编写可靠,高性能,高可用的优美代码。二十...

  • 调优案例分析与实战

    1 调优案例分析 1.1 高性能硬件上的程序部署策略 在高性能硬件上部署程序的两种策略: 通过64位JDK来使用大...

  • Think Python 2ed 笔记(一)

    Think Python 2ed 中文版网址 第一章 程序之道 1. 程序员最终要的能力:解决问题的能力 2. ...

  • YII 初体验 —— 搭建一个简单的 Todo List 系统

    Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。 今天,我本着体验 Yii2 ...

  • 00java发展

    网络编程三高问题:高可用、高性能、高并发 中间件的东西吧程序员从事务管理、安全管理、权限管理解放了出来,专注了业务...

  • 2022-10-21-读其他书籍

    阅读《程序员修炼之道》和《程序员职业素养》第一章之前的内容。下载《程序员修炼之道》第 2 版电子书。 看《程序员职...

  • 小程序上传头像前剪切图片

    image-cropper 一款高性能的小程序图片裁剪插件,支持旋转。 1.功能强大。 2.性能超高超流畅,大图毫...

网友评论

      本文标题:第一章 理解高性能程序(2)

      本文链接:https://www.haomeiwen.com/subject/tlxebrtx.html