Способ переключения контекста задач и процедур в процессоре
Иллюстрации
Показать всеИзобретение относится к вычислительной технике, а именно к процессорам, предназначенным для работы в многозадачном режиме и содержащим аппаратные средства для автоматического переключения контекста задач и процедур. Технический результат изобретения заключается в увеличении скорости переключения контекста задач и процедур при уменьшенном количестве использованных аппаратных ресурсов. В способе для каждой новой задачи или процедуры выделяются свободные ресурсы в кольцевом буфере регистров общего назначения (КБР) для обрабатываемых данных, и в кольцевом стеке переключения контекстов (КСПК) для данных, характеризующих заранее выделенное для контекстов место во внешней памяти. При переполнении КБР или КСПК сохраненные контексты на аппаратном уровне полностью автоматически вытесняются в память без использования программных средств. При этом данные из КПСК позволяют организовать вытесненные в память контексты в виде связанного списка и при необходимости восстанавливать сохраненные контексты. 20 з.п. ф-лы, 5 ил.
Реферат
Изобретение относится к вычислительной технике, а именно к процессорам для обработки данных, предназначенным для работы в многозадачном режиме, и может быть использовано, в частности, во встраиваемых приложениях.
При работе в многозадачном режиме обычно требуется переключение контекста задач и процедур, т.е. осуществление сохранения и восстановления соответствующих им ресурсов процессора. При этом контекст задачи включает такие ресурсы, как значения счетчика команд, слова состояния процессора, регистров общего назначения и контексты всех вызванных задачей процедур.
Отличие между задачей и процедурой заключается в том, что задача запускается прерыванием (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™ 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.
1. Способ переключения контекста задач и процедур в процессоре, содержащем кольцевой буфер регистров общего назначения, регистр слова состояния процессора, счетчик команд, кольцевой стек переключения контекста, выполненный с возможностью хранения значений регистра слова состояния процессора и счетчика команд контекста, данных, характеризующих размещение в оперативной памяти контекстов задач, и аппаратное средство, предназначенное для управления переключением контекста, и содержащий последовательное резервирование контекстов в кольцевом буфере регистров общего назначения и в кольцевом стеке переключения контекста с последующим восстановлением, или с восстановлением контекстов в обратной последовательности, при переполнении кольцевого буфера регистров общего назначения и кольцевого стека переключения контекста производят вытеснение самого раннего контекста в память, путем чтения из регистра обращения к кольцевому стеку переключения контекста значения текущего регистра кольцевого стека переключения контекста, причем повторяют такое вытеснение до освобождения требуемых запускаемой задачей или процедурой ресурсов в кольцевом буфере регистров общего назначения и/или кольцевого стека переключения контекста, а при завершении задачи или процедуры производят восстановление контекстов из памяти в обратной последовательности в освободившиеся ресурсы кольцевого буфера регистров общего назначения и кольцевого стека переключения контекста, а при отсутствии необходимых ресурсов в кольцевом буфере регистров общего назначения и кольцевом стеке переключения контекста, при размещении контекстов задач и процедур в оперативной памяти в первый элемент контекста задачи записывают указатель на конец контекста в памяти для предыдущего контекста в последний элемент контекста задачи записывают дескриптор начала и размера области памяти для размещения контекста следующей задачи, причем контексты всех процедур задачи последовательно размещают внутри контекста данной задачи, при формировании слова состояния процессора в регистр слова состояния процессора записывают значения битов полей признаков результата выполненной операции, приоритета процесса, числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения контекста данной задачи или процедуры, идентификатора процесса, признака запуска задачи и признака определяющего данное слово как слово состояния процессора при переключении контекста, при переносе контекстов задач и процедур в оперативную память, осуществляют подачу команды процессору, причем в результате декодирования и выполнения данной команды процессором все контексты, за исключением текущего, последовательно переносят из процессора в память, причем для каждого контекста переносят значения слова состояния процессора регистр слова состояния процессора, счетчика команд, дескриптора начала и размера области памяти для размещения контекста и указателя на конец контекста в памяти, при начальной установке параметров переключения контекста задач и процедур в процессоре, процессору подают команды записи новых значений в служебные регистры переключения контекста, декодируемые и исполняемые процессором, причем служебные регистры включают в свое число регистр указателя на строку таблицы дескрипторов начала и размера областей памяти для размещения контекстов.
2. Способ по п.1, отличающийся тем, что в памяти контексты всех процедур задачи последовательно размещают внутри контекста этой задачи.
3. Способ по п.1, отличающийся тем, что данные, характеризующие размещение в памяти контекстов задач представлены значениями дескриптора начала и размера области памяти для размещения контекста и указателя на конец контекста в памяти, связанных соответственно со значением указателя конца контекста в памяти для предыдущего контекста и значением дескриптора начала и размера области памяти для размещения контекста следующего контекста.
4. Способ по п.3, отличающийся тем, что кольцевой стек переключения контекста выполнен с возможностью размещения в одном регистре стека значений регистра слова состояния процессора и счетчика команд одного контекста или значений указателя на конец контекста в памяти и дескриптора начала и размера области памяти для размещения контекста, одно из которых относится к первому контексту, а другое ко второму контексту, являющихся соседними.
5. Способ п.3, отличающийся тем, что регистр слова состояния процессора содержит поле числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения контекста данной задачи или процедуры числа сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения и поле признака запуска задачи для вытеснения контекста, последовательно записывают в память регистров общего назначения, счетчика команд и регистра слова состояния процессора вытесняемого контекста, причем в случае истинности признака запуска задачи записывают все регистры общего назначения задачи, в противном случае записывают число регистров общего назначения заданное в число сохраняемых регистров общего назначения кольцевого буфера регистров общего назначения контекста данной задачи или процедуры, непосредственно после значения регистра слова состояния процессора записывают значение дескриптора начала и размера области памяти для размещения контекста для размещения следующего контекста, а значение указателя на конец контекста в оперативной памяти вытесняемого контекста в памяти записывают по адресу начала области памяти для размещения следующего контекста.
6. Способ по п.5, отличающийся тем, что процессор содержит регистры дескриптора начала и размера области памяти для размещения контекста следующего контекста, указатель контекста в оперативной памяти и ука