后摩尔定律时代,什么将推动计算机性能优化的发展?
在摩尔定律时代,每两年芯片上的晶体管数量就会翻一番,这一看似不可避免的趋势被称为摩尔定律,它极大地促进了计算机性能的提高。然而,硅基晶体管不可能一直小下去,半导体晶体管的微型化推动了计算机性能的提升,但是这种提升已经持续了 50 多年。随着微型化接近极限,摩尔定律将走向终结,我们应该探索其他方法来保持性能的增长,这些方向主要包括:软件、算法和硬件架构。

1
如何让代码跑得更快?
我认为主要有 2 个方面
首先要计算机编程语言要适配硬件,现代计算机提供了旨在让代码运行得更快的架构特性。例如:同时执行多个操作的能力,代码可以多核并行执行;缓存的局部性,即计算机在内存中共置数据元素(空间局部性)或最近被访问过数据元素(时间局部性)时能够有效地访问数据元素。为了提高性能,程序需要暴露更多的并行性和局部性、甚至底层指令供上层编程利用。这就需要计算机编程语言充分利用硬件特性,如:如同步多线程、动态电压和频率调整、直接映射缓存和各种专用指令。提供简单而引人注目的抽象,使硬件的红利尽可能被利用。不出意外的话,未来 10 年,特定场景的计算机编程语言将出现井喷式的发展。
然后推行性能工程,简化软件膨胀问题,特别是一些编程语言和底层框架,简化的思想是这样的。假设你是一名程序员,被分配了一个问题 A 需要解决。你可以编写专门的代码直接解决 A,但你可能会注意到相关问题 B 已经得到解决。通过将 A 转换为可以使用 B 的现有代码解决的问题(相当于稍微修改一下 B,使其适配 A),即通过将 A 简化为 B ,你将花费更少的精力来解决 A 问题。
效率低下既可能来自归并本身(将 A 转换为 B ),也可能来自 B 的通用性(B 的解决方案并非专门针对 A 而定制)。但最大的膨胀来自不相干的复合:将 A 归并到 B,将 B 归并到 C,将 C 归并到 D。即使每次归并都能实现令人印象深刻的 80% 开发效率,但两次独立归约的序列只能实现 80% × 80% = 64%。再复合 20 次,效率将低于 1%,膨胀倍数为 100 倍,其效率不敢想象。
因为只考虑了功能的完整性,没有考虑性能,所以这种快速开发完成的代码往往很慢,再加上过去很少有用火焰图、全链路追踪等指标去衡量一段代码是否慢,到底慢在哪里.... 所以为了创造一个可以轻松编写快速代码的世界,程序编写者必须具备性能设计的知识和技能,并且必须大大改进辅助生产力工具。
从抽象角度来看,软件性能工程可以看作是一个涉及单个循环的简单过程,其中衡量指标主要包括耗时和资源占用:
(i)测量程序 A 的性能。
(ii)对程序 A 进行更改,以生成有望更快的程序 A ′。
(iii)测量程序 A ′的性能。
(iv)如果 A ′ 优于 A,则设置 A = A ′。
(v)如果 A 仍然不够快,则转到 (ii)。
由于摩尔时代多年的简化设计造成的累积膨胀,有很大的机会让程序运行得更快。不幸的是,使用专门的软件直接解决问题 A,需要 A 领域和性能工程方面的专业知识,这使得该过程比简单地修改 B 更昂贵且风险更大,所以解决 A 的最终专用软件通常比将 A 简化为 B 的软件更复杂。
2
算法
常规的性能优化的都是时间换空间,比如离线运行,懒加载等,代码运行速度变慢了,资源节约了;空间换时间,比如缓存、多线程等,代码运行速度变快了,同时资源消耗增加了。唯独算法优化,它是凌驾在常规性能优化之上,一个斐波那契数列从递归优化到普通循环,复杂度可以从 O(2^n)次方优化到 O(n)。随着问题规模增加至数十亿或万亿个数据点时,就平均年改进率而言,算法改进的重要性比硬件或摩尔定律重要得多。特别是在拥有大规模数据集的数据分析和机器学习领域,算法改进尤为重要。
3
硬件架构
从历史上看,计算机硬件架构师使用越来越多的晶体管来加快串行计算的速度,从而大大增加了处理核心的复杂性,尽管随着时间的推移,性能的提升收益逐渐减少。在后摩尔时代,架构师需要采取相反的策略,专注于硬件精简:使用更少的晶体管和更少的硅片面积来实现硬件功能。我们将看到,硬件精简的主要优势在于为更多电路提供额外的芯片面积,以便并行运行。因此,具有足够并行性的应用程序将获得最大的好处。事实上,对于没有太多并行性的应用程序,硬件的性能已经停滞不前。但在许多新兴应用领域,如机器学习、图形、视频和图像处理、传感计算和信号处理,都存在大量并行性。计算机架构师应该能够设计精简的架构,以便在摩尔定律结束后的许多年里为这些领域和其他领域提供更高的性能。
推荐
性能优化的实践派与学院派
高性能服务器架构设计与调优
原创不易,随手关注或者”在看“,诚挚感谢!
相关文章:
后摩尔定律时代,什么将推动计算机性能优化的发展?
在摩尔定律时代,每两年芯片上的晶体管数量就会翻一番,这一看似不可避免的趋势被称为摩尔定律,它极大地促进了计算机性能的提高。然而,硅基晶体管不可能一直小下去,半导体晶体管的微型化推动了计算机性能的提升…...
SQL进阶技巧:如何计算商品需求与到货队列表进出计划?
目录 0 需求描述 1 数据准备 2 问题分析 3 小结 累计到货数量计算 出货数量计算 剩余数量计算 0 需求描述 假设现有多种商品的订单需求表 DEMO_REQUIREMENT,以及商品的到货队列表 DEMO_ARR_QUEUE,要求按照业务需要,设计一个报表&#…...
linux普通用户使用sudo不需要输密码
1.root用户如果没有密码,先给root用户设置密码 sudo passwd root #设置密码 2.修改visudo配置 su #切换到root用户下 sudo visudo #修改visudo配置文件 用户名 ALL(ALL) NOPASSWD: ALL #下图所示处新增一行配置 用户名需要输入自己当前主机的用户名...
Mac配置 Node镜像源的时候报错解决办法
在Mac电脑中配置国内镜像源的时候报错,提示权限问题,无法写入配置文件。本文提供解决方法,青测有效。 一、原因分析 遇到的错误是由于 .npm 目录下的文件被 root 用户所拥有,导致当前用户无法写入相关配置文件。 二、解决办法 在终端输入以下命令,输入管理员密码即可。 su…...
R语言的数据结构-数据框
【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 在医学领域中,R语言的数据框(…...
分布式全文检索引擎ElasticSearch-数据的写入存储底层原理
一、数据写入的核心流程 当向 ES 索引写入数据时,整体流程如下: 1、客户端发送写入请求 客户端向 ES 集群的任意节点(称为协调节点,Coordinating Node)发送一个写入请求,比如 index(插入或更…...
react中实现导出excel文件
react中实现导出excel文件 一、安装依赖二、实现导出功能三、自定义列标题四、设置列宽度五、样式优化1、安装扩展库2、设置样式3、扩展样式功能 在 React 项目中实现点击按钮后导出数据为 Excel 文件,可以使用 xlsx 和 file-saver 这两个库。 一、安装依赖 在项目…...
有监督学习 vs 无监督学习:机器学习的两大支柱
有监督学习 vs 无监督学习:机器学习的两大支柱 有监督学习 vs 无监督学习:机器学习的两大支柱一、有无“老师”来指导二、解决的问题类型不同三、模型的输出不同 有监督学习 vs 无监督学习:机器学习的两大支柱 在机器学习的奇妙世界里&#…...
c4d动画怎么导出mp4视频,c4d动画视频格式设置
宝子们,今天来给大家讲讲 C4D 咋导出mp4视频的方法。通过用图文教程的形式给大家展示得明明白白的,让你能轻松理解和掌握,不管是理论基础,还是实际操作和技能技巧,都能学到,快速入门然后提升自己哦。 c4d动…...
差分矩阵(Difference Matrix)与累计和矩阵(Running Sum Matrix)的概念与应用:中英双语
本文是学习这本书的笔记: https://web.stanford.edu/~boyd/vmls/ 差分矩阵(Difference Matrix)与累计和矩阵(Running Sum Matrix)的概念与应用 在线性代数和信号处理等领域中,矩阵运算常被用来表示和计算各种数据变换…...
全面解析 Golang Gin 框架
1. 引言 在现代 Web 开发中,随着需求日益增加,开发者需要选择合适的工具来高效地构建应用程序。对于 Go 语言(Golang)开发者来说,Gin 是一个备受青睐的 Web 框架。它轻量、性能高、易于使用,并且具备丰富的…...
全脐点曲面当且仅当平面或者球面的一部分
S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 S_\text{ 是全脐点曲面当且仅当 }{S_\text{ 是平面或者球面的一部分。}} S 是全脐点曲面当且仅当 S 是平面或者球面的一部分。 证: 充分性显然,下证必要性。 若 r ( u , v ) r(u,v) r(u,v)是…...
CSS学习记录18
CSS渐变 CSS渐变您可以显示两种或多种指定颜色之间的平滑过渡。 CSS定义了两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线)径向渐变(由其中心定义) CSS线性渐变 如需创建线性渐变,您必须至少两个色…...
实验13 C语言连接和操作MySQL数据库
一、安装MySQL 1、使用包管理器安装MySQL sudo apt update sudo apt install mysql-server2、启动MySQL服务: sudo systemctl start mysql3、检查MySQL服务状态: sudo systemctl status mysql二、安装MySQL开发库 sudo apt-get install libmysqlcli…...
90度Floating B to B 高速连接器信号完整性仿真
在180度 B to B Connector 信号完整性仿真时,不会碰到端口设置不方便问题,但在做90度B to B Connector信号完整性仿真时就会碰到端口设置问题。如下面的90度B to B Connector。 公座 母座 公母对插后如下: 客户要求改Connector需符合PCI-E3.…...
【踩坑】Pytorch与CUDA版本的关系及安装
Pytorch、CUDA和CUDA Toolkit区分 查看当前环境常用shell命令python脚本 Driver API CUDA(nvidia-smi)Runtime API CUDA(nvcc --version)pytorch选择CUDA版本的顺序安装需要的CUDA,多版本共存和自由切换 本文参考 http…...
信息隐藏 数字图像空域隐写与分析技术的实现
数字图像隐写与分析 摘要 随着信息技术的发展,隐写术作为一种信息隐藏技术,越来越受到关注。本文介绍了一种基于最低有效位(LSB)方法的数字图像隐写技术,并实现了隐写数据的嵌入与提取。通过卡方检验分析隐写图像的统计特性,评估隐写数据对图像的影响。实验结果表明,该…...
halcon单相机+机器人*眼在手外标定心得
目的 得到相机坐标系下的点与机器人底座base的转换关系,camera_in_base 两个不确定的定量 1,相机与机器人底座base之间的相对位置是固定的,既camera_in_base 2,机械手末端与标定物 tool_in_obj是固定的 辅助确定量 工作台与相…...
pytest入门十:配置文件
pytest.ini:pytest的主配置文件,可以改变pytest的默认行为conftest.py:测试用例的一些fixture配置 pytest.ini marks mark 打标的执行 pytest.mark.add add需要些marks配置否则报warning [pytest] markersadd:测试打标 测试用例中添加了 p…...
基于Clinical BERT的医疗知识图谱自动化构建方法,双层对比框架
基于Clinical BERT的医疗知识图谱自动化构建方法,双层对比框架 论文大纲理解1. 确认目标2. 目标-手段分析3. 实现步骤4. 金手指分析 全流程核心模式核心模式提取压缩后的系统描述核心创新点 数据分析第一步:数据收集第二步:规律挖掘第三步&am…...
CMake vs. MsBuild vs. Ninja:C++编译工具链全解析(附Windows平台实战示例)
CMake vs. MsBuild vs. Ninja:C编译工具链全解析(附Windows平台实战示例) 在C开发的世界里,构建工具的选择往往决定了项目的可维护性和跨平台能力。当你在Windows平台上打开Visual Studio时,背后默默工作的可能是MsBui…...
OFA-Image-Caption赋能Android应用:移动端图像智能描述实战
OFA-Image-Caption赋能Android应用:移动端图像智能描述实战 你有没有想过,手机拍下一张照片,它就能立刻告诉你照片里有什么?对于视障朋友来说,这不仅仅是便利,更是打开世界的一扇窗。而对于内容平台&#…...
OpenClaw技能开发入门:为nanobot编写自定义QQ机器人插件
OpenClaw技能开发入门:为nanobot编写自定义QQ机器人插件 1. 为什么需要自定义OpenClaw技能 去年夏天,当我第一次接触OpenClaw时,就被它的自动化能力深深吸引。但很快发现,官方提供的技能虽然丰富,却无法满足我的特定…...
别再只用Billboard了!用Cesium Entity实现高性能动态告警点的3个优化技巧
突破性能瓶颈:Cesium Entity动态告警点的高阶优化实战 当三维场景中需要同时呈现数百个闪烁的告警点时,许多开发者会发现原本流畅的界面开始变得卡顿。这不是Cesium的局限性,而是我们可能还没有完全掌握其性能优化的精髓。本文将带您深入探索…...
【同态加密实战】从Paillier到BFV:算法原理与编码艺术深度解析
1. 同态加密:数据隐私保护的魔法钥匙 想象一下,你有一把能锁住数据的魔法钥匙——即使数据被锁在箱子里,别人依然可以对箱子里的数据进行计算,而无需打开箱子看到原始内容。这就是同态加密的神奇之处。作为密码学领域的"圣杯…...
嵌入式ADC过采样驱动文档规范与实践
项目标题缺失有效技术信息,项目摘要仅为编码“PURS_ZI_007”,项目关键词为空,Readme文档内容未提供。根据嵌入式底层技术文档创作规范,所有输出必须严格基于输入的英文原始材料——包括功能描述、API定义、配置项、示例代码及架构…...
万亿级流量的基石:Kafka 核心原理、大厂面试题解析与实战
第一部分:架构师视角——为什么要选 Kafka?在做技术选型时,我们需要明确 Kafka 的定位:它是一个分布式流式处理平台,而不仅仅是一个消息队列。1. Kafka 的核心优势高吞吐量:单机可支撑每秒百万级别的写操作…...
BatchNorm实战避坑指南:为什么你的小批量训练总是不稳定?
BatchNorm实战避坑指南:小批量训练不稳定的深层解析与解决方案 1. 问题背景:为什么小批量训练总是不稳定? 在深度学习实践中,Batch Normalization(批归一化)已成为许多模型架构的标准组件。然而,…...
别再只调参了!从NeurIPS 2025看时间序列预测的7个新思路:标签对齐、隐式解码与后处理修正
别再只调参了!从NeurIPS 2025看时间序列预测的7个新思路:标签对齐、隐式解码与后处理修正 当算法工程师们还在为LSTM的超参数调优争论不休时,NeurIPS 2025的最新研究已经将时间序列预测推向了全新的技术范式。这场全球顶会揭示了一个关键趋势…...
破局与重构:基于“智慧大脑”的企业全面数据化经营深度解构(PPT)
“在数字时代,企业最大的风险不是数据的匮乏,而是决策依然依赖经验直觉而非数据驱动。” —— 这份《数字化建设企业经营解决方案》文档,不仅是一份技术蓝图,更是对传统企业经营管理模式的一次彻底颠覆。它描绘了一个从“人治”迈…...
