1

В L1, кэш-памяти L2 и DRAM, последовательный доступ быстрее, чем произвольный доступ из-за возможности установить упреждающее чтение? Я знаю, что на жестких дисках это, конечно, быстрее на несколько порядков.

1 ответ1

2

Да, некоторые точно такие же, но не такие же точно.

Согласно мануалу для процессора :-)
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, инициированные операциями загрузки и сохранения и аппаратными средствами предварительной выборки, а также запросы ICache L1 для выборки кода. Когда обнаружен прямой или обратный поток запросов, ожидаемые строки кэша предварительно выбираются. Предварительно выбранные строки кэша должны быть на одной странице 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .