`
netcome
  • 浏览: 466258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AIX性能调整——硬件层次结构

    博客分类:
  • AIX
阅读更多

通常,从一个硬件级别移动到另一级别所需要的时间主要由较低级别的等待时间(从发出请求到接受到第一批数据的时间)组成。

固定磁盘

对于一个在单机系统中运行的程序而言,最慢的操作是从磁盘上取得代码或数据,这是因为有下列原因:

  • 必须引导磁盘控制器直接访问指定的块(排队延迟)。
  • 磁盘臂必须寻道以找到正确的柱面(寻道等待时间)。
  • 读/写磁头必须等候直到正确的块旋转到它们下面(旋转等待时间)。
  • 数据必须传送到控制器(传送时间)然后传递到应用程序中(中断处理时间)。

除了程序中显式的读或写请求以外,还有许多原因导致磁盘操作缓慢。频繁的系统调整活动证明是不必要地跟踪了磁盘 I/O。

实内存

实内存通常称为随机存取存储器或 RAM,它比磁盘速度快,但每个字节的开销非常昂贵。操作系统尽量只将当前使用的代码和数据保存在 RAM 中,而将任何额外的内容存储在磁盘上,或者决不首先将它们带入 RAM 中。

然而,RAM 的速度不一定比处理器快。通常在硬件意识到 RAM 访问需求与处理器可使用数据或指令的时间之间,会出现许多处理器周期的 RAM 等待时间。

如果要访问存储到磁盘上(或者尚未调进)的某一虚拟内存页,那么会产生一个缺页故障,并且程序的执行暂挂直到该页从磁盘读取。

转换后备缓冲区(TLB)

使程序员不会受限于系统的物理局限性的方法是实现虚拟内存。程序员在设计和编写程序时认为内存非常大,系统将负责将程序中指令和数据的虚拟地址转换成需要用来从 RAM 取得的指令和数据的实际地址。因为这个地址转换过程可能很费时,系统将最近访问过的虚拟内存页的实际地址保存在一个叫转换后备缓冲区(TLB)的高速缓存中。

只要运行中的程序继续访问程序和数据页中的一小部分,那么完整的从虚拟到实际页地址的转换过程就不需要在每次 RAM 访问的时候都重做一次。当程序试图访问的虚拟内存页没有 TLB 入口(即 TLB 未命中)时,那么需要大量的处理器周期(即 TLB 未命中等待时间)来进行地址转换。

高速缓存

为了将程序必须经历的 RAM 等待时间减到最小,系统为指令和数据组织了高速缓存。如果所需的指令和数据已在高速缓存中,那么产生高速缓存命中,处理器就可在下一个周期立刻使用该指令或数据。否则产生高速缓存未命中,伴随有 RAM 等待时间。

在某些系统中,有两到三级高速缓存,通常称它们为 L1、L2 和 L3。如果一个特殊的存储器引用导致 L1 未命中,那么检查 L2。如果 L2 产生未命中,那么引用转至下一个级别,要么是 L3(如果存在),要么是 RAM。

高速缓存的大小和结构根据型号的不同而有不同,但是有效使用它们的原理是相同的。

流水线和寄存器

流水线型超标量体系结构使得在某些情况下可以同时处理多个指令。大批的通用寄存器和浮点寄存器使得可以将相当多的程序数据保存在寄存器中,而不需要频繁存储和重新装入。

可以设计优化编译器最大限度地利用这些能力。当生成产品程序时,无论程序有多小编译器的优化函数都应该能使用。Optimization and Tuning Guide for XL Fortran, XL C and XL C++ 描述了如何调整程序以获得最大性能。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics