The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Для Ubuntu начал поставляться пакет с ядром Linux для систем реального времени, opennews (?), 15-Фев-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


24. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от commiethebeastie (ok), 15-Фев-23, 13:38 
А с ARM пробовали сравнивать?
Ответить | Правка | Наверх | Cообщить модератору

57. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  –2 +/
Сообщение от Аноним (57), 15-Фев-23, 17:03 
у старёхоньких советских МК уже была реакция доли мкс при частотах ~10 МГц. Куда делись современные гигагерцы?!
Ответить | Правка | Наверх | Cообщить модератору

80. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +2 +/
Сообщение от Аноним (-), 15-Фев-23, 18:50 
> у старёхоньких советских МК уже была реакция доли мкс при частотах ~10
> МГц. Куда делись современные гигагерцы?!

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

А если ну капец как надо есть FPGA, там очень быстро (единицы наносекунд, если не доли) можно. Для понимания - народ допустим пуляет свой радиосигнал или лазер, ловит отраженку, делает вывод о расстоянии. Вот только свет быстрый и если у системы клок 100МГц - она в принципе не оперирует юнитами кратными менее чем трем метрам тогда.

Ответить | Правка | Наверх | Cообщить модератору

124. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от ptr (??), 15-Фев-23, 22:22 
Если на МК при прерывании сохранять в стек все регистры, коих там может быть несколько десятков. То на 100МГц доли микросекунд на выполенение всего обработчика прерывания не всегда получаются. И это не считая неопределенностей, которые вносятся DMA.
Так что да, если нужны наносекунды - то ПЛИС.

А вообще вспоминаю конец 80-х, когда я еще студентом занимался на кафедре АФАР-ами. Там то надо не просто что-то посчитать, а в реальном времени систему дифуров решать. Проблему решили тупо и в лоб, не заруливая исходные аналоговые сигналы напрямую на АЦП, а предварительно интегрируя их на прецизионых ОУ. Не исключаю, что и сейчас подобные задачи есть прямой смысл решать на ОУ.

Ответить | Правка | Наверх | Cообщить модератору

127. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от Аноним (-), 15-Фев-23, 23:33 
> Если на МК при прерывании сохранять в стек все регистры, коих там
> может быть несколько десятков.

Фирма ARM на этот счет придумала прикольные фокусы. Например:
1) Проц автоматически сохраняет несколько регистров.
2) Проц гарвард на уровне физики и поэтому фетчит код из флеша в то же время пока идет запись в SRAM.
3) Кто сказал что их ВСЕ надо сохранять? Они регламентировали ABI и на его уровне условились что вот эти регистры для параметров caller, эти можно рушить, эти нельзя. И сохранять надо лишь часть.
4) Микроконтроллерные ядра умеют довольно нахальный фокус. Tail chaining. При входе в IRQ если проц пушил состояние в стек и более приоритетное прилетело - ну он тогда сразу в него пойдет, скипнув переклюк контекста. И при возврате сразу провалится в менее приоритетное, скипнув восстановление и пересохранение. Более того - при выходе в фон если новый IRQ прилетел быстрей чем восстановили состояние, на это забивается и он опять сразу в IRQ заваливается. Так что при IRQ Storm микроконтроллерный арм нехило оптимизирует скорость IRQ, как раз скипая сохранение-рестор: ведь состояние фона уже сохранено. Ну да, фон при шторме IRQ встанет на якорь, но скорость обработки IRQ будет очень даже, латенси входа в IRQ таким манером может быть считанные циклы.
5) Многие вещи можно подпереть железом, таймерами, DMA и всем таким. А прикиньте, можно по таймеру выгрузить в GPIO какой через использование DMA, заранее подготовив блок данных. Проц даже не узнает что это было - кроме IRQ в стиле "мы тут послали весь блок, давайте еще".

> То на 100МГц доли микросекунд на выполенение всего обработчика прерывания
> не всегда получаются.

Если надо совсем жестко влезть можно еще
1) Вырубить IRQ нафиг.
2) Заглушить DMA если спертый им цикл шины был критичен.
3) Интенсивно поллить/записывать потребный ресурс фоном монопольно.
4) Бонус это interleave кода и данных по нескольким устройствам памяти.

