|
|
  |
Вопрос начинающего |
|
|
|
Feb 1 2012, 16:56
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Прочитал давеча (FreeRTOS. Операционная система реального времени для микроконтроллеров. Часть 1. Введение) Цитата 6. Время переключения контекста для AVR с кварцем на 16Мгц составит всего 20.8 мкс. Именно столько нужно для сохранения данных в стек задачи и вызов следующей. ( Интересное замечание, если сравнить это с PIC18xxx, то контроллер от AVR делает это быстрее в 4 раза!!!, скорее всего это связано с качеством компилятора) и ранее (chibios Context Switch) Цитата AVR/ATMega128-16-GCC4.3.0 11.12µS И в то же время scmRTOS: 38-42 us on AVR @ 8 MHz (что совпадает с ожидаемым результатом при полном сохранении контекста). При этом список фич FreeRTOS гораздо длиннее чем в scmRTOS. Как они так сделали? Или они (FreeRTOS, chibios) о чём-то умалчивают? Спасибо.
|
|
|
|
|
Feb 2 2012, 14:14
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(dxp @ Feb 2 2012, 06:03)  Переключение контекста или передача управления? Ну Вы спросили... Я бы сам хотел знать, потому и спрашивал. Цитата(dxp @ Feb 2 2012, 06:03)  Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Да, заметил: в описании scmRTOS - "process switching". Цитата(dxp @ Feb 2 2012, 06:03)  Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС. Тогда логично: у FreeRTOS 20 мкс на 16 МГц = время сохранения регистрового файла + время загрузки следующего. А вот сколько займёт передача управления при её наворотах? А с ChibiOs непонятно: 11.12µS - видимо используют не все регистры.
|
|
|
|
|
Feb 2 2012, 15:31
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (_Артём_ @ Feb 2 2012, 21:14)  Ну Вы спросили... Я бы сам хотел знать, потому и спрашивал. Сергей Борщ когда-то проводил сравнение на ARM7, там у FreeRTOS не очень шустро выходило даже на простейших сервисах - там всё было сделано на очередях, а это не самый быстрый способ. QUOTE (_Артём_ @ Feb 2 2012, 21:14)  А с ChibiOs непонятно: 11.12µS - видимо используют не все регистры. Либо не все регистры, либо под этим понимается что-то другое.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Feb 2 2012, 16:01
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(dxp @ Feb 2 2012, 17:31)  Сергей Борщ когда-то проводил сравнение на ARM7, там у FreeRTOS не очень шустро выходило даже на простейших сервисах - там всё было сделано на очередях, а это не самый быстрый способ. Я так и подозревал, что не быстрая. Статья рекламная значит (Курниц. КиТ): тут рассказываем, тут не рассказываем. Цитата(dxp @ Feb 2 2012, 17:31)  Либо не все регистры, либо под этим понимается что-то другое. Видимо так.
|
|
|
|
|
Feb 3 2012, 09:59
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(_Артём_ @ Feb 2 2012, 21:14)  Тогда логично: у FreeRTOS 20 мкс на 16 МГц = время сохранения регистрового файла + время загрузки следующего. А вот сколько займёт передача управления при её наворотах? Это как бы и есть передача управления, одна задача остановлена, контекст сменён, другая задача запущена. Прошу заметить что вы сравниваете время для разных тактовых: Цитата scmRTOS: 38-42 us on AVR @ 8 MHz FreeRTOS 20 мкс на 16 МГц Так что время переключения у них примерно одинакого.
|
|
|
|
|
Apr 6 2013, 14:42
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 22-01-12
Пользователь №: 69 790

|
Цитата(dxp @ Feb 2 2012, 10:03)  Переключение контекста или передача управления? Это немного разные вещи. Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС. Передача управления для ChibiOS/RT представлена на этом сайте. Исходный код доступен, так что, если интересно, скачайте и посмотрите, почему так быстро. Разумеется, чем больше функциональность, тем больше времени требуется на её работу. Интересно сколько времени требуется для передачи управления из разных примитивов синхронизации scmRTOS?
|
|
|
|
|
Apr 7 2013, 17:38
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 22-01-12
Пользователь №: 69 790

|
Цитата(haker_fox @ Apr 7 2013, 12:28)  А Вы зачем тему годовалой давности-то подняли? Чтобы новой не создавать
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|