前面提到,现代计算机是以存储器为中心工作的。

  频带平衡:
图3.1中可以看到,一般计算机中的存储器有4个访问源。当然,这里所指的存储器可以广义地来理解,它不仅指主存储器(内存),也包括其它各种各样的存储器。由此可以看出,存储器的访问速度能不能跟得上系统的需要,是影响整个计算机系统性能的极为重要的关键问题,这就是存储器的频带平衡问题。

  假设有一台速度为200MIPS(每秒钟执行2亿条指令)的计算机,这在目前这是很普通的机器。那么,各种访问源的频带计算如下:

CPU取指令:200MW/s(假设每条指令的长度为一个字(W))。
CPU取操作数和保存运算结果:400MW/s(平均每条指令访问两个操作数)。
各种输入输出设备访问存储器:5MW/s。

   三项相加,要求存储器的频带宽度不低于605MW/s。如果存储器的字长就是一个字,则要求存储器的访问周期不大于16.5ns。但是,实际上目前作为主存储器的DRAM(动态随机存储器)的工作周期为200ns左右(一般产品上标出的60ns是指数据读出时间,由于DRAM是一种破坏性读出的存储器,读出之后必须重新写入,另外,还有线路恢复和再生等都需要的时间),两者相差100倍以上。

  一般来说,有三条途径可以解决存储器的频带平衡问题。
  1、多个存储器并行工作,并且用并行访问和交叉访问等方法提高存储器的访问速度。具体方法将在下一节中介绍。
  2、设置各种缓冲存储器。例如,先行缓冲栈(Lookahead),包括预取指令缓冲栈,操作数先行缓冲栈,运算结果后行缓冲栈等。就预取指令缓冲栈而言,如果能把一个短的循环程序都装入缓冲栈中,则在整个循环程序的执行过程中都不必到主存储器中取指令。
  另外,通用寄存器实际上也是一种缓冲存储器。
  存放在通用寄存器内的数据可以被重复使用。据统计,在许多程序中,数据在通用寄存器中被重复访问的次数平均达两次以上。这就大大缓解了对存储器的压力。
  
3、采用存储系统。特别是Cache存储系统,这是目前计算机系统中提高存储器速度最有效的一种方法。一般计算机中都有两级Cache存储器,其中第一级在CPU芯片内部,速度很快,容量比较小,另一级在主板上,容量比较大,速度稍低些。