|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.04.2018, 17:12 | #1 |
Пользователь
Регистрация: 26.03.2018
Сообщений: 18
|
команды ассемблера для работы с кешем процессора
Здравствуйте!
подскажите пожалуйста какие возможности есть в ассемблере для работы с кеш памятью процессора разного уровня. также какие есть возможности и утилиты чтобы узнать обем кеш памяти и ее быстродействие. Спасибо |
22.04.2018, 20:16 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume 2 (2A, 2B, 2C & 2D): Instruction Set Reference, A-Z
Нашедшего выход - затаптывают первым..
|
22.04.2018, 20:20 | #3 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
кэш работает на аппаратном уровне и программисту не доступен.
поэтому всё-что ты можешь - это только очистить его, чтобы поддержать когерентность, когда вносишь какие-нибудь изменения в системные структуры.
Нашедшего выход - затаптывают первым..
|
23.04.2018, 13:41 | #4 |
Пользователь
Регистрация: 26.03.2018
Сообщений: 18
|
спасибо печально что не доступен
|
23.04.2018, 21:05 | #5 |
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Можно ещё сделать предварительную загрузку памяти в кэш (prefetchXX) или выполнить какие-то операции минуя кэш (movntXX).
Очистка кэша (wbinvd, invd) доступна только из CPL0.
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
24.04.2018, 15:01 | #6 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Инженерам Intel конечно-же виднее, но на мой взгляд они добавили эту инструкцию чисто для кол-ва, и толку от неё никакого. Какой смысл предварительно загружать строку данных в кэш?
Сейчас, в большинстве систем, алгоритмом замещения данных в кэш является LRU - Least Recently Used, что переводится как "Вытеснение давно неиспользуемых". У каждой/64-битной кэш-строки имеется бит-возраста, который проверяется кэш-контроллёром для очистки строк. Теперь, если использовать "Prefetch" заранее, то пока EIP дойдёт до этих данных, процессор уже давно может избавится от них, и программе придётся опять загружать их по-новой. Смысл? ..а он в том, что чем больше инструкций поддерживает ЦП, тем он считается круче, и за него можно выручить по-больше (у)битых (е)нотов. И таких инструкций в процессоре хоть пруд-пруди - от них не холодно, не жарко.
Нашедшего выход - затаптывают первым..
|
24.04.2018, 15:03 | #7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Если префетч делать не на старте программы, а перед циклом, то вполне себе остается.
|
24.04.2018, 16:14 | #8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Как по мне в этой команде нет смысла.
Мои предположения: 1. AMD попросила добавить эту команду. AMD долгое время не использовал спекулятивное исполнение(опережающее) Поэтому данная команда при копирование больших блоков давала прирост. У них даже код в гуиде по оптимизации был приведён. Более того это подогревало интерес к NUMA. При больших объемах копирования Prefetch здорово ускорял. Правда кому надо копировать гигабайты? 2. Для отладки процессора. - так себе теория. Так как к тому времени отладка была уже программной. У интела опережающее исполнение. Он загрузит данные в кэш ещё до захода в цикл.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 24.04.2018 в 16:17. |
24.04.2018, 18:09 | #9 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
..к тому-же проц и без помощи префетч загрузит в кэш эти данные, только когда они действительно понадобятся.
Нашедшего выход - затаптывают первым..
|
24.04.2018, 21:08 | #10 | |||
(aka Jin X) !RTFM!
Форумчанин
Регистрация: 14.12.2014
Сообщений: 295
|
Цитата:
Цитата:
Цитата:
Есть результаты тестов каких-то на эту тему? А то пока как-то на "ИМХО" больше похоже...
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
|
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Команды ассемблера | JoBl | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 25.05.2012 13:13 |
Assembler, tasm цепочечные команды для работы с строками | D9bolic | Помощь студентам | 2 | 12.05.2012 13:24 |
эмулятор(имитатор) работы процессора | fantaYKT | Помощь студентам | 4 | 10.05.2012 21:32 |
Самый быстрый режим работы процессора | Tronix | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 32 | 29.07.2011 21:01 |
Команды работы с файлами. Язык Borland C++ 3.1 | Демик | Помощь студентам | 16 | 31.01.2011 16:44 |