Обновить
4
0.8

Пользователь

Отправить сообщение

Главное, чтобы был прорыв (твёрдый электролит?)

а не скучная эволюция как в транзисторах
и все кремниевые
и все кремниевые

Натрий (по характеристикам он хуже) хорош, если ощутимо выгоднее лития. Он ощутимо выгоднее лития, если литий дорожает почти на порядок и становится заметен в стоимости батареи. Литий это сделал, а потом подешевел обратно почти на порядок. Вроде так.

График

Ну, желание поскромнее - чтобы DRAM дешевела как дешевела флеш-память за счёт наращивания слоёв на одном кристалле.
2014 - первые SSD на 3D V-NAND.
20?? - первые плашки на 3D X-DRAM или чём-то похожем.

(дешёвая, по низу рынка?)

Да, так что по его методике отката на 15 лет не будет, будет использование DDR4 или DDR3 для продолжения графика.

Точка в начале 2011 это 2x 2GB DIMM DDR3-1333 в Newegg.
Последняя точка в середине 2024 это 2x 32GB DIMM DDR4-3600 там же.

В 2017 было ответвление здесь https://hblok.net/blog/storage/: Following McCallum’s example, I’ve continued to use the “lowest priced [items] for which I could find prices at the time”.

Но оригинальные данные John C. McCallum (jcmit.net) обновлял дольше и перестал обновлять примерно в 77 лет с завещанием: I must pass the work of keeping the data updated to the next generation.

Это покупатель заинтересован, чтобы ёмкость увеличилась, а PCIe-слотов занимала столько же. И перефасовать терабайты нельзя, если большая упаковка на витрине залежится.

8ТБ в среднем продаются с наценкой относительно 4+4. Samsung в 9100 PRO просит +40%.

Каких металлов?..

Инфляция не важна на фоне выкупания ~половины производимой памяти на ближайшие несколько лет под Манхэттенский проект 2.

Но если отвлечься и думать про инфляцию, то в компьютерном железе «дорожает, но зато медленнее инфляции» было бы очень слабым утешением. Это как сказать, что ничего нового больше не будет. То есть будет, но как с холодильниками и микроволновками, а не как со слоёной флеш-памятью в 2014.

Не про флеш, но:

Из одной статистики получалось, что если (дешёвая, по низу рынка?) DRAM-память вырастет до 160 долларов за 16 ГБ, то это означает откат на 15 лет в прошлое.

Картинка

Нандий (nandium), драмий...

и не имеет ассоциаций

Ну, аналогия с указателем хорошо работает.

  • складывать их запрещено правилами языка

  • но один из указателей можно привести к числу (преобразовать дату в количество дней) и тогда он в сумме рассматривается как смещение

  • это смещение должно быть относительно другого указателя (другой даты) из этих двух, но оно относительно нуля (1 января 1 н.э.), поэтому смысла в сумме нет

Вариант с diff и расширением знака на все биты:

  • поиск максимума:

    • Clang распутывает в cmov на -O1.

    • GCC на любых уровнях не справляется и сохраняет алгоритм.

  • поиск минимума: оба не распутывают

https://godbolt.org/z/e4b63vd49

Не, я про операцию перед минусом, (x < y).

Она таки всегда вела себя одинаково:

Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has type int.

И чем скомпилированный код будет отличаться

