Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[199]

же Бэтчер придумал битонический сортировщик глубины О (lgra), аналогичную описанному в разделе 28.3. Согласно Кнуту, правило нуля и единицы Кнут доказал Буриций (W.G. Bouricius, 1954) в контексте разрешающих деревьев.

Долгое время оставался открытым вопрос о существрвании сортирующей сети глубины О (lgra). В 1983 году на него был дан положительный ответ: Айтай, Комлос и Семереди [8] построили сортирующую сеть для га чисел глубины О (lgra) из О (га lgra) компараторов. К сожалению, константы в этой (З(га)-оценке (многие тысячи, если не больше) препятствуют практическому использованию этой сети.


Арифметические схемы

До сих пор, говоря о времени работы алгоритма, мы считали, что арифметические операции (сложение, вычитание, умножение и деление) выполняются за постоянное время, не зависящее от размера чисел. Такое приближение разумно с точки зрения практики, поскольку для чисел, помещающихся в разрядную сетку компьютера, эти времена не так уж сильно различаются. Но при алгоритмической реализации этих операций мы видим, что время работы зависит от размера входов. Скажем, школьный алгоритм сложения двух га-значных чисел в десятичной системе требует в (га) элементарных действий.

В этой главе рассматриваются схемы для арифметических действий. При последовательной реализации любое действие с двумя га-разрядными числами требует Г2(га) битовых операций (за меньшее время мы даже не прочтём входы). Уменьшения времени можно достичь при использовании схем, элементы которых работают параллельно. В этой главе мы построим такие схемы для сложения и умножения (вычитание аналогично сложению; по поводу деления см. задачу 29.1). Предполагается, что на входы поступают га-значные числа в двоичной системе.

Мы начнём в разделе 29.1 с определения и примеров схем из функциональных элементов; время работы будет определяться глубиной схемы. Нашим первым примером будет сумматор - базовый элемент для конструкций этой главы. Раздел 29.2 посвящен двум схемам для сложения: схеме каскадного сложения (время работы в (га)) и схеме сложения с предвычислением переносов, (время О (lgra)). Там же рассмотрена схема сложения с запоминанием переносов, позволяющая свести (за время 0(1)) сложение трёх чисел к сложению двух. В разделе 29.3 строятся две схемы для умножения: матричный умножитель (время работы 0(га)) и умножитель с помощью дерева Wallacea (время O(lgra)). Наконец, в разделе 29.4 рассказано о схемах с элементами задержки, которые позволяют многократно использовать одни и те же функциональные элементы (и тем самым уменьшить общее количество элементов в схеме).


29.1. Схемы из функциональных элементов

Как и сортирующие сети в главе 28, схемы из функциональных элементов являются параллельной моделью вычислений: несколько элементов схемы могут работать одновременно. В этом разделе мы дадим определение схемы из функциональных элементов и приведём примеры.

29.1.1. Функциональные элементы

Ариифметические схемы строятся из функциональных элементов, соединенных проводниками. Функциональный элемент (combinational element) имеет входы и выходы; его выходной сигнал является функцией входных. Если входные и выходные значения являются нулями и единицами, элемент называется логическим (boolean combinational element, logic gate); как обычно, 0 обозначает «ложь», а 1 - «истину» .

Четыре основных логических элемента, используемые в этой главе, показаны на рис. 29.1 : NOT (отрицание), AND (логическое И), OR (логическое ИЛИ) и X0R (исключающее ИЛИ); ещё два - NAND и NOR - используются в некоторых упражнениях). Элемент NOT имеет один вход ж, на который подается 0 или 1, и один выход z, значение на котором противоположно значению на входе. Остальные три элемента имеют по два входа (ж и у) и по одному выходу (z).

Рис. 29.1 29.1 Шесть основных логических элементов и соответствующие таблицы, (а) Элемент NOT. (b) Элемент AND. (с) Элемент OR. (d) Элемент XOR. (е) Элемент NAND (Not-AND), (е) Элемент NOR (Not-OR).

Работа элемента (как и любой схемы, составленной из них) может быть описана таблицей, которая указывает выходные значения для всех наборов значений на входах. Например, из таблицы для XOR видно, что входы ж = 0 и у = 1 дают на выходе z = 1. Для обозначения операции NOT традиционно используется символ ->, для AND - символ Л, для OR - символ V, а для XOR - символ ©. Например, 0 © 1 = 1.

Реальные функциональные элементы работают не мгновенно. Правильное значение на выходе появляется лишь через некоторое время после того, как значения на входах установятся. Это время называется задержкой (propagation delay). Мы предполагаем, что задержка одна и та же для всех элементов.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]