源内容(英文)
在计算机系统设计中,内存组织对于增强系统性能和效率至关重要。因此,人们设计了两种方式,CPU 根据这两种方式尝试访问不同级别的内存。这两种类型包括并行访问内存组织和分层访问内存组织。让我们通过本文深入探讨这些内存组织。
什么是并行访问内存组织?
在这种内存组织中,CPU 可以同时从所有内存级别访问数据,即如果它试图从第 1 级访问数据但没有成功获取。那么,它可以同时检查其他级别,如下图所示。
! Simultaneous Access Memory Organization
图 –并行访问内存组织
并行访问内存组织的平均内存访问时间
假设一个内存总共有三个级别,即 L1、L2、L3,并且 H1、H2、H3 是在相应级别找到数据的命中率。T1、T2、T3 是这些级别的访问时间。那么并行访问内存组织的平均内存访问时间为
> 平均内存访问时间
> = H1T1 + (1-H1)H2T2 + (1-H1)(1-H2)H3T3
> = H1T1 + (1-H1)H2T2 + (1-H1)(1-H2)1T3
> = H1T1 + (1-H1)H2T2 + (1-H1)(1-H2)*T3
因为如果数据在 L2 和 L3 中未找到,那么在 L3 中找到数据的概率将是 100%,所以这里使用了 H3=1。
什么是分层访问内存组织?
在这种内存组织中,CPU 无法同时从所有内存级别访问数据,因为它在这里仅连接到第 1 级内存。因此,数据将从其他级别传输到第 1 级,然后 CPU 才能访问它,如下图所示。
!Hierarchical Access Memory Organization
图 – 分层访问内存组织
分层访问内存组织的平均内存访问时间
假设一个内存总共有三个级别,即 L1、L2、L3,并且 H1、H2、H3 是在相应级别找到数据的命中率。T1、T2、T3 是这些级别的访问时间。那么分层访问内存组织的平均内存访问时间为
> 平均内存访问时间
> = H1T1 + (1-H1)H2(T1+T2) + (1-H1)(1-H2)H3(T1+T2+T3)
> = H1T1 + (1-H1)H2(T1+T2) + (1-H1)(1-H2)1(T1+T2+T3)
> = H1T1 + (1-H1)H2(T1+T2) + (1-H1)(1-H2)*(T1+T2+T3)
同样,这里将使用 H3=1,就像上面在计算并行访问内存组织的平均内存访问时间时一样。
此外,如果在 L1 中未找到数据,那么在 L2 中检查数据时的访问时间将是 T1+T2,后续级别以此类推。
分层访问内存组织
—
在这种组织中,CPU 始终仅直接连接到 L1,即第 1 级内存。
CPU 始终从第 1 级内存访问数据。
对于 L1 内存中遇到的任何“未命中”,CPU 不能直接从更高级别的内存级别(即 L2、L3、…..Ln)访问数据。首先,所需数据将从更高级别的内存级别传输到 L1 内存。只有这样 CPU 才能访问它。| 如果 H1 和 H2 是 L1 和 L2 内存级别的命中率,T1 和 T2 是相应的访问时间,那么平均内存访问时间可以计算为:
T=(H1T1)+((1-H1)H2*T2 | 如果 H1 和 H2 是 L1 和 L2 内存级别的命中率,T1 和 T2 是相应的访问时间,那么平均内存访问时间可以计算为:
T=(H1T1)+((1-H1)H2*(T1+T2) |
注意:
- 默认情况下,计算机系统的内存结构是按分层访问内存组织设计的。之所以这样,是因为在这种类型的内存组织中,由于局部性原理,平均访问时间得以减少。
- 并行访问内存组织用于实现 直写缓存。
- 在这两种类型的内存组织中,最后一级内存的命中率始终为 1。
结论
总之,并行访问内存组织是一种允许 CPU 在所有内存级别中检查所需数据的技术,它可以并行地在各个层次进行查找,从而在某些特定场景下提高效率。而分层访问内存组织则是更普遍的默认设计,利用程序的局部性原理来优化平均访问时间。理解这两种方式的区别,有助于我们更好地深入计算机系统的底层设计原理。