交叉访问存储器的工作原理如图4.13所示,整个存储器由多个模块组成,每个模块称为一个存储体。地址码的低位部分是存储体的体号,高位部分是存储体的体内地址。
图 4.13 交叉访问存储器的组成
  假设一个采用交叉方式工作的主存储器及组成这个主存储器的各个存储体的参数如下:
  m:每个存储体的容量,通常用地址码的低log2 m位作为每个存储体的体内地址。
  n:存储体的个数,通常用地址码的高log2 n位作为译码器的输入,而这个译码器的n个输出作为各个每个存储体的使能输入(相当于存储器芯片中的片选信号),只有被译码器选中的那个存储体才能进行读写操作。
  j:每个存储体的体内地址,j=0,1,2,...,m-1。
  k:存储体的体号,k=0,1,2,...,n-1。
  则这个存储器的地址A的计算公式为:A=n×j+k;
  如果已知这个存储器的地址为A,可以计算出对应存储体的体号和它的体内地址:
  存储器的体内地址Aj的计算公式:Aj=
  存储器的体号Ak的计算公式。Ak=A mod n。
  则这个存储器的地址A的计算公式为:A=m×k+j。
  如果已知存储器的地址为A,可以计算出与这个地址对应的模块编号和这个模块的内部地址:
  模块的内部地址Aj的计算公式:Aj=A mod m。
  模块的编号Ak的计算公式:Ak=
  为了提高交叉访问存储器的工作速度,通常要采用如下两项措施:
  (1)采用交叉编址方式
  下面举一个简单的例子来说明交叉编址方法。
  一个由8个存储体构成的,总容量为64的主存储器的地址编写方法如图4.14所示。
图4.14 由8个存储体构成的主存储器的交叉编址方法
  (2)分时启动
  在一个存储器周期Tm内,n个存储体必须分时启动,启动的时间关系如图4.15所示。
  如果每个存储体的访问周期为Tm,则由n个存储体构成的主存储器,各存储体的启动间隔t为:t=
  从图4.15看到,采用交叉方式工作的存储器,实际上是一种采用流水线方式工作的并行存储器系统。在连续工作的情况下,在仍然保持每个存储体的访问速度不变的情况下,而整个存储器的访问速度可望提高n倍。
  在图4.15中,每个存储体的访问周期为Tm,而整个存储器的访问周期缩短到t。
图 4.15 交叉访问存储器的分时启动
  目前的计算机系统一般都存在主存储器速度远远低于CPU速度的问题,在多处理机系统中这个问题尤为突出。除了采用多级高速Cache之外,采用交叉访问存储器也是一种很好的方法。
  采用交叉访问方式能够大幅度提高主存储器的速度,目前已经在共享主存储器的多处理机系统中得到广泛应用。许多高速的单处理机也采用了交叉访问方式的存储器作为主存储器。
  直观地看,增加存储体个数,能够提高主存储器的速度,但是,主存储器的速度不是随存储体个数的增加而线性提高的。例如,在有的大型计算机中采用32个存储体低位交叉来构成主存储器,但是主存储器的速度只比单个存储体高10倍左右,其根本原因是存在有访问冲突。