当L1缓存中的数据被修改时,需要将L1缓存中对应的数据失效,以确保数据的一致性。以下是一段示意代码:
void write_data_to_L1_cache(int data_address, int data_value) {
//将数据写入L1缓存
L1_cache[data_address] = data_value;
//将L1缓存失效标志位设为1
L1_cache_invalid[data_address] = 1;
//将该数据写入主存
write_data_to_main_memory(data_address, data_value);
}
在上述代码中,当数据被写入L1缓存时,将会同时将该数据所在的缓存块的失效标志位置为1,表示该缓存块中的数据已经失效,需要从主存中重新读取数据。这样一来,在后续的访问中如果发现相应的缓存块失效,则会从主存中重新读取数据,以保证数据的一致性。