способ переключения контекста задач и процедур в процессоре

Классы МПК:G06F9/46 устройства для мультипрограммирования 
G06F9/48 инициирование программы; переключение программы, например, прерыванием
G06F9/50 Распределение ресурсов, например центрального процессора (ЦП)
Автор(ы):, , , ,
Патентообладатель(и):Общество с ограниченной ответственностью "Юникор микросистемы" (RU)
Приоритеты:
подача заявки:
2006-04-18
публикация патента:

Изобретение относится к вычислительной технике, а именно к процессорам, предназначенным для работы в многозадачном режиме и содержащим аппаратные средства для автоматического переключения контекста задач и процедур. Технический результат изобретения заключается в увеличении скорости переключения контекста задач и процедур при уменьшенном количестве использованных аппаратных ресурсов. В способе для каждой новой задачи или процедуры выделяются свободные ресурсы в кольцевом буфере регистров общего назначения (КБР) для обрабатываемых данных, и в кольцевом стеке переключения контекстов (КСПК) для данных, характеризующих заранее выделенное для контекстов место во внешней памяти. При переполнении КБР или КСПК сохраненные контексты на аппаратном уровне полностью автоматически вытесняются в память без использования программных средств. При этом данные из КПСК позволяют организовать вытесненные в память контексты в виде связанного списка и при необходимости восстанавливать сохраненные контексты. 20 з.п. ф-лы, 5 ил. способ переключения контекста задач и процедур в процессоре, патент № 2320002

способ переключения контекста задач и процедур в процессоре, патент № 2320002 способ переключения контекста задач и процедур в процессоре, патент № 2320002 способ переключения контекста задач и процедур в процессоре, патент № 2320002 способ переключения контекста задач и процедур в процессоре, патент № 2320002 способ переключения контекста задач и процедур в процессоре, патент № 2320002

Формула изобретения

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

2. Способ по п.1, отличающийся тем, что в памяти контексты всех процедур задачи последовательно размещают внутри контекста этой задачи.

3. Способ по п.1, отличающийся тем, что данные, характеризующие размещение в памяти контекстов задач представлены значениями дескриптора начала и размера области памяти для размещения контекста и указателя на конец контекста в памяти, связанных соответственно со значением указателя конца контекста в памяти для предыдущего контекста и значением дескриптора начала и размера области памяти для размещения контекста следующего контекста.

4. Способ по п.3, отличающийся тем, что кольцевой стек переключения контекста выполнен с возможностью размещения в одном регистре стека значений регистра слова состояния процессора и счетчика команд одного контекста или значений указателя на конец контекста в памяти и дескриптора начала и размера области памяти для размещения контекста, одно из которых относится к первому контексту, а другое ко второму контексту, являющихся соседними.

5. Способ п.3, отличающийся тем, что регистр слова состояния процессора содержит поле числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения контекста данной задачи или процедуры числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения и поле признака запуска задачи для вытеснения контекста, последовательно записывают в память регистров общего назначения, счетчика команд и регистра слова состояния процессора вытесняемого контекста, причем в случае истинности признака запуска задачи записывают все регистры общего назначения задачи, в противном случае записывают число регистров общего назначения заданное в число сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения контекста данной задачи или процедуры, непосредственно после значения регистра слова состояния процессора записывают значение дескриптора начала и размера области памяти для размещения контекста для размещения следующего контекста, а значение указателя на конец контекста в оперативной памяти вытесняемого контекста в памяти записывают по адресу начала области памяти для размещения следующего контекста.

6. Способ по п.5, отличающийся тем, что процессор содержит регистры дескриптора начала и размера области памяти для размещения контекста следующего контекста, указатель контекста в оперативной памяти и указателя на адрес памяти для записи/считывания следующего элемента контекста, при переключении контекста задачи в кольцевой стек обеспечения переключения контекста заносят значение указателя на конец контекста в памяти и дескриптора начала и размера области памяти для размещения контекста следующего контекста из указанных регистров, причем значение дескриптора начала и размера области памяти для размещения контекста следующего контекста получают из таблицы, содержащей все заранее определенные значения дескриптора начала и размера области памяти для размещения контекста следующего контекста, начальное значение регистра указателя конца контекста в памяти приравнивают к значению регистра дескриптора начала и размера области памяти для размещения контекста следующего контекста, при вытеснении контекста увеличивают значение регистра указателя конца контекста в памяти на величину размера сохраняемых в памяти элементов контекста, а запись осуществляет регистр обращения к памяти, выполненный с возможностью отображения элемента памяти с адресом, содержащемся в регистре указателя на адрес оперативной памяти для записи/считывания следующего элемента контекста, а после записи в регистр обращения к памяти значение указателя на адрес оперативной памяти для записи/считывания следующего элемента контекста увеличивают на единичное значение.