Да, при этом 1-задачность - зато все ресурсы монопольно доступны вот этому коду. Без сохранения состояний и проч. Исследователи так исползуют 1 процик для вторжения в мир другого, оперируя вполне сравнимыми таймингами. Ну вон там STM32 vs power glitching где 32L и проч Level 2 защиты до Level 1 даунгрейдят, сбивая питание именно в момент чтения чипом фузов.

> И это не считая неопределенностей, которые вносятся DMA.

Тут все просто: чем сложнее система тем она менее предсказуема. С другой стороны если DMA удалось припахать - входа в IRQ вообще нет, он просто мувнет данные туда или сюда. И все. Это вообще имеет минимальный латенси само по себе, в пределах единиц цикла шины. А мы там где-то потом уже посмотрим, если вот именно немедленная, именно реакция все же не интересовала, только регистрация факта или что-то такое.

> Так что да, если нужны наносекунды - то ПЛИС.

Если вот именно совсем - то да. Но их неудобно програмить, с опенсорсными тулчейнами так себе, и порой доходит до того что для высокоуровневой координации софт-ядро поднимают, чтобы общую координацию делать там. Для меня FPGA больно уж экзотичны и с опенсорсными тулчейнами не очень, или нету или какая-нибудь наколенная питонодрянь.

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

Как бы сейчас стало модно встраивать 1-2 ОУ и (аналоговых) компаратора прям в чип микроконтроллера. Даже если вон то не надо, то даже просто ток померять, точно и быстро - ну, как бы, высокоомные шунты не рулят а милливольты с низкоомного выковыривать лучше все же после усиления, а не так что в полутора младших разрядах ADC колупаться. А заодно выход может быть на ADC или IRQ или куда там (актуальнее для компаратора) сразу.

Ответить | Правка | Наверх | Cообщить модератору

128. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от ptr (??), 16-Фев-23, 00:27 
> 1) Проц автоматически сохраняет несколько регистров.

Какая разница, если каждая запись в RAM все равно машинный цикл, даже если он один такт? Тот же STM32 25 слов (при наличии FP) хреначит в стек и столько же потом вытаскивает. А это, простите, уже 50 тактов.
> 2) Проц гарвард на уровне физики и поэтому фетчит код из флеша в то же время пока идет запись в SRAM.

Во-первых, по разному бывает. На том же STM32 порой нужно выполнять код из RAM. Во-вторых, ко времени выполнения обработчика прерываний это имеет очень косвенное отношение.
> 3) Кто сказал что их ВСЕ надо сохранять?

Если просто в вызываемой функции, то только в соответствии с ABI. Но в обработчике прерываний, уж простите, как минимум все регистры, которые будут в этом обработчике использованы. Вне зависимости от ABI.
> 4) скипнув восстановление и пересохранение

По сравнению с программно доступными регистрами - копейки. Причем речь уже о частном случае. Векторов прерываний у МК не так уж много. Даже в STM32 - по одному вектору на 8 GPIO.
> Если надо совсем жестко

Мы же про время выполнения обработчика прерываний говорим. А так да, сам бывало на критические задачи STM8 или ATTINY ставил в таком монопольном режиме. До Paduk так до сих пор и не добрался, хотя подобные задачи - уж точно для них. При цене то в 2-3 цента за корпус.
> Как бы сейчас стало модно встраивать 1-2 ОУ

Это редкость. У ST только в STM32G4/L4. Да и для вышеописанной задачи два ОУ ничем не помогут. Даже самые простенькие лабораторные прототипы АФАР требовали сотню-другую ОУ. А уж серийные - свыше тысячи.

Ответить | Правка | Наверх | Cообщить модератору

154. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от Аноним (-), 17-Фев-23, 12:26 
> Какая разница,

Большая. Во первых всего несколько записей и несколько циклов. Во вторых их делает железо без разбавки этого инструкциями для нескольких регистров. Так что через несколько циклов обработчик IRQ получает контроль и это к тому же будет стандартное сишное ABI, так то, прикольно придумано.

> если каждая запись в RAM все равно машинный цикл,

Этих машинных циклов довольно скромно может быть, если надо именно это. А на reentry когда зашивалиись и не успели состояние восстановить - и того меньше, железо достаточно сообразительно чтобы стопнуть восстанов на середине, и проскипать сохранение, т.к. не успели же снести сохраненное с прошлого раза еще.

> даже если он один такт? Тот же STM32 25 слов (при наличии FP)
> хреначит в стек и столько же потом вытаскивает. А это, простите, уже 50 тактов.

