Память процессора... Как обратиться? Заполнить? Освободить?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Память процессора... Как обратиться? Заполнить? Освободить?

Сообщение vitaly_l » 30.05.2012 10:29:59

"Вчера" узнал, что в блоке - много разных видов памяти...
GetMem(SomeX, 1000000 * SizeOf(TSomeX)); - распределяет в оперативной памяти... Правильно?
Оперативная память - медленная... Есть КЭШ в процессоре...

    :arrow: Как заполнять память процессора???
    :arrow: Как освобождать память процессора???
    :arrow: Как процессор выбирает, что заложить в память процессора, а что оставить в оперативной памяти???
    :arrow: Как определять сколько уровней памяти у процессора???
    :arrow: Как определять объём памяти и свободной у процессора???
    :arrow: Что рентабельно, а что лучше априори в память процессора не грузить???
    :arrow: Можно ли обратиться к памяти каждого ядра в отдельности, если процессор многоядерный???

:!: PS - пожалуйста не отправляйте меня изучать историю создания всех процессоров Intel и AMD - у них, в описаниях, как правило: 1000 страниц воды на 1 единицу информации, а хочется 1 единицу информации без 1000 страниц воды...
:!: Нужны только голые рабочие функции и краткое пояснение, что они(функции) делают?
:idea: PS:PS: - любая полезная информация по теме грамотной работы с памятью - здесь востребована (даже если она с водой).


Заранее всем благодарен.
.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение Bupyc » 30.05.2012 11:20:52

Если я правильно понимаю, процессорный кэш недоступен для пользовательских задач и используется исключительно для внутренних нужд процессора. Т.е. доступ к нему Вы не получите никак (по крайней из процессов с пользовательскими привилегиями).
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 30.05.2012 11:26:29

Bupyc писал(а):Если я правильно понимаю, процессорный кэш недоступен для пользовательских задач и используется исключительно для внутренних нужд процессора. Т.е. доступ к нему Вы не получите никак (по крайней из процессов с пользовательскими привилегиями).

Спасибо: наидобрейший - мультиУважаемый Bupyc.

Однако, если Вирус внёс "вирус"(в смысле ложную информацию), то прошу его разоблачить... Антивирусы по информации есть??? :)

Потом, даже с утверждением Вируса("о невозможности обращения"), остаётся открытым вопрос:
:?: Как процессор выбирает, что заложить в память процессора, а что оставить в оперативной памяти???
По идее: Там(в процессоре), должны быть жёсткие правила и инструкции...



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vada » 30.05.2012 11:38:13

В процессоре есть своя программа (микрокод) одна из функций которой предсказание ветвлений. Вот она и решает какие области памяти команд и данных подгружать а какие выбрасывать из кеша.
А вообще все процессоры разные. У каждого производителя свои фишки шняжки. Каждый в конкурентной борьбе камней придумывает свои алгоритмы которые, как правило, быстрее и более правильные чем у конкурента. :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 30.05.2012 11:49:07

vada писал(а):есть своя программа (микрокод) одна из функций которой предсказание ветвлений

У неё(программы Х) очевидно есть приоритеты и инструкции...
Если под неё(программу Х) оптимизировать код, то можно предугадать, что сохранится в процессорной памяти, а что из неё будет удалено...

    :arrow: Как узнать: про приоритеты (программы Х) указанной мультиУважаемым vada???
    :arrow: Уверен таких приоритетов не больше 12-ти... Какие у (программы Х) инструкции???
    :arrow: Разные алгоритмы? Всё это туфта, суть всех алгоритмов едина... Решения разные, а суть приоритетов и инструкций должна быть одна у всех...

:idea: :arrow: Как правильно оптимизировать код, для грамотного использования памяти процессора?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vada » 30.05.2012 12:11:24

Это надо обращаться в Интел аль в АМД аль еще куда и документацию запрашивать... :wink:
А вообще, хорошие оптимизаторы кодагенераторов этой информацией владеют и стараются оптимизировать код с учетом фишек конкретных процессоров.
Честно говоря, для большинства задач это мало интересно. Ну получите вы ответ не за ноль целых фиг десятых секунда, а за ноль целых хрен десятых. Какая разница?
А вот когда у вас решается вопрос 100 суток цифирь гонять или 95... тут стоит пошевелиться.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 30.05.2012 12:25:19

vada писал(а):владеют и стараются оптимизировать код с учетом фишек конкретных процессоров.

Это логично...

Однако никто в intel и AMD не обращается... т.к. наверняка, есть изначальные безапелляционные правила и инструкции по оптимизации и т.д. единые для всех типов процессоров... И таких правил и инструкций, наберется не больше 12-ти...
Те кто решал такие задачи - сразу поймут: о чём я спрашиваю?...

Вопрос остаётся в силе:
:arrow: Как правильно оптимизировать код, именно: для грамотного использования памяти процессора?



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение GrayEddy » 30.05.2012 12:42:21

И так очевидно.
Use built-in assembler, Luck!
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение SAK » 30.05.2012 12:57:27

SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 30.05.2012 13:20:38

SAK писал(а):http://www.tdoc.ru/c/hardware/processor ... ure-1.html

Есть такое понятие как рерайтеры... люди которые поднимают ТИЦ итд собственных сайтов за счёт переписывания статей с набором ключевых слов... Для роботов яндекса итд - работает железно... А для получения знаний, рерайтинг нужно наказывать высшей мерой в УКРФ, а именно: пожизненным электрическим стулом. По ссылке, создатель статьи из 12 страниц, в самом начале говорит: есть единые инструкции для всех процессоров... И я с ним согласен... т.к. думаю идентично... Но потом он 12 страниц, скурпулёзно и дотошно - перечисляет ХАРАКТЕРИСТИКИ всех процессоров на планете... И естественно из любого поиска - попадают на его страницу и он поднимается в рейтинге поисковиков... Но знаний - там нет, т.к. это страница для повышения ТИЦ... Единственное спасение от рерайтеров - это форум, в котором участвуют те кто понимает, о чём говорит и пишет... Там 12 страниц воды...

Суть всегда умещается в нескольких коротких и ясных предложениях или фразах.

GrayEddy писал(а): assembler, Luck!

И Вам тоже Luck!

Однако: Если я... ===> ненавижу assembler.
И хочу пользоваться языком высокого уровня, а конкретно Паскалем и компилятором Лазарус + FPC...


Вопросы остаются в силе:
:idea: :| Как правильно оптимизировать код, в Лазарус, именно: для грамотного использования памяти процессора?
:arrow: :cry: Или таких правил и инструкций вообще не предусмотрено???
:idea: :!: :arrow: Но должны же быть какие-то наработки???



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение SAK » 30.05.2012 13:40:59

В этом случае вообще не надо влезать в процессы
vitaly_l писал(а):Есть такое понятие как рерайтеры... люди которые поднимают ТИЦ итд собственных сайтов за счёт переписывания статей с набором ключевых слов...

Я там адрес поправил на IXBT.

vitaly_l писал(а):По ссылке, создатель статьи из 12 страниц, в самом начале говорит: есть единые инструкции для всех процессоров...

И что бы воспользоваться инструкциями по оптимизации надо для начала понимать как это работает.

vitaly_l писал(а):Однако: Если я... ===> ненавижу assembler.И хочу пользоваться языком высокого уровня, а конкретно Паскалем и компилятором Лазарус + FPC...

Всё будет работать быстрее и главное надёжнее если Вы не будете влезать в алгоритм работы самого процессора.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 30.05.2012 13:51:35

SAK писал(а):Всё будет работать быстрее и главное надёжнее если Вы не будете влезать в алгоритм работы самого процессора.

Уверен: Вы - правы! Я и не хочу лезть в алгоритмы процессора... Я хочу знать: нюансы, инструкции и рекомендации - которые позволяют оптимизировать код, до максимально - удобочитаемого для памяти процессора...

В частности хочу понять:
:arrow: Как и чем организованы идеи распределения памяти процессора???
:arrow: Как он определяет что сохранить в памяти для повторного использования а что удалить???
:arrow: Как правильно оптимизировать код, в Лазарус, именно: для грамотного использования памяти процессора?

Такие: секреты, наработки и знания, есть у каждого программиста... Если правила соблюдать или их придерживаться, то будет работать быстрее...
Вот это я и хочу получить...





.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение GrayEddy » 30.05.2012 14:26:10

Что у вас за задача, которая требует сверхсветовых скоростей? Не драйверы же писать.
Берете любой компилятор с хорошим оптимизатором. Последний сделает за вас работу.
Или смотрите исходники FPC, и ищите файлы с кодом оптимизатора (-O1, -O2, -O3 etc). Опять же, все упирается в платформу и проц и модель. Универсального решения нет.

http://www.freepascal.ru/article/raznoe/20110816221600/ хорошая статья, человек на несколько порядков разогнал свой код.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение kipar » 30.05.2012 14:28:40

vitaly_l писал(а):Как и чем организованы идеи распределения памяти процессора??? Как он определяет что сохранить в памяти для повторного использования а что удалить???

Я с этой оптимизацией понаслышке знаком, но идея такая:
Процессор заносит информацию в кеш "страницами". Т.е. в кеше может быть скажем 256 страниц по 16Кб. Если происходит обращение к памяти не входящей в эти 256*16Кб, то самая давно не использованная страница выгружается, вместо нее загружается новая.
Поэтому чтобы лучше использовать кеш, надо работать на каждом этапе с небольшим куском памяти, чтобы не происходило лишних перегрузок кеша. Например, если надо перемножить две большие матрицы, то лучше разбить их (одну на "полоски", другую на "столбики"), так чтобы каждый кусок влезал в кеш.

А по ссылке речь идет о кеше инструкций, в него, согласен, лучше не лезть - этим пусть компилятор занимается.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54


След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 252

Рейтинг@Mail.ru
cron