温故知新:从计算机体系结构看操作系统

news2024/11/19 23:15:34

知识诅咒(Curse of Knowledge),是指我们掌握了某知识,就很难体会没有它的感觉,不理解获得知识以前的状态及还未获得该知识的人,从而产生沟通障碍。

计算机体系结构正在消亡 (Architecture is dying)?其背后可能是对传统的冯·诺伊曼体系结构在应对多样化应用时局限的无奈,以及对摩尔定律的放缓甚至终结的担心。那么,计算机体系结构又将面对怎样的未来呢?

01feeb3c4df8d86ad9ed453c43a22dff.jpeg

1. 关于计算机体系结构

计算机体系架构(Computer Architecture)泛指计算机硬件系统设计的各个方面,包括指令集架构(Instruction Set Architecture,ISA),微体系结构(Microarchitecture),内存系统(Memory System),存储设备(Storage De- vice),网络设备(Networking Device)等。

半导体技术与计算机体系结构是推动信息技术创新的两个核心技术,都是幕后英雄,往往不为大众所知。摩尔定律的终结使得芯片设计师再也不能“无偿地”每18个月将设计中的晶体管数量提高一倍。而计算机体系架构演进导致了性能的增长,带来的各种好处显而易见。自1985年以来,计算机体系结构的革新贡献了约80倍 的性能增长,与半导体技术进步的贡献相当。

由于大多数半导体技术与计算机体系结构的创新是对上层应用透明的,应用与软件的开发人员们无需参与底层技术创新就能体验这些技术进步带来的各种好处。

尽管依然能够制造出更多更小的晶体管,但已不像过去那样了,单个晶体管的功耗已不能很好地按比例缩小。由于传感器、移动设备、终端与数据中心等大多数产品都不能容忍功耗的不断增长,必须考虑各种手段来缓解功耗增长。纳米级特征的制造偏差,严重地降低了晶体管的长期可靠性。随着新技术(如芯片堆叠技术) 与新挑战(如数据中心)的出现,必须通过局部性原理来管理计算部件之间的通信,从而实现合理的成本和能耗目标。设计、验证、制造和测试的一次性成本不断增加,导致这些成本更难被分摊。

也就是说,在失去几近完美的工艺技术按比例缩小所带来的好处时,该如何构建从传感器到云端的基础设施,如何从性能到隐私等多个角度去让计算机体系结构来增加价值?

c98ef52c104a35ee5222fae1afb6805b.jpeg

2. 对计算机体系结构的需求是什么?

新应用场景的不断涌现,对计算能力的需求在日益增长。在物联网时代,嵌入式传感器产生的连续数据流和由大量多媒体内容无处不在,数字化信息在爆炸式增长。出于健康、商业和其他目,处理此类数据需要高效地平衡计算、通信和存储的关系。为传感器提供足够的能力以便在生成/ 收集数据的地方筛选和处理它们,以达到最优能效,通信所需的能量大大超过计算。很多数据流产生数据如此之快,以至存储在成本上不可行,数据必须被立即处理掉。在其他情况下,环境的限制和聚合不同数据源的需求影响了在哪儿执行这些任务。此类的权衡提出了对混合架构的需求,在节约能耗的同时有效地降低数据传输。 

为了保护服务的边界、环境和服务自身,计算资源必须随时可用,并随时准备高效地提供服务。这样的可用性需要底层的硬件和软件提供可靠性、安全性和自我管理功能,而这些特征是目前大多数系统都不能提供的。虽然当前大型机和医疗设备都在努力实现5个9的可用性(每年仅5分钟的不可用时间),但实现这一目标仍然花费巨大。这就要求计算机体系结构在很多层面上实现这样的可用性,而且成本低廉。 

随着我们对数据的依赖不断增加,会变得更加依赖对计算性能的权衡,以确保可用、隐私和安全的交易。信息安全要优先考虑,而目前的计算系统极易受攻击。网络信息战不再是假象,通过互联网,对政府网站的攻击早已司空见惯。这就需要新的硬件系统、体系结构、固件和操作系统,以便为上面的应用中所需分布式信息安全提供保障。

c255897f621983b0d70e3c9ab0fae711.jpeg

3. 对计算体系结构的挑战

各种新兴的应用需要体系结构保障数据的安全性和隐私性,容忍日益变得不可靠的晶体管带来的故障,以及增强可编程性、可验证性和可移植性。保证软硬件可靠性比以往任何时候都重要;对一些植入式医疗设备而言, 尤其事关生死。重新考虑安全和隐私的问题,并且定义系统结构级界面,以使硬件作为可信源更高效地支持安全服务。

3.1将计算机体系结构作为基础设施

计算机体系结构必须超越那种优化每一个孤立设备的情况,接受跨环境协同设计带来的挑战。在智能感知领域,核心的约束是在非常严格的能量、尺寸和成本的限制下完成计算。大规模计算的需求只能通过将成百上千个处理器的能力合并成为一个大规模分布式计算机才能完成,互联网搜索引擎已经展示出这种计算范式的社会重要性。

由于用户界面对于计算能力的要求越来越高,例如多点触控、语音识别、AR/VR、全息影像、3D场景重建等等,甚至移动应用也正向数据和计算密集型转变,这些应用将需要现有设备的单位能量运算率从现在的约百亿次运算/瓦提升若干个数量级。对于运行时而言,计算机体系结构要允许程序功能被分别划分到端边云,并且这种划分还要能够动态地适应云端上行可靠性和能效的变化。

也就是说,计算机体系结构将作为基础设施,是覆盖从传感器延伸到云的生态系统体系结构。

3.2 能耗优先的挑战

针对服务器领域的能耗解决方案与针对便携设备领域的解决方案有着显著的差异。然而,无论是对高端的服务器领域还是便携、传感器设备领域,对计算性能永无止境的需求都将使得功耗、能耗和散热成为计算机体系结构的掣肘因素。

在体系结构层,需要提出更高效、更合理的多核体系结构。在软件层,需要研究如何最大限度减少不必要的通信。在编程模型层次,需要编程环境既可以支持专家级的程序员对整个机器进行控制,又可以对普通程序员提供简单的局部性模型。在应用层,需要高能效的算法级策略来减少操作数量、访存数量和处理器间的通信量,充分利用异构系统的优势。 在编译层,需要新的法有效地在功耗效率与性能之间做出权衡,同时兼顾二进制代码的可靠性。

也就是说,降低能耗可能需要从三个途径加以解决:跨层次的能效优化,对“并行”的重构和有效利用“专用计算”。

3.3 工艺技术的挑战

新技术和新工艺驱动了电路、功能单元、微结构和计算机系统的新型设计。非易失性存储技术可以提供很高的存储密度和功 率效率,但需要针对器件能力重新设计内存和外存系统结构。裸片堆叠技术虽然拥有降低连线延迟,提高片上带宽等多种优势,但仍需面对电子设计自动化、设计和工艺支持等多种挑战。新工具必须要满足新技术的要求,能够支持功能综合、逻辑综合、版图设计等;异构计算更是挑战着在寄存器传输级设计之前对系统建模的能力,还要面对着结构的多样性和加速部件数量的急遽增加。

3.4 跨层次接口的挑战

计算机体系结构中的可编程性是指研制的软件应满足性能、能耗、可靠性以及安全性等指标。

过去,人们关注的是软件工程技术, 以性能和能耗为代价提高编程者的生产率。当能效以及其他目标变得更加重要时,需要新的技术来削减编程抽象层次,从而消除不必要的低效。已有的改善可编程性的技术(包括DSL、动态脚本语言如Python和Javascript等)只是部分的解决方案。

然而,当前的指令集不能提供有效的方式来捕获软件意图或将关键的高层信息传递给硬件。新的高层接口需要封装并将编程者和编译器的知识传递给硬件,从而获得更高的效率与有价值的新功能。可以使程序员能在更高层次表达并行度、局部性、计算依赖以及关键的共享和通信模式的接口。这种接口可使硬件更简单和有效,并具有高效的通信能力且能最大程度减少数据移动的同步原语,支持异构并行。

当然,这需要能够清晰地识别长期数据及程序依赖关系,以便软硬件调度器能够动态地识别代码中的关键路径。没有分析、管理与优化通信的能力,则没有办法保证性能、能耗与服务质量的目标。当考虑大数据应用场景时,由于涉及众多庞大系统之间的数据协作,数据管理会变得更加复杂。现有的系统缺乏合适的软硬件抽象层来描述通信关系。

对可靠性而言,要求跨层次接口能够在单一应用中为不同模块之间指明细粒度的保护边界,能够把安全当成一级公民,并且能确定应用的弹性需求与期望。应用的某些部分也许要能容忍硬件故障,以便运行起来能效更高。所有的这些接口都可以从合适的计算机体系结构中获益,比如信息流的追踪、不变量的生成和检查、事务恢复块、可重构等等。

c6c5d1de5031deca4be69f418a713668.jpeg

4. 计算体系结构的发展趋势

4.1 硬件设计大众化

开发硬件必须像开发软件一样简单、便宜和灵活。与在通用处理芯片相比,专用硬件方案单位操作上可提高能效 10000 倍 ,此类能效的提升对于物联网应用至关重要。“大众化”的硬件设计, 也就是让硬件设计变得像软件设计那样敏捷、便宜和开放。软件开发团队可以利用丰富的、拥有现成 的可重用部件的生态系统, 使用高级语言加速提高单个开发者的能力,并依靠强大和自动化的程序分析、综合、测试和调试来保 证品质。

4.2 云计算是对计算机体系结构创新的抽象

云计算利用规模化不仅是为了自身业 务,也是为了投资 IT 的客户利益,已经前所未有地使用了专用计算机架构。无论是高端的超级计算 机,还是商业的云端产品,GPU 变得无处不在,FPGA也促进其数据中心的计算专用化。专用集成电路云 展示了如何协同开发大量高度专用的处理器,从而让关键应用得到明显加速。

虚拟化这类技术将硬件和软件创新透明地引入到了现有的软件系统。虚拟化使得云提供商可以为了更快、 更便宜的技术替换处理器、存储器和网络部件,而不必与消费者沟通协调,也促成了资源的超额认购,在消费者对特定资源的需求具有时变、 碎片化特征的情况下,在消费者之间进行透明的资源共享。超额订购对云计算的成本结构很重要,和单独的消费者购买专属资源比较,它使得云供应商以极低的价格提供 IT资源。

4.3 垂直化趋势

3D 集成为芯片设计提供了一个新的扩展维度, 尽管摩尔定律终结了,仍然可以在一个单系统上集成更多的晶体管,可以从 3个维度缩减互联开销, 并实现各种混合制造技术的紧密集成。因此,3D 结构内部的系统组件具有更高的能效、更宽的带宽和更低的延迟。

4.4 计算机体系结构“更接近物理层”

新的存储器件正在进入商用化,与传统存储层次部件相比,这些新器件在开销、密度、延迟、吞吐量、可靠性和寿命等方面完全不同。碳纳米管可以保证更高的密度和更低的功耗,并且可用在三维基底上,这使得碳纳米管成为体系结构方案是非常可行的。量子计算和超导逻辑,能够提供 “免费”的通信,传输信号几乎不消耗能量 。DNA 计算已经演示了简单的逻辑操作,许多成果也表明了 DNA 作为存储器和纳米结构自组装的数字媒介具备潜力。

4.5 机器学习作为核心负载

目前的重点是支持云端的机器学习,但是在诸如智能手机和超低功耗传感器节点等低功耗设备中支持机器学习应用也非常重要。幸运的是,许多机器学习内核具有相对规整的结构,能够在准确率和资源需求之间进行权衡。因此,它们适用于专用硬件、重构和近似计算等技术。

99206bb553eaf9fba5b3ed3c76146ef5.jpeg

5. 一句话小结

计算机体系结构是计算机硬件系统的表达,发展趋势是弥合应用领域和器件领域之间的鸿沟,确保信息技术有一个坚实的未来。

【参考资料与关联阅读】 

  • 计算机体系结构国家重点实验室 译自http://www.cra.org/ccc/docs/init/21stcenturyarchitecturewhitepaper.pdf. 《中国计算机学会通讯》第 8 卷  第 12 期  2012 年 12 月

  • 鄢贵海 王 颖 刘宇航译,“计算机体系结构2030:未来15年的研究愿景” 《中国计算机学会通讯》第 13 卷  第 7 期  2017 年 7 月

  • 计算机体系结构的一知半解

  • 从操作系统看Docker

  • 感知人工智能操作系统

  • Linux 内核裁剪框架初探

  • IoT中的Linux选择

  • 嵌入式Linux的网络连接管理

  • 探索嵌入式应用框架(EAF)

  • 嵌入式中的人工神经网络

  • IoT产品的10个最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一篇用 AI 生成的跨年感怀

一言难尽的2022终于过去了虽然跨年,只是我们的星球围绕我们的恒星环行一周的时间标记,并不真的代表什么。但我们就是希望多事而沉重的一年能快点滚蛋,新的生活能开门重启。我用 Midjourney 生成了很多跨年场景的图。prompt 很简单&#xff0c…

2003-2021年飞机航线数据

1、时间为:2003-2021年 2、指标包括: 起点城市、起点城市所属地级市、起点城市所属省份、起点机场、终点城市、终点城市所属地级市、终点城市所属省份、终点机场、 航空公司、航班、机型、出发时间、到达时间、准点率、班次_周一、班次_周二、班次_周…

RabbitMQ路由模式

🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉Linux专栏 🔥欢迎大佬指正,一起学习!一起加油! 目录&…

每个程序员都需要掌握的 7 项基本技能

每个 Coder 需要掌握的 7 项基本技能是:1. 编程语言:程序员可以学习多种编程语言,最重要的具体语言取决于他们想从事的工作类型。一些最常见的编程语言包括 Java、C、Python 和 JavaScript。对于编码人员来说,精通至少一种编程语言…

51. N 皇后

51. N 皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方…

剑指offer----C语言版----第七天

目录 1. 旋转数组中的最小数字 1.1 题目描述 1.2 思路一 1.3 思路二 1.4 小试牛刀 1. 旋转数组中的最小数字 原题链接: 剑指 Offer 11. 旋转数组的最小数字 - 力扣(LeetCode)https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-…

GCC学习笔记

(1)什么是GCC (2)用gcc编译文件 gcc test.c -o app 【编译test.c文件得到app可执行文件】 ./app 【运行可执行文件】 (3)编程语言的发展 (4)gcc工作流程 预处理 作用:…

剑指 Offer 26. 树的子结构

题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A: 给定的树 B: 返回 true,因为 B 与 A 的一个子树拥有相同的结构和节…

JavaScript中如何将十进制转换为十六进制?

​ 在本文中,我们将学习如何在 JavaScript 中轻松地将十进制数转换为其等效的十六进制数。 我们将研究一些需要执行此操作的真实场景。 数字toString() 方法 要在 JavaScript 中将十进制转换为十六进制,请对十进制调用 toString() 方法,将 1…

JUC并发编程学习笔记(四)callable接口与辅助类

6 Callable&Future 接口 6.1 Callable 接口 创建线程的多种方式: 继承Thread类实现Runnable接口Callable接口线程池 ​ 目前我们学习了有两种创建线程的方法一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runn…

某电视 频道headers参数x-itouchtv-ca-signature逆向

本文仅供参考学习,如有侵权可联系本人 某电视(荔枝平台)平台逆向 目标链接 aHR0cHM6Ly93d3cuZ2R0di5jbi9jaGFubmVsRGV0YWlsLzI0Ng接口链接: aHR0cHM6Ly9nZHR2LWFwaS5nZHR2LmNuL2FwaS9jaGFubmVsL3YxL25ld3M/cGFnZVNpemU9NDAmY2hhbm5lbElkPTI0NiZjdXJy…

纯注解驱动SSM整合

纯注解驱动SSM整合 Jdbc.java package com.itheima.confing;import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class J…

思购趣拼秒杀模式的逻辑与模式特点

读:小镇上来了一个陌生的年轻人,年轻人交了一百块定金给旅馆的老板去楼上挑房间,旅馆老板拿着这一百块钱还给了卖猪肉的,卖猪肉的把钱还给了卖饲料的,卖饲料的把钱还了厂商,厂商拿着钱还给了按摩店的小姐&a…

一文说清MySQL索引数据结构

前言 接上篇说到,小A匆匆忙忙的赶回宿舍,因为晚上他要给女神整理讲解MySQL中索引数据结构资料。一边整理一边忍住不笑了起来,等小美看到这篇文章不得爱上自己。当上小美男朋友,从此踏上人生巅峰不是梦(该考虑一下孩子…

C#,图像二值化(12)——基于谷底最小值的全局阈值算法与源代码

1、基于谷底最小值的阈值 这个方法适用于通过有限的迭代次数,平滑后能得到双峰的图像,让双峰的谷底成为阈值。当执行完基于谷底最小值的阈值操作的时候,改变了直方图信息,使之成为处理过后的直方图信息,这时候显示Doc…

LeetCodeday05

面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: public class Leetcode0207 {public static void main(…

ChatGPT背后的模型

文章目录1.RLHF方法2.ChatGPT中的RLHF方法2.1 微调模型GPT-32.2 训练奖励模型2.3 利用强化学习进一步微调语言模型3.效果4.面临挑战5.参考InstructGPT语言模型,是一个比 GPT-3 更善于遵循用户意图,同时使用通过我们的对齐研究开发的技术使它们更真实、毒…

应急/linux 挂D盾扫描方法

0x00 linux 挂D盾扫描方法 这个方法可以解决Linux下无法使用D盾查杀webshell的困扰 利用ssh将Linux文件系统挂在到win上面,然后扫描就好了 0x01 环境安装 安装D盾 D盾都用过吧,应急经常用来扫一下是否存在 Webshell D盾下载地址 D盾防火墙 (d99ne…

python 性能优化

文章目录性能测试运行速度内存消耗并行加速分布式并行多线程多进程框架即时编译njitcase1 计算熵case2 找到最大概率类别case3 计算两两准确率GPU使用工具关于程序优化的第一个准则是“不要优化”,第二个准则是“不要优化那些无关紧要的部分”。性能测试 性能测试是…

4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;

题目来源于牛客网,完整工程源码:https://github.com/ningbo99128/verilog 目录 VL37 偶数分频 VL40 奇数分频(占空比50%) VL42 奇数分频(任意无占空比) VL41 任意小数分频 VL37 偶数分频 题目介绍 请…