第二章 高速乘法器

2021-06-21 09:09:30 字數 3124 閱讀 4485

第二章

乘法器

有關booth演算法,很多資料介紹;我也沒仔細研究過;這裡就不多說了。apo支援32位有符號數乘法,最高位是符號位,尾數是31位。無符號數乘法支援到31位。apo支援單精度浮點數、雙精度浮點數乘法。apo中,符號位、浮點對階等總是單獨邏輯電路實現;乘法器只是解決尾數相乘部分。

1、apo 編碼

2個32位尾數(最高位為0)a,b相乘。a是被乘數,b是乘數。apo編譯碼單元對乘數b是2位一組同時掃瞄產生16個部分積。當bibi-1(i =1--31)的2位數是00,選中0為部分積;01,選中a為部分積;10,選中2a為部分積;11,是3 =4-1,所以選中-a為部分積,但更高的2位數需加1。乘數b的最高2位只可能是01、10、00;所以其對應部分積為正數。apo編譯碼單元將32位乘數b對應的原本32個部分積通過加1編碼、4選1解碼壓縮成16個部分積。加1編碼:8位一組,輸出為m。

m0 = b0 + c0, m1 = b1 + c1;c1 = c0&b0;

c2 = (c0|b0)&b1 = !(!(c0&b1)& !(b0&b1));

m2 = b2 + c2, m3 = b3 + c3;

c3 = (c0|b0)&b1&b2 = !(!(c0&b1&b2) &!(b0&b1&b2))

c4 = (c2|b2)&b3 = !(!(c0&b1&b3) &!(b0&b1&b3) & !(b2&b3))

如果b2、b3 = 1,c2 = 0;那麼 c3 = 0, m2m3 = 11, c4 = 1。

如果c2、b3 = 1,b2 = 0;那麼 c3 = 0, m2m3 = 11, c4 = 1。

如果b2、b3 = 1,c2 = 1;那麼 c3 = 1, m2m3 = 00, c4 = 1。

只要 b3 = 0, 那麼 c4 = 0。

m4 = b4 + c4, m5 = b5 + c5;

c5 = !(!(c0&b1&b3&b4)&!(b0&b1&b3&b4)& !(b2&b3&b4));

c6 = (c4|b4)&b5

=!(!(c0&b1&b3&b5)& !(b0&b1&b3&b5)&!(b2&b3&b5)& !(b4&b5));

m6 = b6 + c6, m7 = b7 + c7;

c7 =

!(!(c0&b1&b3&b5&b6)&!(b0&b1&b3&b5&b6)&!(b2&b3&b5&b6)& !(b4&b5&b6))

c0 = 0;

c6 = !(!(b0&b1&b3&b5) & !(b2&b3&b5) &!(b4&b5));

c8 = (c6|b6)&b7 =

!(!(b0&b1&b3&b5&b7) &!(b2&b3&b5&b7) & !(b4&b5&b7) &!(b6&b7));

c0 = 1;

c6 = !(!(b1&b3&b5) & !(b0&b1&b3&b5) &!(b2&b3&b5) & !(b4&b5));

c8 = (c6|b6)&b7 =

!(!(b1&b3&b5&b7) & !(b2&b3&b5&b7) &!(b4&b5&b7) & !(b6&b7));

所以,8位乘數的進製鏈需2級門延時;16位乘數的進製鏈採用組內(8位)超前進製方式,組間為選擇進製方式。這樣,因每乙個組是並行運算;產生c8需2級門延時;選擇進製需2級門延時。產生編碼結果與進製共需4級門延時,還需考慮解碼4選1電路的3級門延時;所以16位乘數總共需7級門延時。32位乘數需使用流水線技術,第一級低16位乘數;第二級高16位乘數。apo編譯碼單元將32位乘數壓縮產生16個部分積,分為高低8個部分積。這樣,原先需基於4-2壓縮器的第一級4個壓縮單元將部分積壓縮成carry、sum形式的兩行部分積;使用流水線,可以減少一半的4-2 壓縮器,只是2套。apo編譯碼單元與這2套4-2壓縮器就為第一級流水部件。在第二個時鐘的上公升沿存入暫存器l1;同時高16位乘數開始第一級。假設乙個門延時為19ps;那麼,第一級是7+6=13級門延時=247ps;時鐘週期是250ps。之後,在第二個時鐘的上公升沿后,第二級1個壓縮單元將前面的4行部分積資料再壓縮成carry、sum形式的兩行部分積,在第三個時鐘的上公升沿存入暫存器l2。之後;在第三個時鐘的上公升沿后,第**1個壓縮單元將前面的2組4行部分積資料(一組來自l2,另一組剛形成)再次壓縮成carry、sum形式的兩行部分積共1組2行資料。該級的門延時為2級4-2壓縮器的12級門延時=228ps。在第四個時鐘的上公升沿存入暫存器l3。最後用64位超前進製加法器(cla)完成最終兩行部分積的快速求和結果;並在第五個時鐘的上公升沿回存到乘數b、被乘數a的位置或進入下乙個乘加流水部件。所以,乙個指令週期,可計算2對32位數的乘法。總門數應該不到4000門。實際上,還需考慮4-2壓縮器、流水部件與除法、開方運算復用;減少總的邏輯門數。

除法器的設計是最累的,我大約花了7天7夜。基16的32位、64位除法運算總算完成,32位除法速度跟乘法運算一樣2g/s。還要考慮開方運算,及乘法運算的邏輯門共享等;估計會在更後面的章節介紹。實現32位的算術運算等的流水線;在這稱為一根管線。實現雙精度浮點運算則需要2根管線。一根管道包含8條管線,流處理器總共有256條管道。所以,乙個流處理器的速度:

256*8*2g = 4t flops/s。

MySQL第二章總結 Mysql第二章 儲存引擎

1 本章目標 儲存引擎 資料型別 重點 2 儲存引擎 在關係型資料庫中,資料儲存在表中,表由行和列組成。開發中,可能需要各種不同的表,有的表簡單,有的表複雜,有的表讀取快,有的讀取資料慢,有的表更新快等。根據對資料的不同的處理需求,使用不同的儲存引擎,可以將mysql資料庫的效能發揮到最大。查詢my...

領悟(第二章)

當火車緩緩駛進車站的時候,夜幕已經降臨了。終於到了!望著窗外鐵道兩旁的燈火,我的內心不禁再一次的激動起來,一路上對今後在這個大都市的未來生活的想象已經讓我從昨天晚上上車一直興奮到現在了!平常這個時候應該正和朋友們一起在酒吧聊天吧,朋友們,你們現在還在談論我來這裡的目的麼?說實話,這個問題連我自己都說...

第二章 入門

第二章 入門 1 django 安裝 使用 django 的唯一先決條件是安裝 python 在 linux 平台可能包括如下步驟 2 tar xzvf django tar.gz。3 cd django 4 sudo python setup.py install。2 匯入 django模組 im...