Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Микроархитектура Intel Core

В компьютерной технике , микроархитектуре , называемые также компьютерная организация и иногда сокращенно μarch или uarch , это то , как данный набор команд архитектура (ISA) реализована в конкретном процессоре . [1] Данная ISA может быть реализована с различными микроархитектурами; [2] [3] реализации могут отличаться из-за различных целей данного дизайна или из-за изменений в технологии. [4]

Компьютерная архитектура - это сочетание микроархитектуры и архитектуры набора команд.

Отношение к архитектуре набора команд [ править ]

Микроархитектура, организованная вокруг единого автобуса

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

Микроархитектура машины обычно представлена ​​в виде (более или менее подробных) диаграмм, которые описывают взаимосвязи различных микроархитектурных элементов машины, которые могут быть чем угодно, от отдельных вентилей и регистров до полных арифметико-логических устройств (ALU) и даже большего размера. элементы. Эти диаграммы обычно разделяют канал данных (где размещаются данные) и путь управления (который, можно сказать, управляет данными). [5]

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

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

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

Аспекты [ править ]

Микроархитектура Intel 80286

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

Исполнительные блоки также важны для микроархитектуры. Блоки выполнения включают в себя арифметико-логические блоки (ALU), блоки с плавающей запятой (FPU), блоки загрузки / сохранения, предсказание ветвлений и SIMD . Эти блоки выполняют операции или вычисления процессора. Выбор количества исполнительных устройств, их задержки и пропускной способности - центральная задача проектирования микроархитектуры. Размер, время ожидания, пропускная способность и возможность подключения памяти в системе также являются решениями микроархитектуры.

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

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

Микроархитектурные концепции [ править ]

Циклы обучения [ править ]

Для запуска программ все одно- или многочиповые процессоры:

  1. Прочтите инструкцию и расшифруйте ее
  2. Найдите любые связанные данные, которые необходимы для обработки инструкции
  3. Обработать инструкцию
  4. Запишите результаты

Цикл команд повторяется непрерывно, пока не будет отключено питание.

Многоцикловая микроархитектура [ править ]

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

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

В логике управления комбинация счетчика циклов, состояния цикла (высокий или низкий) и битов регистра декодирования команд точно определяют, что должна делать каждая часть компьютера. Чтобы разработать логику управления, можно создать таблицу битов, описывающую сигналы управления для каждой части компьютера в каждом цикле каждой инструкции. Затем эта логическая таблица может быть протестирована в программном симуляторе, выполняющем тестовый код. Если логическая таблица помещается в память и используется для запуска реального компьютера, она называется микропрограммой . В некоторых компьютерных проектах логическая таблица оптимизируется в форму комбинационной логики, созданной из логических вентилей, обычно с использованием компьютерной программы, которая оптимизирует логику. Ранние компьютеры использовали специальную логику для управления до Мориса Уилксаизобрел этот табличный подход и назвал его микропрограммированием. [6]

Увеличение скорости выполнения [ править ]

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

Выбор набора инструкций [ править ]

Наборы инструкций с годами изменились: от изначально очень простых до иногда очень сложных (в различных отношениях). В последние годы в моде архитектуры load-store , типы VLIW и EPIC . Архитектуры, которые имеют дело с параллелизмом данных, включают SIMD и Vectors . Некоторые метки, используемые для обозначения классов архитектур ЦП, не являются особенно описательными, особенно метка CISC; многие ранние разработки, ретроактивно обозначаемые как « CISC », на самом деле значительно проще современных процессоров RISC (в нескольких отношениях).

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

Конвейерная обработка инструкций [ править ]

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

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

RISC делает конвейеры меньше и намного проще в построении, четко разделяя каждый этап процесса инструкций и заставляя их занимать одинаковое количество времени - один цикл. Процессор в целом работает как конвейерная линия , причем инструкции поступают с одной стороны, а результаты - с другой. Из-за меньшей сложности классического конвейера RISC конвейерное ядро и кэш инструкций могут быть размещены на кристалле того же размера, который в противном случае поместился бы только в ядро ​​в конструкции CISC. Это была настоящая причина того, что RISC был быстрее. Ранние разработки, такие как SPARC и MIPS, часто работали в 10 раз быстрее, чем решения Intel и Motorola CISC, при той же тактовой частоте и цене.

Трубопроводы никоим образом не ограничиваются проектами RISC. К 1986 году топовая реализация VAX ( VAX 8800 ) была сильно конвейерной конструкцией, немного предшествовавшей первым коммерческим проектам MIPS и SPARC. Большинство современных ЦП (даже встроенных ЦП) теперь являются конвейерными, а микрокодированные ЦП без конвейерной обработки видны только во встроенных процессорах с наиболее ограниченной площадью. [ Необходимые примеры ] Большие машины CISC, от VAX 8800 до современных Pentium 4 и Athlon, реализуются как с микрокодом, так и с конвейерами. Усовершенствования конвейерной обработки и кэширования - это два основных достижения в области микроархитектуры, которые позволили производительности процессора идти в ногу со схемой, на которой они основаны.

Кэш [ править ]

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

В RISC-проектах кеш-память начала добавляться в середине-конце 1980-х, часто всего 4 КБ. Это число со временем росло, и типичные процессоры теперь имеют не менее 512 КБ, в то время как более мощные процессоры поставляются с 1, 2 или даже 4, 6, 8 или 12 МБ, организованными на нескольких уровнях иерархии памяти . Вообще говоря, больший объем кеша означает большую производительность из-за уменьшения простоев.

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

