阅读札记:创新与思维范式
方式是言行所采用的方法和形式,模式是外在的规范和规律性的描述,而范式是内在的,更加深入的原理和原则的描述。范式可以理解为模式的模式,用于描述更加抽象、本质性的特征。那么,思维范式又指的是什么呢?...... 本文编译自《HCDA: From Computational Thinking to a Generalized Thinking Paradigm》一文,是一篇学习笔记。
2006年,Jeannette m. Wing 提出了“计算思维”的概念,这个概念在全球范围内对计算机科学的教育、研究和发展产生了重大影响。受摩尔定律的影响,单个芯片上可用的晶体管数量呈指数增长。与此同时,由于结构的创新,计算机在过去几十年的历史中取得了显著的性能进步。然而,随着摩尔定律的放缓,以及大数据应用的兴起,给计算机科学带来了严峻的挑战。架构创新对性能突破越来越重要,我们正进入所谓的“计算机架构的新黄金时代”。
从现存的创新中学习,第一步是在其中找到共性和模式。一个有趣的观察是研究计算(数据处理)和存储(数据访问)之间的对称性。与传统的以计算为中心的设计相比,新出现的以内存为中心的计算机系统设计将内存视为冯·诺伊曼结构的内在瓶颈。冯·诺依曼结构的原始表示在计算和存储之间是保持中立的,也就是说,数据处理和数据访问同样重要,它们是彼此的前提。因此,设计权衡是必须的,没有任何回旋余地。
传统的以计算为中心的架构设计是历史的原因。起初,与内存相比,CPU非常缓慢而且昂贵。因此,计算机系统是以计算为中心的,重点是计算组件的速度。后来,由于处理器和内存技术的发展不匹配,计算机系统变得越来越以内存为中心,数据被当作第一对象。
计算机系统设计的思维过程是动态的,但是它有模式,是否存在一种思维模式的范式呢?
一般地,计算机系统创新有4种基本的思维模式: 历史思维、计算思维、数据思维和架构思维。这四种模式的结合形成了一种正四面体思维范式,其中历史是参考和经验的来源,计算是计算系统提供的功能,数据是计算系统的处理对象,而体系结构是物理执行操作的硬件机制。这四种思维模式是四个有逻辑联系的维度,为计算机设计创新提供了一个统一的框架。
历史思维
历史思维是正四面体的第一要点,现在的创新是基于过去的创新,革命性的创新是建立在知识积累的基础上的。历史思维从过去的结果、经验和教训中探索解决方案和方法。
历史思维促使我们通过阅读更多的历史文献来反思过去的成功创新,并从他人的经验中学习更多的东西。这种阅读和“随意”的学习可以拓展我们的视野,激发想象力,进一步跳出思维定势,从扎实的基础开始。
历史思维是一种需要,而不是一种奢侈,它在科学创新中起着几个重要的作用。拥有丰富的历史视角,可以将工作框架至于更广泛的文明进步范围内,深入地了解创新的过程。计算机科学对人类福祉的贡献应该在历史上得到充分认识和重视。通过对历史的思考,可以在过去经验的基础上发现新的机遇,一项科学发现通常是许多科研人员不断努力的结果。
技术的进化并不总是线性的,而是有很多“重复使用”或“从废墟中崛起”。例如,Google TPU 是一个具有历史思维的架构成果。
计算思维
计算思维是正四面体的第二点。从机制论和行为主义的角度来看,计算思维有两种不同的含义。机制关注“如何”和“表现”,而行为主义关注“什么”和“功能性”。因此,计算思维集中于使机器更加实用(例如,通过人工智能)和更快速(例如,通过并行计算)。
从机制的角度来看,计算思维意味着以计算为中心的设计,使计算组件的速度尽可能快。追求计算机的高性能就是这样一个例子。另一方面,从行为的角度来看,计算思维意味着通过计算来解决问题。在机制上,计算思维的一个基本特征是微结构的创建和计算结构的设计,以解决数据处理方面的问题和性能。时间是人类稀缺的资源,所以计算机越来越快,让解决问题的时间尽可能小。在行为上,计算思维的目标是通过增加应用中的实用性,使计算变得更加通用。计算机是智能且强大的机器,可以执行不同的目的不同的程序。
计算思维在现代计算机诞生之前就已经存在了。例如,早在公元前305年,人类就有了一种进行十进制乘法的工具。在现代计算机发明之前,各种各样的计算工具已经被开发出来,包括绳索和算盘。计算已经成为日常生活的一个重要组成部分,对生产和生活质量有着深远的影响。此外,有了高性能计算,人们可以解决传统计算方法无法解决的问题。
计算思维还要求我们以多学科的方式来理解计算。计算机的实用性和广泛应用得益于其他领域(例如,生物学、化学和物理学)专家的参与,而不仅仅是计算机从业人员。大数据的出现和摩尔定律的放缓都改变了计算机系统的面貌,要求我们审视过去的解决方案,为未来的创新和应对新的挑战铺平新的道路。
Jeannette M. Wing 将计算思维描述为在解决实际问题和设计大型复杂系统时使用抽象和分解。相反,它需要在多个抽象层次上进行思考,并检查计算机和自动化过程可以做什么。通过这种方式,不同领域的从业人员可以扩展计算机的功能来解决更多的问题。
计算思维可以大大提高机器自动化的水平,减轻人们执行繁琐计算过程的负担。计算机强大而精确,但只能运行可执行程序。将科学问题转化为可计算数学模型的能力对计算思维来说是必不可少的,必须训练和学习。
数据思维
数据思维是正四面体的第三点。就像计算思维一样,数据思维也分别从数据的外部特征和内部特征来看具有的行为和机制。从行为来看,数据思维意味着通过数据来解决问题;从机制来看,数据思维意味着以内存为中心的设计,使数据访问延迟的影响尽可能小。
随着海量数据的出现,知识发现的可行性也随之增加。例如,如果某个地区的互联网“流感”搜索者人数突然达到顶峰,那么该地区可能正在经历流感疫情。互联网搜索活动可以被视为知识发现的一种形式,而搜索活动与流感疫情之间的联系可以被视为另一种形式。
数据思维通过收集和利用数据来解决问题。计算思维集中于制定一个问题,使其可计算解决,而数据思维是收集和利用数据来提供见解。例如,假设提供一套旅行计划给用户,使用计算思维,可以用 Dijkstra 的算法确定图的最短路径(代表城市和路线)。这里,图是旅游规划的抽象数学模型。创建这个数学模型是一个计算思维的过程,也是最短路径的算法构建过程。另一方面,有了数据思维,可以不再需要专注于计算,可以将重点放在收集历史路线数据、分析和探索数据上,并最终根据这些数据向用户提供推荐。如果这个推荐是基于深度学习或其他人工智能方法生成的,我们通常不知道这些推荐背后的确切原因。换句话说,虽然数据思维可能更有效,甚至是找到解决方案的唯一途径,但是在“因果关系和可解释性”方面比基于数学模型的解决方案要弱。
大数据应用程序通常具有大量的数据,但局部性较差。数据访问可能成为高性能计算的杀手级性能瓶颈。简单地增加更多的存储器不是解决存储瓶颈问题的可行方案。我们需要对硬件和系统设计都采用以数据为中心的思想,以提高系统效率,同时减少内存的访问瓶颈。
以数据为中心的系统设计思想涉及到数据处理的整个生命周期,从数据采集、存储到数据移动和操作。它将内存系统置于最高优先级,至少与 CPU 处于同一级别。早在1990年,人们就知道内存是可扩展计算的主要约束,并引入了内存的有限加速模型。这些模型是数据思维的具体体现。大数据的基础设施和超级计算机有着不同的设计考虑,并且与各自的生态系统有关。由于数据访问与数据处理(即计算)同等重要,大数据的基础设施和超级计算机将长期共存,需要相互支持和补充,从而形成一个融合的统一生态系统。
架构思维
架构思维是正四面体的第四点。体系架构思想是通过硬件和固件设计来构建优化的计算机系统。一般来说,“计算机系统”这个术语可以指硬件系统、软件系统或两者的结合。对利用现有芯片的强调意味着不仅仅需要更多的晶体管,而是直接关注它们的最佳组织和配置。
架构思维可以在不同的级别上进行,其中最高的级别是系统级别,包括处理器、内存、网络和输入输出(I/O)。例如,选择采用DRAM和 NVRAM已经彻底改变了存储系统的组织。这种组织和配置也可以扩展到芯片级和元件级。例如,CPU核的数量和连接、片上缓存的容量、缓存管理以及SSD的设计都涉及到架构思维。
计算机体系结构正面临着许多新的挑战。首先,“最佳”系统是以 CPU 性能来衡量的,而现在,为了优化 CPU 性能,首先需要考虑内存性能以及内存功耗。其次,即使对于传统以 CPU 为中心的架构设计,也不能仅仅依靠摩尔定律来提高 CPU 的性能。
体系结构是运行算法的硬件骨架,影响着计算机系统的效率和用户体验的质量。从早期的大型计算机到目前数以百万计的处理器核心,都可以类比为“少而巨”和“小而多”,需要考虑计算机系统中组件之间的几个维度,包括单核与多核、简化与复杂、共享与私有、分布与集中、延迟与带宽、局部与并发、同构与异构、同步与异步、通用与特殊用途等。例如,由 ASIC、FPGA 或 GPU所实现的特定领域硬件加速都用于特定目的的计算,传统的 CPU用于通用计算,体系结构的设计选择在这两个领域之间。
架构思维有多个维度,每个维度都有许多选择。假设一个体系结构包括从计算到内存访问和通信的 n 个不同组件。对于计算机系统中的任何组件都存在多种设计选择,所有的选择组合构成了一个巨大的设计空间。即使设计空间只有10个维度,每个维度只有10个不同的选项,也会有100亿个可能的配置。
一个更具挑战性的问题是,架构设计的有效性是依赖于应用的。在架构设计中必须考虑巨大的应用程序/工作负载空间。此外,在功耗、温度、面积以及成本和性能方面都存在一系列的限制。架构创新必须满足当前技术下的这些约束,同时服务于各种应用程序的优化。然而,单一架构很难适应所有的应用程序以提供最高性能。实现这一目标的一个可行的方法是发现一个弹性和灵活的结构,可以动态地将应用程序的工作负载映射到体系结构设计空间。
关于思维范式
这四种思维模式构成了一个三角形金字塔,它有六条无向边(12条有向边) ,对应着六种关系,即 H-A (历史-架构)、 H-D (历史-数据)、 HC (历史-计算)、 A-C (架构-计算)、 A-D (架构-数据)和 C-D (计算-数据)。
在 HCDA 中,六个边是思维范式的六个维度。在每个维度中,有两个方向,因此是12个有向边。例如,“ H → A”意味着运用历史知识和经验来推动架构创新;“ A → H”是指从历史的角度审视和看待当前的架构创新。一种长期存在的技术从过去的历史中复制出来成为新的成功,这并不罕见,深度学习技术就是一个很好的例子。它最早于1986年提出,20多年后才取得惊人的成功。
对于H-A,H-D,H-C, 历史思维为其提供了启示和基础,可以从历史中学习,探索架构、数据和计算思维模式的解决方案。对于 A-C 和 A-D 的连接,计算思维和数据思维可以通过体系架构的思想在物理上实现。例如,应用于计算组件的顺序与并行维度包括流水线、多线程和多核技术。同样,缓存层次结构的所有级别也支持多个后端、多个端口和多个通道的多个并发数据访问。
对于 C-D 的链接,计算思维和数据思维应该共存并同时进行。当考虑如何通过计算来解决问题时,除了考虑数据访问的延迟和代价外,还需要考虑如何通过数据收集、挖掘和发现来解决问题。计算思维和数据思维有着不同的侧重点。这就是为什么高性能计算和大数据目前有不同的生态系统,并形成两个部分孤立的社区。
对于 A-C、 A-D 和 C-D,需要注意计算组件和内存系统之间的相互作用,它们具有两个不同的特征。首先,无论内存系统是否具有计算能力,组合的计算都可以看作是一个过滤过程。同时,数据访问也会以负反馈的方式影响计算。当内存系统能够快速传递数据时,计算组件能够发出更多的数据请求。然而,当未处理的内存请求数量超过内存系统的处理能力时,队列延迟和总线竞争将不可避免。
由于过滤和反馈的综合影响,CPU 性能和存储性能是相互纠缠和相互影响的。高速计算需要快速的数据移动,而数据的移动是下一代架构设计的关键因素。作为 HCDA 思维范式的例子,冯·诺伊曼结构和分层性能匹配在系统设计中具有普遍意义。
小结
从字面上看,“计算”这个词不能表达我们想要它表达的全部意思。为了适应不断变化的环境,需要探索新的思维方式和创新的新方向。虽然新的计算模型(如量子计算)正在继续发展,但冯·诺伊曼结构也可以进一步发展为一个新的未来。“历史、计算、数据和架构”形成的思维范式,能够扩展大数据时代的计算思维,能够促进创新,其相应的行为构成了一种有效的范式,可以促进计算机技术在新时代的发展。
【关联阅读】