Блок управления

редактировать

Блок управления (CU) является компонентом центрального процессора компьютера (CPU), который управляет работой процессора. Он сообщает памяти компьютера, арифметическому и логическому устройству, а также устройствам ввода и вывода, как реагировать на инструкции, которые были отправлены процессору.

Он направляет работу других устройств, обеспечивая синхронизирующие и управляющие сигналы. Большинство компьютерных ресурсов управляется CU. Он направляет поток данных между ЦП и другими устройствами. Джон фон Нейман включил блок управления как часть архитектуры фон Неймана. В современных компьютерных разработках блок управления обычно является внутренней частью ЦП, и его общая роль и работа не изменились с момента его появления.

Содержание

  • 1 Блоки управления несколькими велосипедами
  • 2 Конвейерное управление блоки
  • 3 Предотвращение остановок
  • 4 Блоки управления вышедшими из строя
  • 5 Перевод блоков управления
  • 6 Блоки управления для маломощных компьютеров
  • 7 Интеграция с компьютером
  • 8 Функции управления блок
  • 9 Проводной блок управления
  • 10 Микропрограммный блок управления
  • 11 Комбинированные методы проектирования
  • 12 См. также
  • 13 Ссылки

Блоки управления несколькими велосипедами

Самые простые компьютеры используют многоцикловая микроархитектура. Это были самые ранние образцы. Они по-прежнему популярны в самых маленьких компьютерах, таких как встроенные системы, управляющие оборудованием.

В многоцикловом компьютере блок управления часто проходит через цикл фон Неймана : получение инструкции, выборка операндов, выполнение инструкции, запись результатов. Когда следующая инструкция помещается в блок управления, это изменяет поведение блока управления, чтобы правильно завершить команду. Таким образом, биты инструкции напрямую управляют блоком управления, который, в свою очередь, управляет компьютером.

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

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

На многих компьютерах возникают непредвиденные события двух разных типов. Прерывание возникает из-за того, что некоторый тип ввода или вывода требует внимания программного обеспечения для правильной работы. Исключение вызвано работой компьютера. Одно важное отличие состоит в том, что время прерывания невозможно предсказать. Другой заключается в том, что некоторые исключения (например, исключение из-за недоступности памяти) могут быть вызваны инструкцией, которую необходимо перезапустить.

Блоки управления могут быть разработаны для обработки прерываний одним из двух типичных способов. Если наиболее важна быстрая реакция, блок управления предназначен для прекращения работы и обработки прерывания. В этом случае незавершенная работа будет возобновлена ​​после последней выполненной инструкции. Если компьютер должен быть очень недорогим, очень простым, очень надежным или для выполнения большего количества работы, блок управления завершит работу в процессе до обработки прерывания. Завершение работы обходится недорого, поскольку для записи последней выполненной инструкции регистр не требуется. Это просто и надежно, потому что в нем меньше всего состояний. Это также тратит впустую минимум работы.

Могут быть сделаны исключения для работы как прерывания в очень простых компьютерах. Если требуется виртуальная память, то исключение, связанное с недоступностью памяти, должно повторить неудачную инструкцию.

Многоцикловые компьютеры обычно используют больше циклов. Иногда требуется больше времени, чтобы выполнить условный переход, потому что счетчик программы должен быть перезагружен. Иногда они выполняют инструкции умножения или деления с помощью процесса, похожего на двоичное длинное умножение и деление. Очень маленькие компьютеры могут выполнять арифметические операции по одному или нескольким битам за раз. На некоторых компьютерах есть очень сложные инструкции, состоящие из множества шагов.

Конвейерные блоки управления

Многие компьютеры средней сложности конвейерные инструкции. Эта конструкция популярна из-за ее экономичности и скорости.

В конвейерном компьютере инструкции проходят через компьютер. Этот дизайн состоит из нескольких этапов. Например, он может иметь одну стадию для каждого шага цикла фон Неймана. Конвейерный компьютер обычно имеет «конвейерные регистры» после каждого этапа. В них хранятся биты, вычисленные этапом, так что логические элементы следующего этапа могут использовать биты для выполнения следующего этапа. Обычно каскады с четными номерами работают на одном фронте прямоугольных импульсов, а каскады с нечетными номерами - на другом.

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

