桶式移位器
桶式移位器(barrel shifter)是一種數碼電路,可以在一個時脈週期內,將資料字進行特定位元數的移位。桶式移位器可以用一串的數據選擇器實現,某一個數據選擇器的輸出是其他數據選擇器的輸入,其關係則視要位移的位元數而定。
例如,以一個四位元的桶式移位器為例,一開始的輸入是A, B, C及D,桶式移位器可以由輸入ABCD得到DABC、CDAB或BCDA,所有位元的資訊都會留下來,只是位置以循環組合的方式改變,桶式移位器有許多不同的應用,是微處理器中的一個重要成份。
實現
桶式移位器可以用平行的2×1數據選擇器的組合而成。對於8位元的桶式移位器,需要二個中間的訊號,分別表示位移四位元、二位元或是不位移,這是依S[2]和S[1]的值而定,訊號會再經過數據選擇器位移一位元,這是由S[0]控制。
int1 = IN , if S[2] == 0 = IN << 4, if S[2] == 1 int2 = int1 , if S[1] == 0 = int1 << 2, if S[1] == 1 OUT = int2 , if S[0] == 0 = int2 << 1, if S[0] == 1
較大的桶式移位器會有更多的中間訊號。
成本
n位元資料的桶式移位器,需要的數據選擇器數量為 .[1]。以下列出五種常見的資料字寬度及其桶式移位器需要的數據選擇器數量:
- 128位元 —
- 64位元 —
- 32位元 —
- 16位元 —
- 8位元 —
在FO4中,關鍵路徑的成本為(預估,不考慮線路延遲):
- 32位元:從18 FO4到14 FO4[2]
用途
桶式移位器常用的場合是用硬件實現浮點數運算時,若要進行浮點的加法或減法,兩個數字的有效位數需要對齊,也就是將較小的數字往右移,增加其次冪,直到兩個數字的次冪相等為止,實際作法是將二數的次冪相減,再利用桶式移位器右位移較小的數字,位移位元數即為二數的次冪的差。若不是用桶式移位器,而是一般較簡單的移位器,位移n位元需要n個時脈週期。
相關條目
參考資料
- ^ Kroening, D.; Strichman, Ofer. Decision Procedures. Springer. 2008.
p.159.
- ^ Revisiting the FO4 Metric. realworldtech.com. [2015-02-08]. (原始內容存檔於2012-03-13).
外部連結
- University of Hamburg for a useful Java Barrel shifter.
- Xilinx Application Note (頁面存檔備份,存於互聯網檔案館) Implementation of Barrel shifter using Xilinx FPGAs.
延伸閱讀
- Kroening, Daniel; Strichman, Ofer. Decision Procedures. Springer. 2008. ISBN 978-3-540-74104-6.
本條目部分或全部內容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。