CPU那些事儿-开篇

199 阅读6分钟

笔者连同几位志同道合的朋友,都是技术爱好者,一直以来想做这样一件事:能否结合自身经历,将工作和学习中遇到的一些共性问题、涉及的方法论以及我们的思考总结下来,以系列文章的方式跟同行做下探讨和交流?之所以想这样,一方面是因为三人行必有我师,大家可以相互借鉴和讨论,把一些技术点分析得更深入;另外大家也个相互监督,一个人可以走的很快,一群人才能走得更远。这件事酝酿许久,现在终于可以启动了。

我们几个人的知识体系主要还是集中在BSP领域,体系结构以ARM为主,有小伙伴在SoC底层软件领域深耕多年,也有小伙伴对Android框架了解的非常深入,正好大致可以覆盖上层软件->Android框架->Linux内核->芯片底层整个链路,我们是否可以尝试做下全链路贯通的梳理?硬件底层以ARM CPU为主、NPU为辅,也会涉及一些SoC方面的知识;软件方面以Android/Linux为依托,围绕性能分析和优化这条主线展开,如果条件允许,我们还会尝试讨论如何建立起从应用到芯片的映射上来,该如何把上层应用的性能需求拆解到CPU等SoC规格定义上来。近几年,我们几个人陆续进入架构设计领域,跟我们当前的工作比较契合。同时,大部分小伙伴对AI有着浓厚的兴趣,经过一段时间的学习努力,也算半只脚迈进了AI的大门,又因工作需要对其中的底层设施做过一些分析。在AI蓬勃发展的时代,能否做一些利用AI基础技术对传统BSP组件进行智能化改造的尝试,学以致用?

所以总体上,我们会围绕BSP和AI以及二者如何相结合为主题展开后续的探索。因为我们包括所有同行对CPU或多或少都有些了解,我们就先以CPU这个主题作为我们系列的开篇。

曾几何时,我们都是互联网和开源的受益者,希望通过这次尝试,能提升自己的技术理解力和表达力,如果同时能对同行有所启发,那也算对互联网和开源有所回馈,这是我们的初衷。所以,我们不会走付费的道路,将会秉承开源精神,搭建一个交流平台。当前,会在微信公众号、知乎和掘金这三个平台发布。

叙述手法上我们希望能借鉴《明朝那些事儿》,围绕一个个主题展开。尽量做到将一个技术以相对有趣的方式深入浅出的讲清楚,尽可能去探寻这项技术背后的源头是什么,它提出的背景是什么,想要解决什么问题,以及它最基本的思想和原理又是什么,我们该如何建立起直觉上(Intuition)的理解。同样的思想,不同的工程实践,出来的效果会完全不一样,魔鬼藏在细节里,藏在代码里。所以,涉及源码的话,我们还会分析源码,把最核心的部分给提炼出来。

那我们正式进入开篇-CPU性能那些事儿。

CPU性能那些事儿系列

CPU性能分析和优化,是个宏大的命题,涉及的面很广,不同领域面临的问题也不一样,比如移动端和服务器/桌面端相比,功耗更敏感,使得优化工作变得更为复杂;不同的OS,如Android和iOS(当然现在鸿蒙也是移动端第三大操作系统),各家提供的工具和框架不一样,不同OS下此类问题的具体解法也各有不同,但同时也会有一些共性的东西。我们会以Android+手机/Pad这类移动端AP SoC为主体。OS这块除了Android,如果有精力,我们会同步看下相关技术在iOS上的实现情况,鸿蒙就暂时先不涉猎了。具体来讲:

  • SoC硬件方面,以ARM公版CPU为主要分析对象,希望能大概说清楚:现代超标量处理器CPU有何特点,有哪些关键部件,如何以比较巧妙的方式,构建软件程序去探测这些部件。另外,在SoC厂家这里会选择怎样的Benchmark去度量CPU以及SoC的性能,又该如何软硬结合的做去性能调优。
  • 软件方面,我们希望能从更通用的角度,以top-down这个方法论出发点,看其如何屏蔽CPU微架构细节,让我们底层/嵌入式软件工程师,能快速的发现性能瓶颈以便进一步调优。CPU这块,我们尝试以sheduler调度器为切入点,去分析其原理以及常见的一些优化思路,包括Android/Linux内核引入的一些相关改进。另外,站在应用和OS的角度,除了CPU,还有memory和IO,它们会怎样影响系统性能。内存管理和IO的分析,后续再展开。

在此之前,笔者其实已经在CPU硬件上做了一些初步探索,大家如果感兴趣可以先跟着我们一起回顾下:

  1. ARM处理器简介1-概述。本文简单梳理了ARM处理器的发展历史、架构的演进,包括不同处理器的应用方向,重点介绍了Cortex-A系列处理器以及它们之间的继承关系等。
  2. ARM处理器简介2-现代处理器基础特性介绍及A9微架构简析。初步介绍了现代超标量乱序处理器的一些基本技术和概念,以Cortex-A9这个处理器为例,分析都用到了其中的哪些技术来提升性能。

路漫漫兮其修远,吾将上下而求索,希望我们能保持技术从业者的初心,做难而正确的事情,并一直坚持下去。与诸君共勉!

未完待续,后面系列分析很快就会到来,敬请期待~

PS:本文同步在微信公众号和知乎同步发布

公众号二维码.jpg