СПОСОБ УПРАВЛЕНИЯ ПРОЦЕССОРОМ И МНОГОПРОЦЕССОРНОЙ СИСТЕМОЙ
METHOD OF CONTROLLING PROCESSOR AND MULTIPROCESSOR SYSTEM

ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее изобретение относится к области компьютеров, в частности к способу управления процессором и многопроцессорной системой.
УРОВЕНЬ ТЕХНИКИ
[0002] В системе с архитектурой неоднородного доступа к памяти (NUMA) центральный процессор (CPU) может быть взаимосвязан посредством соединительной шины для образования многопроцессорной системы. Общей соединительной шиной является протокол высокоскоростного межсоединения типа "точка-точка" (QPI).
[0003] Однако из-за ограничения ресурсов компонентов, например, из-за ограниченного количества портов взаимосвязи процессоров использование только соединительной шины может реализовать межсоединение максимум между 8 процессорами. Для реализации межсоединения между более чем 8 процессорами нужно использовать контроллер узлов (Node Controller, NC).
[0004] Фиг. 1 показывает структуру многопроцессорной системы на известном уровне техники, включающую в себя контроллер 111 узлов, контроллер 112 узлов и 8 процессоров. Процессор 121, процессор 122, процессор 123 и процессор 124 образуют пул QPI, а процессор 125, процессор 126, процессор 127 и процессор 128 образуют другой пул QPI. Процессоры в пуле QPI могут осуществлять связь друг с другом посредством шины QPI между процессорами. Для реализации связи между процессорами в разных пулах QPI нужно использовать NC.
[0005] В процессе работы системы доступ между NC выполняется с использованием одного пути, что приводит к относительно большой задержке в системе. В случае сниженной надежности NC с низкой надежностью нужно удалить и заменить. Однако в соответствии с архитектурой на фиг. 1 во время замены NC затрагивается доступ процессора к другому пулу.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] Варианты осуществления настоящего изобретения предлагают архитектуру многопроцессорной системы, где процессорам доступны 2 группы NC, и процессор может выбирать группу NC, которая обеспечивает наивысшую скорость доступа к целевому NC, что повышает общую эффективность системы.
[0007] В соответствии с первым аспектом вариант осуществления настоящего изобретения предоставляет процессор, который может служить в качестве главного процессора, который управляет многопроцессорной системой, где многопроцессорная система включает в себя: первый пул с высокоскоростным межсоединением (QPI), второй пул QPI, первую группу контроллеров узлов (NC) и вторую группу NC, где первая группа NC подключается к первому пулу QPI и второму пулу QPI, вторая группа NC подключается к первому пулу QPI и второму пулу QPI, каждый пул QPI включает в себя по меньшей мере один процессор, главный процессор принадлежит первому пулу QPI или второму пулу QPI, и главный процессор конфигурируется для: управления всеми процессорами в многопроцессорной системе, которые выполняют доступ между пулами с использованием первой группы NC, когда нужно удалить NC в первой группе NC, для переключения на выполнение доступа между пулами с использованием второй группы NC путем изменения конфигурации маршрута.
[0008] Применяя этот способ, можно удалять NC оперативно, что уменьшает влияние на производительность многопроцессорной системы, вызванное удалением NC.
[0009] В первом возможном виде реализации первого аспекта главный процессор, конфигурируемый для управления всеми процессорами в многопроцессорной системе, которые выполняют доступ между пулами с использованием первой группы NC, для переключения на выполнение доступа между пулами с использованием второй группы NC путем изменения конфигурации маршрута, включает в себя, в частности: главный процессор, конфигурируемый для: указания процессорам, которые выполняют доступ между пулами с использованием первой группы NC, конфигурировать записанное состояние данных в недопустимое состояние; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; указания процессорам, которые выполняют доступ между пулами с использованием первой группы NC, конфигурировать порт, который находится в регистре маршрутов и который обращается к процессору в другом пуле, в порт, который выполняет доступ между пулами с использованием второй группы NC; и инициирования отмены отключения системы.
[0010] Этот вид реализации предоставляет определенный вид реализации оперативного удаления NC путем изменения конфигурации маршрута процессора.
[0011] Во втором возможном виде реализации первого аспекта главный процессор дополнительно конфигурируется для: управления по меньшей мере одним процессором, который находится в многопроцессорной системе и выполняет доступ между пулами с использованием второй группы NC, после того, как удаляется удаляемый NC, а целевой NC добавляется в первую группу NC и устанавливает топологическое взаимоотношение с исходным NC в первой группе NC, для переключения на выполнение доступа между пулами с использованием первой группы NC путем изменения конфигурации маршрута.
[0012] Этот вид реализации предоставляет технологию оперативного удаления NC. Процесс добавления NC может быть независимым решением или может объединяться с первым аспектом или первым возможным видом реализации первого аспекта для образования объединенного решения.
[0013] В третьем возможном виде реализации первого аспекта главный процессор дополнительно конфигурируется для: указания по меньшей мере одному процессору, который выполняет доступ между пулами с использованием первой группы NC, конфигурировать записанное состояние данных в недопустимое состояние после того, как удаляется удаляемый NC, а целевой NC добавляется в первую группу NC; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; установления топологического взаимоотношения между целевым NC и исходным NC в первой группе NC; указания по меньшей мере одному процессору конфигурировать порт, который находится в регистре маршрутов и который обращается к процессору в другом пуле, в порт, который выполняет доступ между пулами с использованием второй группы NC; и инициирования отмены отключения системы.
[0014] Это решение предоставляет более подробную технологию оперативного удаления NC.
[0015] В четвертом возможном виде реализации первого аспекта главный процессор дополнительно конфигурируется для: отправки команды по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, после того, как целевой NC добавляется в первую группу NC, и указания по меньшей мере одному процессору установить состояния данных, соответствующие M приемным процессорам между пулами в записанных состояниях данных, в недопустимое состояние, где состояния данных, записанные процессором, соответствуют в общем N приемным процессорам между пулами, и M<N; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; изменения конфигурации регистра маршрутов у по меньшей мере одного процессора, чтобы конфигурировать порт, который находится в регистре маршрутов и который обращается к M процессорам, в порт, который выполняет доступ между пулами с использованием первой группы NC; и отмены отключения системы после завершения изменения конфигурации регистра маршрутов.
[0016] Применяя четвертый возможный вид реализации первого аспекта, в зависимости от различных приемных узлов, некоторые процессоры могут выбираться для изменения маршрута, а маршруты оставшихся процессоров остаются без изменений.
[0017] В соответствии со вторым аспектом предоставляется процессор, который служит в качестве главного процессора, который управляет многопроцессорной системой, где многопроцессорная система включает в себя: первый пул с высокоскоростным межсоединением (QPI), второй пул QPI, первую группу контроллеров узлов (NC) и вторую группу NC, где первая группа NC подключается к первому пулу QPI и второму пулу QPI, вторая группа NC подключается к первому пулу QPI и второму пулу QPI, каждый пул QPI включает в себя по меньшей мере один процессор, главный процессор принадлежит первому пулу QPI или второму пулу QPI, и главный процессор конфигурируется для: управления всеми процессорами в многопроцессорной системе, которые выполняют доступ между пулами с использованием целевого NC, когда нужно удалить целевой NC в первой группе NC, для переключения на выполнение доступа между пулами с использованием второй группы NC путем изменения конфигурации маршрута.
[0018] Это решение может реализовать оперативное удаление NC.
[0019] В первом возможном виде реализации второго аспекта главный процессор, конфигурируемый для управления всеми процессорами в многопроцессорной системе, которые выполняют доступ между пулами с использованием целевого NC, для переключения на выполнение доступа между пулами с использованием второй группы NC путем изменения конфигурации маршрута, включает в себя, в частности: главный процессор, конфигурируемый для: указания процессорам, которые выполняют доступ между пулами с использованием целевого NC, конфигурировать записанное состояние данных в недопустимое состояние; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; указания оставшимся NC в первой группе NC обновить конфигурацию маршрута, чтобы изолировать целевой NC, и указания процессорам, которые выполняют доступ между пулами с использованием целевого NC, конфигурировать порт, который находится в регистре маршрутов и который обращается к процессору в другом пуле, в порт, который выполняет доступ между пулами с использованием второй группы NC; и инициирования отмены отключения системы.
[0020] В соответствии с третьим аспектом предоставляется процессор, который служит в качестве главного процессора, который управляет многопроцессорной системой, где многопроцессорная система включает в себя: первый пул с высокоскоростным межсоединением (QPI), второй пул QPI, первую группу контроллеров узлов (NC) и вторую группу NC, где первая группа NC подключается к первому пулу QPI и второму пулу QPI, вторая группа NC подключается к первому пулу QPI и второму пулу QPI, каждый пул QPI включает в себя по меньшей мере один процессор, главный процессор принадлежит первому пулу QPI или второму пулу QPI, и главный процессор конфигурируется для:
управления по меньшей мере одним процессором, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, когда целевой NC добавляется в первую группу NC, для переключения на выполнение доступа между пулами с использованием целевого NC путем изменения конфигурации маршрута, где целевой NC подключается к первому пулу QPI.
[0021] В первом возможном виде реализации третьего аспекта предоставляется технология добавления NC.
[0022] В первом возможном виде реализации третьего аспекта главный процессор, конфигурируемый для управления по меньшей мере одним процессором, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, для переключения на выполнение доступа между пулами с использованием целевого NC путем изменения конфигурации маршрута, включает в себя, в частности: главный процессор, конфигурируемый для: указания по меньшей мере одному процессору конфигурировать состояние данных в недопустимое состояние; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; указания целевому NC установить топологическое взаимоотношение с исходным NC в первой группе NC; указания по меньшей мере одному процессору изменить конфигурацию маршрута, чтобы изменить порт, который находится в регистре маршрутов и который обращается к процессору в другом пуле, на порт, который выполняет доступ между пулами с использованием целевого NC; и инициирования отмены отключения системы.
[0023] В первом возможном виде реализации третьего аспекта предоставляется подробная технология добавления NC.
[0024] Во втором возможном виде реализации третьего аспекта главный процессор, конфигурируемый для управления по меньшей мере одним процессором, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, для переключения на выполнение доступа между пулами с использованием целевого NC путем изменения конфигурации маршрута, включает в себя, в частности: главный процессор, конфигурируемый для: отправки команды по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, и указания по меньшей мере одному процессору установить состояния данных, соответствующие M приемным процессорам между пулами в записанных состояниях данных, в недопустимое состояние, где состояния данных, записанные процессором, соответствуют в общем N приемным процессорам между пулами, и M<N; инициирования отключения системы, чтобы конфигурировать все процессоры в многопроцессорной системе в отключенное состояние; и указания по меньшей мере одному процессору изменить конфигурацию маршрута, чтобы конфигурировать порт, который находится в регистре маршрутов и который обращается к M процессорам, в порт, который выполняет доступ между пулами с использованием целевого NC.
[0025] Во втором возможном виде реализации третьего аспекта предоставляется подробная технология добавления NC для изменения маршрутов разных приемных узлов.
[0026] Настоящее изобретение дополнительно предоставляет компьютер, где компьютер включает в себя первый пул QPI, второй пул QPI, первую группу NC и вторую группу NC, и компьютер дополнительно включает в себя BIOS, где BIOS используется для хранения команд, необходимых для работы процессоров во всех вышеупомянутых аспектах, и компьютер обеспечивает технические эффекты, аналогичные вышеупомянутым аспектам.
[0027] Настоящее изобретение дополнительно предоставляет способ управления многопроцессорной системой, который применим к главному процессору во всех вышеупомянутых аспектах или вышеупомянутому компьютеру и обеспечивает аналогичные технические эффекты.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0028] Фиг. 1 - архитектурная схема многопроцессорной системы на известном уровне техники.
[0029] Фиг. 2 - архитектурная схема варианта осуществления многопроцессорной системы в соответствии с настоящим изобретением.
[0030] Фиг. 3 - логическая блок-схема варианта осуществления способа удаления NC в соответствии с настоящим изобретением.
[0031] Фиг. 4 - логическая блок-схема варианта осуществления способа добавления NC в соответствии с настоящим изобретением.
[0032] Фиг. 5 - логическая блок-схема другого варианта осуществления способа удаления NC в соответствии с настоящим изобретением.
[0033] Фиг. 6 - логическая блок-схема другого варианта осуществления способа добавления NC в соответствии с настоящим изобретением.
ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0034] Нижеследующее понятно и полностью описывает технические решения в вариантах осуществления настоящего изобретения со ссылкой на прилагаемые чертежи в вариантах осуществления настоящего изобретения. Очевидно, что описанные варианты осуществления являются лишь некоторыми, но не всеми вариантами осуществления настоящего изобретения.
[0035] В компьютере располагается многопроцессорная система, например NUMA. В многопроцессорной системе, полагаясь только на прямые соединения между процессорами, масштаб системы почти не поддается расширению, потому что количество внешних интерфейсов у процессоров ограничено. Для создания процессорной системы из большего количества процессоров разные группы процессоров обычно подключаются с использованием NC, и данные передаются между группами процессоров с использованием NC.
[0036] Группа NC также называется плоскостью NC и состоит из одного или нескольких NC. Несколько NC в одной и той же группе NC могут быть взаимосвязаны по способу полного зацепления (full mesh), кольцевой схемы или последовательного соединения. Группа процессоров также называется пулом QPI, и пул QPI состоит из одного или нескольких процессоров. Несколько процессоров в одном и том же пуле QPI подключаются с использованием шины QPI. Группа NC подключается к группе процессоров.
[0037] Процессоры в группе процессоров не только взаимосвязаны с использованием шины QPI, но также могут быть взаимосвязаны с использованием другой кэш-когерентной (Cache Coherency, CC) шины, например высокопроизводительной шины (Hyper-Transport, HT). Поэтому группа процессоров также может называться кэш-когерентным пулом. Для простоты описания варианты осуществления настоящего изобретения описываются в качестве примера с использованием пула QPI.
[0038] В вариантах осуществления один порт процессора подключается к NC, а оставшиеся порты подключаются к другим процессорам в пуле. Группа NC может перенаправлять пакет между пулами QPI, и поэтому процессоры в разных пулах QPI могут реализовать пакетную передачу с использованием группы NC.
[0039] При необходимости каждый процессор содержит несколько портов, где один из портов подключается к NC, а оставшиеся порты подключаются к процессорам в текущем пуле QPI. Например, процессор содержит 3 порта, один из портов подключается к NC, а оставшиеся два порта подключаются к соседним процессорам. Линия соединения между процессором и NC также является линией соединения между процессором и группой NC. Группа NC обеспечивает функцию перенаправления, и процессор осуществляет связь с процессорами в других пулах QPI с использованием линии, подключенной к группе NC.
[0040] В процессе использования NC надежность может уменьшаться, и даже может возникнуть сбой. Если NC в неисправном состоянии, то может быть оказано определенное влияние на полосу пропускания при обращении к процессору в многопроцессорной системе. Для повышения надежности многопроцессорной системы идеальная многопроцессорная система должна поддерживать оперативную замену NC. Рабочее состояние многопроцессорной системы контролируется с использованием управляющего программного обеспечения. Если обнаружена нестабильная работа NC, например, частота или количество раз возникновения сбоя у NC в периоде времени превышает некую пороговую величину, то NC помечается рискованным. Кроме того, перед тем как NC становится недоступным, рискованный NC заменяется путем оперативного удаления рискованного NC, а затем оперативного добавления нового NC, чтобы предотвратить критическое влияние на систему, вызванное внезапным отказом NC.
[0041] Оперативная замена относится к замене без перебоя питания и позволяет пользователю заменить соответствующую часть без выключения системы и без отключения источника питания. В частности, оперативная замена включает в себя два процесса: оперативное удаление и оперативное добавление.
[0042] В этом варианте осуществления настоящего изобретения несколько пулов QPI подключаются к одним и тем же нескольким группам NC. Конфигурация маршрута хранится в NC и в регистре процессоров, и путь передачи пакетов можно изменить путем изменения конфигурации маршрута. При операции взаимного доступа между процессорами для описания последовательности операций доступа используется транзакция. Процессор, который инициирует транзакцию доступа (отправляет запрос доступа), называется исходным процессором, а процессор, который отвечает на транзакцию (отвечает на запрос доступа), называется приемным процессором. В процессе обработки транзакций канал для передачи данных между исходным процессором и приемным процессором называется маршрутом. Направление передачи пакета данных противоположно направлению маршрута транзакции, где приемный процессор является отправителем пакета данных, а исходный процессор является приемником пакета данных. Направление передачи пакета запроса совпадает с направлением маршрута транзакции, где исходный процессор отправляет пакет запроса данных, а приемный процессор отвечает на пакет запроса данных.
[0043] Фиг. 2 - архитектурная схема в соответствии с вариантом осуществления настоящего изобретения. Пул 23 QPI, пул 24 QPI и пул 25 QPI подключаются к группе 21 NC и группе 22 NC. Любой процессор может обращаться к процессорам в других пулах QPI с использованием группы 21 NC или группы 22 NC. Тот же процессор также может обращаться к разным процессорам в других пулах с использованием разных групп NC. Упомянутый в этом варианте осуществления настоящего изобретения доступ может быть, например, считыванием данных из других процессоров в виде пакета. В частности, данные считываются из запоминающего устройства, управляемого другими процессорами.
[0044] В многопроцессорной системе один процессор служит в качестве главного процессора. Главный процессор управляет и контролирует NC и другие процессоры, и главный процессор может располагаться в любом пуле QPI. Главный процессор формирует команду управления и контроля путем выполнения программы. Программу можно получить из BIOS компьютера. BIOS подключается к многопроцессорной системе, и многопроцессорная система и BIOS являются неотъемлемыми частями компьютера.
[0045] То есть процессоры в пуле QPI могут обращаться друг к другу без использования NC. Например, на фиг. 2, если процессору 231 нужно обратиться к процессору 234, то имеется несколько необязательных маршрутов, включающих в себя: процессор 231 - процессор 232 - процессор 233 - процессор 234, процессор 231 - процессор 234 и процессор 231 - NC 211 - процессор 234. Однако процессорам в разных пулах QPI нужно обращаться друг к другу с использованием группы NC. Если процессор 231 обращается к процессору 241, то необязательным путем доступа является процессор 231 - NC 211 - NC 212 - процессор 241, или может выбираться следующий путь доступа: процессор 231 - процессор 232 - NC 221 - NC 222 - процессор 242 - процессор 241. Первый проходит через группу 21 NC, а последний проходит через группу 22 NC.
[0046] В варианте осуществления настоящего изобретения многопроцессорная система включает в себя: по меньшей мере два пула с высокоскоростным межсоединением (QPI), первую группу NC и вторую группу NC. Каждый пул QPI включает в себя по меньшей мере один процессор, и каждая группа NC включает в себя по меньшей мере один NC. Каждый NC подключается ко всем пулам QPI.
[0047] В многопроцессорной системе процессор может отправлять запрос доступа первой группе NC в соответствии с конфигурацией маршрута процессора при обращении к первому приемному процессору в другом пуле QPI, где первая группа NC используется для перенаправления запроса доступа первому приемному процессору во втором пуле QPI. Тем не менее процессор может отправлять запрос доступа первой группе NC в соответствии с конфигурацией маршрута процессора при обращении ко второму приемному процессору в другом пуле QPI, где первая группа NC используется для перенаправления запроса доступа второму приемному процессору во втором пуле QPI.
[0048] Процессор, который обращается к первому приемному процессору с использованием первой группы NC, может быть таким же или отличаться от процессора, который обращается ко второму приемному процессору с использованием второй группы NC.
[0049] Нижеследующее кратко описывает изменение, вызванное удалением и добавлением NC в систему, когда выполняется связь между процессорами, которые принадлежат разным пулам QPI.
[0050] Например, этот вариант осуществления настоящего изобретения предоставляет два решения, когда нужно удалить NC 211 в группе 21 NC. Оба способа выполняются под управлением главного процессора. Один способ состоит в переключении всех маршрутов, которые исходно проходят через группу 21 NC, на группу 22 NC, а другой способ состоит в переключении маршрутов, которые исходно проходят через NC 211, на группу 22 NC, а маршруты, которые проходят через другие NC в группе 21 NC, остаются без изменений.
[0051] Аналогичным образом также существует несколько решений, когда нужно добавить NC под управлением главного процессора, например, после того как удаляется исходный NC 211, новый NC 211 добавляется в группу 21 NC. Один способ: в зависимости от разных исходных процессоров, которые инициируют доступ между пулами, главный процессор выбирает некоторые из маршрутов, которые проходят через группу 22 NC, и переключает выбранные маршруты на группу 21 NC, а оставшиеся маршруты остаются без изменений. Другой способ: в зависимости от разных приемных процессоров, к которым обращаются между пулами, главный процессор выбирает маршруты, соответствующие некоторым приемным процессорам, из маршрутов, которые исходно проходят через группу 22 NC, и переключает выбранные маршруты на группу 21 NC, а оставшиеся маршруты остаются без изменений. Еще один способ состоит в переключении на группу 21 NC всех маршрутов, которые проходят через группу 22 NC.
[0052] Доступ между пулами означает, что процессор, к которому обращаются, и процессор, который отправляет запрос доступа, не находятся в одном пуле QPI, и в частности, адрес памяти, к которому обращаются, является адресом памяти, управляемым процессором в другом пуле QPI. Запрос доступа используется одним процессором для запроса данных у другого процессора. Следует отметить, что если запрос доступа в доступе между пулами проходит через любой NC в группе NC, то доступ между пулами считается проходящим через группу NC. То, что процессор выполняет доступ между пулами с использованием одной группы NC (или NC), означает, что в конфигурации маршрута у процессора прямо или косвенно указывается группа NC или NC. Это не обязательно означает, что в текущий момент времени существует доступ между пулами. Однако когда процессор отправляет запрос доступа между пулами, запрос доступа может проходить через группу NC или NC.
[0053] Прямое указание на NC является, например, прямым подключением к NC, на который указывают. В конфигурации маршрута процессора следующим узлом является NC, на который указывают. Когда процессор отправляет запрос доступа между пулами, в соответствии с конфигурацией маршрута процессора следующим узлом, через который проходит запрос доступа между пулами, является NC, на который указывают. Косвенное указание на NC является, например, прохождением сначала через другой узел (например, NC или процессор), а затем подключение к NC, на который указывают. Когда процессор отправляет запрос доступа между пулами, в соответствии с конфигурацией маршрута процессора запрос доступа между пулами может сначала проходить через другие узлы, а затем поступать в NC, на который указывают. Предшествующее описывает принципы прямого или косвенного указания на NC, а принципы прямого или косвенного указания на группу NC одинаковы.
Вариант 1 осуществления
[0054] Ссылаясь на фиг. 3, этот вариант осуществления настоящего изобретения предоставляет способ оперативного удаления NC. Этот способ описывается на основе архитектуры на фиг. 2.
[0055] Когда нужно удалить NC в первой группе NC, главный процессор управляет всеми процессорами в многопроцессорной системе, которые выполняют доступ между пулами с использованием первой группы NC, для переключения на выполнение доступа между пулами с использованием второй группы NC.
[0056] Предположим, что главным процессором является процессор 234 в пуле 23 QPI, а удаляемым NC является NC 211. Для простоты описания удаляемый NC 211 в этом варианте осуществления называется целевым NC, группа 21 NC называется первой группой NC, а группа 22 NC называется второй группой NC.
[0057] S301. Главный процессор принимает сигнал, указывающий, что нужно удалить NC в первой группе NC.
[0058] Для примера, когда пользователь готов удалить NC 211, пользователь может отправить главному процессору 234 команду удаления с использованием операционной системы, где команда удаления включает в себя идентификатор NC 211. Таким образом, при приеме команды удаления главный процессор 234 может определить, что удаляемый NC существует в группе 21 NC.
[0059] Для примера после обнаружения, что снизилась надежность NC 211 в группе 21 NC, процессор 234 может начать удаление NC 211. NC 211 можно удалить после того, как маршрут, который проходит через группу 21 NC, переключается на группу 22 NC, и прекращается использование группы 21 NC.
[0060] S302. Главный процессор указывает процессору, который выполняет доступ между пулами с использованием первой группы NC, конфигурировать записанное процессором состояние данных в недопустимое состояние.
[0061] Главный процессор может узнать топологическое взаимоотношение между процессорами в многопроцессорной системе, или другими словами, главный процессор знает взаимосвязи соединений между разными портами каждого процессора и другими устройствами (NC или процессором). Поэтому путем считывания информации об исходящих портах в конфигурации маршрута процессора главный процессор может узнать, является ли группа NC, используемая процессором для доступа между пулами, первой группой NC. Соответственно, если главный процессор указывает другому процессору изменить исходящий порт в конфигурации маршрута, то можно изменить путь, используемый процессором для внешнего доступа (ссылаясь на последующий этап S304). Конфигурация маршрута записывается в кэш процессора.
[0062] Например, главный процессор записывает, что: если процессору 231 нужно обратиться к процессору (например, процессору 241) в другом пуле с использованием группы 21 NC, то порт, который нужно использовать, является портом, подключенным к NC 211, среди 3 портов процессора 231; если процессору 231 нужно обратиться к процессору (например, процессору 241) в другом пуле с использованием группы 22 NC, то порт, который нужно использовать, является портом, указывающим на NC 221, среди 3 портов процессора 231, то есть портом между процессором 231 и процессором 232. Если первым является порт, сконфигурированный в настоящее время процессором 231 для обращения к другому пулу, то это означает, что процессор 231 выполняет доступ между пулами с использованием первой группы NC. В соответствии с этим способом можно получить все процессоры в многопроцессорной системе, которые выполняют доступ между пулами с использованием первой группы NC.
[0063] Например, главный процессор может записать в кэш исходящие порты, используемые каждым процессором для обращения к разным адресам памяти. После считывания кэша главного процессора главный процессор может узнать, какие процессоры используют первую группу NC для выполнения доступа между пулами. В качестве альтернативы независимое управляющее устройство может записывать такую информацию и предоставлять информацию для главного процессора.
[0064] Используя фиг. 2 в качестве примера, когда процессор 231 обращается к адресу памяти, который не находится в пуле процессора 231, используется порт, который подключается к NC 211 и который находится в процессоре 231. Процессор включает в себя ядро, агент кэша (Cache Agent, CA) и домашний агент (Home Agent, HA). CA управляет кэшем, а HA управляет запоминающим устройством. Когда требуются данные, ядро процессора сначала использует CA ядра процессора для поиска в кэше, управляемом CA, а если данные не найдены, использует HA для поиска в запоминающем устройстве, управляемом HA.
[0065] HA, который предоставляет данные, и ядро, которое отправляет запрос доступа, могут располагаться в одном процессоре или в разных процессорах. Этот вариант осуществления описывает HA, который предоставляет данные, и придает значение HA, расположенному в другом пуле QPI.
[0066] В этом варианте осуществления настоящего изобретения состояние данных процессора относится к состоянию данных, которые находятся в кэше процессора и которые получены процессором. Состояние данных записывается в кэш процессора и управляется посредством CA.
[0067] Если процессор когда-либо обращался к данным другого процессора (в частности, данные могут быть данными в запоминающем устройстве, управляемом HA другого процессора), то процессор, который инициирует доступ, может записать текущее состояние полученных данных. В характерном процессе пакетной передачи исходный процессор инициирует доступ, а приемный процессор предоставляет пакет. В частности, приемный процессор получает данные из запоминающего устройства с использованием HA приемного процессора, а затем предоставляет данные для исходного процессора. Состояние данных, записанное процессором, является состоянием данных (например, пакета), которые получены процессором, когда процессор служит в качестве исходного процессора, и состояние данных соответствует приемному процессору, к которому запрашивается доступ. В соответствии с кэш-когерентным протоколом (cache coherency protocol) исходный процессор запроса доступа после получения нужных данных записывает состояние полученных данных в свой кэш. Состояния включают в себя: эксклюзивное (Exclusive, E) состояние, недопустимое (Invalid, I) состояние, совместно используемое (Share, S) состояние и измененное (Modify, M) состояние. Эти состояния отмечаются по адресу памяти (строка кэша). Адрес памяти может дополнительно записывать адрес данных в запоминающем устройстве.
[0068] Состояние M указывает, что данные, отмеченные по адресу памяти, изменены (недействительны) исходным процессором и расходятся с исходными данными, предоставленными приемным процессором. После того как измененные данные записываются обратно в запоминающее устройство, состояние по адресу памяти можно поменять на состояние E. Состояние E указывает, что данные, отмеченные по адресу памяти, не изменены (достоверные) и согласуются с данными в запоминающем устройстве. Состояние S означает, что данные, отмеченные по адресу памяти, могут быть буферизованы несколькими процессорами, и данные во всех кэшах согласуются с данными в запоминающем устройстве. Состояние I указывает, что данные недействительны, например, другой процессор мог изменить данные, отмеченные по адресу памяти.
[0069] NC также может записывать состояния данных. Когда процессор передает пакет между пулами и когда пакет между пулами проходит через NC, NC записывает состояние данных, чтобы записанное NC состояние данных оставалось согласованным с состоянием данных, записанным исходным процессором пакета. При последующем доступе между пулами другой процессор может узнать состояние данных процессора с использованием NC, что быстрее по сравнению с практикой получения состояния данных от процессора.
[0070] В этом варианте осуществления конфигурацию маршрута у всех процессоров, которые обратились к другим пулам с использованием группы 21 NC, нужно изменить для указания на группу 22 NC, а не на группу 21 NC. Поскольку такие процессоры не служили в качестве исходного процессора для приема пакета с использованием группы 22 NC, в NC не записывается никакое соответствующее состояние данных. То есть в записи состояния у NC соответствующим состоянием данных является состояние I. Путем изменения состояния, записанного в процессорах, которые отправляют пакеты с использованием группы 21 NC, на состояние I можно сохранить согласованными состояния данных между NC и процессорами.
[0071] Необязательный вид реализации конфигурирования состояния данных, записанного процессорами, которые выполняют доступ между пулами с использованием первой группы NC, в недопустимое состояние включает в себя две части. Первая часть: Главный процессор указывает процессорам удалить данные, буферизованные процессорами, чтобы состояние M данных в процессорах поменялось на состояние I, где очистка кэша может относиться, в частности, к возврату буферизованных данных в запоминающее устройство, которое предоставляет данные. Вторая часть: Главный процессор указывает NC в первой группе NC сбросить состояние данных, записанное NC, чтобы состояние S и состояние E, записанные в NC, поменялись на состояние I, и состояние S и состояние E процессора соответственно также поменялись на состояние I. Две части операций инициируются главным процессором с использованием команд. Нижеследующее предоставляет конкретную интерпретацию.
[0072] Первая часть: Ядро процессора исполняет команду очистки кэша и, соответственно, записывает данные в измененном состоянии, записанном в процессоре, в запоминающее устройство, а затем меняет состояние данных с измененного на недопустимое. К тому же в процессе записи данных в запоминающее устройство данные могут проходить через NC в первой группе NC. NC в первой группе NC также изменяет соответствующее состояние справочника, записанное кэшем справочника в NC, с измененного на недопустимое, которое остается согласованным с записанным в процессоре состоянием справочника у данных, к которым обращаются.
[0073] Вторая часть: (1) NC в первой группе NC запрашивает состояние данных в кэше NC (когда процессоры обращаются друг к другу с использованием NC, NC записывает состояние данных, к которым обращаются), получает записи в состоянии S и в состоянии E в настоящее время и отправляет сообщение слежения процессорам, у которых есть записи в S-состоянии или E-состоянии. (2) Процессор, который принимает сообщение слежения, понижает записи в S-состоянии и E-состоянии до состояния I, а затем отправляет к NC ответное сообщение. После приема ответного сообщения NC также понижает состояние S и состояние E, записанные NC, до состояния I. Процессор, который принимает сообщение слежения, является процессором, который когда-либо обращался к процессору в другом пуле QPI с использованием первой группы NC.
[0074] S303. Главный процессор инициирует отключение системы.
[0075] Следует отметить, что оперативная замена NC относится не только к непрерывности или прерыванию данных по шине, но также влияет на рабочий режим и возможности всей многопроцессорной системы. Поэтому удаление NC, когда многопроцессорная система находится в отключенном состоянии, может предотвращать эксплуатационные ошибки процессора, вызванные удалением NC. Когда многопроцессорная система находится в отключенном состоянии, все процессоры приостанавливают обращение к запоминающему устройству и ресурсам интерфейса ввода/вывода; блокируется упреждающая выборка, прерывание и т. п., которые инициируются интерфейсом ввода/вывода, и указатель команд процессора ограничивается в программном цикле.
[0076] Если главный процессор содержит несколько ядер, то в диапазон отключения системы входят все процессоры, которые включают в себя главный процессор. Главный процессор может оставить одно или несколько ядер неотключенными, а оставшиеся ядра становятся отключенными. Все ядра других процессоров отключаются. Ядро не в отключенном состоянии в главном процессоре используется для выполнения последующих операций.
[0077] Если главный процессор содержит одно ядро, то отключение системы означает, что главный процессор не отключается, но все ядра других процессоров отключаются. Поскольку это редкий случай, что главный процессор содержит одно ядро, для нижеследующего описания в качестве примера используется сценарий, в котором главный процессор содержит несколько ядер.
[0078] Процессор 234 может отключить ядро, которое нужно отключить. Другие процессоры могут отключаться несколькими способами. Необязательный способ: Процессор 234 напрямую изменяет регистр отключения у других процессоров, и процессоры, чьи регистры отключения изменяются, становятся отключенными. Другой необязательный способ: Процессор 234 транслирует пакет отключения во всей многопроцессорной системе, и процессор, который принимает пакет, начинает операцию отключения и переводит сам процессор в отключенное состояние. Нижеследующее приводит подробное описание, используя в качестве примера последний способ.
[0079] Команда отключения поступает в двух типах. Один тип: Команда отключения может непосредственно изменять конфигурацию регистров отключения у других процессоров, и процессоры, чьи регистры отключения конфигурируются отключенными, входят в отключенное состояние. Другой тип: Команда отключения является командой, отправляемой ядрам других процессоров, и ядро процессора, который принимает команду, запускает программу отключения, чтобы процессор отключился.
[0080] Для процессора 231, процессора 232 и процессора 233, которые находятся в том же пуле QPI, что и процессор 234, процессор 234 передает пакет отключения с использованием шины QPI между процессорами в пуле. Процессор 231 и процессор 233 могут напрямую принимать пакет отключения от процессора 234, а процессор 232 может принимать пакет отключения, перенаправленный процессором 231 или процессором 233.
[0081] Для процессоров, которые не находятся в том же пуле QPI, что и процессор 234, например, процессоров в пуле 24 QPI и пуле 25 QPI, процессор 234 отправляет пакет отключения группе NC, а группа NC передает пакет отключения в пул 24 QPI и пул 25 QPI. Процессор, который принимает пакет отключения, перенаправляет пакет отключения в пул, и в конечном счете все процессоры принимают пакет отключения.
[0082] Например, процессор 234 отправляет пакет отключения процессору 241 с использованием NC 211 и NC 212. Процессор 241 продолжает отправку пакета отключения с использованием шины QPI между процессорами, чтобы все процессоры в пуле 24 QPI приняли пакет отключения. NC 212 дополнительно отправляет пакет отключения к NC 213, а NC 213 отправляет пакет отключения процессору 251. Процессор 251 продолжает отправку пакета отключения с использованием шины QPI между процессорами, чтобы все процессоры в пуле 25 QPI приняли пакет отключения.
[0083] S304. Главный процессор указывает всем процессорам, которые выполняют доступ между пулами с использованием первой группы NC, изменить конфигурацию маршрута, чтобы все процессоры, которые выполняют доступ между пулами с использованием первой группы NC, переключились на выполнение доступа между пулами с использованием второй группы NC.
[0084] Регистр маршрутов процессора может записывать информацию о маршруте, где информация о маршруте может быть соответствием между адресом памяти и портом процессора. Регистр маршрутов в NC также записывает информацию о маршруте, где информация о маршруте может быть соответствием между адресом памяти и портом NC. Процессор и NC отправляют пакеты запроса в соответствии с портом, записанным в информации о маршруте, чтобы пакет запроса отправлялся по маршруту. Весь путь передачи запроса доступа можно изменить путем изменения информации о маршруте в регистре маршрутов узла, через который проходит маршрут. Регистр маршрутов может быть интегрирован в кэш процессора.
[0085] Если переключение нужно выполнить таким образом, чтобы процессор, который передает пакет с использованием второй группы NC, напрямую подключался к NC во второй группе NC, то переключение относится к конфигурированию порта, используемого процессором для доступа между пулами, в порт, подключенный напрямую к NC во второй группе NC; либо, если переключение нужно выполнить, чтобы между процессором, который передает пакет с использованием второй группы NC, и NC во второй группе NC существовало не прямое соединение, а другой процессор, то переключение относится к конфигурированию порта, используемого процессором для доступа между пулами, в порт, подключенный к другому процессору. После приема запроса доступа другой процессор может перенаправить запрос доступа к NC во второй группе NC.
[0086] Для примера доступ процессора 231 к процессору 241 является доступом между пулами, и предполагается, что исходно сконфигурированным портом доступа является порт, подключенный к NC 211, среди портов процессора 231. После того как изменяется регистр маршрутов, в новой конфигурации маршрута порт меняется на порт, подключенный к процессору 232, среди портов процессора 231. После того как доступ приходит в процессор 232, в конфигурации маршрута у процессора 232 порт, используемый для обращения к процессору 241, является портом между процессором 232 и NC 221. Поэтому процессор 232 может перенаправить доступ к NC 221, и NC 221 продолжает перенаправление доступа, чтобы доступ мог прийти к процессору 241. Всем путем доступа является процессор 231 - процессор 232 - процессор 233 - NC 221 - процессор 242 - процессор 241. Следует отметить, что главный процессор 231 решает перенаправить запрос доступа от процессора 231 к процессору 232, а не к процессору 234, потому что главный процессор записывает топологическое взаимоотношение между процессорами в многопроцессорной системе и конфигурацию исходящих портов у каждого процессора. Поэтому можно выяснить, что доступ между пулами с использованием процессора 232 может выполняться относительно прямо с использованием группы 22 NC, а затем процессору 231 указывают конфигурировать порт маршрута в порт, соответствующий процессору 232.
[0087] Конечно, в зависимости от разных политик в другом варианте осуществления главный процессор 231 также может разрешить процессору 231 перенаправить запрос доступа к процессору 234, процессор 234 перенаправляет запрос доступа у процессору 233, а затем процессор 233 перенаправляет запрос доступа к NC 221.
[0088] Предполагается, что процессор 234 обращается к процессору 252, и предполагается, что исходно сконфигурированный порт является портом между процессором 234 и NC 211. После того как изменяется регистр маршрутов, в новой конфигурации порт меняется на порт между процессором 234 и NC 221.
[0089] Видно, что порты процессора (например, один процессор может содержать 3 порта или больше) подключаются соответственно к разным следующим узлам (например, узлами являются NC или процессоры). После приема запроса доступа, отправленного из порта процессора, другой узел продолжает перенаправление до тех пор, пока запрос доступа не поступит в приемный процессор, к которому нужно обратиться. В процессе перенаправления запрос доступа, отправленный из порта процессора, может проходить через вторую группу NC, и этот порт является портом, который выполняет доступ между пулами с использованием второй группы NC. Поэтому в регистре маршрутов порт, используемый для доступа к процессору в другом пуле, может конфигурироваться в порт, который выполняет доступ между пулами с использованием второй группы NC, где процессор в другом пуле можно пометить адресом памяти, управляемым процессором.
[0090] После этапа S304 NC можно удалить.
[0091] S305. Главный процессор отменяет отключение системы после завершения изменения конфигурации маршрута.
[0092] Этапы отмены отключения аналогичны процессу отключения и включают в себя следующие этапы: Процессор 234 отменяет отключенное состояние у отключенных ядер процессора; и процессор с использованием команды отмены отключения изменяет конфигурации других процессоров, чтобы отменить состояние отключения у других процессоров. Для других процессоров в пуле 23 QPI команда отмены отключения может быть отправлена напрямую процессором 234 без перенаправления посредством NC; для процессоров в других пулах QPI команда отмены отключения, отправленная процессором 234, может быть перенаправлена посредством NC 22. Процесс отмены отключения системы главным процессором аналогичен процессу инициирования отключения системы, и можно сослаться на этап S303. Отличие состоит в том, что команда отключения может передаваться группой 21 NC, а команда отмены отключения может передаваться только группой 22 NC.
[0093] Команда отмены отключения поступает в двух типах. Один тип: Команда отмены отключения может непосредственно изменять конфигурации связанных с состоянием регистров у других процессоров, и процессоры, чьи конфигурации регистров изменяются, отменяют отключенное состояние. Другой тип: Команда отмены отключения является командой, отправляемой ядрам других процессоров, и ядро процессора, который принимает команду, запускает программу отключения, чтобы процессор отменил отключение.
[0094] После того как отменяется отключение системы, каждый процессор восстанавливает нормальную работу. В этом случае вследствие изменения маршрута все процессоры в многопроцессорной системе проходят через группу 22 NC и уже не используют группу 21 NC при последующем приеме или передаче пакета между пулами QPI. Гарантируется, что после того как удаляется NC 211 в группе 21 NC, процессор, который исходно принимает и передает пакет между пулами с использованием группы 21 NC, может продолжить прием и передачу пакета между пулами QPI. То есть вышеупомянутый способ реализует оперативное удаление NC в многопроцессорной системе.
Вариант 2 осуществления
[0095] Ссылаясь на фиг. 4, нижеследующее описывает процесс добавления NC в существующую группу NC. Используя по-прежнему в качестве примера архитектуру системы на фиг. 2, процессор 234 является главным процессором. Новый NC 211, добавленный в группу 21 NC, в этом варианте осуществления называется другим целевым NC, чтобы отличаться от удаленного NC 211 в варианте 1 осуществления. Этот вариант осуществления может выполняться после варианта 1 осуществления и эквивалентен замене NC 211. Пока не указано специально, соответствующее описание в варианте 1 осуществления по-прежнему применимо в этом варианте осуществления.
[0096] Этот вариант осуществления можно использовать для: повторного использования первой группы NC после того, как другой целевой NC добавляется в первую группу NC, то есть для управления по меньшей мере одним процессором, который располагается в многопроцессорной системе и выполняет доступ между пулами с использованием второй группы NC, для переключения на выполнение доступа между пулами с использованием первой группы NC.
[0097] Этап S401: Главный процессор обнаруживает, что в первую группу NC добавляется другой целевой NC.
[0098] Для примера многопроцессорная система периодически обнаруживает состояние каждого гнезда, где гнездо используется для вставки NC, и состояние гнезда используется для указания, существует ли NC в гнезде. Таким образом, когда в гнездо добавляется новый NC, состояние можно изменить, и главный процессор может обнаружить вставку нового NC.
[0099] Предшествующее описание является не более чем примерным. Настоящее изобретение не ограничивает то, как главный процессор обнаруживает подключение другого целевого NC к первой группе NC. Например, в этом варианте осуществления настоящего изобретения пользователь может использовать кнопку, чтобы побудить главный процессор обнаружить состояние каждого гнезда.
[0100] S402. Главный процессор отправляет команду по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, чтобы указать процессору сконфигурировать записанное процессором состояние данных в состояние I.
[0101] На этом этапе процессор, которому нужно конфигурировать в состояние I, является процессором, готовым к выполнению переключения маршрутов на последующем этапе. Операция конфигурирования состояния данных в состояние I включает в себя: очистку кэша процессора, которому нужно конфигурировать в состояние I; и конфигурирование посредством NC, через который проходит процессор, которому нужно конфигурировать в состояние I, соответствующего состояния S и состояния E процессора в состояние I, чтобы состояние S и состояние E процессора поменялись соответственно на состояние I. За подробным процессом можно обратиться к этапу S302.
[0102] Могут существовать разные политики для выбора процессоров, которые нужно переключить на первую группу NC. Выбор может осуществляться в соответствии с производительностью двух групп NC или количеством пройденных узлов, когда выполняется доступ между процессорами.
[0103] S403. Главный процессор инициирует отключение системы.
[0104] За процессом отключения системы можно обратиться к этапу S303. Отличием от этапа S303 является: Информация об отключении на этапе S303 может распространяться между пулами с использованием группы 21 NC или распространяться между пулами с использованием группы 22 NC; однако на этапе S403 группа 21 NC не работает и информация об отключении может распространяться между пулами только с использованием группы 22 NC.
[0105] S404. Активизировать другой целевой NC для установления топологического взаимоотношения между другим целевым NC и исходным NC в первой группе NC.
[0106] Путем конфигурирования регистра маршрутов устанавливается взаимосвязь перенаправления между другим целевым NC и по меньшей мере одним исходным NC в первой группе NC. Если первая группа NC использует полностью взаимосвязанную структуру, то установленной взаимосвязью перенаправления является взаимосвязь перенаправления между другим целевым NC и всеми NC в первой группе NC. Таким образом данные, принятые другим целевым NC, могут перенаправляться к другим NC, и другие NC могут перенаправлять данные к другому целевому NC.
[0107] S405. Главный процессор использует команду для управления по меньшей мере одним процессором, который выполняет доступ между пулами с использованием второй группы NC, чтобы изменить маршрут таким образом, чтобы доступ между пулами выполнялся с использованием первой группы NC.
[0108] В частности, изменяется конфигурация регистра маршрутов по меньшей мере у одного процессора, который выполняет доступ между пулами с использованием второй группы NC, где по меньшей мере один процессор включает в себя процессор, который на этапе 402 конфигурирует состояние данных в состояние I, а также включает в себя процессор изначально в состоянии I. Порт, который записан в регистре маршрутов и который обращается к процессору в другом пуле, меняется на порт, который выполняет доступ между пулами с использованием первой группы NC.
[0109] По меньшей мере в одном процессоре, который выполняет доступ между пулами с использованием второй группы NC, состояние данных уже сконфигурировано в состояние I на этапе S402, и поэтому информацию о маршруте можно изменить на этом этапе.
[0110] Для этого этапа можно сослаться на этап 304, и здесь не приводятся никакие подробности.
[0111] Следует отметить, что определенный маршрут, который нужно переключить на первую группу NC, можно изменить в соответствии с политикой, и он не ограничивается этим вариантом осуществления настоящего изобретения. Например, количество маршрутов, которые проходят через две группы NC, можно выделить пропорционально в соответствии с производительностью двух групп NC, или путь, который проходит относительно небольшое количество процессоров/NC, выбирается и конфигурируется в качестве маршрута в соответствии с количеством процессоров/NC, пройденных между двумя конечными точками маршрута.
[0112] Для примера процессор 231 обращается к процессору 241. В соответствии с исходной конфигурацией маршрута у процессора 231 следующим узлом является процессор 232, и всем путем доступа может быть процессор 231 - процессор 232 - NC 221 - NC 222 - процессор 242 - процессор 241. После того как изменяется регистр маршрутов, следующий узел в регистре маршрутов конфигурируется в NC 211, и новым маршрутом является процессор 231 - NC 211 - NC 212 - процессор 241. Для другого примера процессор 234 обращается к процессору 252. Предполагается, что в исходной конфигурации маршрута у процессора 234 следующим узлом является процессор 233, и всем путем доступа может быть процессор 234 - процессор 233 - NC 221 - NC 222 - NC 223 - процессор 252. После того как изменяется регистр маршрутов, следующий узел в регистре маршрутов конфигурируется в NC 211, и весь путь доступа можно поменять на процессор 234 - NC 211 - NC 212 - NC 213 - процессор 251 - процессор 252.
[0113] На этом этапе необязательным является: Среди процессоров, которые выполняют доступ между пулами с использованием второй группы NC, процессор, подключенный напрямую к первой группе NC, переключается на выполнение доступа между пулами с использованием первой группы NC.
[0114] S406. После того как изменяется маршрут, главный процессор отменяет отключение системы.
[0115] Процессор 234 отменяет отключенное состояние у отключенных ядер процессора, и процессор 234 с использованием команды отмены отключения изменяет конфигурации других процессоров, чтобы отменить отключенное состояние у других процессоров. За подробным процессом отмены отключения обратимся к S305. После того как отменяется отключение системы в многопроцессорной системе, каждый процессор восстанавливает нормальную работу, и добавляется другой целевой NC.
[0116] Вышеупомянутые этапы реализуют то, что по меньшей мере один процессор, который выполняет доступ между пулами с использованием второй группы NC, переключается на выполнение доступа между пулами с использованием первой группы NC.
[0117] Вариант осуществления настоящего изобретения дополнительно предоставляет способ переключения маршрутов. Среди по меньшей мере одного процессора, который выполняет доступ между пулами с использованием второй группы NC, в зависимости от разных приемных процессоров, к которым обращаются между пулами, доступ между пулами к некоторым приемным процессорам переключается на доступ между пулами, выполняемый с использованием первой группы NC, а доступ между пулами к другим приемным процессорам по-прежнему выполняется с использованием второй группы NC. Нижеследующее приводит подробное описание.
[0118] На этапе S402 в этом варианте осуществления все состояния данных, записанные в регистре маршрутов процессора, могут конфигурироваться в состояние I. Данные, изображенные состояниями данных, которые нужно конфигурировать в состояние I, могут поступать от разных процессоров. Поэтому этот этап можно усовершенствовать следующим образом: Состояния данных группируются в зависимости от разных источников данных, состояния данных у данных, которые поступают от некоторых процессоров, конфигурируются в состояние I, а соответствующие состояния данных, которые поступают от других процессоров, остаются без изменений.
[0119] То есть этап S402 можно заменить этапом S407.
[0120] S407. Главный процессор отправляет команду по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, и процессор, который принимает команду, конфигурирует некоторые из записанных состояний данных в недопустимое состояние. Состояния данных, сконфигурированные в недопустимое состояние в соответствии с командой, могут быть состояниями данных, соответствующими некоторым приемным процессорам, к которым обращался главный процессор. Другими словами, для одного процессора состояния данных, записанные процессором, включают в себя состояния данных у данных, которые поступают от N приемных процессоров между пулами. На этом этапе состояния данных у данных, которые поступают от M приемных процессоров между пулами среди N приемных процессоров между пулами, конфигурируются в недопустимое состояние, где M<N. Приемный процессор, к которому обращаются, и процессор, который инициирует доступ, находятся в разных пулах QPI. Поэтому приемный процессор, к которому обращаются, кратко называется приемным процессором между пулами.
[0121] В частности, после получения данных, к которым обращаются, процессор может записать в кэш процессора состояния данных у данных, к которым обращаются. Предполагая, что количество приемных процессоров между пулами, к которым обращаются, равно N, процессор записывает состояния данных у данных, которые поступают от N процессоров. На этом этапе состояния данных у данных, которые поступают от M приемных процессоров между пулами среди N процессоров, конфигурируются в недопустимое состояние, где M<N, и M и N являются натуральными числами. Состояния данных у данных оставшихся N-M- процессоров остаются без изменений.
[0122] При необходимости M процессоров подключаются напрямую к первой группе NC. После того как выполняется переключение маршрутов на этапе S408, доступ между пулами к M процессорам может выполняться без перенаправления от других процессоров.
[0123] Состояние данных, записанное в процессоре, является состоянием данных у данных, к которым обращается процессор. Состояние данных соответствует данным, буферизованным в процессоре, и соответствует адресу памяти, из которого поступают данные. Адрес памяти, из которого поступают данные, соответствует процессору, который управляет адресом памяти. Поэтому состояние данных может соответствовать процессору (приемному процессору), который предоставляет данные.
[0124] Для простоты понимания приводится дополнительная интерпретация: Среди по меньшей мере одного процессора, который выполняет доступ между пулами с использованием второй группы NC, состояние данных, записанное в каждом процессоре, является состоянием данных у данных, к которым когда-либо обращался процессор, и данные, к которым когда-либо обращался процессор, могут поступать от других процессоров, где процессоры также могут называться процессорами, к которым обращаются, или приемными процессорами. Среди приемных процессоров всего N процессоров находятся в пуле QPI, отличном от пула у процессора, который инициирует доступ (исходный процессор). В этом варианте осуществления состояния данных только у M приемных процессоров среди N процессоров конфигурируются в недопустимое состояние. Соответственно, на последующем этапе переключение маршрутов выполняется над M процессорами.
[0125] Доступно несколько алгоритмов для выбора процессоров, от которых поступают состояния данных у данных. Например, в соответствии с количеством процессорных узлов, пройденных между исходным процессором и приемным процессором в транзакции доступа, если проходят относительно небольшое количество других процессоров, когда исходный процессор обращается к приемному процессору с использованием первой группы NC, то маршрут переключается на первую группу NC; в противном случае по-прежнему используется вторая группа NC.
[0126] Например, в показанной на фиг. 2 архитектуре процессор 231 записывает состояние данных, соответствующее процессору 241, и состояние данных, соответствующее процессору 242. В соответствии с этапом S402 все состояния данных у процессора 231 конфигурируются в состояние I; и в соответствии с этапом S407 только состояние данных, которое соответствует процессору 241 и находится в процессоре 231, может конфигурироваться в состояние I, а состояние данных, соответствующее процессору 242, остается без изменений.
[0127] Если этап S402 заменяется этапом S407, то этап S405 нужно заменить этапом S408.
[0128] S408. Главный процессор указывает по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, переключить доступ между пулами к некоторым приемным процессорам между пулами на доступ между пулами, выполняемый с использованием первой группы NC. То есть доступ между пулами к M процессорам, соответствующим состояниям данных, сконфигурированным в состояние I, на этапе S407 переключается на доступ между пулами, выполняемый с использованием первой группы NC. В частности, порт для доступа между пулами в регистрах маршрутов процессоров конфигурируется в порт, подключенный к целевому NC в процессоре. Доступ к приемным процессорам между пулами, соответствующим оставшимся состояниям данных, может оставаться без изменений.
[0129] Используя пример, приведенный на этапе S406, доступ процессора 231 к процессору 241 можно переключить на доступ, выполняемый с использованием первой группы NC, а доступ процессора 231 к процессору 242 по-прежнему использует вторую группу NC.
[0130] В варианте осуществления (способ 2 на фиг. 4), образованном этапами S401, S407, S403, S408 и S405, управление маршрутами становится точнее, и эффективность доступа к процессору между пулами, выполняемого с использованием маршрута, можно повысить по сравнению с вариантом осуществления (способ 1 на фиг. 4), образованным этапами S401, S402, S403, S404 и S405.
[0131] Вариант 1 осуществления и вариант 2 осуществления описали процесс оперативного удаления NC и процесс оперативного добавления NC соответственно. При объединении эти два процесса являются процессом оперативной замены NC. Также они могут использоваться отдельно как два независимых процесса. Можно оперативно добавлять или оперативно удалять один NC или несколько NC одновременно.
Вариант 3 осуществления
[0132] В варианте 1 осуществления после того, как удаляется целевой NC, вся группа NC, в которой располагается целевой NC, больше не перенаправляет данные. Эту практику отличает высокая скорость переключения и простая работа.
[0133] Ссылаясь на фиг. 5, этот вариант осуществления предоставляет другой способ оперативного удаления NC. После того как удаляется целевой NC, по меньшей мере один NC среди оставшихся NC в группе NC, в которой располагается целевой NC, может продолжить обычную работу, то есть может перенаправлять данные. По сравнению с решением в варианте 1 осуществления повышается эффективность использования NC. Нижеследующее подробно описывает этот вариант осуществления настоящего изобретения, ссылаясь по-прежнему на архитектуру на фиг. 2.
[0134] S501. Главный процессор принимает сигнал, указывающий, что нужно удалить целевой NC в первой группе NC.
[0135] Целевой NC является удаляемым NC, а именно NC 211 в этом варианте осуществления. Этот этап совпадает с этапом S301 и здесь не повторяется.
[0136] S502. Главный процессор указывает всем процессорам в многопроцессорной системе, которые выполняют доступ между пулами с использованием целевого NC, конфигурировать записанное процессорами состояние данных в недопустимое состояние.
[0137] Этот этап аналогичен этапу S302. Можно обратиться к содержанию этапа S302, и этот этап здесь не излагается подробно. Отличие состоит в том, что на этапе S302 запись данных у процессора, который выполняет доступ между пулами с использованием первой группы NC, конфигурируется в недопустимое состояние; на этапе S502 запись данных у процессора, который выполняет доступ между пулами с использованием целевого NC, конфигурируется в недопустимое состояние, и записанные состояния данных у других процессоров, которые выполняют доступ между пулами с использованием других NC в первой группе NC, а не целевого NC, могут оставаться без изменений. Поэтому в этом патенте сокращается диапазон затрагиваемых процессоров.
[0138] Процессоры, которые выполняют доступ между пулами с использованием целевого NC, включают в себя процессор, который выполняет доступ между пулами с непосредственным использованием целевого NC, а также включают в себя процессор, который выполняет доступ между пулами с косвенным использованием целевого NC после того, как запрос доступа перенаправляется другим NC или другим процессором.
[0139] S503. Главный процессор инициирует отключение системы.
[0140] Если главный процессор содержит несколько ядер, то в диапазон отключения системы входят все процессоры, которые включают в себя главный процессор. Как упоминалось выше, если главный процессор содержит несколько ядер, то главный процессор может оставить по меньшей мере одно ядро неотключенным, а оставшиеся ядра становятся отключенными; все ядра других процессоров отключаются. Ядро не в отключенном состоянии в главном процессоре используется для выполнения последующих операций.
[0141] Процесс отключения является таким же, как и S303, и подробно здесь не описывается.
[0142] S504. Главный процессор указывает оставшимся NC в первой группе NC обновить конфигурацию маршрута, чтобы изолировать целевой NC.
[0143] Поскольку целевой NC нужно удалить, нужно изменить канал передачи сигнала между оставшимися NC в первой группе NC. Посредством конфигурации маршрута в оставшихся NC в первой группе NC можно изолировать целевой NC, чтобы препятствовать продолжению отправки информации (например, пакета или управляющей информации) другими NC к целевому NC. Поэтому нужно обновить маршруты, записанные оставшимися NC. Не всем оставшимся NC в первой группе NC нужно обновлять конфигурацию маршрута. Например, можно обновить конфигурацию маршрута у NC, подключенного напрямую к целевому NC, а конфигурация маршрута у оставшихся NC остается без изменений.
[0144] При необходимости результат регулирования первой группы NC на этом этапе эквивалентен конфигурации маршрута у каждого NC в первой группе NC в случае, в котором целевой NC никогда не существовал.
[0145] В этом варианте осуществления после того, как удаляется NC 211, исчезает канал сигнала между NC 214, NC 212 и NC 211. Поэтому нужно реконфигурировать маршрут у NC, который не удаляется из группы 21 NC, включая удаление связанной с NC 211 информации о маршруте в NC 214 и NC 212, которые напрямую подключены к NC 211. Например, в исходной конфигурации маршрута у NC 214, если нужно обратиться к пулу 23 QPI, то следующим NC, который нужно пройти, является NC 211. Теперь нужно удалить NC 211. Поэтому в конфигурации маршрута у NC 214 следующий NC, который нужно пройти для обращения к пулу 23 QPI, можно конфигурировать в NC 212.
[0146] К тому же, если добавляется передача данных от процессора к группе NC, то в соответствующий NC можно добавить информацию о маршруте к приемному процессору. Вновь добавленная информация о маршруте записывает порт, который указывает на приемный процессор. Информацию о маршруте можно получить с помощью NC путем изучения в процессе выполнения транзакции доступа. Если информация не добавляется, то запрос доступа также можно отправить приемному процессору в широковещательном режиме.
[0147] Например, изначально процессор 231 выполняет доступ между пулами к процессору 241 с использованием NC 211. После того как удаляется NC 211, посредством NC 221 принимается запрос доступа между пулами от процессора 231. Поэтому в конфигурацию маршрута у NC 221 можно добавить информацию о портах для обращения к процессору 241.
[0148] Результат регулирования группы 21 NC на этом этапе эквивалентен конфигурации маршрута у каждого NC в группе 21 NC после того, как группа 21 NC подключается к каждому пулу QPI, в случае, в котором NC 211 никогда не существовал.
[0149] Предшествующее является простым примером, а не полным описанием. В особенности в случае, в котором в пуле 21 QPI имеется больше NC, регулировка конфигурации маршрута у NC в группе 21 NC сложнее.
[0150] Этап S504 и последующий этап S505 не чувствительны к порядку, например, они могут выполняться одновременно, или любой этап выполняется первым.
[0151] S505. Главный процессор указывает всем процессорам, которые выполняют доступ между пулами с использованием целевого NC, изменить их конфигурации маршрутов, чтобы все процессоры, которые выполняют доступ между пулами с использованием целевого NC, переключились на выполнение доступа между пулами с использованием второй группы NC.
[0152] Главный процессор изучает топологию всей многопроцессорной системы, то есть главный процессор знает взаимосвязи соединений между процессорами и порт, используемый каждым процессором для внешнего доступа. Этот этап можно реализовать путем изменения порта, используемого целевым NC для обращения к другому пулу QPI.
[0153] Принципы этого этапа такие же, как у этапа S304. Можно обратиться к этапу S304, и здесь не приводятся никакие подробности. Отличие состоит в том, что на этом этапе переключается меньше процессоров, то есть изменяются конфигурации маршрутов у меньшего количества процессоров.
[0154] После этапа S505 NC можно удалить.
[0155] S506. Главный процессор отменяет отключение системы.
[0156] За этим этапом можно обратиться к этапу S305.
Вариант 4 осуществления
[0157] Ссылаясь на фиг. 6, в этом варианте осуществления новый NC (в дальнейшем называемый целевым NC) добавляется в первую группу NC в случае, в котором работает существующий NC в первой группе NC, чтобы реализовать совместную работу целевого NC и существующего NC в первой группе NC. Целевой NC может быть подключен к первому пулу QPI. По меньшей мере один процессор, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, переключается на выполнение доступа между пулами с использованием целевого NC.
[0158] Например, после того как в варианте 3 осуществления оперативно удаляется NC 211, новый NC 211 оперативно добавляется в группу 21 NC. Поэтому процессор 231, который напрямую подключен к NC 211, может переключиться на доступ к другому пулу QPI с использованием целевого NC. Этот вариант осуществления аналогичен варианту 2 осуществления и отличается в сравнительно небольшом диапазоне. В этом варианте осуществления процессоры, чей маршрут доступа между пулами переключается, ограничены процессорами в первом пуле QPI; в варианте 2 осуществления не накладывается такого ограничения. К тому же процессор, чей маршрут переключается в этом варианте осуществления, выполняет доступ между пулами с использованием целевого NC; в варианте 2 осуществления процессор, чей маршрут переключается, выполняет доступ между пулами с использованием первой группы NC. Поскольку основная часть этого варианта осуществления аналогична варианту 2 осуществления, за большей частью содержания этого варианта осуществления можно обратиться к варианту 2 осуществления.
[0159] Этот вариант осуществления может выполняться после варианта 3 осуществления, чтобы сообща образовать способ замены NC. Этот вариант осуществления также может выполняться отдельно, чтобы новый NC добавлялся к нормально работающей группе NC.
[0160] S601. Главный процессор обнаруживает, что в первую группу NC добавляется целевой NC.
[0161] Когда выполняется S601, в первой группе NC существует нормально работающий NC. То есть по меньшей мере один NC находится в состоянии, готовом для перенаправления данных, или даже перенаправляет данные. В варианте 2 осуществления все NC в первой группе NC уже не работают, когда выполняется этап S401.
[0162] Этот этап совпадает с этапом S401 и здесь не излагается подробно.
[0163] S602. Главный процессор указывает конфигурировать состояние данных, записанное по меньшей мере в одном процессоре, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, в состояние I.
[0164] На этом этапе процессор, которому нужно конфигурировать в состояние I, является процессором, готовым к выполнению переключения маршрутов на последующем этапе.
[0165] Могут использоваться разные алгоритмы для выбора определенных процессоров. Например, в соответствии с производительностью целевого NC некоторые процессоры, которые выполняют доступ между пулами с использованием второй группы NC, выбираются для передачи пакета с использованием целевого NC.
[0166] В отношении того, как конфигурировать состояние данных, записанное в процессоре, в состояние I, обратимся к этапу S402.
[0167] S603. Главный процессор инициирует отключение системы.
[0168] В отношении того, как выполнять отключение системы, обратимся к этапу S403.
[0169] S604. Активизировать целевой NC для установления топологического взаимоотношения между целевым NC и исходным NC в первой группе NC.
[0170] См. этап S404.
[0171] S605. Главный процессор отправляет команду для управления по меньшей мере одним процессором, чтобы изменить конфигурацию маршрута по меньшей мере у одного процессора, чтобы по меньшей мере один процессор переключился на выполнение доступа между пулами с использованием первой группы NC. В частности, изменяется конфигурация маршрута в регистре маршрутов у каждого из по меньшей мере одного процессора, чтобы порт, который записан в регистре маршрутов и который обращается к процессору в другом пуле, конфигурировался в порт, который выполняет доступ между пулами с использованием целевого NC, например конфигурировался в порт, подключенный напрямую к целевому NC, среди портов по меньшей мере одного процессора.
[0172] За подробностями этого этапа можно обратиться к этапу S405, и здесь не приводятся никакие подробности. Отличием является: на этапе S405 не определяется пул QPI, в котором располагается процессор, чья конфигурация маршрута изменяется; а в этом варианте осуществления процессор, чья конфигурация маршрута изменяется, располагается в первом пуле QPI.
[0173] S606. После того как изменяется маршрут, главный процессор отменяет отключение системы.
[0174] Процесс отмены отключения аналогичен этапу S406, и можно обратиться к этапу S406.
[0175] Аналогично варианту 2 осуществления, этот вариант осуществления настоящего изобретения дополнительно предоставляет способ переключения маршрутов. В зависимости от разных приемных процессоров выбирается маршрут, который нужно переключить. На фиг. 6 два способа отмечены как способ 1 и способ 2. Этапы S601, S602, S603, S604, S605 и S606 называются способом 1. Этапы S601, S607, S603, S604, S608 и S606 называются способом 2.
[0176] Способ 1 и способ 2 содержат два разных этапа. Среди по меньшей мере одного процессора в первом пуле QPI, который выполняет доступ между пулами с использованием второй группы NC, в зависимости от разных приемных процессоров, к которым обращаются между пулами, доступ между пулами к некоторым приемным процессорам переключается на доступ между пулами, выполняемый с использованием первой группы NC, а доступ между пулами к другим приемным процессорам по-прежнему выполняется с использованием второй группы NC. Это эквивалентно замене этапа S602 следующим этапом S607 и замене этапа S605 этапом S608.
[0177] S607. Главный процессор отправляет команду по меньшей мере одному процессору, который находится в первом пуле QPI и который выполняет доступ между пулами с использованием второй группы NC, и процессор, который принимает команду, конфигурирует некоторые из записанных состояний данных в недопустимое состояние. Другими словами, для одного процессора состояния данных, записанные процессором, являются состояниями данных у данных, которые поступают от N приемных процессоров между пулами. На этом этапе состояния данных у данных, которые поступают от M приемных процессоров между пулами, конфигурируются в недопустимое состояние, где M<N.
[0178] За подробностями и примерами этого этапа можно обратиться к этапу S407, и здесь не приводятся никакие подробности. По сравнению с S407 отличием является: на этапе S607 процессоры, чье состояние данных конфигурируется в недопустимое состояние, ограничены первым пулом QPI; на этапе S407 не накладывается никакого ограничения по пулу QPI.
[0179] S608. Главный процессор указывает по меньшей мере одному процессору, который выполняет доступ между пулами с использованием второй группы NC, переключить доступ между пулами к некоторым приемным процессорам на доступ между пулами, выполняемый с использованием первой группы NC. Например, доступ между пулами к процессору, соответствующему состоянию данных, сконфигурированному в состояние I, на этапе S607 переключается на доступ между пулами, выполняемый с использованием целевого NC. В частности, в регистре маршрутов процессора, который выполняет доступ между пулами, порт, используемый для доступа между пулами, конфигурируется в порт процессора, подключенный к целевому NC, а доступ к приемным процессорам, соответствующим оставшимся состояниям данных, может оставаться без изменений.
[0180] За этим этапом можно обратиться к этапу S408.
[0181] Следует отметить, что вышеупомянутые варианты осуществления описали многопроцессорную систему, и настоящее изобретение дополнительно предоставляет вариант осуществления, связанный с компьютером, где компьютер включает в себя вышеупомянутую многопроцессорную систему и дополнительно включает в себя BIOS, где BIOS предоставляет программу для главного процессора, и главный процессор отправляет команду управления и команду контроля путем выполнения программы. Процессор также может быть процессором, который подключается с использованием шины CC и выполняет связь с использованием NC. Шина QPI может использоваться между пулом QPI и группой NC, а между NC может использоваться шина QPI или другая шина.
[0182] Каждый аспект настоящего изобретения или возможный вид реализации каждого аспекта можно реализовать, в частности, в виде системы, способа или компьютерного программного продукта. Поэтому каждый аспект настоящего изобретения или возможный вид реализации каждого аспекта может использовать формы только аппаратных вариантов осуществления, только программных вариантов осуществления (включая микропрограммное обеспечение, резидентное программное обеспечение и т. п.) или вариантов осуществления с сочетанием программного обеспечения и аппаратных средств, которые в этом документе единообразно называются "схемой", "модулем" или "системой". К тому же каждый аспект настоящего изобретения или возможный вид реализации каждого аспекта может принимать вид компьютерного программного продукта, где компьютерный программный продукт относится к машиночитаемому программному коду, сохраненному на машиночитаемом носителе.
[0183] Машиночитаемый носитель может быть машиночитаемой средой передачи сигнала или машиночитаемым носителем информации. Машиночитаемый носитель информации включает в себя, но не ограничивается, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, устройство либо прибор, или любое подходящие их сочетание, например оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), стираемое программируемое постоянное запоминающее устройство (EPROM или флэш-память), оптическое волокно и постоянное запоминающее устройство на компакт-диске (CD-ROM).
[0184] Процессор в компьютере считывает машиночитаемый программный код, сохраненный на машиночитаемом носителе, чтобы процессор мог выполнять функцию и действие, заданные на каждом этапе или сочетании этапов на логической блок-схеме; прибор создается для реализации функции и действия, заданных в каждом блоке или сочетании блоков на блок-схеме.
[0185] Очевидно, что специалист в данной области техники может вносить различные модификации и изменения в настоящее изобретение. Настоящее изобретение предназначено для охвата этих модификаций и изменений при условии, что они входят в объем охраны, заданный нижеследующей формулой изобретения и эквивалентными ей технологиями.