По задумке: будет отличаться отсутствием ветвления (jump'а) => нет работы для предсказателя переходов => не может быть ошибки предсказания перехода => результат быстрее, чем при ошибке предсказания (и стабильный по скорости, если нас волнует утечка информации).

В реальности: GCC на -O0 (!!) распознаёт за этими 5 операциями x < y ? x : y, которое тоже компилируется без ветвления в cmov (ветвление vs. предикация).
https://godbolt.org/z/51YWe7c1s

Чтобы код из статьи "заработал", нужно оружие сильнее, чем -O0:

GNU extended asm с подобранным ограничением
    int tmp, tmp2;
    // y ^ ((x ^ y) & -(x < y));
    tmp = (x < y);    asm("" : "+r"(tmp));
    tmp = -tmp;       asm("" : "+r"(tmp));
    tmp2 = x ^ y;     asm("" : "+r"(tmp2));
    tmp = tmp & tmp2; asm("" : "+r"(tmp));
    return y ^ tmp;

Весь код и asm - на godbolt.

Пища для ума от цикла статей: что иногда можно найти под капотом компилятора и почему так нельзя делать вручную.

В соседней ветке разговор ушёл куда-то в сторону "стандартный Си местами даёт меньше, чем LLVM (если другой язык завяжется на возможности LLVM, он автоматически окажется впереди)".

Здесь пришли к тому, что стандарту языка нет дела до низкоуровневых возможностей и надо завязываться на расширения компилятора, чтобы попытаться получить желаемое.

Вот самый настоящий алармизм есть у экологов касательно сведения с орбиты (влияние на океаны и т.д.). Они за километр обходят вопрос "каков вклад космонавтики относительно других загрязнителей" и, видимо, из корыстных соображений.

https://www.grunge.com/1090709/how-space-debris-is-affecting-the-worlds-oceans/
Гидразин - канцероген. При температурах сведения он распадётся... но сам факт!

упадёт на Луну
большинство сгорит в атмосфере
улетит неизвестно куда
случайно забросить гайки

Ну кто так бочки с гайками взрывает. Это больше похоже на нервное "запомни, таких игр не существует, тебе ещё два курса проучиться две звездные системы колонизировать" (башорг #395556). Начать с ретроградного аналога геостационарной орбиты, его в учебниках истории станут называть "первое кольцо Земли"...

* чем от велосипедостроения
* лучше сначала натолкнуться на такой случай, прежде чем действовать

Не факт. Зависит от реализации. Может любое ненулевое число дать.

Эту скрепу отняли у сишников в C23 (предложения N2218&N2330 родом из C++ (P0907R4&P1236R1)).

The sign representation defined in this document is called two’s complement. Previous editions of this document (specifically ISO/IEC 9899:2018 and prior editions) additionally allowed other sign representations.

Тоже зависит от реализации

Эту (отсутствие гарантии sign extension) любовно оставили, обрезав предложение при портировании из C++. Это значит, что у комитета была на уме некая архитектура без arithmetic shift right, где будет поддерживаться C23 (вместе с его плюсово-шаблонными _BitInt'ами), но не будет поддерживаться C++20. Достаточно важная архитектура, чтобы избегать там медленной эмуляции инструкции. Достаточно заметная, потому что в компиляторах под неё задокументировано поведение (Implementation-Defined обязует), необычное. Но называть архитектуру они не станут. А может и не было её... но сама идея, что такую архитектуру можно придумать (черновое название - ds9k) и периодически про неё напоминать, сама идея прекрасна.

Милорд, они уже бегут на Rust, Zig и GNU C? Не надо бояться, все не убегут!..

А ещё бывает, что компилятор вроде и умеет в __builtin_parity, но реализовано оно медленнее, потому что готовой инструкции под это дело в целевом процессоре нет. Попробуйте в этом godbolt-сниппете выбрать, скажем, 32-х битную архитектуру PPC (power gcc 15.0.2). Там компилятор вообще сгенерит немаленький такой код, да ещё и вызывающий встроенную функцию (__paritysi2); это не будет быстро.

Он генерирует вызов функции из поста. Пока что разница в том, что на godbolt он не инлайнится и надо смотреть дальше у себя, если нужна производительность на той платформе. Это же и в других местах повторится, пользы от решения проблем с (?) LTO будет больше, чем велосипедостроения.

Это расширение, а не часть стандарта языка, так что есть случаи, когда использовать такое — не комильфо

Лучше на него сначала наткнуться, GCC и LLVM - это тоже стандарты, которые зачастую важнее бумажного. Хотел сказать, что к тому времени стандарт могут и поправить, но это уже сделали в C23 (__builtin_popcountstdc_count_ones_ui).

Если гнаться за непротиворечивостью, то char const * s1 , чтобы тип легко читался (указатель на... const... char).

Но непротиворечивость - это не про Си и у неё есть цена.

double[6][3] matrix = 0;
matrix[2][5] = 3.14;

Цена непротиворечивости в D, наглядно (размерность читается справа налево, а индексы слева направо).

К биту чётности (и, наверное, много где ещё) не хватает предупреждения, что не надо пытаться быть умнее компилятора - он имеет __builtin_parity...__builtin_parityll и знает про Parity-Flag-для-младшего-байта в вашем процессоре и с какой микроархитектуры доступна popcnt. https://godbolt.org/z/qdo7x435f

К ошибке в макросах - что о них всё рассказывают правила SEI CERT C. Что опасно нарушать, что нет, как исправлять - 13 правил.

Нет, это

«dma bypass» (программный метод обхода защитных механизмов).

Лучше часть убрать, она заменяется на printf("%p\n", bar); (или printf("0x%"PRIxPTR"\n", (uintptr_t)bar);) и пропадают ошибки (лишний volatile, sizeof считает размер указателя на буфер, а не буфера, указатель на функцию с такой-то сигнатурой где нужен просто указатель, разбор на отдельные байты сталкивает нас с endianness'ом железа, а так как повсюду little-endian, то выводится неправильно).

И, кажется, его странно желать как новую фичу вместо какого-либо общего механизма. User-defined префиксы/суффиксы к строковым литералам, например.

В D шаблоны могут играть префиксов (some_template!"string literal") и uniform call syntax позволяет записывать вызов функции "как суффикс" ( "string literal".foo() или "string literal".foo с учётом, что "any function can be used like a property").

1
23 ...

Информация

В рейтинге
1 613-й
Зарегистрирован
Активность