RU2275679C2 - Способ и устройство обработки данных для сохранения возвратного состояния - Google Patents
Способ и устройство обработки данных для сохранения возвратного состояния Download PDFInfo
- Publication number
- RU2275679C2 RU2275679C2 RU2003115617/09A RU2003115617A RU2275679C2 RU 2275679 C2 RU2275679 C2 RU 2275679C2 RU 2003115617/09 A RU2003115617/09 A RU 2003115617/09A RU 2003115617 A RU2003115617 A RU 2003115617A RU 2275679 C2 RU2275679 C2 RU 2275679C2
- Authority
- RU
- Russia
- Prior art keywords
- stack
- mode
- data processing
- return state
- processing unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Изобретение относится к способу и устройству обработки данных для сохранения возвратного состояния в устройстве обработки данных. Техническим результатом является уменьшение размера кода и уменьшение задержки обработки прерывания. Устройство содержит блок обработки данных, имеющий множество режимов функционирования, для каждого из которых имеется свой стек в памяти. Способ описывает работу этого устройства. Носитель данных содержит программу, конфигурирующую устройство обработки данных для выполнения этапов способа. 3 н. и 14 з.п. ф-лы, 16 ил.
Description
Область техники
Настоящее изобретение относится к способу и устройству обработки данных для сохранения возвратного состояния, а более конкретно к сохранению возвратного состояния в устройстве обработки данных, содержащем процессор, имеющий несколько режимов функционирования, причем каждый режим функционирования имеет соответствующий стек сохранения данных, соответствующих этому режиму.
Предшествующий уровень техники
Известно, что в устройстве обработки данных такого типа предусмотрены команды, предназначенные для сохранения данных возвратного состояния в стеке, соответствующем текущему режиму функционирования. Типичным примером использования таких команд является возникновение исключительной ситуации, при которой событие ведет к сохранению данных возвратного состояния в стеке, соответствующем режиму функционирования исключительной ситуации. Эта процедура может потребоваться по разным причинам. Например, в основном, такое устройство обработки данных может поддерживать многозадачность, и, когда должен быть выполнен контекстный переключатель для обеспечения возможности выполнения другой задачи, необходимо осуществить свопинг или подкачку стека или стеков, соответствующих режимам функционирования текущей задачи, для обеспечения возможности выполнения новой задачи. В системах, где доступ к стекам осуществляется с использованием указателей стеков, такой свопинг, обычно, выполняется путем перестановки указателя стека или указателей стеков в случае нескольких стеков. В устройстве обработки данных такого типа, обычно, требуется сохранение данных возвратного состояния в стеке, свопинг которого будет осуществлен при возникновении контекстного переключения.
Для улучшения контекстного переключения требуется осуществить свопинг всех стеков, которые не являются незаполненными в момент контекстного переключения. На процессоре с множеством стеков может потребоваться свопинг каждого стека, связанного с конкретной задачей. Дополнительно, при использовании такого подхода для каждой задачи должны поддерживаться отдельные стеки для (каждого) режима функционирования, что приводит к увеличению затрат памяти и увеличению времени, затрачиваемого на осуществление свопинга каждого стека, связанного с каждой задачей. Например, современный процессор, производимый АРМ Лимитид (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) | SUB | lr, lr, #4 | ; Настроить LR_IRQ на указатель для возвратного адреса |
(M) | STR | lr, [sp, #4] | ; Сохранить LR_IRQ в стеке прерывания |
(D) | MRS | lr, spsr | ; Считать SPSR_IRQ |
(M) | STR | lr, [sp, #-8] | ; Сохранить SPSR_IRQ в стеке прерывания |
(M) | STR | rO, [sp, #-12] | ; Сохранить RO в стеке прерывания |
(D) | MOV | rO, sp | ; Извлечь указатель стека из RO |
; Теперь изменить режим процессора в системный режим (SVC).
(D) | MRS | lr, cpsr | ; Считать регистр текущего состояния процессора |
(D) | BIC | lr, lr, #0x1f | ; Снять маску с битов режима, используя операцию Bit Clear |
(D) | ORR | lr, lr, #0x13 | ; Or в правильных битах режима для режима SVC |
(D) | MSR | cpsr_c, lr | ; Записать новый режим в cpsr |
; Теперь сохранить регистр в стеке SVC, чтобы можно было его использовать
; как временный. Затем извлечь информацию возвратного состояния и
; сохраненный RO из стека прерывания и сохранить его в стеке SVC.
(D) | SUB | sp, sp, #8*4 | ; Сначала создать место в стеке SVC |
(M) | STR | r1, [sp, #2*4] | ; Сохранить R1 для использования, как временного регистра |
(M) | LDR | r1, [rO, #-4] | ; Извлечь сохраненный LR_IRQ в R1 |
(M) | STR | r1, [sp, #7*4] | ; Сохранить LR_IRQ в стек SVC |
(M) | LDR | r1, [rO, #-8] | ; Извлечь сохраненный SPSR_IRQ в R1 |
(M) | STR | r1, [sp, #0*4] | ; Сохранить SPSR_IRQ в стек SVC |
(M) | LDR | r1, [rO, #-12] | ; Извлечь RO из стека прерывания |
; В этот момент безопасно разблокировать прерывания. Это было не
; безопасно до этого момента, так как в стеке прерывания хранились
; данные, которые могли быть перезаписаны при допущении обслуживания
; другого прерывания до извлечения всех данных из стека
; прерывания.
(D) | MRS | rO, cpsr | ; Считать CPSR |
(D) | BIC | rO, rO, #0x80 | ; Очистить бит блокировки прерывания |
(D) | MSR | cpsr_c, rO | ; И записать обратно CPSR |
; *** ПРЕРЫВАНИЕ РАЗБЛОКИРОВАНО ***
; Счетчик цикла перед разблокированием прерываний =11*D+9*M
;
; Теперь можно продолжить сохранение оставшихся данных контекста процесса
STR | r1, [sp, #1*4] | ; Сохранить R0, извлеченный из стека IRQ |
STR | r2, [sp, #3*4] | ; Сохранить R2 в стеке SVC |
STR | r3, [sp, #4*4] | ; Сохранить R3 в стеке SVC |
STR | R12, [sp, #5*4] | ; Сохранить R12 в стеке SVC |
STR | lr, [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) | SUB | lr, lr, #4 | ; Настроить LR_IRQ для указания возвратного адреса |
(2M) | SRSDB | sp_svc! | ; Сохранить возвратное состояние |
; в стеке SVC |
; Теперь изменить режим процессора в системный режим (SVC), в то же
; время разблокируя в прерывания. В этот момент безопасно
; разблокировать прерывания, так как возвратное состояние сохранено
; в стеке SVC. Следовательно, стек прерывания является незаполненным и
; допустимо контекстное переключение без необходимости контекстного
; переключения стека прерывания (т.е. без необходимости наличия
; отдельного стека прерывания для каждой задачи).
(D) | MRS | lr, cpsr | ; Считать cpsr |
(D) | BIC | lr, lr, #0x1f+0x80 | ; Снять маску с битов режима и очистить прерывание |
(D) | ORR | lr, lr, #0x13 | ; Or в битах режима для режима SVC |
(D) | MSR | cpsr_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 | Равно | Z | ||
NE | Неравно | !Z | ||
CS | Есть перенос | C | ||
HS | Без знака выше или то же | C | ||
CC | Нет переноса | ! C | ||
LO | Без знака ниже | !C | ||
MI | Минус | N | ||
PL | Плюс | !N | ||
VS | Есть переполнение | V | ||
VC | Нет переполнения | !V | ||
HI | Без знака выше | C & !Z | ||
LS | Без знака ниже или то же | !C | Z | ||
GE | Больше или равно | !(N ∧ V) | ||
LT | Меньше чем | N ∧ V | ||
GT | Больше чем | !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) от мощности аналогичной системы, не использующей способ согласно предпочтительному варианту осуществления.
Хотя выше был описан конкретный вариант осуществления изобретения, очевидно, что изобретение не ограничивается этим вариантом, и что в рамках изобретения могут быть внесены изменения и дополнения. Например, не выходя за рамки изобретения, могут быть получены разные комбинации признаков зависимых и независимых пунктов формулы изобретения.
Claims (17)
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.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0028869.6 | 2000-11-27 | ||
GB0028869A GB2369464B (en) | 2000-11-27 | 2000-11-27 | A data processing apparatus and method for saving return state |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2003115617A RU2003115617A (ru) | 2004-10-10 |
RU2275679C2 true RU2275679C2 (ru) | 2006-04-27 |
Family
ID=9903938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003115617/09A RU2275679C2 (ru) | 2000-11-27 | 2001-09-24 | Способ и устройство обработки данных для сохранения возвратного состояния |
Country Status (13)
Country | Link |
---|---|
US (1) | US6904517B2 (ru) |
EP (1) | EP1337918B1 (ru) |
JP (2) | JP5295475B2 (ru) |
KR (1) | KR100848603B1 (ru) |
CN (1) | CN1227589C (ru) |
AU (1) | AU2001287927A1 (ru) |
DE (1) | DE60139567D1 (ru) |
GB (1) | GB2369464B (ru) |
IL (2) | IL155407A0 (ru) |
MY (1) | MY127357A (ru) |
RU (1) | RU2275679C2 (ru) |
TW (1) | TW556093B (ru) |
WO (1) | WO2002042914A1 (ru) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2450329C2 (ru) * | 2006-07-25 | 2012-05-10 | Квэлкомм Инкорпорейтед | Эффективный механизм сохранения адреса возврата из прерывания |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3634379B2 (ja) * | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
US6880030B2 (en) * | 2000-12-13 | 2005-04-12 | Wind River Systems, Inc. | Unified exception handling for hierarchical multi-interrupt architectures |
US7313797B2 (en) * | 2002-09-18 | 2007-12-25 | Wind River Systems, Inc. | Uniprocessor operating system design facilitating fast context switching |
US7496896B2 (en) * | 2003-07-17 | 2009-02-24 | Computer Associates Think, Inc. | Accessing return values and exceptions |
US20080098398A1 (en) * | 2004-11-30 | 2008-04-24 | Koninklijke Philips Electronics, N.V. | Efficient Switching Between Prioritized Tasks |
US7853960B1 (en) * | 2005-02-25 | 2010-12-14 | Vmware, Inc. | Efficient virtualization of input/output completions for a virtual device |
US7877629B2 (en) * | 2005-06-01 | 2011-01-25 | Sanmina-Sci | Facilitating handling of exceptions in a program implementing a M-on-N threading model |
TW200719141A (en) * | 2005-11-07 | 2007-05-16 | Cheertek Inc | Flash memory access method and circuit of an embedded system |
JP4961781B2 (ja) * | 2006-03-14 | 2012-06-27 | ソニー株式会社 | 情報処理装置、その起動方法およびプログラム |
US7797681B2 (en) * | 2006-05-11 | 2010-09-14 | Arm Limited | Stack memory selection upon exception in a data processing system |
WO2008122746A1 (en) * | 2007-04-10 | 2008-10-16 | Cambridge Consultants Limited | Data processing apparatus |
US7979685B1 (en) | 2007-11-27 | 2011-07-12 | Oracle America, Inc. | Multiple instruction execution mode resource-constrained device |
WO2010004245A1 (en) * | 2008-07-10 | 2010-01-14 | Cambridge Consultants Limited | Processor with push instruction |
US7853827B2 (en) * | 2008-08-29 | 2010-12-14 | International Business Machines Corporation | Isotropic processor |
GB2478733B (en) | 2010-03-15 | 2013-08-14 | Advanced Risc Mach Ltd | Apparatus and method for handling exception events |
US20120054773A1 (en) * | 2010-08-31 | 2012-03-01 | International Business Machines Corporation | Processor support for secure device driver architecture |
US9405637B2 (en) | 2011-01-18 | 2016-08-02 | Texas Instruments Incorporated | Locking/unlocking CPUs to operate in safety mode or performance mode without rebooting |
US9213828B2 (en) | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
US9477834B2 (en) * | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
US10210349B2 (en) | 2012-02-08 | 2019-02-19 | Arm Limited | Data processing apparatus and method using secure domain and less secure domain |
GB2501343A (en) * | 2012-02-08 | 2013-10-23 | Advanced Risc Mach Ltd | Data processing apparatus and method using secure domain and less secure domain |
US9202071B2 (en) | 2012-02-08 | 2015-12-01 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US9116711B2 (en) | 2012-02-08 | 2015-08-25 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US9672164B2 (en) * | 2012-05-31 | 2017-06-06 | Nxp Usa, Inc. | Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address |
CN103268145B (zh) * | 2013-03-06 | 2016-08-17 | 上海云间半导体科技有限公司 | 用于保存访存指令的虚拟地址的方法 |
GB2538091B (en) * | 2015-05-07 | 2018-03-14 | Advanced Risc Mach Ltd | Verifying correct code execution context |
GB2543306B (en) * | 2015-10-14 | 2019-05-01 | Advanced Risc Mach Ltd | Exception handling |
CN109409086B (zh) * | 2018-09-21 | 2021-04-13 | 中国科学院信息工程研究所 | 基于新增指令的检测堆栈中返回地址被篡改的装置 |
CN109409083B (zh) * | 2018-09-21 | 2021-04-13 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的装置 |
CN115080122A (zh) * | 2022-07-22 | 2022-09-20 | 飞腾信息技术有限公司 | 处理器、用于保存和恢复上下文数据的装置、方法及芯片 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3889243A (en) | 1973-10-18 | 1975-06-10 | Ibm | Stack mechanism for a data processor |
US4236204A (en) | 1978-03-13 | 1980-11-25 | Motorola, Inc. | Instruction set modifier register |
US4587632A (en) | 1980-05-27 | 1986-05-06 | At&T Bell Laboratories | Lookahead stack oriented computer |
US4922414A (en) | 1982-12-17 | 1990-05-01 | Symbolics Inc. | Symbolic language data processing system |
US4926322A (en) * | 1987-08-03 | 1990-05-15 | Compag Computer Corporation | Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management |
DE3726192A1 (de) | 1987-08-06 | 1989-02-16 | Otto Mueller | Stacksteuerung |
JPH01258040A (ja) * | 1988-04-07 | 1989-10-16 | Fujitsu Ltd | スタック情報の退避,復元処理方式 |
US5136696A (en) | 1988-06-27 | 1992-08-04 | Prime Computer, Inc. | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions |
US5440749A (en) | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
JP3212656B2 (ja) * | 1991-02-08 | 2001-09-25 | 株式会社日立製作所 | データ処理システム及びマイクロコンピュータ |
US5303378A (en) * | 1991-05-21 | 1994-04-12 | Compaq Computer Corporation | Reentrant protected mode kernel using virtual 8086 mode interrupt service routines |
JP2585905B2 (ja) * | 1991-10-18 | 1997-02-26 | 松下電器産業株式会社 | マルチタスク実行装置 |
US5640548A (en) * | 1992-10-19 | 1997-06-17 | Motorola, Inc. | Method and apparatus for unstacking registers in a data processing system |
US5455775A (en) | 1993-01-25 | 1995-10-03 | International Business Machines Corporation | Computer design system for mapping a logical hierarchy into a physical hierarchy |
GB2289353B (en) | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
US5638525A (en) | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US5752035A (en) | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
US5619665A (en) | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
US5838948A (en) | 1995-12-01 | 1998-11-17 | Eagle Design Automation, Inc. | System and method for simulation of computer systems combining hardware and software interaction |
US6038643A (en) | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
US6014723A (en) | 1996-01-24 | 2000-01-11 | Sun Microsystems, Inc. | Processor with accelerated array access bounds checking |
US5925123A (en) | 1996-01-24 | 1999-07-20 | Sun Microsystems, Inc. | Processor for executing instruction sets received from a network or from a local memory |
US6026485A (en) | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US5742802A (en) | 1996-02-16 | 1998-04-21 | International Business Machines Corporation | Method and system for efficiently mapping guest instruction in an emulation assist unit |
US5761491A (en) * | 1996-04-15 | 1998-06-02 | Motorola Inc. | Data processing system and method for storing and restoring a stack pointer |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
JPH10105415A (ja) * | 1996-09-25 | 1998-04-24 | Nippon Denki Micom Technol Kk | リアルタイムos |
US5926832A (en) | 1996-09-26 | 1999-07-20 | Transmeta Corporation | Method and apparatus for aliasing memory data in an advanced microprocessor |
ATE244417T1 (de) | 1996-11-13 | 2003-07-15 | Paran Arik | Echtzeitprogramm-sprachbeschleuniger |
US5937193A (en) | 1996-11-27 | 1999-08-10 | Vlsi Technology, Inc. | Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof |
US5953741A (en) | 1996-11-27 | 1999-09-14 | Vlsi Technology, Inc. | Stack cache for stack-based processor and method thereof |
US6009499A (en) | 1997-03-31 | 1999-12-28 | Sun Microsystems, Inc | Pipelined stack caching circuit |
US5875336A (en) | 1997-03-31 | 1999-02-23 | International Business Machines Corporation | Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system |
US6003038A (en) * | 1997-03-31 | 1999-12-14 | Sun Microsystems, Inc. | Object-oriented processor architecture and operating method |
US6088786A (en) | 1997-06-27 | 2000-07-11 | Sun Microsystems, Inc. | Method and system for coupling a stack based processor to register based functional unit |
US5892966A (en) | 1997-06-27 | 1999-04-06 | Sun Microsystems, Inc. | Processor complex for executing multimedia functions |
US6003126A (en) | 1997-07-01 | 1999-12-14 | International Business Machines | Special instruction register including allocation field utilized for temporary designation of physical registers as general registers |
US6317872B1 (en) | 1997-07-11 | 2001-11-13 | Rockwell Collins, Inc. | Real time processor optimized for executing JAVA programs |
EP0950216B1 (en) | 1997-10-02 | 2003-11-26 | Koninklijke Philips Electronics N.V. | A processing device for executing virtual machine instructions |
EP1019794B1 (en) | 1997-10-02 | 2008-08-20 | Koninklijke Philips Electronics N.V. | Data processing device for processing virtual machine instructions |
US6009509A (en) | 1997-10-08 | 1999-12-28 | International Business Machines Corporation | Method and system for the temporary designation and utilization of a plurality of physical registers as a stack |
US6000029A (en) | 1997-11-03 | 1999-12-07 | Motorola, Inc. | Method and apparatus for affecting subsequent instruction processing in a data processor |
JPH11143732A (ja) * | 1997-11-06 | 1999-05-28 | Hitachi Ltd | マイクロコンピュータ及びエミュレータ |
US6122638A (en) | 1997-11-26 | 2000-09-19 | International Business Machines Corporation | Object-oriented processor and method for caching intermediate data in an object-oriented processor |
US6070173A (en) | 1997-11-26 | 2000-05-30 | International Business Machines Corporation | Method and apparatus for assisting garbage collection process within a java virtual machine |
US6148391A (en) | 1998-03-26 | 2000-11-14 | Sun Microsystems, Inc. | System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses |
US6374286B1 (en) | 1998-04-06 | 2002-04-16 | Rockwell Collins, Inc. | Real time processor capable of concurrently running multiple independent JAVA machines |
FR2779842B1 (fr) * | 1998-06-15 | 2001-07-13 | Schlumberger Ind Sa | Procede de gestion de l'execution d'un programme dans un dispositif a circuit integre |
US6338134B1 (en) | 1998-12-29 | 2002-01-08 | International Business Machines Corporation | Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data |
JP4072271B2 (ja) * | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | 複数のオペレーティングシステムを実行する計算機 |
-
2000
- 2000-11-27 GB GB0028869A patent/GB2369464B/en not_active Expired - Lifetime
-
2001
- 2001-09-24 CN CNB018194648A patent/CN1227589C/zh not_active Expired - Lifetime
- 2001-09-24 RU RU2003115617/09A patent/RU2275679C2/ru not_active IP Right Cessation
- 2001-09-24 KR KR1020037007021A patent/KR100848603B1/ko active IP Right Grant
- 2001-09-24 DE DE60139567T patent/DE60139567D1/de not_active Expired - Lifetime
- 2001-09-24 EP EP01967554A patent/EP1337918B1/en not_active Expired - Lifetime
- 2001-09-24 AU AU2001287927A patent/AU2001287927A1/en not_active Abandoned
- 2001-09-24 JP JP2002545371A patent/JP5295475B2/ja not_active Expired - Lifetime
- 2001-09-24 WO PCT/GB2001/004252 patent/WO2002042914A1/en active Application Filing
- 2001-10-24 TW TW090126321A patent/TW556093B/zh not_active IP Right Cessation
- 2001-10-25 MY MYPI20014955A patent/MY127357A/en unknown
- 2001-11-02 US US09/985,268 patent/US6904517B2/en not_active Expired - Lifetime
-
2002
- 2002-09-24 IL IL15540702A patent/IL155407A0/xx active IP Right Grant
-
2003
- 2003-04-13 IL IL155407A patent/IL155407A/en unknown
-
2011
- 2011-07-19 JP JP2011158231A patent/JP2011216118A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2450329C2 (ru) * | 2006-07-25 | 2012-05-10 | Квэлкомм Инкорпорейтед | Эффективный механизм сохранения адреса возврата из прерывания |
Also Published As
Publication number | Publication date |
---|---|
JP2004514987A (ja) | 2004-05-20 |
GB2369464B (en) | 2005-01-05 |
GB0028869D0 (en) | 2001-01-10 |
TW556093B (en) | 2003-10-01 |
JP5295475B2 (ja) | 2013-09-18 |
CN1476559A (zh) | 2004-02-18 |
EP1337918B1 (en) | 2009-08-12 |
DE60139567D1 (de) | 2009-09-24 |
GB2369464A (en) | 2002-05-29 |
WO2002042914A1 (en) | 2002-05-30 |
US6904517B2 (en) | 2005-06-07 |
AU2001287927A1 (en) | 2002-06-03 |
IL155407A0 (en) | 2003-11-23 |
IL155407A (en) | 2008-03-20 |
EP1337918A1 (en) | 2003-08-27 |
MY127357A (en) | 2006-11-30 |
US20020099933A1 (en) | 2002-07-25 |
CN1227589C (zh) | 2005-11-16 |
KR100848603B1 (ko) | 2008-07-28 |
JP2011216118A (ja) | 2011-10-27 |
KR20030072550A (ko) | 2003-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2275679C2 (ru) | Способ и устройство обработки данных для сохранения возвратного состояния | |
US5634046A (en) | General purpose use of a stack pointer register | |
EP0239181B1 (en) | Interrupt requests serializing in a virtual memory data processing system | |
EP1080422B1 (en) | Software configurable technique for prioritizing interrupts in a microprocessor-based system | |
JPS621053A (ja) | 入出力制御システム | |
US6910206B1 (en) | Data processing with native and interpreted program instruction words | |
US6108744A (en) | Software interrupt mechanism | |
US7426728B2 (en) | Reducing latency, when accessing task priority levels | |
EP1429246A1 (en) | Apparatus and method for switching mode in a computer system | |
EP1103890B1 (en) | Method for the direct call of a function by a software module by means of a processor with a memory-management-unit (MMU) | |
WO1998054643A2 (en) | Task and stack manager for digital video decoding | |
US7360213B1 (en) | Method for promotion and demotion between system calls and fast kernel calls | |
EP0660229A1 (en) | Method and apparatus for modifying the contents of a register | |
US5640548A (en) | Method and apparatus for unstacking registers in a data processing system | |
JPH05113887A (ja) | コンピユータシステム | |
JPS6290728A (ja) | 割込処理方法 | |
WO2003075167A1 (en) | Method and arrangement for virtual direct memory access | |
JP3364751B2 (ja) | データ転送システム | |
CN118819885A (zh) | 基于微内核的中断处理方法、装置、设备、介质和产品 | |
EP1104899A2 (en) | Data processing apparatus and method of controlling the same | |
JPH08147256A (ja) | 外部割込み制御回路 | |
JPH11316691A (ja) | オペレーティングシステムの実行方法及び、これを用いた情報処理装置 | |
JPH0262633A (ja) | プログラム間通知方式 | |
JP2001184262A (ja) | キャッシュメモリ構造及びキャッシュメモリ装置 | |
JP2001188764A (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20070925 |