Страницы

четверг, 15 июля 2021 г.

Эволюция процессоров архитектуры x86

Если глубоко не погружаться в подробности, то архитектура x86 была коммерческим продуктом ещё в конце 1970-ых годов в виде 8-ми битного процессора (CPU). С соотношением сокет/процессор/ядро/поток – 1:1. Со временем, вместе с развитием технологий чипов, понятия размывались. Реальное положение дел остается таким, что все упирается в пространство. С точки зрения транзисторов – это обозначает плотность. Наверняка, многие слышали про закон Мура, который гласит, что число транзисторов в микрочипе удваивается каждые два года, а стоимость компьютера снижается на половину. Вопрос достижения предела закона Мура – это предмет длительных дебатов, но тем не менее он остаётся глубоким технологическим знатоком.

За годы развития вычислительной техники, процессоры (CPU) проделали огромный путь и совершили переход от отношения 1:1 к 1:много. Далее мы рассмотрим особенности современной архитектуры вокруг таких понятий как сокеты, процессоры, ядра и потоки.


Сокет (Socket).

На самом базовом уровне находится материнская плата, не способная ни на что без чипа процессора, который должен быть вставлен в специальный разъем – сокет (Socket). Более корректный термин – сокет процессора (CPU Socket). Современные блейд-серверы, как правило, используют материнские платы с двойным сокетом (Dual-Socket) в лезвиях, хотя встречается и оборудование совсем другого класса, такое как HP DL-980 – с восьмью сокетами. Отдельный большой вопрос, мимо которого пройти нельзя – это неунифицированный доступ к памяти (Non-Uniform Memory Access, NUMA). Узел NUMA не связан с процессором, так как представляет собой связь между сокетом процессора и ближайшим банком памяти.


Процессор (CPU).

Центральная вычислительная единица – процессор (CPU) – это самый широко применяемый термин, достаточно часто – неправильно, так как многие под процессором подразумевают сокеты, ядра и даже потоки. Фактически соотношение между сокетом и процессором остаётся 1:1, вне зависимости от того, как используется термин. В конце концов, процессор – это часть интегрированного кремния в сокет процессора на материнской плате.


Ядро (Core).

Начиная с 2005/2006-го годов Intel и AMD начали выпускать процессоры с несколькими единицами обработки. В данном случае – это единицы предоставляющие возможность выполнять одну инструкцию от операционной системы. Таким образом, процессор с 10-ю ядрами способен параллельно выполнять 10 инструкций. К сожалению, в виду физической архитектуры, производительность увеличилась не пропорционально количеству ядер, так как в игру вступает фактор расположения – процессора (CPU) со связанными ядрами и памятью. Набор инструкций, приходящий от операционной системы, установленной на системе с несколькими процессорами, не видит единый кэш процессора (CPU Cache) и сталкивается с другими проблемами производительности из-за расположения.


Поток (Thread).

Поток (Thread) – это просто очередь для инструкций операционной системы. Путаница обычно связана с термином гипертрединг (Hyperthreading), который существует с 1980-ых. А Intel не выпускала свой чип HT (Hyperthread) до Pentium 4 (примерно 2002-ой год). Если максимально все упростить, то включение HT разрешает два потока (или очереди) к ядру. Таким образом, включение HT на системе с 10-ю ядрами обеспечит 20 потоков. Система по-прежнему сможет выполнять 10 инструкций операционной системы за цикл, но при этом сможет помещать 20 инструкций в очередь. Это предоставляет дополнительный уровень эффективности, позволяя совершать множество событий постановки и выемки инструкций из очереди. HT способен предоставить до 30% прироста производительности за счёт устранения задержки (улучшения эффективности). Однако никакой магии здесь нет и это всего лишь приближает систему к теоретическому максимуму числа инструкций, которые могут выполняться в указанный отрезок времени на процессоре/ядре.


Почему точное определение столь важно.

Рассмотрим пример с esxtop, термин «PCPU» используется для представления потока (а не физического процессора или ядра). Термин «CORE» – это ядро. Если значения PCPU не отображаются, это обозначает, что HT не включен в BIOS/EFI хоста гипервизора ESXi. В некоторых случаях – возможность ориентироваться в архитектуре и ее представлении на конечной системе может быть очень полезным, так как позволит получить представление о том какой процент времени каждый поток выполняется на ядре.


Заключение.

Все вышеперечисленное можно резюмировать следующим образом – архитектура x86 основана на последовательности:

Комментариев нет:

Отправить комментарий