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

1406
Binary

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

1

1 ответ на вопрос

2
Psycogeek

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

Согласно инструкции для процессора :-)
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.

DRAM - это не * совершенно * произвольный доступ, чтение с открытой страницы / строки DRAM будет быстрее, чем когда у банка нет открытой страницы / строки (поскольку команда ACTIVATE строки должна обрабатываться банком), и намного меньше, когда другая страница / строка открыта в том же банке DRAM (поскольку этот банк должен обработать команду PRECHARGE, прежде чем команда строки ACTIVATE сможет открыть новую страницу). Paul A. Clayton 9 лет назад 3

Похожие вопросы