Как стать автором
Обновить

Комментарии 58

Если память горячая (более 85°C), то время хранения данных в памяти падает, а время статического обновления снижается вдвое до 32 Microsoft.


Это очень крутая опечатка :) Единица лагания — один Микрософт.
Это не опечатка, настроил автозамену на свою голову… Извините! :)
НЛО прилетело и опубликовало эту надпись здесь
Лагло, но не очень хорошее, всего 10% времени лагает. Хорошее лагло лагает 100% времени!
Не, если 100% это все-таки не лагло, это уже висяк.
Не лагло, а легло, да.
НЛО прилетело и опубликовало эту надпись здесь
Ну ее можно описать через что-то физическое. Типа «1 микрософт равен количеству мата, которое хочется сказать за 16732415351 периодами излучения атома стронция при использовании их продуктов». Хотя и этого недостаточно. Стронций ведь непостоянное излучение имеет, да?

Нужен фундаментальный закон, из которого 1 MS выводится однозначно.
Уверен, что оно существует.

Микрософт довольно маленькая величина. Миллисофт побольше, а Софт уже очень большая. Также есть Пикософт и Фемтософт, но их зафиксировать трудно.

Да, только при слиянии сверхмассивных черных дыр, поглотивших не менее миллионов солнц денег...

Ну можно взять, что 1 софт = максимально возможная бажность, когда по ошибке в каждой идиоме кода. Тогда один микрософт — по 1 ошибке в каждой 1000 идиом, что вообще похоже на правду.
Это по 1 ошибке в 1000000 идиом, а у вас миллисофт.
Может тогда не «идиом», а «атомарных операций»?

1 микрософт — это 1 ошибка на 1000000 атомарных операций.
Количество мата, производимое шарообразным абсолютно упругим абсолютно чёрным пользователем ПО Microsoft, диаметром в один метр и весом в один килограмм за одну секунду. В вакууме, разумеется.
… шарообразным абсолютно упругим абсолютно чёрным пользователем ...

Это уже какой-то эталон из области политкорректности.
Мне кажется, для вакуума лучше сказать «количество излучённой энергии», а матерность выразить через спектр излучения.
И ПО надо какое-то явно определить эталонное. Либо через объём кода, мб энтропию…
Очевидно, что нужно мерять звуковую энергию. Дополнительный объём энергии, который рассеивает через мат абсолютно чёрный сферический пользователь после принудительного апдейта на W10.
Звуковую? В вакууме?
диаметром в один метр и весом в один килограмм за одну секунду. В вакууме, разумеется.
Да. Мат материален (по произношению), а значит, в нём могут быть звуковые волны. Более того, мат — звук, а значит волна.

Вот так вот и проявляется корпускулярно-волновой дуализм мата.
Чтобы измерить звуковую волну, нужно, чтобы она дошла до измерителя, а в вакууме мне это видится проблематичным, т. к. звук является колебательным процессом в веществе, а вакуум есть отсутствие вещества. По мне, мерять тепло надёжней.
Как только до наблюдателя дойдёт излучаемый мат, то он его сможет измерить.

PS

Тепло — энергия, энергия — масса, масса — наличие вещества.
Удачи в экспериментах :)
Аналогия «энергия — масса» не является однозначной. Фотон вам в помощь.
Тогда ещё необходим эталонный спектр.
«Международный стандарт энергетического спектра обсценной лексики» — это ж надо в каждом языке определить, да потом под общую теорию, целый ряд фундаментальных исследований на стыке лингвистики, физики и информатики.

