Может выглядеть так: ARM и NEON могут работать параллельно?, но его нет, у меня есть еще одна проблема (может быть, проблема с моим пониманием):
В стеке протоколов, когда мы вычисляем контрольную сумму, которая выполняется на GPP, я передаю эту задачу теперь NEON как часть функции:
Вот функция контрольной суммы, которую я написал как часть NEON, опубликованной в Stack Overflow: Реализация кода контрольной суммы для Neon in Intrinsics
Теперь предположим, что из linux эта функция вызывается,
ip_csum(){
…
…
csum = do_csum(); //function call from arm
…
…
}
do_csum(){
…
…
//NEON optimised code
…
…
returns the final checksum to ip_csum/linux/ARM
}
в этом случае.. что происходит с ARM, когда NEON выполняет вычисления? ARM сидит без дела? или он переходит с другими операциями?
как вы можете видеть, do_csum вызывается, и мы ожидаем этого результата (или это то, как он выглядит).
Примечание:
- Говоря в терминах cortex-a8
- do_csum, как вы можете видеть по ссылке, кодируется с помощью встроенных функций
- компиляция с использованием цепочки инструментов gnu
- Будет хорошо, если вы также возьмете Multi-threading или любую другую концепцию, вовлеченную или попадающую в картину, когда происходят эти межоперационные операции.
Вопросы:
- Разве ARM сидит без дела, а NEON выполняет свои операции? (в данном конкретном случае)
- Или он откладывает этот текущий код, связанный с ip_csum, и обрабатывает другой процесс/поток до тех пор, пока NEON не будет выполнен? (Я почти тупой, что происходит здесь).
- Если он сидит без дела, как мы можем заставить ARM работать над чем-то другим до тех пор, пока NEON не будет выполнен?