Forth
http://www.fforum.winglion.ru/

Процессор 128 бит (не векторный)
http://www.fforum.winglion.ru/viewtopic.php?f=3&t=3397
Страница 1 из 1

Автор:  Hishnik [ Сб июн 15, 2024 14:06 ]
Заголовок сообщения:  Процессор 128 бит (не векторный)

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

Автор:  Total Vacuum [ Сб июн 15, 2024 17:11 ]
Заголовок сообщения:  Re: Процессор 128 бит (не векторный)

Дык это... Конпялятор нужОн с поддержкой 128 бит. Где скачать? :D

Автор:  Hishnik [ Сб июн 15, 2024 20:58 ]
Заголовок сообщения:  Re: Процессор 128 бит (не векторный)

Кусками можно и в 64-битном сделать. Адреса-то маленькие, их не надо делать как 128-битные. А разбор именно литералов в 128 бит отдельно оформить.

Автор:  Total Vacuum [ Пн июн 17, 2024 23:40 ]
Заголовок сообщения:  Re: Процессор 128 бит (не векторный)

Правильно ли я понимаю, что числа двойной длины в 64-битном Форте/процессоре не реализованы (да и не нужны они там обычно от слова совсем)? А если бы и были реализованы, то это бы не помогло, т.к. окучивать 128-битные числа надо максимально быстро?

Кстати, забавно, я даже в 16-битных Фортах числа двойной длины ни разу не делал. :)

Автор:  Hishnik [ Вт июн 18, 2024 01:06 ]
Заголовок сообщения:  Re: Процессор 128 бит (не векторный)

Тут даже не особо быстро, а хотя бы как-нибудь. Моделировать можно и на ПК, но со схемой в ПЛИС удобнее тем, что потом в ускорителе будет работать ровно то же самое. Особенно важно это для плавающей точки и тригонометрии, которые на x86 и в IP-ядрах для ПЛИС дают чуть разные результаты (а за пределами double и совсем отличаются). Тут проще пойти по пути hardware-in-the-loop, т.е. вместо симулятора схемы запускать код на процессоре, к которому эти разрабатываемые схемы подключены.

Автор:  Total Vacuum [ Ср июн 19, 2024 23:41 ]
Заголовок сообщения:  Re: Процессор 128 бит (не векторный)

:D Минутка юмора. 128-битный DEADBEEF бегает по не менее 128-битному замкнутому кругу.
Код:
int n = 0xDEAD << 16 | 0xBEEF ;

void main ( ) {
   * ( int * ) UARTBRR = 173 ;
   for ( int i = 0 ; i < 33 ; i ++ ) {
      printf ( "%X%n" , n ) ;
      n = ( n << 4 ) | ( ( n >> 124 ) & 0b1111 ) ;
   }
   while ( 1 ) ;
}
Изображение
http://totalvacuum.ru/deadbeef.jpg

Изображение
http://totalvacuum.ru/deadbeef2.jpg

Самое забавное здесь то, что 128-битное процессорное ядро (память/стек тоже 128-битные) без проблем уживается с 16-битной периферией и выполняет код, который был сгенерирован 16-битными компиляторами Си и Форт. Т.е. код для 16-битного и 128-битного (да и любого другого) процессора практически не отличается, ну, пожалуй, за исключением операций сравнения, т.к. знаковый бит ползает в зависимости от разрядности, но это легко лечится правками в подключаемых библиотеках, пересобирать трансляторы не требуется. Ну и умножением с накоплением пока пришлось пожертвовать (заменил на обычное сложение), т.к. штатных 18-битных умножителей на борту Tang Nano 9K для реализации моих хотелок не хватило. Поэтому умножение сейчас программное, но в теории можно будет вернуться к аппаратному, если сделать его не за такт, а за несколько.

Ну а вообще 128 бит - это прошлый век, пора переходить на 129 :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/