Различия между arm64 и aarch64

86

У меня есть два «разблокированных» устройства, iPad mini 3 и Galaxy Edge 6, оба наделены терминалом и минималистичным набором команд unix. Я думал, что оба устройства имеют процессоры arm64, но когда я запустил

на обоих девайсах получилось следующее:

для iPad mini 3:

для Samsung Galaxy s6 Edge:

Если я не ошибаюсь, последняя информация в обоих случаях, J85mAP и GNU / Linux, означает прошивки, а предпоследняя информация, arm64 и aarch64, означает процессоры.

Мои вопросы следующие: очевидно, что строки «arm64» и «aarch64» не совпадают, но я всегда думал, что arm64 и aarch64 одинаковы. (Это даже сказано, когда вы задаете здесь вопрос с тегом arm64.)

Так действительно ли они идентичны?

В частности, о чем мне следует беспокоиться в случае кросс-сборки библиотек для обеих целей? На самом деле я имею в виду gcc 5.2.0, но, возможно, и более низкие версии. Могу я просто пройти

или же

в соответствии с каким устройством я нацелен и беспокоюсь об остальных параметрах для настройки?

ИЗМЕНИТЬ Хм, поищите это снова, но безуспешно.

Олорин
источник

Ответы:

67

AArch64 - это 64-битное состояние, представленное в архитектуре Armv8-A ( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A ). 32-битное состояние, которое обратно совместимо с Armv7-A и предыдущими 32-битными архитектурами Arm, называется AArch32. Следовательно, триплет GNU для 64-битной ISA - это aarch64. Сообщество ядра Linux решило назвать свой порт ядра для этой архитектуры arm64, а не aarch64, так что именно отсюда и происходит некоторая часть использования arm64.

Насколько мне известно, бэкэнд Apple для aarch64 назывался arm64, тогда как бэкэнд, разработанный сообществом LLVM, назывался aarch64 (так как это каноническое имя для 64-битного ISA), а позже они были объединены, и теперь бэкэнд называется aarch64. .

Итак, AArch64 и ARM64 относятся к одному и тому же.

Кирилл
источник
57

Кажется, что ARM64 был создан Apple, а AARCH64 - другими, в первую очередь парнями из GNU / GCC.

После некоторого поиска в Google я нашел эту ссылку:

64-битные бэк-энды ARM64 / AArch64 LLVM объединились

Так что вполне логично, что iPad называет себя ARM64, поскольку Apple использует LLVM, а Edge использует AARCH64, поскольку Android использует набор инструментов GNU GCC.

Pelotasplus
источник
Спасибо за этот ответ. Так что, по крайней мере теоретически, для кросс-компиляции gcc из mac os или ubuntu на ipad или edge мне не стоит особо беспокоиться о параметре -target, переданном в скрипт настройки, при условии, что это один из arm64 и aarch64?
Олорин
6
Хотя мне нечего добавить к приведенной выше информации, я хотел бы выделить слайд 10 из events.linuxfoundation.org/images/stories/pdf/… - Он подчеркивает, как ядро ​​Linux относится к AARCH64 под именем ARM64. Таким образом, при перекрестной сборке двоичных файлов, требующих поддержки заголовков ядра Linux, вероятно, правильным будет ARCH = arm64, даже если целью является «aarch64».
Шрей
3
Ваш ответ правильный. Обязательство звона для этого ARM64 / AArch64 слияние довольно просто. arm64 и aarch64 кажутся синонимами для большинства целей.
Gabriel Parent