Гипертрейдинг процессора что это

Обновлено: 07.07.2024

Одним из важнейших элементов в позиционировании процессоров Intel внутри линеек, является технология Hyper-Threading. А точнее, ее отсутствие в процессоре, или наличие. За что же отвечает эта технология? Intel Hyper-Threading, это технология для эффективного использования ресурсов ядер процессора (CPU), позволяя одновременно обрабатывать несколько потоков на одно ядро.

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

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


Чтобы избежать этого, в далеком 2002 году появилась технология Hyper-Threading, которая имитировала появление второго ядра в системе, благодаря чему, заполнение мощностей ядра происходило оперативней.

Как показала практика, мало кто знает, как на самом деле работает технология Intel Hyper-Threading. Большинство уверено, что у них в процессоре просто живет несколько дополнительных виртуальных ядер. Но на самом деле, количество ядер не изменяется, изменяется именно количество потоков, и это критически важно. Просто у каждого ядра появляется дополнительный канал ввода-вывода информации. Ниже видео, как оно работает на самом деле.

Как же устроена технология HT, и откуда берутся дополнительные потоки? На самом деле, все достаточно просто. Для реализации этой технологии, к каждому ядру дополняется один контроллер и набор регистров. Таким образом, как только поток данных становится больше, чем пропускная способность одного канала, подключается второй канал. Таким образом, устраняется простой незадействованных блоков процессора.


В эпоху одноядерных процессоров (Intel Pentium 4), технология HT стала спасением для тех, кто не мог купить более дорогой процессор (Pentium D). Но сегодня известны случаи снижения производительности при активации HT. Почему так происходит? Все довольно просто. Для распараллеливания данных, и правильной обработки процесса тоже уходят некоторые мощности процессора. И как только физических ядер становится достаточно для обработки информации без простоя блоков, производительность немного снижается из-за отобранных технологией HT ресурсов. Поэтому самый худший вариант работы Hyper-Threading, это не отсутствие увеличения производительности, а ее снижение. Но на практике такое случается очень редко.


С выходом восьмитысячной линейки процессоров Intel семейства Core, этот вопрос стал особенно актуален – а нужен ли Hyper-Threading вообще? Ведь даже процессоры Core i5 несут в себе полноценные шесть ядер. Если не говорить о профессиональных приложениях по обработке графики, рендеринге и т.д., то есть вероятность, что шесть физических ядер хватит на все офисные приложения и игры. Поэтому, если изначально считалось, что технология HT прибавляет процессору до 30% производительности, то теперь это не аксиома, и все будет зависеть от вашего стиля работы за компьютером и набора пользуемых утилит.

Разумеется, текст был бы неполным без тестирования. Поэтому мы возьмём имеющиеся у нас процессоры Intel Core i7 8700K и 7700K, и проверим в нескольких играх и приложениях производительность процессоров с активированным Hyper-Threading, и деактивированным. По итогу тестирования станет понятно, в каких приложениях виртуальные ядра добавляют производительности, а в каких остаются незамеченными.


Популярный 3DMark не особо охотно откликается на увеличение ядер и потоков. Прирост есть, но он ничтожный.


В различного рода вычислениях и обработке ядра и потоки всегда рулили. Здесь Hyper-Threading просто необходим, он очень сильно увеличивает производительность.


В играх ситуация проще. В большинстве случаев увеличение количества потоков не дает результатов, т.е. играм достаточно 4 физических ядер, а в большинстве случаев, даже меньше. Исключение составил лишь GTA5, которая очень хорошо отозвалась на отключение НТ, и прибавила 7% производительности, и только на шестиядерном процессоре 8700К. Отключение многопоточности на 7700К не дало никаких результатов. Мы несколько раз перепрогнали бенчмарки и результаты были неизменны. Но это скорее исключение из правил. Все протестированные игр легко довольствуются четырьмя ядрами.

Заключение

Даже с наступлением эры многоядерных процессоров, технология Hyper-Threading, не потеряла своей актуальности в ряде задач. Как мы выяснили, если нужно играть, то вам будет достаточно крепкого высокочастотного четырехъядерного процессора. Но если же вы хотите заниматься кодированием видео и обработкой изображений в больших объемах, вам просто необходим Hyper-Threading, который заметно увеличит производительность и скорость выполнения задачи.

Было время, когда понадобилось оценить производительность памяти в контексте технологии Hyper-threading. Мы пришли к выводу, что ее влияние не всегда позитивно. Когда появился квант свободного времени, возникло желание продолжить исследования и рассмотреть происходящие процессы с точностью до машинных тактов и битов, используя программное обеспечение собственной разработки.

Исследуемая платформа

Объект экспериментов – ноутбук ASUS N750JK c процессором Intel Core i7-4700HQ. Тактовая частота 2.4GHz, повышаемая в режиме Intel Turbo Boost до 3.4GHz. Установлено 16 гигабайт оперативной памяти DDR3-1600 (PC3-12800), работающей в двухканальном режиме. Операционная система – Microsoft Windows 8.1 64 бита.

image


Рис.1 Конфигурация исследуемой платформы.

Процессор исследуемой платформы содержит 4 ядра, что при включении технологии Hyper-Threading обеспечивает аппаратную поддержку 8 потоков или логических процессоров. Эту информацию Firmware платформы передает операционной системе посредством ACPI-таблицы MADT (Multiple APIC Description Table). Поскольку платформа содержит только один контроллер оперативной памяти, таблица SRAT (System Resource Affinity Table), декларирующая приближенность процессорных ядер к контроллерам памяти, отсутствует. Очевидно, исследуемый ноутбук не является NUMA-платформой, но операционная система, в целях унификации, рассматривает его как NUMA-систему с одним доменом, о чем говорит строка NUMA Nodes = 1. Факт, принципиальный для наших экспериментов – кэш память данных первого уровня имеет размер 32 килобайта на каждое из четырех ядер. Два логических процессора, разделяющие одно ядро, используют кэш-память первого и второго уровней совместно.

Исследуемая операция

Исследовать будем зависимость скорости чтения блока данных от его размера. Для этого выберем наиболее производительный метод, а именно чтение 256-битных операндов посредством AVX-инструкции VMOVAPD. На графиках по оси X отложен размер блока, по оси Y – скорость чтения. В окрестности точки X, соответствующей размеру кэш-памяти первого уровня, ожидаем увидеть точку перегиба, поскольку производительность должна упасть после того, как обрабатываемый блок выйдет за пределы кэш-памяти. В нашем тесте, в случае многопоточной обработки, каждый из 16 инициируемых потоков, работает с отдельным диапазоном адресов. Для управления технологией Hyper-Threading в рамках приложения, в каждом из потоков используется API-функция SetThreadAffinityMask, задающая маску, в которой каждому логическому процессору соответствует один бит. Единичное значение бита разрешает использовать заданный процессор заданным потоком, нулевое значение – запрещает. Для 8 логических процессоров исследуемой платформы, маска 11111111b разрешает использовать все процессоры (Hyper-Threading включен), маска 01010101b разрешает использовать по одному логическому процессору в каждом ядре (Hyper-Threading выключен).

На графиках используются следующие сокращения:

MBPS (Megabytes per Second) – скорость чтения блока в мегабайтах в секунду;

CPI (Clocks per Instruction) – количество тактов на инструкцию;

TSC (Time Stamp Counter) – счетчик процессорных тактов.

Примечание.Тактовая частота регистра TSC может не соответствовать тактовой частоте процессора при работе в режиме Turbo Boost. Это необходимо учитывать при интерпретации результатов.

В правой части графиков визуализируется шестнадцатеричный дамп инструкций, составляющих тело цикла целевой операции, выполняемой в каждом из программных потоков, или первые 128 байт этого кода.

Опыт №1. Один поток

image


Рис.2 Чтение одним потоком

Максимальная скорость 213563 мегабайт в секунду. Точка перегиба имеет место при размере блока около 32 килобайт.

Опыт №2. 16 потоков на 4 процессора, Hyper-Threading выключен

image


Рис.3 Чтение шестнадцатью потоками. Количество используемых логических процессоров равно четырем

Hyper-Threading выключен. Максимальная скорость 797598 мегабайт в секунду. Точка перегиба имеет место при размере блока около 32 килобайт. Как и ожидалось, по сравнению с чтением одним потоком, скорость выросла приблизительно в 4 раза, по количеству работающих ядер.

Опыт №3. 16 потоков на 8 процессоров, Hyper-Threading включен

image


Рис.4 Чтение шестнадцатью потоками. Количество используемых логических процессоров равно восьми

Hyper-Threading включен. Максимальная скорость 800722 мегабайт в секунду, в результате включения Hyper-Threading почти не выросла. Большой минус – точка перегиба имеет место при размере блока около 16 килобайт. Включение Hyper-Threading немного увеличило максимальную скорость, но падение скорости теперь наступает при вдвое меньшем размере блока – около 16 килобайт, поэтому существенно упала средняя скорость. Это не удивительно, каждое ядро имеет собственную кэш-память первого уровня, в то время, как логические процессоры одного ядра, используют ее совместно.

В прошлом мы рассказывали о технологии одновременной многопоточности (Simultaneous Multi-Threading - SMT), которая применяется в процессорах Intel. И хотя первоначально она создавалась под кодовым именем "технология Джексона" (Jackson Technology) как возможный, вероятный вариант, Intel официально анонсировала свою технологию на форуме IDF прошлой осенью. Кодовое имя Jackson было заменено более подходящим Hyper-Threading. Итак, для того чтобы разобраться, как работает новая технология, нам нужны кое-какие первоначальные знания. А именно, нам нужно знать, что такое поток, как выполняются эти потоки. Почему работает приложение? Как процессор узнает, какие операции и над какими данными он должен совершать? Вся эта информация содержится в откомпилированном коде выполняемого приложения. И как только приложение получает от пользователя какую-либо команду, какие-либо данные, – процессору сразу же отправляются потоки, в результате чего он и выполняет то, что должен выполнить в ответ на запрос пользователя. С точки зрения процессора, поток – это набор инструкций, которые необходимо выполнить. Когда в вас попадает снаряд в Quake III Arena, или когда вы открываете документ Microsoft Word, процессору посылается определенный набор инструкций, которые он должен выполнить.

Процессор точно знает, где брать эти инструкции. Для этой цели предназначен редко упоминаемый регистр, называемый счетчиком команд (Program Counter, PC). Этот регистр указывает на место в памяти, где хранится следующая для выполнения команда. Когда поток отправляется на процессор, адрес памяти потока загружается в этот счетчик команд, чтобы процессор знал, с какого именно места нужно начать выполнение. После каждой инструкции значение этого регистра увеличивается. Весь этот процесс выполняется до завершения потока. По окончании выполнения потока, в счетчик команд заносится адрес следующей инструкции, которую нужно выполнить. Потоки могут прерывать друг друга, при этом процессор запоминает значение счетчика команд в стеке и загружает в счетчик новое значение. Но ограничение в этом процессе все равно существует – в каждую единицу времени можно выполнять лишь один поток.

Существует общеизвестный способ решения данной проблемы. Заключается он в использовании двух процессоров – если один процессор в каждый момент времени может выполнять один поток, то два процессора за ту же единицу времени могут выполнять уже два потока. Отметим, что этот способ не идеален. При нем возникает множество других проблем. С некоторыми, вы уже, вероятно, знакомы. Во-первых, несколько процессоров всегда дороже, чем один. Во-вторых, управлять двумя процессорами тоже не так-то просто. Кроме того, не стоит забывать о разделении ресурсов между процессорами. Например, до появления чипсета AMD 760MP, все x86 платформы с поддержкой многопроцессорности разделяли всю пропускную способность системной шины между всеми имеющимися процессорами. Но основной недостаток в другом – для такой работы и приложения, и сама операционная система должны поддерживать многопроцессорность. Способность распределить выполнение нескольких потоков по ресурсам компьютера часто называют многопоточностью. При этом и операционная система должна поддерживать многопоточность. Приложения также должны поддерживать многопоточность, чтобы максимально эффективно использовать ресурсы компьютера. Не забывайте об этом, когда мы будем рассматривать ещё один подход решения проблемы многопоточности, новую технологию Hyper-Threading от Intel.

Производительности всегда мало

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

Взять, к примеру, Pentium 4. Процессор обладает, в общей сложности, семью исполнительными устройствами, два из которых могут работать с удвоенной скоростью – две операции (микрооперации) за такт. Но в любом случае, вы бы не нашли программы, которая смогла бы заполнить инструкциями все эти устройства. Обычные программы обходятся несложными целочисленными вычислениями, да несколькими операциями загрузки и хранения данных, а операции с плавающей точкой остаются в стороне. Другие же программы (например, Maya) главным образом загружают работой устройства для операций с плавающей точкой.

Чтобы проиллюстрировать ситуацию, давайте вообразим себе процессор с тремя исполнительными устройствами: арифметико-логическим (целочисленным – ALU), устройством для работы с плавающей точкой (FPU), и устройством загрузки/хранения (для записи и чтения данных из памяти). Кроме того, предположим, что наш процессор может выполнять любую операцию за один такт и может распределять операции по всем трем устройствам одновременно. Давайте представим, что к этому процессору на выполнение отправляется поток из следующих инструкций:

1+1
10+1
Сохранить предыдущий результат

Рисунок ниже иллюстрирует уровень загруженности исполнительных устройств (серым цветом обозначается незадействованное устройство, синим – работающее устройство):

Итак, вы видите, что в каждый такт используется только 33% всех исполнительных устройств. В этот раз FPU остается вообще незадействованным. В соответствии с данными Intel, большинство программ для IA-32 x86 используют не более 35% исполнительных устройств процессора Pentium 4.

Представим себе ещё один поток, отправим его на выполнение процессору. На этот раз он будет состоять из операций загрузки данных, сложения и сохранения данных. Они будут выполняться в следующем порядке:

И снова загруженность исполнительных устройств составляет лишь на 33%.

Хорошим выходом из данной ситуации будет параллелизм на уровне инструкций (Instruction Level Parallelism - ILP). В этом случае одновременно выполняются сразу нескольких инструкций, поскольку процессор способен заполнять сразу несколько параллельных исполнительных устройств. К сожалению, большинство x86 программ не приспособлены к ILP в должной степени. Поэтому приходится изыскивать другие способы увеличения производительности. Так, например, если бы в системе использовалось сразу два процессора, то можно было бы одновременно выполнять сразу два потока. Такое решение называется параллелизмом на уровне потоков (thread-level parallelism, TLP). К слову сказать, такое решение достаточно дорогое.

Какие же ещё существуют способы увеличения исполнительной мощи современных процессоров архитектуры x86?

Hyper-Threading

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

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

Hyper-Threading – это название технологии, существовавшей и ранее вне x86 мира, технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии проста. Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. В обоих случаях операционная система направляет потоки как на двухпроцессорную систему. Далее все вопросы решаются на аппаратном уровне.

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

Официально технология была объявлена на форуме Intel Developer Forum прошлой осенью. Технология демонстрировалась на процессоре Xeon, где проводился рендеринг с помощью Maya. В этом тесте Xeon с Hyper-Threading показал на 30% лучшие результаты, чем стандартный Xeon. Приятный прирост производительности, но больше всего интересно то, что технология уже присутствует в ядрах Pentium 4 и Xeon, только она выключена.

Технология пока ещё не выпущена, однако те из вас, кто приобрел 0,13 мкм Xeon, и установил этот процессор на платы с обновленным BIOS, наверняка были удивлены, увидев в BIOS опцию включения/отключения Hyper-Threading.

А пока Intel будет оставлять опцию Hyper-Threading отключенной по умолчанию. Впрочем, для ее включения достаточно просто обновить BIOS. Все это касается рабочих станций и серверов, что же до рынка персональных компьютеров, в ближайшем будущем у компании планов касательно этой технологии не имеется. Хотя возможно, производители материнских плат предоставят возможность включить Hyper-Threading с помощью специального BIOS.

Остается очень интересный вопрос, почему Intel хочет оставить эту опцию выключенной?

Углубляемся в технологию

Помните те два потока из предыдущих примеров? Давайте на этот раз предположим, что наш процессор оснащен Hyper-Threading. Посмотрим, что получится, если мы попытаемся одновременно выполнить эти два потока:

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

