реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Вопрос начинающего
_Артём_
сообщение Feb 1 2012, 16:56
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 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) о чём-то умалчивают?
Спасибо.
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 2 2012, 04:03
Сообщение #2


Adept
******

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



Переключение контекста или передача управления? Это немного разные вещи. Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 2 2012, 14:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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 - видимо используют не все регистры.

Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 2 2012, 15:31
Сообщение #4


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 - видимо используют не все регистры.

Либо не все регистры, либо под этим понимается что-то другое.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 2 2012, 16:01
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(dxp @ Feb 2 2012, 17:31) *
Сергей Борщ когда-то проводил сравнение на ARM7, там у FreeRTOS не очень шустро выходило даже на простейших сервисах - там всё было сделано на очередях, а это не самый быстрый способ.

Я так и подозревал, что не быстрая.
Статья рекламная значит (Курниц. КиТ): тут рассказываем, тут не рассказываем.


Цитата(dxp @ Feb 2 2012, 17:31) *
Либо не все регистры, либо под этим понимается что-то другое.


Видимо так.
Go to the top of the page
 
+Quote Post
Terminator
сообщение Feb 3 2012, 09:59
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 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 МГц

Так что время переключения у них примерно одинакого.
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 3 2012, 10:10
Сообщение #7


Adept
******

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



QUOTE (Terminator @ Feb 3 2012, 16:59) *
Это как бы и есть передача управления, одна задача остановлена, контекст сменён, другая задача запущена.

Не совсем так. Передача управления - это время от "заныривания" в сервисную функцию (которая и инициирует перепланировку и прочее) в одной задаче до "выныривания" из сервисной функции в другой задаче. Т.е. ещё логика сервисов и работа планировщика добавляется. А переключение контекстов - это сохранение контекста текущей задачи в стек, переключение указателя стека на стек следующей задачи и восстановление контекста новой задачи из её стека. Т.е. это только часть процесса передачи управления.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 3 2012, 10:44
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (dxp @ Feb 2 2012, 17:31) *
Сергей Борщ когда-то проводил сравнение на ARM7,
Начиная отсюда: http://electronix.ru/forum/index.php?s=&am...st&p=114555
Даже скорее отсюда: http://electronix.ru/forum/index.php?s=&am...st&p=114854


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 3 2012, 14:41
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Terminator @ Feb 3 2012, 11:59) *
Прошу заметить что вы сравниваете время для разных тактовых:
Так что время переключения у них примерно одинакого.


Ну, логично что одинаково: процессор тот же.



Цитата(Сергей Борщ @ Feb 3 2012, 12:44) *


Спасибо, интересно.
Go to the top of the page
 
+Quote Post
Vasya777
сообщение Apr 6 2013, 14:42
Сообщение #10


Участник
*

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



Цитата(dxp @ Feb 2 2012, 10:03) *
Переключение контекста или передача управления? Это немного разные вещи. Переключение контекста - это чисто закинуть контекст в стек и вынуть из стека оный. А передача управления ещё включает код в сервисах оси, планировщик и прочее. У scmRTOS указано именно время передачи управления. Время переключения контекста в основном определяется процессором (архитектурой, количеством ресурсов, которые надо сохранять) и тактовой и слабо зависит от ОС.


Передача управления для ChibiOS/RT представлена на этом сайте. Исходный код доступен, так что, если интересно, скачайте и посмотрите, почему так быстро. Разумеется, чем больше функциональность, тем больше времени требуется на её работу. Интересно сколько времени требуется для передачи управления из разных примитивов синхронизации scmRTOS?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 7 2013, 06:28
Сообщение #11


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



А Вы зачем тему годовалой давности-то подняли?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Vasya777
сообщение Apr 7 2013, 17:38
Сообщение #12


Участник
*

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



Цитата(haker_fox @ Apr 7 2013, 12:28) *
А Вы зачем тему годовалой давности-то подняли?


Чтобы новой не создавать
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th July 2025 - 14:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01882 секунд с 7
ELECTRONIX ©2004-2016