-1

Я знаю, что загрузка инструкций в кеш увеличивает общую скорость обработки. Ответ на вопрос связан с организацией и скоростью?

1 ответ1

-1

Во-первых, "куски" часть вашего вопроса ...

Обычно управление памятью происходит с помощью кусков памяти. Управлять памятью побайтово не имеет смысла. Это связано с тем, что для управления частью памяти вам нужна структура данных, которая содержит информацию об этом фрагменте памяти. Давайте сделаем дикое предположение и скажем, что эта структура данных имеет длину 24 байта. Вы не будете использовать 24-байтовую структуру данных для управления 1 байтом памяти. Вы хотите "экономию от масштаба". В противном случае вы получите ужасно большое количество накладных расходов. Вместо этого вы управляете 1 КБ / 32 КБ / 1 МБ / независимо от того, за один раз.

Таким образом, когда память перемещается (например, в файл подкачки), это делается порциями, и этот же метод применяется к кешу.

По словам Википедии: «Данные передаются между памятью и кешем в блоках фиксированного размера, называемых строками кеша. Когда строка кэша копируется из памяти в кэш, создается запись в кэше ".

Запись в кеше является примером структуры данных, о которой я упоминал ранее.

Помните, что когда команды программы поступают в кэш, они вводятся так же, как и данные. Таким образом, слова "данные передаются" также означают "инструкции передаются".

Проверьте запись в Википедии ниже. У этого есть больше информации.

http://en.wikipedia.org/wiki/CPU_cache

======

А теперь более общий ответ о кеше процессора.

Главным образом, ускорение происходит потому, что когда процессор обращается к кешу, он получает инструкции / данные НАМНОГО! быстрее, чем когда он обращается к основной памяти.

Вот пример. Вы закодировали цикл в программе. При первом запуске этот раздел памяти будет занесен в кеш. Вы начинаете с начала цикла и в конце концов добираетесь до конца цикла. Тогда это вернулось к вершине. Предполагая, что весь цикл помещается в кэш (нормальное состояние) во второй раз, когда эти инструкции уже находятся в кэше, и для этого цикла больше не требуется выборок команд. Это действительно ускоряет ход вещей. После завершения цикла он в конечном итоге будет перезаписан в другой части программы, которая должна быть выполнена.

То же самое относится и к данным. Если на некоторую структуру / группу переменных / и т.д. часто ссылаются или обновляют, она будет оставаться в кеше в течение некоторого периода времени. Со временем его пространство в кеше данных будет передано какой-то другой структуре / группе переменных / и т.д., Потому что это то, к чему программа начинает часто обращаться.

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