Итак, что же мы видим? Параллелизм на уровне потоков дал сбой – исполнительные устройства стали использоваться ещё менее эффективно. Вместо параллельного выполнения потоков, процессор выполняет их медленнее, чем если бы он выполнял их без Hyper-Threading. Причина довольно проста. Мы пытались одновременно выполнить сразу два очень похожих потока. Ведь оба они состоят из операций по загрузке/сохранению и операций сложения. Если бы мы параллельно запускали "целочисленное" приложение и приложение, работающее с плавающей точкой, мы бы оказались куда в лучшей ситуации. Как видим, эффективность Hyper-Threading сильно зависит от вида нагрузки на ПК.

В настоящий момент, большинство пользователей ПК используют свой компьютер примерно так, как описано в нашем примере. Процессор выполняет множество очень схожих операций. К сожалению, когда дело доходит до однотипных операций, возникают дополнительные сложности с управлением. Случаются ситуации, когда исполнительных устройств нужного типа уже не осталось, а инструкций, как назло, вдвое больше обычного. В большинстве случаев, если бы процессоры домашних компьютеров использовали технологию Hyper-Threading, то производительность бы от этого не увеличилась, а может быть, даже снизилась на 0-10%.

На рабочих же станциях возможностей для увеличения производительности у Hyper-Threading больше. Но с другой стороны, все зависит от конкретного использования компьютера. Рабочая станция может означать как high-end компьютер для обработки 3D графики, так и просто сильно нагруженный компьютер.

Наибольший же прирост в производительности от использования Hyper-Threading наблюдается в серверных приложениях. Главным образом это объясняется широким разнообразием посылаемых процессору операций. Сервер баз данных, использующих транзакции, может работать на 20-30% быстрее при включенной опции Hyper-Threading. Чуть меньший прирост производительности наблюдается на веб-серверах и в других сферах.

Максимум эффективности от Hyper-Threading

Вы думаете, Intel разработала Hyper-Threading только лишь для своей линейки серверных процессоров? Конечно же, нет. Если бы это было так, они бы не стали впустую тратить место на кристалле других своих процессоров. По сути, архитектура NetBurst, использующаяся в Pentium 4 и Xeon, как нельзя лучше подходит для ядра с поддержкой одновременной многопоточности. Давайте ещё раз представим себе процессор. На этот раз в нем будет ещё одно исполнительное устройство – второе целочисленное устройство. Посмотрим, что случится, если потоки будут выполняться обоими устройствами:

С использованием второго целочисленного устройства, единственный конфликт случился только на последней операции. Наш теоретический процессор в чем-то похож на Pentium 4. В нем имеется целых три целочисленных устройства (два ALU и одно медленное целочисленное устройство для циклических сдвигов). А что ещё более важно, оба целочисленных устройства Pentium 4 способны работать с двойной скоростью – выполнять по две микрооперации за такт. А это, в свою очередь, означает, что любое из этих двух целочисленных устройств Pentium 4/Xeon могло выполнить те две операции сложения из разных потоков за один такт.

Но это не решает нашей проблемы. Было бы мало смысла просто добавлять в процессор дополнительные исполнительные устройства с целью увеличения производительности от использования Hyper-Threading. С точки зрения занимаемого на кремнии пространства это было бы крайне дорого. Вместо этого, Intel предложила разработчикам оптимизировать программы под Hyper-Threading.

Используя инструкцию HALT, можно приостановить работу одного из логических процессоров, и тем самым увеличить производительность приложений, которые не выигрывают от Hyper-Threading. Итак, приложение не станет работать медленнее, вместо этого один из логических процессоров будет остановлен, и система будет работать на одном логическом процессоре – производительность будет такой же, что и на однопроцессорных компьютерах. Затем, когда приложение сочтет, что от Hyper-Threading оно выиграет в производительности, второй логический процессор просто возобновит свою работу.

На веб-сайте Intel имеется презентация, описывающая, как именно необходимо программировать, чтобы извлечь из Hyper-Threading максимум выгоды.

Выводы

Хотя мы все были крайне обрадованы, когда до нас дошли слухи об использовании Hyper-Threading в ядрах всех современных Pentium 4/Xeon, все же это не будет бесплатной производительностью на все случаи жизни. Причины ясны, и технологии предстоит преодолеть ещё многое, прежде чем мы увидим Hyper-Threading, работающую на всех платформах, включая домашние компьютеры. А при поддержке разработчиков, технология определенно может оказаться хорошим союзником Pentium 4, Xeon, и процессорам будущего поколения от Intel.

При существующих ограничениях и при имеющейся технологии упаковки, Hyper-Threading кажется более разумным выбором для потребительского рынка, чем, например, подход AMD в SledgeHammer – в этих процессорах используется целых два ядра. И до тех пор, пока не станут совершенными технологии упаковки, такие как Bumpless Build-Up Layer, стоимость разработки многоядерных процессоров может оказаться слишком высокой.

Интересно заметить, насколько разными стали AMD и Intel за последние несколько лет. Ведь когда-то AMD практически копировала процессоры Intel. Теперь же компании выработали принципиально иные подходы к будущим процессорам для серверов и рабочих станций. AMD на самом деле проделала очень длинный путь. И если в процессорах Sledge Hammer действительно будут использоваться два ядра, то по производительности такое решение будет эффективнее, чем Hyper-Threading. Ведь в этом случае кроме удвоения количества всех исполнительных устройств снимаются проблемы, которые мы описали выше.

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

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Тем, кому интересна данная тема, добро пожаловать под кат…

Итак, для начала давайте определимся, что такое SMT.

Как говорит нам википедия, SMT (от англ. simultaneous multithreading) это одновременная многопоточность, т.е. несколько потоков выполняются одновременно, а не последовательно, как это происходит во "временной многопоточности".

Для начала поговорим про временную многопоточность.

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

С появлением SMT ситуация становится чуть сложнее.

Представим конвейер и двух рабочих, у которых есть одна отвёртка и один гаечный ключ на двоих. При этом, каждый из них может оперировать либо только отвёрткой, либо только гаечным ключом. Один конвейер условно делится на две половинки вдоль. SMT позволяет сложить на такой конвейер сразу два числа, одно для работы с отвёрткой, а второе для работы с гаечным ключом, поэтому действия этих рабочих выглядят так:

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

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Исходя из этого, когда на конвейере находится операция (A и B) с одной стороны и (D и E) с другой стороны — всё отлично, но при распараллеливании цепочки вычислений могут получиться две проблемы:

1. С одной стороны конвейера оказалось действие (A и B) = С, а с другой (D и E) = C,

т.е. нужно записать сначала одно значение C, а потом второе значение C, но не одновременно (конфликт по управлению).

2. С одной стороны конвейера оказалось действие (A и B) = C, а с другой (A и C) = D,

т.е. нужно сначала посчитать C, а потом посчитать D, но не одновременно (конфликт по данным).

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

Предсказатель переходов, как понятно из названия, осуществляет предсказание :)

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

В свою очередь, кэш процессора, необходим для быстрого решения второй проблемы, когда мы останавливаем решение выражения (A и C) = D и пишем в кэш результат выполнения (A и B) = C, после чего сразу вычисляем (A и C) = D.

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

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Все эти пляски вокруг угадывания процессором того, как распараллелить текущие операции, приводят к серьёзным потерям энергии и к ощутимым фризам, когда происходит голодание разнотипных задач на ядрах с SMT.

Изображение из видео:

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Более точное изображение:

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Какой вывод можно здесь сделать и что улучшить?

Вместе с очевидными плюсами, SMT приносит фризы в чувствительные для времени выполнения задачи (воспроизведение видео/музыки или FPS в играх). Именно поэтому, многие геймеры наблюдают падение FPS при включенном SMT/Hyper-Threading. Так как же нам уменьшить эти минусы и не потерять плюсы SMT?

Вот тут как раз нам и поможет управление задачами в ОС.

Что такое SMT (Hyper-Threading) — плюсы и минусы Winperst, Windows performance Station, Оптимизация, Windows, AMD Ryzen, Hyper-Threading, Длиннопост

Большое спасибо всем, кто осилил данный текст :)

Мне кажется забыли такую важную составляющую: всё это работает, если с этим умеет работать софт. И дрова. Яркий пример - дисковод для дискет. Сейчас мало кто помнит, но если его подключить - он любой комп заморозит на время своей инициализации да так, что мышка двинуться не сможет! ))

Интересно, за что статью заминусовали.

Как было через жопу, так и осталось.


Невероятно!

Невероятно! Монахи, Долголетие, Бессмертие, Юмор, Пикабу

Тибетский монах был обнаружен в горах Непала. Он считается самым старым человеком на планете с возрастом в 201 год. Он находится в состоянии глубокого транса, или медитации, под названием "такатет".

Когда его обнаружили в пещере, спасатели сначала подумали, что это просто мумия.

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

Рядом с ним лежали его вещи. На одном из кусков бумаг было написано: "иди спать и хватит верить всему, что читаешь на Пикабу".

Баянометр молчал, извините если уже было :)


Само зло

Само зло Хабиб Нурмагомедов, Троллинг, Тролль, Facebook, Длиннопост

Современные методы работы с населением

Современные методы работы с населением

Мама - алиментщик, горе в семье

Мама - алиментщик, горе в семье Негатив, Алименты, Мама, Скриншот

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

Одну половину мы помыли Fairy.

Холл

Ответ на пост «Насчет мигрантов на стройках»

Ещё раз о мигрантах и т.н. "не желании наших граждан работать НА ТАКИХ РАБОТАХ за ТАКУЮ ЗАРПЛАТУ" (. )
Я, почему то, когда слышу выше приведённую отмазку наших предпринимателей и чиновников, всегда слышу другое. А именно "Мы не сможем так же навариваться и так же выжимать работников как сегодня, если это будут россияне. По этому гастарбайтеры нам выгоднее. " А как Вы думаете?

Воссоздание старых модельных фотографий своего отца

Цитата, которая просится в народ!


Счастье

Исповедовал


Зато без налога

Зато без налога Юмор, Скриншот, Twitter, Мат, Продажа авто

Искусственный интеллект ерунды не подскажет)


Долг полмиллиона в 19 лет

Привет, Пикабу!
Не знаю куда себя деть, поэтому хочу рассказать свою историю жизни вам, может быть надеясь на вашу помощь, ведь здесь явно есть люди, которые более опытные в сфере закона.

Мне 19 лет. И так в моей жизни вышло, что я будучи студентом уже имею долгов порядка полумиллиона рублей.
Это долг за неоплаченные коммунальные платежи квартиры, в которой я прописана. Началось это ещё за долго до моего совершеннолетия, родители мои не пьют, не употребляют, ведут адекватную жизнь, последние 5 лет официально они не работают (мама по состоянию здоровья, отец - не знаю) и на чем основывается прекращение оплаты за квартиру я тоже не знаю…
Из-за того, что квартира не приватизирована (квартиру эту выдавали еще родителями моего отца, они же и не хотели ее приватизировать, почему не знаю, умерли они 2012-13 годах, насколько помню, уже тогда перестали все оплачивать ком.платежи, что способствовало проблеме приватизации, так как квартиру можно приватизировать только если нет долга…) долг налагается на всех прописанных (папа, я, сестра и ее дочь, но не так давно она выписалась со своей несовершеннолетней дочерью (она также является нанимателем)).

Проблема долгов меня ещё начала беспокоить очень давно, примерно с возраста 14 лет точно.
До совершеннолетия я пыталась выписаться из квартиры к своим родственникам, чтобы избежать долга, но они, если мягко сказать, не согласились. Выбора куда вписаться у меня больше не было.
После совершеннолетия мне арестовали все мои карты, сначала это были не большие суммы в пределах 2-5 тысяч (но даже таких сумм я не имела, чтобы гасить долги, потому что живу я за свой счёт, а по большей части это только моя стипендия).
Чуть позже мне арестовали мою стипендиальную карту уже на 50т.р., взимая полную сумму стипендии ежемесячно (которая составляет 1006 рублей), чуть позже я начала получать стипендию на другую карту, до этого я, конечно, пыталась решить проблему арестов, но ничего не вышло, потому что к приставам попасть было просто невозможно.

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

На днях мне пришло постановление на гос.услуги о том, что с меня требуют 486,430 рублей за неоплаченные коммунальные платежи, которые я якобы должна добровольно оплатить в течение 5 дней. (Также на гос.услугах уже есть одно постановление на сумму 12400 тоже за неоплаченные ком.услуги. На сбере арестовано порядка 110тысяч рублей и на запсибе 47 тысяч рублей).

Я всю ночь не спала, читала как решить эту проблему и пока что вот, что у меня из этого вышло:
Долг на ноябрь 2021 составляет: 468 430,21р (по квитанции).

1. Коммунальщики могут требовать долг за три года, или 36 месяцев. (Порядок применения исковой давности: Исковая давность не может прерываться посредством бездействия должника (статья 203 ГК РФ). То обстоятельство, что должник не оспорил платежный документ о безакцептном списании денежных средств, возможность оспаривания которого допускается законом или договором, не свидетельствует о признании им долга.)

(Признание части долга, в том числе путем уплаты его части, не свидетельствует о признании долга в целом, если иное не оговорено должником.)

Я не знаю применяется ли в моём случае исковая давность, но по факту я никаких долгов не признавала.
Допустим,
4930*36=177,480 р. (Основной долг, сумма, конечно, не точная, потому что нет квитанций, но хотя бы приближенная)
468,430 - 177,480 = 290,950 р.— Этот долг не смогут взыскать через суд, в том числе пеню, которую на эту сумму начислили.
Соответственно, на настоящий момент долг на всех жильцов квартиры составляет 177,480р.
(Точную сумму можно узнать по старым квитанциям, которых у меня нет, да и у родителей тоже)

2. Нельзя взыскивать солидарно долги, возникшие до моего совершеннолетия. (ГК РФ Статья 21. Дееспособность гражданина; СК РФ Статья 64. Права и обязанности родителей по защите прав и интересов детей; СК РФ Статья 56. Право ребенка на защиту) По закону за несовершеннолетнего собственника ЖКУ должны оплачивать родители или другие законные представители, даже если они живут отдельно. Это значит, что я должна платить за ЖКУ только после того, как мне исполнилось 18 лет. (Если мне сейчас 19,8 лет, я должна заплатить только за 22 предыдущих месяца, а за 14 предыдущих — в пределах срока исковой давности — должны платить мои мать и отец.)

Соответственно, долг с момента моего совершеннолетия (март 2020 по ноябрь 2021) составляет на всех прописанных жителей 108,460р (сумма опять же не точная, а приближенная), следовательно, эта сумма делится на всех прописанных жителей квартиры:
108 460 : 4 = 27,115р. - составляет солидарный долг на каждого прописанного на период марта 2020г по ноябрь 2021г. (За этот период есть некоторые проблемы, например, то что сестра с дочерью выписались и из чего я не знаю как правильно высчитать солидарный долг, но он 100% не будет составлять больше 40тысяч)

3. Так как, я студент на очном отделении дневного обучения бюджетного финансирования(прилагается справка), я не имею возможности работать, чем является одна из причин, из чего следует, что у меня нет иных доходов, для обеспечения себя даже проживанием на прожиточной минимум, так как моя гос.стипендия составляет 1006,25р. (И иных доходов я не имею, родители меня ничем не снабжают. Одеваюсь, обуваюсь и тд я лично за свой счёт).

4. На основе вышеуказанного я хочу опротестовать постановление о возбуждении исполнительного производства, вынесенное в рамках исполнительного производства № 2*****/21/720**-ИП Причина: неоплаченные коммунальные платежи в соответствии с судебным приказом № 2-****2021/14/16м от 17.11.2021. Взыскатель: ООО УК "Юг", так как, на основе всех выше указанных причин, я считаю, что сумма штрафа является не верной и требуется отмене, либо перерасчету.

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

Также я хочу выписаться из квартиры, чтобы больше старые долги меня не беспокоили, потому что по закону они не мои, а от своих я не отказываюсь и готова решать проблему с ними в отличие от своей семьи!
Также до этого я думала объявить себя банкротом через МФЦ, но для начала нужно идти к приставам о прекращении этих постановлений.

Читайте также: