DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件

简介: DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件


鲲鹏软件构成

鲲鹏处理器的软件生态是一个不断发展的软件生态,服务器本身也具有复杂度多样性,经过很长时间的发展服务器硬件有不同的操作系统方案,这些操作系统往往还实现了软件的分层组合,很难简单描述其软件架构。

本节从一个比较高的层次,主要从GNU/Linux软件生态角度出发,介绍鲲鹏软件的构成。

以下为鲲鹏 GNU/Linux 的软件架构高层视图:

上图中,底部为鲲鹏服务器硬件,以 鲲鹏处理器为核心的通用服务器设备。

在包含ARM核心的硬件系统上运行的软件不可避免的会包含特定系统的代码,此类代码通常以固件形式与其他系统软件分开,本节将此特性的代码称为----硬件特定软件

在服务器领域,服务器的硬件硬件特定软件对服务器“开箱即用”的影响最大,所以这两部分都要满足ARM服务器相关的合规性要求(详见:ARMv8-A 体系结构鲲鹏软件生态与云服务

硬件特定软件

硬件特定软件是指ARM服务器中特定系统的、常以固件形式提供的软件,主要包括所谓的Boot Loader 和设备特定固件。

本节将先介绍Boot Loader,然后介绍 ARM 服务器中的固件要求规范 SBSA 和 SBBR,以及其中 涉及到的一些重要元素, 如 UEFI、ACPI 与 ATF( ARM 可信固件)

1. Boot Loader

Boot Loader 即启动加载程序,是 Bootstrap Loader 一词的缩写版,通常是系统上电或重置运行后的第一个软件,因此它是专门针对特定处理器和主板的。

粗略的看启动流程包括三个主要阶段:

  1. 系统上电,硬件加载Boot Loader;
  2. Boot Loader 加载操作系统,例如Linux内核;
  3. 操作系统加载应用程序和用户数据,完成启动过程。

系统上电 加载

加载

加载

硬件

BootLoader

操作系统

应用程序和用户数据

其中,Boot Loader的主要作用就是充当硬件与操作系统之间的媒介,用于加载操作系统。为完成这一目的,Boot Loader往往要寻找并释放操作系统,建立操作系统运行的基本环境(例如初始化内存、发现硬件设备参数回传操作系统等)。一些复杂的 Boot Loader还会有很多额外的功能,如支持多阶段启动、多种启动方式(如Flash内存、磁盘、网络、U盘、光盘等)、启动多种操作系统、更新固件、提供运行时服务、支持底层调试等。

在服务器领域,支持 安全启动也是一个很重要的特性。

2. SBSA 与 SBBR

不同操作系统对系统加载过程中的要求是不一样的。在ARM的传统强项——嵌入式设备与移动终端——领域的Soc产品,往往是 定制化、差异化、价格敏感的,用户很少跟换硬件模块操作系统。在这些情况下,定制软件的成本远远小于移除硬件功能带来的成本节省。所以此类情况下使用方案多是高度定制化的,如“启动固件+Boot Loader(u-boot、fastboot)+操作系统(Linux)+应用软件”

但在 服务器和PC领域,软件通常由第三方开发,用户只要考虑“开箱即用”和“模块可更换”。定制硬件的成本远超过软件成本。所以,使用的方案一般为标准化的接口兼容的。

SBSA(Server Base Boot Requirements)和SBBR(Server Base Boot Requirements)是ARM在服务器应用领域对服务器基本启动需求提出的规范。

SBBA的规范是基于ARM 64 位处理器架构的硬件体系结构的规范,详细描述了服务器操作系统软件,如:操作系统、Hypervisor(虚拟机管理器)和固件所依赖的特性和系统架构关键层面,包括 CPU、PCIe、定时器、IOMMU、UART(Universal Asynchronous Recevier / Transmitter,通用异步收发传输器)、看门狗和中断等,目标是有足够标准的

系统架构,来使一个恰当的系统镜像能在所有符合规范的系统硬件上运行。

SBSA标准主要定义了以下方面的要求:

1.服务器在加电自检(POST)阶段应该检查的基本硬件组件,例如处理器、内存、硬盘驱动器、键盘和鼠标等。
2.服务器引导过程中需要加载的最小软件集合,包括固件(如BIOS或UEFI固件)、引导加载器(如GRUB或UEFI引导加载器)以及内核等。
3.服务器在引导过程中应该遵循的基本时序和顺序。
4.对于采用多引导架构的系统,SBSA还规定了引导过程中如何处理多个操作系统的引导选项。

SBBR规范是对系统启动固件的规范,定义了符合SBSA标准的ARM AArch64 架构的服务器上的操作系统或者Hypervisor(虚拟机管理器)要实现开箱即用能力的基本固件需求,包括所需启动和运行时的服务和安全要求,并遵循UEFI(Unified Extensible Firmware Interface,统一可拓展固件接口)和ACPI (高级适配电源管理接口规范)

SBSA/SBBR是针对ARM服务器能够启动OS或监视器等固件上提出的最小需求集,同时遵循了UEFI、ACPI、PSCI、SMBIO等工业标准。其中,SBSA和SBBR虽然名字相似,但它们实际上关注的方面有所不同。SBSA主要关注系统启动和运行的最小需求,包括启动加载程序、运行时服务、固件抽象等,而SBBR则关注引导程序的最小需求,例如UEFI的BootServices、RuntimeServices、Protocol等基础服务及协议接口。

在实现层面,SBSA和SBBR规范主要通过LuvOS这个定制化Linux系统来实现。LuvOS是基于Linux内核的,通过将FWTS(Firmware Test Suite)和SBSA-ACS(ARM Server Base Architecture - Automotive and Server Consortium Starter Kit) 在Linux下的工具与标准Linux内核共同编译获得。

3. UEFI

UEFI最早由Intel推出,是16位 x86“传统”PC BIOS的后继产品,目前由UEFI论坛维护。

UEFI(Unified Extensible Firmware Interface) 是一种在计算机固件中使用的图形化标准接口,它被设计用来替代传统的BIOS。UEFI被定义为一个可扩展的固件接口规范,它提供了一组标准的API,使得操作系统可以在预启动环境下与固件进行交互。

UEFI规范的开源参考实现是edk2 或 EDK Ⅱ,源码位于https://github.com/tianocore/tianocore.github.io/tree/master/edk2

上游开发小组为TianoCore社区

UEFI是以图形化界面展示的,相比传统的BIOS,它更易于使用和定制。此外,UEFI还提供了一些先进的功能,例如网络配置、硬件诊断和安全启动等。

UEFI是由一些行业领先的公司共同制定的,包括AMD、Intel、Microsoft等。随着计算机硬件的发展,UEFI也在不断演进,以满足新的需求。

UEFI 规范中包含一个启动管理器 BOOT Manager,他会根据NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器)中的参数决定如何加载可执行文件(可能是Boot Loader 或者其他镜像文件),EFI(可拓展固件接口)可执行文件格式必须符合PE(Protable Executable,可移植可执行)格式,PE是一种广泛应用在Windows平台上

