Page 15 of 17

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 09 Jul 2009, 09:16
by lvd
Romanich wrote:почему тогда делаешь акцент на BGA?

Потому что интересна технология припаивания.

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 09 Jul 2009, 09:55
by Romanich
lvd wrote:Потому что интересна технология припаивания.


ИК станция под эти интересы попадает?

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 09 Jul 2009, 12:14
by deathsoft
Romanich wrote:Грамотный инженер всегда ищет способ проверить, и если он уверен на менее 90%, то не вкладывается.

Это правильно.

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 11 Jul 2009, 09:15
by Romanich
удосужился поставить CCS 3.3 Platinum + C6000 CGT
посмотрел на код на максимальной оптимизации по скорости для C67+

говнищее - в среднем 1-2 инструкции параллельно, вместо обещанных 8 в максимуме - очередной рекламный трюк...

так что только bf561 в BGA smile

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 11 Jul 2009, 14:22
by deathsoft
Romanich wrote:удосужился поставить CCS 3.3 Platinum + C6000 CGT
посмотрел на код на максимальной оптимизации по скорости для C67+

говнищее - в среднем 1-2 инструкции параллельно, вместо обещанных 8 в максимуме - очередной рекламный трюк...

А ты код то как писал?

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 11 Jul 2009, 14:25
by deathsoft
Вон у меня валяются 2 старых проца ADSP-21160M (заказал с AD) тоже в bga - хз что сними делать. Может как нибудь попробую их примгтфить. Еще пара есть ADSP-21065L в обычных pqfp, тоже хз что с ними делать.

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 11 Jul 2009, 15:00
by Romanich
deathsoft wrote:А ты код то как писал?


что-то типа:

volatile long int a,b,c;

*(char*)0x20000000=0x01;
*(short int*)0x20000000=0x0123;
*(long int*)0x20000000=0x01234567;
a=3;
b=1+a;
c=a+b;

ну и оптимизацию most speed, -o3

ну а потом в асме смотрел... я прально понимаю что строки помеченные || это одновременность?

deathsoft wrote:Вон у меня валяются 2 старых проца ADSP-21160M (заказал с AD) тоже в bga - хз что сними делать. Может как нибудь попробую их примгтфить. Еще пара есть ADSP-21065L в обычных pqfp, тоже хз что с ними делать.


я уговорил начальство чтоб дало добро на изготовление тестовой хуйни для пайки БГА на ИК станции - типа АТмегу + флешка в БГА. Ну а потом тестить все ячейки. И заказать десятки штук , чтобы гробить нежалко было smile а потом лишь приступать к чему-то серьезному...

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 12 Jul 2009, 00:37
by deathsoft
Romanich wrote:что-то типа:

volatile long int a,b,c;

Эээ volatile - сразуже запрещает оптимизацию. Использование volatile указывает компилеру что переменную надо каждый раз читать из памяти и не кэшировтаь в регистрах.

Тестировать надо не так, а делать фкнкцию вида
int f(int a, int b, int c, int d, int e)
{
int result;
...
вычисления
...
return result;
}

компилировать это с ключем -c и -S и смотреть асмовый сорец или листинг.

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 12 Jul 2009, 04:16
by Romanich
deathsoft wrote:Эээ volatile - сразуже запрещает оптимизацию. Использование volatile указывает компилеру что переменную надо каждый раз читать из памяти и не кэшировтаь в регистрах.


Это я специально - чтоб компилер покорячился дольше smile

Приаттачил 3 файла:
Source.c - видеовывод на LCD
BF532.asm - то что собрал VDSP с максимальной оптимизацией
C67x+.asm - то что собрал CCS с максим. опт.

Один хрен - в обоих случаях практически одинаково...
Оосбо если учесть что TI на 300 МГц, а BF на 400

Или чего-то не вижу?

Re: Новая игровая консоль от Романыча (рассекретил наконец =))

PostPosted: 12 Jul 2009, 13:30
by deathsoft
Romanich wrote:Оосбо если учесть что TI на 300 МГц, а BF на 400

Это какой ТИ на 300МГц? на 300МГц только 5502, а 67ххх от 700 МГц и выше. И 5502 - не VLIW там максимум 2 инструкции за такт.

Ну - вот фрагмент 6 инстукций:

STW .D2T1 A3,*+SP(404) ; |34|
|| ZERO .L1 A14
|| ZERO .L2 B11
|| MVK .S2 0x64,B10
|| MVKH .S1 _LCD+16,A4
|| ZERO .D1 A7

Для VLIW также как и для SSE алгоритмы надо писать не абы как, а так чтобы компилер понял что можно сделать параллельну обработку. На счет видеоигр я хз, а вот для всяких кодирований видео и прочего такое делается без проблем.

Ну вот хотябы твой алгоритм:
#define Pixel4 \
o0=*(u32*) l; \
o1=*(u32*)(l+4); \
TFT_DATA=o0; \
TFT_DATA=o1; \
l+=8;

Можно в начале начитать кучу данных в регистры параллельно, а потом только записывать в порт TFT_DATA, при чтении будут сразу читаться до 8 блоков. в 8 переменных. Т.е. банально строчки кода переставить местами.
TFT_DATA наверняка объявлена как volitile long * и на этом сразуже тормоза.

P.S. А вообще надо было листинг генерировать а не асм, чтобы куски сишного осрца шли в пермешку с асмом и было видно что во что преобразовалось.

P.P.S. И еще типы никто так не объявляет #define u32 unsigned long int, надо писать так typedef unsigned long int u32;