前言
人工智能、物联网、芯片自主、智能驾驶等新一代信息技术是当代智能科技的主要体现。目前,计算机基础教育的作用不言而喻,它是现代智能科技发展的核心支柱。计算机技术的底层包含芯片设计,中间层涉及操作系统,上层运行软件应用程序。在科技竞争的大环境下,我们迫切需要芯片的自主研发,需要操作系统的自主研发,需要系统软件的自主研发。唯有如此,我们才可以从根本上解决“卡脖子”的问题,所以学习计算机系统知识十分重要。
回顾历史,每一次智能终端的发展都会带来翻天覆地的变化。5G技术带来了低延时、高吞吐、广连接,促进了异构设备的蓬勃发展,我们正在进入万物互联的新世界。万物互联的世界对传统的芯片和操作系统提出了新的要求。顺应时代发展,芯片和操作系统都出现了相应的“革命”。例如,恩智浦的跨界处理器、壁仞的高端AI GPU、谷歌的TPU和Fuchsia以及华为的鸿蒙等都是新架构。
计算机系统涉及的内容很多,包含底层处理器的架构设计、汇编和编译技术,甚至还包含操作系统的运行等。没有进行系统化的学习,我们很难从根本上理解现代计算机系统的来龙去脉,创新也就无从谈起。学习计算机系统的门槛很高,不同层级之间又是相互关联的,想要精通这些内容,没有好的学习方法是不行的。
根据“战略上藐视技术,战术上重视技术”的原则,本书首先从处理器架构的原理出发,结合汇编和编译技术,揭开硬件执行的神秘面纱;然后以Linux操作系统为例,讲述内核中重要的模块——内存管理和进程管理;接着讲解人工智能技术的基础技术和相关框架,以及实现人工智能加速的常见方式——使用OpenCL;最后通过一些开源项目介绍硬件设计的常用工具和方法。希望本书能帮助读者对底层硬件设计、中间操作系统,以及目前火热的人工智能有所了解,能为国内的基础研究者提供一些帮助。
建议在阅读代码时注意逻辑性,不要过于关注细节,遇到难点可以选择性地跳过,结合整段代码要实现的功能去理解,在对整体框架有了一定的了解后再根据工作中的需要深挖细节。吾生也有涯,而知也无涯,要时刻记住自己想要解决的问题是什么,无关的内容可以先绕开。
本书主要内容
本书重点讲解计算机系统的开发与实战。全书共有9章,由周文嘉、刘盼、王钰达等人编写。
第1章以ARM处理器为主,介绍通用处理器的架构。该章由周文嘉主编,参与编写的有张健、邵靖杰、彭杨益、朱志方等。
第2章介绍汇编和编译技术。该章由周文嘉主编,参与编写的有彭东林、李雄辉、张帅、汪涛等。
第3章介绍Linux内核中对内存的管理,包括从CPU的角度看内存、分区页帧分配器、slab分配器及kmalloc的实现、缺页异常处理等内容。该章由刘盼编写。
第4章介绍Linux内核中的进程管理,包括进程的创建、终止、调度和多核系统的负载均衡等内容。该章由刘盼编写。
第5章主要介绍Linux系统上的一些开发和调试工具。该章由周文嘉主编,参与编写的有雷波、刘雨、林舒萌、韩金科等。
第6章介绍人工智能技术。该章由赵刚主编,参与编写的有蒋仲明、魏凯、杨鹏、梁庆伟等。
第7章介绍OpenCL的编程技术。该章由谷镇佑编写。
第8章是一些基础软件开源项目的介绍。该章由张仁泽主编,参与编写的有李磊、马定桦、任泽龙等。
第9章介绍硬件架构。该章由余明辉主编,参与编写的有王钰达、郭论平等。
致谢
感谢Free time team,在这个平台上大家不论学历高低,都可以一起学习,学好了还可以参与社区贡献。本书的主要开发环境是Linux的Ubuntu发行版和x86架构。全书包含了大量实际案例,对应源代码参见GitHub网站。
感谢谢晓芳在书稿撰写期间对我们的大力支持,有了她的耐心指导,本书才能顺利出版。
感谢参与本书策划与封面设计的余扬(从事网站编辑工作,爱好画画、封面设计、策划),以及童昀(在读硕士研究生,爱好策划、设计)等。