Перейти к содержанию
    

Linux на половине процессора

Коллеги,

 

Я никогда не программировал под Linux, а сейчас камень мощный появился, можно и попробовать.

 

То есть планирую использовать Cortex-A9 с двумя ядрами, на одном из ядер запустить свою очень маленькую, но быструю задачу (короче 10us), а на другом linux.

Думаю про отдельное ядро, потому что latency скажем в 4 us меня совершенно не устраивает. А задача такая маленькая что в кеш должна поместится.

 

Как подступится к Linux понятия не имею. И вообще возможно ли сделать чтобы какой то поток исполнялся на отдельном ядре независимо от остального Linux?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллеги,

 

Я никогда не программировал под Linux, а сейчас камень мощный появился, можно и попробовать.

 

То есть планирую использовать Cortex-A9 с двумя ядрами, на одном из ядер запустить свою очень маленькую, но быструю задачу (короче 10us), а на другом linux.

Думаю про отдельное ядро, потому что latency скажем в 4 us меня совершенно не устраивает. А задача такая маленькая что в кеш должна поместится.

 

Как подступится к Linux понятия не имею. И вообще возможно ли сделать чтобы какой то поток исполнялся на отдельном ядре независимо от остального Linux?

 

Сделать можно все. Самое узкое место в Вашей системе - общие шины для оборудования и памяти от ядер. И еще будут некоторые проблемы с объяснением линуксу на каком ядре он должен работать, и на каком запустить вашу отдельную задачу (запускать ее будет именно линукс, тут без вариантов).

И кстати - ваш кортекс-а9 имеет 4 ядра а не 2.

Cortex-A9-MP-core_Big.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделать можно все. Самое узкое место в Вашей системе - общие шины для оборудования и памяти от ядер. И еще будут некоторые проблемы с объяснением линуксу на каком ядре он должен работать, и на каком запустить вашу отдельную задачу (запускать ее будет именно линукс, тут без вариантов).

Это у вас Cortex-A9 с четырьмя ядрами а у меня с двумя

http://www.altera.com/devices/processor/ar...-cortex-a9.html

Только я не понял почему без вариантов запускать под Linux надо?

post-54616-1318618356_thumb.png

Изменено пользователем Аматер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это у вас Cortex-A9 с четырьмя ядрами а у меня с двумя

http://www.altera.com/devices/processor/ar...-cortex-a9.html

Только я не понял почему без вариантов запускать под Linux надо?

Потому что собрать самому ядро для одного процессора будет значительно сложнее, чем для двух. Для двух уже есть готовые реализации, которые нужно чуть подработать. Для одного Вам нужно будет славно потрудится, чтобы запустить хотя бы ядро Linux- дело неблагодарное имхо, но если есть много времени и высококлассный спец по портированию Linux ядра на новые платформы - почему бы и нет :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потому что собрать самому ядро для одного процессора будет значительно сложнее, чем для двух. Для двух уже есть готовые реализации, которые нужно чуть подработать. Для одного Вам нужно будет славно потрудится, чтобы запустить хотя бы ядро Linux- дело неблагодарное имхо, но если есть много времени и высококлассный спец по портированию Linux ядра на новые платформы - почему бы и нет :-)

Как то вы неопределенно говорите. Готовые реализации это hard affinity что ли?

Но я не понимаю будет ли линукс запускать что либо на ядре к которому привязана моя задача? Может ли он тормозить выполнение моей задачи? Задержка даже в 4 мкс не подходит мне. Поэтому и пытаюсь выяснить подход заранее.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как то вы неопределенно говорите. Готовые реализации это hard affinity что ли?

Но я не понимаю будет ли линукс запускать что либо на ядре к которому привязана моя задача? Может ли он тормозить выполнение моей задачи? Задержка даже в 4 мкс не подходит мне. Поэтому и пытаюсь выяснить подход заранее.

 

а что, задача так сложна или в ней floating point ? по описанию - задача- типовая плисовая

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а что, задача так сложна или в ней floating point ? по описанию - задача- типовая плисовая

Так она и решается сейчас на FPGA+NIOS. Но скорости не хватает. Естественно float упростит жизнь, можно будет отказатся от маштабирования для повышения точности. А fpga + DSP или внешний ARM как-то вызывают сомнения потому что время потеряется на синхронизации, предаче данных и результатов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так она и решается сейчас на FPGA+NIOS. Но скорости не хватает. Естественно float упростит жизнь, можно будет отказатся от маштабирования для повышения точности. А fpga + DSP или внешний ARM как-то вызывают сомнения потому что время потеряется на синхронизации, предаче данных и результатов.

 

Есть такие чипы - DSP и FPGA в одном корпусе (чипе). Их достаточно много. Имхо самое то для Вас :-)

А многоядерные чипы могут и не оправдать Ваших надежд... Тут как бы самое узкое место - как раз взаимодействие ядер между собой и с аппаратурой через всякие "интеллектуальные" штуки, которые могут достаточно неадекватно вести себя для Вашей задачи. (Не зная сути задачи трудно судить)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такие чипы - DSP и FPGA в одном корпусе (чипе). Их достаточно много. Имхо самое то для Вас :-)

А многоядерные чипы могут и не оправдать Ваших надежд... Тут как бы самое узкое место - как раз взаимодействие ядер между собой и с аппаратурой через всякие "интеллектуальные" штуки, которые могут достаточно неадекватно вести себя для Вашей задачи. (Не зная сути задачи трудно судить)

Может подскажите хоть одного производителя кто выпускает DSP+FPGA в одном корпусе?

Насколько я знаю и у xilinx и у altera пока только анонсированы A9+FPGA. Про DSP+FPGA вообще первый раз слышу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может подскажите хоть одного производителя кто выпускает DSP+FPGA в одном корпусе?

Насколько я знаю и у xilinx и у altera пока только анонсированы A9+FPGA. Про DSP+FPGA вообще первый раз слышу.

 

Точно где то встречал. Еще спрошу у человека. А вообще есть вот такой вариант например. ARM конечно ограничен в dsp инструкциях, но все же. На счет конкретно DSP + FPGA еще узнаю :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точно где то встречал. Еще спрошу у человека. А вообще есть вот такой вариант например. ARM конечно ограничен в dsp инструкциях, но все же. На счет конкретно DSP + FPGA еще узнаю :-)

 

Так о чем я и говорил с самого начала, про альтеру на которую вы ссылку даете. А DSP+FPGA не делают, потому что DSP решается в встроенными в FPGA умножителями. У меня немного другая задача - нужно по входным данным найти кое что и расчитатать, то есть на фильтр вообще не похоже. Поэтому cortex A9 иделальный вариант. Вот только почему то их программируют с операционками.

 

Ну и ладно, операционка вещь хорошая, но должна крутится независимо от моей задачи. Поэтому и задал вопрос можно ли выделить ядро под мою задачу.

 

Пока кажется что проще адаптировать скажем eCos чем настроить Linux.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока кажется что проще адаптировать скажем eCos чем настроить Linux.

 

Чем проще ? SMP в Linux отключается в конфиге одной галочкой, а вот как общие ресурсы делить между ядрами это уже другой вопрос, для этого различные гипервизоры пишут, кстати у cortex-a есть аппаратное расширение TrustZone, мне кажется надо смотреть в эту сторону, на сайте ARM есть где-то пример настройки двух standalone задач, правда помоему для одного ядра пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем проще ? SMP в Linux отключается в конфиге одной галочкой, а вот как общие ресурсы делить между ядрами это уже другой вопрос, для этого различные гипервизоры пишут, кстати у cortex-a есть аппаратное расширение TrustZone, мне кажется надо смотреть в эту сторону, на сайте ARM есть где-то пример настройки двух standalone задач, правда помоему для одного ядра пример.

+1, заставить Linux работать не только без SMP, но и вообще выделить какое либо ядро (или несколько) чтобы оно было свободно - делается в конфигах и даже в параметре к ядру

а то сижу читаю местных экспертов про "ужасные сложности" и диву даюсь :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...