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

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

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

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

решение1

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

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

Однако в этом объяснении есть два конкретных недостатка:

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

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

    • Обратная запись: При использовании метода обратной записи данные сначала записываются в кэш, а затем в конечном итоге записываются в основную память. Это имеет ряд преимуществ для производительности, но может вызывать проблемы в некоторых обстоятельствах.
    • Writethrough: Используя метод writethrough, данные одновременно записываются и в кэш, и в основную память. Это более низкая производительность, чем writeback, но более безопасно.
    • Write-around: Используя метод write-around, данные записываются непосредственно в основную память, а затем данные, которые были в том же месте, удаляются из кэша. Это используется редко, за исключением очень специфических случаев использования.

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

https://en.wikipedia.org/wiki/Кэш_(вычисления)

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

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

https://en.wikipedia.org/wiki/Виртуальная_память

https://en.wikipedia.org/wiki/Пейджинг

Связанный контент