0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >业界动态 > 10年来UEFI对中国CPU产业的发展产生了深远影响以及相互促进发展

10年来UEFI对中国CPU产业的发展产生了深远影响以及相互促进发展

2017-03-30
类别:业界动态
eye 415
文章创建人 拍明



在3月28日举行的国际UEFI Plugfest会议上,中国工程院院士倪光南表示,10年来,UEFI促进了中国计算机产业的发展并产生了深远影响,可以预见中国自主CPU产业将与UEFI的发展相互促进。

UEFI联盟是英特尔、微软、惠普等厂商为统一UEFI(统一可扩展固件接口)标准,于2005年发起成立的国际联盟组织,目前已有近百家企业成员。“UEFI测试大会”每年召开一次,今年在南京举行。会上,倪光南院士作了“UEFI对中国计算机产业的促进”的主旨演讲。


倪光南说,在人们每天使用的计算机上,有一个看不见、摸不着的关键固件,在软件、硬件之间起承上启下的作用,控制着计算机启动、进入操作系统,甚至是近年流行的指纹认证、虹膜认证的每一步,这个固件就是BIOS。早在10年前,他就预言UEFI BIOS是中国软件企业的蓝海,如今已成现实。


他认为,Intel主导的Tiano开源项目采用先进的软件工程思想与模块化的体系架构,为国内BIOS技术人员提供了最佳的范本,降低了中国BIOS技术社区的学习难度。UEFI统一的标准打开了传统BIOS的“黑盒子”,为后进入的BIOS厂商提供了与Intel、微软、联想等企业合作的机会。


倪光南表示,UEFI技术发展恰好与中国自主CPU产业发展同步,从技术层面,得益于UEFI架构无关的前瞻设计思想,不同指令集与微架构的CPU都可以采用UEFI作为固件方案。中国自主CPU几乎全都采用了UEFI作为固件,2009年百敖软件与龙芯合作,实现了MIPS架构CPU的UEFI固件。UEFI在降低研发成本、提升CPU验证效率等方面效果显著。


另外,UEFI标准已被中国Linux社区广泛接受,UEFI定义的OS统一接口降低了Linux Boot的研发难度,自主OS厂商尝试多种与UEFI结合的创新技术,包括:统一身份验证、快速启动、双OS切换、Linux运行时监控等,满足中国市场对OS创新解决方案的需求。Deep In与中标麒麟等国内OS厂商加速基于UEFI的创新。


可以预见,中国自主CPU产业将与UEFI的发展相互促进,中国自主OS将会继续受益于UEFI在移动端、IOT、云计算等领域的创新。


会上,倪光南建议,中国是全球最大的手机市场,ARM作为UEFI的重要成员,应该积极推动UEFI在移动端的应用。UEFI在PC、服务器的成功为UEFI推进到手机领域奠定基础,UEFI作为事实标准已经被中国政府与产业界认同。在技术层面,在手机上应用轻量级的UEFI方案具备可行性,希望UEFI考虑在Tiano开源项目中增加手机平台的参考实现。


UEFI介绍

新型UEFI,全称“统一的可扩展固件接口”(Unified Extensible Firmware Interface), 是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。

可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是有近20多年历史的 BIOS 的继任者。

UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织。

UEFI用途

BIOS即Basic Input/Output System,翻成中文是“基本输入/输出系统”,是一种所谓的“固件”,负责在开机时做硬件启动和检测等工作,并且担任操作系统控制硬件时的中介角色。

因为硬件发展迅速,传统式(Legacy)BIOS 成为进步的包袱,现在已发展出最新的UEFI(Unified Extensible Firmware Interface)可扩展固件接口,相比传统 BIOS 的来说,未来将是一个“没有特定 BIOS”的电脑时代。

与legacy BIOS 相比,UEFI最大的几个区别在于:

1. 编码99%都是由C语言完成;

2. 一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;

3. 将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);

4. 输出也不再是单纯的二进制code,改为Removable Binary Drivers;

5. OS启动不再是调用Int19,而是直接利用protocol/device Path;

6. 对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。

7.弥补BIOS对新硬件的支持不足的问题。


UEFI结构

UEFI使用模块化设计,它在逻辑上可分为硬件控制和OS软件管理两部分:操作系统—可扩展固件接口—固件—硬件。

根据UEFI概念图的结构,可把uEFI概念划为两部分:uEFI的实体 (uEFI Image)跟平台初始化框架。

uEFI的实体-uEFI Image

UEFI结构

(图中蓝框围起部分)

根据uEFI规范定义,uEFI Image包含三种:uEFI Applications, OS Loaders and uEFI Drivers。

uEFI Applications是硬件初始化完,操作系统启动之前的核心应用,比如:启动管理、BIOS设置、uEFI Shell、诊断程式、调度和供应程式、调试应用...等等

OS Loaders是特殊的uEFI Application,主要功能是启动操作系统并退出和关闭uEFI应用。

uEFI Drivers是提供设备间接口协议,每个设备独立运行提供设备版本号和相应的参数以及设备间关联,不再需要基于操作系统的支持。

平台初始化框架

uEFI框架主要包含两部分,一是PEI(EFI预初始化),另一部分是驱动执行环境 (DXE)。

PEI主要是用来检测启动模式、加载主存储器初始化模块、检测和加载驱动执行环境核心。

DXE是设备初始化的主要环节,它提供了设备驱动和协议接口环境界面。


【相关信息】站在CPU角度 你才能发现这个世界有多慢

经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都可以睡一觉了。

最为我们熟知的关于计算机不同组件速度差异的图表,是下面这种金字塔形式:越往上速度越快,容量越小,而价格越高。

