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

鲲鹏生态软硬件构成

  • 鲲鹏软件构成
    • 硬件特定软件
      • 1. Boot Loader
      • 2. SBSA 与 SBBR
      • 3. UEFI
      • 4. ACPI

鲲鹏软件构成

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

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

以下为鲲鹏 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实现的。

文字内容 文字内容 文字内容

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何向BertModel增加字符

这里写自定义目录标题 看起来add_special_tokens和add_tokens加入的新token都不会被切分。

基于ssm+vue德云社票务系统源码和论文

基于ssmvue德云社票务系统源码和论文063 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 1.选题的依据和意义 互联网时代,随着生活节奏的加快和不断上升的压力,人们急需寻找到情绪的宣泄…

redis缓存雪崩、穿透、击穿解决方案

redis缓存雪崩、穿透、击穿解决方案 背景缓存雪崩缓存击穿缓存穿透总结背景 关于缓存异常,我们常见的有三个问题:缓存雪崩、缓存击穿、缓存穿透。这三个问题一旦发生,会导致大量请求直接落到数据库层面。如果请求的并发量很大,会影响数据库的运行,严重的会导致数据库宕机…

Spring Cloud Nacos 和 Eureka区别,包含实战代码

目录 一、Spring Cloud Eureka详解二、Spring Cloud Nacos详解三、Spring Cloud Nacos和Eureka区别 Spring Cloud Nacos 和 Spring Cloud Eureka 都是 Spring Cloud 微服务框架中的服务注册和发现组件,用于帮助开发者轻松地构建和管理微服务应用。它们之间的主要区别…

Python工具箱系列(四十一)

使用zip批量压缩文件 前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。 import dbm import glob import zipfile# 保存压缩计划的库名…

电子价签如何让电信门店数字化事半功倍?

数字化转型,高效的工具首先跟上。早在2020年,深圳电信就与云里物里开展商业合作,在深圳所有电信营业厅安装云里物里的ESL电子标签,以替代传统纸质标签的显示。经过几年的效果认证,云里物里的数字化智显设备得到了深圳电…

网页接口导入postman进行接口请求

postman版本:v10.17.4 一、拷贝接口信息 网页打开开发者工具-networkk,在网页上请求一次接口,鼠标指在接口上,点击鼠标右键-copy-copy as cURL(bash) 二、导入postman 打开postman,点击import-Raw text,…

【MCU】SD NAND芯片之国产新选择

文章目录 前言传统SD卡和可贴片SD卡传统SD卡可贴片SD卡 实际使用总结 前言 随着目前时代的快速发展,即使是使用MCU的项目上也经常有大数据存储的需求。可以看到经常有小伙伴这样提问: 大家好,请问有没有SD卡芯片,可以直接焊接到P…

[MyBatis系列⑥]注解开发

🍃作者简介:准大三本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐MyBatis系列①:增删改查 ⭐MyBatis系列②:两种Dao开发方式 ⭐MyBatis系列③:动态SQL ⭐MyBatis系列④:核心…

java 桥接模式

桥接模式 桥接模式简介桥接模式的实现总结 桥接模式简介 桥接模式(Bridge)是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interfce)模式。 桥接模式基于…

C语言 - 结构体、结构体数组、结构体指针和结构体嵌套

结构体的意义 问题:学籍管理需要每个学生的下列数据:学号、姓名、性别、年龄、分数,请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构: 学号(num): int 型姓名(…

领英采用 Protobuf 进行微服务开发,网络延迟降低60%

领英采用 Protobuf,以实现其各类平台中更为高效的微服务间数据传递,并将其与开源框架 Rest.li 相集成。在全公司范围的推广完成后,领英将延迟降低了 60%的同时,也提高了资源的利用率。 领英平台所采用的是微服务架构,…