stringtranslate.com

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

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

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

Многотактные блоки управления

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Логику выбытия также можно реализовать в табло выдачи или очереди Томасуло, включив доступ к памяти или регистру в логику выдачи. [6] [7]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Микропрограммный блок управления

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

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

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

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

Рекомендации

  1. ^ фон Нейман, Джон (1945), Первый проект отчета о EDVAC (PDF) , Школа электротехники Мура, Пенсильванский университет, заархивировано из оригинала (PDF) 14 марта 2013 г.
  2. Астха Сингх (24 сентября 2018 г.). «Компьютерная организация – устройство управления и проектирование». Гики для Гиков . Проверено 25 мая 2019 г.
  3. ^ Аб Асанович, Крсте (2017). Руководство по набору инструкций RISC V (PDF) (изд. 2.2). Беркли: Фонд RISC-V.
  4. ^ Power ISA(tm) (изд. 3.0B). Остин: IBM. 2017 . Проверено 26 декабря 2019 г.
  5. ^ Торнтон, Дж. Э. (1970). Конструкция компьютера: CDC 6600 . Атланта: Скотт, Форман и компания. 125. ИСБН 9780673059536.
  6. ^ abcde Лейтон, Люк. «Свободный RISC-V М-Класс». Поставка толпы . Проверено 16 января 2020 г. .
  7. ^ abcde Алсуп, Митч; Лейтон, Люк; Заруба, Флориан; Торнтон, Джеймс; Киммитт, Джонатон; Петриско, Дэн; Такано, С.; Фальво, Сэмюэл. «RISC-V HW Dev, вышедшее из строя табло в стиле 6600» . Группы Google . Фонд RISC-V . Проверено 16 января 2020 г. .
  8. ^ Селио, Крис. «BOOM Docs, Генератор SOC ракетного корабля» . Проверено 16 января 2020 г. .
  9. ^ Введение в архитектуру MAXQ. Даллас: Maxim Integrated Inc. Проверено 26 декабря 2019 г.
  10. ^ Технический справочник ARM, Cortex (изд. v8). ООО "АРМ".
  11. ^ Техническое справочное руководство ARM (tm) (v6, изд. r0). Кембридж: ARM Ltd.
  12. ^ Руководство по техническому обслуживанию PDP-8L (PDF) . Мейнард Массачусетс: Digital Equipment Corp., 1970. Архивировано (PDF) из оригинала 22 апреля 2015 г. Проверено 26 декабря 2019 г.
  13. ^ Руководство по оборудованию Alto (PDF) . Ксерокс. 1976. Архивировано (PDF) из оригинала 7 декабря 2010 г.
  14. ^ «МИКРОПРОГРАММИРОВАННЫЕ И ПРОВОДНЫЕ БЛОКИ УПРАВЛЕНИЯ;» . www.cs.binghamton.edu . Архивировано из оригинала 30 апреля 2017 г. Проверено 17 февраля 2017 г.
  15. ^ Уильямс, РД; Кленке, Р.Х.; Эйлор, Дж. Х. (май 2003 г.). «Обучение компьютерному дизайну с использованием виртуального прототипирования». Транзакции IEEE по образованию . 46 (2): 296–301. Бибкод : 2003ITEdu..46..296W. дои : 10.1109/te.2002.808278. ISSN  0018-9359.
  16. ^ Баркалов, Александр (2009). Логический синтез для устройств управления на базе автомата / Александр Баркалов и Лариса Титаренко . Берлин: Шпрингер. ISBN 978-3-642-04308-6.
  17. ^ Вишневский, Ремигиуш (2009). Синтез композиционных микропрограммных блоков управления программируемыми устройствами . Зелёна-Гура: Зелёногурский университет. п. 153. ИСБН 978-83-7481-293-1.