Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>На процессорах устанавливают десятки мегабайт кеш-памяти третьего уровня.
ЭФ>Почему бы им не выделить часть этой памяти, скажем 20%, в личное управление компилятора?
ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.
ЭФ>Нелогично.
ЭФ>80% памяти в процессоре останутся кешем! Производительность не пострадает (правило 80/20).
1) Раньше так делали. Сейчас перестали.
Первая проблема, с которой ты столкнёшься — как поделить эту память с другими процессами?
2) Команды прямого управления кэшем в современных процессорах есть.
3) В большинстве случаев автоматический кэш работает лучше, чем ручное управление.
Течёт вода Кубань-реки куда велят большевики.
Re[2]: Почему к регистрам доступ дают, а к памяти на процесс
A>1) Раньше так делали. Сейчас перестали.
Где делали? A>2) Команды прямого управления кэшем в современных процессорах есть.
А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.
Получился бы совсем минималистичный nedo-pc: только процессор, на который заведено питание, и несколько выводов используется для программной симуляции USB и HDMI.
Здравствуйте, Osaka, Вы писали:
A>>1) Раньше так делали. Сейчас перестали. O>Где делали?
На VAX-ах.
A>>2) Команды прямого управления кэшем в современных процессорах есть. O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша. O>Получился бы совсем минималистичный nedo-pc: только процессор, на который заведено питание, и несколько выводов используется для программной симуляции USB и HDMI.
Ну, есть такая штука, как "система на кристалле".
Правда, там данные впихнуты не в кэш, а просто кристалл содержит некоторое небольшое количество памяти.
Течёт вода Кубань-реки куда велят большевики.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.
Подозреваю, что с точки зрения изготовителей слишком жирно будет для потребителя.
Помимо прочего ведь сейчас компьютер много чего прячет от своего владельца и получение им доступа, например, к Intel SGX воспринимается как уязвимость, которую надо фиксить. Часть биоса вообще зашифрована и приняты меры, чтобы хозяину расшифровать нельзя было и т.п. А ты доступ к кэшу...
Современный x86 вообще уже давно не совсем настоящий, скорее интерпретатор поверх ядра, к которому точно нет никакого доступа.
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
Здравствуйте, Osaka, Вы писали:
A>>1) Раньше так делали. Сейчас перестали. O>Где делали?
На процессоре на основе ARM видел. Встроенную прямо в кристал процессора SRAM можно
было использовать или как память или как то ли L2, то ли L1 кэш. Совместного режима правда не было,
или так или так.
A>>2) Команды прямого управления кэшем в современных процессорах есть. O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.
Ну ARM процессоры можно. Там например NOR flash можно использовать как readonly память, откуда процессор будет
брать код для исполнения и никакой записываемой памяти кроме регистров.
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.
Регистрами тоже нельзя управлять. Например, у Skylake
180 целочисленных физических регистров и 168 физических FP регистров, но доступа к ним нет, а есть только к архитектурным 16 регистрам целочисленным и к 32 векторным.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
Здравствуйте, Osaka, Вы писали:
A>>1) Раньше так делали. Сейчас перестали. O>Где делали?
В PentiumPro были средства управления (публично не документировались).
A>>2) Команды прямого управления кэшем в современных процессорах есть. O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.
В период начиная от P2 и до Intel ME — BIOS использовала кэш для временной эмуляции оперативной памяти для своего старта.
Может работать и сейчас, только надо как-то логику в ME отрубить нахрен.
O>Получился бы совсем минималистичный nedo-pc: только процессор, на который заведено питание, и несколько выводов используется для программной симуляции USB и HDMI.
X86 — не пойдёт. Нужен как минимум южный мост, даже если предельно урезанный.
В HPC использовались варианты, когда даже BIOS доступна через PCI-E-over-Infiniband.
The God is real, unless declared integer.
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
Здравствуйте, Osaka, Вы писали:
A>>2) Команды прямого управления кэшем в современных процессорах есть. O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.
Любой компьютер запускается без RAM. Оперативная память инициализируется и становится доступна поздней. В целом ничего не мешает её не инициализировать и продолжить работу без неё, если написать специальную ОС.
Re[4]: Почему к регистрам доступ дают, а к памяти на процесс
N>В период начиная от P2 и до Intel ME — BIOS использовала кэш для временной эмуляции оперативной памяти для своего старта. N>Может работать и сейчас, только надо как-то логику в ME отрубить нахрен.
А вот тут https://habr.com/ru/company/dsec/blog/282546/ пишут всякие страсти, что новые процессоры неработоспособны без управления встроенным в чипсет секретным независимым компом от АНБ.
1. Вырезать (обнулить) ME регион из SPI флэш-памяти.
Те, кто пробовал так делать сообщают о том, что их платформа либо не загружалась без наличия подлинной прошивки ME, либо выключалась ровно после 30 минут работы.
Отказ компьютерной системы грузиться без прошивки Intel ME можно объяснить важностью ME-контроллера в процессе инициализации аппаратной составляющей. А 30-минутный таймаут наводит на мысль о WDT (Watch Dog Timer).
Здравствуйте, Osaka, Вы писали:
N>>В период начиная от P2 и до Intel ME — BIOS использовала кэш для временной эмуляции оперативной памяти для своего старта. N>>Может работать и сейчас, только надо как-то логику в ME отрубить нахрен. O>А вот тут https://habr.com/ru/company/dsec/blog/282546/ пишут всякие страсти, что новые процессоры неработоспособны без управления встроенным в чипсет секретным независимым компом от АНБ.
Вполне верю. Тут не обязательно АНБ, просто логика в том, что если вообще ME способна делать чудеса типа удалённого включения-выключения, то инициализацию перед стартом процессора и всё такое, включая детект оперативной памяти — волей-неволей придётся внести туда. Значит, дублировать не надо.
Поэтому с момента появления таких реализаций туда в южный мост перенесена вся логика, которая при подаче питания детектирует: оперативу, устройства (какие из них должны быть активны в базовом выключенном режиме — например, для Wake-on-LAN), собирает эти данные и ждёт сигнала на включение. Когда приходит команда включаться и стартует основной процессор, он получает уже готовые данные об аппаратной конфигурации.
И АНБ не первопричина. Первопричина — корпорации, которые могут выставлять произвольные хитрые требования к своему железу — а корпорации, в среднем, хранят секреты местами получше государственных спецслужб (потому что коммерческий интерес сильнее моральных страданий о деньгах налогоплательщиков). АНБ с компанией получает уже готовые решения, хотя да, может использовать их более творчески
O>
1. Вырезать (обнулить) ME регион из SPI флэш-памяти.
O>Те, кто пробовал так делать сообщают о том, что их платформа либо не загружалась без наличия подлинной прошивки ME, либо выключалась ровно после 30 минут работы.
O>Отказ компьютерной системы грузиться без прошивки Intel ME можно объяснить важностью ME-контроллера в процессе инициализации аппаратной составляющей. А 30-минутный таймаут наводит на мысль о WDT (Watch Dog Timer).
Первое — да, в той части BIOS, что исполняется обычным процессором, может уже не быть нужной функциональности. Второе — не знаю, мне время в 30 минут кажется чудовищно завышенным. Нормальный watchdog сработал бы, я думаю, быстрее
The God is real, unless declared integer.
Re[2]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
Здравствуйте, Codealot, Вы писали:
A>>Первая проблема, с которой ты столкнёшься — как поделить эту память с другими процессами?
C>Никогда не слышал про выделение блоков памяти?
Я это непосредственно реализовывал в рамках ядра linux.
Могу рассказать, насколько это тяжёлая операция.
И почему избавление от неё иногда ускоряет программу в разы.
A>>2) Команды прямого управления кэшем в современных процессорах есть.
C>prefetch / flush в лучшем случае.
Это именно то, что надо.
Течёт вода Кубань-реки куда велят большевики.
Re[4]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
Здравствуйте, alpha21264, Вы писали:
A>Я это непосредственно реализовывал в рамках ядра linux. A>Могу рассказать, насколько это тяжёлая операция. A>И почему избавление от неё иногда ускоряет программу в разы.
Если вызывается очень часто, то может быть. Но делать так очевидно неправильно.
Ну или вопрос радиуса кривизны.
A>Это именно то, что надо.
Вообще не то, о чем был вопрос.
Ад пуст, все бесы здесь.
Re[5]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
Здравствуйте, Codealot, Вы писали:
A>>Я это непосредственно реализовывал в рамках ядра linux. A>>Могу рассказать, насколько это тяжёлая операция. A>>И почему избавление от неё иногда ускоряет программу в разы.
C>Если вызывается очень часто, то может быть. Но делать так очевидно неправильно. C>Ну или вопрос радиуса кривизны.
A>>Это именно то, что надо.
C>Вообще не то, о чем был вопрос.
Вопрос именно об этом. Давай для начала ты напишешь,
1) как и за счёт чего будет происходить выигрыш в предполагаемой системе
(по сравнению с системами, где уже есть prefetch/flush)
Превысит ли этот выигрыш 1%.
2) как ты собираешься делить этот ресурс с другими процессами.
Течёт вода Кубань-реки куда велят большевики.
Re[2]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
Здравствуйте, alpha21264, Вы писали:
A>Вопрос именно об этом. Давай для начала ты напишешь, A>1) как и за счёт чего будет происходить выигрыш в предполагаемой системе A>(по сравнению с системами, где уже есть prefetch/flush) A>Превысит ли этот выигрыш 1%.
Этот вопрос мы может быть рассмотрим, но чуть позже.
A>2) как ты собираешься делить этот ресурс с другими процессами.
... потому что ты задаешь настолько нелепые вопросы, что я удивляюсь. Точно так же, как это делается с основной памятью — запросил блок памяти и получил, или получил ошибку. Ты не в курсе, как это делается?
Ад пуст, все бесы здесь.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?