繁体   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