Вопрос или проблема
Единственная цель транзисторов в ЦПУ заключается в том, чтобы действовать как переключатели, определяющие его набор инструкций? Если да, то почему увеличение количества транзисторов увеличивает его скорость?
На вскидку:
Больше кэша, который быстрее, чем ОЗУ
Больше инструкций SIMD, которые обрабатываются быстрее, чем инструкции с единичными данными
Больше ядер, так что вы можете делать два или более дела одновременно
Больше функциональных блоков, таких как встроенные FPU и несколько ALU
Конвейеры, так что каждое ядро может делать больше действий одновременно
Лучше логика обработки, такая как более сложная логика предсказания переходов
Кен уже кратко изложил некоторые из причин в своем ответе. Чтобы расширить это дальше:
Больше кэша, который быстрее, чем ОЗУ
Очевидно, что БОЛЬШИЕ кэши требуют больше транзисторов. Но с увеличением числа транзисторов у нас также есть возможность использовать более быстрые кэши или больше уровней кэша. Кэши ЦПУ – это просто SRAM, которая обычно состоит из 6 транзисторов (т. е. 6T SRAM). Однако, когда транзисторов становится достаточно, может быть целесообразно использовать более быстрые, но большие ячейки SRAM, состоящие из более чем 6 транзисторов (таких как 8T, 10T SRAM). Но если область кэша слишком велика, то электрические характеристики могут быть затронуты (задержка, пропускная способность, вход/выход…) поэтому добавление кэша L3, L4, L5 где-то дальше помогает. Помните, что первые ЦПУ даже не имели кэша, а некоторые поздние поколения позволяют подключать внешний кэш L1 или L2. L3 не было чем-то известным, но в наши дни современные ЦПУ могут поддерживать расширение кэша L4.
Больше инструкций SIMD, которые обрабатываются быстрее, чем инструкции с единичными данными
Не только SIMD, но и любые типы ускоряющих инструкций. Например современные архитектуры часто имеют блок AES для более быстрых криптоопераций, FMA для лучшего математического вычисления (особенно цифровой обработки сигналов), продвинутые манипуляции с битами, ускорение матриц или виртуализацию для более быстрых виртуальных машин. Поддержка большего количества инструкций означает, что для их декодирования и выполнения требуется больше ресурсов.
Больше ядер, так что вы можете делать два или более дела одновременно
Конвейеры, так что каждое ядро может делать больше действий одновременно
Это довольно ясно.
Больше функциональных блоков, таких как встроенные FPU и несколько ALU
В прошлом не было достаточно площади кристалла для операций с плавающей запятой, поэтому людям приходилось покупать отдельные FPU, если у них были высокие требования к арифметике с плавающей запятой. С значительно большим количеством транзисторов возможно прямо встроить FPU, что значительно ускоряет вычисления с плавающей запятой. Кроме того, современные ЦПУ являются суперкалярными и будут пытаться выполнять несколько операций одновременно, находя независимые данные и вычисляя их заранее, даже если поток инструкций линейный и последовательный. Чем больше процессов они могут выполнять параллельно, тем быстрее они будут. Для этого ЦПУ может иметь несколько ALU, и ALU может иметь несколько исполнительных единиц. Если, например, ЦПУ имеет 5 сумматоров по сравнению с 4 в предыдущем поколении, то оно уже работает на 25% быстрее в самых оптимистичных условиях без изменения тактовой частоты. Более сложные ЦПУ даже используют выполнение не по порядку (что характерно для большинства современных высокопроизводительных ЦПУ). Большее количество транзисторов для декодера инструкций и фронт-энда также позволяет добавлять больше функций: декодировать несколько инструкций параллельно, переименовывать больше регистров, позволять устранение mov…
Лучше логика обработки, такая как более сложная логика предсказания переходов
Операции обычно могут выполняться различными способами. Если у вас больше транзисторов, у вас будет больше ресурсов для использования более быстрой технологии. Некоторые простые примеры:
Сдвиг битов:
Простой сдвигатель создается последовательным соединением триггеров.
Для этого требуется всего один триггер на бит, следовательно, он чрезвычайно компактный. Но он требует одного такта для сдвига влево или вправо на один бит. Поэтому микроконтроллеры и небольшие встроенные ЦПУ имеют только команды для сдвига на один. Смотрите
Является ли логический сдвиг вправо более быстрым в AVR?
Что быстрее: x<<1 или x<<10?
Когда у вас больше транзисторов, вы можете перейти на барабанный сдвигатель. Теперь ЦПУ может сдвигать биты за один такт стоимостью в сотни или тысячи транзисторов.
Сложение:
Простой сумматор также создается путем соединения полных сумматоров последовательно. Таким образом, N-битный сумматор нуждается в N тактах, чтобы закончить свою работу, что определенно не то, чего ожидают от ЦПУ.
С большим количеством транзисторов мы можем ускорить сложение, предвычисляя переносы с помощью сумматора с предсказанием переноса или сумматора со сбережением переноса. Полные сумматоры по-прежнему используются, но для блока предвычисления переноса требуется гораздо больше места.
То же самое относится к другим блокам, таким как умножители, делители, планировщики… Например, мы можем выполнять умножения чрезвычайно быстро за один такт, используя комбинированную логику. Вы можете увидеть несколько простых примеров в вопросе о 3-битных умножителях – как они работают?. Но количество транзисторов, необходимое для этого, будет расти в квадрате ширины входа, поэтому малые ЦПУ с умножителями используют последовательную логику, чтобы сэкономить много места для умножителя:
Старые архитектуры умножителей использовали сдвигатель и аккумулятор для суммирования каждого частичного произведения, часто одно частичное произведение за цикл, чем жертвовали скоростью ради площади кристалла. Современные архитектуры умножителей используют (Модифицированный) алгоритм Бауха-Ули, деревья Уоллеса или умножители Да́дда для суммирования частичных произведений за один цикл. Производительность реализации дерева Уоллеса иногда улучшается за счет модифицированного кодирования Бута одного из двух множителей, что уменьшает количество частичных произведений, которые необходимо суммировать.
Как только у вас есть огромный запас транзисторов, вы даже можете использовать комбинационную логику для выполнения FMA, что требует намного больше ресурсов, чем умножитель.
Современные компьютеры могут содержать выделенный MAC, состоящий из умножителя, реализованного в комбинационной логике, за которым следует сумматор и регистр аккумулятора, который хранит результат. Выход регистра поступает обратно на один вход сумматора, так что на каждом такте сумма выходного значения умножителя добавляется к регистру. Комбинационные умножители требуют большого количества логики, но могут вычислить произведение гораздо быстрее, чем метод сдвига и сложения, характерный для более ранних компьютеров. Операция умножения и сложения.
Если вам интересно такое, я настоятельно рекомендую книгу «Элементы вычислений» Ноама Нисана и Симона Шокена (по крайней мере, первая половина). После её изучения вы сможете ответить на свой вопрос в деталях с полным пониманием вовлечённых частей.
Сопутствующий сайт на самом деле имеет несколько образцов глав и заметок. Это очень доступная книга. Я сам изучал её без проблем, а затем прошёл совершенно новый курс в своем университете, который использовал её в качестве основного учебника.
Простой ответ заключается в том, что большее количество транзисторов не делает остальные быстрее, но вместо выполнения одного действия за период времени, теперь мы можем делать два (с некоторыми ограничениями).
Увеличение количества транзисторов обычно достигается за счет их уменьшения, что позволяет им располагаться ближе друг к другу, что уменьшает время распространения сигнала.
Ответ или решение
Увеличение количества транзисторов в чипе и его влияние на скорость работы процессора
Увеличение количества транзисторов на микропроцессоре, безусловно, является одним из основных факторов, способствующих повышению его производительности. Однако стоит отметить, что основной функцией транзисторов является не только выполнение роли переключателей, кодирующих набор инструкций процессора. Давайте рассмотрим, какие именно аспекты увеличения числа транзисторов влияют на скорость работы чипа и как они взаимодействуют друг с другом.
1. Кэш-память
Увеличение транзисторов открывает возможность создания более крупных и быстрых кэш-памятей. Кэш, использующий статическую память SRAM, требует значительного количества транзисторов. Более высокий этаж кэша (например, L3, L4, L5) позволяет не только хранить больше данных, но и использовать более быстрые конструкции кэша (например, 8T или 10T SRAM), что приводит к снижению задержек при доступе к данным. Современные процессоры способны адаптироваться к увеличению объема кэша, что напрямую влияет на скорость выполнения программ.
2. SIMD и специализированные инструкции
Увеличенное количество транзисторов позволяет реализовывать сложные наборы SIMD (Single Instruction, Multiple Data) инструкций и специализированных блоков, таких как единицы для криптографии или обработка сигналов. Это улучшает производительность, позволяя обрабатывать несколько данных одновременно, что, в свою очередь, значительно увеличивает скорость выполнения множества вычислений.
3. Многоядерные архитектуры
Возможность интеграции большего числа ядер на одном чипе также является одним из результатов увеличения транзисторов. Больше ядер означает, что процессор может выполнять несколько потоков вычислений одновременно, что значительно улучшается при параллельной обработке задач.
4. Параллелизм и конвейеризация
Современные процессоры обладают функциями конвейеризации, благодаря которым каждое ядро может обрабатывать несколько инструкций одновременно на разных этапах. Увеличение количества транзисторов позволяет добавлять дополнительные функциональные блоки, такие как ALU (арифметико-логические устройства), что увеличивает количество операций, выполняемых за один цикл.
5. Специализированные функциональные блоки
С увеличением числа транзисторов появляется возможность интеграции специализированных функциональных блоков, таких как FPUs (блоки с плавающей точкой) и ускорители для специализированных операций, что улучшает производительность в областях, требующих высоких вычислений. Это позволяет выполнять вычисления быстрее и эффективнее, реже прибегая к основной памяти.
6. Совершенствование логики обработки
При наличии большего количества транзисторов становится возможной реализация более продвинутой логики обработки, например, более точного предсказания ветвлений. Такая технология позволяет процессору заранее знать, какие инструкции имеет смысл выполнять, что тем самым снижает задержки при выполнении программ.
Заключение
Несмотря на то, что увеличение количества транзисторов не увеличивает тактовую частоту существующих транзисторов, оно открывает возможности для выполнения большего количества операций за один такт, благодаря чему чип становится быстрее и эффективнее в целом. Это достигается благодаря созданию более сложных архитектур, повышению уровня параллелизма и интеграции дополнительных функциональных блоков, что в свою очередь резко увеличивает общую производительность процессора. Увеличение области задействования транзисторов остается одним из ключевых элементов современного развития вычислительной техники.