Почему больше транзисторов = больше вычислительной мощности?

43

Согласно Википедии, вычислительная мощность тесно связана с законом Мура:

http://en.wikipedia.org/wiki/Moore's_law

Количество транзисторов, которые можно недорого разместить на интегральной схеме, удваивается примерно каждые два года. Эта тенденция продолжается уже более полувека и, как ожидается, не прекратится до 2015 года или позже. Возможности многих цифровых электронных устройств тесно связаны с законом Мура: скорость обработки, объем памяти, датчики и даже количество и размер пикселей в цифровых камерах. Все они улучшаются с (примерно) экспоненциальной скоростью, а также.

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

Oli
источник
10
Больше транзисторов = больше параллелизма
Тоби Джаффи
2
Это правда, независимо от того, сколько ядер у процессора.
Томас О
1
Да. Больше транзисторов означает, что вы можете установить больше параллельных исполнительных блоков. Большой кеш. Более глубокие трубопроводы.
Каз
1
Кеш большой. Я думаю, что доля кремниевой недвижимости, предназначенной для кэширования, увеличивается. Большая часть производительности современных процессоров связана с кэшированием, и кэширование работает только при наличии локальности, но чем больше кэши, тем более требовательным является локальность (более крупные приложения с более дурацкими образцами доступа к памяти все еще ускоряются).
Каз
2
Подумайте только о множителе. Имея достаточное количество транзисторов, вы можете использовать полную справочную таблицу и выполнить полное умножение за один шаг. С меньшим количеством транзисторов вы должны делать такие вещи, как повторное добавление.
Дэвид Шварц

Ответы:

29

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

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

JustJeff
источник
19

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

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

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

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

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

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

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

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

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

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

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

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

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

Вышесказанное может быть утомительным, но не исчерпывающим!

Пол А. Клейтон
источник
2
Отличный ответ от нового парня!
Коннор Вольф
12

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

Томас О
источник
2
Алан Кей подсчитал, что с тех пор, как он работал над Smalltalk в Xerox PARC, мы потеряли 18 лет удвоения транзисторов из-за неправильной архитектуры и неэффективности программного обеспечения, потому что компьютеры, конечно, не так быстры, как предполагалось бы при удвоении транзисторов.
jpc
5

Еще один фактор: по мере того, как вы встраиваете больше транзисторов в заданную область, они становятся меньше, делая их быстрее.

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

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

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

Кэш-память намного быстрее, чем ОЗУ, но что перемещать из ОЗУ в кеш и из кеша обратно в ОЗУ ??? Это опять-таки запатентованная штука, но для реализации снова нужны транзисторы.

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

Это без упоминания многоядерных процессоров и контроллеров доступа к общей памяти / ресурсам.

smashtastic
источник