Не новая единица СИ, а сплошная морока с этим микрософтом…
Давайте вернём среднее арифметическое длины ступни 12 взрослых людей — фут, ну или дюймы. Только потом не стоните, что поршня на вашем «Порше» не лезут в блок или наоборот, пролетают со свистом. В технике от эталона не уйти, и, если не ошибаюсь, даже в странах с англицкой системой мер и весов рекомендуют переходить на метрическую.
Вы не поняли комментарий, на который так критически ответили.
Да ну, миллион весьма высокоточных вещей имеет дюймовые размеры. Почему вы думаете калибр АК47 такой некруглый? А «в странах с англицкой системой мер и весов», вроде как, когда очень нужно, как и с миллиметрами, просто используют точно такие же десятичные дроби с нужным числом знаков после запятой.
Проблема только в том, что метр, он и в Африке метр, а вот дюймов примерно под 30 видов/размеров, футов вообще более 60. И получается в итоге, что в дюймах, что в попугаях.
Перевод сделал мне день ;-)

Оригинал:
// Perform memory load. Any will do
*(volatile int *) one_global_var;

Перевод:
// Загрузка памяти. Любая инструкция загрузки делает
*(volatile int *) one_global_var;
Туда же: «нетривиальную долю энергопотребления» -> «значительную/существенную долю энергопотребления».
И сверху: «Процесс обновления и восстановления занимает некоторое время, поэтому чип может снова выполнять обычные операции чтения и записи» ==> «Процесс обновления и восстановления занимает некоторое время, прежде чем чип сможет снова выполнять обычные операции чтения и записи».

Вроде мелочи, но смысл практически на противоположный меняется — можно подумать, что чип нормально продолжает заниматься обычной работой параллельно с обновлением данных в ячейках. А на самом деле нет, не может — все курят бамбук, до тех пор пока он не закончит обновление. Собственно поэтому и задержки, если бы это шло в фоновом режиме, никаких задержек просто не было.
Если память двухпортовая, никто не курит!
Спасибо, было интересно почитать =)
C содержит комплексные числа частотных компонентов. Нас не интересуют комплексные числа, и можно сгладить их командой abs()

Функция abs() не «сглаживает» комплексные числа, а извлекает модуль (амплитуду).

В программах Aida и подобных ей замечал характеристику памяти:
«Частота регенерации памяти = 7.8 µs”

Да, оно так и называется Refresh Period (tREF) 7.8 us

tRFC (сколько занимает это самое обновление) в расширенных таймингах памяти так же указывается (и пишется во вспомогательный чип на модуле памяти — SPD).
Только не в наносекундах, а в тактах привязанных к частоте работы самой памяти. Например в компьютере с которого сейчас пишу:
9-9-9-27 (CL-RCD-RP-RAS) / 36-128-0-5-12-6-6-24 (RC-RFC-CR-RRD-WR-WTR-RTP-FAW)

RFC=128 тактов
рабочая частота 1600 МГц
1/1600000000*128=80 нс
По столько времени DRAM память тупит («уходит в себя») при каждом обновлении, трогать ее в этот момент не моги (с).

В данном примере получается память примерно 1% рабочего времени занимается обновлением и недоступна: 80/7800 = 0.01026 ~ 1%

Информация интересная, спасибо.


Хинт — большинство попсовых компиляторов поддерживают интристик __rdtsc();


P.S. А affinity вы же выставляли в ваших экспериментах? А то весь этот "шум" как и наблюдаемые данные, могли оказаться переключениями контекста. Ну а как известно, кто ищет — тот всегда найдёт...

По идее, события переключения контекста должны давать гармонику на FFT, но они малость менее часты, 20мс ЕМНИП квант времени, а измеряются задержки куда более низкого порядка. В его 200к векторе событий переключения контекста ожидается одно (2e5*1e-7/2e-2 = 1), т.е. на FFT просто не попадет.

Да, об этом я не подумал. Там же нет блокирующих вызовов, по идее такой пик если и попадёт то будет далеко выпадать на фоне остальных замеров.

15-20мс для фоновых процессов или на серверных системах. Если запущенно что-нибудь интерактивное (хоть браузер или там медиаплеер), то обычно квантование мельчится вплоть до 1 мс (на новых ОС может и еще мельче), чтобы пользователь не замечал микролагов и рывков(если например видео смотрит или в игрушку играет) при переключениях.
Хм, спасибо за информацию. Все равно слишком далеко от найденной частоты. :)
С ферромагнетиками для кодирования памяти проблем в общем то не много, и были попытки не только с одиночными кольцами (кольцо — исключительно чтоб не фонило). Поясню на феррозондах (не по 2 гармонике, о просто по петле) — как-никак диссер по этому был )))

Имеем 2 параллельных сердечника с последовательно-встречно намотанными катушками, один из которых с условным пермаллоем, второй — с воздушным сердечником (к примеру пластик). Если есть сильное внешнее поле, то пермаллой насыщается. Тогда, если в катушки дать прямоугольный импульс, то на измерительной (охватывает оба сердечника) катушке суммарное поле будет нулевым. А вот если внешнее поле слабое, то катушка с пермаллоем будет преобладать и мы регистрируем единичку. В таком варианте чтение ничего не стирает и управление записью и чтением разделено.
Плохо, что такие решения были громоздкими, потому и не пережили конкуренции
Хорошо, память обновляется, нагретая — обновляется чаще.
Это как-то влияет на производительность? Или можно пренебречь? Может, лучше греть память и получать рекорды, вместо глубокой заморозки азотом?
И как заморозка влияет на частоту и время обновления?
Естественно влияет. В моменты обновления память недоступна.
Больше температура, больше моментов обновления => память чаще недоступна.

Так что надо охлаждать, чтобы не перегревалась
С учетом где проходит граница (85 гр), охлаждать на практике не нужно. Само она до такой температуры не нагреется, даже в «голом»(только платка модуля с чипами) виде.
Разве что в какой-нибудь промышленной железяке, где она не сама греется, а от внешних источников тепла может сильно нагреваться.
Насколько мне известно, в компьютерах нет динамического изменения частоты регенерации оперативки в зависимости от температуры. Контроллер памяти настраивается один раз при включении и не меняет тайминги при дальнейшей работе.
В училище изучал работу такой памяти…
В нашей машине ППЗУ было такое. На биаксах построено. Машина 5Э26.

Теперь нужно нагреть память и обнаружить новую нулевую гармонику.
Гипертрединг наверное тоже лучше выключить.
А вот как отфильтровать переключения контекста у меня пока идей нет. По идее переключение туда-обратно должно занимать хотя бы 1 мкс, но было бы круто это проверить.

Перекомпилить приложение и померять под DOS с заблокированными прерываниями.
По-моему не статья, а чушь какая-то.
В современном CPU несколько ядер + гипертрейдинг. По пути от CPU до памяти конвейер 2 или 3 шины, спекулятивное исполнение и 3 уровня кэша. Параллельно происходят прерывания, DMA доступ, в ряде случаев(интегрированная графика) графический чип лезет в ту же память за своими данными. Битность шины памяти никак не учитывается, количество каналов тоже, и, как мне кажется, современные модули DRAM обновляют память прозрачно для шин памяти. Автор скорее всего поймал частоту какого-нибудь системного таймера, тяжело и долго переключающего процессы и контексты, а вовсе не memory refresh.
Следует понимать причину того, что в статье 'виден' период обновления.
1. Память разделена на 'ряды' (rows) (и 'банки', но это не так важно). При первом чтении из ряда, он 'открывается' и остаётся открытым. Последующие чтения идут уже из открытого ряда и следовательно они быстрее.
2. При рефреше открытый ряд (каким бы он ни был) закрывается и выдаётся команда рефреша. При последующем обращении к тому же ряду он снова открывается.

Таким образом, в статье виден именно процесс торможения при открытии ряда, вызванный в том числе и рефрешем. Если последовательно читать из разных рядов (в пределах одного банка), то такое 'торможение' будет происходить при каждом чтении (т.к. в одном банке открыт может быть только 1 ряд)
Если только не в бешенной спешке, всегда заезжаю в этот музей. Вдохновляет. Рекомендую.
Во времена доса были программы, ускоряющие компьютер путем замедления регенерации памяти (путем программирования одного из каналов таймера).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории