Mishka> Гы, в такие тонкости я не лез. У нас был 2900 AM(или AMD?).
AMD Am2900, такое у них дурацкое название было
Были такие секции. Лично не щупал
Mishka> В смысле в первой и второй секции можно посчитать перенос для всех секций?
Не совсем. Там делается так: секции вычисляют функции P и G, для которых значение входного переноса не нужно, так что все секции выдают P&G одновременно. А дальше внешняя схема ускоренного переноса на основе этих P&G считает входные переносы для всех секций.
Математика там предельно простая (а потому быстрая):
P(ropagate) — обозначает, что секция пропустит насквозь значение входного сигнала переноса. Для двухбитовой секции:
P = (A0|B0) & (A1|B1)
G(nenerate) — обозначает, что секция выдаст сигнал переноса при любом значении входного сигнала переноса.
Для двухбитовой секции:
G = (A0&B0&(A1|B1)) | (A1&B1)
Ну а ускоритель переноса работает так (опять же двухбитовый):
C0 = (Cin&P0) | G0
C1 = (Cin&P0&P1) | (P1&G0) | G1
P = P0&P1
G = (G0&P1) | G1
Ну, двухбитовые я взял для примера, чтоб много букв не писать. На самом деле толку от них мало. Вот четырёхбитные дают уже заметный выигрыш — 16-бит АЛУ работает примерно как 10-бит с последовательным переносом. А ускоренные 64-бит — как 16-бит с последовательным. Примерно, конечно.
Тут суть ещё в том, что сам ускоритель переноса вычисляет P&G, так что их можно каскадировать, в результате время работы растёт примерно как логарифм от количества бит. При больших разрядностях, само собой.
PS: Надеюсь, в формулах не напутал
Спать хочется уже.