>>> Нашо контролеру 2 ядра?
>> И чем больше у тебя ядер, тем проще с ним справляться. Не потому, что суммарно у ядер производительность выше, а потому, что если код, выполняющийся на одном ядре, тормозит, то другое ядро свободно, и может следовать рилтаймовым требованиям.
> Всё равно всё повиснет на этапе синхронизацыи. :)Нет, зачем? Допустим, читаешь ты одним ядром по паре сэмплов с периодом в 20мкс. И пишешь их в очередь. А на том конце очереди ядро читает пары сэмплов по тыщще штук за раз, и делает по ним FTT. Тебе из синхронизации максимум потребуется спинлок на очереди. А может даже и без него удастся обойтись, ежели ISA позволит.
И вот твоя реализация FTT может выжимать из ядра максимум, не отвлекаясь каждые 20мкс на чтение ещё одной пары сэмплов (что потребовало бы накладных расходов на сохранение регистров, восстановление их, возможно ещё на что-нибудь), она может в процессе даже иногда выделять память или освобождать её, если ей это зачем-то нужно. Она в целом может выполнять более продолжительные операции, не заботясь о том, что эти операции должны быть прерываемы в произвольный момент для того, чтобы прочитать ещё пару сэмплов.
> Я за распайку "ядер" на общей шыне по потребности — так универсальнее и надёжнее кажется
Мне кажется, что внешняя пайка всегда менее надёжна, чем соединения на одном кристалле. А насчёт универсальности, я совсем не согласен. Когда у тебя есть несколько ядер, это гораздо более универсальное решение, нежели вытачивание специальной схематики с тонкой заточкой под задачу, которая пойдёт лесом сразу же, как только слегка изменятся требования. Или если будет найден баг, упущенный раньше.
Читал про то, как вертолётик на Марсе чуть не убился[1]? Там был баг, который описан недостаточно подробно, на мой вкус, но я могу дофантазировать более точную картину. Где-то генерится импульс, который говорит камере захватить кадр, камера захватывает кадр, отправляет его микроконтроллеру, микроконтроллер принимает кадр, прописывает ему таймстамп на основании номера этого кадра, и заталкивает в дальнейшую обработку. Один кадр не был получен, и _не_был_посчитан_, в результате чего, таймстапмы всех последующих кадров съехали на 33.3 миллисекунды, что почти разломало систему управления. Вертолётик колбасило в воздухе так, что все уже думали, что ему кирдык придёт. К счастью, в момент посадки эта вниз направленная камера не используется, её кадры игнорируются, вертолётик полагается только на другие "органы чувств", благодаря чему ему удалось провести идеальную посадку и выжить.
Сейчас этот вертолётик стоит на приколе, ждёт обновления прошивки. А теперь прикинь, если бы у него каждое ядро было бы отдельным чипом, во что бы вылилось дополнение схематики возможностью перепрошить любой из чипов, не возвращая его для этого с Марса на Землю.
[1] https://spectrum.ieee.org/automaton/robotics/space-robots/ma...