Pull to refresh
3
0
Send message

То ли вы контекст забываете, то ли перепрошивка нужна как игра (поэтому нет ясных требований к ресурсу/надёжности и не интересны доступные на практике способы).

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

Но если не опечатка ... по одной цене могут быть SSD с трёхкратной разницей в ресурсе

Зачем капс? Если притягивать такое сравнение, то там и ёмкость в 8 раз больше. Этот оверпрайс там один из самых дешёвых, дешевле BX500. Какого-то заговора в TBW и в бренде нет, разница вполне соответствует разнице между QLC и TLC.

Но я ведь это и сделал (через ссылки на newegg).

наверно станет понятно зачем это всё.

Лучше автора никто не скажет - это всё в демонстрационных целях. Дальше планирует измерить влияние на производительность DRAM-буфера (вкл/выкл) и overprovisioning'а.

https://xkcd.ru/386/, увидел ошибки, не удержался, написал.

Ну во первых это не так

Имел в виду BX500 до доработки, думал, по числам будет понятно.

А уж про то какие мысли у меня с какими намерениями могут существовать - это и вовсе, извините чушь собачья и не ваше дело

Зацепился за "несколько раз" в комменте. Если там опечатка ("несколько десятков раз"), то смысл, наверное, есть.

Но если не опечатка, хочется сказать: ёкарный бабай, вот увеличение (гарантийного) ресурса в примерно три раза, как требовалось: зайти в магазин и исключить QLC SSD вроде этого BX500. Вот так просто, у одного производителя по одной цене могут быть SSD с трёхкратной разницей в ресурсе (newegg A/B). А вот в 4 раза: зайти в магазин и купить SSD на 4 ТБ вместо 1 ТБ (при прочих равных). Или третий вариант: купить SSD с запасом по ёмкости и оставить часть неразмеченной (сделать ручной overprovisioning; или не ручной - через утилиту производителя, если та позволяет), выигранный ресурс оценить по зависимостям write amplification от overprovisioning'а.

Это уже три способа помимо названного (купить б/у корпоративный SSD).

Весь JESD218 не подразумевает экстраполяцию, только некоторые из методов (причём экстраполяцию чего?). Смешивать надёжность и ресурс в TBW и как-то интуитивно ждать одного от другого тоже странно.

Я бы в целом с удовольствием купил себе с пяток дисков бюджетных, которые щяс продают по 1Тб, если б из них можно было вот так запросто сделать SLC пусть даже на 200 гб, но с увеличенным в несколько раз TBW.

Я бы в целом с удовольствием купил

Это невозможно - такая мысль может существовать только без практического намерения купить этот пяток дисков. Ведь при наличии намерения откроется много более дешёвых способов увеличить ресурс в несколько раз.

Но лучше скажу о другом - вот вы боитесь, что у того интела может остаться 10% ресурса (точнее, гарантийного ресурса). А это всё равно примерно в 8 раз больше, чем у BX500 из статьи.

В спеках у интела есть и надёжность (MTBF), и гарантийный ресурс (DWPD@5лет), первое о втором ничего не говорит. И в MTBF всегда какие-то большие цифры, их ещё надо приготовить (перевести в AFR). 228 лет MTBF - это такой странный способ сказать, что в год в среднем отказывает 1-exp(-1/228) = 0.4% дисков. Странный - потому что из него не следует, что хотя бы один диск проживёт 200 лет. Или 100. Или 10. Их можно все окирпичивать через 5 лет и 228 лет MTBF для них всё равно останутся верны. DWPD пересчитывается в TBW. Terabytes Written измеряется в терабайтах, а Petabytes Written измеряется в петабайтах, потому что уже понятно почему.

Но пользоваться таким можно только если разработчиками компилятора явно явно сказано "в стандарте C++ это UB, но мы реализуем нестандартное расширение языка, в котором это не UB".

Это плохой пример из-за нелепости ситуации вокруг type punning'а через union. Комитет решил сломать совместимость* с C в этом месте, а разработчики (возможно, всех существующих) компиляторов - нет.

Если стандарт игнорирует реальность, тем хуже для стандарта, а не для реальности. Тут нужен ещё один пример.

Он также игнорирует реальность, когда требует поддержку исключений и RTTI во freestanding-реализациях (так на языке стандарта называется bare metal). Комитет почему-то изначально (в C++98) послал таким образом много платформ и там до сих есть люди, голосующие за сохранение ситуации**. @Tuvok спросил про Arduino, а самое первое, что можно сказать об avr-g++ и стандартности: стандарт игнорирует существование этой платформы (потому что не хочет учитывать существование -fno-exceptions).

Так проявляются некие трения насчёт совместимости с C и насчёт поддержки bare metal в комитете и в представлениях Страуструпа***. Можно с ними не согласиться, как и с мнением Страуструпа о C или C++ на 8-битных микроконтроллерах: "Probably best stick to assembler".

В общем, на это могут смотреть не как на явное расширение компилятора, а как на "вы не рискнёте по дурости комитета сломать весь софт, пользующийся этим приёмом: x265, Firefox, Qt, OpenCV, ClickHouse, Boost... (точно так же, как не добавите в компилятор для bare metal неотключаемые исключения ради соблюдения стандарта - это же глупо)".

* в стандарте C поведение описано на этой странице (ctrl+F: type punning), в стандарте C++ это уже UB.

** голоса 1 Against, 2 Strongly Against в голосовании "We support proposed removal..."

*** Страуструп 2002: "Remove all incompatibilities: This is my ideal", Страуструп 2024: "Unfortunately, unions are commonly used for type punning".

Тогда можно предположить, что чем меньше смывается хлорное железо или продукты реакции, тем сильнее должна быть светочувствительность. И что это ключ к увеличению чувствительности. Странно, что в советской статье просто предлагается смывать (как если бы это было банальное травление печатной платы) и нерастворимых соединений на первый взгляд нет.

Если образуется FeCl2+CuCl2 (я тоже не химик и опять смотрю в статью на радиокоте), то они оба растворимы. Если образуется CuCl, то он нерастворим, но по той статье он образуется только при неудачном травлении медным купоросом. Они есть в магазинах химреактивов. Если, например, нанести раствор с нужным количеством CuCl2 и высушить, это добавит повторяемости.

Вот с контрольными образцами (перейти от наждачки к другому способу травления или сразу к промыванию) статья бы сомнений не оставляла. По тексту УФ пробуется только с хлорным железом, сравнивать не с чем.

Обо всём подряд. Как с этим не спорить:

DSD - это мегагерцовое сравнение с предыдущим значением и ответ - сигнал стал больше (1) или меньше (0).

Такая штука существует, но это дельта-модуляция (aka 1-битный DPCM), в цифровой части NES ещё использовалась.

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

Кажется, он в другой ветке считает, что PCM можно воспроизвести только через R–2R ЦАП (или находит особую сложность в цифровой интерполяции).

Про ШИМ получился отвлечённый спор о терминах, но если смотреть на прямоугольные сигналы и договориться, что они не все являются ШИМом, то я бы тогда назвал ШИМом те, что с постоянным периодом.

Чтобы активировать поверхность меди и ускорить процесс её фотоокисления, нужно использовать хлорное железо

а есть ли возможность дезактивировать медь? Была попытка помыть с мылом и мочалкой плату и затем закинуть обратно под УФ лампу.

активировано ваткой, пропитанной хлоридом железа

Кажется, тут есть небольшие ошибки. "Активацию" и "дезактивацию" можно использовать как фигуру речи, но тут в них прокрался странный смысл помимо "удаления окислов" и "остановки процесса окисления".

Хлорное железо лишь удаляет оксидную плёнку (и саму медь потихоньку). Медь по-всякому можно травить. Можно, кстати, перебраться на лимонную кислоту с перекисью - доступнее и нет риска что-нибудь испачкать (классический рецепт на radiokot.ru).

То есть смысл происходящего ограничивается удалением оксидов меди и получением цвета чистого металла. Потом на воздухе она окисляется как обычно, а температура и, как оказалось*, свет ускоряют процесс. В промывке и возвращении под лампу смысла не видно - на меди ведь нет реагентов, которые можно смыть, есть только очевидно нерастворимые оксиды.

Про ускорение окисления меди на свету после беглого поиска в литературе ничего особого не видно. Можно найти новые ключевые слова: photo-assisted corrosion/oxidation, photocorrosion/photooxidation... Есть многообещающие "Laser-Induced Digital Oxidation for Copper-Based Flexible Photodetector" и "Laser-assisted oxidation of metallic films on insulators", но в них рассматривается нагрев лазером. Во второй работе задаются вопросом "whether optical enhancement of oxidation is taking place", ссылаются на другие работы, где такое утверждается, но после эксперимента приходят к выводу, что в их ситуации (10-ваттный ИК-лазер) заметен только эффект от нагрева.

