前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >计算机最早提高性能的方法

计算机最早提高性能的方法

作者头像
硬核编程
发布于 2019-08-19 13:34:38
发布于 2019-08-19 13:34:38
5350
举报

转载请联系授权

01

早期计算机的提速方式

随着本系列进展,我们知道计算机进步巨大,从 1 秒 1 次运算,到现在有千赫甚至兆赫的CPU,这是很大的计算量。

早期计算机的提速方式是减少晶体管的切换时间。晶体管组成了逻辑门,ALU 以及前面的其他组件。但这种提速方法最终会碰到瓶颈,所以处理器厂商,发明各种新技术来提升性能,不但让简单指令运行更快,也让它能进行更复杂的运算。

上节我们写了个做除法的程序,给 CPU 执行,方法是做一连串减法,比如16除4 会变成16-4 -4 -4 -4,碰到 0 或负数才停下。但这种方法要多个时钟周期,很低效。

所以现代 CPU 直接在硬件层面设计了除法, 可以直接给 ALU 除法指令,这让 ALU 更大也更复杂一些。

复杂度 vs 速度的平衡在计算机发展史上经常出现。

举例,现代处理器有专门电路来处理图形操作, 解码压缩视频, 加密文档等等,如果用标准操作来实现,要很多个时钟周期。你可能听过某些处理器有 MMX, 3DNOW, SEE。它们有额外电路做更复杂的操作,用于游戏和加密等场景。

指令不断增加,人们一旦习惯了它的便利就很难删掉。所以为了兼容旧指令集,指令数量越来越多。英特尔 4004,第一个集成CPU,有 46 条指令,足够做一台能用的计算机,但现代处理器有上千条指令,有各种巧妙复杂的电路。

02

如何快速传递数据给 CPU

超高的时钟速度带来另一个问题,如何快速传递数据给 CPU。就像有强大的蒸汽机 但无法快速加煤,RAM 成了瓶颈。RAM 是 CPU 之外的独立组件,意味着数据要用线来传递,叫"总线"。总线可能只有几厘米,别忘了电信号的传输接近光速。

但 CPU 每秒可以处理上亿条指令,很小的延迟也会造成问题,RAM 还需要时间找地址,取数据,配置,输出数据。一条"从内存读数据"的指令可能要多个时钟周期,CPU 空等数据。

03

解决延迟的方法之一

解决延迟的方法之一是给 CPU 加一点 RAM - 叫"缓存",因为处理器里空间不大,所以缓存一般只有 KB 或 MB。而 RAM 都是 GB 起步,缓存提高了速度。

CPU 从 RAM 拿数据时,RAM 不用传一个,可以传一批。虽然花的时间久一点,但数据可以存在缓存,这很实用,因为数据常常是一个个按顺序处理。

举个例子,算餐厅的当日收入,先取 RAM 地址 100 的交易额,RAM 与其只给1个值,直接给一批值,把地址100到200都复制到缓存。当处理器要下一个交易额时,地址 101,缓存会说:"我已经有了,现在就给你"。不用去 RAM 取数据。

因为缓存离 CPU 近, 一个时钟周期就能给数据 - CPU 不用空等,比反复去 RAM 拿数据快得多,如果想要的数据已经在缓存,叫缓存命中,如果想要的数据不在缓存,叫缓存未命中

04

缓存可以当临时空间

缓存也可以当临时空间,存一些中间值,适合长/复杂的运算。

继续餐馆的例子,假设 CPU 算完了一天的销售额,想把结果存到地址 150,就像之前,数据不是直接存到 RAM,而是存在缓存。这样不但存起来快一些,如果还要接着算,取值也快一些。

05

缓存同步问题

但这样带来了一个有趣的问题,缓存和 RAM 不一致了。这种不一致必须记录下来,之后要同步。因此缓存里每块空间 有一个特殊标记叫 "脏位"。这可能是计算机科学家取的最贴切的名字。

