簡體   English   中英

緩存了多少個緩存行?

[英]How many cache lines are cached?

好的,所以我找不到很多答案,這是內存管理中的一個簡單問題。 我知道,當計算機從內存中拉出時,它會根據您的處理器在緩存行中緩存32-64位內存。 我的問題是,它僅存儲1個高速緩存行的內存值還是多個(如果多個)?

例如說我們正在使用c ++,我使用for循環提取vector<int> ,然后使用這些整數將信息從另一個vector中拉出,該vector很可能不在內存中。 將其限定為2拉,然后將所有內容緩存或只是從內存中連續拉? 基本上,它將拉取vector<int>並將其存儲在高速緩存中,然后拉取另一個vector並將其也存儲在其他捕獲行中嗎? 因此,從那以后只拉兩次然后從其緩存的內存中獲取數據? 假設每個向量= 1個捕獲行的大小,這些數據值得。

編輯:好的,在同一行上...。我還有第二個問題:讓我們假設一會兒,我的初始vector<int>被調用並在for循環中進行迭代,然后引用多個vectors 當它緩存這些向量時,顯然會有一個限制,因此它將開始覆蓋先前的緩存,對嗎? 在哪種情況下,它將以其他方式在先前的緩存行,FIFO,FILO上寫入什么順序?

有不同類型的緩存。 通常,高速緩存的數量取決於處理器。 現代處理器具有3級緩存,其中最快(和最小)的高速緩存稱為L1,通常范圍在128kb和512kb之間,最慢(和最大)的高速緩存為1mb至4mb。

不論處理器體系結構如何,每次訪問內存都為64位長。 因此,使用64位長的操作數訪問內存是最有效的。

緩存也可以存儲來自不同頁面的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM