2016年408計(jì)組Cache部分的選擇題解析
????????首先這是自己理解,若有些許錯(cuò)誤還請(qǐng)見諒并在評(píng)論區(qū)指出

2016年Cache部分選擇題解析:
????????首先a[k]=?a[k]?+?32這句指令的執(zhí)行邏輯是,去內(nèi)存中取操作數(shù)a[k](32應(yīng)該是個(gè)立即數(shù))?,然后在ACC中做加法運(yùn)算,最后將和寫入a[k]。這-期間,?總共訪問了兩次內(nèi)存,一次讀入,一?次寫入。
????????觀察此題,發(fā)現(xiàn)程序執(zhí)行前,Cache為空,那么第一次訪存,?去取a[k]這個(gè)操作數(shù)的時(shí)候一定是Cache不命中。?然后去內(nèi)存中a[k]的位置選擇16B大小的物理塊將其放入Cache塊中。因?yàn)閕nt型占4B,并且數(shù)組在內(nèi)存中是連續(xù)存放的,所以將物理塊調(diào)入Cache塊中時(shí),調(diào)入的是4個(gè)連續(xù)的int型變量a[k],a[k+1],a[k+2],a[k+3]。所以現(xiàn)在Cache塊中的內(nèi)容是a[k],a[k+1],a[k+2],a[k+3]。
????????回到本題就是a[0],a[1],a[2],a[3],這時(shí)候已經(jīng)取得a[0]這個(gè)操作數(shù)了,將a[0]+32后,?再次將它寫入a[0],這時(shí)候還要訪存。先訪問Cache,發(fā)現(xiàn)這時(shí)候a[0]命中了,然后寫入a[0]。之后要訪問a[1],先訪問Cache,發(fā)現(xiàn)a[1],命中了,寫回a[1]的時(shí)候,訪問Cache,?命中。a[3]和a[4]也是如此。
????????總結(jié)規(guī)律發(fā)現(xiàn): 每次調(diào)入Cache塊實(shí)質(zhì)上是調(diào)入了4個(gè)數(shù)組,總共訪問了8次,只有一次沒命中,?推廣到1000個(gè)數(shù)組就是調(diào)入250次Cache,總共訪問2000次,有250次沒有命中,所以缺失率是12.5%。答案選C
????????