Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Процессор 128 бит (не векторный) |
|
|
Минутка юмора. 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.jpghttp://totalvacuum.ru/deadbeef2.jpgСамое забавное здесь то, что 128-битное процессорное ядро (память/стек тоже 128-битные) без проблем уживается с 16-битной периферией и выполняет код, который был сгенерирован 16-битными компиляторами Си и Форт. Т.е. код для 16-битного и 128-битного (да и любого другого) процессора практически не отличается, ну, пожалуй, за исключением операций сравнения, т.к. знаковый бит ползает в зависимости от разрядности, но это легко лечится правками в подключаемых библиотеках, пересобирать трансляторы не требуется. Ну и умножением с накоплением пока пришлось пожертвовать (заменил на обычное сложение), т.к. штатных 18-битных умножителей на борту Tang Nano 9K для реализации моих хотелок не хватило. Поэтому умножение сейчас программное, но в теории можно будет вернуться к аппаратному, если сделать его не за такт, а за несколько. Ну а вообще 128 бит - это прошлый век, пора переходить на 129
:D Минутка юмора. 128-битный DEADBEEF бегает по не менее 128-битному замкнутому кругу.[code]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 ) ; }[/code][img]http://totalvacuum.ru/deadbeef.jpg[/img] [url=http://totalvacuum.ru/deadbeef.jpg]http://totalvacuum.ru/deadbeef.jpg[/url]
[img]http://totalvacuum.ru/deadbeef2.jpg[/img] [url=http://totalvacuum.ru/deadbeef2.jpg]http://totalvacuum.ru/deadbeef2.jpg[/url]
Самое забавное здесь то, что 128-битное процессорное ядро (память/стек тоже 128-битные) без проблем уживается с 16-битной периферией и выполняет код, который был сгенерирован 16-битными компиляторами Си и Форт. Т.е. код для 16-битного и 128-битного (да и любого другого) процессора практически не отличается, ну, пожалуй, за исключением операций сравнения, т.к. знаковый бит ползает в зависимости от разрядности, но это легко лечится правками в подключаемых библиотеках, пересобирать трансляторы не требуется. Ну и умножением с накоплением пока пришлось пожертвовать (заменил на обычное сложение), т.к. штатных 18-битных умножителей на борту Tang Nano 9K для реализации моих хотелок не хватило. Поэтому умножение сейчас программное, но в теории можно будет вернуться к аппаратному, если сделать его не за такт, а за несколько.
Ну а вообще 128 бит - это прошлый век, пора переходить на 129 :)
|
|
|
|
Добавлено: Ср июн 19, 2024 23:41 |
|
|
|
|
|
Заголовок сообщения: |
Re: Процессор 128 бит (не векторный) |
|
|
Тут даже не особо быстро, а хотя бы как-нибудь. Моделировать можно и на ПК, но со схемой в ПЛИС удобнее тем, что потом в ускорителе будет работать ровно то же самое. Особенно важно это для плавающей точки и тригонометрии, которые на x86 и в IP-ядрах для ПЛИС дают чуть разные результаты (а за пределами double и совсем отличаются). Тут проще пойти по пути hardware-in-the-loop, т.е. вместо симулятора схемы запускать код на процессоре, к которому эти разрабатываемые схемы подключены.
Тут даже не особо быстро, а хотя бы как-нибудь. Моделировать можно и на ПК, но со схемой в ПЛИС удобнее тем, что потом в ускорителе будет работать ровно то же самое. Особенно важно это для плавающей точки и тригонометрии, которые на x86 и в IP-ядрах для ПЛИС дают чуть разные результаты (а за пределами double и совсем отличаются). Тут проще пойти по пути hardware-in-the-loop, т.е. вместо симулятора схемы запускать код на процессоре, к которому эти разрабатываемые схемы подключены.
|
|
|
|
Добавлено: Вт июн 18, 2024 01:06 |
|
|
|
|
|
Заголовок сообщения: |
Re: Процессор 128 бит (не векторный) |
|
|
Правильно ли я понимаю, что числа двойной длины в 64-битном Форте/процессоре не реализованы (да и не нужны они там обычно от слова совсем)? А если бы и были реализованы, то это бы не помогло, т.к. окучивать 128-битные числа надо максимально быстро? Кстати, забавно, я даже в 16-битных Фортах числа двойной длины ни разу не делал.
Правильно ли я понимаю, что числа двойной длины в 64-битном Форте/процессоре не реализованы (да и не нужны они там обычно от слова совсем)? А если бы и были реализованы, то это бы не помогло, т.к. окучивать 128-битные числа надо максимально быстро?
Кстати, забавно, я даже в 16-битных Фортах числа двойной длины ни разу не делал. :)
|
|
|
|
Добавлено: Пн июн 17, 2024 23:40 |
|
|
|
|
|
Заголовок сообщения: |
Re: Процессор 128 бит (не векторный) |
|
|
Кусками можно и в 64-битном сделать. Адреса-то маленькие, их не надо делать как 128-битные. А разбор именно литералов в 128 бит отдельно оформить.
Кусками можно и в 64-битном сделать. Адреса-то маленькие, их не надо делать как 128-битные. А разбор именно литералов в 128 бит отдельно оформить.
|
|
|
|
Добавлено: Сб июн 15, 2024 20:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: Процессор 128 бит (не векторный) |
|
|
Дык это... Конпялятор нужОн с поддержкой 128 бит. Где скачать?
Дык это... Конпялятор нужОн с поддержкой 128 бит. Где скачать? :D
|
|
|
|
Добавлено: Сб июн 15, 2024 17:11 |
|
|
|
|
|
Заголовок сообщения: |
Процессор 128 бит (не векторный) |
|
|
Да, вот такое понадобилось. Именно 128 бит скалярных данных. Важное соображение - именно литералы в 128 бит использоваться будут нечасто, в основном загружаемые из внешних устройств. Но задача интересная...
Да, вот такое понадобилось. Именно 128 бит скалярных данных. Важное соображение - именно литералы в 128 бит использоваться будут нечасто, в основном загружаемые из внешних устройств. Но задача интересная...
|
|
|
|
Добавлено: Сб июн 15, 2024 14:06 |
|
|
|
|