Что такое сокет в играх
Сокет – происходит от английского слова socket и переводится как разъём или гнездо. Что такое сокет? В общем смысле – это специальное гнездо, куда вставляется какое-то оборудование или усиление. А в игре – это специальное гнездо, куда можно вставить волшебный камень, увеличивающий параметры предмета и дающий ему дополнительные характеристики. Такие возможности очень часто встречаются в MMORPG при улучшении экипировки.
У термина есть несколько значений, и мы разберём самые известные из них.
Как используется в играх?
Шмот в онлайн-играх играет решающую роль. Чем больше параметров и статов даёт меч или броня, тем больше урон или защита. В большинстве случаев эти параметры зафиксированы и их никак нельзя увеличить. Но если в игре есть возможность вставки усилений, а в мече или доспехах есть специальный сокет, значит можно повысить какой-то из параметров. Для этого обычно требуется специальный камень, который можно вставить у кузнеца.
Например, статы ваших доспехов – 105 брони, 10% резиста к магии холода, +15 к силе и есть два свободных гнезда. У вас в инвентаре есть изумруд на +5 к силе и аметист на +2 к хп. Вставляете их в свободные разъёмы, и теперь у доспехов будет +20 к силе и +2 к хп. У персонажа повысится выживаемость и урон.
Возможность усиления вещей через волшебные камни и руны впервые появилась в Diablo. По мере увеличения сложности персонажу выпадали вещи, где было от 1 до 6 гнёзд, в которые можно было вставить различные усиления.
У камней и рун была своя градация качества. Базовые давали небольшую прибавку к статам, зато если соединить два одинаковых типа, можно было получить расходник более высокого качества, дающий прибавку к статам повыше, по сравнению с базовыми.
Такая же система сохраняется и сегодня. Камни делятся на классы, каждый из которых даёт определённую прибавку. Если объединить два одинаковых одного качества, бонусные статы сразу же вырастут.
Вот только у такого усиления один минус – в большинстве игр вставленное усиление обратно вытащить нельзя. Поэтому нужно правильно оценивать свои способности и нужность усиления для персонажа, например, не втыкать + к ловкости, если у вас паладин.
Как используется в жизни?
Socket в реальной жизни – это специальный разъём на материнской плате компьютера для вставки процессора. Если посмотреть на материнскую плату, можно увидеть прямоугольную площадку чёрного или серого цвета с множеством контактов по периметру. В это гнездо вставляется процессор, на который затем надевается кулер (вентилятор) для охлаждения и защиты от перегрева.
Если ваш ПК устарел, процессор можно вынуть и вставить модель поновее, главное, чтобы socket (или количество контактов) материнской платы и процессора совпадал. Иначе они просто друг другу не подойдут.
У разных производителей разное количество контактов в разъёмах. При этом из-за разных технологий нельзя совместить процессор от Intel и материнскую плату от AMD, и наоборот.
Обычно производители наносят специальную маркировку на процессоры и материнские платы, где указывают тип socket. Более подробную информацию о подходящих устройствах можно найти в документации к железу. Мы советуем внимательно читать инструкцию, особенно если вы самостоятельно пробуете собрать компьютер. При несоответствии количества разъёмов материнской платы и процессора ничего работать не будет. А если вы примените силу и принудительно воткнёте проц в гнездо, то вообще всё сломаете.
Как узнать, какой сокет у вас в компьютере, если нет документации? Установите тестирующую программу, например, AIDA64 и CPU-Z – они проведут диагностику и выдадут полную информацию по вашей системе, включая socket.
Примеры
«Купил камень на +100 к урону на ауке дёшево, как раз на мече сокет свободный»
«У этой туники 3 сокета, вставишь в каждый +20% резиста к физическим атакам и никакой дамаг не страшен»
«Какой на твоей материнке сокет? Проц нормальный, CS: GO лагать точно не будет»
Привет, меня зовут Гленн Фидлер и я приветствую вас в своей второй статье из цикла “Сетевое программирование для разработчиков игр”.
В предыдущей статье мы обсудили различные способы передачи данных между компьютерами по сети, и в конце решили использовать протокол UDP, а не TCP. UDP мы решили использовать для того, чтобы иметь возможность пересылать данные без задержек, связанных с ожиданием повторной пересылки пакетов.
А сейчас я собираюсь рассказать вам, как на практике использовать UDP для отправки и приема пакетов.
BSD сокеты
В большинстве современных ОС имеется какая-нибудь реализация сокетов, основанная на BSD сокетах (сокетах Беркли).
Сокеты BSD оперируют простыми функциями, такими, как “socket”, “bind”, “sendto” и “recvfrom”. Конечно, вы можете обращаться к этим функциями напрямую, но в таком случае ваш код будет зависим от платформы, так как их реализации в разных ОС могут немного отличаться.
Поэтому, хоть я далее и приведу первый простой пример взаимодействия с BSD сокетами, в дальнейшем мы не будем использовать их напрямую. Вместо этого, после освоения базового функционала, мы напишем несколько классов, которые абстрагируют всю работу с сокетами, чтобы в дальнейшем наш код был платформонезависимым.
Особенности разных ОС
Для начала напишем код, который будет определять текущую ОС, чтобы мы могли учесть различия в работе сокетов:
В UNIX системах функции работы с сокетами входят в стандартные системные библиотеки, поэтому никакие сторонние библиотеки нам в этом случае не нужны. Однако в Windows для этих целей нам нужно подключить библиотеку winsock.
Вот небольшая хитрость, как можно это сделать без изменения проекта или makefile’а:
Мне нравится этот прием потому, что я ленивый. Вы, конечно, можете подключить библиотеку в проект или в makefile.
Инициализация сокетов
В большинстве unix-like операционных систем (включая macosx) не требуется никаких особых действий для инициализации функционала работы с сокетами, но в Windows нужно сначала сделать пару па — нужно вызвать функцию “WSAStartup” перед использованием любых функций работы с сокетами, а после окончания работы — вызвать “WSACleanup”.
Давайте добавим две новые функции:
Теперь мы имеем независимый от платформы код инициализации и завершения работы с сокетами. На платформах, которые не требуют инициализации, данный код просто не делает ничего.
Создаем сокет
Теперь мы можем создать UDP сокет. Это делается так:
Далее мы должны привязать сокет к определенному номеру порта (к примеру, 30000). У каждого сокета должен быть свой уникальный порт, так как, когда приходит новый пакет, номер порта определяет, какому сокету его передать. Не используйте номера портов меньшие, чем 1024 — они зарезервированы системой.
Если вам все равно, какой номер порта использовать для сокета, вы можете просто передать в функцию “0”, и тогда система сама выделит вам какой-нибудь незанятый порт.
Теперь наш сокет готов для передачи и приема пакетов данных.
Но что это за таинственная функция “htons” вызывается в коде? Это просто небольшая вспомогательная функция, которая переводит порядок следования байтов в 16-битном целом числе — из текущего (little- или big-endian) в big-endian, который используется при сетевом взаимодействии. Ее нужно вызывать каждый раз, когда вы используете целые числа при работе с сокетами напрямую.
Вы встретите функцию “htons” и ее 32-битного двойника — “htonl” в этой статье еще несколько раз, так что будьте внимательны.
Перевод сокета в неблокирующий режим
По умолчанию сокеты находится в так называемом “блокирующем режиме”. Это означает, что если вы попытаетесь прочитать из него данные с помощью “recvfrom”, функция не вернет значение, пока не сокет не получит пакет с данными, которые можно прочитать. Такое поведение нам совсем не подходит. Игры — это приложения, работающие в реальном времени, со скоростью от 30 до 60 кадров в секунду, и игра не может просто остановиться и ждать, пока не придет пакет с данными!
Решить эту проблему можно переведя сокет в “неблокирующий режим” после его создания. В этом режиме функция “recvfrom”, если отсутствуют данные для чтения из сокета, сразу возвращает определенное значение, показывающее, что нужно будет вызвать ее еще раз, когда в сокете появятся данные.
Перевести сокет в неблокирующий режим можно следующим образом:
Как вы можете видеть, в Windows нет функции “fcntl”, поэтому вместе нее мы используем “ioctlsocket”.
Отправка пакетов
UDP — это протокол без поддержки соединений, поэтому при каждой отправке пакета нам нужно указывать адрес получателя. Можно использовать один и тот же UDP сокет для отправки пакетов на разные IP адреса — на другом конце сокета не обязательно должен быть один компьютер.
Переслать пакет на определенный адрес можно следующим образом:
Обратите внимание — возвращаемое функцией “sendto” значение показывает только, был ли пакет успешно отправлен с локального компьютера. Но оно не показывает, был ли пакет принят адресатом! В UDP нет средств для определения, дошел ли пакет по назначению или нет.
В коде, приведенном выше, мы передаем структуру “sockaddr_in” в качестве адреса назначения. Как нам получить эту структуру?
Запишем адрес в следующей форме:
И нужно сделать еще пару преобразований, чтобы привести его к форме, которую понимает “sendto”:
Как видно, сначала мы объединяем числа a, b, c, d (которые лежат в диапазоне [0, 255]) в одно целое число, в котором каждый байт — это одно из исходных чисел. Затем мы инициализируем структуру “sockaddr_in” нашими адресом назначения и портом, при этом не забыв конвертировать порядок байтов с помощью функций “htonl” и “htons”.
Отдельно стоит выделить случай, когда нужно передать пакет самому себе: при этом не нужно выяснять IP адрес локальной машины, а можно просто использовать 127.0.0.1 в качестве адреса (адрес локальной петли), и пакет будет отправлен на локальный компьютер.
Прием пакетов
После того, как мы привязали UDP сокет к порту, все UDP пакеты, приходящие на IP адрес и порт нашего сокета, будут ставиться в очередь. Поэтому для приема пакетов мы просто в цикле вызываем “recvfrom”, пока он не выдаст ошибку, означающую, что пакетов для чтения в очерели не осталось.
Так как протокол UDP не поддерживает соединения, пакеты могут приходить с множества различных компьютеров сети. Каждый раз, когда мы принимаем пакет, функция “recvfrom” выдает нам IP адрес и порт отправителя, и поэтому мы знаем, кто отправил этот пакет.
Код приема пакетов в цикле:
Пакеты, размер которых больше, чем размер буфера приема, будут просто втихую удалены из очереди. Так что, если вы используете буфер размером 256 байтов, как в примере выше, и кто-то присылает вам пакет в 300 байт, он будет отброшен. Вы не получите просто первые 256 байтов из пакета.
Но, поскольку мы пишем свой собственный протокол, для нас это не станет проблемой. Просто всегда будьте внимательны и проверяете, чтобы размер буфера приема был достаточно большим, и мог вместить самый большой пакет, который вам могут прислать.
Закрытие сокета
На большинстве unix-like систем, сокеты представляют собой файловые дескрипторы, поэтому для того, чтобы закрыть сокеты после использования, можно использовать стандартную функцию “close”. Однако, Windows, как всегда, выделяется, и в ней нам нужно использовать “closesocket”.
Так держать, Windows!
Класс сокета
Итак, мы разобрались со всеми основными операциями: создание сокета, привязка его к порту, перевод в неблокирующий режим, отправка и прием пакетов, и, в конце, закрытие сокета.
Итак, наш класс Socket:
И класс Address:
Использовать их для приема и передачи нужно следующим образом:
Как видите, это намного проще, чем работать с BSD сокетами напрямую. И также этот код будет одинаков для всех ОС, потому весь платформозависимый функционал находится внутри классов Socket и Address.
Заключение
Теперь у нас есть независимый от платформы инструмент для отправки и према UDP пакетов.
UDP не поддерживает соединения, и мне хотелось сделать пример, который бы четко это показал. Поэтому я написал небольшую программу, которая считывает список IP адресов из текстового файла и рассылает им пакеты, по одному в секунду. Каждый раз, когда программа принимает пакет, она выводит в консоль адрес и порт компьютера-отправителя и размер принятого пакета.
Вы можете легко настроить программу так, чтобы даже на локальной машине получить несколько узлов, обменивающихся пакетами друг с другом. Для этого просто разным экземплярам программы задайте разные порты, например:
> Node 30000
> Node 30001
> Node 30002
И т.д…
Каждый из узлов будет пересылать пакеты всем остальным узлам, образуя нечто вроде мини peer-to-peer системы.
Я разрабатывал эту программу на MacOSX, но она должна компилироваться на любой unix-like ОС и на Windows, однако если вам для этого потребуется делать какие-либо доработки, сообщите мне.
Важно начать проект с уникальной идеи, но куда важнее выбрать правильное направление.
“Будущее принадлежит тем, кто осваивает больше навыков и совмещает их в потоке творчества”, — Роберт Грин, “Мастерство”.
Это руководство детально объясняет, как ПРАВИЛЬНО создать пошаговую многопользовательскую игру при помощи Socket.io и React. Здесь будет рассмотрено как создание серверной части проекта при помощи ExpressJS, так и клиентской с помощью ReactJS.
К чему очередное руководство?
Это очень важно прояснить. В сети существует великое множество руководств, описывающих “Начало использования socket.io”, но негодование вызывает тот факт, что все они ведут к созданию приложений чатов. Здесь же мы “Начнём использовать socket.io с построения масштабируемого проекта”, который уж точно не будет чатом. :)
Это руководс т во раскроет больше подробностей относительно инфраструктуры кода вместо того, чтобы зацикливаться на UI/UX. Поэтому прошу набраться терпения, если UI покажется вам не столь привлекательным.
Что такое socket.io?
Socket.io — это абстрактный надстроенный над WebSocket протокол. WebSocket же, в свою очередь, — это протокол, позволяющий двухсторонний синхронный обмен между клиентом и сервером. Проще говоря — это двунаправленный канал связи.
На заметку: в нашем случае Websocket и socket.io будут использоваться поочерёдно (несмотря на то, что они в некоторых аспектах отличаются), если не будет указано иного.
Что подразумевается под “правильно”?
Правильно в данном случае означает начать с базы кода, которая в дальнейшем может быть легко расширена, и не заморачиваться одновременно с мелкими проектами. В этом подходе рассматриваются общие практики, которым можно следовать и в более модульных проектах. Однако это ни в коей мере не говорит о том, что создавать WebSocket нужно именно так. Это лишь моё личное мнение, вы же можете с лёгкостью поменять в проекте всё, что захотите. :D
О чём проект? ⚡⚡
Итак, перейдём к сути руководства. Здесь объясняется создание “многопользовательской игры с помощью socket.io” на примере реального проекта. Таким образом гораздо проще увидеть проект в действии, а также узнать, как работает код и его инфраструктура. А создаётся в этом проекте…
Многопользовательский симулятор набора футбольной команды.
Что происходит в этой игре? ⚡
Это пошаговая игра, где одни люди входят и создают комнаты, а другие в эти комнаты подключаются. Затем игра начинается с того, что все игроки перетасовываются и первому даётся шанс выбрать интересующего его игрока. Он может выбирать из списка игроков (просматривать их показатели, позицию, рейтинги и другие детали) и должен сделать свой выбор за отведённое время. Далее ход передаётся другому игроку. Этот цикл повторяется до тех пор, пока каждый игрок не наберёт себе полноценную команду футболистов.
Достаточно просто, не так ли? Далее же мы рассмотрим подробную разбивку инфраструктуры кода, стоящую за всем этим.
Архитектура сервера ⚡⚡⚡
Диаграмма выше демонстрирует взаимосвязь всех компонентов, так сказать, с высоты птичьего полёта.
Структура каталогов (ExpressJS + MongoDB + socket.io)
NodeJS не навязывает структуру кода, что даёт большую гибкость при проектировании. Однако при этом вы можете сильно ошибиться, что приведёт к сложностям при обслуживании и масштабировании проектов. Структура конкретно нашего проекта может использоваться при работе с сокетами в сочетании с NodeJS.
Давайте рассмотрим её подробно.
Бэкенд разделён на разные директории в соответствии с требованиями проекта. Если вы хотите пропустить или поменять местами определённые модули, то сделать это так же просто, как добавить словарь.
Большая часть поддиректорий характерна для проектов nodejs, поэтому подробно их объяснять я не стану. Комментариев, расположенных рядом с каждой из них, вполне достаточно, чтобы понять, что к чему.
Мы же сфокусируемся на поддиректории socker/. Здесь будет размещаться основной код socket.io.
Точка входа для socket.io (App.js)
Вероятно, вам интересно, что это за “socker” на строке 1 и 8.
Что такое socker?
Вышеприведённый код объясняет немногое, и теперь возникают следующие вопросы:
- Как взаимодействовать с подключенными клиентами?
- Где расположены пространства имён?
- Где находятся Rooms/Channels (комнаты/каналы)?
- И где, в конце концов, сама игра?
Назначение пространств имён
Пространства имён являются важной функцией socket.io. Они представляют пул сокетов, подключенных в заданной области и идентифицированных по их пути вроде /classic-mode , /football-draft , /pokemon-draft и т. д. По сути, это создание разных конечных точек или путей, которое позволяет минимизировать количество ресурсов (TCP-соединений) и в то же время разделяет задачи внутри приложения посредством разделения каналов связи. По умолчанию socket.io подключается к пространству имён / .
Назначение комнат/каналов
Внутри каждого пространства имён вы можете создать произвольные каналы или комнаты. В дальнейшем это позволит вам создавать соединения, чьи сокеты смогут join или leave (подключаться или отключаться). Здесь для создания разных комнат мы используем channels , которые пользователи создают или куда подключаются для совместной игры.
Пример присоединения к комнате:
Операция join() проверяет, была ли уже создана требуемая roomId . Если нет, она создаёт её и добавляет к данной roomId игрока. Если же комната уже создана, то присоединяется к ней напрямую.
Полноценный пример, объединяющий использование пространств имён и каналов:
Заключение ⚡
На этом Часть 1 заканчивается. Структура кода, показанная здесь, неплохо работает для проектов среднего размера. Если вы создаёте прототип, то можете опустить или объединить каталоги схем и моделей. При необходимости смело облегчайте проект. :)
А что, если его размер увеличится? Тогда текущая структура уже может не подойти. В этом случае можно создать подкаталоги для каждого требуемого сервиса и компонентов ( user-authentication , _tests_ , analytics и т. д.). Вы можете даже создать микросервисы, т.е. развёртывать каждый процесс или сервис отдельно, что позволит балансировать или масштабировать только сильно нагруженные процессы.
Старайтесь не перемудрить при создании проекта. Лучше создавайте и развёртывайте его поэтапно.
Тип сокета — это важнейшая характеристика процессора и материнской платы. Если опытный пользователь слышит такие названия, как сокет 462, 775, 1155 или AM4, то сразу понимает, о ПК из какого времени идет речь. Давайте разберемся в различиях современных сокетов под процессоры Intel и AMD, а заодно вспомним историю их развития: от первых персональных компьютеров и до наших дней.
Сокет (англ. «socket» — «разъём») — это разъем на материнской плате, в который устанавливается процессор. Сокет является важнейшей характеристикой компьютера, определяя список совместимых чипсетов, процессоров, материнских плат и систем охлаждения, которые можно установить на него.
Сокеты отличаются числом контактов, которое обычно растет вместе с мощностью и сложностью процессоров. Часть контактов используется для питания процессора, а часть — для работы самого процессора, шины PCI Express, ОЗУ и т. д. Для каждого сокета существует уникальная распиновка контактов, выглядит она примерно так.
Распиновка контактов сокета Intel LGA 1151
Сокет определяет и срок службы вашего ПК. Например, покупая сейчас ПК на сокете LGA1151, с процессором Core i5-9400F и материнской платой GIGABYTE B365M D2V, вы должны понимать, что новых процессоров под этот сокет выходить не будет, и оптимальный максимум на который вы можете рассчитывать при апгрейде, — это процессор Core i7-8700K или Core i9-9900K.
Для того, чтобы понять плюсы и минусы различных сокетов, а также нюансы их использования, стоит вспомнить, с чего все начиналось на заре зарождения персональных компьютеров. Давайте освежим в памяти самые распространенные сокеты на рынке ПК в хронологическом порядке. Серверных сокетов касаться не будем из-за их малого распространения.
Сокеты 1980-х и 1990-х годов
Процессоры первых ПК, такие как Intel 8086 и 8088, устанавливались в простейшие разъемы PIN DIP.
Следующее поколение — Intel 80186, 80286, 80386 — устанавливались в разъемы CLCC, PLCC. Зачастую процессоры Intel 80386 припаивались к плате, как некоторые процессоры современных ноутбуков.
И только некоторые процессоры 80386 стали использовать сокет 80386 со 132 контактами, который уже похож на современные сокеты.
Процессоры 80486 в 1989-1994 годах устанавливались аж в четыре типа сокетов: сокеты 1, 2, 3 и 5 с 169, 238, 237 и 238 контактами соотвественно. В сокет 5 можно было установить процессоры AMD K5 и Cyrix/IBM/TI M1/6x86.
На этих сокетах появился известный многим рычажок фиксации, который до сих пор используется на сокетах AM4. Называется такой тип фиксации ZIF (от англ. «Zero Insertion Force» — «нулевое усилие вставки»).
Для установки в такой сокет процессора вы должны чуть отогнуть рычажок, чтобы вывести его из зацепа и приподнять на 90 градусов. При этом откроются контактные площадки, в которые процессор должен провалиться под своим весом, без усилия. После этого рычажок опускается на место и контактные площадки зажимают ножки процессора.
В 1993 году первые процессоры Pentium потребовали новый сокет 4 с 273 контактами. Обновленный сокет 7 появился в 1995 году. В нем уже был 321 контакт, но эти сокеты больше интересны тем, что в них было возможно установить процессоры AMD K6 и Cyrix/IBM/TI 6x86L, а потом и новые процессоры Pentium MMX.
AMD продолжило развитие сокета 7, выпустив сокет Super Socket 7, который поддерживал шину в 100 МГц и процессоры AMD K6-2, AMD K6-III, AMD K6-2+/K6-III+, Cyrix MII/6x86MX.
В 1997 году появляется новый разъем щелевого типа Slot 1 предназначенный для установки новых процессоров Pentium II и Celeron, выпущенных в формате картриджей SECC и SECC2, а потом и на полностью открытой печатной плате — SEPP.
Разъем поддерживал и ранние Pentium III, но имел недостатки в виде ненадежной фиксации, и уже в 1998 году на рынке появляется знакомый многим сокет 370. Начиная с него, Intel стала указывать в названии сокета количество контактов.
Что интересно, Slot 1 и сокет 370 с точки зрения электрики были очень похожи, что позволило выпустить переходники — слоткеты (англ. Slotket от slot и socket), которые позволяли использовать новые процессоры сокета 370 на старых материнских платах Slot 1.
AMD скопировало разъем Slot 1, выпустив Slot A в 1999 году. Но совместим он был только механически, а не электрически. Slot A поддерживал первые процессоры Athlon на ядре K7, выпущенные в формате SECC.
Сокеты 2000-х годов
В 2000 году появляются процессоры Pentium 4, которые вначале используют сокет 423, а затем — сокет 478.
У AMD в это время появляется сокет A или, как его еще называли, сокет 462, поддерживающий процессоры Athlon, Athlon XP, Sempron и Duron на разных ядрах.
В 2004 году Intel выпускает сокет совершенно нового типа под названием сокет T или LGA 775. Ножки с процессора переместились в сокет на материнской плате, и теперь изготавливались в виде пружинных контактов.
Сокеты типа LGA имеют важные преимущества над старыми сокетами PGA:
- удешевление производства процессора
- меньшие утечки тока
- возможность наращивать количество контактов
- возможность изготавливать сокеты очень больших размеров, как LGA 3647 от Intel или TR4 от AMD
- очень надежное, по сравнению с сокетами PGA, удержание процессора
Даже используя современные сокеты PGA, такие как AM4, вы должны быть крайне осторожны при снятии системы охлаждения. Густая, а особенно прикипевшая термопаста «приклеивает» радиатор к процессору и при снятии радиатора процессор может выскочить из сокета, помяв ножки.
Чтобы этого не произошло, производители рекомендуют разогреть радиатор перед снятием и сделать им несколько движений в горизонтальном (к материнской плате) направлении.
Но и у сокетов PGA есть свои преимущества:
- сам сокет более дешев, что удешевляет материнскую плату
- ножки на процессоре более надежны, чем ножки на сокете LGA, и позволяют произвести ремонт помятых ножек. Повредить ножки в сокете LGA очень легко, а выпрямить крайне затруднительно
- сокет PGA более компактен и больше подходит для мобильной техники
Intel продолжила выпускать сокеты LGA и дальше. В 2008 году LGA 775 сменили LGA 1366 для высокопроизводительных систем. В 2009 году — LGA 1156 для настольных систем. Крепежные отверстия под систему охлаждения LGA 1156 совпадают и с современными сокетами Intel. Вы сможете установить на современную систему LGA 1200 старый качественный кулер, если он у вас есть.
А у AMD в 2003 году выходит сокет 754 для процессоров Athlon 64, затем, в 2004 году, — сокет 939. В 2006 году выходит сокет AM2, а в 2007 году — AM2+. В 2009 году выходит сокет AM3 с поддержкой памяти DDR3. А в 2011 году выходит сокет AM3+ с поддержкой процессоров Bulldozer. Платы и процессоры под этот сокет продаются и сейчас.
Эти сокеты отличало поступательное эволюционное развитие, что отражалось в расширенной обратной совместимости процессоров. Например, процессор под сокет AM3, Phenom II X4 925, можно установить в материнскую плату AM2+, и даже в AM3+!
Такая широкая возможность совместимости давала пользователям очень широкие возможности апгрейда и принесла компании AMD дивиденды в виде преданности пользователей.
Сокеты 2010-х годов
В 2011-2014 годах AMD выпускает сокеты FM1, FM2 и FM2+ для процессоров Athlon и APU серий A8, A6 и А4. В 2014 году выходит сокет AM1 для недорогих и энергоэффективных процессоров Kabini.
У Intel в 2011 году выходит сокет LGA 1155 или H2. Сокет оказался очень удачным и популярным. Для высокопроизводительных систем был выпущен сокет LGA 2011 или R.
В 2013 году Intel выпускает сокет LGA 1150 или H3. В 2014 году для высокопроизводительных систем выходит LGA 2011-3 или R3. А в 2015 году выходит сокет LGA 1151 или H4. Процессоры и платы под этот сокет продаются и сейчас.
Зачастую сокет 1151 обозначается сейчас как «1151 v2» или «1151 rev 2», но на самом деле официально никакой второй ревизии этого сокета нет, а совместимость определяется лишь материнской платой.
Энтузиасты, модифицируя BIOS материнских плат с чипсетом 100 или 200 серии, запускают на них процессоры Coffee Lake (иногда требуется выполнить «пинмод» — замыкание определенных контактных площадок на процессоре).
Особо впечатляющим выглядит запуск и разгон процессора Coffee Lake Refresh Core i9-9900K на устаревшей материнской плате с чипсетом Z170.
Самые актуальные сокеты
Ну вот мы и подошли к самым актуальным на сегодняшний момент сокетам. У Intel это сокет LGA 1200, выпущенный во втором квартале 2020 года. По сути, это модифицированный сокет LGA 1151 с 49 дополнительными контактами для улучшения питания и поддержки новых функций ввода-вывода.
На 2021 год уже запланирован выход новых процессоров Alder Lake-S и нового сокета LGA 1700.
А вот у AMD актуальным является сокет AM4, выпущенный в 2017 году. Это стандартный PGA-ZIF сокет с 1331 контактом, но интересен он тем, что уже стал долгожителем. Первые процессоры под этот сокет — APU 7-ого поколения и Athlon X4 950 на архитектуре AMD Excavator.
А в 2017 году появляются популярнейшие процессоры Zen, совершившие рывок в количестве ядер и потоков у бюджетных процессоров. В 2018 году под сокет AM4 выходят процессоры Zen+, а в 2019 — Zen 2. И остается буквально месяц до анонса процессоров архитектуры Zen 3, которые также будут использовать сокет AM4.
Серьезный минус сокета AM4 — изменение расстояний между отверстиями под СО, что сразу сделало несоместимым с ним огромное число дорогих кулеров. При этом расстояние между пластиковыми зубцами осталось прежним и на него можно поставить стандартное крепление даже от сокета 754.
Следующее поколение процессоров будет использовать память DDR5 и, скорее всего, потребует нового сокета.
Заключение
Как видите, сокеты за 40 лет прошли огромный путь, постоянно видоизменяясь и увеличив количество контактов в 30 раз. Некоторые сокеты остаются актуальны очень короткое время и не пользуются особой популярностью. А некоторые — становятся долгожителями, как, к примеру, сокет LGA 775 или AM4.
Socket (разг. - сокет) центрального процессора - это разъем, расположенный на материнской плате компьютера, к которому подсоединяется центральный процессор.
Сокеты для современных процессоров Intel чаще всего бывают гнездовыми, в которых контактные штырьки расположены в самом разъеме (на изображении ниже справа), а для процессоров AMD - щелевыми, когда штырьки припаяны к процессору, а в разъеме расположены щели, в которые эти штырьки вставляются (слева).
Большое количество типов сокетов является следствием постепенного развития компьютерной техники. Каждый из разъемов приходит на смену предыдущему, когда тот по каким-либо параметрам не может обеспечить нормальную работу новых процессоров.
На физическом уровне все сокеты отличаются друг от друга размером и формой, количеством контактов, их типом и расположением. Кроме того, они отличаются и креплением системы охлаждения процессора. Это делает сокеты разных типов несовместимыми друг с другом.
Таким образом, к сокету определенного типа можно подключить только процессор, который предназначен именно для него. Из компьютера нельзя вынуть процессор и поставить вместо него любой другой. Подойдет только процессор с таким же сокетом.
Существует несколько способов узнать тип сокета конкретного компьютера.
1. По надписи на материнской плате
Если в сокете материнской платы пока еще отсутствует процессор, нужно внимательно ее осмотреть. Очень часто тип сокета указывается либо на самом разъеме, либо в непосредственной близости от него.
2. По модели материнской платы или процессора
Тип сокета не трудно узнать, если известна модель материнской платы компьютера или его процессора. Достаточно зайти на официальный сайт их производителей и посмотреть там нужные сведения.
О том, как узнать модель материнской платы, читайте здесь. Инструкция по получению сведений о модели процессора расположена здесь.
3. При помощи специальных программ
Ну а если компьютер не разобран и находится в рабочем состоянии, пожалуй, самый удобный способ узнать тип его сокета - использовать программу, обладающую соответствующими возможностями. Для этих целей подойдет, например, программа CPU-Z или Speccy.
Нужно установить программу на компьютере и запустить ее. Сведения о типе сокета отобразятся в окне CPU-Z в графе "Package".
Пользоваться этой программой не менее удобно, чем CPU-Z. Достаточно просто установить и запустить ее на компьютере. Затем, когда завершится определение параметров основных устройств компьютера, перейти в раздел "Центральный процессор". Необходимая информация будет отображена в пункте "Конструктив".
Кроме CPU-Z и Speccy, существует много других подобных программ, с помощью которых можно получить информацию о разъеме процессора, а также других характеристиках компьютера.
Одной из особенностей компьютеров на базе процессоров AMD, которой они выгодно отличаются от платформ Intel, является высокий уровень совместимости процессоров и материнских плат. У владельцев относительно не старых настольных систем на базе AMD есть высокие шансы безболезненно "прокачать" компьютер путем простой замены процессора на "камень" из более новой линейки или же флагман из предыдущей.
Если вы принадлежите к их числу и задались вопросом "апгрейда", эта небольшая табличка вам в помощь.
В таблицу можно одновременно добавить до 6 процессоров, выбрав их из списка (кнопка "Добавить процессор"). Всего доступно больше 2,5 тыс. процессоров Intel и AMD.
Пользователю предоставляется возможность в удобной форме сравнивать производительность процессоров в синтетических тестах, количество ядер, частоту, структуру и объем кэша, поддерживаемые типы оперативной памяти, скорость шины, а также другие их характеристики.
Дополнительные рекомендации по использованию таблицы можно найти внизу страницы.
В этой базе собраны подробные характеристики процессоров Intel и AMD. Она содержит спецификации около 2,7 тысяч десктопных, мобильных и серверных процессоров, начиная с первых Пентиумов и Атлонов и заканчивая последними моделями.
Информация систематизирована в алфавитном порядке и будет полезна всем, кто интересуется компьютерной техникой.
Таблица содержит информацию о почти 2 тыс. процессоров и будет весьма полезной людям, интересующимся компьютерным "железом". Положение каждого процессора в таблице определяется уровнем его быстродействия в синтетических тестах (расположены по убыванию).
Есть фильтр, отбирающий процессоры по производителю, модели, сокету, количеству ядер, наличию встроенного видеоядра и другим параметрам.
Для получения подробной информации о любом процессоре достаточно нажать на его название.
Люди обычно оценивают процессор по количеству ядер, тактовой частоте, объему кэша и других показателях, редко обращая внимание на поддерживаемые им технологии.
Отдельные из этих технологий нужны только для решения специфических заданий и в "домашнем" компьютере вряд ли когда-нибудь понадобятся. Наличие же других является непременным условием работы программ, необходимых для повседневного использования.
Так, полюбившийся многим браузер Google Chrome не работает без поддержки процессором SSE2. Инструкции AVX могут в разы ускорить обработку фото- и видеоконтента. А недавно один мой знакомый на достаточно быстром Phenom II (6 ядер) не смог запустить игру Mafia 3, поскольку его процессор не поддерживает инструкции SSE4.2.
Если аббревиатуры SSE, MMX, AVX, SIMD вам ни о чем не говорят и вы хотели бы разобраться в этом вопросе, изложенная здесь информация станет неплохим подспорьем.
Проверка стабильности работы центрального процессора требуется не часто. Как правило, такая необходимость возникает при приобретении компьютера, разгоне процессора (оверлокинге), при возникновении сбоев в работе компьютера, а также в некоторых других случаях.
В статье описан порядок проверки процессора при помощи программы Prime95, которая, по мнению многих экспертов и оверлокеров, является лучшим средством для этих целей.
ПОКАЗАТЬ ЕЩЕ
Читайте также: