Комментарии 15
Поясните пожалуйста, почему время растет настолько медленнее по сравнению с ростом размера пакета?
Или если мы передаем лишь указатель на общую память почему оно вообще растет?
Или если мы передаем лишь указатель на общую память почему оно вообще растет?
+1
НЛО прилетело и опубликовало эту надпись здесь
Между ядрами действительно передается лишь указатель, но есть операции копирования userspace<->kernel со стороны Linux. Соответственно время на простом копировании тоже теряется. Время растет медленно из-за наличия кеша L2 256 Кбайт. Результат становится намного хуже при использовании пакетов размером больше 100 кб… В принципе, это хорошая золотая середина на ненагруженной системе (имеется ввиду наша плата)…
0
Если основное время съедается копированием в userspace, корректно ли включать это время в замеры? Как я понял, критично время которое РТОС тратит на коммуникацию, на Линуксовый кернел сравнительно плевать (тем более, думаю, для него это о-малое). Передача ведь происходит асинхронно?
0
Я правильно понимаю что два физически разных процессора пишут в одну и туже микросхему памяти и читают из нее поочередно, дергая прерывания друг друга?
+1
Ну они не обязательно должны быть отдельными процессорами. В статье говорится о ядрах. А так да, своеобразный вариант несимметричного мультипроцессинга (только уже на уровне разных ОС).
0
Да, кстати. Вопрос не совсем по теме поста.
Как в таких сетапах, когда на разных ядрах крутятся разные ОС контролируются доступы к девайсам? В смысле, нужно следить чтобы они друг другу не мешали. Есть ли некие хардварные семафоры?
Как в таких сетапах, когда на разных ядрах крутятся разные ОС контролируются доступы к девайсам? В смысле, нужно следить чтобы они друг другу не мешали. Есть ли некие хардварные семафоры?
0
При одновременной работе придется разруливать семафорами, возможно их сделать программными (ну с замедлением, аппартатных в данном процессоре нет). Есть несколько исключений для данного камня P1020: Crypto модуль допускает одновременную работу, контроллер ELBC (NAND/NOR/etc) позволяет с некотороми ухищерениями отдать первому ядру NOR второму NAND с прозрачным доступом к ним (ухищерения относятся к обработке ошибок).
0
Eсли имеется ввиду ELBC то нет. Есть 7 CS на которые можно повесть NOR/NAND/ETC. Адреса у CS разные, конкретный CS должно использовать только одно ядро. Изюминка заключается в том что операции с NAND на одном CS будутут прозрачны для NOR на втором CS учитывая что шина данных и адреса одна и таже, весь разрул берет на себя контроллер.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
OpenMCAPI: одновременный запуск Linux и RTOS на многоядерных процессорах