* или остаётся шанс, что не свет, а локальный нагрев как в статьях с лазерами?

Опозорились и радуетесь. Что за чертовщина?

Почему вы своим идеям верите, а софту, генерирующему валидный DSD - нет?

Я уже сказал, что вы описываете дельта-модуляцию, но считаете её дельта-сигмой. Откройте книжку какую-нибудь, википедию, сайт какого-нибудь производителя: "Sigma-Delta Converters ... average output is proportional to the magnitude of the input signal".

Да, постоянный период, кому надо - меня поймёт. Хотя при желании можно определить PWM через PDM. И PDM через PWM. И доопределить PWM с переменным периодом. И заявить, что по картинкам их разделить невозможно.

Дополнение: ещё очевидный эксперимент к последнему скрипту.

-i 'aevalsrc=0.5*sin(2*PI*440*t)+0.5' => 62.450%

-i 'aevalsrc=0.5*sin(2*PI*440*t)-0.5' => 37.470%

Да хватит тупить.

  1. ШИМ (PWM) - это не PDM

  2. ШИМ нигде на картинках нет, у него постоянный период

  3. ΣΔ-модулятор выдаёт PDM

  4. DSD - это PDM

  5. DSD пропорционален уровню сигнала, а не его производной. SoX-DSD вот плюс/минус-единицу превращает в 75%/25%-модуляцию, можно ещё один скрипт накидать (только заголовки при подсчёте единиц не отбрасывал)

pdm_count_ones.ps1
Set-StrictMode -Version 3.0
$ErrorActionPreference = 'Stop'
[System.IO.Directory]::SetCurrentDirectory($pwd)

# this build: https://www.audiofaidate.org/sw/sox-dsd/
$sox_dsd = '...\sox-dsd-win32-x86_64\sox-dsd-mansr-git-x86_64-w64-mingw32.exe'  

$tmp_path = 'dc1.wav'
$out_path = 'dc1.dsd64.dsf'

$run_ffmpeg = {
    ffmpeg                      `
        -hide_banner            `
        -y                      `
                                `
        -f lavfi                `
        -i aevalsrc=1 <# 1;-1 #>`
                                `
        -t 10                   `
        -sample_fmt s16         `
                                `
        $args[0]
}

$run_sox_dsd = {
	param(
		$in, $out, $dsd_rate = 64
	)
    if (-not @(64,128,256,512,1024).Contains($dsd_rate)) {
        Write-Error "Wrong DSD rate"
    }
    echo "`nRunning sox-dsd..."
    & $sox_dsd                  `
        $in                		`
        $out                	`
        rate 					`
			(44100*$dsd_rate)   `
        sdm 					`
			-f clans-4
}


& $run_ffmpeg $tmp_path
& $run_sox_dsd $tmp_path $out_path

$bytes = [System.IO.File]::ReadAllBytes($out_path)