Предсказание ветвления [ править ]

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

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

Суперскаляр [ править ]

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

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

В современных конструкциях часто встречаются две единицы загрузки, одно хранилище (многие инструкции не имеют результатов для сохранения), две или более целочисленных математических единиц, две или более единиц с плавающей запятой и часто какой-либо модуль SIMD . Логика выдачи инструкций усложняется за счет чтения огромного списка инструкций из памяти и передачи их различным исполнительным блокам, которые в этот момент простаивают. Затем результаты собираются и переупорядочиваются в конце.

Выполнение вне очереди [ править ]

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

Зарегистрируйте переименование [ править ]

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

Многопроцессорность и многопоточность [ править ]

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

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

Одним из способов достижения этого параллелизма является использование многопроцессорных систем, компьютерных систем с несколькими процессорами. Когда-то зарезервированные для мэйнфреймов и суперкомпьютеров высокого класса , малые (2–8) многопроцессорные серверы стали обычным явлением для рынка малого бизнеса. Для крупных корпораций распространены крупномасштабные (16–256) мультипроцессоры. Даже персональные компьютеры с несколькими процессорами появились с 1990-х годов.

С дальнейшим уменьшением размера транзисторов, доступным с развитием полупроводниковой технологии, появились многоядерные процессоры , в которых несколько процессоров реализованы на одном кремниевом кристалле. Первоначально использовался в микросхемах, нацеленных на рынки встраиваемых систем, где более простые и небольшие ЦП позволили бы разместить несколько экземпляров на одном кристалле. К 2005 году полупроводниковые технологии позволили производить в больших количествах двойные высокопроизводительные процессоры CMP для настольных ПК . Некоторые проекты, такие как Sun Microsystems " UltraSPARC T1 вернулись к более простому (скаляр, в заказ) конструкции для того , чтобы соответствовать более процессоров на одном кристалле кремния.

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

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

Еще одно усовершенствование - одновременная многопоточность . Этот метод позволяет суперскалярным процессорам выполнять инструкции из разных программ / потоков одновременно в одном цикле.

См. Также [ править ]

  • Устройство управления
  • Аппаратная архитектура
  • Язык описания оборудования (HDL)
  • Параллелизм на уровне инструкций (ILP)
  • Список микроархитектур ЦП AMD
  • Список микроархитектур ЦП Intel
  • Дизайн процессора
  • Потоковая обработка
  • VHDL
  • Очень крупномасштабная интеграция (СБИС)
  • Verilog

Ссылки [ править ]

  1. ^ Руководство по учебной программе для программ бакалавриата в области компьютерной инженерии (PDF) . Ассоциация вычислительной техники. 2004. с. 60. Комментарии к компьютерной архитектуре и организации: Компьютерная архитектура является ключевым компонентом компьютерной инженерии, и практикующий компьютерный инженер должен иметь практическое понимание этой темы ...
  2. ^ Мурдокка, Майлз; Heuring, Винсент (2007). Архитектура и организация компьютера, комплексный подход . Вайли. п. 151. ISBN. 9780471733881.
  3. ^ Клементс, Алан. Принципы компьютерного оборудования (4-е изд.). С. 1–2.
  4. ^ Флинн, Майкл Дж. (2007). «Введение в архитектуру и машины» . Архитектура компьютеров Конвейерная архитектура и проектирование параллельных процессоров . Джонс и Бартлетт. С. 1–3. ISBN 9780867202045.
  5. ^ а б Хеннесси, Джон Л .; Паттерсон, Дэвид А. (2006). Компьютерная архитектура: количественный подход (4-е изд.). Морган Кауфманн. ISBN 0-12-370490-1.
  6. Перейти ↑ Wilkes, MV (1969). «Рост интереса к микропрограммированию: обзор литературы». ACM Computing Surveys . 1 (3): 139–145. DOI : 10.1145 / 356551.356553 . S2CID 10673679 . 

Дальнейшее чтение [ править ]

  • Patterson, D .; Хеннесси, Дж. (2004). Компьютерная организация и дизайн: аппаратно-программный интерфейс . Морган Кауфманн. ISBN 1-55860-604-1.
  • Hamacher, VC; Vrasenic, ZG; Заки, С.Г. (2001). Компьютерная организация . Макгроу-Хилл. ISBN 0-07-232086-9.
  • Столлингс, Уильям (2002). Компьютерная организация и архитектура . Прентис Холл. ISBN 0-13-035119-9.
  • Хейс, JP (2002). Компьютерная архитектура и организация . Макгроу-Хилл. ISBN 0-07-286198-3.
  • Шнайдер, Гэри Майкл (1985). Принципы компьютерной организации . Вайли. С.  6–7 . ISBN 0-471-88552-5.
  • Мано, М. Моррис (1992). Архитектура компьютерной системы . Прентис Холл. п. 3 . ISBN 0-13-175563-3.
  • Абд-эль-Барр, Мостафа; Эль-Ревини, Хешам (2004). Основы компьютерной организации и архитектуры . Вайли. п. 1. ISBN 0-471-46741-3.
  • Гарднер, Дж (2001). «Микроархитектура процессора ПК» . ExtremeTech.
  • Гилрет, Уильям Ф .; Лапланте, Филипп А. (2012) [2003]. Компьютерная архитектура: минималистская перспектива . Springer. ISBN 978-1-4615-0237-1.
  • Паттерсон, Дэвид А. (10 октября 2018 г.). Новый золотой век компьютерной архитектуры . Коллоквиум лауреатов Тьюринга в Беркли, США. ctwj53r07yI.