примерах?
Из того что я понял, он копирует код выполнения с определенным размером (из памяти в кэш). И мы получаем возможность только читать данные, очень быстро и сразу из кэша?
Я вероятно оч сильно ошибаюсь. Но в инете так все сильно туманно обьясняют. Либо опыта не хватает понять
потому что это особо и не описывается на каждом шагу любым смертным, так как на прямую это программимстами никак не используется, только косвенно. напрямую это могут использовать только программисты, имхо, оптимизирующих компиляторов, которые создают инструмент для написания "оптимизированных" программ на машинном уровне программ. ты хочешь писать опитимизирующие компиляторы?
Если процессор не обнаружит данные в кэше, он начнёт чтение по ОЗУ. Адреса он получает, делив на 4 без остатка. Если адрес не выравнен на 4 байта, ему придётся получать части отдельно, что скажется на скорости. Всё легко же
я хочу иметь представление, как это работает например на рисунках. Так сказать заполнить шаблон
заполняй шкаф, тумбочка, стол, рука (хм, примерный аналог 4м кешам)
Попроще можно?)))) Может книжка есть, где этому выделена глава
Да что там сложного? Что тебе конкретно не понятно?
Могу привести такую аналогию. Сидит вахтёр. У каждого входящего проверяет документы и ищет фамилию в списке тех, кого можно пропустить. Обычно есть некоторые люди, которые ходят часто, и вахтёр их помнит в лицо, поэтому быстро пропускает. Но если поток людей слишком велик, то запомнить их сложно, вахтёр вынужден проверять всех.
адрес имеется ввиду из регистра ip? Как и какие части он получает? из jmp или внутри регистра (если к не у обращаться)
да конечно, вбиваем "кеш процессора объяснение" в поисковую строку и читаем все подряд. именно так получили информацию каждый, кто тебе хоть словом ответил на тему твоего вопроса
именно так я и получил первое представление. Просто вдруг есть источник или обьяснение, которое я мог получить тут быстрее
этот кеш это как теоретическая физика. знания есть, а применять напрямую ее нельзя.
Ты сам сказал, что косвенно можно. Что и делают компиляторы на режимах скорости. Например инструкции по типу nop,если я конечно правильно понимаю. Но как он определяет это мне не понятно
они косвенно используют. нет вроде как инструкций , которыми программу можно сразу в кеше выполнять (по типу: это присвоить сюда, это скопировать, а потом вызвать вот то, которое возвратит вот это. полученое сравнить с тем то)
значит если пропускать нужных людей, то это будет иметь смысл на скорости, так?)
Инструкций нет, это я понял. Но правильно подать блюдо из инструкций и данных веть можно? Например правильно отсортировать или выравнить?
это все что тебе необходимо знать. и ты вроде как пытаешься выяснить еще больше, кроме того что уже сказали выше (выравнвай данные и все будет норм)
а если нет инструкций, то нет и офф. мануалов с той подробностью, которую ты спрашиваешь/ищешь у нас
Пока поток невелик, люди, которые часто проходят получают сокращение времени прохода. Именно ради такого эффекта и организуют кеширование.
Так же говорят и про языки высокого уровня, однако я залез в ассемблер)). Вообщем я хотел получить представление по типу как обьяснят работу транзистора с входами и выходами или битов в виде рычажков. Так намного проще быстрей получить представление и понять работу, а после и находить возможность этим пользоваться.
И так. Во втором случае процессору придётся читать две части, а не сразу 4 байта. Суть в том, что процессор берёт адреса по границе 4 байта, так что если адрес не выравнен - он будет читать криво изначально и до конца
вот, вот. Супер. Спасибо большое👍👍👍
https://t.me/ChatAssembler/40098 напоминает эту беседу
Вот тут тоже чуть-чуть написано (хотя мне не нравится там объяснение, но всё же можно почитать, для уверенности) https://wm-help.net/lib/b/book/193850104/20
и как следствие чтоб это понять надо было учить не асм, а ЯВУ (делфи), которые сами оптимизируют данные )))
😄 Ну там пример можно не смотреть. В самом начале хорошо расписано то, что я выше писал. Ещё можно бы добавить, что для 64-битных значений нужно делать выравнивание по 64-битной границе (как раз это и написано на том сайте), но боюсь, что он снова запутается
https://t.me/ChatAssembler/98720 о чем я и говорил
тебе в процессоростроение тогда идти и изучать все тонкости работы процессора. там и транзисторы и элементарные логические элементы/схемы, и модули, и части логики процессора
Как нельзя? А префетчи?
расскажи. вот где ты раньше был?
а что это?
На самом деле я думаю смысл выравнивания оптимизировать размер потока данных при этом сохранив их целостность т.е. типа как в ворде если слово длинное мы помещаем его просто так чтобы оно было без переноса а если слова очень короткие то смысл делать align64 для каждой строки, это процессор будет нули глотать
Ну есть пачка инструкций PREFETCHx, которым ты даёшь адрес, и они загружают данные в кэш. Обычно используются вместе с SSE, чтобы пока там процессор считает, данные грузились. Можно сказать процессору, что тебе оно на один раз нужно, или наоборот будет часто использоваться.
не ну я загуглил, просто не сталкивался раньше. Поэтому спросил
За вами как всегда надо записывать :)👍👍
Ты код, который Дельфи генерирует видел? Лучше десять STL, чем один Дельфи
Обсуждают сегодня