Обновить
4
Сергей Семёнов@ion2

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

2
Подписчики
Отправить сообщение
Ага. Уже разобрался. Это особенность двух близких микроархитектур Sandy Bridge и Ivy Bridge в отличие от исключения при установленном бите cr0.ts, которое всегда работает. Кроме того компиляторы стараются защитить программистов от выстрела в ногу и не генерируют sse и avx код в одном объектном файле.
А при чём здесь AVX? Первоначально речь шла о movaps которая к AVX не относится. Это команда SSE. А внутренняя кухня процессора при использовании разных наборов команд дело тёмное. Откуда эта информация про теневое копирование? И для чего? Регистры ymm удваивают xmm и совпадают по формату. Это же не альяс fpu/mmx.
Я один из разработчиков ОС Колибри и как раз делал переключение контекста fpu/sse. Поэтому знаю как всё работает. Обычно применяют отложенное переключение контекста. При установленном в 1 бите TS регистра cr0 первая команда сопроцессора вызывает исключение 7(#NM). Ядро сбрасывает бит TS и производит переключение контекста сопроцессора. Поэтому сложно сказать сколько тактов на самом деле займёт команда. На мой взгляд применять simd нет смысла, если объём данных меньше пары килобайт. С учётом длинных регистров avx планка ещё выше. В принципе ядро может отслеживать количество исключений для каждого процесса, и если сопроцессор активно используется переключать контекст сразу. Не знаю, используется такая схема или нет.
Портирована Mesa 9.2.5. Это адаптеры Intel поколений Gen3-Gen7. Новые версии Mesa требуют pthreads, которая пока не готова. libva версии 1.6.2.
Поддерживаются динамические библиотеки в формате PE DLL. Портированных пока немного, минимальный набор для работы с графикой и текстом.
Переключение контекста при исключении #NM выполняет операционная система. Это не 70 тактов.
Это если movaps не потребует переключения контекста SSE. Или его теперь принудительно меняют при переключении на другой процесс?
Потеря индекса не критична. Для моего адреса КЛАДР упорно даёт неверный индекс, 440 отделение вместо 445. Почте это не мешает.
Сделать специальный конус и стыковаться в сопло отказавшего двигателя. Там сопло с большим удлинением, значит будет надёжный контакт и упрощается центрирование всей конструкции по вектору тяги. Понадобится подсветка, камеры и софт для распознавания видео.
Они просто не позволяет в библиотеке быть игре с неработающей защитой.
Не уверен. У меня стоит несколько копий стимовской Kerbal Space Program разных версий и с разным набором модов. Замечательно запускаются без загрузки стима. Защита тат явно отсутствует.
Смех смехом, но все легкодоступные месторождения меди и олова давно исчерпаны. Если человечество откатится в каменный век, нового бронзового века уже не будет.
Когда начинали разрабатывать Арес никто и не помышлял, что появятся частники со своими ракетами. А теперь с одной стороны, потратив гигантские средства разработчики вышли на финишную прямую, а с другой появляется дешёвая альтернатива. В НАСА уже нет единства. Одни хотят доделать носитель, а потом выбивать под него программы. Другие считают, что на эти деньги можно было половину солнечной системы исследовать.
Как бы SLS не постигла судьба предшественников, когда полетит Falcon Heavy.
Врёт, как дышит. Выдавать pressure-fed LMDE с тягой в 44КН за Мерлин 1D с тягой в 740КН может или полный идиот, или сознательный лжец.
Да. Баллон с гелием под давлением в 10.7 МPa. Наддув применялся для двигателей с не очень высокой тягой, примерно до 100КН. А у третьего блока P7 тяга 270КН.
Интересно, американцы активно применяли твёрдотопливные двигатели на последних ступенях из-за простоты их запуска.
Водопроводчики-сантехники и ассенизаторы и сейчас неплохо зарабатывают. Не стоит думать, что они занимаются этим, чтобы не умереть с голоду. Есть не брезгливые люди, готовые на грязную работу за хорошее вознаграждение.
После отключения двигателей перед разделением ступеней топливо в баках взбалтывается и в трубопроводах могут возникнуть газовые пробки. Это приведёт к срыву потока на турбокомпрессоре и двигатель не запустится. Американцы для осаждения топлива применяли небольшие твёрдотопливные ускорители а наши запускают двигатели до отделения ступени.
TLB ( translation lookaside buffer) или всё же таблицы страниц? Первое — часть процессора и к ошибкам в модулях памяти отношения не имеет.
Маск сказал, что вероятность успеха мала. Это не значит, что попытка не интересна.
могу предположить, что если кто-то ждёт нашего запертого спинлока, то ядро переводит страницу со спинлоком в r/o и по пейджфолту выясняет, когда мы его отпираем
Это слишком сурово. Фьютекс усыпляет поток, пока значение блокировки равно проверяемому значению. У мьютекса три состояния: 0 — свободен, 1 — захвачен одним потоком, 2 — захвачен и есть ожидающие потоки.
<code class="cpp">mutex_lock(mutex *lock)
{
//увеличиваем блокировку на 1 и проверяем предыдущее значение
//если был 0, то теперь там 1 и поток успешно захватил мьютекс
    if(xchg_add(&lock,1) == 0)
        return;
//ядро приостановит поток пока lock равен 2
    while(xchg(&lock, 2) != 0)
        syscall_futex(&lock, 2);
}
В идеальном случае lock равен 0 и захват обойдётся в одну операцию xchg_add (xadd для x86)  

mutex_unlock(mutex *lock)
{
    if(xchg(&lock, 0) != 1)
    {
//есть ожидающие потоки
//разбудим один
        syscall_futex_wake(&lock,1);     
    }
}
Аналогично, если нет ожидающих потоков lock равен 1 и освобождение происходит за одну операцию xchg,
в противном случае вызывается FUTEX_WAKE </code>

Информация

В рейтинге
5 901-й
Откуда
Россия
Зарегистрирован
Активность