Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
SMВсе основное там 32-битное и 40-битное
Ну если всё 32-битное, как помножить два 32-разрядных числа и поместить в 40-разрядный аккумулятор? А как сложить/вычесть? Как выполнить МАС 32-разрядный?
SMОсновные регистры там ВСЕ 40-битные. Это AC0-AC3
Ну вот посмотрел, что под рукой. В С5501, С5502, С5503, С5510А всего ДВА регистра 40-битные (АС0 и АС1, больше нет). ОСТАЛЬНЫЕ 76 регистров 16-разрядные (описание на С5502, с.122, табл.3-56). Ну посудите сами, основной отличительный признак DSP от обычного контроллера - наличие операции МАК. Раз проц 32-разрядный, то входные операнды МАКа должны быть 32-разрядными, а выход - 64 разрядным, ну и где оно?
SMАЛУ там 16 битное есть, но это ДОПОЛНИТЕЛЬНОЕ АЛУ (A-unit), которое может выполнить операцию над 16-битными данными ПАРАЛЛЕЛЬНО с основным АЛУ (D-unit), которое пожизненно 40-битное. И предназначено это доп. АЛУ в первую очередь для адресных модификаций, всяких счетчиков, и т.п.
Я просто не подумал, что сумматор в D-unit тоже называется АЛУ, хотя это сумматор-сдвигатель. Назвали так, чтобы больше путаницы было(:-)?
SMИ никто не запрещает сделать ADD dbl(memory), AC0 и операция эта прибавит за 1 такт 32 битное содержимое памяти к 40-битному регистру в 40-битном сумматоре
Так почти все процы могут, я же вам показал обратный пример, когда вы 32-бита аккумулятора добавляете к 32-битной памяти и сохраняете в памяти за ОДИН такт. Тот же пример, даже два, портится первый операнд, выполняется за один такт. Читайте комменты.
addl smem,acc ;содержимое аккумулятора добавляется к ячейке памяти.
addl acc,smem ;содержимое ячейки памяти добавляется к аккумулятору.
ВЫВОД: семейство 55 немного не дотягивает до 32-битного(:-(. Опять же не буду спорить, есть элементы, работающие с 32-мя битами, но это скорее исключение, а не правило.
А кстати, как вы позиционируете С5402? 32-разрядный или 16-разрядный?