2016-02-01 5 views
1

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

  1. Насколько я знаю, существуют различные виды ISA, такие как ARM, MIPS, 80x86 и т.д. Интересно, является ли процессор может только специально прочитал один вид ISA. Например, может ли процессор читать как 80x86, так и MIPS.

  2. Если процессор уникален для ISA, как я могу проверить, какой ISA использует мой процессор ПК? Могу ли я узнать это вручную?

Спасибо

ответ

1
  1. Все CPU/MCU-х я знаю поддержки только одного набора команд.

    Существует возможность загрузки микрокода в некоторые из новых архитектур, которые могут позволить изменить поведение набора инструкций для некоторых точек бота, сильно сомневайтесь, что вы можете изменить набор команд с ним. Набор команд и внутренний Схема CPU/MCU сильно зависит. Создание универсального CPU с изменяемым набором инструкций можно (например, с FPGA), но будет очень медленным по сравнению с прямым DIE закодированных CPU. С подобной технологией Die тактовая частота может составлять всего несколько МГц.

    Некоторые архитектуры, такие как i80x86, поддерживают режимы, которые могут переключаться на другой вид работы (16/32/64 бит, реальный, защищенный), но трудно сказать, что это другой набор команд или просто подмножество одной и той же вещи ... (вопрос перспективы)

  2. определение набора инструкций.

    Это безумие. Да, можно определить, какой тип набора инструкций у вас есть через программу, но все CPU/MCU имеют разные схемы выводов, интерфейсы, архитектуры и не являются взаимозаменяемыми (даже в том же классе архитектуры), поэтому вы обнаруживаете набор инструкций, вы знаете настройки уже архитектуру вы делаете проводку для ...

    Во всяком случае обнаружение будет выглядеть так:

    • имеет множество тестовых программ каждого поддерживаемого набор команд/архитектуру, которая будет устанавливать конкретную память или IO до предопределенного состояния при правильной работе
    • есть часы cyclin g между всеми обнаружениями и остановкой первого действительного результата.
+0

Точка 2 не обязательно безумие, если вы, например, поддерживающей определенную базовую архитектуру (скажем, x86), но вы можете использовать супернабор если таковые имеются, например, один из расширений Intel с набором инструкций добавлено в более поздних версиях. Тогда хорошо проверить их, и если они их используют, в противном случае пренебрегают их использованием. –

+0

@RichardEriksson yep с этой точки зрения я согласен, но в целом точка по-прежнему сохраняется. – Spektre

0
  1. Да, каждый тип процессора является уникальным для набора команд. Набор команд для ARM не будет работать с x86, SPARC и т. Д. Может быть некоторое совпадение по совпадению, но программы несовместимы между архитектурами.

  2. В зависимости от вашей операционной системы есть команды, которые вы можете запустить, чтобы просмотреть эту информацию. Для unix/Linux uname -a покажет вам, какую архитектуру вы используете, а также dmidecode. Для ОС Windows, щелкнув правой кнопкой мыши на и выбрав Properties, вы должны показать свою архитектуру.

Например (Windows 7):

Windows 7 System Info

для Linux (я знаю, это супер-старый дистрибутив!):

$ uname -a 
Linux hostname 2.6.35-22-generiC#33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux 

(В этом примере, архитектура x86_64), которая представляет собой 64-разрядную версию Intel или AMD. Чтобы сказать наверняка, вы можете запустить dmidecode как я уже говорил ранее:

~# dmidecode |grep -i proc 
Processor Information 
     Type: Central Processor 
     Version: AMD Opteron(tm) Processor 154 
Processor Information 
     Type: Central Processor 
     Version: AMD Opteron(tm) Processor 154 
0

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

x86 поддерживает 16-разрядные, 32-разрядные и 64-разрядные команды, поддерживает 32-разрядную, 64-разрядную поддержку ARM и для Thumb-Thumb-2 и т. Д. Аналогично для MIPS.

Original Transmeta Я считаю, что он был гибким и должен перекомпилировать любой набор команд во внутренний набор и запустить его изначально. Однако это не удалось, и в настоящее время нет ничего подобного.

В любом случае, после запуска приложения он привязан к определенному набору инструкций в своем заголовке, поэтому он не может изменить его во время выполнения. Ну, ARM является исключением из этого - он может переключаться между полнофункциональными и Thumb-версиями, но они просто разные кодировки для того же ...

Для второй части - либо в графическом интерфейсе ОС, либо вы обычно можете ее прочитать - в Linux, прочитав /proc/cpuinfo, на Windows в переменной окружения PROCESSOR_ARCHITECTURE.

Смежные вопросы