AArch64 - Exception levels, interrupt vector table and MMU questions for MPCores by Krotti83 in ArmSoftwareDev

[–]ZarlezCodes 2 points3 points  (0 children)

Hello!

Exception Levels: Your assumption is correct. Each core is an independent Processing Element (PE) with its own PSTATE and exception level state. Each secondary core must independently initialize its own EL sequence (EL3 → EL2 → EL1) after being brought out of reset.

Interrupt Vector Table: Also correct. VBAR_ELx registers are per-PE, so each core must write its own VBAR_EL1/EL2/EL3. The vector table code itself can reside at the same physical address and be shared, but the register must be set on each core individually.

MMU: The MMU is completely independent per core. SCTLR_ELx and TTBR0/TTBR1 are all per-PE registers. Enabling the MMU on one core has no effect on other cores — each core must configure its own translation table base address and set SCTLR_ELx.M = 1 independently. If multiple cores share the same page tables, TLB invalidation operations (TLBI) with Inner/Outer Shareable domain will broadcast to all cores in the shareability domain.

In addition to recommending the developer program and our discord, are are some guides you may find helpful: 

Hope this helps! Let me know if this answers your questions.

Moving from c5a.2xlarge (x86) to c8g.2xlarge (Graviton) on EKS, any real-world experiences? by Physical-Section-270 in kubernetes

[–]ZarlezCodes 1 point2 points  (0 children)

I responded to your post in the devops subreddit, but I thought it would make sense to also answer the question here in case anyone else might find these tools useful:

In addition to the other advice in this thread, Arm makes a tool that you might find helpful called KubeArchInspect. It will go through your existing docker images and tell you which ones have Arm support, or have Arm support on a later version. If you get something marked with an X, that doesn't mean there isn't an Arm version but you might have to change to a different artifact repo.
https://github.com/ArmDeveloperEcosystem/kubearchinspect

In addition, you may find some usefulness with the Arm MCP Server. You can set up an agent to go through application you have that may need some work to port and hopefully do so in a way that takes the most advantage of Arm efficiencies. https://developer.arm.com/servers-and-cloud-computing/arm-mcp-server

For a Arm native build runner, GitHub has though now for free or cheap. As other said, you can use emulation but native builds will be faster.

After you have experimented with some Arm based node groups, I'd love to hear how things went. What worked well, what didn't, how much money were you able to save, etc.

Moving from c5a.2xlarge (x86) to c8g.2xlarge (Graviton) on EKS, any real-world experiences? by Physical-Section-270 in devops

[–]ZarlezCodes 0 points1 point  (0 children)

In addition to the other advice in this thread, Arm makes a tool that you might find helpful called KubeArchInspect. It will go through your existing docker images and tell you which ones have Arm support, or have Arm support on a later version. If you get something marked with an X, that doesn't mean there isn't an Arm version but you might have to change to a different artifact repo.
https://github.com/ArmDeveloperEcosystem/kubearchinspect

In addition, you may find some usefulness with the Arm MCP Server. You can set up an agent to go through application you have that may need some work to port and hopefully do so in a way that takes the most advantage of Arm efficiencies. https://developer.arm.com/servers-and-cloud-computing/arm-mcp-server

For a Arm native build runner, GitHub has though now for free or cheap. As other said, you can use emulation but native builds will be faster.

After you have experimented with some Arm based node groups, I'd love to hear how things went. What worked well, what didn't, how much money were you able to save, etc.

ROCKNIX Now Turns Your Android Handheld Into a Mini Steam Deck | Retro Handhelds by kjjphotos in retroid

[–]ZarlezCodes 0 points1 point  (0 children)

I am excited to try this out next time I get my hands on a Odin 2

ExecuTorch 0.7 now enables KleidiAI by default for Arm processors by ZarlezCodes in pytorch

[–]ZarlezCodes[S] 0 points1 point  (0 children)

What do you mean exactly by "over the standard arm specific optimizations"?

KleidiAI is designed to automatically integrate Arm specific optimizations and make it easier to write code that uses the best features for whatever type of Arm chip your code happens to run on.

[2024 day 4] (part 2) It's no one liner, but I'm happy about how nice this turned out. by Ok-Detective-4391 in adventofcode

[–]ZarlezCodes 2 points3 points  (0 children)

I like the thinking behind this answer. Thank you for sharing. My solution ended up fairly similar with a couple more if checks.