Pitfall Too small an address space
在 DEC 和卡内基梅隆大学合作设计新的 PDP-11 计算机系列仅仅五年后,很明显他们的创造有一个致命的缺陷。 IBM 在 PDP-11 之前 6 年宣布的架构仍在蓬勃发展,但在 25 年后进行了微小的修改。 因包含不必要的功能而受到批评的 DEC VAX 在 PDP-11 停产后销售了数百万台。 为什么?
相比之下,PDP-11 的致命缺陷是其地址的大小(16 位) IBM 360(24-31 位)和 VAX(32 位)的地址大小。 地址大小限制了程序长度,因为一个程序的大小和程序需要的数据量必须小于2个地址大小。 地址大小很难改变的原因是它决定了可以包含地址的任何东西的最小宽度:PC、寄存器、内存字和有效地址算法。 如果从一开始就没有扩展地址的计划,那么成功更改地址大小的机会非常渺茫,通常意味着该计算机系列的终结。 Bell 和 Strecker (1976) 是这样说的:
在计算机设计中,只有一个错误很难恢复——没有足够的地址位用于内存寻址和内存管理。 PDP-11 沿用了几乎所有已知计算机的不间断传统。 [P.2]
最终因缺少地址位而饿死的部分成功计算机列表包括 PDP-8、PDP-10、PDP-11、Intel 8080、Intel 8086、Intel 80186、英特尔 80286、摩托罗拉 6800、AMI 6502、Zilog Z80、CRAY-1 和 CRAY X-MP。
古老的 80x86 产品线具有两次扩展的特点,第一次是在 1985 年使用 Intel 80386 扩展到 32 位,最近使用 AMD Opteron 扩展到 64 位。
Pitfall Ignoring the impact of the operating system on the performance of the memory hierarchy
图 B.29 显示了由于操作系统花费在三个大型工作负载上而导致的内存停顿时间。 大约 25% 的停顿时间要么花在操作系统的未命中上,要么是由于对操作系统的干扰而导致应用程序未命中的结果。
Pitfall Relying on the operating systems to change the page size over time
Alpha 架构师有一个精心设计的计划,通过增加页面大小,甚至将其构建到其虚拟地址的大小,随着时间的推移来扩展架构。 当需要使用后来的 Alpha 增加页面大小时,操作系统设计者犹豫不决,修改了虚拟内存系统以增加地址空间,同时保持 8 KiB 页面。
其他计算机的架构师注意到非常高的 TLB 未命中率,因此向 TLB 添加了多个更大的页面大小。 希望操作系统程序员将对象分配到有意义的最大页面,从而保留 TLB 条目。 经过十年的尝试,大多数操作系统都使用这些“超级页面”仅用于精选功能:映射显示内存或其他I/O 设备,或为数据库代码使用非常大的页面。
Concluding Remarks
主存储器的原材料与最便宜的计算机中的原材料相同,这一事实凸显了构建内存系统以跟上更快处理器的步伐的难度。 局部性原则在这里帮助了我们——它的健全性在当前计算机的所有内存层次结构中都得到了证明,从磁盘到 TLB。然而,内存的相对延迟不断增加,在 2016 年需要数百个时钟周期,这意味着程序员和编译器编写者如果希望他们的程序运行良好,就必须了解缓存和 TLB 的参数。