Простите но вы не в теме.

Во первых лично я пользуюсь M0/M3 где FP нет, в т.ч. и потому: мне больше предсказуемость надо чем bulk performance. Более мелкая и простая система проще в осознании и понимании worst case. А самые жесткие сертификаты для критичных применений у STMок у M0/M0+ вообще: там проще всего надежность и предсказуемость системы от и до изучить было, потому и.

Во вторых насколько я помню, плавучка в M4 опциональна, даже в M4F. Можно и не сохранять.

В третьих даже если сохранять - они сделали там какой-то забавный чит, когда большая часть регистров плавучки может быть сохранена в фоне, ПОСЛЕ того как IRQ handler получил управление. Они это как-то типа фонового сохранения обозвали. Я не особо интересовался, т.к. предпочитаю не создавать себе проблем и использую M0/M3.

> Во-первых, по разному бывает. На том же STM32 порой нужно выполнять код из RAM.

Это несколько экзотика. И там еще флеха не обязана поспевать за ядром на всем ходу, есть wait states, а префетчер и 64-бит шина это аннулирует только частично, и вносит небольной но все же джиттер. Но все же, interleaving шин есть и латенси в целом довольно умеренный может быть.

Для большей предсказуемости можно флеху с 0 wait states гонять - но тогда 24МГц максимум.

> Во-вторых, ко времени выполнения обработчика прерываний это имеет очень
> косвенное отношение.

И тем не менее, латенси у упомянутых культурная и близко не стояла с ужастиками про которые вы вещали.

> Если просто в вызываемой функции, то только в соответствии с ABI.

Если мы про IRQ то там сохраняет само железо, пойнт в том что мы скипаем явные команды push/pop разгружая I-bus для более полезных вещей. Это и латенси улучшает в том числе. А бонусом обработчик IRQ - просто сишная функция. То что ему ABI железо cделало он не знает.

Если мы про основной код, у современных оптимизеров могут быть свои идеи на этот счет. Они могут вообще заинлайнить маленький кусочек актуальный в именно ЭТОМ контексте от всей функции, просчитав что это выгоднее, что тут всегда вот так, и вообще заскипав call функции как таковой, и все пляски, вместо этого врезав тот кусочек который бы в этом кейсе выполнялся как несколько команд. Особенно LTO это дело любит.

> Но в обработчике прерываний, уж простите, как минимум все регистры, которые будут
> в этом обработчике использованы. Вне зависимости от ABI.

При том их еще до входа железка сама пушнула за считанные такты, входных параметров у (void) точно нету, и что-то пушить именно в коде хэндлера придется только если ему ABIшных регистров мало окажется. И если это сильно актуально можно и на асмовый код посмотреть. А если совсем уж приперло, играем мизера, запасу нет, можно и на асме хэндлер выписать, тогда уже точно с гарантиями.

> По сравнению с программно доступными регистрами - копейки.

Однако компилер так то в курсе правил ABI и первым делом упихивается в него. Но можно и на асме выписать если совсем приспичило. Я не развалюсь, право - обработчики IRQ обычно простые и быстрые так то стараются делать.

> Причем речь уже о частном случае.

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

> Векторов прерываний у МК не так уж много.

У STM32F0/1xx - около 80 штук бывает. Я б сказал, нормальненько так. Кстати там еще и можно более приоритетным менее приоритетного задвигать, и кстати сохранение контекста при этом уже не потребуется, уже сделано для менее приоритетного так то.

> Даже в STM32 - по одному вектору на 8 GPIO.

Описание EXTI этот сэр явно не читал. Все не так: есть эн обработчиков для именно 1 лапки, куда можно приаттачить именно 1 лапку, а есть shared, общие для сразу нескольких, но опять же, никто не запрещает с собой договориться что там только 1 лапку разруливаем. А другие - на другие обработчики. Ну да, у меня бонус: я "фулстэк". Могу гибридные решения: если становится неудобно софту, переделаю роутинг печатки. Если неудобно железу/разводке, я могу пересмотреть конфигурацию в софте. У фулстэка есть преимущества, более плотный контроль над системой и возможность сделать себе удобно и логично - среди них.

> Мы же про время выполнения обработчика прерываний говорим. А так да, сам
> бывало на критические задачи STM8 или ATTINY ставил в таком монопольном режиме.

Да я и на STM32F1 так пару раз делал. А чего б ему.

> До Paduk так до сих пор и не добрался, хотя подобные задачи - уж точно для них.
> При цене то в 2-3 цента за корпус.

Я не гоняю масспрод миллионами юнитов имеючи интерес больше к кастом деву и подобному, так что мне всякая китайская пакость не особо сдалась. С атмелками я немного могу поразвлечься по старой памяти но смысла в них когда STM32 есть я честно говоря почти не вижу. "Bang per buck" у атмелов какой-то не спортивный уж очень на фоне вон тех. А если кому мелочь надо то G0 в 8 лапом корпусе появился. Вот так вот можно в SO-8 чип с DMA получить :)

> Это редкость. У ST только в STM32G4/L4.

Кто посмел с314ть опамп в моих L15x?!

> требовали сотню-другую ОУ. А уж серийные - свыше тысячи.

Кошмар какой, парад антитехнологичности. Теперь я понимаю почему Маск в своем старлинке кастомные чипы beamformer от STM поставил. Их там полсотни всего чтоли, по 1 на свой патч вроде.

Ответить | Правка | Наверх | Cообщить модератору

169. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от ptr (??), 18-Фев-23, 15:22 
> Какая разница,
> Большая.

Сами себе противоречите. Шина выборки команд из флеша автономна от шины доступа к RAM. Поэтому без разницы, одной командой Вы 25 слов хреначите в стек или 25-ю. Время тоже самое получите.

> лично я пользуюсь M0/M3 где FP нет

Это к чему? Частные случаи бывают разные, но речь то об общем случае.

> Можно и не сохранять.

Пруф? В PM0214 "When using floating-point routines, the Cortex-M4 processor automatically stacks the architected floating-point state on exception entry."

>  они сделали там какой-то забавный чит, когда большая часть регистров плавучки может быть сохранена в фоне, ПОСЛЕ того как IRQ handler получил управление

Пруф? В PM0214 читаю обратное: "When stacking is complete, the processor starts executing the exception handler."

> Если мы про IRQ то там сохраняет само железо, пойнт в том что мы скипаем явные команды push/pop разгружая I-bus для более полезных вещей.

Но на загрузку шины доступа к RAM это не влияет никак, как и на время выполнения обработчика прерывания. К тому же из регистров общего назначения автоматически сохраняются только R0-R3 и R12. Если в обработчике нужны остальные - извольте сохранять их в стек вручную.

> Для большей предсказуемости можно флеху с 0 wait states гонять - но тогда 24МГц максимум.

Где меньше микросекунды на обработчик прерывания уже становится фантастикой. Так как только автоматическое стекирование 8 слов и автоматическим восстановлением из стека этих же 8 слов - уже 16 тактов.

> Кошмар какой, парад антитехнологичности.

Ваше предложение для чего-то вроде "Дарьял" (4000 элементов АФАР), с которым я тогда работал?
У современной "Воронеж" их может быть раза в два-три больше.
> есть эн обработчиков для именно 1 лапки, куда можно приаттачить именно 1 лапку

В M3 их всего 16, что для ряда задач катастрофически мало.

> Да я и на STM32F1 так пару раз делал. А чего б ему.

Автобус тоже можно в качестве такси использовать, "А чего б ему" )))

> Ну да, у меня бонус: я "фулстэк".

Вы просто не знаете, что такое "фулстэк" )))
Это я fullstack. От датчиков и МК до GUI на node.js у пользователя в браузере, через Kafka, Big Data и ML.

Ответить | Правка | Наверх | Cообщить модератору

171. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от Аноним (-), 19-Фев-23, 23:52 
> Сами себе противоречите.

Или знаю чуть больше вас по теме.

> Шина выборки команд из флеша автономна от шины доступа к RAM.

Cortex M0 например фон нейман в том числе и по шине, у него 1 на всех и он с этого будет в сильном минусе. А идея в более-менее совместимом выводке. Так что если про ОБЩИЙ СЛУЧАЙ... в общем случае хардварное zero-code секвенсирование эффективнее софтварного. Алсо вполне валидно если DMA в это время сходит в флеш и утянет константы в периферию, bus master же.

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

Инженеры фирмы ARM попродвинутее вас будут и свое дело знают.

> Это к чему? Частные случаи бывают разные, но речь то об общем случае.

А, вот так? Ну тогда вон там мой ответ в том же стиле. Я просто M4F не пользовался, но краем глаза видел блабла в TRM и рядом что если плавучкой не ползоваться то можно отключить сохранение этого совсем, а если пользоваться - "lazy" фоновое сохранение есть.

> Пруф? В PM0214 "When using floating-point routines, the Cortex-M4 processor automatically
> stacks the architected floating-point state on exception entry."

Если "when using" не случается - там вроде есть бит какой-то запрещающий вон то. Но у M0/M3 такой проблемы нет вообще и хотя они "частные случаи", я больше вхож в эти случаи, активно ворочаю высокоскоростными прерываниями, не имею с этим траблов и поэтому не согласен с вами.

> Пруф?

Раз https://community.arm.com/arm-community-blogs/b/architecture...

Два https://stackoverflow.com/questions/65269724/why-is-the-irq-...

> В PM0214

"Смотрю в книгу, вижу..."

> Но на загрузку шины доступа к RAM это не влияет никак,

Да, но там лишь несколько регистров. По вон той линке кстати и точные числа циклов. M4 даже шустрей без плавучки, но для меня он здоровый слишком в него вкуривать и рулить вон тем всем.

> как и на время выполнения обработчика прерывания.

Чудес не бывает, если IRQ пользуется регистрами время на шине RAM на их сохранение придется потратить.

> К тому же из регистров общего назначения автоматически сохраняются только R0-R3 и R12.

Этого хватит по минимуму чтобы начать что-то делать.

> Если в обработчике нужны остальные - извольте сохранять их в стек вручную.

Сложные (и медленные) обработчики IRQ так то плохая практика.

> Где меньше микросекунды на обработчик прерывания уже становится фантастикой.

Скорость и предсказуемость часто живут по разную сторону улицы.

> Ваше предложение для чего-то вроде "Дарьял" (4000 элементов АФАР),
> с которым я тогда работал?

ASIC отлить, как вон те. Впрочем если штучно - это еще терпимо. Но надежность такой шляпы будет никакая. Тысячи чипов и контактов это капец.

> их может быть раза в два-три больше.

Эти люди умеют показать как именно инженерить не стоит. Я усвоил.

> В M3 их всего 16, что для ряда задач катастрофически мало.

Это про внешние прерывания чтоли? На мой вкус "в общем случае" более 16 IRQ на внешних лапах это уже какая-то экзотика. У меня не было ни 1 проекта где я бы в такой лимит уперся вообще.

> Автобус тоже можно в качестве такси использовать, "А чего б ему" )))

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

> Вы просто не знаете, что такое "фулстэк" )))
> Это я fullstack. От датчиков и МК до GUI на node.js у
> пользователя в браузере, через Kafka, Big Data и ML.

Таким жестким крапом я не оперирую. Просто потому что мне он отвратителен. А вот мордочку в чем-то типа lwan.ws в каком одноплатничке я нарисую. И дистр на нем запущу. Да еще с околосабжевыми адаптациями, когда оно таки будет надежной управляющей системой по своей природе.

Зато как видите отличие в деталях обеспечивает ... отличия в деталях. Я знаю свои системы. И их лимиты. Можете ли вы то же сказать по кафку - хз. Я просто имею дело с тем что умещается в мою голову и где я могу что-то кому-то гарантировать в результате. Прежде всего понимание моих систем и отсутствие глупых промашек, в том числе и самому себе для начала. Ну вот видите, вы с вашей кафкой на латенси IRQ срезались. А я свои системы знаю.

Ответить | Правка | Наверх | Cообщить модератору

173. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от Аноним (-), 20-Фев-23, 01:22 
Еще вот кстати https://www.state-machine.com/doc/ARM-AN298.pdf попалось. Подробное освещение топика фирмой ARM в апноте. А лично я M4F не использую вот как раз чтобы всем этим мозги не греть, для меня это именно реалтаймные системы с шустрой реакцией а не числодробилки. Поэтому M4 - уже перебор для меня и моих целей как таковой, только систему усложняет в понимании.
Ответить | Правка | Наверх | Cообщить модератору

129. "Для Ubuntu начал поставляться пакет с ядром Linux для систем..."  +/
Сообщение от Аноним (129), 16-Фев-23, 00:53 
Остались во временах систем типа MS-DOS.
Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру