Код документа: RU2275679C2
Область техники
Настоящее изобретение относится к способу и устройству обработки данных для сохранения возвратного состояния, а более конкретно к сохранению возвратного состояния в устройстве обработки данных, содержащем процессор, имеющий несколько режимов функционирования, причем каждый режим функционирования имеет соответствующий стек сохранения данных, соответствующих этому режиму.
Предшествующий уровень техники
Известно, что в устройстве обработки данных такого типа предусмотрены команды, предназначенные для сохранения данных возвратного состояния в стеке, соответствующем текущему режиму функционирования. Типичным примером использования таких команд является возникновение исключительной ситуации, при которой событие ведет к сохранению данных возвратного состояния в стеке, соответствующем режиму функционирования исключительной ситуации. Эта процедура может потребоваться по разным причинам. Например, в основном, такое устройство обработки данных может поддерживать многозадачность, и, когда должен быть выполнен контекстный переключатель для обеспечения возможности выполнения другой задачи, необходимо осуществить свопинг или подкачку стека или стеков, соответствующих режимам функционирования текущей задачи, для обеспечения возможности выполнения новой задачи. В системах, где доступ к стекам осуществляется с использованием указателей стеков, такой свопинг, обычно, выполняется путем перестановки указателя стека или указателей стеков в случае нескольких стеков. В устройстве обработки данных такого типа, обычно, требуется сохранение данных возвратного состояния в стеке, свопинг которого будет осуществлен при возникновении контекстного переключения.
Для улучшения контекстного переключения требуется осуществить свопинг всех стеков, которые не являются незаполненными в момент контекстного переключения. На процессоре с множеством стеков может потребоваться свопинг каждого стека, связанного с конкретной задачей. Дополнительно, при использовании такого подхода для каждой задачи должны поддерживаться отдельные стеки для (каждого) режима функционирования, что приводит к увеличению затрат памяти и увеличению времени, затрачиваемого на осуществление свопинга каждого стека, связанного с каждой задачей. Например, современный процессор, производимый АРМ Лимитид (ARM Limited), имеет шесть отдельных стеков, соответствующих шести режимам функционирования, а именно Системному/Пользовательскому режиму, режиму ЗБП (запроса на быстрое прерывание), Привилегированному режиму, режиму Аварийного прекращения (работы), режиму ЗПР (запроса на прерывание) и Неопределенному режиму, где ЗБП и ЗПР представляют собой два режима функционирования, являющиеся режимами прерывания. Следовательно, при использовании упомянутого выше подхода, контекстный переключатель может потребовать свопинга шести отдельных стеков, и для каждой задачи может потребоваться резервирование памяти для шести отдельных стеков. Возможный вариант такого подхода будет описан ниже согласно фиг.2А и 2В. На фиг.2А и 2В изображена система, предпочтительно, имеющая пять, а не шесть стеков, так как эти чертежи иллюстрируют возможный вариант стандартной системы, где предполагается, что режим ЗБП резервируется для одиночного прерывания с высоким приоритетом, которое не вызывает контекстного переключателя.
В качестве альтернативы, более часто используется подход, при котором разные стеки исключительной ситуации используются задачами совместно, и, следовательно, при входе в исключительную ситуацию любые данные в стеке исключительной ситуации передаются в стек пользователя или в единственный для процесса стек привилегированного режима. В упомянутом выше возможном варианте с современным процессором, производимым АРМ ЛИМИТИД, это эквивалентно передаче данных из стеков ЗБП, Аварийного Прекращения, ЗПР или Неопределенного стека в стек Пользователя, или Привилегированный стек. При таком подходе гарантируется, что все стеки исключительной ситуации (в возможном варианте с процессором АРМ стеки ЗБП, Аварийного Прекращения, ЗПР и Неопределенный стек) остаются незаполненными во все моменты, когда может потребоваться контекстный переключатель.
Данные, сохраняемые при входе в исключительную ситуацию, обычно представляют собой данные, которые требуются для продолжения выполнения задачи с момента возникновения исключительной ситуации. Эти данные определены, как «данные возвратного состояния».
При втором подходе, описанном выше, требуется, чтобы при входе в исключительную ситуацию возвратное состояние сохранялось в стеке, соответствующем режиму функционирования исключительной ситуации, чтобы был осуществлен вход в привилегированный режим процессора или режим пользователя процессора и чтобы в дальнейшем (данные возвратного состояния были считаны в обратном направлении из стека, соответствующего режиму функционирования исключительной ситуации, и сохранены в стеке, соответствующем режиму пользователя или привилегированному режиму. После входа в режим пользователя или привилегированный режим на основе этих режимов нельзя просто сохранить возвратное состояние, так как возвратное состояние на основе этих режимов недоступно. Данный процесс будет описан более подробно ниже, согласно возможному варианту осуществления, изображенному на фиг.3А и 3В.
Процесс сохранения данных возвратного состояния в стеке, связанном с режимом функционирования исключительной ситуации, изменение режима, извлечение данных возвратного состояния из стека, связанного с режимом функционирования исключительной ситуации, и сохранение данных возвратного состояния в стеке режима пользователя или привилегированного режима требует значительного количества команд, влияющих неблагоприятным образом на размер кода и на рабочие характеристики устройства обработки данных.
Дополнительно следует отметить, что такая обработка требуется в критических точках для обработки прерываний, когда прерывания блокированы, что, следовательно, приводит к существенной задержке обработки прерывания. Следует отметить, что прерывания не могут быть разблокированы, пока данные возвратного состояния сохраняются в стеке режима пользователя или привилегированного режима, при появлении дополнительного прерывания, данные повторного состояния будут перезаписаны до их сохранения.
БОБ СМИТ: "Использование команд целочисленной арифметики в режиме защиты 3-его кольца", сообщение конференции, [Интерактивно] 30 июля 1997 (1997-07-30), XP002197347 comp.lang.asm.x86 Найдено в Интернете: 33DF4272.FEA1E1A1%40intrepid.net&output=gp lain> [найдено на 2002-04-23] относится к механизмам защиты. Раскрыто ЦПУ, имеющее 4 привилегированных уровня (ПУ) с ПУ0 по ПУ3 и три стека для ПУ0, ПУ1 и ПУ2. При кольцевом переходе из ПУ3 к ПУ0 ЦПУ переключает стеки, так как возвратный кадр записывается в стек ПУ0.
Соответственно требуется обеспечить более эффективный способ сохранения данных возвратного состояния при возникновении исключительной ситуации.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Согласно первому аспекту в представленном изобретении предложено устройство обработки данных, содержащее процессор для выполнения команд обработки данных, имеющий несколько режимов функционирования, каждый режим функционирования имеет соответствующий стек для сохранения данных, соответствующих этому режиму; в зависимости от команды обработки данных возвратного состояния процессор записывает данные возвратного состояния процессора из его текущего режима функционирования в стек, соответствующий режиму функционирования, отличному от текущего режима функционирования, при этом оставаясь в текущем режиме функционирования.
Согласно настоящему изобретению, предложена команда обработки данных возвратного состояния, которая используется для вызова записи процессором данных возвратного состояния процессора из его текущего режима функционирования в стек, соответствующий режиму функционирования, отличному от текущего режима функционирования.
Было обнаружено, что настоящее изобретение позволяет уменьшить размер кода и улучшить рабочие характеристики. Изобретение может быть использовано в нескольких реализациях, но наиболее предпочтительно его использование в интерактивных операционных системах и особенно в системах, требующих быстрого контекстного переключения, например, в многозадачных операционных системах, таких как Линукс (Linux).
В предпочтительных вариантах осуществления при возникновении исключительной ситуации вызывается команда обработки данных возвратного состояния.
Следует принять во внимание, что исключительной ситуацией может быть любая соответствующая исключительная ситуация, например, любая из стандартных исключительных ситуаций, возникающих внутри устройства обработки данных, включая все виды прерываний, все виды аварийного прекращения, исключительные ситуации по неопределенной команде, исключительные ситуации по ошибке адресации, программные прерывания и любые другие исключительные ситуации, которые могут возникнуть. Более конкретно, в предпочтительных вариантах осуществления исключительной ситуацией является одна или большее количество из нижеследующих ситуаций: Аварийное Прекращение по ошибке Данных, Аварийное Прекращение по ошибке Упреждающей Выборки, Исключительная Ситуация по ошибке Адресации, Неопределенная Команда, Сброс, Программное Прерывание, Запрос на Прерывание или Запрос на Быстрое прерывание.
Следовательно, в предпочтительных вариантах осуществления, исключительной ситуацией, приводящей к вызову команды обработки данных, может быть любая из предварительно определенного множества исключительных ситуаций, и это предварительно определенное множество команд может содержать одно или большее количество прерываний.
Было обнаружено, что настоящее изобретение в рамках предпочтительного варианта осуществления позволяет уменьшить размер кода, уменьшая количество команд, необходимых при запуске обработчика исключительных ситуаций. Дополнительно, предпочтительный вариант осуществления позволяет улучшить рабочие характеристики, уменьшая количество циклов, необходимых при запуске обработчика исключительных ситуаций. Тот факт, что указанные циклы возникают как правило в критической точке, где прерывания заблокированы, позволяет выгодным образом существенно уменьшить задержки обработки прерывания. Предпочтительный вариант осуществления изобретения может использоваться в разных реализациях, но особенно выгоден в интерактивных операционных системах, в частности, требующих малой задержки обработки прерывания, например, в операционных системах, управляющих драйверами дискового накопителя. В предпочтительных вариантах осуществления устройство обработки данных дополнительно содержит множество регистров, включающее в себя несколько регистров возвратного состояния для сохранения данных возвратного состояния процессора для каждого режима функционирования, причем процессор имеет возможность доступа к регистрам возвратного состояния, содержащим данные возвратного состояния процессора, только из текущего режима функционирования. Это требует сохранения возвратного состояния в соответствующем стеке до изменения режима функционирования, так как если режим функционирования был изменен, то эти регистры возвратного состояния будут доступны лишь при повторном входе в первоначальный режим исключительной ситуации.
Следует принять во внимание, что стеки могут быть реализованы разными способами. Однако в предпочтительных вариантах осуществления каждый стек имеет соответствующий ему указатель стека, идентифицирующий местоположение внутри стека, указатель стека для конкретного стека доступен только из соответствующего режима функционирования. Соответственно, в любом конкретном режиме функционирования процессор обычно будет иметь возможность доступа только к соответствующему стеку, так как обычно он будет иметь доступ только к указателю данного конкретного стека.
В предпочтительных вариантах осуществления, в случае, когда устройство обработки данных содержит множество регистров, представляется предпочтительным, чтобы множество регистров дополнительно включало в себя несколько регистров указателя стека для сохранения указателей стека для каждого стека и чтобы процессор имел возможность доступа только к регистру указателя стека, содержащему указатель стека для стека, соответствующего текущему режиму функционирования. Следовательно, процессор в текущем режиме функционирования может иметь доступ только к регистру указателя стека для получения указателя стека соответствующего стека.
Следует принять во внимание, что команда обработки данных возвратного состояния, предложенная согласно настоящему изобретению, может иметь разные формы. Однако в предпочтительных вариантах осуществления команда обработки данных возвратного состояния содержит поле идентификатора стека для идентификации стека, в который будут записаны данные возвратного состояния процессора.
Очевидно, что в предпочтительных вариантах осуществления, где каждый стек имеет соответствующий ему указатель стека, процессор должен располагаться информацией относительно указателя стека для записи данных возвратного состояния в соответствующее местоположение(я) внутри стека назначения. Соответственно, в предпочтительных вариантах осуществления, поле идентификатора стека предназначено для определения указателя стека для стека, в который будут записаны данные возвратного состояния процессора, вследствие этого при записи данных возвратного состояния в данный стек, обеспечивая доступ процессора к соответствующему местоположению в данном стеке.
Дополнительно, в предпочтительных вариантах осуществления команда обработки данных возвратного состояния содержит факультативное поле обновления, которое устанавливается для указания того, что, при записи в стек данных возвратного состояния, указатель стека должен обновляться. Обычно указатель стека обновляется, но могут существовать условия, при которых нецелесообразно обновлять указатель стека и соответственно факультативное поле обновления обеспечивает гибкость, позволяя оставить указатель стека в текущем значении или обновить его, чтобы учесть записанные в стек данные возвратного состояния.
В предпочтительных вариантах осуществления могут быть использованы разные виды стеков, использующие разные режимы адресации, определяющие, как обновляется указатель стека.
Возможными вариантами четырех различных видов стека являются следующие.
Возрастающий заполненный - стек, который в памяти растет вверх, и указатель стека указывает на последнее слово, записанное в стек.
Возрастающий пустой - стек, который в памяти растет вверх, и указатель стека указывает на одно слово выше последнего слова, записанного в стек.
Убывающий заполненный - стек, который в памяти растет вниз, и указатель стека указывает на последнее слово, записанное в стек.
Убывающий незаполненный - стек, который в памяти растет вниз, и указатель стека указывает на одно слово ниже последнего слова, записанного в стек.
Вследствие этого в предпочтительных вариантах осуществления команда обработки данных возвратного состояния содержит поле режима адресации для идентификации режима адресации стека, в который будут записаны данные возвратного состояния; указанное поле используется процессором для определения режима адресации, соответствующего стеку назначения.
При возникновении исключительной ситуации и другого состояния системы команда обработки данных возвратного состояния может вызываться всегда или только при существовании определенного условия. Соответственно, в предпочтительных вариантах осуществления команда обработки данных возвратного состояния содержит поле условия для определения условия для выполнения команды обработки данных возвратного состояния так, чтобы процессор выполнял команду обработки данных возвратного состояния только при выполнении условия.
В предпочтительных вариантах осуществления при возникновении исключительной ситуации процессор вводится в соответствующий режим функционирования исключительной ситуации, следовательно, если, например, происходит прерывание, процессор будет введен в режим функционирования прерывания, если происходит аварийное прекращение, процессор будет введен в режим функционирования аварийного прекращения, и т.д. Соответственно, текущим режимом функционирования в момент выполнения команды обработки данных возвратного состояния является режим функционирования исключительной ситуации. В предпочтительном варианте осуществления отличным (другим) режимом функционирования, стек которого используется для сохранения данных возвратного состояния, является привилегированный режим функционирования, например привилегированный режим функционирования в широком смысле. В альтернативном варианте осуществления отличным режимом функционирования может быть режим функционирования процессора до входа в режим исключительной ситуации.
Следует принять во внимание, что данные возвратного состояния могут иметь разные формы. Однако в предпочтительных вариантах осуществления данные возвратного состояния содержат сохраненный счетчик команд и сохраненное состояние процессора, являющиеся счетчиком команд и состоянием процессора режима функционирования, из которого осуществляется выход для входа в текущий режим функционирования, т.е. режим функционирования исключительной ситуации.
Согласно второму аспекту, в настоящем изобретении предложен способ функционирования устройства обработки данных, содержащего процессор для выполнения команд обработки данных, имеющий несколько режимов функционирования, каждый из которых имеет соответствующий стек для сохранения данных, соответствующих этому режиму, при этом способ включает в себя этап согласно которому, в зависимости от команды обработки данных возвратного состояния, производят вызов записи процессором данных возвратного состояния процессора из его текущего режима функционирования в стек, соответствующий режиму функционирования, отличному от текущего режима функционирования, при этом оставаясь в текущем режиме функционирования.
Согласно третьему аспекту, в настоящем изобретении предложена компьютерная программа, функционирующая для конфигурирования устройства обработки данных для выполнения способа, соответствующего второму аспекту настоящего изобретения. Изобретение также относится к программоносителю, содержащему такую компьютерную программу. Программоносителем может быть любое соответствующее устройство, например, постоянное запоминающее устройство на компакт-диске (ПЗУКД, CDROM), дискета, и т.д., либо среда передачи данных, такая как оптическое волокно, радиосигнал, и т.д.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В дальнейшем изобретение поясняется описанием предпочтительного варианта его осуществления со ссылками на фигуры чертежей, в числе которых:
Фиг.1A изображает диаграмму, иллюстрирующую возможную конфигурацию системы, в которой содержится множество стеков, каждый из которых соответствует одному или большему количеству режимов функционирования.
Фиг.1B - регистры, соответствующие каждому режиму функционирования, в конфигурации системы, изображенной на фиг.1A.
Фиг.2A - известная возможная конфигурация системы, включающая в себя три задачи, причем каждая задача имеет пять отдельных стеков.
Фиг.2B - часть блоков управления задачами, соответствующая системе, изображенной на фиг.2A.
Фиг.3A - известная возможная конфигурация системы, включающая в себя три задачи, причем каждая задача имеет два отдельных стека, но при этом три стека исключительной ситуации используются совместно между тремя задачами.
Фиг.3B - часть блоков управления задачами, соответствующая системе, изображенной на фиг.3A.
Фиг.с 4A по 4E иллюстрируют последовательность команд, вызываемых при возникновении исключительной ситуации согласно известному подходу.
Фиг.с 5A по 5D иллюстрируют последовательность команд, выполняемых при возникновении исключительной ситуации согласно предпочтительным вариантам осуществления настоящего изобретения.
Фиг.6 изображает структурную схему, иллюстрирующую возможную структуру системы, содержащей устройство обработки данных согласно предпочтительным вариантам осуществления настоящего изобретения.
ЛУЧШИЙ ВАРИАНТ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
На фиг.1A и 1B изображены диаграммы, иллюстрирующие возможную систему, имеющую шесть режимов функционирования и шесть соответствующих стеков. Однако режим ЗБП зарезервирован для прерываний с высоким приоритетом, которые не вызывают контекстного переключения, и соответственно только пять режимов функционирования и соответствующие им пять стеков описаны ниже и изображены на чертежах. Согласно фиг.1A, следовательно, изображены пять стеков 100, 110, 120, 130 и 140. Каждый стек имеет соответствующий регистр указателя стека 105, 115, 125, 135 и 145, каждый регистр указателя стека доступен только из режима функционирования, соответствующего этому стеку. Это видно из фиг.1B, иллюстрирующей регистры, которые доступны в каждом из пяти режимов функционирования, а именно пользовательском (непривилегированном) режиме, привилегированном режиме, режиме прерывания, режиме аварийного прекращения и неопределенном режиме. Согласно фиг.1B, некоторые регистры доступны из любого режима. В этом возможном варианте указатели стека SP (УС) для пяти режимов имеют следующие имена: SP (УС), SP_SVC (УС_SVC), SP_IRQ (УС_ЗПР), SP_ABT (УС_ABT) и SP_UND (УС_ABT), при этом понятно, что в любом конкретном режиме функционирования процессор может осуществить доступ только к регистру, содержащему указатель стека для стека, соответствующего данному режиму функционирования. Соответственно процессор может осуществить доступ только к стеку, связанному с данным режимом функционирования.
Привилегированный режим и каждый из режимов исключительной ситуации (прерывания, аварийного прекращения и неопределенного) имеет соответствующие данные возвратного состояния, которые доступны только из режима функционирования, соответствующего этому возвратному состоянию. Согласно фиг.1B, возвратное состояние имеет имена LR_SVC (РС_ПРВ), LR_IRQ (РС_ЗПР), LR_ABT (РС_АПР), LR_UND (РС_НПР), а также SPRV_SVC (РССП_ПРВ), SPRV_IRQ (РССП_ЗПР), SPSR_ABT (РССП_АПР) и SPSR_UND (РССП_НПР), где РС является сокращением от «Регистра Связи», а РССП является сокращением от «Регистра Сохраненного Состояния Процессора». Пользовательский режим также имеет регистр связи, но он не используется для сохранения информации о возвратном состоянии, так как для пользовательского режима не существует возвратного состояния, поскольку он не является режимом исключительной ситуации. То есть, не существует исключительной ситуации, которая вызовет вход в пользовательский режим и, следовательно, для пользовательского режима нет необходимости в сохранении каких-либо данных возвратного состояния. На фиг.2A в виде диаграммы изображена первая известная конфигурация системы, в этом возможном варианте система включает в себя три задачи, каждая из которых имеет пять стеков, соответствующих пяти режимам функционирования. Соответственно, задача 1 имеет стек 200 процесса, системный стек 210, стек 220 прерывания, стек 230 аварийного прекращения и неопределенный стек 240, задача 2 имеет стек 202 процесса, системный стек 212, стек 222 прерывания, стек 232 аварийного прекращения и неопределенный стек 242, и задача 3 имеет стек 204 процесса, системный стек 214, стек 224 прерывания, стек 234 аварийного прекращения и неопределенный стек 244.
Данные возвратного состояния сохраняются в стеке, соответствующем исключительной ситуации. Например, при возникновении прерывания, задача введет режим функционирования прерывания, и информация о возвратном состоянии будет сохранена в стеке прерывания. Как будет понятно из фиг.2A, это вносит дополнительный непроизводительный расход памяти из-за необходимости поддерживать пять стеков для каждой задачи.
На фиг.2B изображена часть блока управления задачей для каждой задачи, блок управления задачей является областью памяти, где задача сохраняет всю информацию, необходимую для контекстного переключения. Как часть этой информации, должны быть сохранены указатели стека для каждого из пяти стеков, и, следовательно, блок 250 управления задачей 1 должен будет сохранить пять указателей стека, блок 260 управления задачей 2 должен будет сохранить пять указателей стека и блок 270 управления задачей 3 должен будет сохранить пять указателей стека. Соответственно, представляется очевидным, что наличие пяти стеков на каждую задачу вносит дополнительный расход памяти из-за потребности в дополнительной памяти в каждом блоке управления задачей, и дополнительное ухудшение рабочих характеристик, вызванное дополнительным временем, затрачиваемым на сохранение и восстановление дополнительных регистров в блоке управления задачей.
Для усовершенствования указанного известного способа более часто используют второй подход, подразумевающий наличие системы, в котором некоторые стеки исключительной ситуации используются задачами совместно; возможный вариант такой системы проиллюстрирован на фиг.3A. Согласно возможному варианту, изображенному на фиг.3A, система имеет 2 стека для каждой задачи, и 3 дополнительных стека, распределяемых системой между тремя задачами. В пояснительных целях предполагается, что система, изображенная на фиг.3А, имеет те же пять режимов выполнения, что система, изображенная на фиг.2A, хотя представляется понятным, что другие варианты осуществления могут иметь большее или меньшее количество режимов выполнения.
При возникновении исключительной ситуации все данные в соответствующем стеке исключительной ситуации передаются в стек пользовательский/процесса или в системный стек соответствующей задачи, вследствие этого гарантируя, что все совместно используемые стеки исключительной ситуации останутся пустыми во все моменты, где может потребоваться контекстный переключатель. В результате этого в блоке управления соответствующей задачей необходимо сохранить только указатели стека для режима пользовательского процесса и системного режима, что иллюстрируется фиг.3B, на которой изображены блоки 360, 370 и 380 управления задачей для задач 1, 2 и 3, соответственно.
Из фиг.3А и 3B понятно, что посредством использования этого подхода достигаются значительные преимущества в расходе памяти и в рабочих характеристиках. Для системы, изображенной на фиг.3A и 3B, требуется Кз × 2 + 3 стеков, в то время как для системы, изображенной на фиг.2A и 2B, требуется Кз × 5 стеков, где Кз является количеством задач в системе. Дополнительно, для системы, изображенной на фиг.2A и 2B, требуется Кз × 5 слов блока информации контекста, в то время как для системы, изображенной на фиг.3A и 3B, требуется Кз × 2 слов блока информации контекста. В отношении рабочих характеристик, для контекстного переключателя между задачами в системе, изображенной на фиг.2A и 2B, требуется загрузка и сохранение пяти слов, в то время как для контекстного переключателя между задачами в системе, изображенной на фиг.3А и 3B, требуется загрузка и сохранение двух слов.
Ниже приведен фрагмент кода, написанного на ассемблере АРМ, представляющий возможный вариант кода, необходимого при запуске прерывания, для реализации изображенной на фиг.3A и 3B системы, использующей известный способ:
; Сначала сохранить возвратное состояние (регистры LR и
; SPSR) в стеке прерывания. Также, дополнительно к
; возвратному состоянию сохраняется регистр R0 для использования в
; качестве временного регистра. Нельзя уменьшать указатель
; стека, так как возвратное состояние и сохраненный R0 будут
; выгружены из стека прерывания, как только изменится режим.
; Не уменьшать указатель стека безопасно, так как известно,
; что между сохранением данных и их считыванием после
; изменения режимов не могут обслуживаться никакие
; прерывания, так как прерывания заблокированы.
; Теперь изменить режим процессора в системный режим (SVC).
; Теперь сохранить регистр в стеке SVC, чтобы можно было его использовать
; как временный. Затем извлечь информацию возвратного состояния и
; сохраненный RO из стека прерывания и сохранить его в стеке SVC.
; В этот момент безопасно разблокировать прерывания. Это было не
; безопасно до этого момента, так как в стеке прерывания хранились
; данные, которые могли быть перезаписаны при допущении обслуживания
; другого прерывания до извлечения всех данных из стека
; прерывания.
; *** ПРЕРЫВАНИЕ РАЗБЛОКИРОВАНО ***
; Счетчик цикла перед разблокированием прерываний =11*D+9*M
;
; Теперь можно продолжить сохранение оставшихся данных контекста процесса
Буква в круглых скобках, расположенная рядом с каждой командой, определяет количество циклов памяти или данных, требуемых для каждой команды, где М равно одному циклу обращения к памяти, а D равно одному циклу данных. Количество циклов указывается до момента, помеченного ***ПРЕРЫВАНИЕ РАЗБЛОКИРОВАНО***, который является моментом, где прерывание может быть разблокировано. Количество циклов между запуском обработчика прерываний и указанным моментом определяет задержку обработки прерывания, большое количество циклов приводит к большой задержке обработки прерывания, в то время как малое количество циклов приводит к малой задержке обработки прерывания. В приведенном выше фрагменте кода не показано количество дополнительных циклов, требуемых для передачи аппаратными средствами управления первой команде обработчика прерываний. Количество указанных циклов одинаково при использовании предпочтительных вариантов осуществления настоящего изобретения или без их использования и поэтому для упрощения описания в нем не приведено.
Ниже описаны фиг.4А-4Е для лучшей иллюстрации процесса, выполняемого разными командами, иллюстрируемыми приведенным выше фрагментом кода.
В этом возможном варианте предполагается, что возникла исключительная ситуация прерывания, и соответственно процессор вошел в режим функционирования прерывания, где он имеет доступ к регистрам 420. Данные возвратного состояния процессора из этого режима функционирования прерывания сохраняются в регистрах возвратного состояния, обозначенных, согласно фиг.4A, как регистры 430. В частности, данные возвратного состояния содержат регистры LR_IRQ и SPSR_IRQ.
На фиг.4A также изображены два стека, а именно, стек 400 прерывания, который доступен из режима функционирования прерывания, и привилегированный стек 410, который не доступен из режима функционирования прерывания, так как в режиме функционирования прерывания процессор не имеет возможности осуществить доступ к регистру, содержащему указатель привилегированного стека SP_SVC.
Первым процессом, который необходимо выполнить, является процесс сохранения возвратного состояния, то есть содержимого регистров 430, в стеке 400 прерывания. Дополнительно к сохранению возвратного состояния в стеке 400 прерывания также сохраняется содержимое регистра R0 так, чтобы регистр R0 мог использоваться в качестве временного регистра. Эта операция выполняется четырьмя командами, обозначенными на фиг.4A ссылочной позицией 435, и представленными в фрагменте кода, приведенном выше. Исходная команда SUB, представленная в фрагменте кода, приведенном выше, требуется просто для настройки регистра связи LR_IRQ с целью правильного указания возвратного адреса согласно описанному примеру выполнения. Соответственно, фиг.4B иллюстрирует момент, когда содержимое регистров LR_IRQ, SPSR_IRQ и R0 сохранено в стеке 400 прерывания. Указатель SP_IRQ вершины стека 400 прерывания не уменьшен, так как возвратное состояние и данные R0, только что сохраненные в стеке прерывания, будут выгружены из стека прерывания, как только процесс изменит режим. Не уменьшение указателя стека безопасно, так как прерывания в это время заблокированы, и между сохранением данных и считыванием их после изменения режимов не могут быть обслужены дополнительные прерывания.
Согласно фиг.4B, следующим этапом является сохранение указателя стека SP_IRQ вершины стека прерывания в регистре R0, который теперь используется как временный регистр. Это обеспечит доступность этого указателя при выходе из режима функционирования прерывания.
В этот момент режим процессора изменяется на системный режим, что выполняется четырьмя командами, обозначенными на фиг.4B ссылочной позицией 445. Соответственно, согласно фиг.4C, процессор теперь находится в привилегированном режиме функционирования, где он имеет доступ к регистрам 450. Так как регистр R0 используется режимами функционирования совместно, то регистр R0 продолжает содержать указатель стека для стека 400 прерывания. Однако возвратным состоянием теперь является возвратное состояние процессора из привилегированного режима функционирования, которое сохраняется в регистрах 440.
Теперь процесс сохраняет в привилегированном стеке содержимое одного из регистров, чтобы он мог использоваться в качестве временного регистра. В этом возможном варианте, в привилегированном стеке сохраняется содержимое регистра R1. Затем процесс извлекает информацию о возвратном состоянии и сохраненное значение R0 из стека 400 прерывания и сохраняет их в привилегированном стеке 410. Данные процессы выполняются семью командами, обозначенными на фиг.4C ссылочной позицией 455. В частности, команда SUB используется для уменьшения указателя привилегированного стека на восемь 4-х байтовых слов. Затем используется команда STR для сохранения содержимого R1 в определенном местоположении в привилегированном стеке 410. Затем используются команды LDR и STR для сохранения LR_IRQ в определенном местоположении в привилегированном стеке с последующими командами LDR и STR, используемыми для сохранения SPSR_IRQ в определенном местоположении в привилегированном стеке. Следует отметить, что для этого используется временный регистр R1. Последняя команда LDR используется для сохранения во временном регистре R1 значения R0, которое сохранено в стеке 400 прерывания. Однако последующая команда STR, требуемая для сохранения этого значения в привилегированном стеке, выполняется не сразу, так как в этот момент существует возможность безопасно разблокировать прерывания, и для минимизации задержки обработки прерываний приоритет предоставляется разблокированию прерываний. Следует отметить, что во все предыдущие моменты было небезопасно разблокировать прерывания, так как в стеке 400 прерывания были сохранены данные, которые могли быть перезаписаны при разрешении обслуживания второго прерывания до извлечения этих данных из стека 400 прерывания. Соответственно, согласно фиг.4D, разблокирование прерываний выполняется тремя командами, обозначенными на фиг.4D ссылочной позицией 465 и включенными в приведенный выше фрагмент кода. Фактически эти команды считывают регистр CPSR, очищают бит блокировки прерывания, и затем записывают соответствующие данные обратно в регистр CPSR, осуществляя таким образом разблокирование прерываний.
В этот момент можно продолжить сохранение оставшегося контекста процесса, что выполняется пятью командами STR, обозначенными на фиг.4D ссылочной позицией 475. В частности, следует отметить, что первая команда STR сохраняет содержимое R1 в определенном местоположении в привилегированном стеке; данный регистр в текущий момент содержит исходные данные R0, содержимое R1 уже было перемещено в привилегированный стек одной из выполненных команд, согласно фиг.4C. Затем в привилегированный стек 410 также перемещается содержимое регистров R2, R3, R12 и LR_SVC. Следует отметить, что содержимое других регистров будет автоматически сохранено любым вызываемым впоследствии кодом, который удовлетворяет СВПТА (Стандарту вызова процедуры Тамб АРМ (ATPCS)), и соответственно в этот момент нет необходимости в явном сохранении этого содержимого в привилегированном стеке (если код не удовлетворяет СВПТА).
Затем, согласно фиг.4E, иллюстрируется конечное состояние привилегированного стека 410 в этот момент. Следует отметить, что на фиг.4D и 4E изображен стек 400 прерывания, содержащий три фрагмента данных, первоначально перемещенных в стек прерывания, как показано на фиг.4A. Однако представляется понятным, что теперь эти данные являются избыточными, так как они сохранены в привилегированном стеке, и соответственно в любом случае стек 400 прерывания может считаться незаполненным. Соответственно, в этот момент становится безопасным продолжение и обслуживание прерывания, что обычно осуществляется посредством контекстного переключения к другой задаче.
Как можно заметить, при использовании выше указанного известного способа, обработчик прерываний использует одиннадцать циклов вида D и девять циклов вида M до того, как будет возможным разблокирование прерываний, что приводит к относительно высокой задержке обработки прерывания. Также до того, как будет возможным разблокирование прерываний, используется достаточно большое количество команд. Как можно заметить из представленного выше фрагмента кода и фиг.4A к 4E, при использовании данного известного подхода, до того, как будет возможным разблокирование прерываний, требуется выполнить двадцать команд.
После описания процесса запуска прерывания для реализации системы, изображенной на фиг.3A и 3B, согласно известному способу, ниже будет описан процесс, используемый при запуске прерывания, для реализации такой же системы, согласно предпочтительным вариантам осуществления настоящего изобретения. В частности, для облегчения понимания ниже приведен фрагмент кода, иллюстрирующий код, необходимый при запуске прерывания, для реализации системы, изображенной на фиг.3A и 3B согласно предпочтительному варианту осуществления настоящего изобретения:
; Сохранить возвратное состояние непосредственно в стеке SVC,
; используя команду SRS.
; Теперь изменить режим процессора в системный режим (SVC), в то же
; время разблокируя в прерывания. В этот момент безопасно
; разблокировать прерывания, так как возвратное состояние сохранено
; в стеке SVC. Следовательно, стек прерывания является незаполненным и
; допустимо контекстное переключение без необходимости контекстного
; переключения стека прерывания (т.е. без необходимости наличия
; отдельного стека прерывания для каждой задачи).
*** ПРЕРЫВАНИЯ РАЗБЛОКИРОВАНЫ ***
; Счетчик цикла перед РАЗБЛОКИРОВАНИЕМ прерываний
=5*D+2*M
; Теперь прерывания разблокированы. Продолжить сохранение
; оставшегося контекста процесса.
STMDB sp!, {r0-r3, r12, lr}
Аналогично приведенному выше известному фрагменту кода символы в круглых скобках обозначают количество циклов, а символы 2M рядом с командой SRSDB указывают на два цикла памяти.
Ниже приведенный фрагмент кода будет описан согласно фиг.5А - 5D, схематично иллюстрирующим процессы, выполняемые различными командами этого кода.
Согласно данному возможному варианту аналогично возможному варианту, описанному выше согласно фиг.4A - 4E, предполагается, что возникла исключительная ситуация прерывания, и соответственно процессор вошел в режим функционирования прерывания, где он имеет доступ к регистрам 520. Данные возвратного состояния процессора из режима функционирования прерывания сохраняются в регистрах возвратного состояния, обозначенных на фиг.5A, как регистры 530. На фиг.5A также изображен стек 500 прерывания и привилегированный стек 510.
Фрагмент кода начинается с команды SUB, идентичной команде, включенной в описанный выше известный фрагмент кода, причем, как упомянуто выше, данная команда требуется для обеспечения указания регистром связи прерывания LR_IRQ правильного возвратного адреса.
Затем выполняется новая команда, предложенная согласно предпочтительным вариантам осуществления, а именно команда SRS, предназначенная для сохранения данных возвратного состояния непосредственно в привилегированном стеке 510 при функционировании в режиме функционирования прерывания. Формат этой команды подробно описан ниже. Однако, следует отметить, что символы DB добавляются к команде SRS для обозначения того, что в данном возможном варианте режимом адресации привилегированного стека является «Уменьшающийся До». Команда также содержит поле, идентифицирующее стек, в котором будут сохранены данные возвратного состояния, данное поле в этом возможном варианте содержит указатель SP_SVC стека для привилегированного стека 510. И, наконец, восклицательный знак в конце команды обозначает, что указатель стека должен быть обновлен при сохранении данных возвратного состояния.
Фиг.5В иллюстрирует содержимое стека прерывания и содержимое привилегированного стека после выполнения команды SRS. В частности, следует отметить, что в привилегированный стек 510 было добавлено содержимое регистра LR_IRQ и содержимое регистра SPSR_IRQ, и указатель SP_SVC привилегированного стека был обновлен. На этом этапе становится возможным изменение режима функционирования процессора на привилегированный режим, так как содержимое данных возвратного состояния из режима функционирования прерывания было сохранено в привилегированном стеке. Кроме того, поскольку данные возвратного состояния сохранены непосредственно в привилегированном стеке 510, и стек 500 прерывания остался незаполненным, то в этот момент является безопасным разблокировать прерывания. Так как стек 500 прерывания является незаполненным, то допустимо контекстное переключение, без необходимости контекстного переключения стека прерывания, то есть без необходимости наличия отдельного стека прерывания для каждой задачи, и соответственно указанный процесс может быть использован внутри системы, такой как изображена на фиг.3A и 3B.
Четыре команды, используемые для изменения режима функционирования и разблокирования прерываний, обозначены на фиг.5C ссылочной позицией 540. Фиг.5C дополнительно изображает регистры 550, которые доступны из привилегированного режима функционирования, включая регистры 560, содержащие возвратное состояние привилегированного режима функционирования.
В этот момент процесс может продолжить сохранение оставшегося контекста процесса. Так как связанные регистры могут быть сохранены в последовательных местоположениях привилегированного стека, то имеется возможность выполнить эту операцию посредством одной команды STM, обозначенной на фиг.5C ссылочной позицией 570, при этом процесс схематично иллюстрируется разными линиями между регистрами 550, которые доступны из привилегированного режима и привилегированным стеком 510. Символы DB, добавленные к команде STM, определяют, что привилегированный стек функционирует в соответствии с режимом адресации «Уменьшающийся До», восклицательный знак после идентификатора указателя стека в команде STM означает, что указатель стека должен быть скорректирован. Затем в команде определяют регистры, которые будут сохранены.
Фиг.5D иллюстрирует содержимое привилегированного стека 510 после выполнения команды STM. Следует отметить, что содержимое привилегированного стека 510 идентично содержимому привилегированного стека 410, иллюстрируемого фиг.4E, хотя порядок данных несколько отличен, и соответственно видно, что процесс согласно предпочтительным вариантам осуществления, иллюстрируемый фиг.5А - 5D, приводит к тому же результату, что и известный процесс, иллюстрируемый фиг.4A - 4E. Однако из приведенного выше фрагмента кода очевидно, что способ согласно предпочтительному варианту осуществления, включающий новую команду SRS, обеспечивает использование обработчиком прерываний только пяти циклов вида D и двух циклов вида М до того, как будет возможно разблокирование прерываний. При сравнении количества команд, используемых до того, как окажется возможным разблокирование прерываний, видно, что обработчик прерываний, использующий подход согласно предпочтительному варианту осуществления, должен выполнить шесть команд до разблокирования прерываний, вместо двадцати команд, которые требовалось выполнить согласно известному подходу.
Следовательно, в целом, при использовании подхода согласно предпочтительному варианту осуществления настоящего изобретения, обработчик прерываний использует меньшее количество циклов вида D, меньшее количество циклов вида М и меньшее количество команд. Также следует отметить, что в системе с медленно действующей памятью циклы вида М могут быть намного более медленными, чем циклы вида D, и для каждой выполняемой команды для выборки самой команды может быть выполнена дополнительная выборка в память.
Соответственно, при рассмотрении возможной системы, в которой цикл вида М является в четыре раза более медленным, чем цикл вида D, для обработчика прерываний, использующего способ в соответствии с предпочтительным вариантом осуществления, и для обработчика прерываний, не использующего этот способ, получаются нижеследующие рабочие характеристики; при этом в приведенных ниже уравнениях (D) обозначает количество циклов данных, (M) обозначает количество циклов памяти, а (I) обозначает количество выполняемых команд, каждая из которых может подвергнуться дополнительной выборке в память:
Без использования способа согласно предпочтительному варианту осуществления:
С использованием способа предпочтительного варианта осуществления:
После иллюстрации преимущества использования подхода согласно предпочтительному варианту осуществления настоящего изобретения ниже более подробно описана новая команда SRS. В частности, приведено описание команды SRS предпочтительных вариантов осуществления настоящего изобретения в сокращенной форме Бекуса - Наура:
SRS{
EQ | NE | CS | CC | MI | PL | VS | VC | HI | LS | GE |
LT | GT | LE | AL | HS | LO
SP_USER | SP_FIQ | SP_IRQ | SP_SVC | SP_ABT | SP_UND
Специалистам в данной области техники известна сокращенная форма Бекуса - Наура. Однако здесь приведено краткое описание. В сокращенной форме элементы в фигурных скобках «{...}» обозначают нефакультативные элементы, элементы в угловых скобках «<...>» обозначают заменяемые обозначения, которые могут быть заменены приведенным расширением обозначения. Символ «|» используется для разделения обозначений в списке обозначений и может толковаться, как «или», означающее, что строго одно из этих обозначений может быть использовано в качестве заменяющего обозначения.
Следовательно, можно заметить,
что команда SRS сохраняет возвратное состояние процессора в стеке, определенном
В возможном варианте с процессором АРМ обеспечены шесть режимов функционирования, а именно пользовательский режим, привилегированный режим, режим аварийного прекращения,
неопределенный режим и два режима прерывания, ЗПР и ЗБП, и соответственно, как показано в приведенной выше сокращенной форме Бекуса - Наура,
Поле
Ниже приведены возможные варианты команды SRS, которые можно вывести из сокращенной формы Бекуса - Наура:
SRSDB SP_SVC!
SRSEQDB SP_SVC!
SRSEQDB SP_SVC
На фиг.6 изображена структурная схема, иллюстрирующая систему, содержащую устройство обработки данных согласно предпочтительным вариантам осуществления настоящего изобретения. Согласно предпочтительным вариантам осуществления изобретения устройство обработки данных принимает форму ядра 60 ЦПУ, создаваемую внутри ЦПУ 10. Ядро 60 ЦПУ будет содержать процессор для выполнения команд обработки данных и множество регистров 70, которые доступны процессору. ЦПУ 10, как правило, содержит ядро 60 ЦПУ и несколько других необязательных элементов, например, диспетчер 45 памяти (ДП) и кэш 50.
ЦПУ 10, обычно, посредством шины 30 будет соединен с другими элементами и, следовательно, может быть соединен с постоянным запоминающим устройством 40 (ПЗУ) и с оперативным запоминающим устройством 20 (ОЗУ). ПЗУ 40 может быть сконфигурировано для сохранения, помимо прочей информации, команды 80, которая должна выполняться ядром 60 ЦПУ. Согласно предпочтительным вариантам осуществления настоящего изобретения, стеки 90, предусмотренные для каждого режима функционирования процессора, могут быть сохранены внутри ОЗУ 20.
Из приведенного выше описания предпочтительного варианта осуществления настоящего изобретения, следует, что его использование приводит к ряду преимуществ. Во-первых, использование предпочтительного варианта осуществления настоящего изобретения позволяет уменьшить размер кода. В описанных возможных вариантах показано, как можно использовать предпочтительный вариант осуществления для уменьшения количества команд, используемых при запуске обработчика прерываний, с двадцати до шести команд. Дополнительно, использование предпочтительного варианта осуществления обычно будет приводить к лучшим рабочим характеристикам. В описанных выше примерах, показано, как предпочтительный вариант осуществления уменьшает с 127 до 37 количество циклов при запуске обработчика прерываний. Дополнительно, уменьшение количества циклов также позволяет уменьшить задержку обработки прерываний, поскольку эти циклы обычно выполняются в критической точке, где прерывания заблокированы.
При использовании способа согласно предпочтительному варианту осуществления изобретения дополнительным преимуществом является то, что он может использоваться для уменьшения потребляемой мощности процессора, что чрезвычайно важно в устройствах, питаемых от батареек, таких как мобильные телефоны и персональные цифровые ассистенты (ПЦА). Если рассмотреть систему, основанную на описанных выше возможных вариантах и иллюстрациях, и предположить, что для обслуживания высокоприоритетного прерывания требуется постоянная поддержка этой системой времени реакции на прерывания в 10 микросекунд, то становится понятным, что система должна работать с быстродействием, достаточным для обеспечения выполнения 127 циклов за 10 микросекунд, как в случае системы, использующей известный подход. Однако, если система использует способ согласно предпочтительным вариантам осуществления настоящего изобретения, то требуется быстродействие, достаточное для обеспечения выполнения 37 циклов за 10 микросекунд. Следовательно, следующие соотношения определяют необходимую минимальную тактовую частоту:
Без использования способа согласно предпочтительным вариантам осуществления:
l.0E-5 Секунд/127 Циклов = 7.874E-08 Секунд/Цикл
1/7.874E-08 = 1.27E + 7 Циклов в Секунду = 12.7 МГц
С использованием способа согласно предпочтительным вариантам осуществления:
l.0E-5 Секунд/37 Циклов = 2.701E-08 Секунд/цикл
1/2.701E-08 = 3.7Е+6 Циклов в Секунду = 3.7 МГц
Так как потребляемая процессором мощность зависит от частоты приблизительно линейным образом, то система, использующая способ согласно предпочтительным вариантам осуществления, может использовать около 29% (3.7÷12.8×100) от мощности аналогичной системы, не использующей способ согласно предпочтительному варианту осуществления.
Хотя выше был описан конкретный вариант осуществления изобретения, очевидно, что изобретение не ограничивается этим вариантом, и что в рамках изобретения могут быть внесены изменения и дополнения. Например, не выходя за рамки изобретения, могут быть получены разные комбинации признаков зависимых и независимых пунктов формулы изобретения.
Изобретение относится к способу и устройству обработки данных для сохранения возвратного состояния в устройстве обработки данных. Техническим результатом является уменьшение размера кода и уменьшение задержки обработки прерывания. Устройство содержит блок обработки данных, имеющий множество режимов функционирования, для каждого из которых имеется свой стек в памяти. Способ описывает работу этого устройства. Носитель данных содержит программу, конфигурирующую устройство обработки данных для выполнения этапов способа. 3 н. и 14 з.п. ф-лы, 16 ил.