分子對(duì)接的原理 Cache的工作原理是什么?
Cache的工作原理是什么?CPU工作速度很高,但內(nèi)存訪問速度相對(duì)較低,導(dǎo)致CPU等待,降低了處理速度,浪費(fèi)了CPU的能力。Cache用于緩存CPU和內(nèi)存。cache的工作原理是基于程序訪問的局部性。
Cache的工作原理是什么?
CPU工作速度很高,但內(nèi)存訪問速度相對(duì)較低,導(dǎo)致CPU等待,降低了處理速度,浪費(fèi)了CPU的能力。Cache用于緩存CPU和內(nèi)存。cache的工作原理是基于程序訪問的局部性。對(duì)大量典型程序的分析結(jié)果表明,在較短的時(shí)間間隔內(nèi),程序生成的地址往往集中在內(nèi)存邏輯地址空間的一小部分。指令地址的分布是連續(xù)的,循環(huán)程序段和子程序段需要重復(fù)執(zhí)行。因此,對(duì)這些地址的訪問自然傾向于在時(shí)間上集中。數(shù)據(jù)分布的集中化趨勢(shì)不如指令的集中化趨勢(shì)明顯,但陣列的存儲(chǔ)和存取以及工作單元的選擇可以使存儲(chǔ)地址相對(duì)集中。這種頻繁訪問本地范圍內(nèi)的內(nèi)存地址而很少訪問本地范圍外的地址的現(xiàn)象稱為程序訪問的局部性。根據(jù)程序局部性原理,可以在主存儲(chǔ)器和CPU的通用寄存器之間設(shè)置一個(gè)容量相對(duì)較小的高速存儲(chǔ)器,將主存儲(chǔ)器中執(zhí)行的指令地址附近的一些指令或數(shù)據(jù)傳送到存儲(chǔ)器中,供CPU使用一段時(shí)間。這對(duì)提高程序的運(yùn)行速度有很大的作用。這種在主存和CPU之間的高速小容量?jī)?nèi)存稱為高速緩存?;谶@一原理,系統(tǒng)不斷地將與當(dāng)前指令集相關(guān)聯(lián)的一個(gè)小指令集從內(nèi)存中讀取到高速緩存中,然后高速傳輸?shù)紺PU,從而實(shí)現(xiàn)速度匹配。當(dāng)CPU從內(nèi)存中請(qǐng)求數(shù)據(jù)時(shí),它通常首先訪問緩存。由于局部性原則不能保證請(qǐng)求的數(shù)據(jù)在緩存中是100%,因此存在命中率。也就是說,CPU能夠在任何時(shí)候從高速緩存可靠地獲取數(shù)據(jù)的概率。命中率越高,正確獲取數(shù)據(jù)就越可靠。一般來(lái)說,cache的存儲(chǔ)容量要比主存小得多,但不能太小。太小會(huì)導(dǎo)致太低的命中率,沒有必要太大。過大不僅會(huì)增加成本,而且當(dāng)容量超過一定值時(shí),命中率也不會(huì)隨著容量的增加而顯著增加。只要緩存空間和主存空間在一定范圍內(nèi)保持適當(dāng)比例的映射關(guān)系,緩存命中率還是相當(dāng)高的。一般來(lái)說,緩存與內(nèi)存的空間比是4:1000,即128kbcache可以映射32MB內(nèi)存;256kbcache可以映射64MB內(nèi)存。在這種情況下,命中率超過90%。至于丟失的數(shù)據(jù),CPU必須直接從內(nèi)存中獲取。同時(shí),它也被復(fù)制到緩存中,以便下次訪問。
怎樣清除opcache緩存?
1. php.ini文件默認(rèn)配置opcache.validate時(shí)間戳=1opcache.revalidateFreq=2//默認(rèn)情況下,更改的文件將每2秒驗(yàn)證一次,緩存將更新
2。應(yīng)用程序
在聯(lián)機(jī)環(huán)境下調(diào)試時(shí),如果代碼被更新,則不會(huì)立即生效。緩存更新后才生效,不方便調(diào)試
3。解決方案
開發(fā)環(huán)境:
將修改為:opcache.revalidateFreq=1//您可以將2s更改為1s。更改的文件將每隔1s進(jìn)行一次驗(yàn)證,緩存將更新
聯(lián)機(jī)環(huán)境:opcache.validateTimestamps=0//默認(rèn)情況下不會(huì)打開聯(lián)機(jī)環(huán)境。如果未打開,將始終使用緩存
以下兩種方法:
A.通過函數(shù)添加條目文件<?PHP opcache_uureset()?>
B.重新啟動(dòng)web服務(wù)器