极术小姐姐 · 2020年02月03日

ARM R5 and A53 cores coexist

I am fairly new to ARM development. Not quite sure where to post this - so I am starting here..

I have a virtualized chip (using QEMU) that has few R5 cores and few A53 cores. This physical chip is/will be designed for a specific purpose. I would like to run the virtualized environment on ARM based hardware so I can use KVM for performance gain. I can run it on x86 right now, but translating the instruction sets takes away from performance.

  1. From scouring the internet, I see that both A53 and ThunderX are ARMv8-A. Can I safely assume if I buy a ThunderX workstation/server that any A53 code can run natively?
  2. I understand that R5 and A53 has differences - especially in memory handing. Will R5 code run without problem on A53/ThunderX cores? Would be nice if I can use KVM for both core types so instructions can run natively on underlying ARM hardware (A53/ThunderX).
  3. Finally, I cannot seem to find a good (powerful) ARM workstation/server that I can just buy. I saw an Ampere eMAG (www.avantek.co.uk/.../), but says it is just an engineering samples. About the only thing I can find is (https://www.asacomputers.com/... but I am not sure how good that company is. I need a server/workstation with as many cores as possible. My application is compute intensive - so processor speed matters as well.

Any help or direction will be greatly appreciated.

1 个回答 得票排序 · 时间排序
棋子 · 2020年02月03日

Sorry about the delay in getting a response to you on this. I can help with Q1 and Q2, but Q3 I cannot really advise you on I am afraid.

Q1) No you cannot safely assume that any A53 code would run natively on any Arm v8-A workstation such as the Thunder X. You might need to do some modification. Also, I understand that the ThunderX only supports AArch64, so your A53 code would also have to use AArch64 otherwise it won't work at all.

The memory map would be different as well so you would need to make some changes to your MMU settings.

Also, be aware that a system such as the ThunderX that is architecturally-compliant to the Arm v8-A architecture does not mean the code will behave the same on a Cortex-A53 and a ThunderX.

The ThunderX may also have implementation-specific features that do not distract from its' compliance the Arm v8-A architecture but it may behave differently; or you may have to modify your code base in order to get that best out of the target.

ThunderX is intended for the server market, whereas a Cortex-A53 is intended for the mobile market and there are differences in these market requirements.

Q2) NO this will not work.

The Cortex-R5 is a Arm v7-R compliant processor, whereas, as you know, the Cortex-A53/ThunderX are Arm v8-A compliant . They are different architectures.

The Cortex-R5 does not have an MMU in it and therefore does not offer the facility for virtual-to-physical memory translations.

It is a 32-bit processor and supports the Arm 32-bit instruction set (A32) or the 32/16-bit Thumb instruction set (T32).

I suggest reading the following 2 pages for a better understanding of the differences.

For Cortex-R, see

https://developer.arm.com/arc...

For Cortex-A, see

https://developer.arm.com/arc...

These should give you an good overview as to the differences.

I hope this helps you.

你的回答
关注数
1
收藏数
0
浏览数
3263
棋子
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息