XJR-Club Russia > Общение
эндуро-к апокалипсису готов!!
EviL_LaugH:
Спасибо, я посчитал всё написанное тобой комплиментом :)
--- Цитата: Энди от 08 Января 2014, 21:35:09 ---ты ноликом не ошибся? :D
--- Конец цитаты ---
Нет :)
--- Цитата: Энди от 08 Января 2014, 21:35:09 ---выдать тысячу строк рабочего кода на ассемблере - точно орден сутулого во всю спину получишь ;D ;D ;D
--- Конец цитаты ---
Там просто фишка в том, что при достаточно долгой работе с одной архитектурой (например, лично я часто работаю с Blackfin и TMS320C6xxx) и знании её асма всё пишется весьма быстро и почти на автомате. Написать рабочий алгоритм - в общем-то немудрено и недолго, ибо большинство конструкций известны, опять же, из опыта, а многие вообще участия ядра не требуют или требуют крайне малых временнЫх затрат программиста (пример: КИХ-фильтрация формата 1.15 на DSP - это чаще всего одна команда MAC в цикле, а выдачей результата работы уже вполне может заниматься DMA с применением кучки триггеров). Основное время занимает оптимизация - когда у тебя десятиуровневый конвейер команд (Blackfin, хе-хе) и нужно бороться за каждый такт, вот тогда начинается самое веселье с параллельными вычислениями и прочими фокусами, занимающее недели и месяцы.
Но парням из отдела я про орден сутулого обязательно передам ;D
Edit: ну, и не стоит забывать (применительно лично к моей работе), что, как правило, ассемблерная писанина - это перенос уже разработанного и оттестированного тобой же (на компьютере или ином симуляторе) алгоритма с ЯВУ (C, C++) на асм. То есть - алгоритм уже готов, остаётся только на асм "перевести" и оптимизировать. Первое - легко и быстро, второе - мегасложно и долго.
MV:
--- Цитата: EviL_LaugH от 09 Января 2014, 01:24:51 ---Там просто фишка в том, что при достаточно долгой работе с одной архитектурой (например, лично я часто работаю с Blackfin и TMS320C6xxx) и знании её асма всё пишется весьма быстро и почти на автомате. Написать рабочий алгоритм - в общем-то немудрено и недолго, ибо большинство конструкций известны, опять же, из опыта, а многие вообще участия ядра не требуют или требуют крайне малых временнЫх затрат программиста (пример: КИХ-фильтрация формата 1.15 на DSP - это чаще всего одна команда MAC в цикле, а выдачей результата работы уже вполне может заниматься DMA с применением кучки триггеров). Основное время занимает оптимизация - когда у тебя десятиуровневый конвейер команд (Blackfin, хе-хе) и нужно бороться за каждый такт,
--- Конец цитаты ---
не... ну бывает же такое... вроде буквы русские... а что написанно - хз :(
EviL_LaugH:
--- Цитата: MV от 09 Января 2014, 02:52:47 ---не... ну бывает же такое... вроде буквы русские... а что написанно - хз :(
--- Конец цитаты ---
Как и в любой беседе на профессиональную тематику :)
ЗЫ: раз уж тема про эндуро... MV, я таки зашиповался дюбелями, зацени прохладную: раз, два (с фоткаме!) :)
Энди:
--- Цитата: EviL_LaugH от 09 Января 2014, 01:24:51 ---Спасибо, я посчитал всё написанное тобой комплиментом :)
--- Цитата: Энди от 08 Января 2014, 21:35:09 ---ты ноликом не ошибся? :D
--- Конец цитаты ---
Нет :)
--- Цитата: Энди от 08 Января 2014, 21:35:09 ---выдать тысячу строк рабочего кода на ассемблере - точно орден сутулого во всю спину получишь ;D ;D ;D
--- Конец цитаты ---
Там просто фишка в том, что при достаточно долгой работе с одной архитектурой (например, лично я часто работаю с Blackfin и TMS320C6xxx) и знании её асма всё пишется весьма быстро и почти на автомате. Написать рабочий алгоритм - в общем-то немудрено и недолго, ибо большинство конструкций известны, опять же, из опыта, а многие вообще участия ядра не требуют или требуют крайне малых временнЫх затрат программиста (пример: КИХ-фильтрация формата 1.15 на DSP - это чаще всего одна команда MAC в цикле, а выдачей результата работы уже вполне может заниматься DMA с применением кучки триггеров). Основное время занимает оптимизация - когда у тебя десятиуровневый конвейер команд (Blackfin, хе-хе) и нужно бороться за каждый такт, вот тогда начинается самое веселье с параллельными вычислениями и прочими фокусами, занимающее недели и месяцы.
Но парням из отдела я про орден сутулого обязательно передам ;D
Edit: ну, и не стоит забывать (применительно лично к моей работе), что, как правило, ассемблерная писанина - это перенос уже разработанного и оттестированного тобой же (на компьютере или ином симуляторе) алгоритма с ЯВУ (C, C++) на асм. То есть - алгоритм уже готов, остаётся только на асм "перевести" и оптимизировать. Первое - легко и быстро, второе - мегасложно и долго.
--- Конец цитаты ---
ну это все понятно, когда на конвейере сидишь - куча наработок, заготовок - можно не напрягаясь за день выдать простенькую прогу на пару-тройку тысяч строк. когда в госкомстате сидел на клиппере писал - так и делал. там писанины было обычно строк двести :D вот отладка, да, от недели занимала обычно.
EviL_LaugH:
--- Цитата: Энди от 09 Января 2014, 10:08:31 ---ну это все понятно, когда на конвейере сидишь - куча наработок, заготовок - можно не напрягаясь за день выдать простенькую прогу на пару-тройку тысяч строк. когда в госкомстате сидел на клиппере писал - так и делал. там писанины было обычно строк двести :D вот отладка, да, от недели занимала обычно.
--- Конец цитаты ---
Тут не совсем конвейер, и проги не совсем простенькие. Просто DSP - это такая штука, что вся обработка в прикладном плане сводится к нескольким операциям, которые достаточно хорошо изучены и разработаны быстрые и эффективные алгоритмы их реализации. Собственно, даже в википедии можно почитать, она это лучше меня расскажет. А дальше реально начинается веселье - как всё это адаптировать под конкретную задачу и заставить работать так, как нужно тебе и заказчику. И это уже требует недюжинных знаний в радиотехнике, самой ЦОС и программировании конкретной архитектуры. Поэтому ни один алгоритм ЦОС не пишется сразу под процессор, его сперва проектируют и отлаживают на компьютерном симуляторе (Matlab/Simulink, прога на C++ и т.д.), с учётом особенностей архитектуры "железа" (разрядность, эффекты округления и т.д.), и только затем переносят на DSP. А то хрена толку, если ты программу на 10 тыщ строк написал сразу для проца на асме, а она не работает, потому что из-за малейшего переполнения или округления какой-нибудь несчастный БИХ-фильтр стал неустойчивым и гонит в данные откровенную лабуду :D и хрен это отладишь и поймаешь...
Поэтому, как я и говорил, "перекинуть" уже разработанный тобой готовый мплабовский или сишный алгоритм на асм конкретного проца - довольно просто и быстро, нужно только сам процессор хорошо знать, и можно выдавать на-гора тыщу строк\день. А вот оптимизировать уже под процессор - это и есть самая сложная задача.
Помнится, одной из моих первых задач на этом поприще было написание "с нуля" кодека Рида-Соломона для 2188 процессора, так оптимизация была примерно в следующем виде: приходит начальник отдела и говорит: "А давай ещё на 100 тактов быстрее!". После ~ 10 итераций код был вылизан вплоть до 10-го уровня конвейера, но работал я тогда по 12-13 часов в день и без выходных в течение ~ полутора месяцев. Эх, ностальгия. :D
Навигация
Перейти к полной версии