СПОСОБ И УСТРОЙСТВО ОБРАБОТКИ ДАННЫХ ДЛЯ СОХРАНЕНИЯ ВОЗВРАТНОГО СОСТОЯНИЯ Российский патент 2006 года по МПК G06F9/46 G06F15/04 

Описание патента на изобретение 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 будут

; выгружены из стека прерывания, как только изменится режим.

; Не уменьшать указатель стека безопасно, так как известно,

; что между сохранением данных и их считыванием после

; изменения режимов не могут обслуживаться никакие

; прерывания, так как прерывания заблокированы.

(D)SUBlr, lr, #4; Настроить LR_IRQ на указатель для возвратного адреса(M) STRlr, [sp, #4]; Сохранить LR_IRQ в стеке прерывания(D)MRSlr, spsr; Считать SPSR_IRQ(M)STRlr, [sp, #-8]; Сохранить SPSR_IRQ в стеке прерывания(M)STRrO, [sp, #-12]; Сохранить RO в стеке прерывания(D)MOVrO, sp; Извлечь указатель стека из RO

; Теперь изменить режим процессора в системный режим (SVC).

(D)MRSlr, cpsr; Считать регистр текущего состояния процессора(D)BIClr, lr, #0x1f; Снять маску с битов режима, используя операцию Bit Clear(D)ORRlr, lr, #0x13; Or в правильных битах режима для режима SVC(D)MSRcpsr_c, lr; Записать новый режим в cpsr

; Теперь сохранить регистр в стеке SVC, чтобы можно было его использовать

; как временный. Затем извлечь информацию возвратного состояния и

; сохраненный RO из стека прерывания и сохранить его в стеке SVC.

(D)SUBsp, sp, #8*4; Сначала создать место в стеке SVC(M)STRr1, [sp, #2*4]; Сохранить R1 для использования, как
временного регистра
(M)LDRr1, [rO, #-4]; Извлечь сохраненный LR_IRQ в R1(M)STRr1, [sp, #7*4]; Сохранить LR_IRQ в стек SVC(M)LDRr1, [rO, #-8]; Извлечь сохраненный SPSR_IRQ в R1 (M)STRr1, [sp, #0*4]; Сохранить SPSR_IRQ в стек SVC(M)LDRr1, [rO, #-12]; Извлечь RO из стека прерывания

; В этот момент безопасно разблокировать прерывания. Это было не

; безопасно до этого момента, так как в стеке прерывания хранились

; данные, которые могли быть перезаписаны при допущении обслуживания

; другого прерывания до извлечения всех данных из стека

; прерывания.

(D)MRSrO, cpsr; Считать CPSR(D)BICrO, rO, #0x80; Очистить бит блокировки прерывания(D)MSRcpsr_c, rO; И записать обратно CPSR

; *** ПРЕРЫВАНИЕ РАЗБЛОКИРОВАНО ***

; Счетчик цикла перед разблокированием прерываний =11*D+9*M

;

; Теперь можно продолжить сохранение оставшихся данных контекста процесса

STRr1, [sp, #1*4]; Сохранить R0, извлеченный из стека IRQ

STRr2, [sp, #3*4]; Сохранить R2 в стеке SVCSTRr3, [sp, #4*4]; Сохранить R3 в стеке SVCSTRR12, [sp, #5*4]; Сохранить R12 в стеке SVCSTRlr, [spc, #6*4]; Сохранить LR_SVC в стеке SVC......; Теперь продолжить и обслужить прерывание

Буква в круглых скобках, расположенная рядом с каждой командой, определяет количество циклов памяти или данных, требуемых для каждой команды, где М равно одному циклу обращения к памяти, а 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.

(D)SUBlr, lr, #4; Настроить LR_IRQ для указания возвратного адреса (2M)SRSDBsp_svc!; Сохранить возвратное состояние; в стеке SVC

; Теперь изменить режим процессора в системный режим (SVC), в то же

; время разблокируя в прерывания. В этот момент безопасно

; разблокировать прерывания, так как возвратное состояние сохранено

; в стеке SVC. Следовательно, стек прерывания является незаполненным и

; допустимо контекстное переключение без необходимости контекстного

; переключения стека прерывания (т.е. без необходимости наличия

; отдельного стека прерывания для каждой задачи).

(D)MRSlr, cpsr; Считать cpsr(D)BIClr, lr, #0x1f+0x80; Снять маску с битов режима и очистить прерывание(D)ORRlr, lr, #0x13; Or в битах режима для режима SVC(D)MSRcpsr_c, lr; Записать обратно новый режим и биты прерывания

*** ПРЕРЫВАНИЯ РАЗБЛОКИРОВАНЫ ***

; Счетчик цикла перед РАЗБЛОКИРОВАНИЕМ прерываний

=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{<COND>}<addr_mode> <fully_qualified_stack_pointer>{!}

<COND>::=

EQ | NE | CS | CC | MI | PL | VS | VC | HI | LS | GE |

LT | GT | LE | AL | HS | LO

<addr_mode>::= IA | IB | DA | DB | FD | ED | FA | EA

<fully_qualified_stack_pointer>:: =

SP_USER | SP_FIQ | SP_IRQ | SP_SVC | SP_ABT | SP_UND

<COND>ОписаниеУсловиеEQРавноZNEНеравно!ZCSЕсть переносCHSБез знака выше или то жеCCCНет переноса! CLOБез знака ниже!CMIМинусNPLПлюс!NVSЕсть переполнениеVVCНет переполнения!VHIБез знака вышеC & !ZLSБез знака ниже или то же!C | ZGEБольше или равно!(N V)LTМеньше чемN VGTБольше чем!Z & ! (N V)LEМеньше чем или равноZ | (N V)ALВсегда1<addr_mode>ОписаниеIAУвеличивающийся после (эквивалентен EA)EAВозрастающий незаполненный (эквивалентен IA)IBУвеличивающийся до (эквивалентен FA)

FAВозрастающий заполненный (эквивалентен IB)DBУменьшающийся незаполненный (эквивалентен FD)FDУбывающий заполненный (эквивалентен DB)DAУменьшающийся после (эквивалентен ED)EDУбывающий незаполненный (эквивалентен DA)<fully_qualified_stack_pointer>ОписаниеSP_USERУказатель стека режима
пользователя
SP_FIQУказатель стека режима
запроса на быстрое прерывание
SP_IRQУказатель стека режима
запроса на прерывание
SP_SVCУказатель привилегированного стекаSP_ABTУказатель стека аварийного прекращенияSP_UNDУказатель неопределенного стека

Специалистам в данной области техники известна сокращенная форма Бекуса - Наура. Однако здесь приведено краткое описание. В сокращенной форме элементы в фигурных скобках «{...}» обозначают нефакультативные элементы, элементы в угловых скобках «<...>» обозначают заменяемые обозначения, которые могут быть заменены приведенным расширением обозначения. Символ «|» используется для разделения обозначений в списке обозначений и может толковаться, как «или», означающее, что строго одно из этих обозначений может быть использовано в качестве заменяющего обозначения.

Следовательно, можно заметить, что команда SRS сохраняет возвратное состояние процессора в стеке, определенном <fully_qualified_stack_pointer>, который определяет стек, связанный с одним из доступных режимов процессора. Если <fully_qualified_stack_pointer> сопровождается символом «!», это указывает, что <fully_qualified_stack_pointer> будет обновлен после выполнения операции.

В возможном варианте с процессором АРМ обеспечены шесть режимов функционирования, а именно пользовательский режим, привилегированный режим, режим аварийного прекращения, неопределенный режим и два режима прерывания, ЗПР и ЗБП, и соответственно, как показано в приведенной выше сокращенной форме Бекуса - Наура, <fully_qualified_stack_pointer> может принимать любое из значений SP_USER, SP_FIQ, SP_IRQ, SP_SVC, SP_ABT или SP_UND.

<COND> определяет одно из нескольких условий, которые для выполнения операции должны быть истинными. Регистр CPSR, являющийся доступным для процессора, содержит четыре флажка, определенных здесь, как N, Z, V, C. Флажок N установлен в единицу, если результат последней арифметической операции был отрицательным, флажок Z установлен в единицу, если результат последней арифметической операции был нулевым, флажок V установлен в единицу, если результат последней арифметической операции привел к переполнению, и флажок C установлен в единицу, если результат последней арифметической операции привел к переносу. В сокращенной форме Бекуса - Наура для приведенной выше команды SRS используется таблица, в которой показаны разные значения, которые может принимать поле <COND>, вместе с описанием каждого значения, и определение, чему они эквивалентны в терминах флажков N, Z, V и C, находящихся в регистре CPSR. Следовательно, эта таблица фактически иллюстрирует, каким образом процессор на основании флажков N, Z, V и C, находящихся в регистре CPSR, определяет, следует ли выполнять команду. Например, если поле <COND> установлено в значение MI, то процессор осуществит проверку, установлен ли флажок N в единицу, и, если установлен, то выполнит команду, иначе команда не будет выполнена. Если поле <COND> не определено, это эквивалентно обозначению «AL» для поля <COND>, определяющему, что операция должна быть выполнена всегда.

Поле <addr_mode> определяет режим адресации для операции, причем согласно предпочтительному варианту осуществления имеются разные режимы адресации, которые приведены выше совместно с сокращенной формой Бекуса - Наура для команды. Как было упомянуто выше, поле <fully_qualified_stack_pointer> определяет полностью уточненное имя указателя стека, связанного с одним из режимов выполнения для процессора.

Ниже приведены возможные варианты команды 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) от мощности аналогичной системы, не использующей способ согласно предпочтительному варианту осуществления.

Хотя выше был описан конкретный вариант осуществления изобретения, очевидно, что изобретение не ограничивается этим вариантом, и что в рамках изобретения могут быть внесены изменения и дополнения. Например, не выходя за рамки изобретения, могут быть получены разные комбинации признаков зависимых и независимых пунктов формулы изобретения.

Похожие патенты RU2275679C2

название год авторы номер документа
СПОСОБ И УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ КОМАНД С ПЛАВАЮЩЕЙ ЗАПЯТОЙ И УПАКОВАННЫХ ДАННЫХ, ИСПОЛЬЗУЯ ОДИНОЧНЫЙ ФАЙЛ РЕГИСТРА 1996
  • Лин Деррик
  • Ваккалагадда Рамамохан Р.
  • Глю Эндрю Ф.
  • Меннемейер Лэрри М.
  • Пелег Александер Д.
  • Бистри Дэвид
  • Миттал Миллинд
  • Дюлонг Кэрол
  • Коваси Эйити
  • Эйтан Бенни
RU2179331C2
СИСТЕМЫ И СПОСОБЫ ИСПОЛЬЗОВАНИЯ СИНТЕЗИРОВАННЫХ КОМАНД В ВИРТУАЛЬНОЙ МАШИНЕ 2004
  • Траут Эрик
RU2374675C2
СИСТЕМЫ И СПОСОБЫ ПРЕДОТВРАЩЕНИЯ НЕСАНКЦИОНИРОВАННОГО ПЕРЕМЕЩЕНИЯ СТЕКА 2014
  • Пател Байджу В.
  • Ли Сяонин
  • Энвин Х.П.
  • Меллик Асит К.
  • Нейджер Гилберт
  • Кроссленд Джеймс Б.
  • Опфермен Тоуби
  • Кхаре Атул А.
  • Брендт Джейсон В.
  • Коук Джеймс С.
  • Вайда Брайан Л.
RU2629442C2
СХЕМА ОТЛАДКИ, СРАВНИВАЮЩАЯ РЕЖИМ ОБРАБОТКИ НАБОРА КОМАНД ПРОЦЕССОРА 2007
  • Берк Кевин Чарльз
  • Стемпел Брайан Майкл
  • Стритт Дарен Юджин
  • Сапп Кевин Аллен
  • Дебрюйн Лесли Марк
  • Ризк Нэйбил Амир
  • Сарториус Томас Эндрю
  • Смит Родни Уэйн
RU2429525C2
ЭНЕРГОЭКОНОМНЫЕ СПОСОБЫ И УСТРОЙСТВО ИЗБИРАТЕЛЬНОГО РАЗРЕШЕНИЯ КОМПАРАТОРОВ В РЕГИСТРОВОМ ФАЙЛЕ С ПЕРЕИМЕНОВАНИЕМ НА ОСНОВЕ САМ НА ОСНОВАНИИ ИЗВЕСТНОГО СОСТОЯНИЯ ПРОЦЕССОРА 2006
  • Бриджес Джеффри Тодд
  • Диффендерфер Джеймс Норрис
  • Макилвейн Майкл Скотт
  • Сарториус Томас Эндрю
RU2389059C2
СИСТЕМА ДЛЯ ВЫЗОВА ПРИВИЛЕГИРОВАННОЙ ФУНКЦИИ В УСТРОЙСТВЕ 2004
  • Келли Брайан Харольд
  • Чандрасекхар Рамеш
RU2342695C2
Связанное с выбранными архитектурными функциями администрирование обработки 2015
  • Гшвинд Михаэль Карл
  • Гейни Чарлз
RU2665243C2
ОБРАБОТКА ДАННЫХ С ИСПОЛЬЗОВАНИЕМ НЕСКОЛЬКИХ НАБОРОВ КОМАНД 2002
  • Сил Дэвид Джеймс
  • Нэвилл Эдвард Коллес
RU2281547C2
СПОСОБ ПЕРЕКЛЮЧЕНИЯ КОНТЕКСТА ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА ПРИ ПРЕРЫВАНИИ ПРОГРАММЫ ИЛИ ПЕРЕХОДЕ К ПОДПРОГРАММЕ 2006
  • Шишарин Сергей Александрович
RU2340933C2
СИСТЕМА ДЛЯ ОБЕСПЕЧЕНИЯ ПЕРЕХОДОВ МЕЖДУ РЕЖИМАМИ РАБОТЫ УСТРОЙСТВА 2004
  • Келли Брайан Харольд
  • Чандрасекхар Рамеш
RU2358309C2

Иллюстрации к изобретению RU 2 275 679 C2

Реферат патента 2006 года СПОСОБ И УСТРОЙСТВО ОБРАБОТКИ ДАННЫХ ДЛЯ СОХРАНЕНИЯ ВОЗВРАТНОГО СОСТОЯНИЯ

Изобретение относится к способу и устройству обработки данных для сохранения возвратного состояния в устройстве обработки данных. Техническим результатом является уменьшение размера кода и уменьшение задержки обработки прерывания. Устройство содержит блок обработки данных, имеющий множество режимов функционирования, для каждого из которых имеется свой стек в памяти. Способ описывает работу этого устройства. Носитель данных содержит программу, конфигурирующую устройство обработки данных для выполнения этапов способа. 3 н. и 14 з.п. ф-лы, 16 ил.

Формула изобретения RU 2 275 679 C2

1. Устройство обработки данных, содержащее блок обработки для выполнения команд обработки данных, причем блок обработки имеет множество режимов функционирования, каждый из которых имеет соответствующий стек для хранения данных, соответствующих этому режиму, блок обработки выполнен с возможностью записи в ответ на команду обработки данных возвратного состояния данных возвратного состояния блока обработки из его текущего режима функционирования в стек, соответствующий режиму функционирования, отличному от текущего режима функционирования, при этом оставаясь в текущем режиме функционирования.2. Устройство обработки данных по п.1, в котором команда обработки данных возвратного состояния вызывается при возникновении исключительной ситуации.3. Устройство обработки данных по п.2, в котором исключительной ситуацией является любая исключительная ситуация из предварительно заданного набора исключительных ситуаций.4. Устройство обработки данных по п.3, в котором предварительно заданный набор исключительных ситуаций включает в себя одно или более прерываний.5. Устройство обработки данных по любому из предыдущих пунктов, дополнительно содержащее набор регистров, включающий в себя множество регистров возвратного состояния для сохранения данных возвратного состояния блока обработки для каждого режима функционирования, причем блок обработки выполнен с возможностью доступа только к регистрам возвратного состояния, содержащим данные возвратного состояния блока обработки, из текущего режима функционирования.6. Устройство обработки данных по п.1, в котором каждый стек имеет соответствующий ему указатель стека, идентифицирующий местоположение внутри стека, причем указатель стека для конкретного стека является доступным только из соответствующего режима функционирования.7. Устройство обработки данных по п.5, в котором каждый стек имеет соответствующий ему указатель стека, идентифицирующий местоположение внутри стека, причем указатель стека для конкретного стека является доступным только из соответствующего режима функционирования, и набор регистров включает в себя множество регистров указателя стека для сохранения указателей стека для каждого стека, причем блок обработки выполнен с возможностью доступа только к регистру указателя стека, содержащему указатель стека для стека, соответствующего его текущему режиму функционирования.8. Устройство обработки данных по п.1, в котором команда обработки данных возвратного состояния содержит поле идентификатора стека для идентификации стека, в который должны быть записаны данные возвратного состояния блока обработки.9. Устройство обработки данных по п.8, в котором поле идентификатора стека предназначено для задания указателя стека для стека, в который должны быть записаны данные возвратного состояния блока обработки, таким образом, обеспечивая возможность доступа блока обработки к соответствующему местоположению в указанном стеке при записи в указанный стек данных возвратного состояния.10. Устройство обработки данных по п.9, в котором команда обработки данных возвратного состояния содержит факультативное поле обновления, которое устанавливается для указания необходимости обновления указателя стека после записи данных возвратного состояния в стек.11. Устройство обработки данных по любому из пп.8-10, в котором команда обработки данных возвратного состояния содержит поле режима адресации для идентификации режима адресации стека, в который должны быть записаны данные возвратного состояния.12. Устройство обработки данных по любому из пп.8-10, в котором команда обработки данных возвратного состояния содержит поле условия для задания условия выполнения команды обработки данных возвратного состояния, так чтобы команда обработки данных возвратного состояния выполнялась блоком обработки только при выполнении указанного условия.13. Устройство обработки данных по п.1, в котором текущим режимом функционирования является режим исключительной ситуации, а режимом функционирования, отличным от текущего режима функционирования, является привилегированный режим функционирования.14. Устройство обработки данных по п.1, в котором текущим режимом функционирования является режим исключительной ситуации, а режимом функционирования, отличным от текущего режима функционирования, является режим функционирования блока обработки до входа в режим исключительной ситуации.15. Устройство обработки данных по п.1, в котором данные возвратного состояния содержат сохраненный счетчик команд и сохраненное состояние процессора.16. Способ функционирования устройства обработки данных, содержащего блок обработки для выполнения команд обработки данных, при этом блок обработки имеет множество режимов функционирования, каждый режим функционирования имеет соответствующий стек для сохранения данных, соответствующих этому режиму, при этом способ содержит этап, согласно которому в ответ на команду обработки данных возвратного состояния вынуждают блок обработки производить запись данных возвратного состояния блока обработки из его текущего режима функционирования в стек, соответствующий режиму функционирования, отличному от текущего режима функционирования, при этом оставаясь в текущем режиме функционирования.17. Носитель данных, содержащий записанную на нем компьютерную программу, конфигурирующую устройство обработки данных для выполнения этапов способа по п.16.

Документы, цитированные в отчете о поиске Патент 2006 года RU2275679C2

СПОСОБ ПЕРЕДАЧИ ИНФОРМАЦИИ, БАЗОВАЯ СТАНЦИЯ И ОБОРУДОВАНИЕ ПОЛЬЗОВАТЕЛЯ 2020
  • Ли, Чао
  • Чжан, Синвэй
  • Ши, Цзе
  • Сунь, Инхуа
  • Лю, Чжэ
RU2779842C2
СПОСОБ ПРОВЕДЕНИЯ ОПЕРАЦИЙ И/ИЛИ ИГРЫ С ИСПОЛЬЗОВАНИЕМ НОСИТЕЛЯ ИНФОРМАЦИИ, СИСТЕМА ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ И ИГРОВОЕ УСТРОЙСТВО 1999
  • Анисимов С.Н.
  • Катаев В.А.
RU2145116C1
RU 98118737 A1, 20.08.2000
US 6151671 А, 21.11.2000
УСТРОЙСТВО И СПОСОБ ОБРАБОТКИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ НАБОРОВ КОМАНД 1995
  • Давид Вивьян Джаггар
RU2137183C1

RU 2 275 679 C2

Авторы

Нэвилл Эдвард Коллес

Девере Ян Виктор

Даты

2006-04-27Публикация

2001-09-24Подача