分类 体系结构 下的文章

翻译自 http://iram.cs.berkeley.edu/kozyraki/project/ee241/report/crossbar.html

The memory crossbar connects the multiple Load/Store units of the processor to the multiple memory sections. The L/S units are capable of issuing either a load or a store on every cycle, and as a result, the memory sections should, ideally, be capable of processing these requests at the same rate. In order words, if there are n L/S units, each issuing one memory accesses per cycle, then the crossbar must have a peak bandwidth of at least n words per cycle.

内存交叉开关是一种用于将多个处理器(内存)读写单元与多个内存区块相连接的结构。由于单个(内存)读写单元可在单个时钟周期内完成一次读或写操作,我们可以认为,在理想状态下,被连接的(单个)内存区块也应该具有相同的请求处理速度(即每时钟周期处理一个读或写请求)。也可以理解为,如果(在使用了内存交叉开关的内存系统中)CPU有n个(内存)读写单元,每个单元每时钟周期可完成一次读或写请求的话,那么在该存储交叉开关处至少有等价于每周期n次读写请求的最大带宽。

largexbar.gif

上图是该文章给出的内存交叉开关一种实现的图例。图中上侧为内存读写单元,下侧为内存模块,中部的横线表示总线,一条线就是一根完整的总线;这里有每种四根则表示有四组相同的总线,实心点表示内存读写单元,叉则表示开关。由于总线只有单一的所有权,一个周期内则只能供一个内存读写单元和一个内存模块使用,也正是上文最大n倍单总线吞吐量的原理。

在读某篇文章的时候提到了乱序处理器的执行架构,其中有一个instruction commit/retire的概念没能很好地理解。后来在Wikipedia上看到了一段简短的文字(参见 https://en.wikipedia.org/wiki/Instruction_window ),有了一个初步的认识,在此记录一下。

首先是instruction window指令窗口(同ROB,Re-Order Buffer,重排序缓冲区)的概念。根据介绍,乱序执行模型实际上是一种整体上顺序、局部乱序的执行模型,允许处理器在执行某一指令时试探性地执行接下来的一些指令。为了确保尽可能大的预测有效率,处于乱序执行中的指令必须等待自己的操作数就绪才可以执行。

由于试探性执行的结果可能出现错误,而后需要通过状态回滚来撤销错误的执行操作,所以处于试探性执行阶段的指令需要单都标记出来,这便是指令窗口。处在指令窗口中的指令都处于执行中的状态,既可能是在正常按顺序执行,也可能是在乱序执行技术下提前执行。出于硬件设计合理性、执行效率等因素考虑,允许处于乱序执行状态下的指令数应该是有限的,也就意味着指令窗口是有大小限制的。

如果指令窗口中的指令执行结果确认无误,则可以提交执行结果,离开指令窗口,这个动作在英语中就称作instruction commit/retire。此时,下一条指令可以进入指令窗口,开始执行。