Równoległe komórki sumujące przedrostek w Negabinary


14

Usiłuję zaprojektować równoległy sumator prefiksów dla sumatora opartego na negabinary. Negabinary to podstawa zamiast znanego binarnego base . Każdy 1-bitowy sumator generuje sumę i dwa (zamiast jednego w formacie binarnym) przeniesienia przechodzą do następnego sumatora.22

Aby przyspieszyć dodawanie, chcę użyć równoległej struktury przedrostka, takiej jak podana poniżej struktura Ladnera-Fischera. Znam funkcjonalność fioletowej komórki w systemie binarnym, ale nie jestem pewien, jak mógłbym uzyskać tę samą funkcjonalność w systemie negabinarnym.

Powodem, dla którego to robię, jest po prostu dla zabawy, nie znalazłem jeszcze żadnych zastosowań dla negabary.

Wzory do obliczania sumy i przenosi:

si=aibi(ci++ci)

ci+1+=ai¯bi¯ci+¯ci

ci+1=aibici¯+aici+ci¯+bici+ci¯

Struktura drzewa Ladner-Fischera:

wprowadź opis zdjęcia tutaj

Jeśli coś jest niejasne, nie wahaj się zapytać.


Chociaż może to być interesujące pytanie, nie wydaje się to pytaniem elektrycznym i lepiej mieć szczęście, biorąc je na matematykę SE.
Redja

3
Umieściłem to tutaj, ponieważ uważam, że ludzie z EE mają większe doświadczenie w logice przenoszenia, projektowaniu dodatków itp.
gilianzz

To jest całkowicie pytanie EE
skok napięcia

Wygląda na to, że potrzebujesz więcej niż dwóch wyników na przeniesienie. Czy nie potrzebujesz generować i propagować zarówno dla noszenia, jak i pożyczania?
surowy

Zakładam, że mówisz o strukturze Ladnera-Fischera. To był tylko przykład pokazania równoległego drzewa prefiksów. Każdy 1-bitowy sumator ujemny generuje sumę, przeniesienie dodatnie i ujemne. Nie jestem pewien, czy możemy użyć koncepcji generowania i propagowania z negabinary.
gilianzz

Odpowiedzi:


1

Prawdopodobnie spędziłem więcej czasu na tym pytaniu niż powinienem, ale oto moje ustalenia.

Nie mogę znaleźć żadnego przykładu „czystego” równoległego sumatora przedrostków dla liczb ujemnych. Myślę też, że to otwarty problem, ponieważ nie widziałem żadnego dowodu, że nie jest to możliwe.

Najbliżej, jak mogę cię zdobyć, jest zastosowanie dwuetapowego negatywnego dodatku negabinarnego (często w literaturze skróconego nnba). Opiera się na następującej właściwości:

Niech i . Są to w zasadzie operacje XOR z odpowiednio i . Następnie możesz to udowodnić g ( x ) = x n - 1 ¯ x n - 2 . . . x 1 ¯ x 0f(x)=xn1¯xn2...x1¯x0g(x)=xn1xn2¯...x1x0¯0xAA...AA0x55...55

(a+nbb)=g(f(a)+f(b)+1)

Gdzie lewa strona jest sumą ujemną , podczas gdy po prawej stronie jest normalną sumą binarną.+nb+

Suma ujemna może być po prostu odwrócona przy użyciu tej samej właściwości, ale z operandem zerowym:

x=g(f(x)+f(0)+1)

Aby więc znaleźć sumę przy użyciu równoległych sumatorów prefiksów, możesz:

  1. Oblicz i , tj. odwracając każdy nieparzysty kawałek liczb ujemnychf(a)f(b)
  2. Oblicz regularną sumę binarną, ustawiając bit przenoszenia dla LSB ( ), prowadząc do pierwszej sumy pośredniej .+1s1
  3. Odwróć wszystkie bity (to jest ). To jest koniec pierwszej sumy, a zarazem rozpoczęcie inwersji.s1f(g(s1))
  4. Zwiększ wynik o 0xAA...AB( ) przy użyciu sumatora równoległego prefiksu, uzyskując drugą sumę pośrednią=f(0)+1s2
  5. Oblicz (odwracając każdy parzysty bit), aby znaleźć ostateczną sumę negabinarną.g(s2)

W rzeczywistości próbowałem znaleźć „czysty” równoległy sumator prefiksów, ale uznałem, że jest to zbyt skomplikowane na czas, jaki chciałem na to poświęcić. Dlatego:

Cały punkt dodawania równoległych prefiksów polega na znalezieniu operacji która pozwala łatwo obliczyć (w tym przypadku 2) przenosi z tych bitów. Jako dodatkowe ograniczenie operacja musi być asocjacyjna, aby mogła być obliczana równolegle. Na przykład, w zasadzie wyklucza to dowolny operator NOT (który nie jest częścią podwójnej negacji). Na przykład: nie jest operatorem asocjacyjnym, ponieważ{0,1}n×{0,1}n{0,1}nab=ab¯

(ab)c=ab¯c¯a(bc)=abc¯¯

Zauważ, że operator logiczny dla przeniesień w twoim pytaniu zawiera mieszane terminy i , co uniemożliwia użycie go takim, jakim jest. W przypadku pojedynczego przeniesienia w normalnym dodatku binarnym stało się całkiem oczywiste, jak skonstruować tego operatora, gdy myśli się o nim w kategoriach generowania i propagacji , ale wydaje się, że nie jest to takie oczywiste w przypadku przeniesień ujemnych. c - i ¯ c + ici+ci¯cici+¯


Moje obecne rozumienie jest takie, że w rzeczywistości niemożliwe jest zbudowanie tego „czystego” równoległego sumatora przedrostka. Wydawałoby się, że równoległy sumator prefiksów może uzyskać wydajność O (log (N)), podczas gdy równoważnik negabinaryjny zawsze wydaje się mieć złożoność O (2 * log (N)) (2x nnba).
gilianzz

Nie znalazłem żadnej literatury dowodzącej lub stwierdzającej, że jest to niemożliwe . Byłbym szczęśliwy, gdyby okazało się, że i tak się mylę. Ale o ile mi wiadomo, 2-etapowa nnba wydaje się być standardem dla dodawania negabinarnego.
Sven B,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.