При эффективной работе конвейерный компьютер будет иметь инструкции на каждом этапе. Затем он работает над всеми этими инструкциями одновременно. Он может выполнять примерно одну инструкцию за каждый цикл своих часов. Когда программа принимает решение и переключается на другую последовательность инструкций, конвейер иногда должен отбросить обрабатываемые данные и перезапустить. Это называется «стойлом». Когда две инструкции могут мешать друг другу, иногда блок управления должен прекратить обработку более поздней инструкции, пока не завершится более ранняя инструкция. Это называется «пузырем конвейера», потому что часть конвейера не обрабатывает инструкции. Пузыри конвейера могут возникать, когда две инструкции работают с одним и тем же регистром.

Прерывания и неожиданные исключения также останавливают конвейер. Если конвейерный компьютер прекращает работу из-за прерывания, теряется больше работы, чем на многоцикловом компьютере. Предсказуемые исключения не должны останавливаться. Например, если для входа в операционную систему используется инструкция исключения, она не вызывает остановки.

Скорость? При той же скорости электронной логики он может выполнять больше инструкций в секунду, чем многоцикловый компьютер. Кроме того, несмотря на то, что электронная логика имеет фиксированную максимальную скорость, конвейерный компьютер можно сделать быстрее или медленнее, изменяя количество этапов в конвейере. Чем больше этапов, тем меньше работы на каждом этапе, и поэтому у этапа меньше задержек от логических вентилей .

Экономия? Конвейерная модель компьютера часто имеет наименьшее количество логических вентилей на команду в секунду, меньше, чем у многоциклового или вышедшего из строя компьютера. Зачем? Средний этап менее сложен, чем у многоциклового компьютера. Компьютер, вышедший из строя, обычно имеет большое количество простоя логики в любой момент времени. Подобные расчеты обычно показывают, что конвейерный компьютер потребляет меньше энергии на инструкцию.

Однако конвейерный компьютер обычно сложнее и дороже, чем сопоставимый многоцикловый компьютер. Обычно он имеет больше логических вентилей, регистров и более сложный блок управления. Точно так же он может использовать больше общей энергии, используя меньше энергии на инструкцию. Вышедшие из строя процессоры обычно могут выполнять больше инструкций в секунду, потому что они могут выполнять несколько инструкций одновременно.

Предотвращение остановок

Блоки управления используют множество методов, чтобы поддерживать трубопровод заполненным и избегать остановок. Например, даже простые блоки управления могут предполагать, что обратная ветвь к более ранней инструкции с меньшим номером является циклом и будет повторяться. Таким образом, блок управления с такой конструкцией всегда будет заполнять трубопровод обратным ответвлением. Если компилятор может определить наиболее часто используемое направление ветвления, компилятор может просто создать инструкции, так что наиболее часто используемая ветвь будет предпочтительным направлением ветвления. Подобным образом блок управления может получать подсказки от компилятора: на некоторых компьютерах есть инструкции, которые могут кодировать подсказки от компилятора о направлении ветвления.

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

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

Результаты из памяти могут стать доступными в непредсказуемое время, потому что очень быстрые компьютеры кэш-память. То есть они копируют ограниченные объемы данных памяти в очень быструю память. ЦП должен быть спроектирован для обработки с очень высокой скоростью кэш-памяти. Следовательно, ЦП может остановиться, когда ему потребуется прямой доступ к основной памяти. В современных компьютерах основная память в триста раз медленнее, чем кэш.

Для этого были разработаны вышедшие из строя ЦП и блоки управления для обработки данных по мере их поступления. (См. Следующий раздел)

Но что, если все вычисления завершены, но ЦП все еще не работает в ожидании основной памяти? Затем блок управления может переключиться на альтернативный поток выполнения, данные которого были извлечены, когда поток был в режиме ожидания. У потока есть собственный счетчик программ, поток инструкций и отдельный набор регистров. Разработчики варьируют количество потоков в зависимости от современных технологий памяти и типа компьютера. Типичные компьютеры, такие как ПК и смартфоны, обычно имеют блоки управления с несколькими потоками, которых достаточно для использования доступных систем памяти. Компьютеры с базами данных часто имеют примерно вдвое больше потоков, чтобы загружать гораздо большую память. Графические процессоры (ГП) обычно имеют сотни или тысячи потоков, потому что у них есть сотни или тысячи исполнительных модулей, выполняющих повторяющиеся графические вычисления.

Когда блок управления разрешает потоки, программное обеспечение также должно быть разработано для их обработки. В процессорах общего назначения, таких как ПК и смартфоны, потоки обычно выглядят очень похоже на обычные процессы с временным интервалом. В лучшем случае операционной системе может потребоваться некоторое представление о них. В графических процессорах планирование потоков обычно не может быть скрыто от прикладного программного обеспечения и часто управляется специальной библиотекой подпрограмм.

Вышедшие из строя блоки управления

Блок управления может быть спроектирован так, чтобы завершить то, что он может. Если несколько инструкций можно выполнить одновременно, блок управления организует это. Таким образом, самые быстрые компьютеры могут обрабатывать инструкции в последовательности, которая может несколько различаться в зависимости от того, когда становятся доступными операнды или места назначения инструкций. Этот метод используют большинство суперкомпьютеров и многие процессоры ПК. Точная организация этого типа блока управления зависит от самой медленной части компьютера.

Когда выполнение вычислений является самым медленным, инструкции перетекают из памяти в элементы электроники, называемые «блоками выдачи». Блок выдачи удерживает инструкцию до тех пор, пока не станут доступны и его операнды, и блок исполнения. Затем инструкция и ее операнды «передаются» исполнительному блоку. Блок исполнения выполняет инструкцию. Затем полученные данные перемещаются в очередь данных для записи обратно в память или регистры. Если компьютер имеет несколько исполнительных блоков, он обычно может выполнять несколько инструкций за такт.

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

Один вид блока управления для выдачи использует массив электронной логики, «табло», которое определяет, когда может быть отдана инструкция. «Высота» массива - это количество исполнительных блоков, а «длина» и «ширина» - это количество источников операндов. Когда все элементы объединяются, сигналы от операндов и исполнительного блока будут пересекаться. Логика на этом пересечении определяет, что инструкция может работать, поэтому инструкция "выдается" в блок бесплатного исполнения. Альтернативный стиль выдачи блока управления реализует алгоритм Томасуло, который переупорядочивает аппаратную очередь инструкций. В некотором смысле оба стиля используют очередь. Табло является альтернативой способ кодирования и изменения порядка очереди инструкций, и некоторые дизайнеры называют его таблицей очереди.

С некоторой дополнительной логикой табло может компактно комбинировать изменение порядка выполнения, переименование регистров и точные исключения и прерывания. Кроме того, оно может делать это без власти Например, сложная память с адресацией по содержимому, используемая алгоритмом Томасуло.

Если выполнение выполняется медленнее, чем запись результатов, очередь с обратной записью в память всегда имеет свободные записи. Но что делать, если память пишет медленно? Или что, если регистр назначения будет использоваться «более ранней» инструкцией, которая еще не выдана? Затем, возможно, потребуется запланировать этап обратной записи инструкции. Иногда это называется «изъятием» инструкции. В этом случае на серверной части исполнительных модулей должна быть логика планирования. Он планирует доступ к регистрам или памяти, которые будут получать результаты.

Логика списания также может быть встроена в табло выдачи результатов или очередь Tomasulo путем включения доступа к памяти или регистрам в логику выдачи. 24>Для вышедших из строя контроллеров требуются особые конструктивные особенности для обработки прерываний. Когда выполняется несколько инструкций, непонятно, где в потоке инструкций происходит прерывание. Для входных и выходных прерываний работает практически любое решение. Однако, когда компьютер имеет виртуальную память, возникает прерывание, указывающее на сбой доступа к памяти. Этот доступ к памяти должен быть связан с точной инструкцией и точным состоянием процессора, чтобы состояние процессора могло быть сохранено и восстановлено прерыванием. Обычное решение сохраняет копии регистров до завершения доступа к памяти.

Кроме того, вышедшие из строя ЦП имеют еще больше проблем с остановками из-за ветвления, потому что они могут выполнять несколько инструкций за тактовый цикл и обычно имеют много инструкций в различные стадии прогресса. Таким образом, эти блоки управления могут использовать все решения, используемые конвейерными процессорами.

Преобразование блоков управления

Некоторые компьютеры преобразуют каждую отдельную инструкцию в последовательность более простых инструкций. Преимущество состоит в том, что вышедший из строя компьютер может быть проще по большей части своей логики, при этом обрабатывая сложные многоступенчатые инструкции. x86 Процессоры Intel, начиная с Pentium Pro, преобразуют сложные инструкции CISC x86 во внутренние микрооперации, подобные RISC.

В них «передняя часть» блока управления управляет переводом инструкций. Операнды не переводятся. «Задняя часть» CU - это неработающий ЦП, который выдает микрооперации и операнды исполнительным блокам и путям данных.

Блоки управления для компьютеров с низким энергопотреблением

Многие современные компьютеры имеют элементы управления, которые минимизируют потребление энергии. В компьютерах с батарейным питанием, например в мобильных телефонах, преимущество заключается в более длительном сроке службы батареи. В компьютерах с питанием от электросети оправданием является снижение затрат на электроэнергию, охлаждение или шум.

Большинство современных компьютеров используют логику CMOS. CMOS расходует энергию двумя распространенными способами: изменяя состояние, то есть «активная мощность», и непреднамеренная утечка. Активную мощность компьютера можно уменьшить, отключив управляющие сигналы. Ток утечки можно уменьшить, уменьшив электрическое давление, напряжение, сделав транзисторы с большими областями истощения или полностью отключив логику.

Активную мощность легче уменьшить, потому что это не влияет на данные, хранящиеся в логике. Обычный метод снижает тактовую частоту процессора. Большинство компьютерных систем используют этот метод. Во время перехода центральный процессор обычно бездействует, чтобы избежать побочных эффектов от изменения частоты.

У большинства компьютеров также есть команда «остановить». Это было изобретено для остановки кода без прерывания, чтобы код прерывания имел надежную синхронизацию. Однако вскоре разработчики заметили, что команда остановки также является хорошим временем для полного отключения тактовой частоты процессора, что снижает активную мощность процессора до нуля. Контроллеру прерываний могут по-прежнему нужны часы, но они обычно потребляют гораздо меньше энергии, чем ЦП.

Эти методы относительно легко разработать, и они стали настолько распространенными, что другие были изобретены с коммерческой выгодой. Многие современные маломощные ЦП CMOS останавливают и запускают специализированные исполнительные блоки и шинные интерфейсы в зависимости от необходимой инструкции. Некоторые компьютеры даже организуют микроархитектуру ЦП для использования мультиплексоров, запускаемых передачей, так что каждая инструкция использует только точные части необходимой логики.

Теоретически компьютеры с более низкими тактовыми частотами могут также уменьшить утечку за счет снижения напряжения источника питания. Это влияет на надежность компьютера во многих отношениях, поэтому проектирование является дорогостоящим и встречается редко, за исключением относительно дорогих компьютеров, таких как ПК или мобильные телефоны.

В некоторых конструкциях могут использоваться транзисторы с очень низкой утечкой, но это обычно увеличивает стоимость. Барьеры истощения транзисторов можно сделать больше, чтобы уменьшить утечку, но это делает транзистор больше и, следовательно, медленнее и дороже. Некоторые производители используют эту технику в отдельных частях ИС, создавая логику с низкой утечкой из больших транзисторов, которые некоторые процессы предоставляют для аналоговых схем. В некоторых процессах транзисторы размещаются над поверхностью кремния в виде «плавников», но в этих процессах больше шагов, поэтому они более дороги. Специальные легирующие материалы транзисторов (например, гафний) также могут уменьшить утечку, но это добавляет этапов обработки, делая ее более дорогостоящей. Некоторые полупроводники имеют большую ширину запрещенной зоны, чем кремний. Однако эти материалы и процессы в настоящее время (2020 г.) дороже кремния.

Управлять утечкой сложнее, потому что перед отключением логики данные в ней должны быть перемещены в какой-либо тип хранилища с низкой утечкой.

Один из распространенных методов - распределить нагрузку на несколько процессоров и выключить неиспользуемые процессоры по мере уменьшения нагрузки. Логика переключения задач операционной системы сохраняет данные ЦП в памяти. В некоторых случаях один из процессоров может быть проще и меньше, буквально с меньшим количеством логических вентилей. Таким образом, у него низкая утечка, и он отключается последним и включается первым. Кроме того, это единственный процессор, который требует специальных функций с низким энергопотреблением. Подобный метод используется в большинстве ПК, которые обычно имеют дополнительный встроенный ЦП, который управляет системой питания. Однако на ПК программное обеспечение обычно находится в BIOS, а не в операционной системе.

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

В старых проектах состояние процессора копировалось в память или даже на диск, иногда с помощью специального программного обеспечения. Очень простые встроенные системы иногда просто перезагружаются.

Интеграция с компьютером

Все современные ЦП имеют управляющую логику для подключения ЦП к остальной части компьютера. В современных компьютерах это обычно контроллер шины. Когда инструкция считывает или записывает память, блок управления либо напрямую управляет шиной, либо управляет контроллером шины. Многие современные компьютеры используют один и тот же шинный интерфейс для памяти, ввода и вывода. Это называется «ввод-вывод с отображением памяти». Для программиста регистры устройств ввода-вывода отображаются в виде чисел по определенным адресам памяти. x86 ПК используют более старый метод, отдельную шину ввода-вывода, доступ к которой осуществляется инструкциями ввода-вывода.

Современный ЦП также имеет тенденцию включать в себя контроллер прерываний . Он обрабатывает сигналы прерывания от системной шины. Блок управления - это часть компьютера, которая реагирует на прерывания.

Для кэш-памяти часто используется контроллер кеша. Контроллер кэш-памяти и соответствующая кэш-память часто являются самой большой физической частью современного высокопроизводительного процессора. Когда память, шина или кэш используются совместно с другими процессорами, логика управления должна взаимодействовать с ними, чтобы гарантировать, что ни один компьютер никогда не получит устаревшие старые данные.

Многие старые компьютеры встраивали ввод и вывод определенного типа непосредственно в блок управления. Например, многие старые компьютеры имели переднюю панель с переключателями и светом, напрямую управляемыми блоком управления. Они позволяют программисту напрямую вводить программу и отлаживать ее. В компьютерах более позднего производства чаще всего передняя панель использовалась для входа в небольшую программу начальной загрузки для чтения операционной системы с диска. Это раздражало. Итак, передние панели были заменены программами начальной загрузки в постоянной памяти.

Большинство моделей PDP-8 имели шину данных, предназначенную для того, чтобы устройства ввода / вывода заимствовали логику чтения и записи памяти блока управления. Это снизило сложность и стоимость высокоскоростных контроллеров ввода-вывода, например для диска.

Xerox Alto имел многозадачный микропрограммируемый блок управления, который выполнял почти все операции ввода-вывода. Эта конструкция обеспечивала большинство функций современного ПК с крошечной долей электронной логики. Двухпоточный компьютер управлялся двумя микропотками с самым низким приоритетом. Эти вычисления выполнялись всякий раз, когда ввод / вывод не требовался. Микропотоки с высоким приоритетом обеспечивают (с понижением приоритета) видео, сеть, диск, периодический таймер, мышь и клавиатуру. Микропрограмма выполняла сложную логику устройства ввода-вывода, а также логику для интеграции устройства с компьютером. Для фактического аппаратного ввода-вывода микропрограмма считывает и записывает регистры сдвига для большинства операций ввода-вывода, иногда с резисторными цепями и транзисторами для сдвига уровней выходного напряжения (например, для видео). Для обработки внешних событий в микроконтроллере были микропрерывы для переключения потоков в конце цикла потока, например в конце инструкции или после обращения к регистру сдвига. Микропрограмму можно было переписывать и переустанавливать, что было очень полезно для исследовательского компьютера.

Функции блока управления

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

Аппаратный блок управления

Аппаратный блок управления реализован за счет использования блоков комбинационной логики с конечным числом вентилей, которые могут генерировать конкретные результаты на основе инструкций, которые были используется для вызова этих ответов. Проводные блоки управления обычно быстрее, чем микропрограммные конструкции.

Эта конструкция использует фиксированную архитектуру - она ​​требует изменений в проводке, если набор команд модифицирован или изменен. Это может быть удобно для простых и быстрых компьютеров.

Контроллер, использующий этот подход, может работать с высокой скоростью; однако у него мало гибкости. Сложный набор инструкций может ошеломить дизайнера, использующего специальную логику.

Проводной подход стал менее популярным по мере развития компьютеров. Раньше блоки управления для ЦП использовали специальную логику, и их было трудно спроектировать.

[1]

Блок управления микропрограммой

Идея микропрограммирования была представлена ​​Морисом Уилксом в 1951 году как промежуточный уровень для выполнения инструкций компьютерных программ. Микропрограммы были организованы в виде последовательности микрокоманд и хранились в специальной контрольной памяти. Алгоритм для микропрограммного блока управления, в отличие от аппаратного блока управления, обычно определяется описанием блок-схемы. Основное преимущество микропрограммного блока управления - простота его конструкции. Выходы контроллера организованы в виде микрокоманд, и их можно легко заменить.

Комбинированные методы проектирования

Популярным вариантом микрокода является отладка микрокода с помощью программного симулятора. Тогда микрокод представляет собой таблицу битов. Это логическая таблица истинности, которая транслирует адрес микрокода в выходы блока управления. Эту таблицу истинности можно передать в компьютерную программу, которая производит оптимизированную электронную логику. Получившийся блок управления почти так же прост в разработке, как и микропрограммирование, но он имеет высокую скорость и небольшое количество логических элементов, как в блоке управления с проводным подключением. Практический результат напоминает машину Мили или контроллер Ричардса.

См. Также

Ссылки

Последняя правка сделана 2021-05-15 11:07:37
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте