Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 21.03.23 17:02
Оценка: 5 (1) -1 :))) :))
На процессорах устанавливают десятки мегабайт кеш-памяти третьего уровня.

Почему бы им не выделить часть этой памяти, скажем 20%, в личное управление компилятора?

Регистрами управлять можно явно, а памятью на процессоре почему-то нет.

Нелогично.

80% памяти в процессоре останутся кешем! Производительность не пострадает (правило 80/20).
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: alpha21264 СССР  
Дата: 21.03.23 17:09
Оценка: 4 (1) +4
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>На процессорах устанавливают десятки мегабайт кеш-памяти третьего уровня.


ЭФ>Почему бы им не выделить часть этой памяти, скажем 20%, в личное управление компилятора?


ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.


ЭФ>Нелогично.


ЭФ>80% памяти в процессоре останутся кешем! Производительность не пострадает (правило 80/20).


1) Раньше так делали. Сейчас перестали.
Первая проблема, с которой ты столкнёшься — как поделить эту память с другими процессами?

2) Команды прямого управления кэшем в современных процессорах есть.

3) В большинстве случаев автоматический кэш работает лучше, чем ручное управление.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Почему к регистрам доступ дают, а к памяти на процесс
От: Osaka  
Дата: 21.03.23 17:21
Оценка:
A>1) Раньше так делали. Сейчас перестали.
Где делали?
A>2) Команды прямого управления кэшем в современных процессорах есть.
А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.

Получился бы совсем минималистичный nedo-pc: только процессор, на который заведено питание, и несколько выводов используется для программной симуляции USB и HDMI.
Отредактировано 21.03.2023 17:28 Osaka . Предыдущая версия .
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
От: alpha21264 СССР  
Дата: 21.03.23 17:40
Оценка:
Здравствуйте, Osaka, Вы писали:

A>>1) Раньше так делали. Сейчас перестали.

O>Где делали?

На VAX-ах.

A>>2) Команды прямого управления кэшем в современных процессорах есть.

O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.
O>Получился бы совсем минималистичный nedo-pc: только процессор, на который заведено питание, и несколько выводов используется для программной симуляции USB и HDMI.

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

Течёт вода Кубань-реки куда велят большевики.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Michael7 Россия  
Дата: 21.03.23 19:26
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.


Подозреваю, что с точки зрения изготовителей слишком жирно будет для потребителя.
Помимо прочего ведь сейчас компьютер много чего прячет от своего владельца и получение им доступа, например, к Intel SGX воспринимается как уязвимость, которую надо фиксить. Часть биоса вообще зашифрована и приняты меры, чтобы хозяину расшифровать нельзя было и т.п. А ты доступ к кэшу...
Современный x86 вообще уже давно не совсем настоящий, скорее интерпретатор поверх ядра, к которому точно нет никакого доступа.
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
От: Zhendos  
Дата: 21.03.23 21:03
Оценка:
Здравствуйте, Osaka, Вы писали:

A>>1) Раньше так делали. Сейчас перестали.

O>Где делали?

На процессоре на основе ARM видел. Встроенную прямо в кристал процессора SRAM можно
было использовать или как память или как то ли L2, то ли L1 кэш. Совместного режима правда не было,
или так или так.

A>>2) Команды прямого управления кэшем в современных процессорах есть.

O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.

Ну ARM процессоры можно. Там например NOR flash можно использовать как readonly память, откуда процессор будет
брать код для исполнения и никакой записываемой памяти кроме регистров.
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
От: aik Австралия  
Дата: 21.03.23 23:49
Оценка:
Здравствуйте, Osaka, Вы писали:

O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.


Так вроде биос так и работает — из кэша, пока память не найдет/натренирует.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: romangr Россия  
Дата: 22.03.23 05:57
Оценка: 1 (1) +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Регистрами управлять можно явно, а памятью на процессоре почему-то нет.


Регистрами тоже нельзя управлять. Например, у Skylake
180 целочисленных физических регистров и 168 физических FP регистров, но доступа к ним нет, а есть только к архитектурным 16 регистрам целочисленным и к 32 векторным.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: Почему к регистрам доступ дают, а к памяти на процесс
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 22.03.23 06:43
Оценка: 18 (4)
Здравствуйте, 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]: Почему к регистрам доступ дают, а к памяти на процесс
От: vsb Казахстан  
Дата: 22.03.23 07:02
Оценка:
Здравствуйте, Osaka, Вы писали:

A>>2) Команды прямого управления кэшем в современных процессорах есть.

O>А можно вообще без RAM запустить комп? Windows 2000 (и даже XP) шла и на меньшем кол-ве RAM, чем теперь бывает кэша.

Любой компьютер запускается без RAM. Оперативная память инициализируется и становится доступна поздней. В целом ничего не мешает её не инициализировать и продолжить работу без неё, если написать специальную ОС.
Re[4]: Почему к регистрам доступ дают, а к памяти на процесс
От: Osaka  
Дата: 22.03.23 21:41
Оценка:
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).

Отредактировано 22.03.2023 21:52 Osaka . Предыдущая версия .
Re[5]: Почему к регистрам доступ дают, а к памяти на процесс
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 23.03.23 14:13
Оценка: +1
Здравствуйте, 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 Земля  
Дата: 25.04.23 16:20
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Первая проблема, с которой ты столкнёшься — как поделить эту память с другими процессами?


Никогда не слышал про выделение блоков памяти?

A>2) Команды прямого управления кэшем в современных процессорах есть.


prefetch / flush в лучшем случае.
Ад пуст, все бесы здесь.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Muxa  
Дата: 25.04.23 19:31
Оценка:
Пиши под графические процессоры. Там дают.
Re[3]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: alpha21264 СССР  
Дата: 25.04.23 19:37
Оценка:
Здравствуйте, Codealot, Вы писали:

A>>Первая проблема, с которой ты столкнёшься — как поделить эту память с другими процессами?


C>Никогда не слышал про выделение блоков памяти?


Я это непосредственно реализовывал в рамках ядра linux.
Могу рассказать, насколько это тяжёлая операция.
И почему избавление от неё иногда ускоряет программу в разы.

A>>2) Команды прямого управления кэшем в современных процессорах есть.


C>prefetch / flush в лучшем случае.


Это именно то, что надо.

Течёт вода Кубань-реки куда велят большевики.
Re[4]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Codealot Земля  
Дата: 25.04.23 19:41
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Я это непосредственно реализовывал в рамках ядра linux.

A>Могу рассказать, насколько это тяжёлая операция.
A>И почему избавление от неё иногда ускоряет программу в разы.

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

A>Это именно то, что надо.


Вообще не то, о чем был вопрос.
Ад пуст, все бесы здесь.
Re[5]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: alpha21264 СССР  
Дата: 25.04.23 21:09
Оценка:
Здравствуйте, Codealot, Вы писали:

A>>Я это непосредственно реализовывал в рамках ядра linux.

A>>Могу рассказать, насколько это тяжёлая операция.
A>>И почему избавление от неё иногда ускоряет программу в разы.

C>Если вызывается очень часто, то может быть. Но делать так очевидно неправильно.

C>Ну или вопрос радиуса кривизны.

A>>Это именно то, что надо.


C>Вообще не то, о чем был вопрос.


Вопрос именно об этом. Давай для начала ты напишешь,
1) как и за счёт чего будет происходить выигрыш в предполагаемой системе
(по сравнению с системами, где уже есть prefetch/flush)
Превысит ли этот выигрыш 1%.
2) как ты собираешься делить этот ресурс с другими процессами.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 25.04.23 21:54
Оценка: :)
M> Пиши под графические процессоры. Там дают.

Как только появится российский графический процессор с общедоступной документацией, так сразу и начну.
Re[6]: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Codealot Земля  
Дата: 25.04.23 22:47
Оценка: -2
Здравствуйте, alpha21264, Вы писали:

A>Вопрос именно об этом. Давай для начала ты напишешь,

A>1) как и за счёт чего будет происходить выигрыш в предполагаемой системе
A>(по сравнению с системами, где уже есть prefetch/flush)
A>Превысит ли этот выигрыш 1%.

Этот вопрос мы может быть рассмотрим, но чуть позже.

A>2) как ты собираешься делить этот ресурс с другими процессами.


... потому что ты задаешь настолько нелепые вопросы, что я удивляюсь. Точно так же, как это делается с основной памятью — запросил блок памяти и получил, или получил ошибку. Ты не в курсе, как это делается?
Ад пуст, все бесы здесь.
Re: Почему к регистрам доступ дают, а к памяти на процессоре - нет?
От: Codealot Земля  
Дата: 25.04.23 22:48
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Почему бы им не выделить часть этой памяти, скажем 20%, в личное управление компилятора?


На высокоскоростных пепяках типа FPGA так и делается.
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.