提問者:waynehao 2020-7-19
老師您好,有幾個問題想請教下。1.如何保證transmitter訪問vaddr會在L3 cache留下痕跡?是如何保證該痕跡不會在L1 L2 cache留下?
2.請問receiver為什么要計算出16個虛擬地址?16是如何得來的?
3.如何保證計算的16個虛擬地址都能映射到同一個L3 cache中?謝謝老師!
第一個問題,循環(huán),循環(huán)里面就一個訪存語句mov [vaddr],eax可以保證vaddr在L3留下cache entry。會在L1、L2中也留下,這是肯定的,對于transmitter不需要考慮這個問題,因為他只需要確保把receiver填充的16個entry任意踢出去一個就行了,在L1、L2留下痕跡也無所謂。真正有影響的是receiver,因為他有一個很重要的步驟是判斷自己之前填充的entry是否被從L3中踢出去了一個,這個步驟是通過測量16個虛擬地址的遍歷時間判斷的,L1、L2的存在會對這個測量過程引入噪聲,假設地址a和地址b都緩存在L3,a同時也出現(xiàn)在L2和L1,b只存在于L3,那么a和b的訪存延遲就相差很大,這就是噪聲
第二個問題,16是L3的緩存相聯(lián)度,這個可以通過cpuz工具查看
第三個問題,我在第一章節(jié)的最后一課會講解具體算法,現(xiàn)在應該還看不到