ARM ARM 32 hay 64 bit của tôi?


60

trong một thông tin tôi biết tôi có thể nhìn vào kết quả uname -mđể biết hệ điều hành của tôi là 32 hay 64 bit, nhưng trong ARM điều này mang lại:

armv7l

Tôi đã suy luận từ

file /usr/bin/ls

rằng tôi đang sử dụng HĐH 32 bit, nhưng làm thế nào tôi có thể biết điều này một cách dễ dàng hơn?


3
cánh tay 7 là 32 bit. ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.- wikipedia
ctrl-alt-delor

@richard Tôi đã đoán vậy, nhưng tên của biến thể 64 bit là gì?
Chris Maes

1
Tôi không có quyền truy cập vào máy ARM nhưng đầu ra của uname -avà là gcc -vgì? Chúng có thể hữu ích.
terdon

Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.- en.wikipedia.org/wiki/ARM_arch
architecture # 64.2F32-bit_arch architecture

Arm là người cuối cùng trong số cpu 32 bit đi 64 bit (không bao gồm những người đã chết). Hầu hết đã đi 64 bit và sau đó chết, vì tiếp thị kém - cho rằng tốt hơn là đủ. Intel x86 là chiếc thứ hai cuối cùng, mặc dù AMD đã bổ sung 64 bit.
ctrl-alt-delor

Câu trả lời:


74

Có một số cấp độ, vì bạn có thể chạy hệ điều hành 32 bit hoặc hỗn hợp trên CPU có khả năng 64 bit. Xem kernel 64 bit, nhưng tất cả các tiến trình đang chạy ELF 32 bit, làm thế nào đây? cho một cuộc thảo luận chi tiết (được viết cho x86, nhưng hầu hết cũng áp dụng cho cánh tay).

Bạn có thể tìm thấy mô hình bộ xử lý trong /proc/cpuinfo. Ví dụ:

$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 10 (v7l)

ARMv7 (và bên dưới) là 32 bit. ARMv8 giới thiệu tập lệnh 64 bit.

Nếu bạn muốn xem liệu hệ thống của bạn có hỗ trợ nhị phân 64 bit hay không, hãy kiểm tra kiến ​​trúc kernel:

$ uname -m
armv7l

Trên bộ xử lý 64 bit, bạn sẽ thấy một chuỗi bắt đầu bằng armv8(hoặc ở trên) nếu unamebản thân quy trình là quy trình 32 bit hoặc aarch64nếu đó là quy trình 64 bit. (Xem thêm https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )


2
Tôi không tranh luận câu trả lời của bạn, nhưng thật không may, Android LÀ MỘT LINUX, vì vậy, giả sử có một số lệnh, SOMEWHERE hiển thị nó tại địa phương và không đọc tài liệu trên một số trang
THESorcerer 6/215

1
@THESorcerer Android sử dụng nhân Linux nhưng nó không phải là hệ thống Linux. Nó không có các công cụ đất của người dùng Linux (chỉ có một tập hợp con rất nhỏ). Trên Android, tôi nghĩ rằng hỗ trợ 64 bit là nhất quán trong HĐH cơ sở, vì vậy cat /proc/$$/mapssẽ cho bạn biết hệ thống này là 64 bit hay 32 bit từ một dòng lệnh adb.
Gilles 'SO- ngừng trở nên xấu xa'

3
Tôi tin rằng Raspberry Pi 3, là ARMv8 (CRC, không có Crypto tùy chọn) sẽ báo cáo armv7lmặc dù ARMv8 của nó. Vì vậy, tôi khá chắc chắn rằng CPU sai sẽ được báo cáo.

1
@jww Nếu nó báo cáo armv7l, điều đó có nghĩa là bạn đang chạy kernel 32 bit. Bạn có thể chạy kernel 32 bit trên CPU 64 bit. Nếu bạn muốn thông tin về CPU, hãy đọc /proc/cpuinfo.
Gilles 'SO- ngừng trở nên xấu xa'

