天天看点

arm a7 支持虚拟化吗_CPU、ARM、架构(及指令集)关系

目前市面上的CPU指令集分类主要分有两大阵营,一个是intel、AMD为首的CISC复杂指令集CPU,另一个是以IBM、ARM为首的RISC精简指令集CPU。

1>不同CPU对应不同架构类别

不同品牌的CPU,支撑其实现的架构也不相同,例如,Intel、AMD的CPU是X86架构,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。

2>ARM架构详细

笔者嵌入式生涯主要经验的是基于 Linux + ARM + Android 及较少QT开发的形式,所以关于硬件相关主要梳理了ARM架构信息。

ARM架构其实主要是说的是ARM IP核的实现,随着ARM架构的演进,不同的ARM IP核体系结构,分别对应有不同的名称和功能特点;

•Armv4架构:对应有ARM7;

•Armv5架构:对应有ARM9;

•Armv6架构:对应有ARM11;

•Armv7架构:对应有Cortex-[A|R|M]系列;早期的Cortex-A系列处理器(A5、A7、A8、A9、A12、A15和A17)都基于ARMv7-A架构

Armv7实现了具有多种模式的传统Arm架构,支持基于内存管理单元(MMU)的虚拟内存系统架构(VMSA),并支持Arm(A32)和Thumb(T32)指令集。引入了architecture profiles的概念,并且这个概念继续被引入Armv8架构。ARM公司也是从ARMv7开始划分为A(Application)、R(Real-time)和M(Microcontroller)三个系列,分别对应三个市场领域,其中

    A系列,主要针对性能要求较高的应用领域,如手机;

    R系列,主要应用在对实时性要求高的应用领域,如车载;

    M系列,主要偏向于工业控制领域,需要微控制器电子领域,说白了就是一个高级的单片机。

•ARMv8架构:对应有Cortex-A50、Cortex-A53、Cortex-A73,Cortex-A76,还有目前最新的Cortex-A77;

ARMv8是ARM公司首款支持64位指令集的处理器架构,当前只有A系列,引入了ARM TrustZone技术、NEON双精度浮点高级SIMD、虚拟化和硬件加密技术,加载-获取,存储-释放的指令(专为C ++ 11,C11,Java内存模型而设计,它们通过消除显式的内存屏障指令来提高线程安全代码的性能)等等许多变化。

根据ARM公司官方描述,ARMv8-a架构的主要特性包括:

    a.新增一套64-bit的指令集,称作A64。

    b.由于需要向前兼容ARMv7,所以同时支持现存的32-bit指令集,称作A32和T32(也即我们熟悉的ARM和Thumb指令集)。

    c.定义AArch64和AArch32两套运行环境(称作Execution state),分别执行64-bit和32-bit指令集。软件可以在需要的时候,切换Execution state。

    d.AArch64最大的改动,使用新的概念(exception level),重新解释了processor mode、privilege level等概念。

    e.在ARMv7 security extension的基础上,新增security model,支持安全相关的应用需求。

    f.在ARMv7 virtualization extension的基础上,提供完整的virtualization框架,从硬件上支持虚拟化。

arm a7 支持虚拟化吗_CPU、ARM、架构(及指令集)关系

(armv8 exception level)

附ARMv8白皮书:

“http://www.arm.com/zh/files/downloads/ARMv8_white_paper_v5.pdf”

3>各大厂商基于ARM架构处理器概况

    作为一个嵌入式er,我们平时能接触到的ARM阵营CPU,可能有华为海思、高通、MTK、三星 或 苹果 等;

    其中苹果公司相对特殊,目前应该自己包办了CPU/GPU的架构设计,但是关键指令集还是来自于ARM;剩余其他家,高通、海思、MTK、三星的SoC方案,除了需要指令集,其实也没有完全摆脱ARM的公版架构。

    总之ARM阵营这些公司使用的基本都是ARM的IP核,在给ARM公司掏着昂贵的知识产权费用;ARM公司向世界完美展现了什么叫做:一流公司制定标准;

    基于ARM的公版架构和指令集,实际上各家又衍生出了自己不同的处理器架构名称,如,

    •三星--Exynos 9810使用三星自研M3架构--猫鼬(Mongoose)架构;

    •海思--Kirin[ˈki:rin]980--7nm 工艺,第一款基于Cortex-A76研发的芯片,第一款双 NPU 芯片,第一款基于Mali-G76研发的GPU,第一款支持 Cat.21 的芯片,下行峰值可达 1.4Gbps;

    •高通--高通CPU首个自主构架“Scorpion”[ˈskɔːrpiən] --> 第二代自主构架Krait[kraɪt]  --> 第三代自主构架Kryo[k'raɪəʊ];

Kryo是高通推出的首款面向异构计算而设计的高度优化定制64位核心架构;

骁龙845--采用了第三代kryo架构,Kryo385,CPU部分基于ARM Cortex-A75和A55架构“魔改”而来,采用了4颗大核心(2.8GHz)、4颗小核心(1.8GHz)八核大小架构设计;顺带提下上代的骁龙835 CPU本质上是ARM Cortex-A73的“变体”;

骁龙855--采用了第四代Kryo架构,Kryo485,CPU部分基于Cortex-A76架构“魔改”,采用了一颗超大核心(2.84GHz)、三颗性能核心(2.42GHz)以及四颗效率核心(1.8GHz)的八核心三丛集大中小(一大、三中、四小)架构设计。

骁龙865--采用了第五代Kryo架构,Kryo585,基于Cortex-A77架构“魔改”; 

4>最后,谈谈android关于不同cpu架构的适应;

目前在Android系统上,每一个cpu架构都对应一个ABI(Application Binary Interface应用程序二进制接口):armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64; ABI定义了二进制文件(尤其是.so文件)如何在相应的系统平台上运行,从使用的指令集,内存对齐到可用的系统函数库;如果做过android HAL层开发,一定碰到过令人头疼的第三方库适配,其中就会涉及ABI的适配。

以上都是以前自己零散的记录,今天再次花了一些时间整理为笔记,分享给大家,欢迎交流指正,公众号目前没有留言功能,个人微信号:Embedded_LittleGoal。

Byebye~ 关灯、睡觉。

arm a7 支持虚拟化吗_CPU、ARM、架构(及指令集)关系

行文不易,

看到即缘分,点击“在看”,长按“关注”,一起学习一起进步。

继续阅读