Matrix 向我解释这个已解决的矩阵规范化练习?

Matrix 向我解释这个已解决的矩阵规范化练习?,matrix,virtual-memory,Matrix,Virtual Memory,我们有一个包含32位数字的1024*1024矩阵,它将被标准化。假设虚拟内存中的页面大小为4KB,我们在工作时分配1MB的主内存来保存矩阵。假设我们需要10毫秒从光盘上传一页 a) 假设我们一次处理一列矩阵。如果按列将所有矩阵元素保存在虚拟内存中,将导致多少页错误遍历这些元素 答案是1024,但我不明白为什么会这样 b) 如果我们按行而不是按列工作呢 答案是1024页错误*2*1024 我们如何得到这两个答案,你能给我解释一下吗?由于矩阵条目的大小为32位,即4个字节,整个行或列可以存储在4字节

我们有一个包含32位数字的1024*1024矩阵,它将被标准化。假设虚拟内存中的页面大小为4KB,我们在工作时分配1MB的主内存来保存矩阵。假设我们需要10毫秒从光盘上传一页

a) 假设我们一次处理一列矩阵。如果按列将所有矩阵元素保存在虚拟内存中,将导致多少页错误遍历这些元素

答案是1024,但我不明白为什么会这样

b) 如果我们按行而不是按列工作呢

答案是1024页错误*2*1024


我们如何得到这两个答案,你能给我解释一下吗?

由于矩阵条目的大小为32位,即4个字节,整个行或列可以存储在4字节*1024=4KB的虚拟内存中。因为内存是用列填充的,所以我们可以在内存中只容纳一列

假设我们一列一列地浏览元素。在获取第一个条目时,我们看到虚拟内存中不存在此条目,因此我们必须加载它(即页面错误)。现在存储整个列,这样接下来的1023个元素就不会产生页面错误(它们都存在于内存中)。访问第二列的第一个元素时,会出现下一个故障。通常,我们每列有一个页面错误,这会导致1024个页面错误


现在我们按行遍历矩阵,每次访问元素时,它都不会包含在内存中。这一点很清楚,因为我们在内存中始终只有一列,并且我们从不按顺序访问同一列的元素。因此,每个条目都会产生一个页面错误,导致1024*1024个页面错误。

由于矩阵条目的大小为32位,即4字节,因此整行或整列可以存储在4字节*1024=4KB的虚拟内存中。因为内存是用列填充的,所以我们可以在内存中只容纳一列

假设我们一列一列地浏览元素。在获取第一个条目时,我们看到虚拟内存中不存在此条目,因此我们必须加载它(即页面错误)。现在存储整个列,这样接下来的1023个元素就不会产生页面错误(它们都存在于内存中)。访问第二列的第一个元素时,会出现下一个故障。通常,我们每列有一个页面错误,这会导致1024个页面错误


现在我们按行遍历矩阵,每次访问元素时,它都不会包含在内存中。这一点很清楚,因为我们在内存中始终只有一列,并且我们从不按顺序访问同一列的元素。因此,每个条目都会出现一个页面错误,导致1024*1024个页面错误。

我爱你胜过一切。2这个额外的因子从何而来?1024*2*1024?这个因素是错误的,您不能有比访问请求更多的页面错误。虽然这里需要做的工作比加载页面还多,但每256个条目,我们也必须重新加载主内存,但当这种情况发生时,我们仍然只有一个页面错误。我爱你胜过一切。2这个额外的因子从何而来?1024*2*1024?这个因素是错误的,您不能有比访问请求更多的页面错误。虽然这里需要做的工作比加载页面还多,但每256个条目,我们也必须重新加载主内存,但当这种情况发生时,我们仍然只有一个页面错误。