@dauster

Что именно дают миллиарды транзисторов в процессоре для работы программы?

Добрый день!
Возможно, мой вопрос примитивный, но пока не получается найти сколько-нибудь хорошую статью или книгу по теме.
Давно занимаюсь разработкой, но от железа все это время был довольно далек. Недавно задумался, что дают все эти миллиарды транзисторов (обещают уже чуть ли не триллион в перспективе) в CPU?
В-основном, общими словами, пишут, что они косвенно связаны с производительностью - чем больше транзисторов, тем она выше. Но за счет чего?
Понятно, что часть транзисторов - это просто быстрая память (кэш разного уровня). Чем туда больше всего запихаешь, тем быстрее оно будет обработано. Логично. Пишут, что кэша примерно 40% от транзисторов в процессоре, тут более-менее понятно.
Часть образует АЛУ - всякие регистры, сумматоры и прочие логические схемы. Но ведь для этого не нужны миллиарды транзисторов. Тот же сумматор состоит из трех десятков транзисторов всего. Как утилизируются остальные?
Ну и пример: вот есть у меня программа, которая делает простой инкремент числа, допустим. По сути это равносильно тому, что в некий регистр запихали значение и сделали инкремент в цикле, а ля
mov ax, 0
inc ax.
Будет ли данная программа получать какой-то выигрыш от увеличения количества транзисторов на кристалле при равной тактовой частоте процессора и если да, то как?
Ну и еще - буду очень благодарен за доп. информацию (может кто-то подскажет книгу, статью или видео по теме).
Заранее спасибо.
  • Вопрос задан
  • 983 просмотра
Пригласить эксперта
Ответы на вопрос 8
15432
@15432
Системный программист ^_^
1) Больше фич. Всякие AVX, MMX, а также умная конвейеризация, Hyper-Threading, спекулятивное исполнение, предсказание веток - при правильном применении сильно ускоряет вычисление
2) Больше ядер. В один кристалл всё больше процессорных ядер запихивают, можно распараллелить задачи, тоже получим прирост в скорости работы
3) Больше кэш-памяти. Та самая SRAM, которая входит в процессор и тоже состоит из транзисторов. Сильно ускоряет работу с памятью и задержки выполнения инструкций
4) Больше контроллеров. В процы сейчас встраивают всё, что попало - шины данных, контроллер DRAM, PCIE, северный мост, отдельное ядро сопроцессора (Intel ME, AMD PSP), GPU и даже NPU где-то добавляют. Тоже считается за "больше транзисторов".
Ответ написан
nava2002
@nava2002
Инженер
220px-CMOS_Inverter.svg.png
Это элементарная цифровая ячейка "инвертор" - 2 транзистора.
ВСЕ остальные логические и функциональные модули во ВСЕЙ цифровой технике состоят из таких ячеек.
Вот почему чем больше транзисторов тем сложнее чип и тем больше он греется ну и все дальше по списку.
Ответ написан
Steel_Balls
@Steel_Balls
Простой программе типа
mov ax, 0
inc ax.

особой выгоды от увеличения количества транзисторов не будет. В данном случае выгода будет от увеличения частоты процессора и уменьшения расстояния между элементами процессора (физику и скорость света никто не отменял).
Выгода от увеличения транзисторов наступает при многозадачности и сложных программах, когда нагрузка на процессор сильно увеличивается и ему не хватает ресурсов (транзисторов) для того, чтобы перелопатить огромные потоки данных в единицу времени, а так же распараллелить и оптимизировать процессы сложного алгоритма и структур данных. Вот тогда вступают в силу всякие кэши, оптимизации, а для них как раз нужно увеличение транзисторов.
Пример из жизни: что будет работать быстрее и в каких случаях - комп с ОЗУ 1 Мб и одним процессором или с ОЗУ 64 Гб и 8 ядрами (при одинаковой частоте процессора)?
P.S. Отдельно отмечу, что на Луну американцы запускали "Апполоны" с ЭВМ мощностью ниже, чем современный обычный калькулятор. А сейчас мощности смартфона в миллионы раз больше, что позволяет успешно тапать хомяков )
Ответ написан
Комментировать
@pfg21
ex-турист
да, даст ускорение.
на единичных операциях ты ускорения не заметишь :)
ну к примеру
внедрение вычислительного конвейера добились выполнение "инструкции за один такт" вместо "одна инструкция за несколько тактов".
внедрение кешей инструкций и данных увеличилась скорость доступа к данным, к примеру твоя программа "влезает в кеш", и будет выполнятся в нем. а скорость работы с кешем в разы больше чем работа с "обычной" ram.
чтобы эффективнее использовать кеши внедрили паралелизацию внутри процессора суперскалярность.
внедрение предсказателя переходов увеличили скорость работы за счет предзакачки потока команда.

и все эти аппаратные надстройки потребовали огромного количества дополнительных транзисторов в проце. что собственно мы имеем.
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Реальный процессор много-много сложнее чем те, которые мы все когда-то проектировали в институте. Там есть кучи блоков, про которые мы в те времена вообще не слыхали. Читаем про архитектуру современных процессоров. (Видели современный серверный проц? Там лепеха размером с календарик)
Ответ написан
@alexalexes
Чтобы ответить на ваш вопрос, не перелопачивая кучу литературы, достаточно изучить вопрос, что такое суперскалярность.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Автор пишет

Ну и пример: вот есть у меня программа, которая делает простой инкремент числа, допустим. По сути это равносильно тому, что в некий регистр запихали значение и сделали инкремент в цикле, а ля
mov ax, 0
inc ax.
Будет ли данная программа получать какой-то выигрыш от увеличения количества транзисторов на кристалле при равной тактовой частоте процессора и если да, то как?


В данном конкретном случае никаих миллиардов транзисторов не нужно. Задача инкремента
действительно решается на десятках лампочек и реле или если хотите транзисторов.

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

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

Но это метрика очень грубая. Такая же как сжигание каллориев еды в печке для оценки
каллорийности мяса или колбасы.
В общем метрика рабочая но не стоит ее брать за
самую главную.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
В современных процессорах есть значимые отличия от простых архитектур прошлого века.

Для начала - процессоры сейчас мультиядерные. Это быстрее чем несколько CPU.

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

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

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

Вот сюда и уходит.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы