какой компонент управляет или предоставляет инструкции для блока управления в процессоре? - PullRequest
0 голосов
/ 18 февраля 2019

Я новичок в компьютерной архитектуре, и у меня есть следующие вопросы,

  1. Какой блок или компонент управляет такими операциями, как увеличение счетчика программы, загрузка инструкции в ИК-порт и другой цикл Fetch-decode-execute-write?
  2. Если это блок управления, как он узнает, когда выполнять операции?
  3. Принимает ли операционная система участие в какой-либо из этих задач, кроме планирования, какую программу выполнять?
  4. Почему имеет значение, является ли ОС 32-разрядной или 64-разрядной?Не должны ли мы беспокоиться о компиляторе или интерпретаторе в этом случае?

1 Ответ

0 голосов
/ 18 февраля 2019

Какой блок или компонент управляет операциями, такими как увеличение счетчика программы, загрузка инструкции в ИК-порт и другой цикл выборки-декодирования-выполнения-записи?

Процессор может иметьцентрализованный блок управления или распределенный блок управления.Процессоры, которые не являются конвейерными или имеют двухступенчатый конвейер (т.е. извлекают и исполняют), используют централизованный блок управления.Более сложные процессоры используют распределенное управление, где каждая ступень конвейера может генерировать управляющие сигналы.Термин control относится к таким операциям, как выборка инструкций, чтение данных и запись данных в память, определение исполнительного блока, который может выполнять данную инструкцию, и определение зависимостей между инструкциями.Это противоречит термину datapath , который относится к части ЦП, которая содержит исполнительные блоки и регистры.

Древние ЦП состояли из двух компонентов, называемых контрольным путем (так называемый контрольединица) и дата данных.Возможно, вы видели эти термины в учебниках по компьютерной архитектуре.Примером таких процессоров является Intel 8086. В 8086 блок управления называется интерфейсом шины (BIU) и отвечает за следующие задачи:

  • Расчет физического адреса следующегоизвлечение инструкции.
  • Расчет физического адреса памяти или местоположений ввода / вывода для чтения или записи (т. е. для выполнения операций загрузки и сохранения).
  • Извлечение байтов инструкции из памяти ипомещая их в буфер.
  • Чтение и запись в память или устройства ввода-вывода.

Путь к данным 8086 также называется исполнительным модулем и отвечает за следующие задачи.:

  • Чтение значений регистров, указанных в выполняемой инструкции.
  • Запись результата инструкции в указанный регистр.
  • Генерация результатов ветвленияили память или запросы ввода / вывода в BIU.В любом данном цикле BIU должен осуществлять арбитраж между выполнением операции чтения / записи или операции выборки команды.
  • Выполнение инструкций в ALU.

Можно описать 8086как конвейерный процессор с двумя ступенями, соответствующими двум блокам.Там в основном нет декодирования;байты инструкции жестко связаны с АЛУ и регистровым файлом для выполнения указанной операции.

Если это блок управления, как он узнает, когда выполнять операции?

Каждая инструкция имеет код операции, который представляет собой просто набор битов, которые идентифицируют операцию, которая должна быть выполнена ALU (на 8086).Биты кода операции могут быть просто встроены в АЛУ так, чтобы они автоматически делали правильные вещи.Другие биты инструкции могут указывать операнды или идентификаторы регистров, которые могут передаваться в файл регистров для выполнения операций чтения или записи в регистре.

Операционная система участвует в какой-либо из этих задач, кромепланирование, какую программу выполнять?

Нет.

Почему важно, является ли ОС 32-битной или 64-битной?Не должны ли мы беспокоиться о компиляторе или интерпретаторе в этом случае?

Это зависит от того, поддерживает ли процессор 32-битный режим работы и 64-битный режим работы.Количество и / или размер регистров и поддерживаемые функции различны в разных режимах, поэтому кодирование команд отличается.Например, 32-разрядный набор команд x86 определяет 8 32-разрядных архитектурных регистров общего назначения, а 64-разрядный набор команд x86 (также называемый x86-64) определяет 16 64-разрядных архитектурных регистров общего назначения.Кроме того, размер адреса виртуальной памяти составляет 64-разрядный в x86-64 и 32-разрядный в x86, что влияет не только на кодировку инструкций, но и на формат исполняемого двоичного файла (см. Исполняемый и связываемый формат ).Современный процессор x86 обычно поддерживает оба режима работы.Поскольку кодировка команд отличается, то двоичные исполняемые файлы, содержащие их, различны для разных режимов и могут работать только в режиме, для которого они скомпилированы.32-разрядная ОС означает, что двоичные файлы ОС требуют, чтобы процессор работал в 32-разрядном режиме.Это также накладывает ограничение на то, что любое приложение для запуска в ОС также должно быть 32-разрядным, потому что 32-разрядная ОС не знает, как запускать 64-разрядное приложение (поскольку ABI отличается).С другой стороны, как правило, 64-разрядная ОС предназначена для запуска как 32-разрядных, так и 64-разрядных приложений.

Компилятор gcc по умолчанию создает 64-разрядные двоичные файлы x86, если ОС, на которой он работаетна 64-битном.Однако вы можете переопределить это, указав параметр компилятора -m32, чтобы он вместо этого испускал 32-разрядный двоичный файл x86.Вы можете использовать objdump, чтобы увидеть множество различий между 32-разрядным и 64-разрядным исполняемыми файлами.

...