有没有人总结过ARMv7和ARMv8戴森v8各个版本的区别别

ARMv8-a架构简介
ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性,已经和我们对旧的ARM架构的认知,有很大差距了。
因此,本文从ARMv8-A产生的背景开始,对它进行一个简单的介绍,使大家从整体上,对ARMv8有一个简单的了解。
本节参考自“”,感兴趣的同学可以自行阅读。
有一点是可以确定的,ARM诞生时,对Intel主导的PC市场,没有(也不敢有)一点点的非分之想。最初的ARMv4(ARM7系列),到最近的ARMv7(Cortex-A,-M,-R系列),都是针对功耗比较敏感的移动设备的,就性能而言,基于ARM处理器的设备,始终无法和PC相提并论。
但从ARMv7开始,情况开始有些转变,ARM的市场开始扩展到移动设备之外的其它领域,这也是ARMv7划分为A(Application)、R(Real-time)和M(Microcontroller)三个系列的原因,其实质就是三个细分市场,其中的A系列,就是针对性能要求较高的应用。
特别是在Cortex-A9之后,ARM的处理性能有很大的提高,渐渐的吸引了一些PC用户。因此基于ARM的类PC产品,如平板电脑,开始大量涌现。此时,ARM的处理能力,已经有机会应用于其它领域了,如企业设备、服务器等,当然,其优势依然是低功耗。
与此同时,新的趋势正在酝酿,主要包括大内存(Large Memory)、虚拟化(Virtualization)和安全(Security)。Virtualization在ARMv7上已经有简单的硬件实现,Security也有可能基于当前架构扩展,唯有Large memory的需求,有点棘手。
由于处理器性能越来越强,运行于其上的软件也来越复杂,复杂到单一应用对内存的需求可能超出32-bit架构所能支持的最大内存(4G),这就是Large memory需求的起因。不过,后来的Cortex-A15(ARMv7架构)通过Large Physical Address Extensions (LPAE) 技术,可以支持高达40bits的物理地址空间。但受限于32-bit的指令集,虚拟地址空间依旧只有32bits(4G),如果有应用需要更大的虚拟内存,怎么办?只能定义一个新的架构,使用64-bit的指令集(也即我们常说的ARM64)。
毫无疑问,在现阶段,需要超过4G虚拟内存的应用场景,是非常少的。但ARM还是定义了一个新的架构--ARMv8,为什么呢?下面是ARM的解释(只有伟大的公司才有伟大的理念!):
Trends. That’s really what ARM has to look at when defining a new architecture. That is the nature of our business, we need to look a long way forward, and plan.
当然,ARMv8并不仅仅是为了解决虚拟地址的问题,它也要解决现有架构的一些问题。不过,新的问题又来了:一个新的架构?用户为什么要使用新的架构?因此,ARMv8的定义,必须先满足如下前提条件:
1)对上兼容。
2)能解决现存架构的已知问题。
3)相比现存架构,必须具备优势明显的新特性,哪怕软件从来不使用这些新特性。
以上就是ARMv8-a产生的背景,也是ARMv8-a架构之所以是“这个”样子的直接原因。那么到底是什么样子呢?我们继续介绍。
3. ARMv8-a架构简介
基于上面的前提条件,ARMv8-a架构的主要特性包括:
1)新增一套64-bit的指令集,称作A64。
2)由于需要向前兼容ARMv7,所以同时支持现存的32-bit指令集,称作A32和T32(也即我们熟悉的ARM和Thumb指令集)。
3)定义AArch64和AArch32两套运行环境(称作Execution state),分别执行64-bit和32-bit指令集。软件可以在需要的时候,切换Execution state。
4)AArch64最大的改动,使用新的概念(exception level),重新解释了processor mode、privilege level等概念,具体可参考第4章的介绍。
5)在ARMv7 security extension的基础上,新增security model,支持安全相关的应用需求。
6)在ARMv7 virtualization extension的基础上,提供完整的virtualization框架,从硬件上支持虚拟化。
4. AArch64 Exception level
Exception level,是ARMv8-a引入的一个新概念,用于整合之前架构中processor mode和privilege level相关的功能。
4.1 ARMv7之前的实现
我们知道,以前的ARM架构,处理器可以工作在多种模式(称作processor mode)下,包括User、FIQ、IRQ、Abort、Undefined、System等,之所以存在不同的模式,主要有2个方面的考虑:
1)不同的处理器模式,有不同的硬件访问权限,称作privilege level。
主要有2个level,privilege和non-privilege。其中只有User模式属于non-privilege level,其它均是privilege level。
安全起见,大多数时候,软件都运行在User mode。一旦需要其它操作,则需要切换到相应的privilege模式下。这是最原始、最朴素的安全思想,当然,只防君子,不防小人。
2)这些处理器模式,除User模式外,其它模式基本上和各类异常一一对应。而不同的模式,都有一些自己独有的寄存器,例如R13(SP)、R14(LR)等等,可以使模式切换过程(也是异常处理过程)更为高效、便利。
4.2 ARMv7-a的实现
ARMv7-a基本保留了之前的设计,不同之处,将privilege level命名了,称作PL0和PL1(也许您猜到了,后来出现了PL2,用于虚拟化扩展(Virtualization Extension)。
另外,增加了两个模式:Monitor和Supervisor,分别用于security扩展和virtualization扩展。
4.3 ARMv8-a的实现
可能ARMv8-a的设计者觉得之前的设计有些啰嗦,就把processor mode的概念去掉(或者说淡化)了,取而代之的是4个固定的Exception level,简称EL0-EL3。同时,也淡化了privilege level的概念。Exception level本身就已经包好了privilege的信息,即ELn的privilege随着n的增大而增大。类似地,可以将EL0归属于non-privilege level,EL1/2/3属于privilege level。
这些Exception level的现实意义是(如下图,先忽略Secure model有关的内容):
ARMv8-a Exception level有关的说明如下:
1)首先需要注意的是,AArch64中,已经没有User、SVC、ABT等处理器模式的概念,但ARMv8需要向前兼容,在AArch32中,就把这些处理器模式map到了4个Exception level。
2)Application位于特权等级最低的EL0,Guest OS(Linux kernel、window等)位于EL1,提供虚拟化支持的Hypervisor位于EL2(可以不实现),提供Security支持的Seurity Monitor位于EL3(可以不实现)。
3)只有在异常发生时(或者异常处理返回时),才能切换Exception level(这也是Exception level的命名原因,为了处理异常)。当异常发生时,有两种选择,停留在当前的EL,或者跳转到更高的EL,EL不能降级。同样,异常处理返回时,也有两种选择,停留在当前EL,或者调到更低的EL。
注1:有关ARMv8-a异常处理的具体细节,会在其它文章中描述。
5. security model
ARMv8-a的security模型基本沿用了ARMv7 security extension的思路,主要目的保护一些安全应用的数据,例如支付等。它不同于privilege level等软件逻辑上的保护,而是一种物理上的区隔,即不同security状态下,可以访问的物理内存是不同的。
ARMv8-a架构有两个security state(参考上面图片),Security和non-Security。主要的功效是物理地址的区隔,以及一些system control寄存器的访问控制:
在Security状态下,处理器可以访问所有的Secure physical address space以及Non-secure physical address space;
在Non-security状态下,只能访问Non-secure physical address space,且不能访问Secure system control resources。
6. virtualization
硬件虚拟化包括指令集虚拟化、异常处理虚拟化、MMU虚拟化、IO虚拟化等多个议题,比较复杂,这里先不描述了。
本文简单介绍了ARMv8-a中的一些概念,后续文章将会重点关注异常处理模型、security模型、virtualization模型。
原创文章,转发请注明出处。蜗窝科技,。
本文已收录于以下专栏:
相关文章推荐
第1章 ARMv8简介. 3
1.1基础认识. 3
1.2 相关专业名词解释. 3
第2章 Execution
State 4
2.1 提供两种Execution
State 4
2.2 ...
转自蜗窝科技,www.wowotech.net
ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的...
因科研实验需要,完成了针对64为ARM架构目标开发板的交叉编译,之前网上查询了一些方法,有些并不可行,且操作性与可读性都较差,这里给出自己亲手编译成功的过程。
本次编译的目标环境和编译环境如下:
注:文章转载来源:http://blog.csdn.net/forever_2015/article/details/
分级存储架构. ...
参考文献:
1. DDI0487A_a_armv8_arm.pdf
2. DDI0500C_cortex_a53_r0p2_trm.pdf
3. ARM_Trusted_Firmar...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)ARMv7是一种构架。ARM7是一种处理器型号,ARM7是在ARMv4构架上设计出来的处理器
arm7是一种arm内核型号,也就是armv4;拥有arm和thumb两个指令集;
常见型号有NXP(收购的philips)lpc21xx,lpc22xx系列,三星的44bx系列
ARMv7是就是armv4的升级版咯。拥有thumb2和thumb两种指令集。特点是可用纯c语言编程(arm7必须用汇编启动)和具有中断嵌套功能的硬件中断响应。主流用于cortex-m3。
常见有st的stm32,流明的lm3s和nxp的lpc17xx系列。
新手如果学习arm处理器,建议先从arm7学起,可以了解arm的工作方式,因为cortex-m3的公共库和纯c编程,用户无需了解cpu的工作方式即可编程,可以缩短开发周期。。。。
2.基于ARM处理器的嵌入式linux系统&&& ARM体系结构的版本:&&& ARMv4,ARMv4T,ARMv5TE,ARMv5TEJ,ARMv6,ARMv7& 每一种体系结构对应一套指令集版本(ARM ISA)&&& ARM处理器架构:&& ARM7,ARM9,ARM9E,ARM10E,ARM11,Cortex等。
本文已收录于以下专栏:
相关文章推荐
WINAPI和CALLBACK这两个宏有什么区别呢?_stdcall _cdecl _pascal _fastcall这些关键字是什么意思,有什么区别呢?首先看MSDN里给出的解释,不过有些语焉不详哦...
================
/lib和/usr/lib和/usr/local/lib的区别(zz)
文章分类:操作系统
简单说,/lib是内核级的,/usr/lib是系统级的,/usr/l...
转载:http://sunwayle./232/
 转自:[url]/jonescheng/arc...
