Предварительная выборка смежных строк кэша что это
Предварительная выборка из кэша - это метод, используемый компьютерными процессорами для повышения производительности выполнения путем выборки инструкций или данных из их исходного хранилища в более медленной памяти в более быструю локальную память до того, как они действительно понадобятся (отсюда и термин «предварительная выборка»). [1] Большинство современных компьютерных процессоров имеют быструю и локальную кэш-память, в которой предварительно загруженные данные хранятся до тех пор, пока они не потребуются. Источником для операции предварительной выборки обычно является основная память . Из-за их конструкции доступ к кэш-памяти обычно намного быстрее, чем доступ к основной памяти , поэтому предварительная выборка данных и последующий доступ к ним из кешей обычно на много порядков быстрее, чем доступ к ним непосредственно из основной памяти. . Предварительная выборка может выполняться с помощью инструкций управления неблокирующим кешем .
Содержание
Предварительная выборка из кеша может извлекать данные или инструкции в кеш.
- Предварительная выборка данных извлекает данные до того, как они понадобятся. Поскольку шаблоны доступа к данным демонстрируют меньшую регулярность, чем шаблоны инструкций, точная предварительная выборка данных обычно более сложна, чем предварительная выборка инструкций.
- Предварительная выборка инструкций выбирает инструкции перед их выполнением. Первыми массовыми микропроцессорами, которые использовали ту или иную форму предварительной выборки команд, были Intel8086 (шесть байтов) и Motorola68000 (четыре байта). В последние годы все высокопроизводительные процессоры используют методы предварительной выборки.
Предварительная выборка из кэша может выполняться аппаратно или программно. [2]
- Аппаратная предварительная выборка обычно выполняется с помощью специального аппаратного механизма в процессоре, который наблюдает за потоком инструкций или данных, запрашиваемых выполняющейся программой, распознает следующие несколько элементов, которые могут понадобиться программе, на основе этого потока и выполняет предварительную выборку в кэш процессора. . [3]
- Программная предварительная выборка обычно выполняется компилятором, анализируя код и вставляя дополнительные инструкции «предварительной выборки» в программу во время самой компиляции. [4]
- Потоковые буферы были разработаны на основе концепции «схемы упреждающего просмотра одного блока (OBL)», предложенной Аланом Джеем Смитом . [1]
- Потоковые буферы - один из наиболее распространенных методов предварительной выборки на основе оборудования. [5] Этот метод был первоначально предложен Норманом Джуппи в 1990 году [6], и с тех пор было разработано множество вариантов этого метода. [7][8][9] Основная идея состоит в том, что адрес промаха кеша (и последующие адреса) выбираются в отдельный буфер глубины k k . Этот буфер называется буфером потока и отделен от кеша. Затем процессор потребляет данные / инструкции из буфера потока, если адрес, связанный с предварительно выбранными блоками, совпадает с запрошенным адресом, сгенерированным программой, выполняющейся на процессоре. На рисунке ниже показана эта установка:
- Каждый раз, когда механизм предварительной выборки обнаруживает промах в блоке памяти, скажем, A, он выделяет поток, чтобы начать предварительную выборку последовательных блоков, начиная с пропущенного блока. Если буфер потока может содержать 4 блока, тогда мы будем предварительно выбирать A + 1, A + 2, A + 3, A + 4 и удерживать их в выделенном буфере потока. Если затем процессор потребляет A + 1, то он должен быть перемещен «вверх» из буфера потока в кэш процессора. Первая запись буфера потока теперь будет A + 2 и так далее. Этот шаблон предварительной выборки последовательных блоков называется последовательной предварительной выборкой . В основном он используется, когда необходимо выполнить предварительную выборку смежных местоположений. Например, он используется при предварительной загрузке инструкций.
- Этот механизм можно расширить, добавив несколько таких «потоковых буферов», каждый из которых будет поддерживать отдельный поток предварительной выборки. Для каждого нового промаха будет выделен новый буфер потока, и он будет работать аналогично описанному выше.
- Идеальная глубина буфера потока - это то, что является предметом экспериментов с различными тестами [6] и зависит от остальной части задействованной микроархитектуры .
Другой шаблон инструкций предварительной выборки - это предварительная выборка адресов, которые идут впереди в последовательности. Это в основном используется, когда последовательные блоки, которые должны быть предварительно выбраны, имеют разные адреса. [2] Это называется последовательной предварительной выборкой. s s
Предварительная выборка, управляемая компилятором, широко используется в циклах с большим количеством итераций. В этом методе компилятор прогнозирует будущие промахи в кэше и вставляет инструкцию предварительной выборки на основе штрафа за промах и времени выполнения инструкций.
Эти предварительные выборки являются неблокирующими операциями с памятью, то есть эти обращения к памяти не мешают действительному доступу к памяти. Они не изменяют состояние процессора и не вызывают сбои страниц.
Одним из главных преимуществ программной предварительной выборки является то, что она уменьшает количество принудительных промахов кеша. [2]
В следующем примере показано, как инструкция предварительной выборки будет добавлена в код для повышения производительности кеша .
Рассмотрим цикл for, как показано ниже:
На каждой итерации осуществляется доступ к i- му элементу массива array1. Следовательно, мы можем выполнить предварительную выборку элементов, к которым будет осуществляться доступ в будущих итерациях, вставив инструкцию «предварительной выборки», как показано ниже:
Здесь шаг предварительной выборки зависит от двух факторов: штраф за промах в кэше и время, необходимое для выполнения одной итерации цикла for . Например, если для выполнения одной итерации цикла требуется 7 циклов, а штраф за промах в кэше составляет 49 циклов, то у нас должно быть - это означает, что мы предварительно выбираем 7 элементов. На первой итерации i будет 0, поэтому мы предварительно выбираем 7-й элемент. Теперь, при таком расположении, первые 7 обращений (i = 0-> 6) по-прежнему будут пропущены (в упрощенном предположении, что каждый элемент array1 находится в отдельной строке кэша). k k знак равно 49 / 7 знак равно 7
- В то время как программная предварительная выборка требует вмешательства программиста или компилятора , аппаратная предварительная выборка требует специальных аппаратных механизмов. [2]
- Программная предварительная выборка хорошо работает только с циклами, в которых есть регулярный доступ к массиву, поскольку программист должен вручную кодировать инструкции предварительной выборки. В то время как аппаратные средства предварительной выборки работают динамически в зависимости от поведения программы во время выполнения . [2]
- Аппаратная предварительная выборка также снижает нагрузку на ЦП по сравнению с программной предварительной выборкой. [10]
Есть три основных показателя, позволяющих судить о предварительной выборке из кеша [2]
Покрытие - это доля от общего числа промахов, которые исключаются из-за предварительной выборки, т. Е.
C о v е р а грамм е знак равно Пропуски кеша устранены с помощью предварительной выборки Всего промахов кеша > >>> ,
куда, Всего промахов кеша знак равно ( Промахи в кэше устранены с помощью предварительной выборки ) + ( Промахи кеша не устраняются предварительной выборкой ) >=(>)+(>)>
Точность - это доля от общего числа предварительных выборок, которые были полезны, т. Е. Отношение количества предварительно выбранных адресов памяти, на которые фактически ссылалась программа, к общему количеству выполненных предварительных выборок.
Хотя кажется, что идеальная точность может означать отсутствие промахов, это не так. Сами предварительная выборка может привести к новым пропускам, если предварительно выбранные блоки помещаются непосредственно в кэш. Хотя это может быть небольшая часть от общего числа промахов, которые мы можем увидеть без предварительной выборки, это ненулевое количество промахов.
Качественное определение своевременности - это то, насколько раньше блок предварительно выбирается по сравнению с фактической ссылкой на него. Пример для дальнейшего объяснения своевременности выглядит следующим образом:
Рассмотрим цикл for, в котором каждая итерация занимает 3 цикла, а операция предварительной выборки занимает 12 циклов. Это означает, что для того, чтобы предварительно выбранные данные были полезными, мы должны запустить итерации предварительной выборки до их использования для обеспечения своевременности. 12 / 3 = 4
В этой статье мы разъясним значение компонентов Prefetcher (предварительная выборка) и Superfetch (супервыборка) в Windows 7, а также влияние Prefetcher и Superfetch на ускорение запуска Windows 7 и установленных программ.
Память блокнота
Некоторые процессоры поддерживают оперативную память, в которую могут быть помещены временные файлы, и прямой доступ к памяти (DMA) для передачи данных в и из основной памяти при необходимости. Этот подход используется процессором Cell и некоторыми встроенными системами . Это позволяет лучше контролировать трафик и локальность памяти (поскольку рабочий набор управляется явными передачами) и устраняет необходимость в дорогостоящей когерентности кэша на многоядерной машине.
Недостаток в том, что для этого требуются существенно разные методы программирования. Очень сложно адаптировать программы, написанные на традиционных языках, таких как C и C ++, которые предоставляют программисту единообразное представление о большом адресном пространстве (что является иллюзией, моделируемой кешами). Традиционный микропроцессор может более легко запускать унаследованный код, который затем может быть ускорен инструкциями управления кешем, в то время как машина на основе блокнота требует специального кодирования с нуля до четной функции. Команды управления кешем относятся к определенному размеру строки кэша, который на практике может варьироваться между поколениями процессоров одного и того же архитектурного семейства. Кеши также могут помочь объединить операции чтения и записи из менее предсказуемых шаблонов доступа (например, во время отображения текстуры ), в то время как DMA с блокнотом требует переделки алгоритмов для более предсказуемого «линейного» обхода.
Такие блокноты обычно сложнее использовать с традиционными моделями программирования, хотя модели потока данных (такие как TensorFlow ) могут быть более подходящими.
СОДЕРЖАНИЕ
Предварительная выборка из кеша может извлекать данные или инструкции в кеш.
- Предварительная выборка данных извлекает данные до того, как они понадобятся. Поскольку шаблоны доступа к данным демонстрируют меньшую регулярность, чем шаблоны инструкций, точная предварительная выборка данных обычно является более сложной задачей, чем предварительная выборка инструкций.
- Предварительная выборка инструкций выбирает инструкции до того, как их нужно будет выполнить. Первыми массовыми микропроцессорами, которые использовали ту или иную форму предварительной выборки команд, были Intel8086 (шесть байтов) и Motorola68000 (четыре байта). В последние годы все высокопроизводительные процессоры используют методы предварительной выборки.
Предварительная выборка из кэша может выполняться аппаратно или программно. [2]
- Аппаратная предварительная выборка обычно выполняется с помощью специального аппаратного механизма в процессоре, который наблюдает за потоком инструкций или данных, запрашиваемых выполняющейся программой, распознает следующие несколько элементов, которые могут понадобиться программе, на основе этого потока и выполняет предварительную выборку в кэш процессора. . [3]
- Программная предварительная выборка обычно выполняется компилятором, анализируя код и вставляя дополнительные инструкции предварительной выборки в программу во время самой компиляции. [4]
- Потоковые буферы были разработаны на основе концепции «схемы упреждающего просмотра одного блока (OBL)», предложенной Аланом Джеем Смитом . [1]
- Буферы потока - один из наиболее распространенных методов предварительной выборки на основе оборудования. [5] Этот метод был первоначально предложен Норманом Джуппи в 1990 году [6], и с тех пор было разработано множество вариантов этого метода. [7][8][9] Основная идея состоит в том, что адрес промаха кеша (и последующие адреса) выбираются в отдельный буфер глубины k k . Этот буфер называется буфером потока и отделен от кеша. Затем процессор потребляет данные / инструкции из буфера потока, если адрес, связанный с предварительно выбранными блоками, совпадает с запрошенным адресом, сгенерированным программой, выполняющейся на процессоре. Рисунок ниже иллюстрирует эту настройку:
- Каждый раз, когда механизм предварительной выборки обнаруживает промах в блоке памяти, скажем, A, он выделяет поток, чтобы начать предварительную выборку последовательных блоков, начиная с пропущенного блока. Если буфер потока может содержать 4 блока, тогда мы будем предварительно выбирать A + 1, A + 2, A + 3, A + 4 и удерживать их в выделенном буфере потока. Если затем процессор потребляет A + 1, то он должен быть перемещен «вверх» из буфера потока в кэш процессора. Первая запись буфера потока теперь будет A + 2 и так далее. Этот шаблон предварительной выборки последовательных блоков называется последовательной предварительной выборкой . Он в основном используется при предварительной выборке смежных местоположений. Например, он используется при предварительной загрузке инструкций.
- Этот механизм можно расширить, добавив несколько таких «потоковых буферов», каждый из которых будет поддерживать отдельный поток предварительной выборки. Для каждого нового промаха будет выделен новый буфер потока, и он будет работать аналогично описанному выше.
- Идеальная глубина буфера потока является предметом экспериментов с различными тестами [6] и зависит от остальной части задействованной микроархитектуры .
Другой шаблон инструкций предварительной выборки - это предварительная выборка адресов, которые находятся впереди в последовательности. Он в основном используется, когда последовательные блоки, которые должны быть предварительно загружены, имеют разные адреса. [2] Это называется последовательной предварительной выборкой. s s
Предварительная выборка, управляемая компилятором, широко используется в циклах с большим количеством итераций. В этом методе компилятор прогнозирует будущие промахи в кэше и вставляет инструкцию предварительной выборки на основе штрафа за промах и времени выполнения инструкций.
Эти предварительные выборки являются неблокирующими операциями с памятью, то есть эти обращения к памяти не мешают действительному доступу к памяти. Они не изменяют состояние процессора и не вызывают сбои страниц.
Одним из основных преимуществ программной предварительной выборки является то, что она снижает количество принудительных промахов кеша. [2]
В следующем примере показано, как инструкция предварительной выборки будет добавлена в код для повышения производительности кеша .
Рассмотрим цикл for, как показано ниже:
На каждой итерации осуществляется доступ к i- му элементу массива array1. Следовательно, мы можем выполнить предварительную выборку элементов, к которым будет осуществляться доступ в будущих итерациях, вставив инструкцию «предварительной выборки», как показано ниже:
Здесь шаг предварительной выборки зависит от двух факторов: штрафа за промах в кэше и времени, необходимого для выполнения одной итерации цикла for . Например, если для выполнения одной итерации цикла требуется 7 циклов, а штраф за промахи в кэше составляет 49 циклов, то у нас должно быть - это означает, что мы предварительно выбираем 7 элементов вперед. На первой итерации i будет 0, поэтому мы предварительно выбираем 7-й элемент. Теперь, при таком расположении, первые 7 обращений (i = 0-> 6) по-прежнему будут пропущены (в упрощенном предположении, что каждый элемент array1 находится в отдельной строке кэша). k k знак равно 49 / 7 знак равно 7
- В то время как программная предварительная выборка требует вмешательства программиста или компилятора , аппаратная предварительная выборка требует специальных аппаратных механизмов. [2]
- Программная предварительная выборка хорошо работает только с циклами, в которых есть регулярный доступ к массиву, поскольку программист должен вручную кодировать инструкции предварительной выборки. Принимая во внимание, что аппаратные средства предварительной выборки работают динамически в зависимости от поведения программы во время выполнения . [2]
- Аппаратная предварительная выборка также снижает нагрузку на ЦП по сравнению с программной предварительной выборкой. [10]
Есть три основных показателя, позволяющих судить о предварительной выборке из кеша [2]
Покрытие - это доля от общего числа промахов, которые исключаются из-за предварительной выборки, т. Е.
C о v е р а грамм е знак равно Пропуски кеша устранены с помощью предварительной выборки Всего промахов кеша > >>> ,
где, Всего промахов кеша знак равно ( Промахи в кэше устранены с помощью предварительной выборки ) + ( Промахи в кэше не устраняются предварительной выборкой ) >=(>)+(>)>
Точность - это доля от общего числа предварительных выборок, которые были полезны, то есть отношение количества предварительно выбранных адресов памяти, на которые фактически ссылалась программа, к общему количеству выполненных предварительных выборок.
Хотя кажется, что идеальная точность может означать отсутствие промахов, это не так. Сами предварительные выборки могут привести к новым пропускам, если предварительно выбранные блоки помещаются непосредственно в кэш. Хотя это может быть небольшая часть от общего количества промахов, которые мы можем увидеть без предварительной выборки, это ненулевое количество промахов.
Качественное определение своевременности - это то, насколько раньше блок предварительно выбирается по сравнению с тем, когда на него фактически ссылаются. Пример для дальнейшего объяснения своевременности выглядит следующим образом:
Рассмотрим цикл for, в котором каждая итерация выполняется за 3 цикла, а операция предварительной выборки - за 12 циклов. Это означает, что для того, чтобы предварительно выбранные данные были полезными, мы должны запустить итерации предварительной выборки до их использования, чтобы обеспечить своевременность. 12 / 3 = 4
В вычислениях , A инструкция управления кэшем намек встроен в инструкции потоке процессора предназначена для повышения производительности аппаратных кэшей , используя предвидение этого шаблона доступа к памяти , предоставленному программистом или компилятором . [1] Они могут уменьшить загрязнение кеша , снизить требования к пропускной способности, обойти задержки, обеспечивая лучший контроль над рабочим набором . Большинство инструкций по управлению кешем не влияют на семантику программы, хотя некоторые могут.
Несколько таких инструкций с вариантами поддерживаются несколькими архитектурами набора инструкций процессора , такими как ARM , MIPS , PowerPC и x86 .
Предварительная выборка инструкций
Вариант предварительной выборки для кеша инструкций.
Блок кэша данных выделяет ноль
Эта подсказка используется для подготовки строк кэша перед полной перезаписью содержимого. В этом примере ЦП ничего не загружает из основной памяти . Семантический эффект эквивалентен выравниванию memset блока размером с строку кэша до нуля, но операция фактически бесплатна.
Prefetcher – Предварительная выборка
Prefetcher (предварительная выборка) – это компонент менеджера памяти Windows 7, отвечающий за оптимальную загрузку операционной системы и часто используемых программ. Само название компонента раскрывает его назначение: предварительная выборка – это выбор и загрузка в оперативную память данных, необходимых для запуска определенных процессов перед тем, как эти процессы будут запущены. Компонент предварительная выборка впервые был внедрен в Windows XP, и в Windows 7 он был существенно переработан и улучшен.
Принципы работы предварительной выборки
Чтобы улучшить производительность, менеджер кэша Windows 7 отслеживает процесс обмена данными между жестким диском и оперативной памятью, а также между оперативной памятью и виртуальной памятью во время загрузки операционной системы и во время запуска программ. Отслеживая эти операции, менеджер кэша создает карты ссылок на все папки и файлы, которые используются во время запуска каждого приложения или процесса. Эти карты ссылок сохраняются в файлы с расширением .pf в папке C:\Windows\Prefetch.
Во время последующих запусков Windows 7, карты ссылок считываются и в оперативную память загружаются указанные в них данные. В результате, запуск соответствующих приложений и процессов происходит быстрее за счет минимального количества обращений к жесткому диску.
Сколько места на жестком диске требуется для работы Prefetcher
Для функционирования предварительной выборки требуется несколько мегабайт места на жестком диске – обычно не более 25 мегабайт для хранения файлов в папке C:\Windows\Prefetch. В этой папке хранятся только карты ссылок на файлы и папки, необходимые для запуска приложений и процессов.
Нет никакой необходимости в периодической очистке папки Prefetch. Во-первых, количество часто используемых программ ограничено. Во-вторых, если какие-то программы перестают использоваться часто, их запуск перестает оптимизироваться.
Таким образом, функция предварительной выборки в целом повышает быстродействие системы. Отключение предварительной выборки или периодическая ручная очистка папки Prefetch снизят, а не повысят скорость работы Windows 7.
Настройка и отключение предварительной выборки
Вы можете самостоятельно протестировать скорость запуска Windows 7 и установленных программ при включенной и выключенной предварительной выборке. Настройка, отключение и включение предварительной выборки производится с помощью редактора реестра Windows 7.
Откройте Пуск, введите в поисковую строку regedit и нажмите Ввод .
В открывшемся окне редактора реестра раскройте HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Дважды щелкните параметр EnablePrefetcher.
1. Чтобы отключить предварительную выборку, установите значение 0.
Начиная со следующего запуска Windows 7, оптимизация запуска операционной системы и часто используемых программ производиться не будет.
2. Чтобы включить предварительную выборку для часто используемых программ, установите значение 1.
Начиная со следующего запуска Windows 7, будет оптимизироваться запуск часто используемых программ, но не будет оптимизироваться запуск операционной системы.
3. Чтобы включить предварительную выборку для Windows 7, установите значение 2.
Начиная со следующего запуска Windows 7, будет оптимизироваться запуск операционной системы, но не будет оптимизироваться запуск часто используемых программ.
4. Чтобы включить предварительную выборку, установите значение 3 (рекомендуемое значение, установлено по умолчанию).
Начиная со следующего запуска Windows 7, будет оптимизироваться и запуск операционной системы, и запуск часто используемых программ.
Hardware Prefetcher что это в биосе?
Hardware Prefetcher — механизм аппаратной предвыборки инструкций и данных из оперативной памяти. Используется для предсказывания дальнейших операций. Инструкции для процессора записываются в кэш второго уровня. В принципе современные процессоры при помощи данной технологии работают действительно заметно быстрее.
Отключать опцию Hardware Prefetcher нет смысла. Но пункт отключения сохранился со времен процессоров Pentium 4 — в некоторых моделях происходил аппаратный сбой при использовании Hardware Prefetcher.
Производство процессоров сегодня уже как бы.. достигло потолка в плане частоты. Ну сколько? 5 ГГц для дома — как бы потолок. Но производительность нужно наращивать дальше, не стоять же на месте. Вот и, помимо количества ядер, создаются технологии предсказания команд, инструкций, предварительная подготовка данных для дальнейшего использования. Среди новшеств, как по мне, так это еще память eDRAM, которая есть в процессоре i5-5675C и i7-5775C — улучшила производительность. Жаль что потом почему-то в следующих процессорах памяти этой нет. Эта память — что-то вроде кэша процессора, обьем которой 128 мб.
Блокировка кеша данных недействительна
Эта подсказка используется для отбрасывания строк кэша без сохранения их содержимого в основной памяти. Необходима осторожность, поскольку возможны неверные результаты. В отличие от других подсказок кеша, семантика программы значительно изменена. Он используется вместе с allocate zero для управления временными данными. Это экономит ненужную полосу пропускания основной памяти и загрязнение кеша.
Предварительная выборка
Эффект, также называемый касанием блока кэша данных , заключается в запросе загрузки строки кэша, связанной с заданным адресом. Это выполняется PREFETCH инструкцией в наборе инструкций x86 . Некоторые варианты обходят более высокие уровни иерархии кеша , что полезно в контексте «потоковой передачи» для данных, которые проходят один раз, а не хранятся в рабочем наборе. Предвыборки должны происходить достаточно далеко вперед во время для уменьшения задержки доступа к памяти, например в памяти перемещения петли по линейному закону. GNU Compiler Collection характеристическая функция __builtin_prefetch может быть использована для вызова этого в языках программирования C или C ++ .
Сброс блока кэша данных
Эта подсказка требует немедленного удаления строки кэша, освобождая место для будущих выделений. Он используется, когда известно, что данные больше не являются частью рабочего набора .
Опция Adjacent Cache Line Prefetch в биосе
Это тоже опция, которая помогает ускорить работу процессора. Но тут очень интересно все и просто — процессор запрашивает определенный обьем данных из оперативной памяти, длиной в 64 байт. Эти данные процессору отправляются. Но вслед за ними отправляются и следующие 64 байт данных, так бы сказать тех, которые рядом стоят. Есть высокая вероятность, что в следующий раз процессор запросит именно их.
Возможно управление этой опцией поддерживается программой RightMark Memory Analyzer:
Лично у меня недоверие к программам, которые могут менять настройки в биосе. Как-то это не по фен-шую что ли. Настройки биоса меняются только в биосе, но это сугубо мое личное мнение) Также мне кажется несерьезным разгон процессора не через биос, а при помощи программы..
Adjacent Cache Line Prefetch можно встретить как в биосе старого образца, так и нового
Предварительная выборка из кэша - это метод, используемый компьютерными процессорами для повышения производительности выполнения путем извлечения инструкций или данных из их исходного хранилища в более медленной памяти в более быструю локальную память до того, как они действительно понадобятся (отсюда и термин «предварительная выборка»). [1] Большинство современных компьютерных процессоров имеют быструю и локальную кэш-память, в которой предварительно загруженные данные хранятся до тех пор, пока они не потребуются. Источником для операции предварительной выборки обычно является основная память . Из-за их конструкции доступ к кеш-памяти обычно намного быстрее, чем доступ к основной памяти , поэтому предварительная выборка данных и последующий доступ к ним из кешей обычно на много порядков быстрее, чем доступ к ним непосредственно из основной памяти. . Предварительная выборка может выполняться с помощью инструкций управления неблокирующим кешем .
Другие подсказки
Некоторые процессоры поддерживают вариант инструкций загрузки – сохранения, которые также подразумевают подсказки кеширования. Пример может служить load last в PowerPC набора команд, который наводит на мысль , что данные будут использоваться только один раз, то есть строка кэша вопроса может быть прижата к голове очереди выселения, в то время держать его в использовании , если по- прежнему непосредственно необходимо.
Векторная выборка
Векторные процессоры (например, современные графические процессоры (GPU) и Xeon Phi ) используют массивный параллелизм для достижения высокой пропускной способности, работая с задержкой памяти (уменьшая потребность в предварительной выборке). Многие операции чтения выполняются параллельно для последующих вызовов вычислительного ядра ; вычисления могут быть приостановлены в ожидании будущих данных, в то время как исполнительные блоки посвящены работе с данными из прошлых запросов, которые уже были получены. Программистам легче использовать в сочетании с соответствующими моделями программирования ( вычислительные ядра ), но труднее применить к программированию общего назначения.
Недостаток заключается в том, что многие копии временных состояний могут быть проведены в локальной памяти в виде элемента обработки , ожидают данных в полете.
Автоматическая предварительная выборка
В последнее время инструкции по управлению кэш-памятью стали менее популярными, поскольку все более совершенные конструкции процессоров приложений от Intel и ARM выделяют больше транзисторов для ускорения кода, написанного на традиционных языках, например, для выполнения автоматической предварительной выборки, с оборудованием для обнаружения линейных шаблонов доступа на лету. Однако эти методы могут оставаться применимыми для процессоров, ориентированных на пропускную способность, которые имеют другой компромисс между пропускной способностью и задержкой, и могут предпочесть выделить больше места для исполнительных модулей.
SuperFetch – Супервыборка
Супервыборка выполняет все функции предварительной выборки, плюс несколько дополнительных функций. Преимущество супервыборки в том, что она лишена одного из самых главных недостатков технологии Предварительной выборки. Предварительная выборка загружает в память большинство файлов и данных, необходимых для запуска приложения или процесса, чтобы повысить скорость его запуска. Но когда другие приложения обращаются к памяти, предвыбранные данные выгружаются на жесткий диск, в файл подкачки. И когда эти данные потребуются снова, система будет загружать их обратно из файла подкачки в память, что непременно скажется на скорости запуска соответствующего приложения или процесса.
Супервыборка обеспечивает более устойчивый прирост производительности. В дополнение к созданию файлов с картами ссылок, супервыборка создает конфигурации используемых приложений. Эти конфигурации содержат информацию о том, как часто и когда используются те или иные приложения. Супервыборка отслеживает активность приложений в созданной конфигурации и отмечает, когда и какие предвыбранные данные были выгружены в файл подкачки. После выгрузки предвыбранных данных в файл подкачки, супервыборка контролирует исполнение приложения, из-за которого предвыбранные данные были выгружены, и сразу после завершения работы этого приложения, ранее выгруженные предвыбранные данные снова загружаются в память. Таким образом, когда вы снова обратитесь к часто используемому приложению, предвыбранные данные снова будут в памяти, и это приложение быстро запустится.
Таким образом, компонент SuperFetch (супервыборка) существенно увеличивает быстродействие системы и установленных программ, поэтому отключать этот компонент настоятельно не рекомендуется.
Настройка, отключение и включение супервыборки
Хотя отключение и изменение параметров супервыборки не рекомендуется, вы можете самостоятельно протестировать быстродействие Windows 7 и установленных программ при включенной и выключенной супервыборке. Настройка, отключение и включение супервыборки производится с помощью редактора реестра Windows 7.
Откройте Пуск, введите в поисковую строку regedit и нажмите Ввод .
В открывшемся окне редактора реестра раскройте HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Дважды щелкните параметр EnableSuperfetch.
1. Чтобы отключить супервыборку, установите значение 0.
2. Чтобы включить супервыборку для часто используемых программ, установите значение 1.
3. Чтобы включить супервыборку для Windows 7, установите значение 2.
4. Чтобы включить супервыборку, установите значение 3 (рекомендуемое значение, установлено по умолчанию).
Также можно полностью отключить супервыборку, отключив её службу и запретив её запуск. Чтобы сделать это, откройте Панель управления -> Администрирование -> Службы (можно открыть меню Пуск, ввести в поисковую строку services.msc и нажать Ввод ).
В списке служб найдите службу Superfetch и откройте её свойства двойным щелчком мыши.
На вкладке Общие нажмите кнопку Остановить и в раскрывающемся списке Тип запуска выберите Отключена.
Привет. Quiet Boot — настройка, которая позволяет выполнить тихую загрузку без вывода служебной информации. При включении ПК запускается поверхностный тест железа — POST (Power-On Self-Test), при котором проверяется работа главных устройств.
В некоторых материнках есть интересная функция — при проверке POST, когда проверяется определенное устройство, возле него загорается светодиод. Вот у меня плата Asus Gryphon Z87 и такая фишка есть, скажу что мелочь, а приятно)
Будьте осторожны при изменении параметров биоса — если не знаете, лучше пусть стоит по умолчанию, чем пытаться сделать лучше. Особенно осторожно с опциями, в названии которых есть слова CPU, GPU, Voltage, FSB, DRAM, RAM, Memory. Если возникли какое-то проблемы, то сбросьте настройки при помощи пункта Load Setup Defaults (может быть в разделе Exit).
Если включить Quiet Boot, то при проверке POST на экране может быть отображен логотип производителя материнской платы или биоса. Логотип производителя можно отключить. В таком случае предположительно будет отображено лого производителя биоса, например Phoenix.
Quiet Boot не ускоряет запуск ПК, а убирает вывод служебной информации от проверки POST.
Как выглядит Quiet Boot в биосе
Нужно ли включать? Честно сказать даже не знаю. С одной стороны включение избавит от лишней информации. С другой — эта информация ничем не мешает и отключение ее вывода не повлияет на скорость загрузки. Поэтому мой совет — не выключать. Просто нет смысла.
Обычно Quiet Boot имеет два значения — Enable (включено) и Disable (отключено).
Еще есть опция Quick Boot — если включить то начальные тесты проводиться не будут и время загрузки может сократиться. Опцию нужно включать если вы добавили новое устройство, или убрали, или заменили — тогда нужно включить опцию, чтобы заново протестировать конфигурацию ПК. Стоит ли включать? Нужно поэкспериментировать — если скорость загрузки заметно возрастет, то можно оставить включенной. Если разницы нет — лучше отключить Quick Boot.
Читайте также: