1. 程式人生 > >計算機體系結構-第四章-向量處理機

計算機體系結構-第四章-向量處理機

1 向量處理機相對標量處理機的優勢

向量處理機的實質是用一條指令(向量指令)發起對整個向量中的所有元素的訪存操作流水化處理這些元素(因為他們需要進行的操作相同),從而減少指令獲取和解碼的頻寬

對於向量A=[1,2,3]

A+A

代替迴圈

for i in len(A):
	Ai+Ai

減少了很多顯式指令的獲取和解碼,同時後者每次+都要訪問一次主存得到向量的一個元素,而向量指令訪存操作是為向量中的所有元素髮起的,相對於訪問 cache 而言更高的訪問主存的延遲被均攤了

2 向量的處理方式和對應的處理機結構

對於只包含一個運算子的向量計算(如:A+B) 縱向和橫向方式沒有區別
對於包含多個運算子

的向量計算(如:A*(B+C)) 縱向明顯比橫向有優勢,如減少資料相關

例如計算 A*(B-C)
1 橫向 - 在標量處理機中使用

//以元素為單位 整體計算A*(B-C)
for i in len(A):
	bi-ci->qi
	ai*qi->di
//每次迴圈都存在資料相關

2 縱向 - 在向量處理機中使用 儲存器儲存器結構

//先計算B-C(只有一個運算子,縱向和橫向沒區別,相當於以元素為單位整體計算B-C)
for i in len(B):
	qi <-bi-ci
//再計算A*Q
for i in len(A):
	ai*qi->di
-----表示成向量指令就是---------
B-C->Q
A*Q->D
//由於先算出整體q,避免了資料相關

3 縱橫向 - 在向量處理機中使用 暫存器暫存器結構

int 分段數 =2;
for k in 分段數:
	for m in len(B)/分段數:
		i = m+k*len(B)/分段數
		qi <-bi-ci
	for n in len(A)/分段數:
		i = n+k*len(B)/分段數
		ai*qi->di

3 提高向量處理機效能的常用技術

  1. 設定多個功能部件
  2. 採用連結技術,加快一串指令的執行速度(實質相當於變縱向為橫向)
  3. 迴圈開採(分段)
  4. 多處理機

連結使用條件:

  • 沒有功能部件衝突暫存器衝突
  • 連結只能發生在上一條指令的結果送入向量暫存器的那個週期
  • 前向連結了好幾個結果時,這些結果的送入暫存器的時刻必須相同

4 向量處理機效能評價

5 參考

向量處理器
百度百科