尽量使用C++风格的类型转换 仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视。但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它...
ios8与ios7有什么区别
重做日志undo log
撤消日志重做日志:每当有操作执行前,将数据真正更改时,先前相关操作写入重做日志。这样当断电,或者一些意外,导致后续任务无法完成时,系统恢复后,可以继续完...
Active Object 主要用于在大的领域对象和子系统中支持并发,而Monitor Object 则主要用于实现较小的并发对象。
Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容。但是它们之间有着微小的差别,总结如下:
Readonly只针对input(text / pas...
对于集合的使用还不是很熟练,所以上网查下有关用法和区别。
  数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类...
首先,本文为原创,转载请声明。
直接上结果
所以说移位除了快之外,负数出来的结果还不一样
为了能够使用右移操作来完成除法运算,我们必须...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)最近工作比较繁忙,因此论坛尽管几乎每天都登录一次,不过回贴、发帖都比较少~
在除夕之前,想写点东西给各位参考,呵呵~
最近在制作iOS版的CPU Dasher64,针对64位ARMv8架构。ARMv8架构与ARMv7架构比起来,变化非常大。Intel IA-32与Intel64的差别其实不大,基本上就是每条指令多了REX前缀而已~
从可用寄存器角度来说,程序员可以完全使用31个通用寄存器(X0-X30或W0-W30),而堆栈指针寄存器(SP或WSP)以及指令指针寄存器IP都是独立的,这个与32位的不同(R13为堆栈指针寄存器,R15作为指令指针寄存器)。对于ARM官方提供的调用约定,参数可以用8个寄存器(X0-X7或W0-W7)。这意味着64位下,即便传8个参数都能进寄存器,呵呵。而需要被当前例程所保护的通用寄存器是从X18到X30。不过少了原来的push/pop指令,原来的push能一次将几乎所有通用寄存器保存到栈上。现在如果要保存通用寄存器到栈上的话一般使用LDP/STP指令对SP操作,这样可以同时加载/存储两个64位寄存器。用这对指令同时也能确保栈地址始终能16字节对齐。
而对于SIMD寄存器以及浮点寄存器来说,除了标量单精度与双精度寄存器的数量不变以为(它俩仍然与SIMD寄存器共享),SIMD寄存器由原先32位下的16个扩充到了32个。在32位下,需要被保护的SIMD寄存器是Q4-Q7这四个,而64位下,需要被当前例程所保护的SIMD寄存器是V8-V15。
从ISA角度上来说,原本32位下有很强悍的几乎每条指令都带条件操作的特性完全木有了~留下几条含有前缀C的比较简单常用的操作,比如CCMP、CSEL、CINC、CINV等。不过像算术逻辑操作仍然有不改变当前标志位与改变当前标志位两种版本,这点还是很不错的。在64位下,Thumb指令集全都木有了,所有指令都是32位宽。因此立即数与ARMv7比起来,除了移位还算正常,其它的都显得有些奇葩。
不过ARMv8在存储器控制器上下了不少功夫,增加了x86下的类似于MOVNT这种指令,Non-temporal load/store——LDNP/STNP。这就使得像原先的Memory Barrier系操作有了用武之地了~ARMv8中除了原有的ISB(Instruction Synchronization Barrier)与DMB(Data Memory Barrier)之外,还引入了LDAR/STLR(Load-Acquire/Store-Release)指令集。这套指令具有Memory Barrier的作用。如果你在某一点需要做Memory
Barrier,而此时正好想读取或写入某个数据,那么直接用LDAR/STLR即可,可以省去一条DMB的指令。而在多核多线程同步中,又引入了LDXP/STXP操作,由原先的单寄存器扩展到了双寄存器~这堪比CAS2啊~~()
对于执行状态,现在引入了EL0到EL3,EL表示Exception Level。通常,用户模式为EL0。
不过最后想吐槽的是,ARMv8编程手册似乎是写给外星人看的~很多指令介绍不详细,而且写得很容易让人误解……最后,比较可惜的是Apple A7对ARMv8的实现中,没有将CRC32放进去~而且汇编器压根不识别这系列指令~
浅谈64bit ARM CPU 指令集及架构
《中无通讯》第67期 文︰ 世界网络
林和安 小洛夫
64bit CPU并不是甚么新的事物,服务器/工作站早已是64bit的天下,即使桌面计算机也纷纷升级64bit CPU及64bit操作系统。作为移动设备市场的领导者,ARM也决定在2014年推出64bit ARM CPU架构,实现智能手机、平板计算机的一次性能飞跃,又会为市场带来多大的影响呢?
走向64bit的主因—支持更多内存
ARM架构一向以低功耗作主打,为此不惜把CPU架构尽量作出精简,取消作用不大的单元。早期ARMv4指令为求低功耗,没有FP浮点、复杂math指令及SIMD,十分简陋。随后ARM陆续加上以上的功能,而自Cortex-A9以后,用户要求更高性能的处理器,满足高清影片播放、浏览网页以至多任务工作环境,即在智能手机上同时打开3-4项应 用,占用大量的CPU及内存资源,尤以内存为甚。因为智能手机没有硬盘,大部份的数据都需要从内存中读取,使4GB的寻址上限显得足襟见肘,而且智能手机因为空间有限需要GPU及CPU共享地址空间,与PC的GPU及CPU拥有不同的地址空间不同,无形中增加内存资源的占用。在Cortex-A15发布时,ARM尝试引入Physical
Address Extensions技术,把CPU可寻址的空间从32bit扩充至40bit,最大内存寻址从4GB扩充至1TB,暂缓了内存上限问题。不过引入Physical Address Extensions的做法治标不治本,因为Physical Address Extensions是以4KB page mapping即映像的方式支持4GB以上的内存,不但较为复杂而且不能支持单个4GB以上的应用,需把数据拆分处理。另一方面,ARM在引入Cortex-A15的同时加入Virtualization虚拟功能,这又增加对内存的需求,最终步x86后尘走上64bit之路,也十分合理。
在ARM架构的演进中,ARMv8A最大的改变是支持64bit。
并未真正64bit?
在IT的世界,功能是要付出成本的,所以厂商普遍采用能省便省的做法。ARM引入64bit主要目的是要支持更多内存,为进军服务器、工作站市场作准备。不过ARM也意识到用户未必需要用到64bit上限的16EB内存,所以选择了x86-64的做法,仅支持至48bit Virtual Memory,相当于256TB内存。对于ARM的做法,作为一名计算机爱好者难免有所失望,但考虑到目前主流内存容量在8-16GB左右,加上操作系统如Windows 7 Ultimate也仅支持至192GB,ARM的做法也无可厚非。
全新设计的A64指令集
ARM在2007年已着手设计工作,并于2011年11月公报ARMv8A 64bit指令集架构,耗用了4年的研发时间,时间可谓不过不失。
ARMv8A分为A64及A32两个部分,A64顾名思义属于64bit的部份,主要存在于AARCH64的状态。而A32又称AARCH32状态,用作支持现有A32 ARM指令集。ARM并没有采用AMD x86-64及Intel EM64T扩充32bit指令做法,而是选择全新开发专用的64bit指令。据ARM方面表示,这一做法与省电的考虑有关,当运行64bit ISA时,ARMv7电路可处于闲置状态,节省功耗。同A64 ISA也移除了作用不大的LDM/STM(load/store multiple)指令,改为LD/ST
’P’指令,以降低复杂性及功耗,与此同时,32bit到64bit状态转换采用Inter-processing的做法,确保32bit到64bit指令皆可顺利执行。
新增Registers及支援DP浮点
ARMv8A架构新增了31个64bit通用寄存器(General Purpose Registers),改进排程选项以针对复杂软件。同时,还新增32个128bit Registers,用作执行SIMD。ARMv8A除了可执行单精度(Single Precision)FP数据外,新增支持双精度(Double Precision)FP数据,而且新增了IEEE754-2008 FP指令,如MaxNum/MinNum等等。此外ARMv8A还把FPU及SIMD变成常设功能,软件不用检测是否有相关功能。提供Cryptography加密指令,而且是以128bit
SIMD Registers执行,可在每周期同时执行2个AES encode/decode指令,或4个SHA-1/SHA-256 Hash。
最后,虽然ARMv8A以64bit为主,但对于32bit的AArch32状态也有所加强。如新增的Cryptography及IEEE754-2008 FP指令,Load acquire/store release`等等皆有帮提供32bit下的性能。
新增的31个64bit General Purpose Registers及32个128bit SIMD Registers。
提供Cryptography加密指令,且是在128bit SIMD Registers内进行。
ARMv8A强化了内存管理,Virtual Address及Physical Address从40bit增至48bit,支持更大容量内存
本文已收录于以下专栏:
相关文章推荐
在我之前的文章[1]中,我解释了如何将三星的专有引导程序SBOOT加载到IDA Pro中。在第二篇文章中,介绍了TEE OS的旅程,该文章介绍了在二进制Blob中定位Trustonic的TEE & t...
Running Linux in QEMU’s aarch64 system emulation mode
Since I started working on aarch64
在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软...
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文...
objdump -D -l vmlinux & xxx.txt
objdump --help 看常用的参数[-D disassemble ]
由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容。(出版社排版好的PDF版正...
查看Android设备的CPU架构信息,可以使用命令来完成:1、adb shell
/proc/cpuinfo?
~ adb shell
shell@hennessy:/ $ ca...
186-8818-7637芊芊小姐请点百度快照186-8818-7637芊芊小姐 ▂▃▄▅▆▇答消费者问▇▆▅▄▃▂▁ 我们这不议价不打折,质量给你保证,对价钱有疑问或者不能接受者,请即离开,谢谢您的...
在有些情况下,修改user agent还会起到防网页木马的作用。
在 Firefox 地址栏中输入 about:config。
右键新建一个名为 general.useragent.overrid...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 戴森v8各个版本的区别 的文章

 

随机推荐