4. ACPI

ACPI(Advanced Configuration and Power Interface)是一种开放式电源管理接口规范,它被设计用来提供一种通用的、标准化的电源管理方式。ACPI定义了在操作系统控制之下对电源管理进行完全控制的一种接口规范。

ACPI主要包含以下几部分:

  1. 用于描述计算机系统中电源状态和设备状态的表(Tables);
  2. 用于操作系统与固件之间进行通信的接口(Interfaces);
  3. 用于描述电源、散热管理及系统配置的规范;
  4. 用于提供运行时电源管理的事件(Events)。

ACPI是一种比较复杂的规范,它提供了丰富的电源管理功能。在计算机领域,许多新的电源管理特性都是基于ACPI实现的。

目录
相关文章
|
存储 缓存 运维
微信读书十周年,后台架构的技术演进和实践总结
微信读书经过了多年的发展,赢得了良好的用户口碑,后台系统的服务质量直接影响着用户的体验。团队多年来始终保持着“小而美”的基因,快速试错与迭代成为常态。后台团队在日常业务开发的同时,需要主动寻求更多架构上的突破,提升后台服务的可用性、扩展性,以不断适应业务与团队的变化。
541 0
|
缓存 C语言 计算机视觉
程序与技术分享:CPU0处理器的架构及应用
程序与技术分享:CPU0处理器的架构及应用
|
人工智能 供应链 架构师
软件架构一致性问题之Serverless架构处理架构一致性问题如何解决
软件架构一致性问题之Serverless架构处理架构一致性问题如何解决
209 2
|
存储 Docker 容器
ARM架构鲲鹏主机BClinux离线安装docker步骤
下载并安装适用于ARM架构的Docker CE二进制文件,解压后移动至/usr/bin目录。创建docker组,配置systemd服务脚本(docker.service、docker.socket、containerd.service),重载systemd配置,启动并启用docker服务。编辑daemon.json配置存储驱动、镜像加速地址等,最后拉取所需镜像。
1437 0
|
机器学习/深度学习 人工智能 并行计算
GPU 和 CPU 处理器的架构
CPU(中央处理器)和 GPU(图形处理单元)是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。
1241 1
|
架构师 微服务
什么是软件架构?架构的本质是什么?
定义 ”架构是什么“ 是件非常困难的事情,不同的组织对于软件架构有不同的定义,每个人心中也有自身对于系统架构定义的认知。就好比我们无法百分之百表述模型而只能产出模型不同维度的视图,对架构进行完备的定义是不可能的。
622 4
|
消息中间件 监控 Cloud Native
阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。
【7月更文挑战第3天】阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。EDA提升系统弹性和可维护性,促进业务敏捷性。实施路径包括事件模型设计、集成阿里云服务、开发事件处理器和监控优化。通过阿里云服务,开发者能轻松构建响应式、可扩展的云原生应用,加速创新并驱动数字化转型。
432 0
|
消息中间件 监控 Cloud Native
【阿里云云原生专栏】事件驱动架构在阿里云云原生生态中的角色与实施路径
【5月更文挑战第23天】本文探讨了事件驱动架构在阿里云云原生生态中的关键作用,强调其在微服务协同和应用创新中的效率提升。阿里云提供了EventBridge和EventMesh等服务支持EDA,其中EventBridge作为事件中枢,实现跨平台事件传递,而EventMesh提供高性能事件处理。通过事件模型设计、服务集成、开发处理器和监控优化四个步骤,用户可在阿里云上实施事件驱动架构,构建敏捷响应的云原生应用。随着云原生技术发展,EDA将成为企业数字化转型的重要推动力。
419 0
|
前端开发 Oracle 安全
软件架构设计 C/S与B/S架构的区别
C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或SQLServer。
2391 0