Из какой памяти процессоры фактически читают данные?

287
Aleksandr Medvedev

В соответствии с моим собственным пониманием, для обработки данных ЦП они должны быть помещены в ОЗУ, в то же время сами ЦП имеют кэш-память, которая также используется для доступа к данным. Хорошо известен тот факт, что кэш процессора «ближе» к процессору и работает быстрее, чем любой другой тип памяти. Но для меня несколько неясно, обязательно ли для обработки данных находиться в кеше процессора? Если так, то как кеш может хранить большой объем данных? (размер кеша обычно крошечный, по сравнению с оперативной памятью, до нескольких мегабайт, чаще всего меньше 1). Если нет, то как процессор решает, какая часть данных должна храниться в его кеше?

Меня тоже немного смущает своп. Могут ли процессоры обрабатывать часть оперативной памяти и обращаться к хранящимся там данным непосредственно с жесткого диска?

-1
Вы должны действительно пойти в Википедию, чтобы прочитать о том, что такое кеш и какую проблему он решает. user3528438 6 лет назад 0

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

3
Austin Hemmelgarn

Кэш на процессоре не хранит данные, он просто ускоряет доступ.

Основное объяснение кеша заключается в том, что когда ЦП начинает чтение определенного байта из ОЗУ, эти данные также копируются в кеш. В следующий раз, когда ЦП должен прочитать этот байт, контроллер памяти видит, что он находится в кеше, и вместо медленного вызова ОЗУ он просто передает ЦП данные из кеша.

Есть два специфических вопроса с этим объяснением, хотя:

  1. Кеш имеет конечный размер. Из-за этого, когда данные добавляются, вам в конечном итоге нужно избавиться (или «отбросить») старые данные, чтобы освободить место для них. Есть множество способов сделать это, и точная методология не имеет значения для этого обсуждения, но важно то, что через некоторое время данные могут больше не быть в кеше, и тогда вы должны выйти в основную память в любом случае.

  2. Когда данные записываются, вам также необходимо либо обновить, либо удалить данные из кэша, которые ранее были сохранены по этому адресу. Есть три основных способа справиться с этим:

    • Обратная запись: при использовании метода обратной записи данные сначала записываются в кэш, а затем в конечном итоге записываются в основную память. Это имеет ряд преимуществ для производительности, но может вызвать проблемы в некоторых обстоятельствах.
    • Запись: используя метод записи, данные одновременно записываются как в кэш, так и в основную память. Это ниже, чем при обратной записи, но безопаснее.
    • Записывание: используя метод записи, данные записываются непосредственно в основную память, а затем данные, находящиеся в том же месте, удаляются из кэша. Это редко используется, за исключением очень специфических случаев использования.

Итак, чтобы ответить на ваш вопрос относительно оперативной памяти в сравнении с кэшем ЦП, технически оба, но в конечном итоге данные поступают из оперативной памяти почти во всех случаях. Если вы хотите узнать больше об этом конкретно, я бы посоветовал прочитать следующие две статьи Википедии:

https://en.wikipedia.org/wiki/Cache_(computing)

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

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

https://en.wikipedia.org/wiki/Virtual_memory

https://en.wikipedia.org/wiki/Paging

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