計算機算術
進位選擇加法器
假設你必須出發前往某地,但要到最後一刻才會知道兩條路哪條是通的。一個選項是等。更大膽的選項是現在就派出兩輛車——一條路各一輛——等閘門終於開時,直接挑出那輛走的是有效道路的車。進位選擇加法器對加法低位半邊送來的未知進位,玩的正是這個遊戲。
把字組切成上下兩半。下半部正常相加,最後產生它的進位輸出。但上半部不等那個進位,而是同時算出兩個完整答案:一個假設進來的進位是 0,一個假設是 1。兩者在下半部還在算時就平行完成。等真正的進位終於到達,一個多工器只要挑出與之相符的那份預先算好的上半部答案即可。緩慢的串列相依被一次快速的最終選擇取代,因為昂貴的加法早已推測性地提前做完。
代價誠實又明顯:上半部的加法器被複製了一份,所以你為那部分付出近乎雙倍的面積,換來不必等一個進位。把好幾個這樣的區塊串起來,能讓進位的決定在區塊之間漣波、而非在每個位元之間漣波,使延遲大約隨寬度的平方根增長——比漣波快,又比完整前瞻簡單。它是廣受喜愛的折衷設計,也清楚地展示了這個領域反覆出現的招數:花費冗餘硬體,把一個相依關係從關鍵路徑上移除。
做一次 16 位元加法時,低 8 位元正常計算。同時高 8 位元被加兩次——一次假設進位輸入為 0,一次假設為 1。當低半部的進位到達,一個多工器挑出相符的高位結果。兩個高位和都已提早就緒,所以只剩一個多工器的延遲。
預先算出上半部的兩種可能,等真正進位確定後挑一次。
進位選擇藉由複製上半部加法器,以面積換速度——它沒有消除進位相依,只是把它藏在平行完成的工作後面。選擇不等的區塊大小(前面的區塊較小)可平衡延遲,把最壞情況再削一些。
又称
另见