прехвърлянето запазване на разширител

Използване на аритметика дясно на ляво: "8 + 2 = 0, прехвърлянето 1", "7 + 2 + 1 = 0, прехвърлянето 1", "6 + 3 + 1 = 0, прехвърлянето 1" и така нататък, докато крайната сума. Въпреки това, ние знаем, че все още не е получил последната цифра на резултата, ние не знаем първата цифра на ляво, докато ние Нека мине през всяка цифра в изчисленията, пренасочване на прехвърлянето на всяка цифра до другия лявата й страна. По този начин, добавянето на два п-битови числа ще отнеме време пропорционална н, дори ако машината, която ние използваме, е в състояние да изпълнява много изчисления едновременно.

От гледна точка на електрониката, като се използват битове (двоични цифри), това означава, че дори и ако ние разполагаме с п от един бит пепелянки, ние все още трябва да прекарват времето пропорционално н, за да позволи прехвърлянето на разпространение от единия край до другия номер. Докато ние го правим,

1. Ние не знаем в резултат на добавянето. 2. Ние не знаем дали в резултат на добавянето е по-малка или по-голяма от определен брой (например, ние не знаем дали това ще бъде положителен или отрицателен).

Трансферът на разширител ускорено може да намали забавяне. По принцип, забавянето може да бъде намалена, така че тя е пропорционална на LOGN. но за голям брой не е така, защото дори когато се прилага ускорена транспорт, разстоянието че сигналът преминава през увеличава чип пропорционално на п и увеличения на забавяне на разпространението на същото това съотношение. Щом получим номерата с размери, вариращи от 512 бита до 2048-бита, които са необходими за общественото-ключовите криптосистеми. ускорено прехвърляне на повече не помага.

Мислех резолюция закъснение до края на предаването, или прехвърляне на опазване, принадлежи на Джон фон Нойман. [3]

Ето един пример от двоичен допълнение:

Аритметика запазване трансфер работи напускане на двоичния код, все още остават да работят на основата 2. изчислява цифра по цифра сума като

Записването е нетрадиционен, но резултатът е все още неясно. Освен това, N на разширители данни (тук, п = 32 пълен разширител), резултатът може да бъде изчислена след преминаване през един разширител вход (всеки тактов генератор), като всяка цифра на резултата е независим от всеки друг или.

Ако се изисква суматора за да се добавят две числа и резултатът се пресмята, добавяне на запазване на трансфера не е подходящ, тъй като резултатът остава кабриолет обратно в двоичен, а това означава, че прехвърлянето все още не се е разпространил от дясно на ляво. Но в аритметиката на голям число, добавянето е много рядка операция, и разширители като същевременно се поддържа трансфер обикновено се използва за натрупване на частични суми множителя.

Агрегаторите подпорни пренос

Да предположим, че имаме два бита на памет за всяка цифра от резултата, а след това можем да използваме излишни двоично представяне. запаметяване на стойности 0, 1, 2 или 3 във всяка цифрова позиция. Това е така, защото нашите резултати с опазване на прехвърлянето може да се добави повече от един двоично число, без да прелее нашия капацитет на паметта, а след това какво?

Ключът към разбирането е, че по време на всяка частична допълнение ние добавяме три бита:

  • 0 или 1, от номерата, които начисляваме.
  • 0, ако броят на паметта е 0 или 2, или 1, ако е 1 или 3.
  • 0, ако цифрата отдясно е 0 или 1, или 1, ако е 2 или 3.

С други думи, ние се броят на позицията за прехвърляне на правото, както и прехвърляне на номера на прехвърляне на ляво, както и в традиционния добавяне; но фигурата на трансфер, която се минава в ляво е резултат от предходното изчисление, отколкото сегашната. По време на всеки цикъл на генератора, трансфери се преместват само една стъпка напред, а не н стъпки като традиционен допълнение.

Тъй като сигналите не се движат до момента, генераторът може да се маркира по-бързо.

В края на изчислението остава необходимостта да се преобразува резултата в двоичен, която всъщност е просто означава инструментът да отидем по целия път чрез броя, както и в традиционния ехидна. Но ако сме направили 512 допълнения по време на изпълнението на 512-битов умножение, страхотна цена тази последна трансформация всъщност е разделена на всички 512 допълнения, така че всяко добавяне носи само 1/512 високите цени на крайния "нормално" добавка.

На всеки етап на добавяне на запазване прехвърлянето

  1. Ние знаем, че в резултат на добавянето веднага.
  2. Ние все още не знаем дали в резултат на добавянето е по-голямо или по-малко от определен брой (например, ние не знаем дали е положителна или отрицателна).

Последната точка е неблагоприятна, когато се използва с суматорите за извършване на трансфера запазване модулни размножаването на (умножение следните разделяне, съхраняване само остатъка). Ако не можем да знаем дали междинният резултат е по-голямо или по-малко от модулите, как можем да знаем изважда модули или не?

Монтгомъри умножение. което зависи от най-дясната цифра на Резултатът е едно от решенията; което е по-близко до себе си с добавянето на запазване на превода, носи фиксирани режийни разходи, така че последователността на повторенията Монтгомъри спестява време, но не и единствен. За щастие, степенуване, която всъщност е поредица от умножения, е най-честата операция в публичен ключ на криптографията.

Устройство запазване трансфер се състои от N пълните разширители. всеки от които изчислява един-малко сума и пренасяне малко основава изцяло на входните съответните битове на три числа. От тези три п-битови числа а. б и в. тя произвежда частично сума PS и изместен трансфер SC:

ИОС = а.с. ⊕ би ⊕ CI = a_ \ oplus b_ \ oplus C_> Sci = (AI ∧ BI) ∨ (AI ∧ CI) ∨ (Bi ∧ CI) = (a_ \ клин б _) \ VEE (a_ \ C_ клин) \ VEE (b_ \ клин в _)>

Общото количество може да бъде изчислено:

  1. Срязване подкожно трансфер последователност, оставени от едно място.
  2. Добавянето 0 отляво на (най-важния бит) на частичната последователност сума Пс.
  3. Използване на разширител със сериен трансфер за добавяне двете заедно и получената производството на п + 1-битова стойност.

Когато огъва по три или повече числа, използването на задържането пренос ехидна последвано от последователни усойница е по-бързо, отколкото използването на две пепелянки със сериен трансфер. Това се случва, тъй като сериен ехидна да се изчисли сумата от бита, без да чака за носене малко от предходното изчисление, и по този начин има закъснение, равно на това, че в п пълни суматора. В ехидна изчислява прехвърляне запазване всичките им изходни стойности паралелно и по този начин има същия срок, като един пълен усойница. По този начин общото време за изчисление (в единици за време на забавяне пълно добавяне) за задържане на прехвърлянето ехидна плюс разширител със сериен трансфер е равно на N + 1, а в продължение на две последователни разширители той трябва да бъде 2n.