Почти все достижения в скорости компьютера происходят из одной из следующих областей:
Меньшие транзисторы
В результате уменьшения размеров транзисторов возникают две вещи:
- Они физически ближе друг к другу, поэтому время, необходимое для прохождения электрического сигнала от источника к месту назначения, меньше. Таким образом, хотя электрические сигналы не распространяются быстрее, чем 50 лет назад, сейчас они часто перемещаются на более короткие расстояния .
- В микросхему может быть включено больше транзисторов, что означает, что одновременно можно выполнять больше «работы». Чем больше транзисторов добавлено, тем труднее найти для них полезную работу, но используется много хитрых приемов (см. Ниже).
Больше «полезной работы» за инструкцию
Например, в некоторых процессорах отсутствуют инструкции для умножения или деления целых чисел; вместо этого эта задача должна выполняться с медленными программными процедурами. Добавление команд умножения и деления значительно ускоряет процесс. Добавление инструкций с плавающей запятой может ускорить работу программного обеспечения, для которого требуются числа с плавающей запятой.
Важным способом сделать больше «полезной работы» для каждой инструкции является увеличение размера слова . Процессоры, которые могут выполнять операции с 32-разрядными числами, часто требуют гораздо меньше инструкций для выполнения той же задачи, что и 16-разрядные или 8-разрядные процессоры.
Некоторые процессоры поддерживают инструкции, выполняющие несколько операций одновременно, в частности инструкции, выполняющие одну и ту же операцию с несколькими элементами данных ( SIMD ).
Больше инструкций за цикл
«Цикл тактов» - это то, как процессор переходит из своего текущего состояния в следующее состояние. В некотором смысле это самая маленькая единица работы, которую процессор может выполнять за один раз. Однако количество тактов, которое занимает конкретная инструкция, зависит от конструкции процессора.
С появлением конвейерных процессоров стало возможно, что отдельные инструкции «перекрываются», то есть можно начинать до завершения предыдущего. Однако некоторые инструкции могут сделать недействительной следующую инструкцию, которая не будет известна до тех пор, пока следующая команда не выполнится частично, поэтому все может стать сложным. (Конвейерные процессоры включают логику, чтобы убедиться, что все работает нормально, но характеристики производительности более сложные.)
Суперскалярные процессоры выводят это на следующий уровень, буквально позволяя выполнять две инструкции одновременно, а выполнение в неупорядоченном порядке продвигает его еще на один шаг, позволяя выполнять инструкции не по порядку. Эти функции требуют анализа потока инструкций, выяснения, какие инструкции не конфликтуют друг с другом.
Хотя есть и другие подобные приемы (например, прогноз ветвления , умозрительное выполнение ), более важна общая картина:
- каждая инструкция занимает определенное количество тактов для завершения (не обязательно постоянная)
- но одновременно могут выполняться несколько инструкций
- так что есть измеримые « инструкции за цикл », которые> 1 для процессоров высокого класса
- но это очень сильно зависит от рабочей нагрузки
Больше циклов в секунду
Другими словами, более высокая тактовая частота . Увеличение тактовой частоты не только увеличивает генерируемое тепло, но также требует гораздо более дисциплинированной конструкции микросхемы, поскольку для стабилизации схемы требуется меньше времени. Мы получили много пробега от этого до 2000-х годов, когда мы достигли некоторых практических ограничений.
Данные в нужном месте в нужное время
Несмотря на то, что компоненты внутри ЦП стали все ближе и ближе друг к другу из-за сокращения транзисторов, ЦП и ОЗУ все еще находятся на расстоянии 5-10 см друг от друга. Если инструкции требуется что-то из ОЗУ, эта инструкция не займет 5 или 6 циклов, она займет около 200. Это проблема узкого места фон Неймана .
Наше главное оружие против этого - тайник . Данные, к которым недавно обращались, с большей вероятностью будут снова доступны, поэтому они хранятся в специальной памяти (называемой кэш-памятью), которая находится внутри чипа ЦП, что делает их доступ к ним намного быстрее.
Однако другие методы (такие как конвейерная обработка и предсказание ветвлений ) помогают, позволяя процессору выполнять полезную работу, ожидая поступления данных, а также предсказывая, какие данные могут скоро понадобиться.
Несколько и / или специализированных процессоров
Написание программного обеспечения для одного процессора намного проще, чем для нескольких процессоров. Однако иногда преимущества производительности / стоимости / энергопотребления оправдывают себя.
Кроме того, определенные процессоры особенно хорошо подходят для определенных задач. Например, графические процессоры специально предназначены для расчетов, необходимых для рендеринга 2D и 3D графики и эффектов.
Многоядерные процессоры - это, по сути, несколько процессоров на одном чипе.