从Computer Systems: A Programmer's Perspective扫描(不良)下面的图像。 (我向出版商道歉)。这将显示在第489页。
我很难理解这些计算中的一些非常。目前,令我不安的是M的计算,它应该是唯一地址的数量。 “唯一内存地址的最大数量。” 2 m 的含义是什么意思?我认为m计算为log 2 (M)。这似乎是循环的......
为了这篇文章,假设您要绘制一个示例,请假设以下内容:512组,每组8个块,每个块32个字,每个字8个字位
更新:到目前为止发布的所有答案都有帮助,但我仍然认为我遗漏了一些东西。 cwrea的回答为我的理解提供了最大的桥梁。我觉得答案是在我的精神语言的尖端。我知道它在那里,但我无法识别它。
为什么M = 2 m 但是m = log 2 (M)?
也许我缺少的细节是对于32位机器,我们假设M = 2 32 。这个单一事实是否允许我为m解决? m = log 2 (2 32 )?但是这让我回到了32岁......我不得不错过一些东西......
答案 0 :(得分:2)
m& M彼此相关,没有相互定义。他们称M为派生数量,但因为通常处理器/控制器是其使用的字长的限制因素。
在真实系统中,它们是预定义的。如果你有一个8位处理器,它通常可以处理8位存储器地址(m = 8)。由于您可以使用8位表示256个值,因此总共可以有256个内存地址(M = 2 ^ 8 = 256)。正如您所看到的,由于处理器的限制,我们从小m开始,但您总是可以决定要一个大小为M的内存空间,并使用它来选择可以根据word-size = log2处理它的处理器(M )。
现在,如果我们假设您的例子,
512套,每套8个,32个字 每块,每字8位
我必须假设这是一个8位字的8位处理器。此时,您描述的缓存大于您的地址空间(256个字)&因此毫无意义。
您可能想查看Computer Architecture Animations & Java applets。我不记得是否有任何缓存进入缓存结构(通常他们专注于行为),但它是我过去保存的资源,用于辅导建筑学生。
如果问题仍然没有意义,请随意进一步完善您的问题。
答案 1 :(得分:1)
M的两个方程只是一种关系。他们有两种说法相同的方式。但是,它们并不表示因果关系。我认为作者的假设是CPU设计者在开始时通过要求定义了唯一地址位的数量。那么M可以根据实现而变化。
答案 2 :(得分:1)
m是系统中内存地址的宽度,例如x86为32,x86-64为64。例如,x86上的块大小为4K,因此b = 12。块大小或多或少是指您可以从持久存储中读取的最小数据块 - 您将其读入内存,处理该副本,然后稍后将其写回。我相信标记位是高位t,用于查找本地缓存的数据,非常靠近CPU(甚至不在RAM中)。我不确定设置线部分,虽然我可以做出看似不合理的猜测,但不是特别可靠。
答案 3 :(得分:1)
循环......是的,但我认为只是声明两个变量m和M必须遵守等式。 M 可能是给定或假设的数量。
示例1:如果要将公式用于 M = 4GB(4,294,967,296字节)的主内存大小,则 m 将为32,因为 M = 2 ^ 32,即 m = log2( M )。也就是说,它需要32位来寻址整个主存储器。
示例2:如果假设您的主存储器容量较小,例如 M = 16MB(16,777,216字节),然后 m 为24,即log2(16,777,216)。
答案 4 :(得分:0)
似乎你对数学而不是建筑学的东西感到困惑。
2 ^ m(“2到m'次幂”)是2 * 2 ... m 2的。 2 ^ 1 = 2,2 ^ 2 = 2 * 2 = 4,2 ^ 3 = 2 * 2 * 2 = 8,依此类推。值得注意的是,如果您有一个m位二进制数,则只能表示2 ^ m个不同的数字。 (这是显而易见的吗?如果没有,可能有助于用10代替2并考虑小数位数)
log2(x)(“x的对数基数2”)是2 ^ x的反函数。也就是说,对于所有x,log2(2 ^ x)= x。 (这是一个定义!)
您需要log2(M)位来表示M个不同的数字。
请注意,如果从M = 2 ^ m开始并取两边的log2,则得到log2(M)= m。该表非常明确。