This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

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/Cavium-ThunderX-ARM.html), 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.

Parents
  • Hi Awaz,

    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/architectures/cpu-architecture/r-profile

    For  Cortex-A, see

    https://developer.arm.com/architectures/cpu-architecture/a-profile

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

    I hope this helps you.

    Regards,

    Stuart

Reply
  • Hi Awaz,

    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/architectures/cpu-architecture/r-profile

    For  Cortex-A, see

    https://developer.arm.com/architectures/cpu-architecture/a-profile

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

    I hope this helps you.

    Regards,

    Stuart

Children
No data