$bits_set_to_one = [Uint64]0
for($i=0; $i -lt $bytes.Count; $i++)
{
	$bits_set_to_one += `
		[System.Numerics.BitOperations]::PopCount($bytes[$i])
}
"1's percent: {0:f3} %" -f ($bits_set_to_one*100 / 8 / $bytes.Count)

Тут у вас простая ошибка, вы дельта-сигма-модуляцию с дельта-модуляцией перепутали.

наводит на размышление о том, знаком ли вообще автор с DSD?

Он - да, вы - нет.

Преимущество в простоте железа необходимого для оцифровки в DSD, и для воспроизведения DSD

Это пересказ рекламных тезисов из 90-х. Тогда они не выглядели глупо, SACD был вещью новой, непонятной и взломанной только лет через 15. Но если подумать - микросхемы-кодеки начинаются где-то от доллара в розницу, а сэкономить на отказе от PCM даже немного не получится из-за малосерийности (PCM нужен всем, PCM+DSD тоже будет иметь спрос, один DSD - покупателей найти сложно).

Тезис про битовые ошибки - тоже лишь следующий абзац в том журнале, а не опыт внедрения, например.

Скрипт вносит ошибки по одному биту ("bytes[x] ^= 1 << y;"). Может, из-за шеллового синтаксиса выглядело непонятно.

Генерить DSD из PCM - это какое-то кащунство.

Из-за сложностей с обработкой в DSD его на практике вполне могут конвертировать в PCM (в виде DXD) и обратно.

DSD это просто лучшая цифровая интерпретация аналогового сигнала.

Потому что децимацию и интерполяцию объявили сложной и некрасивой, когда надо было конкурировать с CD и DVD-Audio.

Если верить archimago, большинство современных ΣΔ-ЦАПов - многоуровневые, то есть для преобразования из (однобитного по определению) DSD теперь нужны дополнительные шаги и даже простоты и красоты больше нет. А вот даташит на продвинутый АЦП ES9822 PRO. На блок-схеме ΣΔ-модулятор выдаёт 6 бит ("RAW"), дальше работа в 32 битах, децимация и произвольный формат на выходе - PCM или DSD.

DSD: 6 => 32 => 1
PCM: 6 => 32
RAW: 6

Рекламируемая в 90-х простота тут за 6-битным RAW'ом, а DSD может оказаться самым сложным вариантом.

DSD прекрасен тем, что ошибка в одном шаге квантования будет совершенно не замечена

Теоретическое преимущество есть, но как им пользоваться? Его обнуляет сжатие (DST) и шифрование (на SACD). Вместо него на практике работает контроль целостности на разных уровнях - в накопителе, в протоколах, в формате звука. CD-плееры могли интерполировать битые фреймы, FLAC и прочие имеют контрольные суммы для фреймов, foobar2000 на битых фреймах отключает звук. И DSD64 на самом деле ощутимо потрескивает, побаловался с pwsh:

audio-bit-flips.ps1
Set-StrictMode -Version 3.0
$ErrorActionPreference = 'Stop'
[System.IO.Directory]::SetCurrentDirectory($pwd)

# this build: https://www.audiofaidate.org/sw/sox-dsd/
$sox_dsd = '...\sox-dsd-win32-x86_64\sox-dsd-mansr-git-x86_64-w64-mingw32.exe'

function Copy-WithBitFlips([string]$in_path, [string]$out_path, [int]$bit_error_count)
{
    $bytes = [System.IO.File]::ReadAllBytes($in_path)

    for($i=0; $i -lt $bit_error_count; $i++)
    {
        $byte_offset = Get-Random -Maximum $bytes.Count  # [0; $bytes.Count)
        $bit_offset  = Get-Random -Maximum 8             # [0;8)

        $bytes[$byte_offset] = $bytes[$byte_offset] -bxor (1 -shl $bit_offset)
    }

    [System.IO.File]::WriteAllBytes($out_path, $bytes)
}

$run_ffmpeg = 
{
    ffmpeg                      `
        -hide_banner            `
        -y                      `
                                `
        -f lavfi                `
        -i sine=frequency=300   `
                                `
        -t 10                   `
        -filter:a "volume=-6dB" `
        -sample_fmt s16         `
                                `
        $args[0]
}

$run_sox_dsd = 
{
    if (-not @(64,128,256,512,1024).Contains($args[2]))
    {
        Write-Error "Wrong DSD rate"
    }
    echo "`nRunning sox-dsd..."
    &$sox_dsd                   `
        $args[0]                `
        $args[1]                `
        rate (44100*$args[2])   `
        sdm -f clans-4
}

&$run_ffmpeg 'sin10s.wav'
&$run_ffmpeg 'sin10s.flac'
&$run_sox_dsd 'sin10s.wav' 'sin10s.dsd64.dsf'   64
&$run_sox_dsd 'sin10s.wav' 'sin10s.dsd128.dsf' 128
&$run_sox_dsd 'sin10s.wav' 'sin10s.dsd256.dsf' 256

$bit_errors = 50
Copy-WithBitFlips 'sin10s.wav'          'noisy.sin10s.wav'          $bit_errors
Copy-WithBitFlips 'sin10s.flac'         'noisy.sin10s.flac'         $bit_errors
Copy-WithBitFlips 'sin10s.dsd64.dsf'    'noisy.sin10s.dsd64.dsf'    $bit_errors
Copy-WithBitFlips 'sin10s.dsd128.dsf'   'noisy.sin10s.dsd128.dsf'   $bit_errors
Copy-WithBitFlips 'sin10s.dsd256.dsf'   'noisy.sin10s.dsd256.dsf'   $bit_errors

Восприятие звука не объективное

Эти слова надо раскрыть в контексте статьи. Объективность достигается через слепые тесты (и через измерения приборами). А о какой субъективности идёт речь без них? О том, что мы убеждаем себя, что слышим разницу. Убеждаем, потому что хотим верить в наличие этой разницы. А верить в наличие разницы хотим, потому что хотим оправдать уже потраченные деньги. Вот так люди в поисках качественного звука замыкаются на прослушивании своих когнитивных искажений. Покупают кабель подороже и звук "улучшается", можно повторять бесконечно. Ладно, пусть занимаются самообманом, их право, но они и других путают.

В науке на рубеже XIX и XX веков было увлечение N-лучами - загадочными еле заметными лучами, которые регистрировались натренированным зрением. Могло потребоваться 6 недель тренировок, чтобы их увидеть. Понятно, что никаких лучей не было, учёные со временем смогли "ослепить" неправильные эксперименты и выучить урок. А вот со звуковым "snake oil" аудиофилы навсегда застряли на этом этапе.

Это так называемые POSIX ACLs, на которые он и жалуется.

Отказ от виндовых ACL (они тут зовутся NFSv4 ACL) - принципиальное решение именно в Linux, в других *nix поддержка есть.

Linux is the only one of the major Unix flavors that does not have any native NFS4 ACL support upstream in the kernel yet. There was a proposed implementation called RichACLs ... VFS maintainers believe that POSIX draft ACLs are sufficient and NFS4 ACLs don't fit well to Linux - wiki.samba.org

В музыке есть центы. А вместо долларов - полутона, полутон делят на 100 центов.

Это не расстроенное пианино, это настройка с реальными струнами. Такими струнами и в таких условиях, что отклонение от идеальности стало заметным.

Есть такая статья. Негармоничность фортепианных струн - что это такое?

Стоп, вы меня не слышите.

А про влияние кратности частот...

Ещё раз, частоты фортепиано некратные, октавы шире центов на 5.

>> ...негармоничность колебаний фортепианных струн...

Гармоничность колебаний это и есть совпадение биений.

Ещё раз, негармоничность колебаний струн. Вторая гармоника фортепианной струны не в 2 раза выше, это называют негармоничностью.

А про влияние кратности частот на гармоническое восприятие звука вам любой настройщик фортепиано расскажет. Им и доказывать ничего не нужно. Они благодаря этой взаимосвязи свой хлеб зарабатывают.

Они зарабатывают хлеб на выслушивании биений, а про негармоничность колебаний фортепианных струн им знать необязательно. Там как раз некратные частоты и при отсутствии биений октавы на самом деле получаются увеличенные, это описывается кривой Рейлсбека.

Первая часть статьи говорит на эту же тему - если замедлить или ускорить звук если сгенерировать сигналы с некратными гармониками, то станет видно, что мы оцениваем "качество" интервалов по биениям (по совпадению реальных гармоник), а не по сочетаниям частот. Об этом же говорится применительно к бонангу, у которого в спектре некратные гармоники.

https://www.nature.com/articles/s41467-024-45812-z (там ещё архив с 19 роликами прилагается)

Так и что это опровергает?

Решили добавить провокационности, внимание привлечь.

Глупости, там нет места, чтобы стоять метровым волнам и за различение низких частот отвечает самое узкое место в конце улитки. Способность работать спектроанализатором сейчас вроде объясняют через бегущую волну и переменную жёсткость базилярной мембраны.

Физически и вне уха накладываются гармоники, которые есть в спектре реальных инструментов. Если взять два тона через октаву, то 2-я гармоника нижнего тона совпадёт с 1-й верхнего. Если через квинту, то совпадут 3 и 2 гармоники соответственно. Если через терцию, то 4 и 3. При равномерной темперации - немного не совпадут (за исключением октавы), но зато и волчьи квинты не появятся.

Внутри уха даже у чистой синусоиды появятся гармоники - у уха ненулевой КНИ. Я думал, оно генерирует гармоники в среднем ухе (как диффузор), но пишут, что источник нелинейности - это кохлеарный усилитель из сокращающихся клеток, с электромеханической обратной связью. Из-за него ещё ухо может работать динамиком и излучать что-то регистрируемое микрофоном (спонтанная отоакустическая эмиссия).

Потом в эффект эквивалентности октав что-то ещё добавляет мозг. Наверное, вклад разделяется на эволюционный и выученный. Ещё, пишут, люди предпочитают немного растягивать октавы. Их и так растягивают при настройке фортепиано в соответствии с негармоничностью колебаний струн - вторая гармоника не в 2 раза выше, а ещё чуть выше. Но говорят ещё и про психоакустические эффекты, работающие с чистой синусоидой.

1

Information

Rating
5,208-th
Registered
Activity