RU2275679C2 - Способ и устройство обработки данных для сохранения возвратного состояния - Google Patents

Способ и устройство обработки данных для сохранения возвратного состояния Download PDF

Info

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
Application number
RU2003115617/09A
Other languages
English (en)
Other versions
RU2003115617A (ru
Inventor
Эдвард Коллес НЭВИЛЛ (GB)
Эдвард Коллес НЭВИЛЛ
Ян Виктор ДЕВЕРЕ (GB)
Ян Виктор ДЕВЕРЕ
Original Assignee
Арм Лимитед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Арм Лимитед filed Critical Арм Лимитед
Publication of RU2003115617A publication Critical patent/RU2003115617A/ru
Application granted granted Critical
Publication of RU2275679C2 publication Critical patent/RU2275679C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation 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) обозначает количество выполняемых команд, каждая из которых может подвергнуться дополнительной выборке в память:
Без использования способа согласно предпочтительному варианту осуществления:
Figure 00000002
С использованием способа предпочтительного варианта осуществления:
Figure 00000003
После иллюстрации преимущества использования подхода согласно предпочтительному варианту осуществления настоящего изобретения ниже более подробно описана новая команда 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.
RU2003115617/09A 2000-11-27 2001-09-24 Способ и устройство обработки данных для сохранения возвратного состояния RU2275679C2 (ru)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2450329C2 (ru) * 2006-07-25 2012-05-10 Квэлкомм Инкорпорейтед Эффективный механизм сохранения адреса возврата из прерывания

Families Citing this family (30)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機

Cited By (1)

* Cited by examiner, † Cited by third party
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