Да, некоторые точно такие же, но не такие же точно.
Согласно инструкции для процессора :-)
http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf
Существует специальная аппаратная предварительная выборка, и программист может указать ее на предварительную выборку, плюс есть способы, с помощью которых она работает с размером фрагмента данных, от которого опытный программист может получить преимущества. Кроме того, одни и те же аппаратные или программные методы, выполненные немного некорректно, могут привести к тому, что предварительная выборка будет отбрасываться снова и снова, а также различные вещи для разных процессоров.
Перемещение данных на более высокие уровни в предположении, что это будет необходимо (например, упреждающее чтение), и данные, находящиеся там, потому что они находились в пределах размера чанка, и они перемещаются на эти уровни (последовательная последовательность может помочь).
Процессор, зная, какой набор инструкций он поставил в очередь, или список того, что он собирается сделать, он готовит эти данные.
2.1.5.4 Предварительная выборка данных Данные могут быть спекулятивно загружены в DC1-кэш L1 с использованием предварительной программной выборки, аппаратной предварительной выборки или любой их комбинации., , ,
-
Streamer: этот модуль предварительной выборки отслеживает запросы на чтение из кэша L1 для восходящих и нисходящих последовательностей адресов. Отслеживаемые запросы на чтение включают запросы Lache DCache, инициированные операциями загрузки и сохранения и аппаратными устройствами предварительной выборки, а также запросы IC1 Lache для выборки кода. Когда обнаружен прямой или обратный поток запросов, ожидаемые строки кэша предварительно выбираются. Предварительно выбранные строки кэша должны быть на одной странице 4K., , ,
-
Wide Dynamic Execution Smart Memory Access - prefetches data Branch Prediction Unit Instruction Fetch Unit Instruction PreDecode
Список можно продолжать и продолжать со многими функциями, которые ожидают нас в будущем.
Начните со страницы 60 связанного документа.
https://stackoverflow.com/questions/1922249/c-cache-aware-programming Более PDF-файлы связаны со переполнением стека, и я уверен, что там будет больше информации об этом.
Данные об этом и методике должны публиковаться здесь, и все «как это работает на самом деле» от программистов также будет длинным. Мало того, что я только с трудом понимаю это. После прочтения этого (и информации для программиста) неудивительно, что одна часть программного обеспечения, выполняющая почти одно и то же, может быть в 50 раз быстрее другой, что может быть тщательно выполнено, протестировано и протестировано, чтобы обеспечить максимальную оптимизацию, или они могли бы пропустите несколько вещей и будьте нормальными.
И НЕТ, ram - это полностью произвольный доступ, есть только крошечные величины задержки, это «Ram», который использует жесткий диск для выполнения операций опережающего чтения, и пакетные передачи во много раз быстрее, чем in, могут быть прочитаны с пластин, Последовательность очень важна на жестких дисках, потому что движение головы занимает время и не тянет данные с диска. После того, как руководитель прибывает в это место, он должен ждать, пока данные не появятся в ротации.
При чтении с жесткого диска он может извлекать данные в одном и том же вращении, экономя много миллисекунд времени.
Это может быть огромный натиск воображения :-) предположить, что есть что-то похожее в 2.