А это решение принимается в том же драйвере что и опрос?
И да, и нет. В одном из путей принятия решения решение о стимуляции принимается прямо внутри драйвера, для чего прямо в драйвере есть функционал фильтрации, и драйвер принимает от управляющей программы параметры (через общую память): какой канал фильтровать с какой частотой среза и при каком значении начинать стимуляцию с предопределёнными параметрами. В другом пути сигнал о начале стимуляции приходит от управляющей программы, которая, в свою очередь, получает его либо от исследователя через нажатие кнопки (либо в UI, либо физической, на пульте дистанционного управления), либо программно, от пользовательского скрипта.
Но требование latency до одной миллисекунды не включает в себя время, которое затрачивает на работу пользовательский скрипт. Если пользователь сделает там бесконечный цикл до принятия решения, это не проблема.
Что будете делать если (когда) логика принятия решения не влезет по времени в 1 поток?
У нас очень сильно многопоточная система. Приём и передача данных — это уже два разных потока, и бегут они на двух разных ядрах, а уж в интерфейсе их вообще штук двадцать.
И DISPATCH_LEVEL не защищает от аппаратных прерываний.
Да, кое с чем придётся смириться. Но смириться с неизбежным злом и способствовать ему — это разные вещи. У нас в программе прерываний нет.
Мозг необязательно должен быть человеческим. Большинство исследований мозга выполняются на крысах и мышах, — их мозг очень похож на наш, а стоят они не в пример дешевле.
Может быть, но нам от этого ни холодно, ни жарко. Плата-то наша собственная, наше проектирование и наше исполнение. Не всё ли равно, что ещё есть в мире, если подключить и запустить нужно конкретно эту?
То есть по факту реалтайм не нужен, достаточно регистрировать данные без потерь.
Я несколько раз явно касался этого вопроса в комментариях. Нет, реалтайм нужен, потому что по регистрируемым данным может приниматься решение о стимуляции. Там ещё и ограничение latency в 1 миллисекунду между генерацией сигнала в мозге и началом ответной стимуляции. Без реалтайма никак. А решение принимается не по raw data, а по filtered data. Конкретно — по данным фильтра высоких частот. Поэтому фильтрацию придётся выполнять прямо внутри этого реалтайма.
Про MmGetPhysicalAddress Вы не в курсе?
Вот честно — нет. :) Я вообще не виндузятник, я программист DSP. Это мой первый код для Винды за очень-очень много лет, чуть ли не с окончания обучения.
5кгц, не так и много
40 килогерц, но данные, удобства ради, приходят сгруппированными в пакеты по 8 замеров.
А Ваша плата что, вообще прерываний не генерирует?
Конечно, нет!!! Прерывания — это зло. Вся архитектура решения построена так, чтобы в нём не было ни единого прерывания, только polling. Мы делали замеры, и в среднем на обработке прерывания теряется больше времени, чем на опросах.
Ну, так то Mini. А я затребовал для разработчиков Pro в ха-а-арошей такой конфигурации. Потому что если у нас одна секунда данных весит гигабайт, а на час нужно около 4 терабайт, то, чтобы сохранить данные с одного ночного прогона (а это обязательный элемент тестирования), нужно иметь хотя бы 32 терабайта свободного места на локально подключённых дисках. То есть нужен ОЧЕНЬ большой системник, чтобы напихать в него много дисков и собрать из них Raid. Из больших системников у Apple только Pro и остался. Ну, а раз уж я раскатал губу на Pro, то не улучшить слегка конфигурацию будет просто глупо.
Нет. Один из планируемых видов продаж новой версии устройства — просто плата с источником питания. Студент сможет собрать свой собственный компьютер, отвечающий нашим минимальным требованиям, воткнуть в него нашу плату, загрузить и установить ПО, докупить электроды и, теоретически, сможет проводить исследования на открытом мозге не хуже, чем какой-нибудь НИИ. Но откуда у студента-медика компьютер без Windows? :)
Вообще-то нужно. Всё дело в том, как показывать. Если накладывать сигналы друг на друга, то будут хорошо видны повторяющиеся шаблоны, паттерны в сигналах. И внешний вид такого "слоёного пирога" позволяет врачу уверенно знать, в каком конкретно месте мозга сейчас находится электрод, надо ли его вставить глубже или, наоборот, вынуть.
Вот пример. Белый шум от всего шестнадцати сигналов — но видите, как несколько сигналов описывают плавные дуги между 0 и +2 mV? Вот по таким штукам ориентируется в мозгах нейрохирург.
Тут я пас. Но смотреть надо в сторону UEFI, потому что из-под Винды доступа к ним уже не будет, — значит, запускать надо до того, как Винда начнёт грузиться. А это примерно UEFI и есть.
Ну почему же так сразу... У меня винда работала в качестве контроллера балконной двери. Я системником дверь подпирал, чтоб не закрывалась. Работала стабильно и без нареканий :-)
Это надо будет сисадмину больницы объяснять. Причём не мне, я разработчик, а продажникам и техподдержке. Ни те, ни другие Линукса в глаза не видели, и не горят желанием смотреть... И я их прекрасно понимаю.
Да, кстати, я такое делал. Правда, x86 в таких целях хуже, чем PowerPC G3, но, возможно, это субъективщина: с PPC я работал больше и, естественно, знаю их лучше, поэтому они мне кажутся удобнее.
Да, Mac рассматривался в качестве основной платформы. Но когда я озвучил, сколько будет стоить оснащение отдела разработки новыми компьютерами, идею отложили до лучших времён :-(
ПК включён прямо в сеть, но FPGA запитана отдельно, через собственный источник питания, и изолирована от питания компьютера. Компьютер до мозгов не добьёт, если только не будет эпического пробоя, при котором уже неважно, что и как запитано.
В предыдущей версии FPGA находился в отдельном вынесенном устройстве в корпусе вместе с DSP и тоже был запитан через свой собственный источник питания.
E-mail: ahitech <собака> гмыло точка ком
Нет, в одной из конфигураций мы продаём только плату, а покупатель собирает комп сам.
И да, и нет. В одном из путей принятия решения решение о стимуляции принимается прямо внутри драйвера, для чего прямо в драйвере есть функционал фильтрации, и драйвер принимает от управляющей программы параметры (через общую память): какой канал фильтровать с какой частотой среза и при каком значении начинать стимуляцию с предопределёнными параметрами. В другом пути сигнал о начале стимуляции приходит от управляющей программы, которая, в свою очередь, получает его либо от исследователя через нажатие кнопки (либо в UI, либо физической, на пульте дистанционного управления), либо программно, от пользовательского скрипта.
Но требование latency до одной миллисекунды не включает в себя время, которое затрачивает на работу пользовательский скрипт. Если пользователь сделает там бесконечный цикл до принятия решения, это не проблема.
У нас очень сильно многопоточная система. Приём и передача данных — это уже два разных потока, и бегут они на двух разных ядрах, а уж в интерфейсе их вообще штук двадцать.
Да, кое с чем придётся смириться. Но смириться с неизбежным злом и способствовать ему — это разные вещи. У нас в программе прерываний нет.
Мозг необязательно должен быть человеческим. Большинство исследований мозга выполняются на крысах и мышах, — их мозг очень похож на наш, а стоят они не в пример дешевле.
Может быть, но нам от этого ни холодно, ни жарко. Плата-то наша собственная, наше проектирование и наше исполнение. Не всё ли равно, что ещё есть в мире, если подключить и запустить нужно конкретно эту?
Никакого внешнего хранилища в системе быть не должно, ограничение сверху. Только внутренние ЖД. Ну и да, я хотел Pro :)
Я несколько раз явно касался этого вопроса в комментариях. Нет, реалтайм нужен, потому что по регистрируемым данным может приниматься решение о стимуляции. Там ещё и ограничение latency в 1 миллисекунду между генерацией сигнала в мозге и началом ответной стимуляции. Без реалтайма никак. А решение принимается не по raw data, а по filtered data. Конкретно — по данным фильтра высоких частот. Поэтому фильтрацию придётся выполнять прямо внутри этого реалтайма.
Вот честно — нет. :) Я вообще не виндузятник, я программист DSP. Это мой первый код для Винды за очень-очень много лет, чуть ли не с окончания обучения.
40 килогерц, но данные, удобства ради, приходят сгруппированными в пакеты по 8 замеров.
Конечно, нет!!! Прерывания — это зло. Вся архитектура решения построена так, чтобы в нём не было ни единого прерывания, только polling. Мы делали замеры, и в среднем на обработке прерывания теряется больше времени, чем на опросах.
Ну, так то Mini. А я затребовал для разработчиков Pro в ха-а-арошей такой конфигурации. Потому что если у нас одна секунда данных весит гигабайт, а на час нужно около 4 терабайт, то, чтобы сохранить данные с одного ночного прогона (а это обязательный элемент тестирования), нужно иметь хотя бы 32 терабайта свободного места на локально подключённых дисках. То есть нужен ОЧЕНЬ большой системник, чтобы напихать в него много дисков и собрать из них Raid. Из больших системников у Apple только Pro и остался. Ну, а раз уж я раскатал губу на Pro, то не улучшить слегка конфигурацию будет просто глупо.
Нет. Один из планируемых видов продаж новой версии устройства — просто плата с источником питания. Студент сможет собрать свой собственный компьютер, отвечающий нашим минимальным требованиям, воткнуть в него нашу плату, загрузить и установить ПО, докупить электроды и, теоретически, сможет проводить исследования на открытом мозге не хуже, чем какой-нибудь НИИ. Но откуда у студента-медика компьютер без Windows? :)
Не нам стимулировать наших клиентов к изучению Linux`а. Тем более что лично я Linux не люблю :)
Вообще-то нужно. Всё дело в том, как показывать.
Если накладывать сигналы друг на друга, то будут хорошо видны повторяющиеся шаблоны, паттерны в сигналах. И внешний вид такого "слоёного пирога" позволяет врачу уверенно знать, в каком конкретно месте мозга сейчас находится электрод, надо ли его вставить глубже или, наоборот, вынуть.
Вот пример. Белый шум от всего шестнадцати сигналов — но видите, как несколько сигналов описывают плавные дуги между 0 и +2 mV? Вот по таким штукам ориентируется в мозгах нейрохирург.
Вот и у меня такое же впечатление складывается.
Тут я пас. Но смотреть надо в сторону UEFI, потому что из-под Винды доступа к ним уже не будет, — значит, запускать надо до того, как Винда начнёт грузиться. А это примерно UEFI и есть.
У меня нет никаких проблем с альтернативными ОС, я вон Гайкой занимаюсь в свободное время.
Ну почему же так сразу... У меня винда работала в качестве контроллера балконной двери. Я системником дверь подпирал, чтоб не закрывалась. Работала стабильно и без нареканий :-)
Это надо будет сисадмину больницы объяснять. Причём не мне, я разработчик, а продажникам и техподдержке. Ни те, ни другие Линукса в глаза не видели, и не горят желанием смотреть... И я их прекрасно понимаю.
Это одна из причин, почему я отрезаю память и лезу в неё по захардкоженному адресу.
Да, кстати, я такое делал. Правда, x86 в таких целях хуже, чем PowerPC G3, но, возможно, это субъективщина: с PPC я работал больше и, естественно, знаю их лучше, поэтому они мне кажутся удобнее.
Да, Mac рассматривался в качестве основной платформы. Но когда я озвучил, сколько будет стоить оснащение отдела разработки новыми компьютерами, идею отложили до лучших времён :-(
ПК включён прямо в сеть, но FPGA запитана отдельно, через собственный источник питания, и изолирована от питания компьютера. Компьютер до мозгов не добьёт, если только не будет эпического пробоя, при котором уже неважно, что и как запитано.
В предыдущей версии FPGA находился в отдельном вынесенном устройстве в корпусе вместе с DSP и тоже был запитан через свой собственный источник питания.