uname -m chỉ trả về "aarch64". / Proc / cpuinfo không phải lúc nào cũng chứa tên cho bộ xử lý.
Halsafar

23

Như richard chỉ ra, armv7các biến thể đều là 32 bit, do đó không có nhãn dự phòng armv7-32, v.v.

Trên hệ thống linux, bạn có thể dễ dàng, mặc dù không thực sự dứt khoát, kiểm tra bằng cách kiểm tra một tệp thực thi phổ biến:

> which bash
/bin/bash
> file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...

Tôi nói "không dứt khoát" vì có thể chạy các tệp thực thi 32 bit trên hệ thống 64 bit.

Dường như không có bất cứ điều gì ngu ngốc trong /prochoặc /sys; đầu ra từ /proc/cpuinfo có thể cung cấp một số manh mối quan trọng. Nếu vì lý do nào đó bạn cần kiểm tra tự động, việc tạo bảng được ánh xạ tới trường "tên mô hình" có vẻ giống như một phương thức âm thanh tiềm năng (các trường khác, bao gồm "mô hình", "họ cpu", v.v. trông không bắt buộc - chúng không ' Tôi hoàn toàn không xuất hiện trên bộ xử lý Broadcom 2708 ARMv6).


Vậy armv7l là 32 bit phải không?
bakalolo

1
@bakalolo Đọc câu hỏi và câu trả lời được chấp nhận từ từ;)
goldilocks

11

Cài đặt gói 'lshw'.

# lshw
...
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    width: 32 bits
...

3

Có vẻ như hầu hết các cách để xem số bit là bằng cách nào đó biết rằng arm7 = 32 bit và trong khi điều đó có thể đúng nhưng những gì về

pi@rpi9:~ $ getconf LONG_BIT
32

Và nếu bạn muốn tìm mô hình cpu tôi thường sử dụng vòm

root@rpi4:~# tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi Model B Rev 2
armv6l

pi@rpi9:~ $ tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi 3 Model B Rev 1.2
armv7l

getconf LONG_BIT rất đơn giản
Abdulkarim Kanaan

1

Hãy thử như sau.

// -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*-

#include <stdio.h>
#include <limits.h>

#define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); }

int main (int argc, char *argv[])
{
  size(char);
  size(short);
  size(int);
  size(long);
  size(void*);
  return 0;
}

Kích thước địa chỉ là void*.


1
sizeoftrả về size_tmà phải được in ra bằng cách sử dụng%zu . Sử dụng công cụ xác định định dạng sai sẽ gọi hành vi không xác định
phuclv

và kích thước của void * không nhất thiết là chiều rộng bit kiến ​​trúc. Bạn đã bao giờ nghe nói về x32 trang web
ABI.google.com/site/x32abi

Tương tự, getconf -a | grep LONG_BIT
kaiwan

2
Điều này không cho bạn biết về bất cứ điều gì khác ngoài bản chất của trình biên dịch của bạn .
rsethc

-5

Không, nó là một máy tính 64 bit. Đó là Allwinner H8, phù thủy là đôi ARM-7. 8 lõi, 64 bit, powervr, sgx 544, ở tốc độ gấp đôi (700 mhz).

Vì vậy, không, nó có khả năng là 64 bit. Chỉ cần hệ điều hành có thể là 32.


Bạn thấy OP đang sử dụng Allwinner H8 ở đâu? Kiến trúc là armv7l rõ ràng không phải là một bit 64 bit
phuclv

Tốt hơn là thể hiện một cách để tìm thông tin mong muốn từ bên trong hệ thống thay vì sử dụng thông tin của bên thứ ba từ các nguồn bên ngoài. Điều này phù hợp để trở thành một bình luận hơn là một câu trả lời (do đó tất cả các phiếu giảm).
Synetech
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.