这张图只是给了我们一个直观地感觉,并没有对各个速度和性能做出量化的说明和解释。而实际上,不同层级之间的差异要比这张图大的多。这篇文章就让你站在 CPU 的角度看这个世界,说说到底它们有多慢。

站在CPU角度 你才能发现这个世界有多慢

希望你看完这篇文章能明白两件事情:磁盘和网络真的很慢,性能优化是个复杂的系统性的活。

注:所有的数据都是来自网络。所有的数据会因为机器配置不同,或者硬件的更新而有出入,但是不影响我们直觉的感受。

数 据

先来看看 CPU 的速度,就拿我的电脑来说,主频是 2.6G,也就是说每秒可以执行 2.6*10^9个指令,每个指令只需要 0.38ns(现在很多个人计算机的主频要比这个高,配置比较高的能达到 3.0G+)。我们把这个时间当做基本单位 1s,因为 1s 大概是人类能感知的最小时间单位。

CPU角度

一级缓存读取时间为 0.5ns,换算成人类时间大约是 1.3s,大约一次或者两次心跳的时间。这里能看出缓存的重要性,因为它的速度可以赶上 CPU,程序本身的 locality 特性加上指令层级上的优化,cache 访问的命中率很高,这最终能极大提高效率。

分支预测错误需要耗时 5ns,换算成人类时间大约是 13s,这个就有点久了,所以你会看到很多文章分析如何优化代码来降低分支预测的几率,比如这个得分非常高的 stackoverflow 问题。

二级缓存时间就比较久了,大约在 7ns,换算成人类时间大约是 18.2s,可以看到的是如果一级缓存没有命中,然后去二级缓存读取数据,时间差了一个数量级。

我们继续,互斥锁的加锁和解锁时间需要 25ns,换算成人类时间大约是 65s,首次达到了一分钟。并发编程中,我们经常听说锁是一个很耗时的东西,因为在微波炉里加热一个东西需要一分钟的话,你要在那傻傻地等蛮久了。

然后就到了内存,每次内存寻址需要 100ns,换算成人类时间是 260s,也就是4分多钟,如果读一些不需要太多思考的文章,这么久能读完2-3千字(这个快阅读的时代,很少人在手机上能静心多这么字了)。看起来还不算坏,不多要从内存中读取一段数据,需要的时候很更多。到了内存之后,时间就变得一个量级,CPU 和内存之间的速度瓶颈被称为冯诺依曼瓶颈

一次 CPU 上下文切换(系统调用)需要大约 1500ns,也就是 1.5us(这个数字参考了其他文章)。

在 1Gbps 的网络上传输 2K 的数据需要 20us,换算成人类时间是 14.4小时,这么久都能把《星球大战》六部曲看完了!可以看到网络上非常少数据传输对于 CPU 来说,已经很漫长。而且这里的时间还是理论最大值,实际过程还要更慢一些。

SSD 随机读取耗时为 150us,换算成人类时间大约是 4.5天。换句话说,SSD 读点数据,CPU 都能休假,报团参加周边游了。虽然我们知道 SSD 要比机械硬盘快很多,但是这个速度对于 CPU 来说也是像乌龟一样。I/O 设备 从硬盘开始速度开始变得漫长,这个时候我们就想起内存的好处了。尽量减少 IO 设备的读写,把最常用的数据放到内存中作为缓存是所有程序的通识。像 memcached 和 redis 这样的高速缓存系统近几年的异军突起,就是解决了这里的问题。

从内存中读取 1MB 的连续数据,耗时大约为 250us,换算成人类时间是 7.5天,这次假期升级到国庆七天国外游了。

同一个数据中心网络上跑一个来回需要 0.5ms,换算成人类时间大约是 15天,也就是半个月的时间。如果你的程序有段代码需要和数据中心的其他服务器交互,在这段时间里 CPU 都已经狂做了半个月的运算。减少不同服务组件的网络请求,是性能优化的一大课题。

从 SSD 读取 1MB 的顺序数据,大约需要 1ms,换算成人类时间是 1个月。也就是说 SSD 读一个普通的文件,如果要等你做完,CPU 一个月时间就荒废了。尽管如此,SSD 已经很快啦,不信你看下面机械磁盘的表现。

磁盘寻址时间为 10ms,换算成人类时间是 10个月,刚好够人类创造一个新的生命了。如果 CPU 需要让磁盘泡杯咖啡,在它眼里,磁盘去生了个孩子,回来告诉它你让我泡的咖啡好了。机械硬盘使用 RPM(Revolutions Per Minute/每分钟转速) 来评估磁盘的性能:RPM 越大,平均寻址时间更短,磁盘性能越好。寻址只是把磁头移动到正确的磁道上,然后才能读取指定扇区的内容。换句话说,寻址虽然很浪费时间,但其实它并没有办任何的正事(读取磁盘内容)。

从磁盘读取 1MB 连续数据需要 20ms,换算成人类时间是 20个月。IO 设备是计算机系统的瓶颈,希望读到这里你能更深切地理解这句话!如果还不理解,不妨想想你在网上买的东西,快递送了将近两年,你的心情是怎么样的。

而从世界上不同城市网络上走一个来回,平均需要 150ms(参考世界各地 ping 报文的时间CDN)。

虚拟机重启一次大约要 4s 时间,换算成人类的时间是 3百多年。对于此,我想到了乔布斯要死命优化 Mac 系统开机启动时间。

物理服务器重启一次需要 5min,换算成人类时间是 2万5千年,快赶上人类的文明史了。5 分钟人类都要等一会了,更别提 CPU 了,所以没事不要乱重启服务器啊,分分钟终结一个文明的节奏。



责任编辑:Davia

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: CPU产业

相关资讯