Файл: Процессор персонального компьютера. Назначение, функции, классификация процессоров.pdf
Добавлен: 01.04.2023
Просмотров: 478
Скачиваний: 2
4.3 Тактовая частота
Как правило, все те операции, которые мы описали в разделе 2 данной курсовой работы процессор выполняет с некоторой скоростью, задаваемой внешним для него устройством, называемым «генератор тактовой частоты». Данное устройство с определенной частотой выдает импульсы, запускающие в процессоре определенные действия. Чем выше эта «тактовая частота», тем быстрее процессор может обрабатывать данные. Ранее тактовая частота процессоров измерялась в мегагерцах, то есть, в миллионах импульсов в секунду, а теперь – в гигагерцах, в миллиардах импульсов.
Если представить себе, что наш процессор выполняет одну (любую) команду за один такт, то данное число импульсов будет точно соответствовать количеству операций, выполняемых процессором в секунду. Однако для современных процессоров это практически полностью неверно.
Во-первых, современные процессоры многоядерные, то есть, могут выполнять несколько команд одновременно за один такт. И даже внутри одного ядра команды часто выполняются параллельно – пока одна команда читает данные из памяти, вторая может выполняться в АЛУ, и так далее.
Из-за того, что современные процессоры выполняют несколько команд сразу, возникает проблема предсказания переходов – если процессор, например, встречает команду «перейти, если в регистре EAX ноль», то он не знает, произойдет этот переход или нет – ведь когда он встретил данную команду, еще несколько команд до нее не успели выполниться до конца, и значение регистра EAX пока неизвестно. Здесь существует несколько вариантов – сначала выполнить все команды, полностью очистив конвейер, а затем уже двигаться дальше, попробовать предугадать, произойдет переход или нет (если верно предугадать не получилось, конвейер команд также придется полностью очистить), либо просто выполнять команды и для случая, если переход случится, и для случая, если нет (в итоге, в любом случае придется выбросить половину команд).
В связи с этим становится понятно, что для современных процессоров тактовая частота не является чем-то определяющим скорость процессора, как это было ранее (например, в прошлом, когда тактовая частота процессора увеличилась с 40 МГц (80486) до 100 МГц (80586) – это было очень заметно). В современном мире, как правило, тактовая частота составляет несколько гигагерц, и если и увеличивается, то очень незначительно.
Поэтому если мы будем сравнивать тактовую частоту, то желательно сравнить ее у достаточно близких семейств компьютеров, чтобы избежать влияния на производительность множества других факторов. Например, возьмем для сравнения предпоследнее и последнее поколения процессоров от Intel:
Таблица 1. Тактовые частоты процессоров Intel [17]
|
Предпоследнее поколение (восьмое) |
Последнее поколение (девятое) |
||
|
Модель процессора |
Тактовая частота |
Модель процессора |
Тактовая частота |
|
Core i7 8700K |
3,70 ГГц |
Core i7 9700K |
3,60 ГГц |
|
Core i5 8600K |
3,60 ГГц |
Core i5 9600K |
3,70 ГГц |
|
Core i3 8350K |
4,00 ГГц |
Core i3 9350K |
4,00 ГГц |
Исходя из данной таблицы, можно сделать следующие выводы:
- Частота процессоров практически не изменяется – она составляет от 3,60 до 4,00 ГГц;
- При смене поколения она также не изменяется – лишь увеличивается или уменьшается на незначительную величину – 0,1 ГГц;
- Чем больше у процессора ядер (и различных других возможностей) – то есть, чем выше он в таблице, тем меньше у него тактовая частота. Это связано с тем, что для параллельной работы всех этих дополнительных ядер требуются дополнительные ресурсы.
Таким образом, можно резюмировать, что если ранее тактовая частота являлась основным параметром при выборе процессора, то сейчас она практически не играет роли, так как подошла к своему пределу. Возможно, она играет роль в мобильных процессорах, где важна энергоэффективность и тепловыделение, но в обычных персональных компьютерах она практически не изменяется.
4.4 Число ядер
После того, как тактовая частота процессоров подошла к своему теоретическому пределу, внимание разработчиков оказалось приковано к другому способу повышения производительности – увеличению числа ядер процессора.
Очевидно, что чем больше ядер будет находиться в процессоре, тем больше параллельных операций он сможет выполнять. Однако появляются и два существенных ограничения:
- Программы (в том числе операционные системы) нужно специально проектировать для работы с многоядерными процессорами. Они должны создавать несколько процессов/потоков, которые могут выполняться параллельно, а это не всегда возможно – иногда по причине того, что программа довольно старая, а иногда просто по природе задачи;
- Для обеспечения одновременной работы нескольких процессоров необходимо предусмотреть какие-то механизмы взаимодействия между ними, хотя бы одновременную работу с одной и той же памятью. Из-за этого скорость работы каждого ядра может упасть, что мы видели в пункте 4.1. В более мощных серверных процессорах Intel, например, процессоре Intel Xeon E7-8890 v4, у которого имеется 24 ядра, базовая тактовая частота составляет всего 2,2 ГГц.
Резюмируя вышесказанное, можно сделать вывод, что очень много ядер – тоже не всегда хорошо – тогда все процессорное время уйдет на обеспечение взаимодействия между ними.
До последнего времени по данному критерию лидировала фирма Intel – если не принимать во внимание серверные процессоры, то наиболее «многоядерным» являлся ее процессор Intel Core i9-9980XE, в котором находилось 18 ядер. Однако в прошлом (и этом году) ее конкурент – фирма AMD существенно вырвалась вперед с новой архитектурой процессоров Zen, представив вначале процессор с 32 ядрами, а затем и с 64 [5]. Доля AMD на рынке процессоров сразу же довольно сильно выросла [13].
Делая вывод – можно сказать, что увеличение числа ядер в процессоре – это довольно перспективное направление, однако здесь нужно решить задачу организации быстрого взаимодействия между большим количеством ядер. Чем лучше будет решена данная задача, тем больше ядер можно будет поместить в процессор, и тем больше задач он сможет выполнять параллельно.
4.5 Разрядность данных процессора
Под разрядностью данных процессора подразумевают число бит данных, которые процессор может за один раз получить от памяти или внешнего устройства. То есть, если опускаться на уровень схемотехники, это число «ножек» микросхемы, по которым передаются данные.
Ранее данный параметр имел очень большое значение, так как увеличение разрядности данных в два раза означает существенное увеличение скорости работы. Например, если у нас была разрядность
в 4 бита, а стала 8 бит, это означает что для теперь мы можем передать 8 бит за один цикл обращения с памятью (допустим, один такт), в то время как в первом случае понадобилось бы минимум два такта – это двойное ускорение.
Именно поэтому, в прошлом, разрядность данных процессоров достаточно быстро увеличивалась – например, в первом процессоре
Intel 4004 она составляла 4 бита, в Z80 – уже 8 бит, в Intel 8086 – 16,
в Intel 80586 – 32, а сейчас – в большинстве компьютеров – уже 64. Довольно сложно найти компьютер, выпущенный за последние пять лет, который был бы не 64-разрядным (в части данных).
Однако дальнейшего перехода – с 64-битных процессоров на
128-битные не происходит, и в ближайшее время вряд ли произойдет. Все дело в том, даже при наличии 64-битных данных, программист может адресовать числа от 0 до
- очень большого числа, которого хватает в 99,9% случаев. Кроме того, если вдруг чисел такого размера все же не хватит, никто не мешает работать и с большими числами – при этом придется обращаться к памяти больше одного раза, однако учитывая, что нужно это крайне редко – это нормально. С другой стороны, при повсеместном переходе на 128-битные процессоры произойдет их резкое усложнение (в два раза больше проводов с данными), в то время как такой размер чисел практически никому не нужен.
Исходя из этого можно сделать вывод, что современные процессоры по данному параметру сравнивать бесполезно – практически все они 64-битные. Однако для более старых процессоров (которым 10 и более лет) это имеет смысл – на них могут не работать современные программы, рассчитанные как раз на использование 64-битных данных.
4.6 Разрядность адреса процессора
Из предыдущего пункта мы знаем, что у современных процессоров чаще всего 64 линии данных. Кажется логичным, что и линий адресов, позволяющих адресовать память также можно сделать 64 – тогда мы сможем адресовать
байт памяти. Однако если перевести это в привычные
нам гигабайты – мы получим
гигабайт, или 16 экзабайт. Памяти такого объема нет даже в самых современных и производительных серверах [11], тем более в персональных компьютерах.
По этой причине производители процессоров никогда не делают полноценной поддержки 64 бит адреса. Если посмотреть на сайте производителя, то можно увидеть, что со временем количество адресуемой памяти в персональных компьютерах все же увеличивалось, однако оно даже близко не приближается к экзабайту:
Таблица 2. Максимальный объем памяти для процессоров Intel [17]
|
Модель процессора |
Год производства |
Максимальный объем адресуемой памяти |
|
Intel Core i7-9700K |
2018 |
128 гигабайт ( |
|
Intel Core i7-8700K |
2017 |
128 гигабайт ( |
|
Intel Core i7-7700K |
2017 |
64 гигабайта ( |
|
Intel Core i7-6700K |
2015 |
64 гигабайта ( |
|
Intel Core i7-5700HQ |
2015 |
32 гигабайта ( |
|
Intel Core i7-4700HQ |
2013 |
32 гигабайта ( |
Исходя из данной таблицы, можно видеть, что объем доступной адресуемой памяти для процессоров Intel постепенно растет (примерно вдвое каждые 2,5 года), однако даже сейчас, в 2019 году, он составляет
байт, что очень далеко от теоретического предела в
байт. Это огромный объем, который никто не может себе позволить.
Обращать внимание на данную характеристику стоит, если вы планируете собрать мощный персональный компьютер, выжав из него все соки. Однако при этом он получится очень дорогим. Можно сказать, что данная характеристика очень редко становится «бутылочным горлышком», ограничивающим применение процессора, однако знать о ней нужно.
4.7 Разрядность регистров процессора
Хотя практически все современные процессоры являются
64-разрядными, то есть, умеют за одно обращение к памяти читать 64 бита данных, это не значит, что в процессоре не может быть регистров и команд, работающих с большими объемами данных. Да, при этом придется обратиться к памяти несколько раз, однако если чаще всего работать с внутренними регистрами процессора, а в память сохранять только конечный результат, то несколько обращений к памяти практически не повлияют на быстродействие программы.
С тех пор, как процессоры стали 64-битными, и в 1997 году появились первые 64-битные регистры (в процессорах фирм Intel и AMD они называются регистрами MMX, от MM0 до MM7), произошло еще несколько «увеличений разрядности регистров»:
- В 1999 году были предложено расширение системы команд под названием SSE, которое добавляло процессору поддержку 128-битных регистров, под названием XMM0-XMM15;
- В 2008 году система команд была снова расширена. Были предложены новые регистры YMM0-YMM15 размером в 256 бит, и оставлена возможность дальнейшего их увеличения до 1024 бит;
- В 2013 году система команд была расширена, и введены регистры размером 512 бит. Их стало уже 32 – от ZMM0 до ZMM31. Однако на текущий момент данная система команд поддерживается лишь в особой «X-серии» процессоров Intel, например, в
процессоре Intel Core i9-9980XE [15].
Исходя из этого можно видеть, что несмотря на то, что современные процессоры могут обмениваться с памятью лишь по 64 бита за раз, система команд позволяет работать с данными по 512 бит. Чтобы загрузить или сохранить подобные данные нужно минимум 8 тактов, что довольно медленно, однако затем с ними можно очень быстро работать – конечно, если задача это позволяет.
Довольно мало задач требует таких огромных чисел (по 512 бит), либо параллельной обработки множества мелких данных одновременно (например, есть команды, которые могут работать с этим регистром в 512 бит как с восемью регистрами по 64 бита одновременно). Например, это может быть расчет хешей, или перебор вариантов какой-либо математической задачи, например, гипотезы Коллаца [10]. Однако, чаще всего, обычному пользователю данные виды команд никогда не пригодятся.
байт)
байт)
байт)