缓存了多少缓存行?
How many cache lines are cached?
好的,所以我找不到太多答案,这是内存管理中的一个简单问题。我知道当计算机从内存中提取数据时,它会根据您的处理器在缓存行中缓存 32-64 位内存。我的问题是它只存储 1 个缓存行的内存还是多个,如果多个是多少?
例如,假设我们使用的是 C++,我使用 for 循环提取 vector<int>
,然后我使用这些整数从另一个 vector
中提取信息,这很可能不在任何地方在记忆中靠近它。这是否符合 2 次拉取的条件,然后所有内容都被缓存,或者只是不断地从内存中拉取?基本上,它会拉取 vector<int>
并将其存储在缓存中,然后拉取另一个 vector
并将其也存储在不同的捕获行中吗?因此从那时起只拉两次然后从它的缓存内存中获取?假设每个向量 = 1 个捕获线数据的大小。
编辑:好的,在同一条线上....我有第二个问题:让我们暂时假设我的初始 vector<int>
被调用并在 for 循环中迭代,然后引用多个vectors
。当它缓存这些向量时,显然它会有一个限制,所以它会开始覆盖以前的缓存,对吗?在哪种情况下,它会以什么顺序覆盖之前的缓存行、FIFO、FILO,或者其他方式?
有不同类型的缓存。通常,缓存的数量取决于处理器。现代处理器有 3 级缓存,其中最快(和最小)的称为 L1,通常在 128kb 到 512kb 之间,最慢(和最大)的是 1mb 到 4mb。
无论处理器架构如何,对内存的每次访问都是 64 位长。因此使用64位长操作数访问内存是最有效的。
缓存也可以存储来自不同页面的内存。
好的,所以我找不到太多答案,这是内存管理中的一个简单问题。我知道当计算机从内存中提取数据时,它会根据您的处理器在缓存行中缓存 32-64 位内存。我的问题是它只存储 1 个缓存行的内存还是多个,如果多个是多少?
例如,假设我们使用的是 C++,我使用 for 循环提取 vector<int>
,然后我使用这些整数从另一个 vector
中提取信息,这很可能不在任何地方在记忆中靠近它。这是否符合 2 次拉取的条件,然后所有内容都被缓存,或者只是不断地从内存中拉取?基本上,它会拉取 vector<int>
并将其存储在缓存中,然后拉取另一个 vector
并将其也存储在不同的捕获行中吗?因此从那时起只拉两次然后从它的缓存内存中获取?假设每个向量 = 1 个捕获线数据的大小。
编辑:好的,在同一条线上....我有第二个问题:让我们暂时假设我的初始 vector<int>
被调用并在 for 循环中迭代,然后引用多个vectors
。当它缓存这些向量时,显然它会有一个限制,所以它会开始覆盖以前的缓存,对吗?在哪种情况下,它会以什么顺序覆盖之前的缓存行、FIFO、FILO,或者其他方式?
有不同类型的缓存。通常,缓存的数量取决于处理器。现代处理器有 3 级缓存,其中最快(和最小)的称为 L1,通常在 128kb 到 512kb 之间,最慢(和最大)的是 1mb 到 4mb。
无论处理器架构如何,对内存的每次访问都是 64 位长。因此使用64位长操作数访问内存是最有效的。
缓存也可以存储来自不同页面的内存。