7. Способ по п.6, отличающийся тем, что слово состояния процессора и указатель на конец контекста в оперативной памяти содержат поле признака слово состояния процессора или указатель на конец контекста в оперативной памяти соответственно, причем при восстановлении контекстов из памяти, считывают из памяти элемент контекста с адресом из указателя на адрес оперативной памяти для записи/считывания следующего элемента контекста посредством регистра обращения к памяти, если данный элемент характеризуется признаком слово состояния процессора, то считываемый контекст является контекстом вложенной в задачу процедуры, для восстановления которой последовательно считывают значения слова состояния процессора и счетчика команд в кольцевом стеке обеспечения переключения контекста, а регистры общего назначения, численно соответствующие значению числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения из слова состояния процессора, в кольцевой буфер регистров общего назначения, в случае, если первоначально прочитанный из памяти элемент характеризуется признаком указателя на конец контекста в оперативной памяти, то считываемый контекст является контекстом задачи, при этом осуществляют переход по адресу из прочитанного указателя на конец контекста в оперативной памяти, после чего последовательно считывают значения слова состояния процессора, счетчика команд в кольцевом стеке переключения контекста, а все регистры общего назначения данного контекста в кольцевой буфер регистров общего назначения.

8. Способ по п.1, отличающийся тем, что значение указателя конца контекста в оперативной памяти считывают из поля указателя конца контекста регистра кольцевого стека переключения контекста, а значение дескриптора памяти для размещения контекста считывают из поля дескриптора размещения контекста этого же регистра.

9. Способ по п.1, отличающийся тем, что в случае, когда из задачи не были вызваны процедуры, значение указателя конца контекста в оперативной памяти вычисляют как сумму элементов памяти для размещения значении регистров общего назначения, значения счетчика команд, значения слова состояния процессора данной задачи и значения дескриптора памяти размещения контекста следующего контекста, а в случае наличия вызванных из задачи процедур, сумма адресов элементов памяти дополнительно включает адреса элементов памяти для размещения значений регистров общего назначения, значений счетчика команд, значений слова состояния процессора всех процедур.

10. Способ по п.1, отличающийся тем, что указатель конца контекста содержит поле признака, определяющего содержимое данного регистра как указатель конца контекста, причем поле признака указатель конца контекста в оперативной памяти имеет нулевое значение, не подлежит изменению и расположено в тридцать втором от начала регистра бите, являющемся последним.

11. Способ по п.1, отличающийся тем, что для каждой области памяти, предназначенной для размещения в ней контекста задачи, заранее формируют значение дескриптора начала и размера области памяти для размещения контекста следующего контекста, а при запуске задачи записывают соответствующее ей значение дескриптора памяти размещения контекста в кольцевом стеке обеспечения переключения контекста.

12. Способ по любому из пп.8-11, отличающийся тем, что каждый контекст занимает непрерывную область памяти.

13. Способ по п.1, отличающийся тем, что значение бита поля признака слово состояния процессора всегда задают отличным от значения бита имеющего такую же позицию в указателе на конец контекста в памяти.

14. Способ по п.1, отличающийся тем, что бит поля признака слово состояния процессора всегда задают равным единице.

15. Способ по п.1, отличающийся тем, что при запуске задачи значение бита поля признака запуска задачи задают равным единице.

16. Способ по п.1, отличающийся тем, что значения битов поля числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения соответствующего контекста непосредственно устанавливают командой процессора, имеющей код 11100100 в своих старших разрядах, и поле из четырех бит в первых младших разрядах для величины задаваемой командой записи в регистр слова состояния процессора значения числа сохраняемых регистров общего назначения.

17. Способ по любому из пп.13-16, отличающийся тем, что полям признаков результата выполненной операции, полю приоритета процесса и полю числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения соответствующего контекста выделяют последовательно по четыре бита начиная от начала слова состояния процессора, полю идентификатора процессора выделяют последующие пять битов, а полю признака слова состояния процессора выделяют тридцать второй бит, являющийся последним.

18. Способ по п.1, отличающийся тем, что команда, подаваемая процессору, имеет код 11101100 в своих старших разрядах.

19. Способ по п.1, отличающийся тем, что служебные регистры включают в свое число рабочие регистры кольцевого стека переключения контекста, а записываемые новые значения представляют собой дескрипторы начала и размера областей памяти для размещения контекстов.

20. Способ по п.1, отличающийся тем, что служебные регистры включают в себя регистр указателя начала свободного пространства в кольцевом стеке переключения контекстов.

21. Способ по любому из пп.19 и 20, отличающийся тем, что команда записи, подаваемая процессору, имеет код 11101111 или 11011101 или 01110000 в своих разрядах с 25 по 32.

Описание изобретения к патенту

Изобретение относится к вычислительной технике, а именно к процессорам для обработки данных, предназначенным для работы в многозадачном режиме, и может быть использовано, в частности, во встраиваемых приложениях.

При работе в многозадачном режиме обычно требуется переключение контекста задач и процедур, т.е. осуществление сохранения и восстановления соответствующих им ресурсов процессора. При этом контекст задачи включает такие ресурсы, как значения счетчика команд, слова состояния процессора, регистров общего назначения и контексты всех вызванных задачей процедур.

Отличие между задачей и процедурой заключается в том, что задача запускается прерыванием (trap), а процедура вызывается из задачи (call), возможно с передачей параметров и, по существу, представляет собой подпрограмму или функцию, по завершении которой возможен возврат результатов в породившую данную процедуру задачу. Для операционной системы это подпроцесс процесса задачи.

В данном описании использованы следующие сокращенные обозначения терминов:

АЛУ - арифметико-логическое устройство, входящее в состав процессора;

БИ - буфер инструкций;

БОП - блок обращения к памяти для чтения/записи данных (load/store unit);

БФАВИ - блок формирования адреса выбираемой инструкции (instruction fetch unit);

ДК - дешифратор команд;

ДПРК - дескриптор начала и размера области памяти для размещения контекста (дескриптор памяти размещения контекста);

ИП - идентификатор процесса (PID - process identifier);

КБР - кольцевой буфер РОНов;

КСПК - кольцевой стек обеспечения переключения контекста (кольцевой стек переключения контекста);

ОЗУ-Д - оперативное запоминающее устройство для хранения данных;

ОЗУ-И - оперативное запоминающее устройство для хранения инструкций;

ПЗЗ - признак запуска задачи;

ПП - приоритет процесса;

ПРВО - признаки результата выполненной операции;

ПССП - признак ССП;

РО-КБР - регистр обращения к КБР;

РО-КСПК - регистр обращения к КСПК;

РО-П - регистр обращения к памяти;

РОНы - регистры общего назначения;

СК - счетчик команд;

ССП - слово состояния процессора (PSW - processor status word);

СУПК - структура управления механизмом переключения контекста и выбором режимов работы КБР и КСПК (структура управления переключением контекста);

УВ-КБР - указатель начала текущего окна в КБР (указатель верхушки КБР);

УВ-КСПК - указатель начала свободного пространства в КСПК (указатель верхушки КПСК);

УД-КБР - указатель начала заполнения КБР (указатель дна КБР);

УД-КСПК - указатель начала заполнения КСПК (указатель дна КПСК);

УКК-П - указатель на конец контекста в оперативной памяти (указатель конца контекста);

УСА-П - указатель на адрес оперативной памяти для записи/считывания следующего элемента контекста (указатель следующего адреса в памяти);

УТ-ДПРК - указатель на строку таблицы ДПРК (указатель таблицы ДПРК);

ЧСР-КБР - число сохраняемых РОНов КБР соответствующего контекста.

Одна из первых реализаций поддержки переключения контекста, получившая широкое распространение, относится к RISC процессорам с архитектурой SPARC V8 (The SPARC Architecture Manual. Version 8. SPARC International Inc; 1992, 303 p.). Одной из особенностей SPARC V8 является большой регистровый файл со свойствами циклического буфера и технологией регистрового окна. Однако при этом управление механизмом переключения контекста должно быть реализовано программными средствами, что обуславливает относительно невысокую скорость переключения контекста по сравнению с возможной аппаратной реализацией данного механизма и, следовательно, ведет к ограниченной производительности процессоров данной архитектуры.

Задача повышения скорости переключения контекста частично решена в процессорах архитектуры TriCore (TriCoreспособ переключения контекста задач и процедур в процессоре, патент № 2320002 1. 32-Bit Unified Processor Core. Volume 1:V1.3 Core Architecture. User's Manual, V1.3.6. Infineon Technologies AG, 2005, 209 p.), реализующих переключение контекста аппаратными средствами. Однако все сохраненные контексты размещаются в модуле памяти, время доступа к которой существенно превышает время доступа к внутренним регистрам процессора.

Существенное повышение скорости переключения контекста достигнуто благодаря использованию в процессоре двух регистровых файлов для промежуточного хранения контекстов с последующим их переносом в модуль памяти (патент US 6553487 B1, 22.04.2003). Процедура переключения контекста в данной реализации способа может быть ускорена благодаря применению большего числа регистровых файлов. Однако при увеличении числа регистровых файлов существенно возрастает сложность управления ими.

Наиболее близким аналогом заявленного изобретения является способ переключения контекста в процессоре (патент US 6115777 A, 05.09.2000), заключающийся в оперативном хранении контекстов в большом кольцевом регистровом стеке и переносе контекстов в память при его переполнении. При этом каждый регистр кольцевого стека помимо области хранения данных содержит дополнительный информационный бит, указывающий на действительность хранимых данных. Указанная реализация способа переключения контекста использует дополнительный регистр для временного хранения указанных информационных битов. Кроме того, для управления механизмом сохранения и восстановления контекстов, использованы регистры указателей на области хранения контекстов во внешней памяти. Данный способ также способен обеспечить высокую скорость переключения контекста.

Задачей заявленного изобретения является достижение минимизации аппаратурных затрат на реализацию переключения контекста при сохранении относительно высокой скорости переключения контекста и его функциональности.

Технический результат при этом заключается в увеличении скорости переключения контекста задач и процедур при уменьшенном количестве использованных аппаратных ресурсов.

Данный технический результат обеспечивается способом переключения контекста задач и процедур в процессоре, способом размещения контекстов задач и процедур в оперативной памяти, способом формирования ССП, способом переноса контекстов задач и процедур в оперативную память и способом начальной установки параметров переключения контекста задач и процедур в процессоре.

Технический результат достигается за счет того, что согласно способу переключения контекста задач и процедур в процессоре, процессор содержит КБР, регистр ССП, СК и КСПК. Причем КСПК выполнен с возможностью хранения значений ССП и СК контекста, и данных, характеризующих размещение в оперативной памяти контекстов задач. Процессор содержит также аппаратное средство для управления переключением контекста (СУПК). При этом способ включает в себя последовательное резервирование контекстов в КБР и КСПК с последующим восстановлением, при необходимости, контекстов в обратной последовательности. При переполнении КБР или КСПК производят вытеснение самого раннего контекста в память. При необходимости повторяют такое вытеснение до освобождения требуемых запускаемой задачей или процедурой ресурсов в КБР и/или КСПК. При завершении задачи или процедуры производят восстановление контекстов из памяти в обратной последовательности в освободившиеся ресурсы КБР и КСПК при отсутствии необходимых ресурсов в КБР и/или КСПК.

Согласно способу размещения контекстов задач и процедур в оперативной памяти в ячейки памяти ОЗУ-Д, выделенные для первого элемента контекста задачи записывают УКК-П для предыдущего контекста, а в последний элемент контекста задачи таким же образом записывают ДПРК следующей задачи. Причем контексты всех процедур задачи последовательно и непрерывно размещают внутри контекста данной задачи.

Согласно способу формирования ССП в регистр ССП записывают значения битов полей ПРВО, ПП, ЧСР-КБР, ИП, ПЗЗ и ПССП.

Согласно способу переноса контекстов задач и процедур в оперативную память, процессору подают команду, характеризующуюся тем, что в результате декодирования и выполнения данной команды процессором все контексты, за исключением текущего, последовательно переносят из процессора в память. Причем для каждого контекста переносят значения ССП, СК, ДПРК и УКК-П.

Согласно способу начальной установки параметров переключения контекста задач и процедур в процессоре процессору подают команды записи новых значений в служебные регистры переключения контекста, декодируемые и исполняемые процессором. Причем одним из служебных регистров является регистр УТ-ДПРК.

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

В другом частном случае данные, характеризующие размещение в памяти контекстов задач, представлены значениями ДПРК и УКК-П связанных, соответственно, со значением УКК-П для предыдущего контекста и значением ДПРК следующего контекста.

При этом КСПК может быть выполнен с возможностью размещения в одном регистре стека значений ССП и СК одного контекста или значений УКК-П и ДПРК, одно из которых относится к первому контексту, а другое ко второму контексту, являющимися соседними.

Кроме того, для вытеснения контекста в память, последовательно записывают в память значения РОНов, СК и ССП вытесняемого контекста. Количество РОНов, значения которых будут сохранены в КБР при вытеснении контекста, определяется исходя из значений полей ЧСР-КБР и ПЗЗ ССП. Причем, в случае истинности, ПЗЗ записывают значения всех РОНов задачи, в противном случае записывают значения РОНов, число которых задано в ЧСР-КБР. Непосредственно после значения ССП записывают значение ДПРК для размещения следующего контекста, а значение УКК-П вытесняемого контекста в памяти записывают по адресу начала области памяти для размещения следующего контекста.

Для такой реализации способа процессор содержит архитектурные регистры ДПРК, УКК-П и УСА-П. При переключении контекста задачи в КСПК заносят значения УКК-П и ДПРК из указанных регистров. Значение ДПРК получают из таблицы ДПРК, содержащей все заранее определенные значения ДПРК. Начальное значение регистра УКК-П устанавливают равным значению регистра ДПРК. При вытеснении контекста задачи в память увеличивают значение регистра УКК-П на величину размера сохраняемых в памяти элементов контекста. Осуществляют запись в память посредством РО-П, выполненного с возможностью отображения элемента памяти с адресом, содержащемся в регистре УСА-П. Причем после записи в РО-П значение УСА-П увеличивают на единичное значение.

Для обеспечения возможности восстановления контекстов из памяти в ССП и УКК-П изначально включают поле признака ССП или УКК-П соответственно. Причем при восстановлении контекстов из памяти считывают из памяти элемент контекста с адресом из УСА-П посредством РО-П. Если данный элемент обладает признаком ССП, то считываемый контекст является контекстом вложенной в задачу процедуры, для восстановления которой последовательно считывают значения ССП и СК в КСПК, а РОНы, численно соответствующие значению ЧСР-КБР из ССП, в КБР. В случае, если первоначально прочитанный из памяти элемент обладает признаком УКК-П, то считываемый контекст является контекстом задачи. При этом осуществляют переход по адресу из прочитанного УКК-П, указывающий на конец ранее сохраненного в памяти контекста, после чего последовательно считывают значения ССП и СК в КСПК, а все РОНы данного контекста в КБР.

Способ размещения контекстов задач и процедур в оперативной памяти в своих частных случаях характеризуется тем, что значение УКК-П считывают из поля УКК-П регистра КСПК, а значение ДПРК считывают из поля ДПРК этого же регистра. Или, в случае, когда из задачи не были вызваны процедуры, значение УКК-П вычисляют как сумму элементов памяти для размещения значений РОНов, значения СК, значения ССП данной задачи и значения ДПРК следующего контекста. В случае наличия вызванных из задачи процедур, сумма адресов элементов памяти дополнительно включает адреса элементов памяти для размещения значений РОНов, значений СК и значений ССП всех процедур данной задачи.

В частном случае данного способа УКК-П содержит поле признака, определяющего содержимое данного регистра как УКК-П. Причем поле признака УКК-П имеет нулевое значение, не подлежит изменению и расположено в тридцать втором от начала регистра бите, являющемся последним.

Для каждой области памяти, предназначенной для размещения в ней контекста задачи, заранее может быть сформировано значение ДПРК, а при запуске задачи осуществлена запись соответствующего ей значения ДПРК в КСПК.

Любая из частных реализации данного способа может дополнительно характеризоваться тем, что каждый контекст занимает непрерывную область памяти.

Способ формирования ССП в частных случаях характеризуется тем, что значение бита поля ПССП всегда задают отличным от значения бита, имеющего такую же позицию в УКК-П. При этом бит поля ПССП всегда задают равным, например, единице.

В другом частном случае реализации способа, при запуске задачи, значение бита поля ПЗЗ задают равным единице.

В еще одном частном случае значения битов поля ЧСР-КБР непосредственно устанавливают командой процессора, имеющей код 11100100 в своих старших разрядах, и поле из четырех бит в первых младших разрядах для величины задаваемой командой записи в ССП значения числа сохраняемых РОНов.

В любом из частных случаев данного способа полям ПРВО, полю ПП и полю ЧСР-КБР выделяют последовательно по четыре бита начиная от начала ССП, полю ИП выделяют последующие пять битов, а полю ПССП выделяют тридцать второй бит, являющийся последним.

В частном случае способа переноса контекстов задач и процедур в оперативную память команда, подаваемая процессору, имеет код 11101100 в своих старших разрядах.

В одном из частных случаев способ начальной установки параметров переключения контекста задач и процедур в процессоре дополнительно характеризуется тем, что служебные регистры включают в свое число рабочие регистры КСПК, а записываемые новые значения представляют собой ДПРК.

В другом частном случае способ характеризуется тем, что служебные регистры включают в свое число регистр УВ-КСПК.

В любом из приведенных частных случаев данного способа команда записи подаваемая процессору может иметь код 11101111 или 11011101 или 01110000 в своих разрядах с 25 по 32.

Приведенные совокупности признаков обеспечивают получение указанного технического результата во всех случаях, на которые распространяется испрашиваемый объем правовой охраны.

Сущность изобретения поясняют следующие схемы:

фиг.1: принципиальная схема переключения контекста;

фиг.2: схема общего алгоритма переключения контекста;

фиг.3: схема алгоритма вытеснения контекста в оперативную память;

фиг.4: схема последовательности запуска механизма переключения контекста;

фиг.5: упрощенная структурная схема микропроцессора "Орхидея".

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

Процессор содержит архитектурные регистры СК, ССП, ДПРК, УКК-П, УТ-ДПРК и УСА-П, а также показанные на фиг.1 КБР 1 и КСПК 2.

ССП характеризует задачу или процедуру, а СК характеризует стадию их выполнения.

Архитектурные регистры ДПРК, УКК-П, УТ-ДПРК и УСА-П выполнены обособленными от КБР 1 и КСПК 2 и предназначены для организации хранения контекстов в оперативной памяти 3.

КБР 1 представляет собой набор из 32-битных регистров. Процессор непосредственно обрабатывает данные только из регистров, попадающих в текущее окно (фрейм) 4. Эти регистры являются РОНами выполняемой задачи или процедуры. В данном примере реализации способа окно РОНов содержит 16 регистров. При переключении между задачами или процедурами смещение окна 4 составляет от 1 до 16 регистров.

Адресация РОНов в КБР 1 выполнена так, что адрес следующего регистра на 1 больше адреса предыдущего регистра, а при достижении адреса самого последнего регистра следующий адрес будет принадлежать самому первому регистру.

Для управления КБР 1 служат регистры УД-КБР и УВ-КБР.

КСПК 2 представляет собой стек регистров для хранения величин ССП, СК, ДПРК и УКК-П, соответствующих РОНам из КБР 1. В каждый регистр КСПК 2 может быть записана пара значений {ССП, СК} или пара значений {УКК-П, ДПРК}. Причем УКК-П должно относиться к первому из двух соседних контекстов, а значение ДПРК ко второму контексту, следующему непосредственно за первым. Благодаря этому КСПК 2 реализует функции стека возвратов (return stack) и стека обращений к памяти.

Адрес в КСПК 2, по которому может быть сделана следующая запись, содержится в регистре УВ-КСПК. Для того чтобы можно было отличить занятую и свободную области КСПК 2, используют регистр УД-КСПК.

Чтение и запись в регистры КБР 1 и КСПК 2 осуществляется посредством регистров РО-КБР и РО-КСПК, являющихся регистрами косвенной адресации.

РО-КБР выполнен с возможностью отображения элемента КБР 1 с адресом, содержащимся в регистре УД-КБР. Причем после чтения из РО-КБР значение адреса в регистре УД-КБР увеличивается на единичное значение. Перед записью в РО-КБР адрес в УД-КБР уменьшается на единичное значение.

РО-КСПК выполнен с аналогичными свойствами в отношении регистра УД-КСПК.

Для осуществления механизма переключения контекста в ССП и УКК-П включены специальные поля.

Формат ССП характеризуется тем, что ССП содержит поля признаков ПРВО, ПП, ЧСР-КБР, ИП, ПЗЗ и ПССП. Значение бита поля ПССП всегда задают отличным от значения бита, имеющего такую же позицию в УКК-П, что позволяет различать их при восстановлении контекста.

Для функционирования механизма переключения контекста задач должны быть определены значения ДПРК, содержащие данные о размере и расположении в памяти 3 всех областей для сохраняемых контекстов. Все ДПРК на этапе начальной установки процессора помещают в таблицу 5 ДПРК в памяти 3. Строку для чтения из таблицы 5 ДПРК определяет значение регистра УТ-ДПРК.

Переключение контекста в процессоре осуществляется следующим образом.

После получения 6 (фиг.2) сигнала прерывания производится проверка 7 наличия свободных ресурсов в КБР 1 и КСПК 2. Необходимым условием доступности свободных ресурсов для новой задачи в данном примере процессора является наличие не менее 16 свободных РОНов в КБР 1 и не менее двух свободных строк-регистров в КСПК 2. В случае, если необходимые ресурсы недоступны, производится вытеснение 8 самого раннего (старого) контекста из КБР 1 и КСПК 2 в оперативную память 3.

При наличии необходимых свободных ресурсов производят резервирование 9 текущего контекста в КБР 1 и КСПК 2, включающее в себя смещение 10 в КБР 1 текущего окна РОНов путем увеличения значения УВ-КБР на значение ЧСР-КБР из текущего ССП. Значение ЧСР-КБР при этом унаследовано от предыдущего контекста или, при необходимости, заново установлено программно.

Затем осуществляется сохранение 11 в КСПК 2 значений регистров ССП и СК, относящихся к текущей задаче, по адресу, содержащемуся в УВ-КСПК 2. Данные значения записываются в один регистр и представляют собой одну строку в КСПК 2.

В следующую строку КСПК 2 записывают 12 значения ДПРК для новой запускаемой задачи и УКК-П для текущей задачи, являющейся резервируемой. Причем значение ДПРК считывают из строки таблицы ДПРК в памяти по УТ-ДПРК, а УКК-П вычисляют как сумму элементов памяти для размещения РОНов, СК, ССП и ДПРК. В случае наличия вызванных из задачи процедур, сумма элементов памяти дополнительно включает элементы памяти для размещения РОНов, СК и ССП всех процедур.

После успешного резервирования 9 текущего контекста осуществляется инициализация 13 регистров ССП и СК для запускаемой задачи.

Вытеснение 8 самого раннего контекста из КБР 1 и КСПК 2 в оперативную память 3 поясняется фиг.3, и включает в себя чтение 14 из РО-КСПК значения текущего регистра КСПК.

Так как ССП содержит поле ПЗЗ, то всегда можно определить 15, относится данный контекст к задаче или к процедуре.

Если данный контекст относится к задаче, то число последующих циклов чтения устанавливается 16 равным полному числу РОНов задачи - 16. В случае контекста процедуры число последующих циклов чтения устанавливается 17 равным значению ЧСР-КБР из ССП. После этого выполняется 18 требуемое число циклов чтения значений из РО-КБР и их запись в РО-П. Регистр РО-П является регистром косвенной адресации и отображает элемент памяти с адресом, содержащимся в УСА-П. Причем перед чтением из РО-П содержимое УСА-П увеличивается на единичное значение, что ведет к смещению указателя на следующий элемент памяти.

Таким образом, в оперативную память 3 перенесены сохраняемые РОНы одного контекста.

Затем осуществляется запись 19 в РО-П значений СК и ССП.

Если данный контекст является 20 контекстом процедуры, то его вытеснение в оперативную память 3 завершено 21.

Если данный контекст является 20 контекстом задачи, то осуществляется последовательное чтение 22 из РО-КСПК пары значений УКК-П и ДПРК, запись 23 в РО-П значения ДПРК, запись 24 в УСА-П значения ДПРК и запись 25 в РО-П значения УКК-П. Таким образом, вытеснение контекста задачи в оперативную память 3 завершено 21. Причем контексты всех процедур, вызванных данной задачей, последовательно размещены внутри контекста этой задачи.

Возможны ситуации, когда необходимо перенести все сохраненные контексты из КБР 1 и КСПК 2 в память 3. Например для того, чтобы просмотреть или изменить какой-либо контекст, в частности значение ССП. Для этого система команд процессора должна включать в себя команду переноса контекстов задач и процедур в память 3, в результате декодирования и выполнения которой все контексты, за исключением текущего, должны быть перенесены из регистров процессора в память 3.

При завершении текущей задачи автоматически осуществляется восстановление к тому контексту, из которого была вызвана текущая задача.

При завершении задачи УВ-КСПК уменьшается на единичное значение, одновременно с этим декрементируется и УВ-КБР.

Значения полученных указателей сравниваются со значениями УД-КБР и УД-КСПК, на основании чего определяется наличие требуемых данных в КБР 1 и КСПК 2. Если требуемых для восстановления данных в них нет, то автоматически включается механизм их восстановления из памяти 3. При этом значение РО-П уже отражает содержание УСА-П, указывающее на место в памяти 3, из которого следует производить восстановление.

Если данный элемент контекста является УКК-П, то осуществляют переход по адресу, содержащемуся в нем, а затем последовательно считывают в КСПК 2 значения ДПРК, ССП, СК. Значения 16 РОНов переносят в КСВ 1. После этого заносят в КСПК 2 значение УКК-П предыдущего контекста, расположенное в последнем элементе контекста в памяти 3.

Если текущий элемент контекста является ССП, то в КСПК 2 переносят значения ССП, СК, а в КСВ 1 переносят РОНы, число которых узнают из поля ЧСР-КБР считанного ССП.

Организация контекстов в КБР 1, КСПК 2 и памяти 3 поясняется примером, представленным на фиг.1, на которой выделен контекст одной задачи.

РОНы 26 КБР 1 и данные 27 КСПК 2 представляют собой контекст одной задачи.

В показанной на фиг.1 ситуации контекст задачи "В" включает два контекста, один из которых относится непосредственно к данной задаче - контекст "В0", а второй относится к вызванной из нее процедуре "В1".

Связь контекстов в памяти 3 организуется за счет того, что в последний элемент 28 предыдущего контекста "А" записывают значение ДПРК(В), определяющее расположение первого элемента контекста "В". Записывают по данному адресу памяти значение УКК-П(А), указывающее на расположение элемента 28 в памяти. Причем для считывания значений ДПРК(В) и УКК-П(А) из КСПК 2 требуется одна операция чтения, т.к. эти величины расположены в одном регистре КСПК 2.

Вслед за УКК-П(А) записывают в память значения 29 РОНов, СК и ССП для всех контекстов, входящих в контекст данной задачи. Затем значение УКК-П(В) помещают в самый первый элемент 30 контекста задачи "В".

Последовательность запуска механизма переключения контекста поясняет фиг.4.

После включения 31 питания процессора необходимо подать 32 на него внешний сигнал сброса (RESET), посредством которого производится начальная установка 33 регистров процессора. При этом устанавливается наивысший приоритет в регистре ССП и начальное значение СК.

После снятия сигнала RESET процессор начинает выполнять программу с указанного адреса. При этом таблица векторов прерываний и таблица ДПРК еще не определены. В данном режиме процессор не может отвечать на прерывания и переключаться с задачи на задачу, но при этом он может вызывать процедуры с максимальной глубиной вложенности до восьми.

Сначала выполняется 34 программа начальной установки процессора, по завершении которой выполняется 35 команда начальной установки механизма сохранения/восстановления контекста задач при вытеснении контекстов в память и осуществляется запуск 36 первичной задачи.

Программа начальной установки процессора формирует 37 таблицу ДПРК, формирует 38 УТ-ДПРК. Затем формируется 39 таблица векторов прерываний и формируется 40 указатель на таблицу векторов прерываний.

По завершении указанных действий становится возможным выполнить команду начальной установки 35 механизма сохранения/восстановления контекста задач при вытеснении контекстов в память (RESTART), приводящую к считыванию из таблицы ДПРК первого значения и его размещению 41 в КСПК. Затем из таблицы векторов прерываний выбираются 42 значения ССП и СК, соответствующие задаче рестарта. После этого контекст начальной загрузки забывается.

Команда RESTART выполняется как особое прерывание без сохранения текущего контекста.

Для приведения механизма сохранения/восстановления контекстов в памяти в исходное состояние в регистр УТ-ДПРК следует записать адрес нулевого дескриптора таблицы ДПРК. Затем записывают нулевые значения в регистры УВ-КБР, УД-КБР, УВ-КСПК и УД-КСПК. Записывают в КСПК 2 пару значений ДПРК, после чего увеличивают значение УВ-КСПК на единичное значение и присваивают регистру УКК-П значение ДПРК.

Примером осуществления заявленного изобретения является микропроцессор для встраиваемых приложений "Орхидея". На фиг.5 представлена упрощенная структурная схема этого процессора.

Микропроцессор "Орхидея" является процессором с сокращенным набором команд (RISC) и характеризуется полностью автоматической поддержкой механизма переключения задач и процедур, причем все необходимые для этого действия выполняются на аппаратном уровне, за исключением формирования таблицы ДПРК.

"Орхидея" содержит КБР 1, АЛУ 43, ДК 44 и БИ 45, СК 46 и БФАВИ 47, а также БОП 48, характерные для ряда RISC процессоров.

Существенным отличием "Орхидеи" от обычных RISC процессоров является механизм переключения контекста, существенным элементом которого являются блоки КСПК 2 и СУПК 49 (фиг.5).

При этом вход-выход данных АЛУ 43 и первый вход-выход данных БОП 48 соединены с входом-выходом данных КБР 1.

ДК 44 соединен своим входом данных с выходом данных ОЗУ-И 50 через БИ 45 посредством шины данных. Выходы управления ДК 44 соединены с входами управления АЛУ 43, БОП 48, СК 46 и первым входом управления КБР 1. ДК 44 также соединен с СУПК 49 через вход-выход управления.

Вход-выход данных СК 46 соединен с входом-выходом данных КСПК 2, а выход данных связан со входом данных ОЗУ-И 50 через БФАВИ 47 и адресную шину.

Первый выход данных КБР 1 и выход данных КСПК 2 соединены с СУПК 49. Первый и второй выходы управления СУПК 49 соединены соответственно с входом управления КСПК 2 и вторым входом управления КБР 1.

Выход данных СУПК 49 соединен с входом данных БОП 48.

Второй вход-выход данных БОП 48 соединен с входом-выходом данных ОЗУ-Д 51 посредством шины данных, а вход данных ОЗУ-Д 51 соединен с выходом данных БОП 48 посредством адресной шины.

СУПК 49 представляет собой абстрактное обобщение аппаратных средств, необходимых для управления переключением контекста. Данные аппаратные средства, по своему существу, являются средствами работы с системными регистрами посредством операций чтения и записи в соответствии с алгоритмом переключения контекста, реализованным на основе конечного автомата. Аппаратная реализация СУПК может иметь различные варианты и не представляет сложности относительно существующих технологий.

Сохранение и восстановление контекстов в/из памяти осуществляется следующим образом.

По признаку переполнения ресурсов хотя бы в КБР 1 или КСПК 2 генерируется сигнал запуска СУПК 49, в процессе работы которого осуществляется перенос данных из КБР 1 и КСПК 2 в ОЗУ-Д 51 через БОП 48, формирующего адрес, данные и сигналы записи в ОЗУ-Д 51.

По признаку отсутствия ресурсов в КБР 1 или КСПК 2 производится генерирование сигнала запуска СУПК 49, осуществляющего перенос данных из ОЗУ-Д 51 в КБР 1 и КСПК 2 через БОП 48. При этом БОП 48 формирует адрес, данные и сигналы чтения из ОЗУ-Д 51.

Причем при осуществлении операции записи в регистр ССП из ОЗУ-И 50 выбирается код инструкции, который в дальнейшем дешифрируется в ДК 44 с целью получения сигналов для управления логической схемой записи регистра ССП, а при выполнении команды переноса контекстов задач и процедур в ОЗУ-Д 51, из ОЗУ-И 50 выбирается код инструкции, дешифрируемый в дальнейшем в ДК 44 с целью получения логического сигнала запуска СУПК 49.

Реализация "Орхидеи" характерна тем, что значение бита поля ПССП всегда равно единице, а соответствующий бит в УКК-П всегда имеет нулевое значение. Значение бита поля ПЗЗ при запуске задачи равно единице.

Кроме того, поля ПРВО, ПП и ЧСР-КБР в ССП "Орхидеи" занимают по четыре бита начиная от начала ССП, поле ИП занимает последующие пять битов, а поле ПССП занимает самый последний, тридцать второй бит. Причем установка битов поля ЧСР-КБР осуществляется командой с машинным кодом 11100100 в своих старших разрядах, и содержащей поле из четырех бит в первых младших разрядах для величины задаваемой командой записи в ССП значения числа сохраняемых РОНов в КБР 1.

Команда переноса всех сохраненных контекстов в память для "Орхидеи" имеет код 11101100 в старших разрядах, а команда записи, подаваемая процессору, имеет код 11101111 или 11011101 или 01110000 в своих разрядах с 25 по 32.

Класс G06F9/46 устройства для мультипрограммирования 

выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений -  патент 2517238 (27.05.2014)
наборы планируемых заданий в планировщике -  патент 2510527 (27.03.2014)
сетевая вычислительная система -  патент 2502122 (20.12.2013)
способы и системы обмена данными -  патент 2475818 (20.02.2013)
способ и система для создания ит-ориентированных серверных сетевых приложений -  патент 2466450 (10.11.2012)
сетевое имя группы для виртуальных машин -  патент 2461050 (10.09.2012)
поддержка нескольких операционных систем в мультимедийных устройствах -  патент 2451989 (27.05.2012)
однородные регистровые среды с программируемой структурой -  патент 2449347 (27.04.2012)
способ и устройство формирования очереди потоков -  патент 2427029 (20.08.2011)
система и способ планирования активных заданий в операционной системе -  патент 2420792 (10.06.2011)

Класс G06F9/48 инициирование программы; переключение программы, например, прерыванием

управление скоростью, с которой обрабатываются запросы на прерывание, формируемые адаптерами -  патент 2526287 (20.08.2014)
способ выполнения изменения программы в режиме онлайн в системе автоматизации -  патент 2432604 (27.10.2011)
системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств -  патент 2406113 (10.12.2010)
интегрирование высоконадежных функций в приложение посредством разложения приложения -  патент 2367006 (10.09.2009)
устройство и способ для выполнения данных -  патент 2364919 (20.08.2009)
система для обеспечения переходов между режимами работы устройства -  патент 2358309 (10.06.2009)
система для вызова привилегированной функции в устройстве -  патент 2342695 (27.12.2008)
способ переключения контекста вычислительного процесса при прерывании программы или переходе к подпрограмме -  патент 2340933 (10.12.2008)
устройство переключения программ -  патент 2316044 (27.01.2008)
система и способ для защиты от недоверенного кода режима управления с системой с помощью переадресации прерывания режима управления системой и создания контейнера виртуальной машины -  патент 2313126 (20.12.2007)

Класс G06F9/50 Распределение ресурсов, например центрального процессора (ЦП)

электронный блок управления, имеющий ядро, работающее в реальном масштабе времени и управляющее разбиением на разделы -  патент 2524570 (27.07.2014)
устройство обработки данных и способ переключения рабочей нагрузки между первой и второй компоновкой схем обработки -  патент 2520411 (27.06.2014)
способ координации множества датчиков -  патент 2510147 (20.03.2014)
способ контроля тупиковых ситуаций инфокоммуникационной системы и устройство для его осуществления -  патент 2509346 (10.03.2014)
хостинг и широковещательная передача виртуальных событий с использованием потоковой передачи интерактивного видео -  патент 2503998 (10.01.2014)
способ динамического контроля тупиковых ситуаций инфокоммуникационной системы и устройство для его осуществления -  патент 2502123 (20.12.2013)
система и способ видеокомпрессии для уменьшения влияния потери пакетов в канале связи -  патент 2493585 (20.09.2013)
иерархическая инфраструктура планирования резервирования ресурсов -  патент 2481618 (10.05.2013)
способ, система и устройство для определения активности ядра процессора и кэширующий агент -  патент 2465631 (27.10.2012)
способ и устройство для управления ресурсами в беспроводном устройстве -  патент 2460120 (27.08.2012)
Наверх