Volatile type variable and cache

I have a question regarding declaring a variable as volatile. If the memory region is configured as cacheable by configuring the MPU and if the variable is declared as volatile, will it be cached ? If any reads from the core will result in direct main memory read always, though the region is cached ?