Устройство управления - Control unit

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

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

Блоки управления мультициклом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Блоки управления маломощными компьютерами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Анимация матрицы управления простого зашитого блока управления, выполняющего LDA-инструкцию

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

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

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

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

[1]

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

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

Комбинированные приемы дизайна

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

Смотрите также

использованная литература