【问题标题】:Explain to me this solved matrix normalization exercise?向我解释这个已解决的矩阵归一化练习?
【发布时间】:2015-06-22 12:48:08
【问题描述】:

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

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

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

b) 如果我们按行而不是按列工作会怎样?

答案是 1024 页错误*2*1024

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

【问题讨论】:

    标签: matrix virtual-memory


    【解决方案1】:

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

    假设我们逐列遍历元素。获取我们看到的第一个条目,这个条目不存在于虚拟内存中,因此我们必须加载它(即页面错误)。现在整个列都被存储了,因此接下来的 1023 个元素不会产生页面错误(它们都存在于内存中)。访问第二列的第一个元素时出现下一个错误。一般来说,我们每列有一个页面错误,这会导致 1024 个页面错误。

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

    【讨论】:

    • 我爱你胜过一切。
    • 2 的额外因数从何而来? 1024 * 2 * 1024?
    • 那个因素是错误的,你不能有比访问请求更多的页面错误。虽然这里要做的工作比加载页面多,但每 256 个条目,我们也必须重新加载主内存,但当这种情况发生时,我们仍然只有一个页面错误。
    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多