What is my architecture and what does armv8l exactly means?

10.6k Views Asked by At

Firstly, I searched (a lot) and I'm confused about my Android architecture.

The main ways that I used are:

  1. The uname -m command says that I'm using armv8l.
  2. The dpkg --print-architecture command says that I'm using arm
  3. The lscpu shows this output:
~ $ lscpu
Architecture:           armv8l
Byte Order:             Little Endian
CPU(s):                 8
On-line CPU(s) list:    0-3
Off-line CPU(s) list:   4-7
Vendor ID:              ARM
Model name:             Cortex-A53                                              Model:                  4
Thread(s) per core:     1
Core(s) per socket:     4
Socket(s):              1
Stepping:               r0p4
CPU(s) scaling MHz:     79%
CPU max MHz:            1586.0000
CPU min MHz:            0.0000
Flags:                  half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 id                        iva idivt lpae evtstrm aes pmull sha1 sha2 crc32
  1. The cat /proc/cpuinfo shows this output:
~ $ cat /proc/cpuinfo
processor       : 0
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03                                                     CPU revision    : 4

processor       : 1
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03                                                     CPU revision    : 4

processor       : 2
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 3
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4
  1. AIDA64 (Device info app) shows me in the CPU section:

enter image description here

And lscpu says that I'm using Cortex-A53 model, and according to Cortex-A53 it's says that I'm using ARMv8-A 64-bit.

So, I don't know exactly what my Android arch is, like when I install node.js or other packages or binary files, do I install it in armv7l or armv8 (arm64) from node.js dist?

And I know installing node.js manually in Android is not really supported, or I don't know how to do it.

If anyone has a question, I'm ready for answering.

Thanks for all.

3

There are 3 best solutions below

2
Nate Eldredge On BEST ANSWER

The other answers are right, but here is some more background that may help your understanding.

The original ARM architecture was 32 bits. Starting with ARMv8, a 64-bit instruction set is also supported. ARMv8-A CPUs are supposed to support both modes, so such a chip effectively gives you two architectures in one. Generally arm or aarch32 refers to the 32-bit mode, and arm64 or aarch64 for the 64-bit mode.

The armv8l mode in uname means your kernel is built to run on an ARMv8 chip in its 32-bit mode. (A kernel built for the 64-bit mode would say arm64 here.) The l stands for "little endian"; the architecture supports both little-endian and big-endian modes, with little-endian being much more widely used. armv8b would be 32-bit big-endian mode.

The lscpu and /proc/cpuinfo data are directly querying the capabilities of your CPU hardware. The Cortex A-53 is a full ARMv8-A implementation and they are correctly telling you that it physically supports a 64-bit mode.

The uname -m and dpkg --print-architecture commands are querying the operating system, not the hardware. So they say you are running a 32-bit kernel and OS. Thus you are not able to use the 64-bit mode with this kernel/OS install. For all intents and purposes, right now you have a 32-bit arm / aarch32 CPU.

The ARMv8 architecture is backwards compatible with ARMv7, so your armv7l node package will run on it. The armv8/arm64 package will not, unless you want to reinstall the entire OS first.

1
Jake 'Alquimista' LEE On

It's an aarch32-only architecture without the aarch64 ISA.

2
Ender Gaming 1458 On

armv8l is 32 bit mode in 64 bit CPU, dpkg goes to arm if your have this cpu, but not lscpu and uname because they checking system arch