Является ли единственная цель транзисторов в ЦП, которые действуют как переключатели, которые определяют его набор команд? И если так, то почему увеличение количества транзисторов увеличивает его скорость?
Является ли единственная цель транзисторов в ЦП, которые действуют как переключатели, которые определяют его набор команд? И если так, то почему увеличение количества транзисторов увеличивает его скорость?
Ответы:
С верхней части моей головы:
Больше кеша , который быстрее чем RAM
Больше SIMD-инструкций , которые обрабатываются быстрее, чем инструкции с одним данными
Больше ядер , так что вы можете сделать две или более вещи одновременно
Более функциональные блоки, как встроенные в FPU с, и несколько ALU s
Трубопроводы , поэтому каждое ядро может делать больше вещей одновременно
Лучшая логика обработки, как и более сложная логика предсказания ветвлений
Если вам интересно подобные вещи, я настоятельно рекомендую книгу «Элементы вычислений » Ноама Нисана и Шимона Шоккена (по крайней мере, в первой половине). Пройдя через него, вы сможете подробно ответить на свой вопрос с полным пониманием участвующих частей.
На сопутствующем веб-сайте есть несколько примеров глав и заметок. Это очень доступная книга. Я прошел это самостоятельно без проблем, а затем взял новый класс в моем университете, который использовал его в качестве основного текста.
Простой ответ заключается в том, что большее количество транзисторов не позволяет остальным работать быстрее , но вместо того, чтобы делать что-то одно за период времени, мы можем теперь сделать два (с некоторыми ограничениями).
Кен уже суммировал некоторые причины в своем ответе . Чтобы расширить это далее
- Больше кеша , который быстрее чем RAM
Очевидно, для больших кэшей требуется больше транзисторов. Но с большим количеством транзисторов у нас также есть выбор использования более быстрых кэшей . Кэши CPU - это просто SRAM, который обычно состоит из 6 транзисторов (AKA 6T SRAM). Однако при наличии достаточного количества транзисторов, возможно, стоит использовать более быстрые, но более крупные ячейки SRAM, сделанные из более чем 6 транзисторов (например, 8T, 10T SRAM).
- Больше SIMD-инструкций , которые обрабатываются быстрее, чем инструкции с одним данными
Не только SIMD, но и любой тип ускоряющих инструкций. Например, современные архитектуры часто имеют блок AES для более быстрого шифрования / дешифрования, FMA для более качественных математических вычислений (особенно цифровой обработки сигналов) или виртуализацию для более быстрых виртуальных машин. Поддержка большего количества инструкций означает, что для их декодирования и выполнения требуется больше ресурсов
- Больше ядер , так что вы можете сделать две или более вещи одновременно
- Трубопроводы , поэтому каждое ядро может делать больше вещей одновременно
Это вполне понятно
В прошлом не хватало площади для FPU, поэтому люди должны покупать отдельную, если они предъявляют высокие требования к арифметике с плавающей точкой. Благодаря значительно большему количеству транзисторов можно встроить FPU, что значительно ускоряет вычисления с плавающей запятой.
Кроме того, современные процессоры являются суперскалярными и будут пытаться делать несколько вещей одновременно , находя независимые фрагменты данных и вычисляя их раньше, даже если поток инструкций является линейным и последовательным. Чем больше вещей они могут делать параллельно, тем быстрее они будут. Для этого у ЦПУ может быть несколько ALU, а у ALU может быть несколько исполнительных блоков. Например, если процессор имеет 5 сумматоров по сравнению с 4 в предыдущем поколении, то он работает на 25% быстрее в самой оптимистичной ситуации без каких-либо изменений тактовой частоты. Более сложные процессоры даже используют неупорядоченное выполнение (что имеет место для большинства современных высокопроизводительных процессоров)
- Лучшая логика обработки, как и более сложная логика предсказания ветвлений
Операции, как правило, могут быть выполнены различными способами. Если у вас больше транзисторов, у вас будет больше ресурсов для использования более быстрой техники. Несколько простых примеров:
Сдвиг битов:
Простой рычаг переключения осуществляется последовательно подключения триггеров вместе.
Для этого нужен всего один триггер на бит, а значит, очень компактный. Но для сдвига влево или вправо на один бит нужны одни часы. Вот почему микроконтроллеры и небольшие встроенные процессоры имеют только инструкции для смещения на единицу. Видеть
Когда у вас есть больше транзисторов, вы можете перейти на бочкообразную . Теперь процессор может сдвигать биты за один такт стоимостью сотен или тысяч транзисторов.
Дополнение:
То же самое относится и к другим единицам, таким как множители, делители, планировщики ... Например, мы можем очень быстро выполнить умножение за один такт, используя комбинационную логику . Вы можете увидеть несколько простых примеров в вопросе 3-битных множителей - как они работают? , Но необходимые транзисторы вырастут до квадрата ширины ввода, поэтому небольшие процессоры с множителем вместо этого используют последовательную логику, чтобы сэкономить много места для множителя:
В старых архитектурах множителей использовались сдвиг и накопитель для суммирования каждого частичного продукта, часто одного частичного продукта за цикл, компенсируя скорость для площади матрицы. Современные архитектуры умножителей используют (модифицированный) алгоритм Боуг-Вули, деревья Уоллеса или множители Дадды для сложения частичных произведений в одном цикле. Производительность реализации дерева Уолласа иногда улучшается за счет модифицированного Booth-кодирования одного из двух мультипликатов, что уменьшает количество частичных произведений, которые должны быть суммированы
https://en.wikipedia.org/wiki/Binary_multiplier#Implementations
Если у вас есть огромный пул транзисторов, вы даже можете использовать комбинационную логику для создания FMA, который требует гораздо больше ресурсов, чем множитель
Современные компьютеры могут содержать выделенный MAC, состоящий из умножителя, реализованного в комбинационной логике, за которым следуют сумматор и регистр аккумулятора, в котором хранится результат. Выходной регистр поступает обратно на один вход сумматора, так что на каждом тактовом цикле выходной сигнал умножителя добавляется в регистр. Комбинационные множители требуют большого количества логики, но могут вычислять продукт намного быстрее, чем метод смещения и добавления, типичный для более ранних компьютеров.