同步一般发生在 当缓存满了而 CPU 又要缓存时,在清理缓存腾出空间之前,会先检查 "脏位",如果是"脏"的, 在加载新内容之前, 会把数据写回 RAM。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员成长充电站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CPU 是怎样工作的?[每日前端夜话0x89]
CPU,也被称为微处理器,是计算机的大脑。让我们通过深入了解计算机的核心,来帮助自己有效地编写计算机程序。
疯狂的技术宅
2019/06/28
9910
CPU 是怎样工作的?[每日前端夜话0x89]
这一次从硬件层面理解 什么是缓存?
上一篇文章中我们做了一个除法的程序,其实现原理是不断使用减法当检测到0或者负数时停止。但是这种方式需要很多个时钟周期才能完成(13个周期,每次发一个时钟周期CPU去取一次指令执行【取指令,解码,执行】),特别低效。
北洋
2023/09/22
2000
计算机组成原理概述
计算机硬件是构成计算机系统各功能部件的集合。是由电子、机械和光电元件组成的各种计算机部件和设备的总称,是计算机完成各项工作的物质基础。计算机硬件是看得见、摸得着的,实实在在存在的物理实体。 计算机软件是指与计算机系统操作有关的各种程序以及任何与之相关的文档和数据的集合。其中程序是用程序设计语言描述的适合计算机执行的语句指令序列。 没有安装任何软件的计算机通常称为“裸机”,裸机是无法工作的。如果计算机硬件脱离了计算机软件,那么它就成为了一台无用的机器。如果计算机软件脱离了计算机的硬件就失去了它运行的物质基础;所以说二者相互依存,缺一不可,共同构成一个完整的计算机系统。
黄规速
2022/04/14
1.4K0
计算机组成原理概述
从计组角度去看如何优化指令执行流程及线程进程区别
上一篇文章中我们做了一个除法的程序,其实现原理是不断使用减法当检测到0或者负数时停止。但是这种方式需要很多个时钟周期才能完成(13个周期,每次发一个时钟周期CPU去取一次指令执行【取指令,解码,执行】),特别低效。
小柔
2022/10/09
5590
从计组角度去看如何优化指令执行流程及线程进程区别
CrashCourseComputerScience(1)-计算机历史及硬件
本文是在回顾Crash Course计算机系列视频的笔记,本系列课程的老师是外网有名的Carrie Anne.
打铁读书郎
2024/04/11
3020
CrashCourseComputerScience(1)-计算机历史及硬件
计算机组成原理–浅谈计算机性能
本篇文章属于计算机组成原理的开篇之作,主讲影响计算机性能的因素与提升的计算机性能的路径。 关键词: 性能,CPU,响应时间,主频,功耗,电压,并行…
全栈程序员站长
2022/09/07
8830
【计算机工作原理】带大家科普计算机是如何工作的。
其中门电路是由与门,或门,非门,异或门组成的,CPU的构成非常抽象和复杂,上面只是帮助大家了解,并不严谨。
小皮侠
2024/04/08
3380
【计算机工作原理】带大家科普计算机是如何工作的。
运维锅总详解CPU
本文从CPU简介、衡量CPU性能指标、单核及多核CPU工作流程、如何平衡 CPU 性能和防止CPU过载、为什么计算密集型任务要选择高频率CPU、超线程技术、CPU历史演进及摩尔定律等方面对CPU进行详细分析。希望对您有所帮助!
锅总
2024/07/11
2950
运维锅总详解CPU
计算机组成基础
每天工作都在用计算机,玩游戏也在用计算机,移动互联网没有兴起之前撩妹/勾搭小哥哥也是用计算机,到底计算机是由什么组成的?
小末快跑
2019/07/03
7600
面试官:CPU 是如何工作的?我一脸懵逼。。
CPU(中央处理器),也被称为微处理器,是计算机的心脏和/或大脑。本文让我们一起深入了解计算机的核心,以帮助我们高效地编写计算机程序。
Java技术栈
2021/07/16
1.1K0
面试官:CPU 是如何工作的?我一脸懵逼。。
互联网十万个为什么之什么是CPU?
CPU(中央处理器)是计算机系统的核心硬件组件,负责执行程序代码,处理数据,以及控制其他硬件设备的操作。CPU接收来自内存或输入设备的指令,然后按照指令执行运算和逻辑处理,最终输出结果。它可以看作是计算机的大脑,任何的计算任务都依赖于CPU处理。
linus_lin
2024/09/06
1930
互联网十万个为什么之什么是CPU?
计算机基本组成
计算机的所有“计算”都是由CPU来进行的。自然,CPU也是整台计算机造价最昂贵的部分之一。
Dlimeng
2023/06/30
2590
计算机基本组成
计算机体系架构未来趋势(深度)
1、DSA(Domain-Specific Architectures,特定领域的体系结构)
肉眼品世界
2021/11/10
1.7K0
计算机体系架构未来趋势(深度)
计算机硬件结构概述
学习编程语言,首先需要需要了解计算机硬件组成结构,因为编程语言编写的程序,最终需要在计算机中运行。计算机与程序间属共生关系,二者相互依存,互利共赢,没有程序,计算机如同没有生命一堆废铜烂铁,没有计算机,程序像是无用武之地的英雄,失去存在的意义。所以,了解计算机硬件组成结构是学习编程语言的基础。
恋喵大鲤鱼
2018/08/03
9140
计算机硬件结构概述
计算机组成原理:第一章 计算机系统概论
主要功能是进行加减乘除等算术运算,还可以进行逻辑运算,又称为ALU(算术逻辑运算部件),计算机中通常采用二进制数,运算器长度一般是8、16、32、64位。
Here_SDUT
2022/08/08
5800
计算机组成原理:第一章 计算机系统概论
重学计算机组成原理(二)- 制定学习路线,攀登“性能”之巅
需要搞明白,我们每天撰写的一行行C、Java、PHP程序,是怎么在计算机里面跑起来的。
JavaEdge
2019/08/10
7870
重学计算机组成原理(二)- 制定学习路线,攀登“性能”之巅
【AI系统】CPU 基础
CPU 是 Central Processing Unit(中央处理器)的简称,它负责执行指令和计算,控制着计算机的所有组件。CPU 从无到有,从弱小到强大,经历了漫长发展过程,其间发生了无数的故事。
用户11307734
2024/11/26
1600
计算机结构 cheatsheet
主存被划分为若干个与Cache大小相同的块。Cache也被划分为若干行,每行的大小与主存块相同。主存的块号直接映射到Cache的行号,通常是通过将主存块号的一部分直接用作Cache行号
esse LL
2024/04/06
2440
[资源分享]计算机科学速成课
推荐 程序员的你一定要看,不是程序员的也可以看看,我已经安利刚中考完的我妹妹看了(培养程序媛...)
爬虫
2018/07/25
9700
[资源分享]计算机科学速成课
计算机组成原理-计算机系统概述
冯诺依曼结构中首次提出了“存储程序”的概念,即将指令以二进制代码的形式事先输入计算机的主存储器,然后执行在存储器中的首地址的第一条指令,此后便根据程序规定的次序执行其它指令,直到程序结束。
DearXuan
2022/03/14
9050
计算机组成原理-计算机系统概述
相关推荐
CPU 是怎样工作的?[每日前端夜话0x89]
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档