VIPT 类型的Cache如果Cache_Size/Way_num > Page_Size,如何解决Cache alias问题?
VIPT 类型的Cache如果Cache_Size/Way_num > Page_Size,如何解决Cache alias问题?
VIPT的cache很多时候是用在ICACHE端,因为我们认为ICACHE是read-only的,所以不会引发page alias的问题。
对于VIPTcache用在data cache上的情况,当multiple VAs map到 同一个PA的时候就会产生coherency的问题。
比如对于32KB,4WAY的cache,page size是4KB,那么Index为VA【12:0】,因此会存在VA【12】index 导致page alias的问题(page size=4KB,VA【11:0】=PA【11:0】)。为了解决这个问题,能想到的是当存在multiple VA map到PA的情况时,VA【12】只能是0或者是1,不能同时存在0或者1的情况,以此来防止coherency问题
在实际CPU中,也有通过硬件解决这个问题的,过于复杂,涉及太多细节,不在此展开