日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TLB和cache的关系

發布時間:2023/12/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TLB和cache的关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一)TLB

1)TLB的概述

TLB是一個內存管理單元用于改進虛擬地址到物理地址轉換速度的緩存.

TLB是位于內存中的頁表的cache,如果沒有TLB,則每次取數據都需要兩次訪問內存,即查頁表獲得物理地址和取數據.


分頁與頁表

概念性內容不再闡述。直接給出解釋。

MMU為內存管理單元,其作為硬件用于將虛擬地址映射為物理地址。上圖右邊部分,箭頭所述部分內容即采用MMU完成地址映射。

虛擬地址通過多級頁表映射后對應末級頁表項,末級頁表項中存放的是物理地址頁框號。即一個虛擬地址,通過MMU找到對應的物理頁框號,通過虛擬地址后12位作為頁內偏移,索引到具體物理地址上的內容。

頁表項的結構:

長度為32位,其中最后20位為頁框號內容,“在/不在“位表示當前頁表項對應的物理頁框是位于內存中還是位于物理磁盤上,“保護”位指定當前頁面是否可讀、寫、執行,“修改”位指明當前物理頁面是否是一個臟頁,即是否已經被寫入到磁盤上。


2)tlb的原理

當cpu對數據進行讀請求時,CPU根據虛擬地址(前20位)到TLB中查找.
TLB中保存著虛擬地址(前20位)和頁框號的對映關系,如果匹配到虛擬地址就可以迅速找到頁框號(頁框號可以理解為頁表項),通過頁框號與虛擬地址后12位的偏移組合得到最終的物理地址.

如果沒在TLB中匹配到虛擬地址,就出現TLB丟失,需要到頁表中查詢頁表項,如果不在頁表中,說明要讀取的內容不在內存,需要到磁盤讀取.

TLB是MMU中的一塊高速緩存,也是一種Cache.

在分頁機制中,TLB中的數據和頁表的數據關聯,不是由處理器維護,而是由OS來維護,TLB的刷新是通過裝入處理器中的CR3寄存器來完成.

如果MMU發現在TLB中沒有命中,它在常規的頁表查找后,用找到的頁表項替換TLB中的一個條目.

3)tlb的刷新原則

當進程進行上下文切換時重新設置cr3寄存器,并且刷新tlb.

有兩種情況可以避免刷tlb.
?第一種情況是使用相同頁表的進程切換.
?第二種情況是普通進程切換到內核線程.

lazy-tlb(懶惰模式)的技術是為了避免進程切換導致tlb被刷新.
當普通進程切換到內核線程時,系統進入lazy-tlb模式,切到普通進程時退出該模式.

?

?

二)cache?
1)cache的概念:
cache是為了解決處理器與慢速DRAM(慢速DRAM即內存)設備之間巨大的速度差異而出現的.
cache屬于硬件系統,linux不能管理cache.但會提供flush整個cache的接口.
cache分為一級cache,二級cache,三級cache等等.一級cache與cpu處于同一個指令周期.


例如:查看當前系統的cache.

dmidecode -t cache

# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x0700, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 1
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 128 KB
????????Maximum Size: 128 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Data
????????Associativity: 8-way Set-associative

Handle 0x0701, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 2
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 1024 KB
????????Maximum Size: 2048 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Unified
????????Associativity: 8-way Set-associative

Handle 0x0702, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 3
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 4096 KB
????????Maximum Size: 4096 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Unified
????????Associativity: 16-way Set-associative

分別是:
1級cache:128KB
2級cache:1024KB
3級cache:4096KB

2)Cache的存取單位(Cache Line)

CPU從來不從DRAM直接讀/寫字節或字,從CPU到DRAM的每次讀或寫的第一步都要經過L1 cache,每次以整數行讀或寫到DRAM中.
Cache Line是cache與DRAM同步的最小單位.
典型的虛擬內存頁面大小為4KB,而典型的Cache line通常的大小為32或64字節.
CPU 讀/寫內存都要通過Cache,如果數據不在Cache中,需要把數據以Cache Line為單位去填充到Cache,即使是讀/寫一個字節.
CPU 不存在直接讀/寫內存的情況,每次讀/寫內存都要經過Cache.

3)Cache的工作模式

數據回寫(write-back):這是最高性能的模式,也是最典型的,在回寫模式下,cache內容更改不需要每次都寫回內存,直到一個新的 cache要刷新或軟件要求刷新時,才寫回內存.
寫通過(write-through):這種模式比回寫模式效率低,因為它每次強制將內容寫回內存,以額外地保存cache的結果,在這種模式寫耗時,而讀和回寫模一樣快,這都為了內存與cache相一致而付出的代價.
預取 (prefectching):一些cache允許處理器對cache line進行預取,以響應讀請求,這樣被讀取的相鄰內容也同時被讀出來,如果讀是隨機的,將會使CPU變慢,預取一般與軟件進行配合以達到最高性能.


注:
大部分的cache允許軟件在某個區域設置模式,一個區域可能是回寫,另一個可能是預取.用戶一般不能改變cache的模式, 這些通常由設備驅動程序來控制.
預取通常由軟件通過所謂的cache隱函數madvise進行控制.

例如:查看當前系統的cache在哪種模式下工作

dmidecode -t cache

# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x0700, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 1
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 128 KB
????????Maximum Size: 128 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Data
????????Associativity: 8-way Set-associative

Handle 0x0701, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 2
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 1024 KB
????????Maximum Size: 2048 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Unified
????????Associativity: 8-way Set-associative

Handle 0x0702, DMI type 7, 19 bytes
Cache Information
????????Socket Designation: Not Specified
????????Configuration: Enabled, Not Socketed, Level 3
????????Operational Mode: Write Back
????????Location: Internal
????????Installed Size: 4096 KB
????????Maximum Size: 4096 KB
????????Supported SRAM Types:
????????????????Unknown
????????Installed SRAM Type: Unknown
????????Speed: Unknown
????????Error Correction Type: Single-bit ECC
????????System Type: Unified
????????Associativity: 16-way Set-associative
????????
結果表明都是回寫,如下:
Operational Mode: Write Back

?

三)內存一致性

write back會涉及內存一致性,涉有到一系列的問題:

1)多處理要系統更新cache時,一個處理器修改了cache的內容,第二個處理器將不能訪問這個cache,直到這個cache的內容被寫內存.
在現代處理器中硬件已經做了精心的設計,確保這種事情不會發生,硬件負責保持cache在各個CPU之間一致.

2)外圍硬件設備可以通過DMA(Direct Memory Access)訪問內存,而不讓處理器知道,也不會利用cache,這樣在內存和cache之間就會出現不同步的情況.
管理DMA的操作是操作系統的工作,比如設備驅動程序,它將保證內存與cache的一致性.

3)當在cache中的數據比內存中的數據老時,稱為stale.如果軟件初始化DMA,使設備和RAM之間傳遞數據,那么軟件必須告訴 CPU,cache中的條目必須失效.

4)當在cache中的數據比內存中的數據新時,稱為dirty.在設備驅動程序允許一個設備經DMA從內存讀數據時,它必須確保所有的dirty 條目寫進內存.也叫做flushing或sync cache

總結

以上是生活随笔為你收集整理的TLB和cache的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人av一区 | 国产盗摄一区二区三区在线 | 亚洲精品久久久久久无码色欲四季 | 国产不卡视频在线观看 | 三度诱惑免费版电影在线观看 | 丰满少妇被猛烈进入 | 污片免费在线观看 | 麻豆人妻少妇精品无码专区 | 污视频网站免费观看 | 动漫美女无遮挡免费 | 蘑菇福利视频一区播放 | 女人又爽又黄免费女仆 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 99国产精品无码 | 亚洲av无码乱码国产精品久久 | 日韩av在线中文字幕 | 蜜臀久久99精品久久一区二区 | 在线播放波多野结衣 | 日本美女一区二区 | 久久国产中文 | 一本久久综合亚洲鲁鲁五月天 | 美女屁股无遮挡 | 日韩视频网站在线观看 | 蜜臀av免费在线观看 | 夜夜嗨老熟女av一区二区三区 | 欧美成人免费播放 | 理论片亚洲 | 性欧美丰满熟妇xxxx性 | 狠狠躁18三区二区一区传媒剧情 | 91在线小视频 | 亚洲欧美一区二区三区情侣bbw | 日韩女同互慰一区二区 | 亚洲中国色老太 | 中国成人av | 粉嫩一区二区三区 | 性色av一区二区三区在线观看 | 免费男女乱淫真视频免费播放 | 日韩专区在线观看 | 黄视频网站在线看 | 亚洲一区免费看 | 成年人的视频网站 | 成人免费影片 | 亚洲一区av | 无码人妻精品一区二区三区蜜桃91 | 美女被男生免费视频 | 少妇爽 | 一级做a爱 | 潘金莲一级淫片aaaaaaa | 久久9999久久免费精品国产 | 国产精品无码AV | 国产夜色视频 | 久久成人国产 | 午夜精品福利在线观看 | 中文字幕一区三区 | 精品国产九九 | 中国少妇做爰全过程毛片 | 亚洲第一福利网站 | 无码内射中文字幕岛国片 | 毛片链接 | 天天做天天爱夜夜爽 | 17c在线| 日韩中文字幕在线看 | 小h片在线观看 | 激情欧美一区二区 | 欧美乱妇狂野欧美视频 | 伊人9999| 欧美777| 久久精品视频18 | 天堂视频一区二区 | 秋霞三区 | 久久久国际精品 | 内射后入在线观看一区 | 国产做a| 国产精品视频免费在线观看 | 黄色69| 最新版天堂资源在线 | 九一毛片 | 国内国产精品天干天干 | 亚洲精品无码久久久 | 黄色小电影网址 | 亚洲精品在线网站 | 好色视频tv | 精品国产鲁一鲁一区二区张丽 | 蜜桃视频在线观看www | 榴莲视频黄色 | 久久久久久久久久久91 | 午夜精品久久久久久久四虎美女版 | 国产精品日韩av | 少妇又紧又色又爽又刺激 | 欧美精品黄色片 | wwwxx欧美| 欧美操操操 | 国产国语videosex另类 | 久久久久国产一区二区 | 成人一二三| 日韩资源| 四虎国产精品成人免费入口 | 欧美日韩片 | 久久国产精品国产精品 |