Другой вопрос относительно кэширования в ArmV7-A. В этом случае рассматриваемый SoC - Allwinner A20, двухъядерный Cortex-A7.PoU с несовместимым атрибутом
Из того, что я прочитал, определение PoU для ядра - это точка, в которой тайники инструкций и данных ядра гарантированно будут видеть одну и ту же копию места памяти.
Что касается рассматриваемого SoC, поскольку оба ядра разделяют PoU на L2 (Unified) Cache, это означает, что все, что помещено в L1, будет видимым для L2. Это правильно?
Даже если я изменяю атрибут области памяти, который должен быть несовместимым, L2 сможет видеть, что внутри L1 в ядре. Это правда?
Разрабатывать то, что я имел в виду, что я сделал небольшой эксперимент:
Когда я писал в адрес памяти Внутри Non-Shareable, Write-Back области от основных # 0. Затем, не выполняя любую операцию кэширования, когда я пытался читать из одного и того же адреса памяти из ядра # 1, случилось так, что он прочитал правильное значение, которое было написано с ядра # 0.
Я предположил, что поведение было результатом того, что L2 является PoU, поэтому, когда я писал из ядра # 0, L2 также сохраняет его копию (даже если она не очищена). Затем, когда я читаю из ядра # 1, после прочтения прочтения, L1 ядра # 1 возвращает значение памяти из L2.
Запись из одного процессора и _reading_ из другого не имеет ничего общего с PoU, поскольку оба являются _data_ accesses. – Notlikethat
@Notlikethat Спасибо также за другой вопрос. Не могли бы вы уточнить? Разве PoU не имеет никакого отношения к доступу к данным? Я до сих пор не знаю, почему другой процессор может получить доступ к контенту, который я написал в первом процессоре. При условии, что регион settin не связан, Writeback –