СПОСОБ УСТРАНЕНИЯ ИСКЛЮЧИТЕЛЬНОЙ СИТУАЦИИ В ОДНОМ ИЗ ЯДЕР МНОГОЯДЕРНОЙ СИСТЕМЫ
METHOD TO ELIMINATE EXCEPTION CONDITION IN ONE OF NUCLEI OF MULTINUCLEAR SYSTEM

Область техники
Изобретение относится к системе с многоядерным центральным процессором (ЦПУ) и, в частности, к способу устранения исключительной ситуации в одном ядре многоядерной системы.
Предпосылки создания изобретения
В системах со встроенным многоядерным центральным процессорным устройством (ЦПУ) (здесь и далее именуемых как многоядерные системы) исключительные ситуации могут возникать на одном ядре, вне зависимости от того, является ли система симметричной многоядерной системой или многоядерной системой типа "главный-подчиненный". Понятие "исключительная ситуация" включает в себя недопустимые команды, ошибки выравнивания, ошибки КЭШа, ошибки шины данных и т.д. Существует много причин для возникновения исключительных ситуаций. Одной из причин может быть случайная ошибка технического оборудования или неправильные данные, которые могут вызвать исключительную ситуацию при выполнении программы, а другой причиной может быть то, что система выполняет ветвь, в которую трудно войти в программе. Однако большинство из этих ошибок просто причиняет одноразовый вред системе, так как систематические ошибки могут быть обнаружены и исправлены в ходе тестирования системы.
В известных технических решениях обычным подходом к устранению исключительной ситуации, возникающей на одном ядре, является просто запись всей информации об исключительной ситуации и, затем, перезапуск всей системы. Хотя такой подход может восстановить функционирование системы, он вызовет паузу в работе всех служб и сократит рабочее время системы. Для существующих систем со сложной структурой, в частности, они, вообще, помещаются на позиции высокого уровня или в позиции ядра, такие как периферический маршрутизатор ядра сети, телефонная система частного пользования и т.д. Как только происходит нарушение в функционировании оборудования, его последствия могут оказаться серьезными. Кроме того, перезапуск системы и восстановление нормальной работы займет много времени, что может иметь колоссальные последствия. Поэтому особенно важно продлить рабочее время многоядерной системы. Кроме этого нет смысла перезапускать всю систему всего лишь ради некоторых нефатальных ошибок.
Содержание изобретения
Технические проблемы, которые должны быть решены в изобретении, фокусируются на упомянутых проблемах в существующей технологии. В изобретении предлагается способ восстановления для одного ядра в многоядерной системе. Когда исключительная ситуация возникает в одном ядре, это ядро будет восстановлено без паузы в работе.
Техническая схема, примененная в изобретении, чтобы решить упомянутые технические проблемы, заключается в способе устранения исключительной ситуации в одном ядре многоядерной системы, включающей общую память и системный планирующий модуль.
Изобретение состоит из следующих шагов.
а. Выделение ячейки общей памяти, сохранение значения состояния каждого ядра и установление начального значения состояния всех ядер в «нормальное».
b. Когда исключительная ситуация возникает на одном ядре, это ядро автоматически выполняет программу обработки исключительной ситуации, устанавливает свое значение состояния в «исключительная ситуация» и оповещает другое выбранное ядро, находящееся в нормальном состоянии, затем ядро в исключительном состоянии автоматически входит в бесконечный цикл.
с. Выбранное ядро в нормальном состоянии устанавливает ядро, находящееся в исключительном состоянии, в состояние сброса и оповещает системный планирующий модуль. Затем этот модуль передаст задачи, первоначально назначенные ядру, находящемуся в данный момент в исключительном состоянии, любому другому ядру, находящемуся в нормальном состоянии. Выбранное ядро в нормальном состоянии будет перераспределять все ресурсы, занятые ядром, которое находится в исключительном состоянии, и, наконец, освобождают ядро, находящееся в исключительном состоянии.
d. После освобождения от сброса ядро в исключительном состоянии перезапустится и установит свое состояние в значение «ожидание восстановления» после того, как запуск будет выполнен.
е. После того как выбранное ядро в нормальном состоянии обнаружит, что значением ядра в исключительном состоянии является «ожидание восстановления», оно установит значение состояния этого исключительного ядра в «нормальное» и оповестит системный планирующий модуль.
Кроме того, на шаге b межъядерное прерывание используется, чтобы послать оповещение в многоядерную систему обмена информацией.
Кроме этого системный планирующий модуль будет отслеживать состояние каждого ядра в соответствии со значением состояния, сохраненным в ячейке памяти. В случае когда модуль определяет, что состояние одного ядра является исключительным, он более не будет назначать задач этому ядру, т.е. ядру в исключительном состоянии.
В частности, в случае когда многоядерная система является симметричной, на шаге b выбранный модуль в нормальном состоянии может быть любым модулем, находящемся в этом состоянии.
В частности, в том случае когда многоядерная система является системой типа «главный-подчиненный», на шаге b выбранным ядром в нормальном состоянии является ядро, которое находится в состоянии «главный».
Изобретение имеет следующие полезные эффекты: когда исключительная ситуация появляется в одном ядре многоядерной системы, задачи, первоначально назначенные ядру, находящемуся в данный момент в исключительном состоянии, будут направлены другому нормальному ядру, чтобы обеспечить выполнение этих задач вовремя и эффективно обеспечить то, что функционирование всей системы не будет приостановлено и системные ресурсы не будут потеряны перед тем или после того, как ядро в исключительном состоянии будет восстановлено. После восстановления ядро, оказавшееся в исключительном состоянии, может функционировать нормально, что увеличивает полезное время работы системы и увеличивает ее надежность.
Описание чертежей
Чертеж является блок-схемой программного воплощения изобретения.
Подробное описание предпочтительного варианта выполнения
Техническая схема изобретения описана более детально в сочетании с прилагаемыми чертежами и вариантом выполнения.
Для многоядерной системы с общей памятью и системным модулем планирования изобретение определяет специальную ячейку в общей памяти и выделяет глобальный массив для хранения состояния каждого ядра. Индекс этого массива может использовать № каждого ядра, а каждый элемент массива соответствует значению состояния каждого ядра. Все значения состояния ядра определены как «нормальное», «исключительное» и «ожидающее восстановления». Первоначальное значение состояния всех ядер устанавливается в «нормальное». В многоядерной системе все задачи, выполняемые каждым ядром, назначаются системным модулем планирования. Программа, мониторирующая состояния, находится в системном планирующем модуле. Когда системный планирующий модуль назначает задачи, прежде всего он проверит текущее состояние каждого ядра и, если состояние одного из ядер окажется исключительным, модуль не назначит задачи этому ядру. Когда исключительная ситуация возникает на одном из ядер, заработает программа ЦПУ, обрабатывающая исключительную ситуацию.
В программе, обрабатывающей исключительную ситуацию, согласно данному изобретению, ядро в исключительном состоянии сначала устанавливает свое значение в «исключительное», а затем выбирает ядро в нормальном состоянии и использует межъядерную систему обмена информацией о прерываниях, чтобы оповестить выбранное ядро в нормальном состоянии. Затем системный планирующий модуль распределяет все задачи, назначенные ядру в исключительном состоянии, другому ядру, находящемуся в нормальном состоянии, в соответствии со своим алгоритмом планирования, так чтобы обеспечить, по возможности, более быстрое выполнение восстановления и тем самым сократить время восстановления. После того как послано оповещение, ядро в исключительном состоянии входит в бесконечный цикл и не может выйти из программы, обрабатывающей исключительное состояние, с тем чтобы не допустить появления большего количества ошибок и ущерба.
В симметричной многоядерной системе любое ядро может устанавливать состояние любого другого ядра. Поэтому, когда появляется исключительное состояние в одном ядре, это ядро может выбрать любое другое ядро в нормальном состоянии. Кроме того, любое ядро имеет функцию сброса любого другого ядра или нескольких ядер. Существует два алгоритма выбора одного ядра в нормальном состоянии, а именно последовательный поиск и случайный поиск. Преимуществом последовательного поиска является простота, в то время как его недостатком является то, что выбранное ядро в нормальном состоянии является сравнительно фиксированным. Преимуществом случайного поиска является то, что выбранное ядро в нормальном состоянии не является фиксированным, что может повысить вероятность успешного восстановления, в то время как его недостатком является то, что алгоритм сравнительно сложен.
В многоядерной системе типа «главный-подчиненный» только одно ядро в состоянии «главный» может восстанавливать ядро в исключительном состоянии. Другими словами, когда одно ядро находится в исключительном состоянии, оно должно уведомлять ядро в состоянии «главный» с тем, чтобы оно могло выполнить операцию восстановления.
Многоядерное ЦПУ (центральное процессорное устройство) имеет механизмы межъядерного обмена информацией, из которых один механизм должен использовать межъядерное прерывание. Его преимущество заключается в быстроте и в том, что этот механизм может посылать оповещение о событии в первую очередь. Как результат, это изобретение использует межъядерное прерывание для посылки оповещения.
Вариант выполнения
Как показано на чертеже, в симметричной системе со встроенным многоядерным ЦПУ на шаге 101 появляется недопустимая операция в ядре А и вызывает исключительную ситуацию. Только ядро А переходит к ветви исключительной ситуации и входит в программу ЦПУ, обрабатывающую исключительную ситуацию, а другие ядра продолжают нормальную работу. В программе, обрабатывающей исключительную ситуацию, ядро А сначала записывает информацию об исключительной ситуации, включая: тип исключительной ситуации, указатель программного счетчика исключительной ситуации, значения всех регистров состояния, структуру стека и т.д.
На шаге 102 в программе обработки исключительных ситуаций ядро А изменяет свое значение состояния в ячейке общей памяти на «исключительное». Когда системный планирующий модуль назначает задачи, он прежде всего определяет состояние каждого текущего ядра. Если текущее ядро находится в исключительном состоянии, модуль не назначает задачу этому ядру.
На шаге 103 в программе, обрабатывающей исключительные состояния, ядро А случайным образом выбирает ядро В в нормальном состоянии, затем использует прерывание, чтобы оповестить ядро В и, наконец, оно входит в бесконечный цикл, что означает, что ядро А никогда не выйдет из программы обработки исключительных ситуаций, чтобы предотвратить дальнейшее исключение команды, когда она будет выполняться повторно.
На шаге 104 ядро В в нормальном состоянии получает информацию о прерывании от ядра А, затем пробуждает свой скрытый от пользователя процесс для устранения исключительной ситуации в ядре, подготавливается к поиску и находит, какое ядро находится в исключительном состоянии, и подготавливает восстановление.
На шаге 105 ядро В использует общий управляющий регистр, чтобы установить ядро А в состояние сброса. Поскольку в многоядерных ЦПУ, когда одно ядро установлено в состояние сброса, оно не выполняет никакого кода, что означает, что оно находится в состоянии «останова». Как только это ядро освободится от состояния сброса, оно прочтет и выполнит команды, начиная от фиксированного стартового адреса, то есть выполнит операцию рестарта.
На шаге 106 ядро В оповещает системный планирующий модуль. Затем этот модуль передает задачи, первоначально назначенные ядру А, другому ядру в нормальном состоянии в соответствии со своим алгоритмом планирования, обеспечивая таким образом своевременность выполнения задачи.
На шаге 107 ядро В перераспределяет ресурсы, изначально занятые ядром А, в системе. Эти ресурсы главным образом включают: очередь задач, пространство стека, прерывание и т.д.
На шаге 108 ядро В использует общий управляющий регистр ЦПУ, чтобы освободить ядро А от состояния «сброс», и ядро А стартует заново. Затем ядро В запрашивает значение состояния ядра А в ячейке общей памяти и ждет, пока оно не изменится на «ожидание восстановления».
На шаге 201 после того, как ядро А освобождается от состояния сброса, оно начинает читать и выполнять команды из фиксированного стартового адреса ЦПУ, а затем стартует заново.
На шаге 202 ядро А повторно выполняет операцию инициализации. Поскольку ядро А использует новые ресурсы, оно несомненно может успешно стартовать заново. После того как запуск выполнен, ядро А изменяет свое состояние в ячейке общей памяти на «ожидание восстановления», что показывает, что ядро А уже стартовало.
На шаге 203 ядро В определяет, что состояние ядра А изменяется на «ожидание восстановления», что показывает, что ядро А уже стартовало. Затем ядро В изменяет состояние ядра А в ячейке общей памяти на «нормальное». Затем ядро В оповещает системный планирующий модуль о назначении задач ядру А.
Устранение исключительной ситуации закончено.