Архитектура - 32-битная обработка 64-битных инструкций

tomasz@tomasz-lenovo-ideapad-Y530:~$ lscpu
Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 23
Stepping:              6
CPU MHz:               2000.000
BogoMIPS:              4000.12
Cache L1d:             32K
Cache L1i:             32K
Cache L2:              3072K

Я вижу, что моя архитектура 32-битная (i686). Но операционные режимы процессора являются 32-разрядными и 64-разрядными. Вопрос в том, почему? Как обрабатывается, что 32-разрядный процессор выполняет 64-разрядные операции? Я думаю, что это намного медленнее, чем родные 32-битные операции. Это встроенный процессор (для эмуляции 64-битной версии) или программно-зависимый? Когда имеет смысл запускать 64-разрядные операции для 32-разрядного процессора?

3 ответа

Решение

lscpu говорит вам, что ваша архитектура i686 (32-разрядный процессор Intel), и что ваш процессор поддерживает как 32-разрядный, так и 64-разрядный режимы работы. Вы не сможете установить x64-приложения, поскольку они созданы специально для x64-архитектур.

Ваш конкретный процессор может работать со встроенными пакетами i386 или i686. Есть несколько способов проверить вашу архитектуру и настройки ОС.

Пытаться uname -m, Он покажет i686, это означает, что ваш процессор поддерживает 32 бита.

Использовать lscpu команда, чтобы проверить, поддерживает ли ваш компьютер несколько режимов работы процессора (обычно 32-битный или 64-битный режим).

Из терминала запустить:

lscpu | grep op-mode

Пример вывода на 64-битный процессор:

user@computer1:~$ lscpu | grep op-mode
CPU op-mode(s): 32-bit, 64-bit

Пример вывода на 32-битный процессор:

user@computer2$ lscpu | grep op-mode
CPU op-mode(s): 32-bit

В первом примере на компьютер можно установить либо 32-разрядную версию Ubuntu, либо 64-разрядную версию Ubuntu. Во втором примере на компьютере может быть установлена ​​только 32-битная версия Ubuntu. На данном компьютере можно установить либо 32-разрядную версию Ubuntu, либо 64-разрядную версию Ubuntu.

32-разрядное приложение будет работать в 32-разрядной или 64-разрядной операционной системе. 64-разрядная ОС будет работать только на 64-разрядном процессоре. 64-разрядное приложение будет работать в 64-разрядной ОС, и, выполнив некоторые тяжелые работы, можно также запустить некоторые 64-разрядные приложения в 32-разрядной ОС. Под "тяжелой работой" я подразумеваю, что вам нужно будет установить 64-битное ядро1, а также делать другие неприятные вещи, в зависимости от того, какие 64-битные приложения вы пытаетесь установить. Установка 32-разрядного приложения в 64-разрядной ОС, напротив, очень проста.

введите описание изображения здесь
⠀ Летний ветер

1 https://unix.stackexchange.com/questions/134391/64-bit-kernel-but-all-32-bit-elf-executable-running-processes-how-is-this/134394

Это значит:

Architecture: i686              # <-- your kernel is 32 bit (you are using 32 bit Ubuntu)
CPU op-mode(s): 32-bit, 64-bit  # <-- your cpu can handle 32 or 64 bit instructions
Другие вопросы по тегам