일부 하이엔드 MCU에서는 말씀하신 것처럼 MPU를 통해 접근 권한뿐 아니라 캐시 관련 속성까지 영역 단위로 설정할 수 있습니다. 다음의 ST 자료가 좋은 참고 자료일 것입니다: https://community.st.com/t5/stm32-mcus/…
다만 이 글에서 사용한 ESP32-S3에서는, 범용 CPU나 일부 MCU에서 제공하는 것처럼 메모리 영역별 cacheable / non-cacheable 속성을 MPU나 유사한 메커니즘으로 설정하는 방식이 제공되지 않습니다.
ESP32-S3의 경우, 외부 메모리(Flash/PSRAM)는 캐시/MMU를 경유해 접근하도록 설계되어 있으며 (TRM 4.3.3 External Memory), 접근 권한 제어는 PMS(Permission Management System)를 통해 이루어지지만 (TRM Chapter 15), 이 장치는 접근 보호를 위한 것으로 캐시 경유 여부나 접근 경로 자체를 변경하는 역할은 하지 않습니다.
TRM(Technical Reference Manual) 링크: https://documentation.espressif.com/esp32-s3_technical_reference_manua….
네 얘기하신 캐시 일관성 때문에 매번 cache invalidate 를 시켜줘야 할텐데 그냥 non cacheable 영역으로 쓰지 않는 이유가 궁금했습니다
흥미로운 내용 잘 봤네요
그런데 DMA영역도 캐시를 쓰는 이유는 뭘까요?
문제 생기기 쉬울것 같은데요