Э16С, типы данных, поддерживаемые инструкции

MaxPayne
Сообщения: 3
Зарегистрирован: 28 окт 2020, 16:56
Контактная информация:

Э16С, типы данных, поддерживаемые инструкции

Сообщение MaxPayne »

Добрый день!

Есть вопросы:
1. А. Какие типы данных для работы с вещественными числами реализованы в соответствии со стандартом IEEE 754-2018 ? Понятное дело, что FP32 (binary32 \ single precision IEEE 754-1985), FP64 (binary64 \ double precision IEEE 754-1985).
Б. Есть ли FP128 (binary128)? В 8СВ он есть или же он какой-то другой, не из IEEE 754-2018?
В. Есть ли FP256 (binary256)?
Г. Если ли типы decimal64, decimal128 и как вариант для совместимости — decimal32? Т.е. вычисления с плавающей запятой для десятичных чисел? Они в ряде ситуаций намного нужнее типов данных binary32, binary64, binary128.
2. Будет ли в Э16С аппаратная поддержка алгоритмов шифрования ГОСТ, AES/3DES и прочих блоуфиш, а также хэш-функций, в т.ч. числе используемых в браузерах?
3. Понятное дело, что Эльбрусам как и прочим представителям VLIW (EPIC) архитектур важна пропускная способность памяти. Поэтому, ведётся ли работа по применению DDR5?
4. Будут ли добавлять целочисленные блоки в каналы исполнения? Об этом писали здесь habr.com/ru/company/smartengines/blog/494866.
«Так, оказалось, что архитектура Эльбрус хорошо приспособлена для вещественных вычислений (в плане числа вычислителей она лучше, чем x86 и ARM), а вот с операциями над целыми числами все не так хорошо: она предоставляет до 6 64-битных вещественных АЛУ, в то время как АЛУ для векторных целочисленных операций (64 или 128 битных) доступны лишь на 2 из 6 каналов каждого ядра процессора.»
5. А. Всё-таки остановились на 32 Мб кэш памяти 3-го уровня? Не 40 и не 48?
Б. Какие вообще показатели по кэш-памяти для 1-го уровня в разбивке по инструкциям и данным и для 2-го?
В. Идею с 2Гб памяти стандарта HBM рассматривали? Своего рода кэш память 4-го уровня?
6. Добавили ли предсказатель переходов, т.е. из зачаточного состояния сумели перевести в что-то более промышленное?

1 и 2 имеют общую базу. Нужны как минимум регистры на 128, 256, а то и вовсе 512 бит.

Странно, но не удалось найти информации о типах данных, поддерживаемых Эльбрусами и информацию про Э16С на официальном сайте.
Поэтому нужна сводная таблица по типам данных для разных поколений МП Эльбрус, а также информация про Э16С, Э2С3, Э12С на сайте.

Часть ответов на вопросы можно найти по ссылкам на Википедии, но появились они только 23 октября. Текущая документация требует доработки.

MaxPayne
Сообщения: 3
Зарегистрирован: 28 окт 2020, 16:56
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение MaxPayne »

Ответы на вопросы, которые удалось найти в презентации отсюда https://vk.com/doc503118849_575915996 :
1. В. Судя по всему поддержки binary256 нет. [стр. 5, стр. 9]
5. А. Да, остановились на 32 Мб L3 на весь процессор. [стр. 11]
5. Б. L2: 1 МB, 64Bline, 4-way, неинклюзивная, L1I: 128 КB, 256B line, 4-way, 1D: 64 КB, 32B line, 4-way. [стр. 11] Но при этом общий объём кэш памяти всех уровней составляет 51 Мбайт.

1. Б. Есть ли binary128, нельзя сказать точно [стр. 5, стр. 9], есть только упоминания SIMD-128.
Читая Руководство по эффективному программированию на платформе «Эльбрус», расположенное по ссылкам: http://www.mcst.ru/elbrus_prog и http://ftp.altlinux.org/pub/people/mike ... prog/html/ в разделе 9.2 я не смог найти убедительного ответа на вопрос о том, есть ли поддержка типа данных binary128.
Надо перерабатывать данную главу, она очень странная. Используются термины, введенные в IEEE 754-1985, а на дворе уже 2020 год. При этом упоминаются типы двоичные вещественные типы данных на 128 бит... Из-за этого возникает путаница. Так, в таблице из раздела 9.2.2. есть типы данных __float128 и long double.
В презентации на стр. 9 упоминаются FMA операции по стандарту IEEE 754-2008, но при этом в руководстве по программированию руководствуются терминами из 1985 года. Это дополнительно указывает на необходимость переработки "Руководства по эффективному программированию на платформе «Эльбрус»".

MaxPayne
Сообщения: 3
Зарегистрирован: 28 окт 2020, 16:56
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение MaxPayne »

О необходимости поддержки типов данных decimal64, decimal128 и возможно decimal32 из IEEE 754-2019.
В данном видео человек столкнулся с проблемой того, что некоторые типы данных не поддерживаются в компиляторе lcc, зато есть в gcc - https://youtu.be/NLOtcsNBuBs?t=741 Это ненормально, так быть не должно, пусть даже в системах построенных на использовании СиСи++, типы decimal64/128/32 используются не так часто.

Зато данные типы данных используются в системах и поддерживаются в языках программирования (далее) ЯП:
SAP ERP: ABAP, decfloat16, decfloat34 (decimal64 и decimal128 соответственно), также p - упакованные числа, очень похож на числа IBM;
.Net: C# decimal (decimal128);
Java - нет decimal в явном виде, но есть определяемые в библиотеках типы данных для работы с десятичными числами и обеспечения приемлимой точности;
Python - программно определяемые классы decimal и fraction для обеспечения точности;
COBOL - есть десятичные типы данных.

Как видите немало систем и ЯП имеют аппаратную поддержку, все прочие программную поддержку десятичных типов с плавающей запятой.
Поскольку 128 разрядные регистры в архитектуре Эльбруса уже есть, то не является фундаментальной проблемой поддержка типов данных decimal64, decimal128 и binary128. И само собой разумеется должна быть поддержка

Про SAP, его типы данных и пример когда потеря точности привела к проблемам, в => посте.

booklovin
Сообщения: 13
Зарегистрирован: 19 ноя 2020, 09:08
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение booklovin »

Хороший форум, тихо сам с собою я веду беседу.

Аватара пользователя
mike
Сообщения: 59
Зарегистрирован: 24 апр 2017, 13:58
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение mike »

Ну эту ветку я почитал (впрочем, человек не только сюда стучался с этой тематикой), но мне сказать по ней нечего -- вот и помалкиваю.
Михаил Шигорин | ОС Альт для Эльбрус | вики для всех нас: altlinux.org/эльбрус

Dimelsondr
Сообщения: 10
Зарегистрирован: 06 май 2020, 09:56
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение Dimelsondr »

К сожалению по данным вопросам придется дождаться окончания ОКР, после чего часть информации появится для общего рассмотрения.

Юрий
Сообщения: 3
Зарегистрирован: 20 ноя 2020, 09:07
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение Юрий »

2. Будет ли в Э16С аппаратная поддержка алгоритмов шифрования ГОСТ, AES/3DES и прочих блоуфиш, а также хэш-функций, в т.ч. числе используемых в браузерах?

аппаратно поддержки шифрования нет,увы.Хотелки были жестоко зарублены

retk213
Сообщения: 3
Зарегистрирован: 24 ноя 2020, 18:15
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение retk213 »

А такой вопрос по 16с и 12с. У них частота должна быть 2000 Гц. Это конечно уже что-то, но все равно очень мало конечно. Но, я так понимаю это 2 Ггц на все 16 ядер, да? То есть это по нынешним меркам базовая частота по сути. А вот если только два ядра будут под нагрузкой - можно им частоту выше поднять, до 3 Ггц хотя бы? Просто тогда ваш проц можно было бы представлять как 2 Ггц с бустом до 3 Ггц, как собственно у всех сейчас (н уу них частоты побольше но тоже 3.8 - 5 Ггц). И все смотрят на последнюю цифру в первую очередь. Есть такая возможность в 16с - выставлять разную частоту для разных ядер или нет? Тем более в определенных задачах как раз важна скорость одного двух ядер, а остальные не используются.

retk213
Сообщения: 3
Зарегистрирован: 24 ноя 2020, 18:15
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение retk213 »

Еще такая идея. Грубо говоря у 16с (12с, 8св) возможно выполнение до 48 операций за такт. У современных х86 насколько я знаю до 6 операций. Вопрос, а нельзя ли сделать как бы виртуальный - софтверный гипертрейдинг? ТО есть сделать так чтобы х86 ОС видела не 16 ядер с 48 оп/такт, а скажем 64 ядра с макс 12 оп/такт? Ведь все равно в режиме эмуляции х86 я так понимаю нельзя использовать больше 6 оп/такт, так как тупо нет таких процессоров х86 - и ОС о них ничего не знает. Так почему не сделать из одного реального ядра - 4 виртуальных, но абсолютно реальных для ОС? Поделить 48 операций на 4, 128 регистров (или сколько там их в Эльбрусе) на 4 и так далее. И получится 64 ядра с частотой 2 Ггц, а это уже очень прилично. Ведь вы контролируете весть процесс двоичной трансляции - почему нельзя так сделать? Хотя бы для части софта в каких-то режимах. Главное объявить что есть 4 потока и проц 2021 года имеет 64 ядра по сути, а не 16. 16 маловато для серверов в 2021 году.


И вот представим что у нас получится в 2021 году если это сделать (и мое предложение выше): проц 16 ядер - 64 потока (!) с бустом до 3.5 Ггц на 4 ядра (одно физическое х 4) при работе в режиме х86 трансляции! Это уже будет очень близко по скорости к современным процам, а главное даже софт пилить не надо - на х86 будет все работать. Это же мечта всех чиновников! Ну и win10 я думаю можно будет допилить к 2021 году. И все с 2022 можно на российские ПК/сервера переводить гос конторы.

Аватара пользователя
mike
Сообщения: 59
Зарегистрирован: 24 апр 2017, 13:58
Контактная информация:

Re: Э16С, типы данных, поддерживаемые инструкции

Сообщение mike »

retk213 писал(а):
04 дек 2020, 12:20
Вопрос, а нельзя ли сделать как бы виртуальный - софтверный гипертрейдинг?
Насколько понимаю, нельзя. Почитайте внимательно http://mcst.ru/elbrus_arch

PS: новое обсуждение лучше начинать отдельной веткой -- почитайте тему и сравните сами.
Последний раз редактировалось mike 05 дек 2020, 12:55, всего редактировалось 1 раз.
Михаил Шигорин | ОС Альт для Эльбрус | вики для всех нас: altlinux.org/эльбрус

Ответить

Вернуться в «Микропроцессоры серии "Эльбрус"»