Feb. 21st, 2020

иде я?

Feb. 21st, 2020 09:54 am
sab123: (Default)
Давеча читая Эрика Рэймонда http://esr.ibiblio.org/?p=8223 про ограничения параллельных вычислений, пришло мне в голову, что эти ограничения можно было бы уменьшить, если сделать взаимодействие между тредами более дешевым. Обычно чтобы пробудить спящий тред, надо пройти весь путь до ядра, который потом пробудит другой процессор, тот зашедулит тред, потом начнут нагреваться кэши. Одним словом, гемор. А вот ежели бы другой тред мог молча спать в пользовательском режиме, то пробуждение будет гораздо дешевле. Более того, оказывается, что у Интела уже есть инструкции для засыпания и меж-процессорных сигналов в пользовательском режиме. Так что все, что для этого надо - шедулить треды всей кучей, даже если некоторым из них нечего делать. И можно будет пользоваться всеми радостями дешевых коммуникаций прямо в пользовательском режиме, вплоть до спинлоков. Благо, что нынче на десктопе обычно есть масса простаивающих процессоров.

В-принципе, глядя с другой стороны, это то, что гипервизоры уже делают для шедулинга процессоров виртуальных машин, потому что там ядро ОС в вирмуальной машине уже ожидает таких возможностей. А если посмотреть с третьей стороны, этот подход относится к суперскалярности как RISC к CISC - аналогичный эффект, достигаемый не микропрограммированием внутри процессора, а собираемый на софтовом уровне из отдельынх инструкций. В чем-то типа того, что пытались сделать в Итаниуме, но без дебильных ограничений.

Толку из этого, правда, пока извлечь не удалось. Но вот хотя бы опубликовали: https://www.tdcommons.org/dpubs_series/2896/

December 2025

S M T W T F S
 1 23456
78 91011 1213
141516 17 18 1920
21 22 2324 252627
28 293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 12:39 am
Powered by Dreamwidth Studios