計算機體系結構-第四章-向量處理機
阿新 • • 發佈:2019-02-14
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 提高向量處理機效能的常用技術
- 設定多個功能部件
- 採用連結技術,加快一串指令的執行速度(實質相當於變縱向為橫向)
- 迴圈開採(分段)
- 多處理機
連結使用條件:
- 沒有功能部件衝突和暫存器衝突
- 連結只能發生在上一條指令的結果送入向量暫存器的那個週期
- 前向連結了好幾個結果時,這些結果的送入暫存器的時刻必須相同