对话专家丨ARMv8架构知多少?
上周,我们的两位资深工程师:ARM技术服务事业部应用工程经理范敏琳和应用工程软件团队负责人修志龙,为大家带来...
上周,我们的两位资深工程师:ARM技术服务事业部应用工程经理范敏琳和应用工程软件团队负责人修志龙,为大家带来了一场精彩的关于ARMv8架构的在线研讨会,在这与大家分享部分Q&A问题,更多关于研讨会ppt资料及相关视频请点击“阅读原文”注册成为ARM社区用户后前往查看。
Q
关于ARMv8概述最好的的文档是哪个?
A
ARM的官方网站ARMv8-A架构的页面上有一些介绍性的讲义和白皮书,你可以免费下载,当然如果你有足够的勇气,也可以挑战去读一下ARMv8-A架构手册。
Q
ARMv7-A编译的程序是否能运行在ARMv8-A处理器上?
A
当ARMv8-A处理器运行在AArch32执行状态时,它向后兼容ARMv7-A,所以软件可以直接运行而不需要修改。系统软件可能需要做些许修改来适应系统的配置管理方法。
Q
在ARM的文档我讲义里有‘GIC’,这是什么?
A
GIC 即“Generic Interrupt Controller”,这是一个在ARM核里广泛使用的中断控制器
Q
如果w0和x0是零寄存器,就有w0到w30寄存器,那么好像只有30个通用寄存器(例如 w1到w30), w31和x31存在吗?
A
W0和X0不是零寄存器,这是比较容易混淆的。他们只是一般的通用寄存器。寄存器31在指令编码里可以用来编码零寄存器和堆栈指针,到底用作哪一个取决于具体指令。所以有31个通用寄存器, X0-X30(或W0-W30),寄存器31的编码是预留的。
X0/w0是一般通用寄存器(虽然你可能会混淆),零寄存器引用为xzr或wzr。
所以有一共有31个通用寄存器(x0-x30/w0-w30)和零寄存器(xzr/wzr)。
Q
有什么办法我们写64位的代码但编译器可以理解并直接转换成32位代码?
A
你可能知道,用高级语言写的软件可以编译成32位或64位执行代码,没有一个自动转换工具可以转换32位和64位的汇编代码。
Q
ARM编译器支持ARMv8的内嵌汇编吗?
A
是的, DS-5支持64位A64内嵌汇编。
Q
中间部分的转化也会缓存在TLB里吗?或是缓存在其他地方?
A
这是处理器实现细节,软件工程师应该是看不到的。每个CPU的处理都不一样,但是有的TLB实现的确缓存中间部分的转化,而有些只缓存最终的转化,另一些则两个都缓存。
Q
我想知道更多关于64位模式下执行Thumb的信息。
A
ARMv8-A处理器支持3种指令集,在AArch32执行状态,它可执行A32(ARM)和T32(Thumb)指令。在AArch64执行状态,它执行A64指令。所以在64位执行状态,Thumb指令集是不支持的,Thumb指令在AArch32下完全支持。
Q
现在有哪些ARMv8-A处理器?
A
现在有Coretx-A53, Cortex-A35,Cortex-A57 和 Cortex-A72。
Q
ILP32 ABI 是否完成?
A
现在是beta状态。
Q
请你重复一下为什么EL2在Secure状态下没有?
A
EL2通常是用来支持虚拟化,我们认为在现实中虚拟化和安全状态需要保持软件简单的要求是不符的。
Q
请给出手册的下载链接。
A
所有文档都可以在http://infocenter.arm.com下载。
Learn more
ARMv8网上研讨会ppt资料及相关视频请点击“阅读原文”注册成为ARM中文社区用户后查看,还有更多精彩资讯及工程师讨论在等着您!
关注 ARM
微信扫一扫关注公众号