TooLongLink Video Watcher AI
Watch:
العربية - Arabic
Bahasa Indonesia
বাংলা - Bengali
български - Bulgarian
简体中文 - Chinese Simplified
繁體中文 - Chinese Traditional
Hrvatski - Croatian
Čeština - Czech
Dansk - Danish
Nederlands - Dutch
English
Eesti - Estonian
فارسی - Farsi
Suomi - Finnish
Français - French
Deutsch - German
Ελληνικά - Greek
ગુજરાતી - Gujarati
עברית - Hebrew
हिन्दी - Hindi
Magyar - Hungarian
Italiano - Italian
日本語 - Japanese
ಕನ್ನಡ - Kannada
한국어 - Korean
Latviešu - Latvian
Lietuvių - Lithuanian
മലയാളം - Malayalam
मराठी - Marathi
Norsk - Norwegian
Polski - Polish
Português - Portuguese
Română - Romanian
Русский - Russian
Српски - Serbian
Slovenčina - Slovak
Slovenščina - Slovenian
Español - Spanish
Kiswahili - Swahili
Svenska - Swedish
தமிழ் - Tamil
తెలుగు - Telugu
ไทย - Thai
Türkçe - Turkish
Українська - Ukrainian
اردو - Urdu
Tiếng Việt - Vietnamese
Submit
为什么现代软件如此糟糕?——通过统一系统级芯片指令集架构解决3000万行代码问题
Molly Rocket
总结:
这份讲座深入探讨了“3000万行代码问题”,指出尽管硬件性能飞速发展,现代软件的质量却历史性地下降。主要观点包括:
现代硬件拥有比以往任何时候都更强大的处理器、图形和内存,但软件用户体验却因病毒、不稳定和强制更新而变得糟糕。
一个简单的网页文本文件读取操作,可能需要超过5600万行代码(包括浏览器、操作系统、路由器、服务器等)才能正常运行,这导致了性能和可靠性问题。
1980年代,家用电脑的操作系统代码量很少,开发者可以直接对硬件编程,从而实现高性能和高可靠性。
1990年代USB和硬件加速图形的引入,使得硬件接口变得不透明和复杂,导致驱动程序和操作系统臃肿,软件开发变得极其困难。
演讲者提出,通过为整个系统级芯片(SoC)创建一套长期稳定的指令集架构(ISA),并简化其硬件接口,可以有效解决代码臃肿问题。
这种方法能显著提升软件的效率、可靠性、安全性和可维护性,同时鼓励软件创新,并为硬件制造商带来巨大的商业优势,类似于Linux对服务器市场的影响。
读取文本文件所需的最小代码行数,显示浏览器、操作系统、路由器、服务器等组件的代码行数累加 [
00:17:10
]
引言:3000万行代码问题 [
00:00:00
]
视频目的
[
00:00:54
]
探讨现代硬件和操作系统设计失控且难以维持的危险。
分析软件复杂性如何导致可靠性和用户体验下降。
硬件质量与软件质量的对比 [
00:01:17
]
硬件的巨大进步
[
00:01:21
]
1990年与2015年计算机硬件规格对比
处理器
: 从25MHz单核到4个2.8GHz处理器,每个处理器包含4路ALU单元,甚至更多核心和超线程。
图形
: 从320x512x5位的简单图形到至少2560x1600x24位专用图形协处理器(现在甚至普及4K显示器)。
内存
: 从6MB到8GB(主处理器)+ 4GB(图形处理器),容量提升近千倍。
硬盘
: 从50MB到4TB HDD + 80GB SSD,存储容量呈爆炸式增长。
结论
[
00:03:51
]: 硬件开发者在过去25-28年间取得了惊人的进步。
软件质量的历史性倒退
[
00:04:06
]
现代软件体验
尽管硬件性能强大,但2015年甚至2018年的软件体验却比1990年代更糟糕。
普遍存在病毒、软件不稳定、强制更新、无法控制的弹窗、操作系统无故重启和工作丢失等问题。
例如
[
00:06:20
]: HDMI的HDCP协议可能导致合法购买的蓝光光盘无法在电视上播放。
负面案例
[
00:07:06
]: 一则新闻报道称Windows更新导致篮球比赛计分系统无法使用,造成实际损失。
结论
[
00:07:52
]: 现代计算机硬件性能远超以往,但软件计算能力却未能有效提升,反而导致用户体验下降。
代码行数爆炸:软件复杂性的根源 [
00:08:16
]
软件开发模式的演变
[
00:10:06
]
不再从零开始编写代码,而是将代码层层堆叠,导致底层问题和性能问题呈指数级放大。
操作系统代码量增长图
[
00:10:42
]
1991年Linux内核
[
00:10:58
]: 代码量极小,在图中几乎不可见。
2015年Linux内核
[
00:11:12
]: 仅内核代码就超过1800万行,且仍在持续增长,这还不包括X Window、GNU标准库等。
Linux内核代码量增长图 [
00:10:50
]
读取文本文件所需的最小代码行数
[
00:12:16
]
一个简单的通过网页浏览器读取文本文件的操作,需要至少5600万行代码正常运行。
所需组件及代码量估算
[
00:13:40
]
Chrome浏览器: 16,271,589 LOC
Linux操作系统: 17,284,884 LOC
路由器(OpenWRT): 1,649,806 LOC
思科路由器: ???? LOC (未统计,但可能有数百万行)
服务器操作系统(FreeBSD): 12,897,243 LOC
Apache: 1,542,162 LOC
PHP: 2,498,065 LOC
WordPress: 346,389 LOC
MySQL: 2,787,767 LOC
总计(最低估算)
: 55,658,985 LOC (约5600万行)
读取文本文件所需的最小代码行数图表 [
00:17:10
]
问题核心
[
00:17:14
]: 超过50%的代码量来自于不可消除的底层操作系统,即使优化所有应用层代码,问题也只解决了一半。这些庞大的代码层导致了高失败率和性能问题。
软件质量下降的原因:历史转折点 [
00:18:10
]
1980-1990年代:数千种消费级操作系统
[
00:18:24
]
直接编程的时代
当时,购买的每个程序(如游戏)通常都附带自己的定制操作系统,直接启动以优化性能和可靠性。
例如,Amiga上的游戏多通过引导盘启动,而非通用操作系统。
这意味着任何开发者都可以编写自己的操作系统并完全利用系统资源。
Thousands of Consumer Operating Systems [
00:18:20
]
1990年代的关键技术转变
[
00:23:56
]
1995年:USB/即插即用
[
00:25:18
]
引入了通用的串行接口协议,但其规范并未明确硬件如何工作,而是依赖于硬件制造商提供配套软件(驱动程序),导致接口变得不透明。
1996年:强制硬件加速图形
[
00:26:03
]
PC开始强制使用硬件加速图形。与Amiga等平台不同,PC上的图形加速硬件设计不透明,需要复杂且不断变化的驱动程序才能编程。
Mandatory Hardware-accelerated Graphics [
00:25:59
]
技术转变的后果
[
00:27:34
]
这些不透明的接口和驱动程序导致操作系统代码的复杂性呈指数级增长。
现代操作系统格局
[
00:22:01
]
如今,消费级操作系统市场仅剩下三大核心: Windows NT内核、Linux内核和FreeBSD内核(以及基于它们的衍生系统,如Android、iOS、macOS、PlayStation等)。
Three Consumer Operating Systems [
00:22:39
]
这扼杀了个人编写操作系统的能力,导致少数巨头垄断,创新受阻。
系统级芯片(SoC)作为解决方案 [
00:28:46
]
SoC的兴起
[
00:29:50
]
随着小型化趋势(手机、平板、物联网)的发展,将所有组件集成到单一模块中的系统级芯片变得日益普遍和重要。
SoC的特点
[
00:31:13
]
SoC类似于1980年代的家用电脑:所有芯片(CPU、GPU、内存控制器、USB控制器等)都集成在一起,以可预测的方式互联,且几乎没有可配置性。
这种集成减少了传统PC主板上存在的“冗余”和复杂互连。
Intel Smart SoC [
00:28:49
]
提案:扩展ISA至整个SoC
[
00:34:05
]
核心思想
: 将x86/x64指令集架构(ISA)的概念扩展,使其能够覆盖整个系统级芯片,为SoC提供一个稳定、可预测、可测试的硬件接口。
ISA的价值
: ISA定义了内存中数据如何被硬件解释和执行。x86 ISA的成功表明,一个稳定的ISA能为硬件带来巨大的价值和可控性。
当前问题
[
00:36:45
]: 硬件和软件开发者之间存在过多抽象层,导致性能、可靠性和安全性难以测试和保证。
直接编程的要求与优势 [
00:43:58
]
直接编程的6个关键要求
[
00:45:43
]
兼容性
: 硬件厂商需维护并遵守长期稳定的SoC ISA规范。
性能
: SoC硬件必须提供足够的性能,以满足实际消费级应用的需求 (例如,树莓派虽文档齐全,但性能不足以运行主流游戏)。
简洁性
: 硬件接口应极其简化,回归到直接读写内存的方式,而不是复杂的、抽象的API。
文档
: 硬件接口需提供全面、清晰的文档,供开发者学习和理解。
教程
: 提供丰富的教程和示例,帮助开发者快速上手直接编程。
宣传
: 广泛宣传这种模式的优势,形成公众和市场需求。
协同努力
[
00:48:23
]
硬件厂商的责任
定义并承诺使用长期稳定的SoC架构。
确保其高性能产品线遵循该架构。
简化硬件接口,采用类似环形缓冲区(ring-buffer only)的设计。
软件开发者的贡献
协助设计简洁的硬件接口。
开发原型操作系统和支持库,提供文档和教程。
激发全球程序员对这种新模式的热情,形成强大的社区支持。
删除冗余代码的巨大好处
[
00:36:45
]
效率与性能
移除不必要的中间层代码能显著提升性能。例如,AMD Mantle API展示了移除中间层驱动后,相同硬件的性能提升了50%。
Performance Improvements from Simplified Driver Access [
00:40:29
]
Arrakis论文的研究也表明,简化操作系统对硬件的访问(例如网络数据包处理)能带来戏剧性的性能提升。
可靠性与安全性
代码量减少,意味着潜在的bug和安全漏洞也随之减少,系统将更可靠、更安全。
每一个中间层代码都可能成为被攻击的入口,移除它们能有效降低系统被入侵的风险。
可维护性
更小的代码库更容易理解和维护,降低开发和调试成本。
未来展望与假设 [
00:55:40
]
负面假设
[
00:56:15
]
如果Linus Torvalds晚出生十年
Linux将不会出现,导致微软将垄断所有PC和服务器操作系统市场。
这将扼杀创新,并使计算生态系统高度集中化,互联网的发展路径将大不相同。
下一位Linus选择ARM平台
如果未来的核心开发者选择ARM等更简洁的平台,而不是当前主流的x86/x64,那么当前的硬件领导者(如英特尔)将失去市场优势。
积极假设
[
01:00:20
]
开发操作系统像开发应用程序一样简单
如果任何人都能轻松创建操作系统,PC市场的垄断将被打破,大量竞争将促使操作系统公司提供更高质量的产品。
软件直接运行在硬件上
如果应用程序直接针对x64硬件而非操作系统API编写,x64芯片厂商将重新获得生态系统的主导权,并通过硬件改进直接提升性能。
这将使制造最好的硬件的厂商赢得市场领导地位。
游戏开发
主机游戏开发已经证明,直接编程硬件能释放巨大的性能潜力,带来远超PC平台的视觉和体验效果。
问答环节 [
01:11:07
]
IncludeOS的方向
[
01:11:07
]: 演讲者认为像IncludeOS这样直接运行程序在硬件上,仅需启动加载器,是朝着正确方向迈进的举措。
与英特尔的交流
[
01:12:01
]: 演讲者曾向英特尔提出此想法,获得高层关注,但由于硬件制造的高风险和高成本,需要强大的外部市场需求才能推动公司进行根本性变革。
2万行代码的操作系统 (20K LOC OS)
[
01:15:14
]: 2万行汇编代码的操作系统不足以支持现代消费级功能(如3D图形、打印机、摄像头),真正的挑战在于简化这些消费级硬件的编程接口。
非硬件厂商的贡献
[
01:16:59
]: 软件社区应积极宣传和阐明当前问题的重要性,展示未来的路线图,以形成对硬件厂商的外部需求和舆论压力。
安全性
[
01:18:16
]: 在直接编程的世界中,安全性将大大提高。代码量减少,攻击面缩小;程序可以高度隔离运行,甚至拥有独立的存储区域和格式,使病毒攻击变得极其困难。
编程语言
[
01:21:43
]: ISA定义的是内存数据格式和硬件行为,与编程语言无关。任何语言都可以编译到ISA,就像x64一样。
接口如何简化
[
01:25:20
]: 从DOS时代的少量寄存器操作即可初始化显卡,到现代复杂的OpenGL/Vulkan调用,反映了接口复杂度的增加。简化应回归到直接且简洁的内存读写操作。
锁定ISA的风险与创新
[
01:41:58
]: ISA的引入确实会减慢硬件创新的速度,因为它需要各方达成共识。然而,演讲者认为当前计算领域的问题已从硬件创新转向API的复杂性和代码臃肿。ISA可以通过迭代更新(如x86到x64的演进)来支持创新,同时提供稳定性,其收益已大于弊端。
Amiga未演进的原因
[
01:46:53
]: Amiga停止演进是由于康懋达公司取消了后续芯片组开发,并非ISA的固有缺陷。x86 ISA的持续更新和功能扩展(如SIMD、多核)证明ISA不会“冻结”设计。
Copied!
Why didn’t you like it?
Inaccurate / wrong facts
Missing important points
Took too much time to load
Article too long / verbose
Article too short / not enough detail
Article hard to read / bad formatting
Images irrelevant / broken
Language / translation issues
Offensive / inappropriate
Other
Submit
Thank you for your feedback!
×