↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Marlagram Онлайн
24 января 2021
Aa Aa
Актуальная продукция Apple далека от сферы моих интересов. Но некоторые особенности пресловутого M1...
Robᵉʳᵗ Graham, provocateur @ErrataRob · 26 нояб. 2020 г.
1/ In case you were wondering: Apple's replacement for Intel processors turns out to work really, really well. Some otherwise skeptical techies are calling it "black magic". It runs Intel code extraordinarily well.

2/ The basic reason is that Arm and Intel architectures have converged. Yes, the instruction sets are different, but the underlying architectural issues have become very similar.

3/ The biggest hurdle was "memory-ordering", the order in which two CPUs see modifications in memory by each other. It's the biggest problem affecting Microsoft's emulation of x86 on their Arm-based "Surface" laptops.

4/ So Apple simply cheated. They added Intel's memory-ordering to their CPU. When running translated x86 code, they switch the mode of the CPU to conform to Intel's memory ordering.
см
...
Оказывается, не только компиляторы любят переставлять инструкции чтения и записи. Процессоры тоже любят это делать. Не нужно путать это с out-of-order исполнением, всегда незаметным для вашего кода, к тому же на самом деле есть in-order процессоры, которые меняют порядок чтения/записи (Xbox 360), и есть out-of-order процессоры, которые в большинстве случаев не меняют местами чтение и запись (x86/x64).

Таким образом, если вы объявите все четыре переменные как volatile, вы получите код, который будет правильно исполняться только на x86/x64. И этот код потенциально неэффективен, потому что при оптимизации нельзя будет удалить никакие операции чтения/записи этих переменных, а это может привести к лишней работе
...
Проблема в том, что этот код не будет работать на процессорах со слабой моделью памяти. «Слабая модель памяти» означает, что процессоры могут переставлять инструкции чтения и записи (для большей эффективности или простоты реализации). К таким процессорам относятся, например, процессоры с архитектурами: ARM, PowerPC, MIPS и практически все используемые сейчас процессоры, кроме x86/x64. Эту проблему решает тот же барьер памяти, но на этот раз это должна быть инструкция процессора, которая сообщает ему, что менять порядок не нужно.
...
см

Всё-таки многопоточное программирование на разном железе - та ещё головоломка...

#заклёпки #хабр
24 января 2021
2 комментария
поэтому до сих пор полезна Java, особенно в серверном сегменте
> 4/ So Apple simply cheated. They added Intel's memory-ordering to their CPU. When running translated x86 code, they switch the mode of the CPU to conform to Intel's memory ordering.

И тут я заорал чаечкой.
Скопирую, утащу, вброшу в очередной risc-срач
ПОИСК
ФАНФИКОВ











Закрыть
Закрыть
Закрыть