挑战一:程序中的并行性有限。 解决方法:使用更好的算法和软件的体系结构。
挑战二:相对较大的通信开销。 多处理机中的远程访问会带来较大的延迟。 解决方法:架构师优化硬件架构,利用Cache分享数据;程序员少使用远地memory,多使用本地 memory。。
1.同一个向量里的元素之间是相互独立的,因此使用向量指令处理向量数据时硬件不必去检测(向 量内)数据冲突。 2.两个向量之间有可能会冲突,但硬件只需要检查一次(判断是否有相关),不需要为向量里的每个元素都 check 一次,减少了冲突检测的开销 3.减少了控制冲突,向量指令替代了整个循环期的标量指令 4. 向量指令访问内存有已知的访问模式,也就是访存模式固定
存储器-存储器架构缺点 1.因为存-存架构的源操作数和目的操作数都是在存储器中,所以存储器和部件通信带宽要求高; 2.由于冲突检测需要在内存进行,判断相关性困难; 3.启动开销大 存-存架构基本已经淘汰。
分段开采:当向量长度大于向量寄存器的长度时, 必须把长向量分成长度固定的段,然后循环分段处理,每次只处理一个向量段。分段操作是系统自动完成,对程序员透明。 例如N = 68,则循环次数为N / 64 =1 ,单独处理的元素个数为余数 4。先进行余数个元素的计算,之后进行循环计算。
跨距:mem中向量要提取部分的元素之间的距离 。
矩阵在mem中顺序存储,矩阵B*C,必定会有一个矩阵是不能顺序读出的,需要使用跨距(矩阵的列数)。