Текст
                    1*
ч
М. А. КАРЦЕВ, В. А. БРИК
-——-;  ___ -- - —: ы»
ВЫЧИСЛИТЕЛЬН Ы Е
СИСТЕМЫ
И СИНХРОННАЯ
АРИФМЕТИКА

М. А. КАРЦЕВ, В. А. БРИК ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ И СИНХРОННАЯ АРИФМЕТИКА МОСКВА «РАДИО И СВЯЗЬ» 1981
ББК 32.97 К21 УДК 681.32 Карцев М. А., Брик В. А. К21 Вычислительные системы и синхронная арифме- тика.— М.: Радио и связь, 1981. — 360 с., ил. В пер.: 1 р. 20 к. Исследуются, с одной стороны, организация структур многома- шинных, многопроцессорных и конвейерных вычислительных систем и организация вычислений в них и, с другой стороны, — большинство известных методов построения быстродействующих синхронных сумма- торов, умножителей и устройств для деления, используемых в вычис- лительных системах и машинах. .30502-127 2704080330 046(01)-81 V ББК 32.97 6Ф7.3 Рецензенты: д-р техн, наук проф. Ю. М. Шамаев, канд. техн. наук. Ю. Н. Глухов. Редакция литературы по кибернетике и вычислительной технике @ Издательство «Радио и связь», 1981 г,.
ПРЕДИСЛОВИЕ Приступая к этой книге, мы отдавали себе отчет в том, что в настоящее время отнюдь не ощущается не- достатка в публикациях по вычислительным системам. Наоборот, поток книг и статей по этим вопросам суще- ственно обгоняет развитие техники и способов примене- ния вычислительных систем. Вероятно, количество назва- ний только монографий по этим вопросам превышает количество реализованных и действующих вычислитель- ных систем, имеющихся в мире. Между тем в этой обла- сти есть еще слишком много неясных вопросов. Не устоялась даже терминология. В этой книге под словами вычислительная система, вынесенными в заго- ловок, мы понимаем вычислительные средства, предна- значенные для выполнения параллельных вычислений; точное определение этого понятия содержится в п. 1.1.1. Но наименее проработанным является, на наш взгляд, вопрос о производительности вычислительных систем. Слишком часто данные, сообщаемые о произво- дительности проектируемой или выпускаемой вычисли- тельной системы, получаются путем простого суммиро- вания производительности отдельных средств-, входящих в состав системы. Между тем ситуации, с которыми при- ходится сталкиваться пользователю реальной вычисли- тельной системы, могут быть существенно разными; со- ответственно различны и те данные о производительно- сти системы, которые ему нужны. Если система используется в составе крупного вычис- лительного центра, где большое количество пользовате- лей решает свои сравнительно мелкие задачи, то сум- марная производительность системы почти не интересует каждого отдельного пользователя. Она важна для него лишь постольку, поскольку от нее зависит, сколько вре- мени он сможет получить для работы в интерактивном (диалоговом) режиме или сколько задач от него примут для решения в режиме пакетной обработки. 3
С очень похожим положением мы имеем дело, кйК правило, при использовании вычислительной системы в составе автоматизированной системы управления про- изводством (в масштабе предприятия, отрасли, народ- ного хозяйства в целом) и в различных информационно- поисковых системах. Здесь тоже обычно имеется ряд мало связанных между собой небольших задач, работа- ющих, однако, над общим банком данных. Но проекти- ровщика АСУ или информационно-поисковой системы не может, конечно, не интересовать суммарная производи- тельность вычислительных средств, поскольку определен- ные наборы задач его системы должны выполняться в определенные интервалы времени (иногда — в течение нескольких часов, или нескольких суток, или нескольких недель). С принципиально другой ситуацией мы встречаемся в автоматизированных системах управления сложными технологическими процессами, при решении крупных на- учных задач и в других случаях. Высокая производи- тельность вычислительных средств здесь нужна для то- го, чтобы получить в течение короткого времени решение одной, но достаточно громоздкой задачи. Как нам пред- ставляется, во многих случаях ни у проектировщиков вычислительных систем, ни у тех, кто предполагает ис- пользовать эти системы для указанных целей, нет чет- кого представления о том, что одна и та же вычислитель- ная система не может обеспечить одинаковую производи- тельность при решении крупных задач разных классов и что необходимо определенное соответствие между свой- ствами конкретных задач и структурой вычислительной системы, чтобы возможности вычислительной системы использовались достаточно эффективно. Когда в этой книге речь идет о высокопроизводитель- ных вычислительных системах, то имеется в виду в ос- новном именно эта последняя ситуация (в п. 1.1.2 при- ведены точные определения реальной пользовательской производительности и пользовательской эффективности вычислительной системы). Гл. 1 и 2 посвящены подробному рассмотрению имен- но этих вопросов. В результате выделен тип синхронных вычислительных систем, которые потенциально могут обеспечить максимум реальной пользовательской произ- водительности. Разумеется, эта производительность мо- жет быть реализована при решении задач определенного 4
класса (т. е. обладающих определенными свойствами), но класс этот достаточно широкий и включает достаточ- но важные задачи. Гл. 3—6 посвящены рассмотрению наиболее сложных технических вопросов, возникающих при построении та- ких систем, — разработке синхронных методов выполне- ния арифметических и логических операций, т. е. мето- дов, обеспечивающих минимальное время выполнения операции независимо от операндов, над которыми она выполняется. Значение этих глав значительно шире, чем можно было бы заключить из предыдущего, поскольку приме- нение синхронных методов выполнения операций необ- ходимо и при построении обычных (однопроцессорных) управляющих машин, предназначенных для работы в ре- альном масштабе времени. Во многих случаях предла- гаемые синхронные методы выполнения операций обес- печивают более высокое быстродействие, чем известные асинхронные методы, и их применение целесообразно при создании вообще любых быстродействующих ЦВМ. Гл. 7 предназначена для недостаточно подготовлен- ного читателя, который захотел бы понять до конца со- держание всей книги. Ему следовало бы начать чтение книги именно с этой главы, в которой содержатся на- чальные сведения по основам вычислительной техники. Гл. 1 и 2 этой книги написаны М. А. Карцевым, гл. 3—7 — В. А. Бриком. Авторы будут признательны читателям за все заме- чания, которые они сочтут возможным высказать по со- держанию книги. В. А. Брик, М. А. Карцев
1. ПРОБЛЕМА ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИИ 1.1. ИСХОДНЫЕ ПОЛОЖЕНИЯ 1.1.1. ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ, ЦЕЛИ ИХ СОЗДАНИЯ 1°. Вычислительной системой мы будем называть комплекс вычислительных средств, связанных физически и программно, в котором одновременно (в один и тот же момент времени) могут выполняться несколько арифме- тических или логических операций по преобразованию данных. Мы попытались сформулировать это определение так, чтобы исключить из понятия вычислительных систем обычные современные машины, содержащие, как прави- ло, один центральный процессор и один или несколько периферийных процессоров — каналов. Хотя эти процес- соры могут работать все одновременно, организация ма- шины большей частью такова, что арифметические и ло- гические операции над данными выполняются только центральным процессором, а каналы заняты простой пе- редачей данных. В составе центрального процессора обычной вычис- лительной машины может быть несколько специализи- рованных арифметических и логических устройств раз- ного назначения: например, для выполнения операций с числами, для формирования адресов главной памяти и др. При этом, с целью повышения быстродействия цен- трального процессора, временную диаграмму его работы во многих случаях строят так, чтобы операции этих устройств перекрывались по времени. Скажем, когда основное арифметико-логическое устройство выполняет операцию над числами, указанную в i-й инструкции, то в то же время формируется исполнительный адрес для обращения к главной памяти, необходимый при испол- нении (Н~1)-й инструкции, и т. д. Но и при этом вычис- лительная машина не подходит под данное нами опреде- ление вычислительной системы, потому что в нем речь идет об одновременном выполнении нескольких арифме- тических или логических операций над данными. 6
С другой стороны, определение вычислительных си- стем распространяется на различные типы многопроцес- сорных систем и многомашинных комплексов, системы с магистральной (конвейерной) структурой, вычисли- тельные среды и другие средства. Различные структуры вычислительных систем рассматриваются в § 2.1. 2°. Цели, которые ставятся при создании вычисли- тельной системы, могут быть различны. В ряде случаев целью разработчика вычислительной системы является достижение более высокой надежно- сти, чем может быть обеспечена одиночной вычислитель- ной машиной,- Например, если машина должна использоваться для управления технологическим процессом, то для обеспечения непрерывности тех- нологического процесса может быть применен комплекс из двух оди- наковых машин. Когда обе машины находятся в рабочем состоянии, одна из них назначается ведущей, другая — резервной. Собственно решение всей задачи управления осуществляется ведущей машиной; резервная машина принимает от объекта управления всю информа- цию, которая идет и на ведущую машину, выполняет над ней те же операции, что и ведущая, но никакой информации наружу не вы- дает. При возникновении отказа в ведущей машине или при необхо- димости вывести ведущую машину на профилактику производится переназначение машин в комплексе, причем практически одновремен- но прекращается выдача информации с бывшей ведущей машины и открывается выдача информации с бывшей резервной машины. После восстановления работоспособности машины, выведенной в ремонт или на профилактику, она подключается к комплексу в качестве ре- зервной. В других случаях при создании вычислительной си- стемы ставится цель повышения живучести по сравне- нию с одиночной вычислительной машиной, т. е. способ- ности выполнять свои основные функции (но не все функции в полном объеме) при наличии тех или иных отказов в аппаратуре. Например, в рассмотренном выше 2-машинном комплексе на ре- зервную машину может быть возложена задача повышения досто- верности выдаваемой информации путем оперативного сравнения своих результатов с результатами, получаемыми ведущей машиной, и блокировки выдачи информации управляемому объекту при обна- ружении несовпадения. В случае отказа одной из машин другая берет на себя роль ведущей и продолжает вести управление техно- логическим процессом, но функции повышения достоверности управ- ляющей информации в тот период, пока не восстановлена работоспо- собность обеих машин, не реализуются. Могут быть ситуации, когда вычислительная система создается для упрощения каналов передачи информации. 7
Например, можно представить себе, что управление технологи- ческим процессом в принципе может быть реализовано с помощью одной вычислительной машины, расположенной в центре системы управления. Однако при этом потребовалось бы организовать пере- дачу большого количества информации от множества периферийных датчиков к центральной машине. Возможно, что у некоторых групп датчиков выгодно поставить свои периферийные машины, которые вели бы первичную обработку и объединение информации от присо- единенных к ним датчиков и далее сообщались бы значительно более простыми каналами передачи информации с центральной машиной. Чаще всего, однако, целью создания вычислительной системы является получение более высокой производи- тельности, чем производительность обычной вычисли- тельной машины. Предпосылкой этого направления является микроми- ниатюризация компонентов схемы, повышение их надеж- ности, снижение стоимости и энергопотребления. Именно эти обстоятельства позволяют объединить в одном аппа- ратурном комплексе больше элементов, чем в обычной вычислительной машине, и получить увеличение быстро- действия не только за счет повышения скоростей отдель- ных элементов и сокращения длин соединений, но и за счет усложнения структуры системы. В дальнейшем, говоря о вычислительных системах, мы будем иметь в виду главным образом системы, соз- даваемые с целью достижения высокой производитель- ности при обработке информации. 1.1.2. ПРОИЗВОДИТЕЛЬНОСТЬ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ. ОСНОВНЫЕ ПОНЯТИЯ и ОПРЕДЕЛЕНИЯ Разработка структуры вычислительной системы не вызывает особых затруднений в тех случаях, когда це- лью создания вычислительной системы является получе- ние высокой надежности или живучести или упрощение каналов связи в системе. Сравнительно просто этот во- прос решается и в тех случаях, когда при создании си- стемы ставится задача достижения высокой системной производительности. Если же вычислительная система должна обеспечить более высокую пользовательскую производительность, чем производительность обычной вычислительной машины, вопрос о структуре такой си- стемы далеко не тривиален. 1°. Системная производительность — это производи- тельность, достигаемая при решении совокупности пользовательских задач, g
Представим себе для примера вычислительную сй: стему, состоящую из нескольких (и) вычислительных машин, причем на любом отрезке времени каждая из машин назначается для решения одной из пользователь- ских задач. Ясно, что системная производительность та- кой вычислительной системы примерно в п раз выше, чем производительность каждой из машин, т. е. пример- но равна сумме производительностей всех входящих в систему машин, но скорость решения одной отдельно взятой пользовательской задачи примерно такая же, как и при использовании для этого одиночной машины. Может возникнуть вопрос, имеет ли вообще смысл при этих условиях объединять машины в систему? В действительности такое объединение дает определен* ный выигрыш по нескольким направлениям. Он состоит прежде всего в возможности более рационального ис- пользования обобществленных ресурсов машин (внеш- ней памяти, периферийных устройств, процессорного времени) с учетом реальных потребностей активных пользователей в этих ресурсах на каждом отдельном от- резке времени. Уменьшается общий объем памяти на внешних носителях, занимаемой программами матема- тического обеспечения (поскольку не нужно иметь столь- ко дубликатов каждой программы, сколько машин име- ется в системе); при определенных условиях может быть достигнута и экономия в объеме внутренней памяти. Объединение машин в систему увеличивает живучесть комплекса, поскольку выход из строя одной из машин— особенно запланированный заранее — не нарушает оче- редности пользовательских программ, не требует от че- ловека действий по переносу на другие машины про грамм, находившихся в очереди к вышедшей из строя машине, и приводит лишь к замедлению общего темпа прохождения пользовательских программ. Упрощается также решение вопросов организации контроля вычисле- ний и др. 2°. Возможна ситуация, когда пользователь выходит на счет с множеством сравнительно небольших незави- симых задач. С его точки зрения производительность вы- числительной системы это и есть системная производи- тельность, о которой мы говорили в п. 1°. В более общем случае, однако, пользователя интересует производитель- ность вычислительной системы, обеспечиваемая при ре- шении одной крупной задачи. 9
Соответственно Пользовательской производительнд* стью мы будем называть производительность вычисли- тельной системы, которая достигается при решении одной отдельно взятой пользовательской задачи — в условиях, когда данной задаче предоставлен приоритет в получении всех необходимых ей ресурсов системы перед задачами других пользователей. 3°. Производительность вычислительной системы — это вообще сложное (и не достаточно точно определен- ное) понятие, включающее скорости выполнения опера- ций, объемы памяти, характеристики операционной си- стемы, пропускную способность каналов внешнего обме- на и другие параметры. Тем не менее в дальнейшем, рассматривая вопрос о производительности вычислитель- ной системы, мы будем иметь в виду главным образом один из этих параметров — ее быстродействие. Если в качестве примера представить себе вычислительную систему как объединение нескольких вычислительных машин, то более или менее очевидно, как в общей произ- водительности системы суммируются, скажем, объемы: памяти Отдельных машин (для этого достаточно обобще- ствить запоминающие устройства и обеспечить обраще- ния от всех машин к общей памяти либо обеспечить об- мен информацией между машинами). Между тем вопрос о том, как суммируются величины быстродействия or дельных машин — особенно если речь идет о пользова- тельской, а не системной производительности — весьма сложен. Говоря о быстродействии вычислительной системы, мы должны будем ввести две различные характеристи- ки— номинальное быстродействие SH и реальное быстро' действие Ер системы. Номинальным быстродействием SH будем называть суммарное быстродействие всех составных частей систе- мы. Реальное быстродействие, входящее в оценку пользо- вательской производительности, будет получаться раз- ным для разных задач или разных классов задач и от- личным от этих значений — при оценке системной про- изводительности. Отношение реального быстродействия к номинально- му будем называть эффективностью вычислительной си- стемы Е, E=SP/SH. ю
Соответственно сказанному выше необходимо различать системную эффективность и пользовательские эффектив- ности для различных задач (различных классов задач). Представим себе в качестве простейшего примера вы- числительную систему, полученную объединением п вы- числительных машин (см. п. 1.1.1). Если машины все одинаковы и быстродействие каж- дой из них равно 5 [операций/с], то номинальное быст- родействие системы равно, очевидно, 5н=п-5. Если система организована так, что на любом отрез- ке времени одна машина системы отводится всегда од- ной пользовательской программе, то реальное системное быстродействие примерно равно номинальному быстро- действию, причем системная эффективность примерно равна единице, Sp(c)^SH=nS; -£'с=*5р(с)/5н^1, а реальное пользовательское быстродействие равно при- мерно быстродействию одной машины — независимо от свойств пользовательских программ. Соответственно пользовательские эффективности всегда одинаковы и тем меньше, чем больше п (чем больше машин объединено в систему): Sp(n)^S; Е п=5р(п)/1 In. Чтобы получить пользовательское быстродействие больше S, систему нужно строить так, чтобы приоритет- ная программа могла выполняться параллельно несколь- кими машинами системы (в пределе — п машинами). Возможность реализовать такой режим зависит от част- ных свойств задачи. Конкретно: требуется, чтобы в про- грамме данной задачи на каждом этапе ее решение мож- но было выделить п ветвей, каждая из которых могла бы выполняться независимо от других ветвей. В общем случае (для произвольных задач) реальное пользовательское быстродействие такой системы лежит в пределах SH^SP(n)^S, и соответственно Y^E^Xjn, причем Еп, вообще говоря, тем меньше, чем больше п. Величины 5р(П) и Еп для некоторой величины п при указанном построении системы существенным образом зависят от того, на какое количество независимых вет- вей удается разделить решение некоторой конкретной задачи пользователя на каждом этапе исполнения про- граммы, что в свою очередь существенно зависит от ча- стных свойств данной задачи. 11
Сложнее определить характеристики быстродействия системы, если она состоит из п различных машин. Пусть быстродействие i-й машины (t=l, 2, ..п) равно )т /=1 где kj—доля операций /-го типа в общем количестве операций, не- обходимых для решения набора типовых задач (по которому ведется определение быстродействия машины), a tn — время выполнения одной операции /-го типа i-й машиной i(/ = l, 2, ..т). Для определения номинального быстродействия системы нужно попытаться так распределить операции между машинами, чтобы вы- полнялись равенства т т т 2 ^1/^1/= 2 ^2/2/ = ••• = 2 knjtnj /=1 /=1 /=1 т и при этом величина Т = была минимальна. Здесь kij— до- /=1 ля операций /-го типа, исполнение которых передано i-й машине (/=1, 2, ..гл; /=1, 2, ..., п), причем, разумеется, должны выпол- няться равенства п */ = 2 кЧ' (Для/=1-2..........«)• /=1 В этой системе уравнений неизвестными являются величины kij- их количество равно п-т. Количество линейных алгебраических уравнений, связывающих величины kij, равно п—14-гл, где п и т — целые числа, n^2, m^l. Нетрудно видеть, что система уравнений имеет единственное решение при т=1, т. е. при условии, что в лю- бой i-й машине все операции выполняются за одинаковое время /г1=,^ = 1/Si. При этом :&21:... = : ~7~ ’. . . Sj:S2:... -Sn, 11 *2 Ln а номинальное быстродействие вычислительной системы = -^r=S1 + S2 + ... + Sn. Аналогичный результат получается при условии, что времена выполнения операций разных типов в различных машинах пропор- циональны, т. е. что /ц : /12 • • • • • /1т=,/21 • ^22 • . • • ’ tzm = ... = tni • tn2 I • • • tnm или (что то же самое) /n’Gi’.***/nt = f 12 • ^22 ’ • • • • ^пг = • • • = Gm*.^nm J_._L. ,_L = Sj * Sa ’ ’ ’ ’ • 12
При этом тоже k\\ • ^21 • » ’ • ’ ^nl = ^12 • ^22 • • • • ^2п‘-=* . • . = kim • &2т * . • . ’ ^пт~ =51 : 5г:...: 5П И 5н=51+52+ ••• +5П. В общем случае, если /п>>1 и времена выполнения однотипных операций в различных машинах не пропорциональны друг другу, то система линейных уравнений недоопределена, и нахождение вели- m J гчин kij, соответствующих минимальной величине Т — /=1 гпри ограничениях O^kij^kj для /=1, 2, ..m; i=l, 2, ..., п явля- ется задачей линейного программирования. На самом деле решение этой задачи не имеет особого смысла, поскольку найденное таким образом номинальное быстродействие [вычислительной системы SH все равно практически недостижимо, и реальное системное быстродействие 5Р(С) будет наверняка ниже 5Н, не говоря уже о реальном пользовательском быстродействии 5Р(П), которое будет еще ниже. В гл. 2 мы рассмотрим различные построения вычис- лительных систем и увидим, что оценки реального бы- стродействия для них существенно различны. При одном и том же номинальном быстродействии реальное систем- ное быстродействие и в особенности реальное пользова- тельское быстродействие для тех или иных классов за- дач сильно зависят от структуры вычислительной си- стемы и частных свойств задач. Вычислительные систе- мы, оставаясь универсальными в том смысле, что любя« задача в принципе может быть решена любой вычисли- тельной системой, в то же время весьма специализиро- ваны, поскольку в зависимости от структуры системы для одних задач ее эффективность оказывается удовлет- ворительной, а для других — недопустимо низкой. В литературе по вычислительным системам, описа- ниях и особенно рекламных проспектах вычислительных систем этой стороне проблемы обычно не уделяется должного внимания и сообщается лишь номинальное бы- стродействие вычислительной системы. Между тем но- минальное быстродействие характеризует не столько возможности системы при решении определенных задач, сколько затраты на создание системы. Выбор вычисли- тельных систем для тех или иных конкретных примене- ний, основанный лишь на данных о номинальном быст- родействии и не учитывающий указанных обстоятельств, приводит в ряде случаев к тяжелым и трудно поправи- мым ошибкам, 13
1.2. ОСОБЕННОСТИ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ, ПОЗВОЛЯЮЩИЕ ОРГАНИЗОВАТЬ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ Общие способы организации параллельных вычисле- ний, пригодные при решении любых задач, неизвестны и скорее всего не существуют. Когда с помощью вычис- лительной системы необходимо получать высокое пользо- вательское быстродействие, то для организации парал- лельных вычислений используются частные свойства тех или иных задач. При этом использование тех или иных свойств возможно при определенных структурах вычис- лительных систем. По этой причине, собственно, вычис- лительные системы разных типов эффективны при реше- нии разных классов задач (см. гл. 2). Ниже рассматриваются те частные особенности раз- личных задач, на основе которых могут быть организо- ваны параллельные вычисления. 1.2.1. ЕСТЕСТВЕННЫЙ ПАРАЛЛЕЛИЗМ И ПАРАЛЛЕЛИЗМ МНОЖЕСТВА ОБЪЕКТОВ 1°. Мы будем говорить, что задача обладает естест- венным параллелизмом, если в ее исходной постановке она сводится к операциям над многомерными векторами либо над матрицами, либо над решетчатыми функциями, либо над другими аналогичными объектами. Каждый из этих объектов может быть представлен совокупностью чисел (или, может быть, булевых переменных, если речь идет о булевых векторах, матрицах и т. п.): многомер- ный вектор — своими компонентами, матрица — элемен- тами матрицы либо компонентами векторов, соответст- вующих ее столбцам или строкам, решетчатая функ- ция—своими значениями на множестве дискретных зна- чений аргумента и т. п. Большинство операций, которые должны выполняться при этом, представляет собой совокупности одинаковых операций над соответствующими парами чисел (элемен- тов) двух аналогичных объектов либо совокупности оди- наковых операций над всеми числами, характеризующи- ми объект, и константой. Например, сложение двух век- торов состоит в сложении соответствующих компонент векторов, вычитание векторов — в вычитании их компо- нент, умножение вектора на число —в умножении каж- дой из компонент вектора на это число и т. д. Ясно, что 14
всё эти операции могут выполняться параллельно И не- зависимо друг от друга. Само возникновение проблемы организации парал- лельных вычислений для решения таких задач связано не с сутью дела, а с тем обстоятельством, что в течение многих лет существования вычислительной математики ее главной целью было создание последовательностных алгоритмов, т. е. алгоритмов, каждый шаг которых со- стоял бы в выполнении операции над одной парой чисел или над одним числом. Именно так может действовать человек-вычислитель, если он выполняет вычисления вручную, так же действует обычная однопроцессорная вычислительная машина. Последовательностный харак- тер алгоритмов нашел отражение в структуре наиболее распространенных алгоритмических языков—АЛГОЛ-60, ФОРТРАН и др. Появление вычислительных систем вы- двинуло проблему организации параллельных вычисле- ний на основе известных алгоритмов, в ряде случаев — по готовым программам (написанным, возможно, на АЛГОЛе-60 или ФОРТРАНе). Однако для задач, обла- дающих естественным параллелизмом, такой путь орга- низации параллельных вычислений является далеко не лучшим [1, 2]. 2°. Параллелизм множества объектов представляет собой частный случай естественного параллелизма. Его смысл в том, что задача состоит в обработке информа- ции о различных, но однотипных объектах по одной и той же или почти одной и той же программе. По сравнению с общим случаем естественного парал- лелизма, в задачах, обладающих параллелизмом множе- ства объектов, сравнительно меньший вес имеют так на- зываемые интегральные операции. Например, вычисление скалярного произведения для п-мерных векторов п А В=3 AiBt /=1 состоит фактически из операций двух типов: сначала вычисление п попарных произведений соответствующих компонент векторов, при- чем получается вновь n-мерный вектор (компонентами которого являются числа вида f=l, 2, ..., п), затем «интегральная» операция — суммирование между собой всех компонент этого век- тора. 15
Большей частью интегральные операции отличаются тем, что исходными операндами для них являются век- торы или функции, или множества объектов, а резуль- татом должно быть число. Примером такой операции может быть, скажем, вычисление определенного интег- рала от функции; собственно, само название интеграль- ных операций выбрано по ассоциации с этим примером. Однако, например, и вычисление неопределенного инте- грала, когда и исходный операнд и результат являются функциями, тоже представляет собой интегральную опе- рацию, поскольку значение результата в каждой точке зависит, вообще говоря, от нескольких или в пределе от всех значений исходной функции. В ходе решения задачи, обладающей параллелизмом множества объектов, такие интегральные операции то- же могут встретиться, но относительно реже, чем в об- щем случае. С другой стороны, при использовании параллелизма множества объектов чаще, чем в общем случае естест- венного параллелизма, встречаются ситуации, когда от- дельные участки вычислений должны выполняться раз- лично для разных объектов. В других случаях такие ситуации тоже могут быть. Представим себе, например, решение задачи Дирихле на плоско- сти, т. е. отыскание значений функции <р(х, у), удовлетворяющей уравнению И , дх + ду~" во всех точках внутри некоторой области на плоскости х, у при за- данных граничных условиях (заданных значениях <р(х, у) на грани- цах области). Область, в которой выполняются вычисления, накры- вается прямоугольной сеткой, во всех узлах сетки, кроме граничных, задаются более или менее произвольным образом в качестве началь- ного приближения некоторые значения функции (р. Далее вычисление очередного приближения искомой функции <р состоит в том, что для каждого узла сетки вычисляется среднее арифметическое из тех зна- чений функции в 4 соседних узлах, которые она имела в предыду- щем приближении. Все эти вычисления выполняются совершенно одинаково для всех узлов сетки, кроме, однако, узлов, расположен- ных на границе области, где должны всегда сохраняться заданные первоначально значения (граничные условия). При использовании параллелизма множества объек- тов аналогичное положение встречается сравнительно часто. 3°. В дальнейшем для нас важна будет не только ка- чественная сторона 'вопроса, состоящая в том, какими 16
свойствами, позволяющими организовать парйЛлелЬныё вычисления, обладают те или иные задачи, но и количе- ственная характеристика этих свойств. Если речь идет о естественном параллелизме или, в частности, о параллелизме множества объектов, то ос- новной количественной характеристикой является ранг задачи г — количество параметров, по которым должна вестись параллельная обработка (количество компонент многомерного вектора, количество точек, в которых за- дана функция, количество однородных объектов в мно- жестве обрабатываемых объектов и т. д.) [3]. В некоторых случаях ранг задач может сам высту- пать как векторная величина. Например, функции, над которыми должны выполняться операции, могут зависеть от нескольких — скажем, двух — переменных и задавать- ся на плоской решетке размером Г1Х^2 узлов; при этом ранг задачи есть вектор (гь г2). Аналогичным образом, если задача состоит в сопоставлении по тем или иным правилам информации о каждом из Т\ объектов, принад- лежащих первому множеству объектов, с информацией о каждом из г2 объектов, принадлежащих второму мно- жеству объектов, ранг задачи также является вектором (и, Г2). Если, однако, структура вычислительной системы не рассчитана на матричную структуру данных и ориенти- руется на работу с данными типа векторов, функций од- ной переменной и т. п., то такие задачи могут решаться параллельно-последовательно. Например, операции мо- гут выполняться сначала с ri значениями функции, ле- жащими на одной прямой, затем — с г\ значениями, ле- жащими на другой прямой, и т. д. г2 раз. Либо — в дру- гом примере — сначала информация об ц объектах пер- вого множества сопоставляется с информацией об одном из объектов второго множества, затем снова информация об ri объектах первого множества — с информацией о другом объекте второго множествами т. д. г2раз. При этом мы должны считать, что ранг задачи есть скаляр- ная величина Перестроив порядок вычислений в при- веденных примерах, можно считать ранг задачи рав- ным г2. В некоторых случаях ранг задачи не является кон- стантой. Например, на рис. 1.2.1 -показана некоторая криволинейная область задания функции двух перемен- ных. Как бы ни велся счет — параллельно по горизонта-
Лям или параллельно по вертикалям — количество значе- ний функции, с которыми можно оперировать одновре- менно, меняется при переходе от одной линии к другой. Возможны случаи, когда в ходе решения задачи необ- ходимо оперировать с функциями, заданными на разных решетках, с векторами разной Другой важной характе- ристикой для задач, облада- ющих естественным парал- лелизмом, является коэффи- циент расхождения зада- чи, D. Смысл его состоит в сле- дующем. Для простоты изложения будем полагать, что речь размерности и т. п. । । 1В0ВИ0%ИИ££?бВ| ИИ20ИИ0КИИ00 Рис. 1.2.1. Рис. 1.2.2. идет о параллелизме множества объектов. Информация обо всех г объектах, с которыми имеет дело данная за- дача (г — ранг задачи), обрабатывается по почти оди- наковой программе, однако некоторые ветви программы для различных объектов различны. Например, на рис. 1.2.2 показан граф управления программы, в соответст- вии с которым программа обработки информации об объектах до (i—1)-го этапа включительно идет для всех объектов одинаково, далее объекты классифицируются на mi классов (ги/=2, 3, ..., г) и — в зависимости от то- го, к какому из классов принадлежит данный объект — i-п этап выполняется в одном из тх- вариантов; далее 18
программа вновь идет для всех объектов одинаково, вплоть до (/—1)-го этапа включительно, затем объекты классифицируются на rrij классов и /-й этап программы выполняется в одном из mj вариантов, и т. д. В програм- ме однопроцессорной машины оператор i—1 заканчивает- ся условной передачей управления к началу одного из операторов il, *2, ..., im, (в зависимости от условий, определяющих принадлежность объекта к одному из т,- классов), а операторы il, i2, ..., im( заканчиваются без- условной передачей управления к оператору i+1; ана- логично— для оператора /—1 и операторов /1, /2, ... ..., /mj. Предположим для единства, что ть. различных вари- антов имеется для любого k-ro этапа программы, но для большинства этапов ntk=l. Предположим, кроме того, что длина оператора ksu, где k= 1, 2, ..; s&= 1, 2, ..., m*, есть Iks • Длина оператора — это фактически время его исполнения. Для разных вычислительных машин или разных физических реализаций вычислительных систем величины 1Ъ и соответственно характеристики зада- KSk чи, получаемые ниже на их основе, могут быть различ- ны. Возможно даже, что и в пределах одной вычисли- тельной системы длина некоторого оператора зависит от того, какими средствами системы он выполняется; одна- ко этот случай мы здесь не рассматриваем. Суммарной длиной программы LT назовем величину тк = 2 S (A) sft=l а средней длиной программы — величину LCp, равную mk (k) $£=1 где г, — количество объектов, которые на k-м этапе от- носятся к $Л-му классу (т. е. для которых исполняет- ся оператор ksk); очевидно, что г^=г для лю®ых к. 2е 19
Величину расхождения программы D определим как отношение суммарной длины программы к ее средней длине: S 3 lksk Р = Ь- = г- . ср 33 rksk'lksk (Л) (^) Нетрудно видеть, что если программа обработки ин- формации по всем г объектам в точности одинакова, т. е. если на любом &-м этапе программы имеется всего одна ветвь программы, (причем, разумеется, rftl=r), то расхождение равно единице, £>=1. Чем сильнее отли- чаются между собой программы обработки информации о различных объектах, т. е. чем больше имеется этапов, на которых программы для разных объектов различны, чем больше разных классов объектов на каждом таком этапе (чем больше величины тъ и чем больше длины соответствующих операторов программы lkSk для эта- пов, где т^>1), тем больше расхождение D. Обратим внимание на один важный частный случай, который может встретиться при определении величины D. Предположим, что на некотором z-м этапе обработки ин- формации должен циклически выполняться программный оператор длиной /ц, причем количество повторений цикла для каждого из объектов заранее неизвестно и может быть ЛГ . , ттп-|-2, . В этом случае z-йэтап ц mln’ ц min I ц min i ’ ц max J должен быть представлен в виде (ЛГ тах—ЛГЦ т1п-|-1) подэта- пов/(’Ч г(1), ...»1<ЛГцП1ах Wuni,n). На этапе t<0) количество вариантов zn<(0) равно 1, длина оператора равна I = = ^цт1п/ц. Далее объекты разбиваются на 2 класса (тп.(1) = 2): те, для которых должно быть выполнено по меньшей мере еще одно повторение цикла, и те, для ко- торых цикл больше повторять не нужно; длины операто- ров, выполняемых на |<*>-м этапе, равны соответственно I ... =L и I ... =0. Далее для «<г)-го этапа объекты вновь л‘)1 4 i’Л ' 2 классифицируются на 2 класса 2) и [т. д. При этом, разумеется, г<(^-т„-)Уцт1п)1. 20
Заметим еще, что величина расхождения D — в том виде, как мы ее выше оценили количественно, — может быть вычислена для некоторой задачи только по готовой программе для решения этой задачи и с учетом конкрет- ных технических характеристик вычислительной систе- мы, которую предполагается использовать для этой це- ли. Однако на самом деле величина D, как и ранг зада- чи г, является характеристикой собственно задачи, а не программы для ее решения, и грубое представление о величине расхождения может быть получено на осно- ве рассмотрения самой задачи в ее первоначальной по- становке. В последующих разделах будет показано (см. п. 2.2.4), что соответствующее построение вычислитель- ной системы позволяет удержать величину потерь в эф- фективности вычислительной системы, возникающих за счет наличия расхождения, в пределах 5—10%. Поэто- му ошибки в оценке величины D, которые получаются при грубом рассмотрении задачи в ее первоначальной постановке, в действительности не играют особой роли. 1.2.2. ПАРАЛЛЕЛИЗМ НЕЗАВИСИМЫХ ВЕТВЕЙ 1°. Параллелизм независимых ветвей — наиболее из- вестный тип параллелизма вычислительных задач. Ему посвящено подавляющее большинство теоретических ис- следований, причем многие авторы склонны рассматри- вать его чуть ли не как единственный вид параллелизма, который можно использовать для организации парал- лельных вычислений. Поскольку реальные вычислитель- ные системы во многих случаях ориентированы на дру- гие виды параллелизма, их делят на «истинные» и «не истинные» системы [4]. О параллелизме независимых ветвей мы отчасти уже говорили в п. 1.1.2 в примере, поясняющем понятие поль- зовательской производительности вычислительной си- стемы. Суть этого вида параллелизма состоит в том, что в программе решения крупной задачи на тех или иных этапах могут быть выделены независимые части — ветви, которые при наличии в вычислительной системе соответ- ствующих средств могут выполняться параллельно (од- новременно одна с другой). Ветвь программы Y не зависит от ветви X, если удов- летворяются четыре условия: 21
1) между ними нет функциональных связей; иначе говоря, ни одна из входных переменных для ветви Y не является выходной переменной ветви X либо какой-ни- будь ветви, зависящей от X; 2) между ними нет связи по рабочим полям памяти; иначе говоря, если ветви программы независимы, они не должны производить запись в одни и те же ячейки памяти; 3) они независимы в программном отношении, т. е. должны выполняться по разным программам; 4) они независимы по управлению; иначе говоря, условие выполнения ветви У не должно зависеть от при- знаков, вырабатываемых при выполнении ветви X или какой-либо ветви, зависящей от X. В частности, условие (3) отличает параллелизм не- зависимых ветвей от параллелизма множества объек- тов: обработку информации о различных объектах из множества однородных объектов нельзя рассматривать как независимые ветви программы, потому что эта об- работка должна выполняться по одной и той же про- грамме; фактически параллелизм множества объектов можно свести к параллелизму независимых ветвей, за- писав в памяти вычислительной системы столько копий программы, сколько независимых ветвей нужно получить (но, разумеется, не больше, чем количество объектов в множестве). Смысл этих различий между двумя вида- ми параллелизма будет более понятен из п. 1.2.4, 1° и §2.1. 2°. В теоретических исследованиях и при практиче- ском использовании параллелизма независимых ветвей применяются: аппарат билогических графов, разрабо- танный Г. Эстриным (G. Estrin) и др., язык р-схем Э. В. Евреинова и Ю. Г. Косарева, аппарат ярусно-па- раллельных форм, предложенный и разработанный Д. А. Поспеловым, близкие к нему идеи Ю. С. Голубева- Новожилова и др. [5—13]. Все эти методы в общем близки между собой. На- пример, при пользовании аппарата ярусно-параллельных форм программа представляется в виде «ярусов», причем в 0-й ярус входят все те ветви программы, каждая из которых не зависит ни от одной другой ветви, в 1-й ярус — ветви, зависящие только от ветвей 0-го яруса, во 2-й ярус — ветви, зависящие от ветвей 1-го яруса и, мо- жет быть, ветвей 0-го яруса и т. д. На рис. 1.2.3 в каче- 23
стве Примера изображена ярусйо-параллельная форма некоторой программы. Кружками обозначены ветви про- граммы, внутри кружков проставлены номера ветвей, а рядом с кружками — длины этих ветвей (либо, может быть, математические ожидания длин, если длины вет- вей не являются константами). Если одна и та же ветвь программы может быть исполнена п различными сред- ствами вычислительной системы за разные времена, то OZjloz \03)1оз 0-й ярус 12)I1Z (н)113 1-й ярус 23)с23 2-й ярус Рис. 1.2.3 вместо одного числа, обозначающего длину ветви, у каж- дого кружка нужно было бы проставлять n-мерный век- тор. Сплошными стрелками обозначены функциональные связи между ветвями, а штриховыми, как и на рис. 1.2.2, — связи по управлению. Сплошная стрелка, входящая в некоторый кружок, обозначает входную пере- менную или группу входных переменных для соответст- вующей ветви. Если эта стрелка не выходит ни из какого другого кружка, то она соответствует входным данным программы. Стрелка, выходящая из некоторого кружка, обозначает выходную переменную или группу выходных переменных соответствующей ветви программы. Если эта стрелка не входит ни в какой другой кружок, то она обозначает выходные данные программы. Разветвления стрелок показывают, что одни и те же данные (входные данные программы или данные, получающиеся на выхо- де какой-либо ветви) являются входными для двух или более ветвей. 23
Насколько это известно авторам, строгого доказа- тельства возможности представить любую программу в виде ярусно-параллельной формы не существует. 3°. Для того, чтобы оценить по ярусно-параллельной форме программы возможности организации параллель- ных вычислений, вводится ряд количественных характе- ристик ярусно-параллельной формы: Ьч— ширина ьго яруса (т. е. количество независимых ветвей в r-м ярусе), В — ширина графа ярусно-параллельной формы (макси- мальная ширина яруса, т. е. максимум из &/, г=1, 2, ...), Ц и L — длина яруса и длина графа, е и 0 — коэффици- ент заполнения ярусов и коэффициент разброса и т. д. Если при разных реализациях программы (при разных исходных данных) эти показатели оказываются различ- ными, то вводится ряд дополнительных показателей: на- пример, Ь\ — ширина г-го яруса в /-й реализации про- граммы (при этом bi=max{b]‘i}), Вэ— ширина графа (/) ярусно-параллельной формы в /-й реализации програм- мы (при этом В=шах {ВД) и т. д. Всего для характерна (/) стики ярусно-параллельной формы вводится несколько десятков различных численных показателей, одни из ко- торых относятся к программе в целом, другие — к ее ярусам, третьи — к определенной реализации програм- мы, четвертые — к ярусам этой реализации. Общим недостатком этой совокупности показателей является то, что она относится не собственно к задаче, а к определенной программе для решения этой задачи. Подбирая различные алгоритмы и составляя разными способами программу для решения одной и той же зада- чи (даже при использовании одного и того же матема- тического метода решения), можно получить программы с разными характеристиками ярусно-параллельной фор- мы и, следовательно, с разными возможностями для организации параллельных вычислений. Общие методы оптимизации программ (т. е., например, составление программы для любой задачи с максимально возможной шириной графа ярусно-параллельной формы), а также методы определения параметров оптимальной програм- мы без ее разработки (по общему виду формулировки задачи) отсутствуют. Другим недостатком указанной совокупности харак- теристик является тот факт, что даже знание численных значений всех характеристик далеко не всегда дает воз- 24
можность оценить пользовательскую эффективность вы- числительной системы, использующей параллелизм не- зависимых ветвей, при решении данной задачи (см. п. 2,2,2), 1.2.3. ПАРАЛЛЕЛИЗМ СМЕЖНЫХ ОПЕРАЦИЙ 1°. Суть параллелизма смежных операций состоит в следующем. При исполнении программы довольно ча- сто встречаются ситуации, когда исходные данные для некоторой операции (скажем, f-й по порядку) и условия ее выполнения вырабатываются не при исполнении пре- дыдущей операции ((/—1)-й), а раньше — при исполне- нии, например, (i—2)- или (i—3)-й и т. д. операции. Если это так, то соответствующее построение вычисли- тельной системы может позволить совместить время ис- полнения i-й операции с исполнением (i—1)-й или соот- ветственно (i—2)-й и т. д. операции. Вообще, если под- готовка исходных данных и условий исполнения i-й опе- рации заканчивается при исполнении (i—&)-й операции (где &=2, 3, ...) то i-ю операцию можно совместить с (f—Н-1)-й, (i—Н-2)-й, ..., (г—1)-й. Следует обратить внимание, что в понятие исходных данных и условий исполнения некоторой (Z-й по поряд- ку) операции входит нечто большее, чем просто наличие операндов для нее и отсутствие 'между (I—&)-йи r-й опе- рациями условных передач управления, от исхода кото- рых зависит, должна ли вообще исполняться /-я опера- ция. Если операнды для операции должны читаться из внутренней памяти, то важно, чтобы нужные страницы уже находились в главной памяти и были открыты для обращений к ним, чтобы для формирования исполнитель- ных адресов обращения была готова информация в ре- гистрах, используемых в качестве индексных и базовых, и т. д.; если при исполнении i-й операции происходит засылка информации в некоторую ячейку памяти (сверх- оперативной, или главной, или в один из индексных ре- гистров и т. д.), то важно, чтобы ни в одной операции от (I—k-\- 1)-й до (г—1)-й не использовалась эта ячейка памяти ни для чтения из нее, ни для записи в нее. В за- висимости от структуры вычислительной системы, по-ви- димому, необходимо требовать выполнения и других условий аналогичного характера.
2°. Как представляется на первый взгляд, между па- раллелизмом смежных операций и параллелизмом неза- висимых ветвей (см. il 1.2.2) нет существенной разни- цы. Если после исполнения (i—k) -й операции можно) исполнять r-ю операцию, то i-ю операцию можно пред- ставить в виде независимой ветви, принадлежащей тому же ярусу, что и ветвь, содержащая (г—&+1)-ю опера- цию, и т. д.; длина этой ветви, возможно, составляет всего одну операцию, но с теоретической точки зрения, это не имеет значения. Однако в действительности дело обстоит таким об- разом только с теоретической точки зрения. В § 2.1 мы увидим, что параллелизм независимых ветвей и парал- лелизм смежных операций реализуются вычислительны- ми системами существенно различной структуры. При реализации параллелизма независимых ветвей каждый раз, как начинает или заканчивает работу одна из ветвей программы, в системе затрачивается некоторое служебное время, необходимое для проверки наличия признаков, которые разрешают работу данной ветви, и для выработки признаков окончания выполнения данной ветви (позволяющих принять решение о разрешении ра- боты следующих ветвей). Кроме того, определенные слу- жебные потери времени связаны с обменом информаци- ей. В системах с разделенной памятью эти потери вы- ступают в явном виде; в системах, где имеется, скажем, несколько процессоров, работающих над общей па- мятью, — в виде потерь времени, возникающих при кон- фликтных ситуациях, когда несколько процессоров одно- временно обращается к одному физическому блоку па- мяти или через общие шины памяти. Определенное вре- мя затрачивается также на обращение к диспетчерской программе или операционной системе в те моменты вре- мени, когда пользовательская программа выделяет но- вую ветвь или когда заканчивается работа некоторой ветви. Ясно, что эффективное использование параллелизма независимых ветвей возможно при условии, что время работы каждой отдельной ветви будет намного больше, чем указанные служебные потери времени. Собственно, соотношение времени работы отдельных ветвей и служебных потерь времени, связанных с орга- низацией параллельной работы независимых ветвей, является показателем того, с каким видом параллелизма 26
мы имеем дело. Если это отношение велико, то мы име- ем дело с параллелизмом независимых ветвей. Если оно приближается к единице (например, меньше 4—5), то количество переходит в качество и речь должна идти о параллелизме смежных операций. 3°. Количественной характеристикой параллелизма смежных операций, которым обладает та или иная за- дача, является показатель связанности смежных опера- ций а — вероятность того, что результат некоторой опе- рации будет использован в следующей за ней операции. Чем меньше для данной задачи показатель связанности а, тем больше для нее глубина параллелизма смежных операций (величина, которую мы определим ниже). Если приближенно считать, что вероятность исполь- зования результата данной операции в любой после- дующей операции тоже равна а, то вероятность того, что результат данной операции не будет использован в I по- следующих операциях и будет использован ровно в (/+1)-й операции, окажется равной а(1—а)1. Если а<С1, то а(1 — а/ ае“а/ (закон Пуассона). Для того, чтобы, начиная от данной операции, име- лась цепочка, содержащая не меньше / операций, ко- торые можно исполнить одновременно с данной, должны совпасть следующие события: — результат данной операции не используется по меньшей мере в (/—1) последующих операциях; — результат 1-й после данной операции не исполь- зуется по меньшей мере в (/—2) следующих за ней опе- рациях; — результат 2-й после данной операции не исполь- зуется по меньшей мере в (Z—3) следующих за ней опе- рациях; — результат (I—2)-й после данной операции не ис- пользуется по меньшей мере в одной следующей за ней операции. Итак, вероятность того, что, начиная от данной опе- рации, имеется цепочка длиной не меньше I операций, которые можно выполнить все одновременно, равна z-i (Z-1) I ₽/ = П (1- «)' = (! -«) 2 • i=i 27
Далее йетрудйо определить вероятность того, что, начиная от любой данной операции, в программе имеет- ся цепочка ровно из I операций, которые можно вы- полнить все одновременно. Если эту вероятность обозна- чить через у/, то, очевидно, (/—о i -(!-«)') = (1-*) 2 (1 -(!-«)') = U-D i i (Ж) = (1-а) 2 +(1-а) 2 . Математическое ожидание длины цепочки операций, которые можно исполнять все одновременно, назовем глубиной параллелизма смежных операций Lnco для данной программы. Очевидно, оо оо / (/—1) I I (1+У)\ Атсо= 3 а) 2 (1 а) 2 / = Z=1 /=1 оо (1-1)1 =3(i-«) 2 . 1=1 Эти соотношения однозначно связывают глубину па- раллелизма смежных операций с показателем связанно- сти смежных операций и, казалось бы, незачем вводить два разных числовых показателя для характеристики рассматриваемого вида параллелизма. Однако показа- тель связанности а имеет смысл только при той гипотезе о распределении вероятностей использования результа- тов некоторой операции в последующих операциях, кото- рая была принята в начале настоящего пункта. Соответ- ственно и приведенные соотношения, связывающие £Псо с а, справедливы только для принятого вероятностного распределения. С этой точки зрения величина ЛПСо (глу- бина параллелизма смежных операций) является более общей характеристикой, так как может быть найдена и для других распределений, если они лучше описывают реальное положение дел для тех или иных конкретных задач. Собственно, показатель связанности смежных опера- ций а и глубина параллелизма смежных операций £Псо, как мы их определили выше, являются характеристика- ми не собственно задачи, а конкретной программы для 28
решения этой задачи. Ё этом отношении Введенные коли* чественные характеристики параллелизма смежных опе- раций ничуть не лучше, чем те количественные характе- ристики параллелизма независимых ветвей, о которых говорилось в п. 1. 2.2, 3°. Здесь, однако, положение облегчается тем, что полу- чение примерно одних и тех же величин показателя свя- занности и соответственно глубины параллелизма смеж- ных операций может быть достигнуто путем локальной оптимизации практически любой программы для реше- ния некоторой определенной задачи и даже для боль- шинства различных задач. Локальная оптимизация со- стоит в том, что просматриваются несколько инструкций программы, которые должны выполняться подряд, и из- меняется порядок следования некоторых из них, возмож- но, изменяются номера регистров или адреса ячеек па- мяти и т. п., используемых в некоторых инструкциях, с тем, чтобы обеспечить максимально возможный парал- лелизм смежных операций. Эта оптимизация может вы- полняться либо вручную, при составлении программы на машинно-ориентированном языке, либо программным путем, при трансляции программы с языка ассемблера на машинный язык (или трансляцией с языка ассембле- ра на язык ассемблера или с машинного на машинный), либо специальной аппаратурой во время исполнения про* граммы (при ее интерпретации). Обычные значения величин показателя а, достигае- мые при этом, а^0,1—0,5, что зависит не столько от кон- кретных свойств задачи, сколько от качества выполне- ния локальной оптимизации. Соответствующие значения Lnco^4— 1,0. 1.2.4. ИСКУССТВЕННЫЙ ПАРАЛЛЕЛИЗМ Во многих случаях крупные вычислительные задачи, встречающиеся на практике, обладают в той или иной мере всеми перечисленными видами параллелизма. Со- ответственно с той или иной эффективностью такую за- дачу можно решать с помощью любой вычислительной системы: ориентированной на использование естествен- ного параллелизма (или параллелизма множества объ- ектов), либо на использование параллелизма независи- мых ветвей, либо параллелизма смежных операций. Тем не менее сравнительно часто приходится сталки- ваться с практически важными задачами, которые в их 29
Исходной постановке не обладают ни одним из рассмот- ренных типов параллелизма либо обладают одним ка- ким-нибудь видом параллелизма в то время, как систе- ма, с помощью которой должна решаться эта задача, ориентирована на другой вид параллелизма *>. Каких-либо общих методов, позволяющих создать па- раллелизм того или иного вида в задаче, которая не об- ладает ни одним из видов параллелизма, либо перейти от одного типа параллелизма к другому, не существует. В этом разделе на двух частных примерах мы рассмот- рим некоторые искусственные приемы решения проблем такого рода, причем в первом примере мы будем поль- зоваться эквивалентным преобразованием исходного алгоритма решения задачи, во втором примере — неэк- вивалентным преобразованием. В принципе правила эквивалентных преобразований алгоритмов могут быть формализованы, и алгоритмист либо программно-аппа- ратный оптимизатор должны лишь найти, какие именно преобразования и в какой последовательности нужно вы- полнить, чтобы получить требуемый эффект. Неэквива- лентные преобразования тесно связаны с существом ре- шаемой задачи и сводятся фактически к подмене одного алгоритма решения данной задачи другим, обладающим требуемым видом параллелизма; такие преобразования целиком выполняются эвристическими методами. Г. Преобразование параллелизма множества объек- тов в параллелизм независимых ветвей. Пусть задача состоит в том, что по одной и той же программе должна быть обработана информация о большом количестве (г) однотипных объектов; иначе говоря, речь идет о класси- ческом примере задачи, обладающей параллелизмом множества объектов с рангом г (см. п. 1.2.1)-. Предполо- жим также, что эта задача должна быть решена с по- ♦) Неискушенному читателю эта последняя ситуация может по- казаться нелепой: для чего может понадобиться решать задачу с по- мощью вычислительной системы, которая для этой задачи заведомо не подходит? Но ведь вычислительные системы не стоят на витрине универмага, где можно приобрести систему на любой вкус; далеко не каждый пользователь имеет доступ к разным вычислительным си- стемам, на которых он мог бы решать различные из имеющихся у него задач. Кроме того, речь может идти о разных частях одной крупной задачи, которые должны все решаться с помощью одной вычислительной системы, но из которых одна часть обладает одним видом параллелизма, другая — другим, а третья, возможно, — ни одним из описанных выше видов параллелизма. 30
мощью вычислительной системы, ориентированной на параллелизм независимых ветвей, причем структура си- стемы такова, что наибольшая эффективность будет до- стигнута при ширине всех ярусов, равной ft, где Ь<^г. Причины, по которым обработку по одинаковой про- грамме информации об г разных объектах нельзя рас- сматривать как г независимых ветвей, объяснены в п. 1.2.2, п. 1° (об этом см. также ниже). В связи с этим Рис. 1.2.4 граф ярусно-параллельной формы задачи в ее исходной постановке имеет вид, при- веденный на рис. 1.2.4. Рис. 1.2.5 В нулевом ярусе расположены фиктивные ветви про- граммы, введенные нами для пояснения логической структуры обработки информации и обозначенные Прм1, Прм2, ..., Прмг. Это — ветви приема информации соот- ветственно для 1-, 2-, ..., г-го объектов. Так же, как фиктивные ветви, расположенные в более низких ярусах и соответствующие выводу результатов по 1-, 2-, ..., г-му объектам (Выв1, Выв2, ..., Вывг), эти ветви исполня- ются специализированной аппаратурой системы (внеш- ние устройства, каналы), а для основной процессорной части системы длины этих ветвей (время их исполнения) равны нулю. 31
Основная обработка информации для каждого из г объектов представлена на рисунке в виде одной ветви— соответственно Обр1, Обр2, ..Обрг— и, как предпола- гается, параллелизмом независимых ветвей не обладает, вследствие чего не может быть представлена в виде не- скольких подветвей, которые можно было бы располо- жить в одном ярусе. Ветви Обр1, Обр2, ..Обрг инфор- мационно между собой не связаны, но они связаны по управлению, поскольку исполняются все по одинаковой программе (см. условие (3) на с. 22). Эти управляющие связи на рис. 1.2.4 проведены, как обычно, штриховыми линиями. Ввиду наличия указанных связей ветви Обр1, Обр2, ..., Обрг расположены в разных ярусах ярусно- параллельной формы, а общая длина графа рис. 1.2.4 равна Lr. Произведем теперь эквивалентные преобразования алгоритма (и программы) решения задачи, которые по- зволяют эффективно использовать вычислительную си- стему, ориентированную на параллелизм независимых ветвей. Прежде всего ветвь обработки информации об г-ом объекте Обрг (для f=I, 2, ..., г) представим в виде по- следовательных ветвей (фактически подветвей) O6pi Z, ОбргЦ Обри— так, как это показано на рис. 1.2.5. Ветви Обрг разобьем на подветви так, чтобы длины подветвей были примерно одинаковы: L^L2^ ^ ... ^Lb^Llb. Некоторая неравномерность в длинах подветвей воз- никает за счет того, что минимальным дискретом разде- ления могут быть машинные операции, длины которых, возможно, неодинаковы, а также за счет того, что длины отдельных подветвей, возможно, зависят от исходных данных. Кроме того, при использовании определенных структур вычислительных систем, ориентированных на параллелизм независимых ветвей, может потребоваться минимизация или хотя бы выравнивание объемов инфор- мации, передаваемых от /*-й подветви к (/+1)-й (для /=1, 2, ..., b— 1). Заметим далее, что две ветви, Обр^ и (fp г*2=1, 2, ..., г; /1, /2=1, 2, ..., &), при ii=i2 и /1#=/2 связа- ны между собой информационно; при /1=/2 и i\^i2 они связаны общей программой, а при и=/и2 и /1=^/2 полно- стью независимы.
С учетом этого граф ярусно-параллельной формы ис- ходной программы, представленный на рис. 1.2.4, мож- но преобразовать к виду, показанному на рис. 1.2.6. Для простоты при построении рис. 1.2.6 предполагалось, что &=3; читатель без труда представит себе, как выглядел бы граф ярусно-параллельной формы при других зна- чениях Ь. Рис. 1.2.6 о-й яру8 1-й ярус 2-й ярус 3-й ярус 4-й ярус 5-й ярус 5-й ярус • • • • • • r-й ярус (г+1 )-й ярус (г+2)-й ярус (г<-3)-йярус После преобразования граф ярусно-параллельной формы содержит г-\-Ь—I непустых ярусов (т. е. ярусов конечной длины). Ширина каждого из этих ярусов, кро- ме первых (Ь—I) и последних (fr—I) ярусов, равна в точности b (фиктивная ветвь Вывг нулевой длины не 3—10J3 33
учитывается). Общая длина графа при этом равна'* £а=£1+тах{Zq, Ag}+ ... +max{Ai, Lg, •••> i}-F + (r—&+1) max{Lb L2, .£ь}+ +max{Lg, L3, L4, ..Lb}-f~niax {L3, £4, ..., £ь}+ ... +Z+- Если L1 Lt ... Lb , то общая длина графа не- сколько превышает величину —Ц—- L. Приняв при этом условие г » 6, получим LG « L/b. Представим себе, как мы это делали в § 1.1, вычис- лительную систему в виде соединения п машин. Непосредственно использовать в такой системе па- раллелизм множества объектов неудобно по многим при- чинам. Прежде всего ясно, что если бы мы просто попыта- лись на каждую машину возложить обработку информа- ции по rjn объектам, то потребовались бы какие-то до- полнительные устройства системы, которые распределя- ли бы между машинами входную информацию, посту- пающую об г объектах, и далее собирали бы выходную' информацию. Скорее всего для этого потребовалась бы дополнительная (п+1)-я машина, которая вела бы весь внешний обмен, передавала принятую информацию дру- гим п машинам и принимала от них информацию для передачи на выход; эти излишние передачи информации требовали бы дополнительного времени и вели бы к сни- жению эффективности системы. Главное же возражение против такого использования системы состоит в том, что оно требует размещения в па- мяти каждой из п машин своего экземпляра полной про- граммы. Таким образом, общий объем памяти для хра- нения программной информации в системе был бы в п раз больше, чем это необходимо, причем во всей этой памяти хранилась бы просто п раз одна и та же инфор- мация. Если учесть, что и все п устройств управления всех п машин выполняли бы одни и те же операции, тф станет ясно, насколько неэффективно использовалось бы оборудование системы в этом случае. Смысл выполненного выше преобразования програм- мы состоит в преобразовании параллелизма множеств# 34
объектов в параллелизм независимых ветвей, т. е. в tot вид параллелизма, который более всего подходит для рассматриваемой системы. Приняв Ь=п (фактически b можно было выбирать произвольно, лишь бы соблюда- лось условие Ь<^г), работу системы далее организуем следующим образом. Информацию обо всех г объектах будем принимать всегда в 1-ю машину; если возможно, то принимать ин- формацию по каждому следующему объекту будем после того, как эта машина закончит использование входной информации по предыдущему объекту, чтобы не увели- чивать объем внутренней памяти, необходимый для хра- нения входной информации, и избежать необходимости модификации адресов (в других машинах модификация адресов не потребуется в любом случае). Эта же первая машина будет выполнять последовательно ветви O6pi 1, O6pi2, ..., Обри. Закончив выполнение ветви Обри’ (где 1=1, 2, ..., г), 1-я машина передает выход- ную информацию этой ветви 2-й машине, которая после- довательно выполняет ветви Обрг 1, Обрг2, ..., Обргг, и т. д. Последняя, n-я машина (п=й) последовательно выполняет ветви Обр& 1, Обрь2, ..., Обр^г и ведет вы- дачу выходной информации. Таким образом, п машин вычислительной системы образуют как бы конвейер, цикл работы которого равен max{Li, Аг, ..., Еь}+Д, где А — интервал времени, в течение которого одновре- менно от каждой /-й машины (/= 1, 2, ..., п—1) проис- ходит передача информации к следующей (/-}-1)-й ма- шине; при этом, если в конце некоторого цикла от 1-й машины во 2-ю передаются результаты работы ветви Обри’, то одновременно от 2-й машины в 3-ю передают- ся результаты работы ветви Обрг (t— 1), от 3-й машины к 4-й — ветви Обр3 (i—2) и т. д. Если Lj^L/b для /=1, 2, ..., Ь и если \<^,Llb\ то цикл работы конвейера лишь немного превышает величину L/b. Каждая из п машин системы хранит примерно 1/п часть программы: 1-я машина — для ветви Обри, 2-я — для ветви Обрг/ и т. д. Суммарное количество программ- ной информации, хранимой в памяти вычислительной системы, примерно такое же, как было бы в обычной вычислительной машине; небольшие дополнительные объемы памяти для хранения программ связаны с необ- 3* 35
ходимостью организовать обмен информацией между машинами и синхронизацию конвейера. Заметим, что предлагаемое здесь средство преобра- зования параллелизма множества объектов в паралле- лизм независимых ветвей не является универсальным. Условием, когда оно применимо, является достаточно большая длина L программы обработки информации по каждому из объектов. Если L мала, а необходимость применения вычислительной системы связана с очень большим рангом задачи г, то разделить программу на необходимое количество примерно равных подветвей Ь, может быть, просто нельзя. Либо может оказаться, что подветви получаются слишком короткими и потери, свя- занные с неравномерностью ветвей, а также на обмен информацией и синхронизацию, несоразмерно велики. 2°. Искусственное создание параллелизма множества объектов. На практике встречаются большие задачи, не обладающие ни одним из видов параллелизма (кроме, может быть, параллелизма смежных операций, глубина которого, как мы говорили, невелика). Не претендуя на общность изложения, рассмотрим в качестве примера чисто последовательностной задачи нахождение корня X алгебраического или трансцендетного уравнения fW=o. которое выполняется с помощью итерационной схемы, построенной по методу Ньютона (метод касательных): f (*/) %' +1—f' (Xi) • где хо, Xi, ..Xi, Хг+ь ••• — последовательность, сходящаяся к X. Если известно, что значение X расположено в интервале (а, Ь), а начальное приближение х0 выбрано в середине этого интервала, Ь — а х0 = %- , то достаточными условиями сходимости итераций являются наличие отличных от нуля первой и второй производных f(x) во всем интер- вале |(а, Ь) и выполнение неравенства М 4-(Ь-а)<1, где М и ш — такие числа, что lf'(x)|>/n, |f" (х) | <М при a^x^Jb. При этом погрешность начального приближения . ь — я < Ао — о > 36
погрешность первого приближения М 81 =2/п Д» - 2пг ( М \2 а)) > погрешность 4-го приближения 2т [М \* М ^4/Я (6—> где через Д; обозначена верхняя оценка d< (i=0, 1, ...). При реализации этого алгоритма на обычной однопроцессорной вычислительной машине необходимое количество циклов итераций, k<A\ определяется из условия где е — допустимая погрешность окончательного значения X. Предположим далее, что длина каждого цикла итераций L ве- лика (из-за того, что вычисление f(Xi) и f'(Xi) весьма громоздко), вследствие чего суммарное время счета на обычной машине (Lk^) оказывается недопустимо большим. Пусть в нашем распоряжении имеется вычислительная система, ориентированная на естественный параллелизм или параллелизм множества объектов, которая могла бы вычислить выражения x~f' (X) для п различных значений х одновременно — примерно за то же время, за какое это выражение вычисляется обычной машиной для одного значения х. Попробуем использовать эту систему для ускорения получения конечного результата. С этой целью произведем неэквивалентное преобразование алго- ритма '[14]. Исходный интервал (а, Ь) разделим на п равных интер- валов длиной (Ь—а) /п,\ в середине каждого интервала выберем свое начальное приближение Xoi, Х02, ..хОп. В первом цикле итераций вычислительная система вычислит п величин xij, f(x.y) х,/ = Хо/ — f, (Х)>/) (для /=1. 2.....п). Из условий сходимости итераций вытекает, что f(x) монотонна и во всем интервале (а, Ь) либо вогнута вверх, либо вогнута вниз. Поэтому все вычисленные значения хц расположены либо все слева, либо все справа от искомого значения X; ближе всего к X находит- ся соответственно max {xij} или min {хц} причем отклонение этой (/) (/) величины от X не превышает, очевидно, 1 2т (М \2 1 Д1- п2 М (4/п ~ П2 Д1- Обозначим соответственно max {х^} = blt b1 — Aj = ax либо min{x1A=a1, a^-|-Ai = bi« Искомый корень X лежит теперь в интервале (аь &i). 37
Разделим далее Интервал (ab bi) на п равных частей. Можнд было бы принять середины этих подынтервалов за набор из п пер- вых приближений (подобно тому, как ранее мы получили набор из п начальных приближений). Однако есть опасность, что оценка Д1 сильно завышена и что уход от Z?i=max {xij} (или соответственно (/) от ai = min {хи}) к середине ближайшего подынтервала может ухуд- (/) шить точность первого приближения. Поэтому в качестве набора первых приближений Хц, xi2, ..х1п выберем само значение Ьх (или соответственно сц) и граничные точки остальных подынтервалов. Где бы в интервале (aj, b\) ни было расположено искомое значение X, всегда найдется по меньшей мере одно такое xij, которое отстоит от X не более чем на п П3 • Далее с помощью вычислительной системы произведем одновре- менно вычисление п величин х2р f(*v) из которых по крайней мере одна (максимальная либо минимальная) отклоняется от X не более чем на 1 2/я / М \22 1 Дг'_ лв М " л» Дг- Действуя дальше аналогичным образом, получим после г-го цик- ла итерации Д‘ = 21' 1 (я2)2 -1 Необходимое количество циклов итерации при использовании вы- числительной системы, вычисляющей одновременно п очередных при- ближений, определяется из условия Д л(п) В любом случае т. е. рассматриваемая система дает выигрыш в скорости по сравнению с обычной (однопроцессорной) машиной, причем отношение может быть и меньше, и боль- ше я. Оно зависит от соотношения величин т и М (нижняя грань |/'(х)| и верхняя грань |/"(х)|) Длины интервала Ь—а, требуемой точности 8 и величины п. М Если величины ^(ъ — д) Л п заданы, то максимум этого отно- шения, ^1)/^п)=|(^1)/Л(7г))тах достигается при том значении 8, ко- торому соответствует Так получается потому, что в после- довательности Аь Д2, ... дискреты (отношения соседних членов) су- щественно крупнее, чем в последовательности Д1, Д2| ... . 38
При прочих равных условиях чем ближе к единице величина — —а), т. е\ чем медленнее сходятся итерации, тем больше Am v J может быть отношение k^/k^nX Это видно из следующей таблицы: В некоторых случаях, как мы говорили, может оказать- __(Ь—а) ся, что k^/k^>n. В частно- т (*(!)/ *<«)) max п в 4 п я 8 | | п= !6 сти, в таблице выделены жир- ным шрифтом те значения q gg (^(O/^(n))max, которые больше 0 999 п. Эти случаи соответствуют 8 11 9 11 9 12 тем относительно редким си- туациям, о которых говорилось в п. 1.1.2, когда пользовательская эффективность вычислительной системы получается больше единицы (в таблице видно, что она может быть равна 2 и даже почти 3). При этом область, где достигается такой выигрыш (при прочих равных условиях) тем шире, чем меньше и. 2. СТРУКТУРЫ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ В настоящей главе рассматриваются и сравниваются между собой различные структуры вычислительных си- стем. Полагая по-прежнему, что главной целью создания системы является достижение высокого реального поль- зовательского быстродействия Sprn) при приемлемых зна- чениях эффективности системы мы попробуем по- казать, каким образом структура системы должна соот- ветствовать конкретным свойствам задач, которые будут решаться с ее помощью. Рассматриваются и некоторые другие особенности разных типов вычислительных си- стем. 2.1. ПРИНЦИПЫ ОРГАНИЗАЦИИ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 2.1.1. МНОГОМАШИННЫЕ КОМПЛЕКСЫ И МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ С РАЗДЕЛЬНЫМ УПРАВЛЕНИЕМ (СИСТЕМЫ ТИПОВ I И II) 1°. Многомашинные комплексы — наиболее давно из- вестный и широко используемый вид вычислительных систем. Именно вычислительные системы этого типа рас- Определение этих понятий см. п. 1.1.2, 2°. 39
сматривались нами в § 1.1 в качестве примера для пояснения различных понятий и определений, вводив- шихся для вычислительных систем вообще, а также в п. 1.2.4, 1°. Многомашинный комплекс представляет собой соеди- нение нескольких независимых машин, каждая со своим центральным процессором, каналами, внешними устрой- ствами, операционной системой. Большей частью (если целью создания комплекса является достижение высо- Рис. 2.1.1 кой пользовательской производительности для широкого класса задач или повышение надежности) все машины в комплексе одинаковы. Информационные связи между ними осуществляются по принципу «канал — канал» (рис. 2.1.1,а) либо через общее поле памяти. При этом, как правило, речь идет об общем поле внешней па- мяти, т. е. об общих магнитных дисках или лентах и т. п. (рис. 2.1.1,6). Управляющие воздействия от одной машины к дру- гой могут передаваться либо по тем же цепям, что и ин- формация (в особенности, если речь идет об информаци- онных связях «канал — канал»), либо по отдельным це- пям, показанным на рис. 2.1.1 тонкими линиями. Напри- мер, управляющие воздействия для других машин могут формироваться специальными внешними устройствами, присоединенными к каналам данной машины, а управ- ляющие воздействия от других машин восприниматься непосредственно системой прерывания программ, имею- щейся в составе устройства центрального управления данной машины. 40
Конфигурация информационных и управляющих свя- зей на рис. 2.1.1 намеренно не показана. Здесь возможно множество различных вариантов. Применяются, напри- мер, отдельные соединения каждой машины с любой дру- гой; связи через общие магистрали, когда каждая из машин может выдать информацию или управляющие воздействия на любую свободную магистраль и осущест- вить прием с любой магистрали; ограниченные связи, на- пример, каждой машины только с двумя соседними; «ве- ерные» («радиальные») связи, когда одна из машин ком- плекса связана со всеми остальными, а все остальные машины совсем не связаны или почти не связаны друг с другом. Веерные (радиальные) связи характерны для много- машинных комплексов с так называемым централизо- ванным управлением, — в которых все функции управ- ления системой возложены на одну ведущую машину. Ведущая машина может быть того же типа, что и все остальные машины комплекса («ведомые»), а может быть и другого типа. Наряду с многомашинными комплексами с централи- зованным управлением известны многомашинные ком- плексы с распределенным управлением, в которых функ- ции управления системой распределены между всеми ма- шинами комплекса. В дальнейшем многомашинные комплексы будем на- зывать вычислительными системами типа I. 2°. Многопроцессорные системы с раздельным управ- лением представляют собой следующий шаг по пути ин- теграции вычислительных средств в единую вычисли- тельную систему по сравнению с многомашинными ком- плексами. Одно из возможных построений многопроцессорной системы с раздельным управлением показано на рис. 2.1.2. Система состоит из п процессоров, каждый из которых содержит свое устройство управления (У), ариф- метико-логическое устройство (А) и свое устройство па- мяти (П). Все процессоры связаны между собой через общую память, и с ней же связаны общие для всех про- цессоров каналы внешнего обмена. В отличие от многомашинных комплексов, где общая память, если она имеется (см. рис. 2.1.1), является ско- рее всего внешней памятью, здесь общая память — это часть внутренней памяти системы. Возможно, что 41
Процессоры 1 2 ... л Рис. 2.1.2 Устройства раздельной памяти в составе каждого про- цессора вообще отсутствуют, либо представляют собой только сверхоперативную память, либо включают в себя как сверхоперативную, так и главную память; соответ- ственно общее поле памяти либо включает в себя все ступени внутренней памяти, либо главную память и боль- шую (внутреннюю память 1-й ступени), либо только большую память *>. Возможны и такие построения многопроцессорных си- стем с раздельным управлением, в которых общей внут- ренней памяти вообще нет, а обмен информацией меж- ду процессорами идет через специальные цепи. При этом обобществленные ка- налы адресуются ко всей внутренней памяти системы, указывая в качестве адреса обращения номер процессо- ра и адрес его памяти. Та- кая многопроцессорная си- стема по своей структуре очень близка к многома- шинному комплексу. В дальнейшем многопро- цессорные системы с раз- дельным управлением будем называть вычислительными системами типа II. Вычислительные системы типа I и II иногда называ- ют системами с множественным потоком команд и мно- жественным потоком данных («МПК — МПД») —см., на- пример, [2]. По этой терминологии обычная однопро- цессорная машина должна называться системой с оди- ночным потоком команд и одиночным потокам данных («ОПК—ОПД»), а многопроцессорные системы с общим управлением, ориентированные на естественный парал- лелизм, которые мы рассмотрим в п. 2.1.3 (где они на- зываются системами типа IV) —системами с одиночным потоком команд и множественным потоком данных («ОПК—МПД»). При этом остается неясным, как сле- дует называть многопроцессорные системы с общим уп- равлением, ориентированные на параллелизм смежных *) Здесь используется та же терминология, что и в •[!]. 42
операций (см. п. 2.1.2, системы типа III), а также какие системы следует относить к классу «множественный по- ток команд—одиночный поток данных» («МПК—ОПД»). Вообще эта терминология нам не представляется доста- точно удачной. 3°. Области применения. Будем считать, как мы усло- вились в § 1.1, основной целью создания вычислитель- ной системы достижение высокой пользовательской про- изводительности. Ясно, что системы типа I и II лучше всего приспо- соблены к использованию параллелизма независимых ветвей. При этом возможности системы будут исполь- зованы наилучшим образом, если ширина каждого яру- са ярусно-параллельной формы Ь- будет в точности рав- на или кратна количеству машин в многомашинном ком- плексе либо количеству процессоров п в многопроцес- сорной системе с раздельным управлением: b=kn, где k=\, 2, 3, ... (натуральное число). Кроме того, важно, чтобы все ветви программы, вхо- дящие в один f-й ярус, были по возможности одинаковой длины h и чтобы эта длина Ц была достаточно велика. Конечно, равенство или кратность ширины всех яру- сов количеству машин (процессоров) в системе и равные длины всех ветвей в ярусе сами собой могут получиться только в силу стечения почти невероятных обстоятельств. На такую ситуацию можно рассчитывать либо в специ- ализированной системе, построенной для решения опре- деленной задачи (определенного класса задач), либо как на результат специального преобразования программы решения задачи — например, такого, как было описано в п. 1.2.4, 1°. При использовании систем указанного вида лучше было бы рассчитывать на ситуацию другого рода — ког- да при прохождении программы среднее по времени ко- личество исполняемых и готовых к исполнению ветвей значительно больше, чем количество п машин (процес- соров) в системе (подробнее эти вопросы рассматрива- ются в п. 2.2.2). Поэтому в большинстве случаев вычислительные си- стемы рассматриваемых типов с относительно большим количеством машин (процессоров) используются для до- стижения высокой системной производитель- ности. Если при этом в потоке задач, проходящих че- рез систему, встречается задача, которая могла бы эф- 43
фективно использовать ni-машинную или ^-процессор- ную систему то ей выделяется подсистема из щ машин или соответственно пх процессоров. Таким обра- зом попутно — там, где это возможно — решается проблема повышения пользовательской произво- дительности. 4°. Причины, по которым в многомашинных комплек- сах и в многопроцессорных системах с раздельным уп- равлением нельзя использовать параллелизм смежных операций, ясны непосредственно из определения парал- лелизма смежных операций (см. п. 1.2.3, 2°). В п. 1.2.4, 1° на одном частном примере были показа- ны обстоятельства, препятствующие использованию в си- стемах рассматриваемого типа параллелизма множества объектов. Речь шла о трудностях распределения работ (и соответственно входной информации об объектах) между машинами многомашинного комплекса, сбора вы- ходной информации о разных объектах от разных машин для передачи на общий выход и, главное, о необходи- мости размножать в п экземплярах — по количеству ма- шин в комплексе — программу обработки информации, одинаковую для всех объектов. В случае, когда мы имеем дело с системой типа II над общей памятью (рис. 2.1.2), программу в принципе можно не размножать, а держать ее в общей памяти, к которой обращались бы устройства управления всех п процессоров системы. Однако при этом постоянно воз- никали бы конфликты между процессорами при обра- щениях к общей памяти, в результате чего процессоры работали бы фактически не параллельно, а последова- тельно во времени и никакого выигрыша в пользователь- ской производительности мы не получили бы. Можно себе представить, конечно, что главная па- мять, входящая в состав общей памяти системы, содер- жит большое количество (^п) блоков с независимым обращением и что адресация этой памяти организована так, что номер блока указывается младшими разрядами адреса (иначе говоря, последовательные инструкции на- ходятся всегда в разных блоках). Тогда ситуация могла бы сложиться следующим образом. Допустим, что при исполнении некоторой инструк- ции— например 1-й, возник конфликт между всеми п процессорами, которые все одновременно обращаются за этой инструкцией, скажем, к 1-му блоку памяти, Инст- 44
рукцию получает, конечно, только один из процессоров— например 1-й, все остальные в данном такте простаива- ют. Но уже в следующем такте 1-й процессор обращает- ся за 2-й инструкцией ко 2-му блоку памяти, а из 1-го блока памяти 1-ю инструкцию получает 2-й процессор; затем 1-й процессор получает 3-ю инструкцию из 3-го блока памяти, 2-й — вторую инструкцию из 2-го блока памяти, 3-й процессор—1-ю инструкцию из 1-го блока памяти и т. д. Через п тактов все процессоры выстраива- ются в цепочку, все они выполняют одну и ту же про- грамму со сдвигом по времени друг относительно друга на один такт (на одну инструкцию) и конфликтов меж- ду ними не возникает. Однако столь благополучная ситуация может суще- ствовать только на длинных линейных участках програм- мы. Любая передача управления в программе с высокой вероятностью вызывает новые конфликты при обраще- ниях к общей памяти и новые потери времени. Действи- тельно, если в результате выполнения передачи управ- ления 1-й процессор обращается за очередной инструк- цией к тому блоку памяти, к которому должен был об- ратиться /-й процессор (п>1>1), и, как и прежде, имеет приоритет, то в данном такте простаивает Z-й процессор; но в следующем такте к тому же блоку памяти обратит- ся 2-й процессор, а простаивать будут уже i- и (Н-1)-й процессоры, и т. д. Аналогичным образом цепочка про- цессоров, выбирающих без потерь времени, такт за так- том последовательные инструкции из разных блоков па- мяти, разрушается обращениями за данными — напри- мер, за константой, расположенной в одном из блоков памяти (где расположены и некоторые из инструкций программы) и нужной последовательно всем процессо- рам. Кроме того, идея нумерации физических блоков па- мяти младшими разрядами адреса приводит к тому, что любая программа и ее данные оказываются расписанны- ми по всем физическим блокам памяти, что противоречит идее сохранения живучести комплекса за счет наличия в его составе большого числа однотипных модулей (в частности, модулей памяти). Повреждение хотя бы одного блока памяти приводит к повреждению всех про- грамм, хранимых в общей памяти, в том числе, возмож- но, и программ операционной системы, которые как раз и должны обеспечивать живучесть средств, 45
Если бы речь шла не о параллелизме множества объ- ектов, а о более общем типе естественного параллелиз- ма, то дополнительные трудности в системах типа I и II вызвала бы реализацию «интегральных» операций (см. п. 1.2.1, 2°). В силу указанных обстоятельств структуры вычисли- тельных систем, рассмотренные в настоящем разделе, не могут эффективно использовать ни естественный парал- лелизм (в частности, параллелизм множества объектов), ни параллелизм смежных операций, но ориентированы главным образом на параллелизм независимых ветвей. 2.1.2. МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ С ОБЩИМ УПРАВЛЕНИЕМ, ОРИЕНТИРОВАННЫЕ НА ПАРАЛЛЕЛИЗМ СМЕЖНЫХ ОПЕРАЦИЙ (СИСТЕМЫ ТИПА III) 1°. Принцип построения многопроцессорной системы с общим управлением, ориентированной на использова- ние параллелизма смежных операций, иллюстрируется рис. 2.1.3. Под общим управлением У собрано п арифметико- логических процессоров А. Каждый из них может иметь свою небольшую память, но может и не иметь ее (на рисунке блоки раздельной памяти П показаны штрихо- выми линиями). В основном процессоры работают над общей памятью. Из нее же устройством управления У прочитываются инструкции, по которым оно работает. Имеется два принципиальных варианта организации работы такой системы. Первый вариант состоит в том, что устройство управ- ления прочитывает инструкции «вперед» со скоростью, намного превышающей скорость исполнения одной ин- струкции одним арифметико-логическим процессором. Прочитав очередную инструкцию, устройство управления анализирует, имеются ли условия для того, чтобы начать ее исполнение, если возможно, — поручает ее исполнение любому свободному процессору (либо первому освобож-. дающемуся процессору, если все они были заняты), анализирует следующую инструкцию, и т. д. Просмотр программы «вперед» и исполнение отдельных ее инструк-. ций может продолжаться и в том случае, когда выясня- ется, что исполнение очередной инструкции нужно отло- 46
'жить; инструкции, исполнение вторых отложено, накап- ливаются в буфере устройства управления. Во втором варианте устройство управления прочиты- вает из пагмяти непосредственно векторы-инструкции. Один вектор-инструкция содержит в пределе п компо- нент — по числу процессоров, каждая из которых указы- Рис. 2.1.3 вает, какую операцию должен выполнить соответствую- щий процессор. В первом варианте анализ программы и организация яараллельных вычислений производится устройством управления непосредственно на этапе исполнения про- граммы, методом интерпре- тации, во втором варианте— на этапе программирования, при трансляции программы ;на машинный язык. По-ви- димому, оптимизация про- граммы методом трансляции может быть выполнена бо- лее эффективно, чем мето- дом интерпретации,посколь- ку при трансляции можно граммы вперед на большее количество шагов. В любом случае характерной особенностью систем рассматриваемого типа является тот факт, что несмотря на наличие общего для всех п процессоров устройства управления, все они управляются разными ин- струкциями или разными компонентами обеспечить просмотр про- гвектора - инструкции. В дальнейшем такие вычислительные системы будем называть системами типа III. 2°. Требования к памяти, предъявляемые одним и другим вариантом на первый взгляд кажутся разными: в первом варианте требуется высокое быстродействие памяти (чтобы инструкции можно было читать намного быстрее, чем идет их исполнение), во втором — требует- ся широкий формат обращения к памяти, — чтобы можно было за одно обращение прочесть вектор-инструкцию. В действительности требования эти в значительной мере взаимозаменяемы. Если возможен широкий формат об- ращения к памяти, то для первого варианта несколько последовательных инструкций могут быть получены за 47
Одно обращение к памяти, время выполнения которого при этом может быть не на много меньше, чем время ис- полнения инструкции процессором. С другой стороны, если быстродействие памяти намного больше быстродей- ствия процессорной части, то вектор-инструкция для вто- рого варианта может быть прочитан из памяти за не- сколько обращений при обычном формате обращения. Необходимо учесть, что когда мы говорим «высокое быстродействие» или «широкий формат» памяти, то эти понятия связаны с количеством процессоров п. «Высокое быстродействие» — это время обращения к памяти при- мерно в п раз меньшее, чем время выполнения операции в процессоре, «широкий формат» — это возможность вы- борки ориентировочно п слов за одно обращение. По- скольку глубина параллелизма смежных операций обыч- но невелика, количество процессоров в системе типа III никогда не делается больше, чем 2—6 (см. п. 2.2.3). Ес- ли, скажем, п=4, то реализация быстродействия памяти в 4 раза более высокого, чем у процессора, или формата обращения до четырех слов не связана с особыми за- труднениями. 2.1.3. МНОГОПРОЦЕССОРНЫЕ СИСТЕМЫ С ОБЩИМ УПРАВЛЕНИЕМ, ОРИЕНТИРОВАННЫЕ НА ЕСТЕСТВЕННЫЙ ПАРАЛЛЕЛИЗМ (СИСТЕМЫ ТИПА IV) 1°. Принцип построения многопроцессорной системы с общим управлением, ориентированной на использова- ние естественного параллелизма или, в частности, парал- лелизма множества объектов, в весьма упрощенном виде показан на рис. 2.1.4. Основное отличие от построения, показанного на рис. 2.1.3, состоит в том, что общее устройство управления У раздает всем п арифметико- логическим процессорам А одинаковые команды для каждого шага, а не различные, как было в построении рис. 2.1.3. Все процессоры одновременно выполняют одну и ту же операцию — каждый над своими данными. Эти данные выбираются, может быть, каждым про- цессором из своей отдельной памяти П, если такие устройства памяти существуют (на рисунке они показа- ны штриховыми линиями), причем все процессоры по одинаковым адресам обращаются каждый к своей памя- ти. Возможно также, что массив данных выбирается чо 48
одйому адресу, передаваемому устройством управлений У, из общей памяти (которая должна иметь достаточно широкий формат обращения), а далее каждый элемент массива передается соответствующему процессору. Многопроцессорные системы рассматриваемого типа будем в дальнейшем называть системами типа IV. 2°. Чтобы система типа IV работала достаточно эф- фективно, в ней желательно усовершенствований, ко- торые на рис. 2.1.4 не отражены. Первое из них — относительно простое — состоит в том, чтобы пре- дусмотреть размножение операндов, т. е. возмож- ность передачи из общей памяти одного операн- да всем процессорам. Термин «размножение» связан с тем, что цепи пе- редачи от общей памяти вообще устроены так, чтобы каждому процессору предусмотреть ряд важных передавать свой элемент массива; здесь же как бы формируется массив, в кото- ром п раз повторен один и тот же элемент. В общем -случае использования естественного парал- лелизма размножение операндов необходимо для вы- полнения таких операций, как умножение вектора на число, умножение матрицы на число и т. п. Представля- ет интерес также операция сравнения всех значений функции, заданной в узлах решетки, с константой (вы- деление линии уровня); однако использование этой воз- можности связано с необходимостью иметь в составе системы также механизм масок, о чем мы скажем ниже. В частном случае использования параллелизма мно- жества объектов тоже возможны случаи, когда в неко- торых операциях по обработке информации о разных объектах множества используется одна и та же констан- та и поэтому необходим механизм размножения. Суще- ственно более важной представляется однако ситуация, когда в обрабатываемом множестве нужно выделить подмножество объектов, удовлетворяющих определен- ным условиям. В некоторых случаях для выполнения 4—1013 49
^операций такого рода в состав системы вводятся Спецй- альные ассоциативные устройства *). Более универсаль- ным средством решения этой проблемы является переда- ла во все процессоры одновременно, через механизм раз- множения, некоторых параметров (порогов, эталонов) и выполнение в каждом из процессоров сравнения с этими Параметрами тех или иных переменных, характеризую- щих обрабатываемый в данном процессоре объект. При этом должна быть предусмотрена возможность исполь- зовать в дальнейших вычислениях выработанные в каж- дом из процессоров условия (результаты сравнения), и 'здесь мы снова подходим к необходимости введения ме- ханизма масок. 3°. Механизм масок представляет собой второе важное усовершенствование структуры рис. 2.1.4. В наиболее развитом виде механизм масок содержит специальный процессор, оперирующий с массивами бу- левых переменных. Входная информация для этого про- цессора может поступать из основных процессоров — когда в них выполняются операции сравнения (призна- ки «равно», «больше», «меньше») или при выполнении обычных арифметических операций (признаки «резуль- тат равен нулю», «результат меньше нуля», «перепол- нение разрядной сетки» и т. п.), а также прочитываться из памяти. Под управлением общего устройства управ- ления (по специальным инструкциям или по специаль- ным указаниям в инструкциях) процессор обработки ^массивов булевых переменных производит различные логические операции над этими массивами. Выходная информация (тоже массивы булевых переменных) либо записывается в память для последующих операций, либо поступает прямо в основные процессоры — каждый раз- ряд массива в свой процессор — на отдельные управля- ющие входы в качестве «масок». В тех кодах операции, которые устройство управле- ния передает основным процессорам, должно содержать- ся дополнительное указание: выполнять ли операцию безусловно, или под прямой маской, или под инверсной маской. Последние указания означают соответственно, что данная операция должна исполняться только в тех процессорах, для которых маска содержит единицу ♦) Такое решение применено, в частности, в системе РЕРЕ, см., ^например, [3, 4]. ;50
(true), либо только в тех процессорах, для которых мае* ка содержит нуль (false); операции в других процессо- рах при этом блокируются. Если на некотором, k-м этапе исполнения программы объекты классифицируются не на два, а на большее количество классов /п^, m,k>2 (см. п. 1.2.1, 3°), то снача- ла под маской, которая содержит единицы для объектов 1-го класса и нули для всех других объектов, исполня- ется ветвь программы, относящаяся к объектам 1-го класса; затем под маской, которая содержит единицы для объектов 2-го класса и нули для всех других объек- тов, исполняется ветвь, относящаяся к объектам 2-го класса и т. д. Возможен и более сложный вариант, ког- да устройство управления передает всем процессорам m/j-компонентный вектор-инструкцию, а маска представ- ляет собой вместо массива из г булевых переменных массив из г /Пь-ичных величин *). Таким образом с помощью механизма масок могут быть реализованы расхождения в почти одинаковых про- граммах обработки информации о разных объектах мли для разных точек решетчатой функции и т. п., о которых говорилось в п. 1.2.1, 2°, 3°. 4°. Введение аппаратуры параллельно-последователь- ной обработки [8]' — это третье усложнение, которое может существенно улучшить эффективность систем рас- сматриваемого типа. Рассмотрим его суть для того частного случая, ког- да используется параллелизм множества объектов. Как будет видно, из 2.2.4, наибольшая эффективность систем рассматриваемого типа достигается, когда ранг задачи г в точности равен количеству процессоров, r—п, либо, что более вероятно, при г^>п. В последнем случае зада- ча, как обычно, должна решаться циклически: сначала для первой группы из п объектов, затем для следующей группы и т. д., ]-^-[ раз, где квадратные скобки ] [ ♦) В зачаточном виде механизм масок присутствовал еще в про- екте SOLOMON i[5]: каждый из его процессоров содержал «триг- гер состояния»; специальные операции настройки устанавливали эти триггеры в состояние «активен» или «пассивен»; дальнейшие опе- рации исполнялись только активными процессорами. В одном из ран- них вариантов Illiac IV каждый процессор мог с помощью настрой- ки устанавливаться в одно из Четырех состояний и соответственно исполнять одну из четырех программ, транслируемых одновременно устройством управления. (Об Illiac IV см., например, [6, 7].) 4* 51
означают ближайшее не меньшее целое; если г не крат- но п, то при прохождении последнего цикла часть про- цессоров маскируется. В принципе можно циклически повторять либо всю программу вычислений, либо каж- дую операцию, входящую в программу; однако поопера- ционные циклы потребовали бы в обычных условиях слишком больших затрат времени и количества инструк- ций в программе для служебных целей: организации циклов, смены маски в последнем цикле, модификации адресов. Идея состоит в том, чтобы в состав устройства управ- ления ввести аппаратуру, которая без излишних затрат времени и избыточной информации в программе могла бы организовать пооперационные циклы. Одно из возможных построений такой аппаратуры в общих чертах показано на рис. 2.1.5. В регистр г в начале выполнения всей программы обработки информации о множестве объектов специальной операцией заносится количество объектов в обрабатываемом множестве (г). В регистре п хранится количество процессоров в системе; эта величина может быть константой для данной конфигурации системы, а может быть и переменной величиной — зависящей от технического состояния про- цессоров. Регистр kn в начале каждой операции обнуляется. Любая арифметическая или логическая операция выполняется сначала для первой группы из п объектов; одновременно к содержимому реги- стра kn добавляется содержимое регистра и, причем на первом шаге в нем образуется величина и. Далее операция выполняется для сле- дующей группы из п объектов, а в регистре kn получается величина 2п, и т. д. Так продолжается до тех пор, пока компаратор не обна- руживает, что величина г—\kn (k— целое) не стала меньше п. Если 0<г—kn<n, то последний цикл выполняется под до- полнительной маской, формируемой из величины г—kn (действую- щей, может быть, наряду с обычной маской), после чего устройство управления переходит к выполнению следующей операции. Если г—kn=Q (в случае, когда величина г оказалась кратной и), устрой- ство управления сразу переходит к выполнению следующей операции. Содержимое регистра kn используется также для модификации адресов данных от цикла к циклу (естественно, если данные выби- раются без размножения), а содержимое регистра п задает формат обращения к памяти за данными. Преимущества, достигаемые введением аппаратуры параллельно-последовательной обработки, очевидны: — инвариантность программы при изменении числа процессоров п (в частности, программа не меняется и для п=1, т. е. фактически не отличается от программы для обычной однопроцессорной машины); — исключение операций проверки окончания цикла, передачи управления к началу цикла, модификации ад* 52
ресов; если г велико по сравнению с п, а длина програм- мы обработки информации по каждому из объектов I мала, это может дать эффективность системы больше единицы (см. п. 2.2.4); — уменьшение количества обращений к памяти за инструкциями во время исполнения программы (каждая инструкция читается из памяти один раз вместо ]-^-[ раз, как было бы при отсутствии указанной аппарату- ры)- Из npoi 1аммы Дополни тел ь ная маска. Рис. 2.1.5 5°. Введение в состав системы специального процес- сора переформирования массивов — четвертое усо- вершенствование, которое желательно предусмотреть в системе, рассмотренной в п. 1°, — в особенности если мы ориентируемся главным образом на параллелизм множества объектов. Цель введения такого процессора— уменьшить потери в эффективности системы, обуслов- ленные наличием более или менее значительных расхож- 13
дений в программах обработки информации о разных объектах, в условиях, когда г^>п. (Если бы количество объектов г было одного порядка с и, то делить множест- во объектов на два подмножества и обрабатывать эти подмножества раздельно не имело бы смысла, потому что при обработке таких подмножеств многие процессо- ры все равно бы простаивали. При использовании есте- ственного параллелизма в общей форме расхождения в программах обычно бывают невелики и, кроме того, существенную информацию несет само расположение данных в массивах — см. примеры в п. 1.2.1.) В частном случае параллелизма множества объек- тов расположение данных о некотором объекте в масси- ве данных обо всех объектах, как правило, не играет роли. При этом небольшие расхождения в програм- мах целесообразно реализовать с помощью механизма масок: после того, как выработана маска, содержащая для объектов одного класса единицы, а для объектов второго класса нули, система выполняет сначала опе- рации для объектов одного класса под прямой маской, а потом операции для объектов другого класса — под инверсной маской. Если расхождение в программе велико, то выгоднее поступить иначе. Сразу после классификации объектов (получения маски) включается в работу процессор пере- формирования массивов. Входной информацией для него являются массивы данных об г объектах и массив мас- ки, содержащий г булевых переменных. И то и другое читается из общей памяти системы. Процессор перефор- мирования массивов разделяет каждый массив данных на два подмассива: один — относящийся к объектам, для которых маска содержит единицы, другой — к объек- там, для которых маска содержит нули, и в таком виде записывает их в память. Одновременно определяются размеры этих подмассивов, г\ и г0—г—и. Конечно, на работу этого процессора затрачивается определенное время, зато дальше основные процессоры могут обра- батывать раздельно подмножество Г] и подмножество г0, без потерь в эффективности. Когда это необходимо, два подмножества могут снова рассматриваться как одно множество г, причем для этого никаких дополнительных операций производить не нужно. При необходимости классифицировать объекты на большее количество классов т*, /п&>2, процессор пере- 54
формирования массивов мог бы сделать это последова- тельно: сначала разделить исходный массив на массив ri объектов 1-го класса и массив г—и объектов осталь- ных классов (2-, 3-, ../Пь-го), затем оставшийся мас- сив объектов остальных классов—на массив г2 объектов 2-го класса и массив г—г\—г2 объектов 3-, 4-, ..т^-го классов и т. д. Возможно и более сложное построение процессора переформирования массивов, позволяющее сразу переформировать исходный массив в тй масси- вов. Если количество процессоров п в системе невелико, то имеет смысл ввести еще один механизм для умень- шения потерь в эффективности системы при наличии расхождений в программах—схему проверки однородно- сти выборки. Она может быть полезна как при отсутст- вии в системе процессора переформирования массивов, так и при его наличии. В первом случае эта схема ра- ботает всегда при наличии расхождений в программе, во втором — при условии, что расхождение относительно невелико и процессор переформирования массивов вклю- чать нецелесообразно. Идея состоит в том, чтобы при выполнении операции под прямой либо под инверсной маской над очередной группой йз п объектов проверить, имеется ли в соот- ветствующих п разрядах маски соответственно хотя бы одна единица или хотя бы один нуль. Например, если операция выполняется под прямой маской, т. е. только для тех объектов, для которых соответствующие разря- ды маски содержат единицы, а в очередной выборке п объектов ни один из соответствующих разрядов маски не содержит единицы (т. е. выборка п объектов из г оказа- лась однородной), то операцию можно просто пропу- стить и не затрачивать без надобности время на ее ис- пользование. Аппаратура схемы проверки однородности выборки чрезвычайно проста. Эффект от введения схемы проверки однородности выборки, очевидно, тем больше, чем меньше п: при слу- чайном распределении г объектов в множестве вероят- ность того, что очередная выборка из п объектов ока- жется однородной, тем больше, чем меньше п. Подроб- нее эти вопросы мы рассмотрим в п. 2.2.4. 6°. Последнее из усовершенствований системы рис. 2.1.4, о котором следует сказать и которое требуется 55
в особенности, если речь идет об использовании естест- венного параллелизма в общем виде (а не его частного случая—параллелизма множества объектов), — это вве- дение общих арифметико-логических цепей и локальных связей между процессорами. Эти цепи нужны, например, для вычисления скаляр- ного произведения векторов (для чего нужно просумми- ровать произведения соответствующих компонент векто- ров, полученные в каждом из процессоров), при вычис- лении производной от функции, заданной своими значе- ниями в дискретных точках (для чего каждый процессор должен получить из соседних процессоров значения функции в соседних точках), и т. п. Пока используется параллелизм множества объектов, все основные процессоры системы представляют собой просто группу из п процессоров. Для операций рассматриваемого здесь типа важно, как эти процессоры расположены один относительно другого (разумеется, не в пространстве, а по логическим связям): представляют ли они собой просто линию из п процессоров, или замкнуты в кольцо длиной /?, или рас- положены в виде прямоугольника (где П\*П2^.п), или этот прямоугольник свернут в цилиндр с образую- щей п\ и длиной окружности П2 (либо наоборот, с обра- зующей П2 и ДЛИНОЙ окружности /?1) или, может быть, прямоугольник свернут в тор. Можно предусмотреть оперативное перестроение свя- зей между процессорами и общих арифметических це- пей. Специальные операции, применяемые для этого, на- зывают операциями геометрического управления. 2.1.4. КОНВЕЙЕРНЫЕ (МАГИСТРАЛЬНЫЕ) ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ 1°. Принцип построения. В вычислительных системах, рассматривавшихся в п. 2.1.1—2.1.3, возможность выпол- нения одновременно нескольких операций по преобразо- ванию данных обеспечивалась наличием в системе не- скольких процессоров. Все эти процессоры в принципе могли начать исполнение каждый своей операции одно- временно. Ниже рассматриваются системы принципиально дру- гого типа. 56
Процессор в системе всего один. Но он разделен на п частей (ступеней), выполняющих последовательные этапы операции (1-, 2-, ..n-й). При этом процессор устроен так, что в то время, когда /-я ступень процес- сора выполняет свой, /-й этап некоторой f-й операции, (/—1) я ступень может выполнять (/—1)-й этап для (f+lj-й операции, (/—2)-я ступень—(/—2)-й этап для (/+2)-й операции, ..., 1-я ступень процессора— 1-й этап (г’+/—1)-й операции (где j—2, 3, ...,/?). В системе этого типа тоже может выполняться одновременно несколько (/?) операций по преобразованию данных (что соответ- ствует определению вычислительной системы, данному в п. 1.1.1, 1°). Однако эти операции в некоторый момент времени обязательно находятся на разных этапах ис- полнения и в принципе не могут начинаться все одновре- менно. Заметим, что организованный подобным образом кон- вейер операций широко применяется и в обычных одно- процессорных вычислительных машинах (см., например, [1], п. 1. 4. 2). Скажем, выполнение операции может быть разделено на следующие этапы: формирование ад- реса инструкции — чтение инструкции из памяти — фор- мирование адреса операнда — чтение операнда из памя- ти — собственно выполнение арифметической или логиче- ской операции. В то время, когда в арифметико-логиче- ском устройстве машины идет выполнение арифметиче- ской операции, заданной i-й инструкцией, из памяти читается операнд для выполнения операции, заданной (г’+1)-й инструкцией; одновременно узел формирования адресов операндов формирует адрес для чтения операн- да (Н~2)-й инструкции, производится чтение из памяти (i+3)-fl инструкции (если это возможно, т. е. при усло- вии, что (г’+3)-я инструкция читается из другого блока памяти и по другим шинам, чем операнд (г-|-1)-й инст- рукции), а в узле формирования адреса очередной ин- струкции формируется адрес (г’+5)-й инструкции. Такая машина отличается от вычислительной систе- мы лишь в тонких деталях, либо вообще чисто термино- логически. Если считать, что этапы, на которые разделе- но выполнение операции в машине (формирование адре- са инструкции, чтение инструкции и т. д.), являются эта- пами выполнения арифметической или логической опе- рации, то любая вычислительная машина с конвейерной организацией должна называться вычислительной систе- 57
мой. Если же настаивать на том, что в вычислительной системе по определению (см. п. 1.1.1, Г) одновременно должны исполняться несколько собственно арифме- тических или логических операций над данными, то ма- шина указанного типа превращается в вычислительную систему только при условии, что само арифметико-логи- ческое устройство разделено на несколько частей, вклю- ченных в общий конвейер и выполняющих одновременно различные этапы разных арифметических или логиче- ских операций (может быть, одинаковых операций над разными данными). Для дальнейшего изложения, однако, эти различия, имеющие на самом деле несколько схоластический ха- рактер, не играют никакой роли. 2°. Принципы организации управления в системе и соответственно использования того или иного вида па- раллелизма которые были рассмотрены в предыдущих разделах применительно к n-процессорным вычислитель- ным системам, можно применить и к конвейерным вы- числительным системам, в которых единственный про- цессор разделен на п ступеней, работающих с совмеще- нием по времени. В частности, на рис. 2.1.6 показана конвейерная си- стема с раздельным управлением. В ней имеется п устройств управления У — по числу частей, на которые разделен процессор. Принципиально важным является наличие п раздельных узлов формирования адреса сле- дующей инструкции и регистров инструкции; возможно, что у каждого устройства управления имеются свои ин- дексные и базовые регистры, регистры ключей защиты и другие индивидуальные цепи. Часть цепей может быть общей для различных устройств управления (например, формирователь адреса операнда, дешифратор кода опе- рации и др.) и использоваться всеми устройствами управления по очереди. Эти общие цепи на рисунке включены в состав ступеней процессора (У(Ль /=1, 2, ..., п). Устройства управления подсоединены к ступеням процессора через кольцевой коммутатор. Коммутатор устроен так, что в 1-м такте работы системы к 1-й сту- пени процессора подключено 1-е устройство управления, которое начинает выполнение своей операции; во 2-м такте 1-е устройство управления переключается на 2-ю ступень процессора, а к 1-й ступени подключается 2-ф
устройство управления, и t. д. Ё n-м такте 1-ё устрой- ство управления подключено к n-й ступени процессора, где завершается исполнение его 1-й операции, к (п—1)-й ступени подключено 2-е устройство управления, ..., к 1-й ступени подключено n-е устройство управления. После завершения 1-й операции 1-го устройства управления, в (и-|-1)-м такте 1-е устройство управления снова под- ключается к 1-й ступени процессора, где начинает ис- полнение 2-й операции своей программы, и т. д. Рис. 2.1.6 Рис. 2.1.7 Ясно, что система, построенная указанным образом, аналогична по своим возможностям «-процессорной си- стеме типа II, рассмотренной в п. 2.1.1, 2° (рис. 2.1.2) и ориентирована на использование параллелизма незави- симых ветвей (если целью является достижение высокой пользовательской производительности). Такие конвейер- ные системы мы будем также относить к вычислитель- ным системам типа II. На рис. 2.1.7 показана другая организация управле- ния в конвейерной системе — ориентированная на ис- пользование параллелизма смежных операций. Устройство управления здесь одно, но регистров для хранения инструкции (РгИ) столько же, сколько ступе- ней имеется в процессоре. 1-я инструкция программы прочитывается в РгИ<’>, и в 1-й ступени процессора на- чинается ее исполнение. В следующем такте 1-я инструк- ция передается в РгИ<2> и ее исполнение продолжает 2-я ступень жроцессора, а в РгИ*1) прочитывается 2-я ин- струкция и в 1-й ступени процессора начинается ее ис- полнение, и т. д. 59
Ё случае, когда оптимизация программы выполняет- ся в процессе трансляции на машинный язык, в инструк- циях программы могут быть расставлены при необходи- мости указания, на сколько тактов нужно задержать ис- полнение данной инструкции от момента ее получения. Если таких указаний нет, то в схеме устройства управ- ления должно быть предусмотрено сравнение вновь по- Рис. 2.1.8 лученной инструкции с ин- струкциями, находящимися в последующих регистрах РгИ (т. е. с предшествую- щими ей, но еще не испол- ненными до конца инструк- циями), с целью выявления возможности выполнения очередного этапа данной инструкции. Ясно, что конвейерная система, построенная ука- занным образом, аналогич- на многопроцессорным си- стемам с общим управлени- ем, ориентированным на параллелизм смежных опера- ций (системы типа III—см. п. 2.1.2), и тоже должна относиться к вычислительным системам типа III. Наконец, рис. 2.1.8 иллюстрирует построение управ- ления в конвейерной системе, ориентированной на парал- лелизм множества объектов. Устройство управления на рис. 2.1.8 одно. В его со- ставе имеется аппаратура, предназначенная для органи- зации циклического повторения одной и той же операции для всех объектов из обрабатываемого множества (счет- чик циклов — СчЦ). По своему назначению и структуре эта аппаратура аналогична рассмотренной в п. 2.1.3, 4° (рис. 2.1.5), но существенно проще. Получив очередную инструкцию, устройство управле- ния начинает выполнение указанной операции для l-ro объекта. Когда эта операция пройдет через 1-ю ступень процессора и поступит во 2-ю ступень, в 1-й ступени на- чинается выполнение той же операции для второго объ- екта, и т. д. Когда п-я ступень заканчивает выполнение операции для 1-го объекта, в 1-й ступени начинается вы- полнение операции для я-го объекта; начиная от этого такта, загружены все ступени процессора. В следующем, 60
(п+1)-м такте в n-й ступени заканчивается выполнение операции для 2-го объекта, а в первой начинается для (п+1)-го объекта и т. д. Когда в 1-й ступени начинается выполнение операции для r-го объекта, то в n-й ступени заканчивается выполнение операции для (г—п+1)-го объекта. Далее устройство управления выжидает еще n—1 тактов, пока выполнение операции закончится для (г—п+2)-, (г—п+3)-, ..., r-го объектов. В течение по- следних п—1 тактов (так же как в течение первых п—1 тактов) используются не все ступени процессора. После окончания выполнения операции для r-го объ- екта устройство управления прочитывает следующую инструкцию и снова исполняет ее для всех г объектов (в течение г+п—1 тактов) и т. д. Ясно, что конвейерные системы, построенные указан- ным образом, аналогичны многопроцессорным системам с общим управлением, ориентированным на параллелизм множества объектов (типа IV), которые были рассмот- рены в п. 2.1.3, и тоже должны относиться к вычисли- тельным системам типа IV. По этому принципу построена, в частности, вычисли- тельная система STAR-100 [10]. 2.2. ЭФФЕКТИВНОСТЬ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 2.2.1. ОБЩИЕ СООБРАЖЕНИЯ 1°. В § 2.2 нас будет интересовать в основном реаль- ное пользовательское быстродействие и пользователь- ская эффективность вычислительных систем различных типов. В соответствии с определениями, данными в п. 1.1.2, реальное пользовательское быстродействие 5р(П) — это быстродействие вычислительной системы, до- стигаемое при решении одной отдельно взятой пользо- вательской задачи, а пользовательская эффективность (Еп) —это отношение реального пользовательского бы- стродействия к номинальному быстродействию системы. Нетрудно видеть, что определенная таким образом пользовательская эффективность представляет собой среднее по всем средствам системы значение отношений Тш!Тс, где Гс —общее время работы вычислительной си- стемы при решении данной задачи, a — та часть вре- мени Тс, в течение которой г-е средство системы занято полезными операциями. Веса, с которыми усредняются отношения TUilTc для разных i (разных средств систе- 61
мы), пропорциональны быстродействию соответствую- щих средств: Vj S(' тТ' 2 s‘Tni S s< т- 2's« (О (О В этом выражении 2*^7^—количество полезных опе- (О раций, выполняемых вычислительной системой за время решения данной задачи, а Тс• 2— полное количество (О операций, которые могли быть выполнены за это^время, если бы все составные части системы были полностью загружены. В первом приближении можно считать, что ^SjTni — это то количество операций, которое необхо- (0 димо выполнить в обычной (однопроцессорной) вычисли- тельной машине для решения данной задачи. Если быстродействие всех п средств системы (всех машин, входящих в многомашинный комплекс, всех про- цессоров многопроцессорной системы, всех ступеней кон- вейерной системы) одинаково, то (О Именно этим случаем мы будем главным образом зани- маться ниже. В п. 1.1.2 мы говорили о том, что номинальная произ- водительность вычислительной системы характеризует ;не столько ее возможности, сколько затраты на ее соз- дание и эксплуатацию. Фактически величина пользова- тельской эффективности показывает, во сколько раз вы- игрыш в реальном пользовательском быстродействии вычислительной системы по сравнению с обычной (одно- процессорной) машиной отличается от соотношения со- ответствующих затрат. Если величина Еп близка к еди- нице (еще лучше, — если она больше единицы), то соз- дание и использование вычислительной системы рацио- нально, если существенно меньше единицы, — нерацио- нально (разумеется, когда целью применения вычисли- 62
тельной системы является достижение высокой пользова- тельской производительности). Говоря здесь о затратах на создание и эксплуатацию вычислительной системы, мы не обязательно имеем в ви- ду стоимость системы в денежном выражении. Это мо- жет быть также площадь, занимаемая вычислительной системой, или ее объем, или масса, или энергопотребле- ние и т. п. Важно только, чтобы критерии, по которым оцениваются «затраты» на вычислительную систему и на обычную вычислительную машину, были одинаковы. 2°. Утверждение о том, что номинальная производи- тельность вычислительной системы пропорциональна за- тратам на ее создание и эксплуатацию, справедливо в разной мере для разных типов вычислительных систем. Ближе всего к истине это утверждение для многомашин- ных комплексов (вычислительных систем типа I), рас- смотренных в п. 2.1.1, Г. Достижение в многомашинном комплексе номинального быстродействия nS, в п раз более высокого, чем быстродействие одиночной вычисли- тельной машины, требует объединения в комплексе п одинаковых машин с быстродействием S*l Некоторые отклонения от прямой пропорционально- сти затрат и номинального быстродействия являются результатом двух причин. С одной стороны, — это необ- ходимость иметь в составе комплекса каналы связи ма- шин между собой и некоторое другое дополнительное*, оборудование, а также дополнительную операционную» систему комплекса. С другой стороны, — в направлении: уменьшения общих затрат — действует возможность, обобществления и более рационального использования: определенной части аппаратуры. Те же причины, вызывающие отклонение от прямой пропорциональности затрат на создание вычислительной системы ее номинальному быстродействию, действуют и для многопроцессорных систем с раздельным управле- нием (типа II), рассмотренных в п. 2.1.1, 2°. Но степень интеграции вычислительных средств здесь более высо- *) Конечно, затраты на вычислительную машину определяются не только ее быстродействием, но также объемом памяти, пропуск- ной способностью внешнего обмена, затратами на программное обес- печение и пр. Известно однако, что, например объем памяти, сум- марная пропускная способность внешнего обмена и количество пе- риферийных устройств в общем случае находятся в прямой зависи- лдости от быстродействия .центрального процессора [1]. 65
кая, поэтому отклонения от пропорциональности более существенны. Грубо можно считать, что если затраты на n-машинный комплекс при п порядка 3—6 в п раз вы- ше, чем на одиночную машину, то для п-процессорной системы с раздельным управлением они выше всего в (0,8—0,9)и раз, а при большем п—в (0,7—0,8)п раз*). Ясно, что отношение затрат на n-процессорную си- стему с общим управлением (типа III или типа IV — см. п. 2.1.2 и 2.1.3) к затратам на аналогичную одно- процессорную машину должно еще сильнее отклоняться от п. В чистом виде в этих системах по сравнению с одно- процессорной машиной повторено п раз только арифме- тико-логическое устройство. Устройство управления всего одно, — правда, более сложное, чем в обычной машине. Внутренняя память для систем типа III должна быть по объему, вероятно, примерно в п раз больше, чем для обычной машины с одним процессором того же быстро- действия, что и процессор системы, — просто потому, что от n-процессорной системы мы рассчитываем получить примерно в п раз большее быстродействие (см. [1]). Что касается внутренней памяти многопроцессорной системы типа IV, то здесь следовало бы учитывать два фактора, действующие в противоположных направлени- ях. С одной стороны, программа для решения некоторой задачи с помощью такой системы несколько короче, чем для решения той же задачи с помощью обычной маши- ны, потому что каждая операция в системе определена сразу для многомерных векторов или матриц, или функ- ций, или для множеств объектов, а не для отдельных чисел. С другой стороны, количество рабочих ячеек, ис- пользуемых при работе системы, больше, чем для обыч- ной машины: если бы, например, обычная (однопроцес- сорная) система циклически обрабатывала информацию о множестве объектов, то рабочие ячейки, используемые в каждом цикле, могли бы быть одними и теми же. В многопроцессорной системе типа IV с пооперационной организацией циклов (см. п. 2.1.3, 4°) количество рабо- ♦) Эти данные, как и приводимые ниже аналогичные данные для других типов вычислительных систем, основаны на весьма при- мерных оценках одного из авторов. Их следует воспринимать, разу- меется, как сугубо ориентировочные. 64
чих ячеек в г раз больше (где г — ранг задачи, количе- ство объектов в обрабатываемом множестве), а при обычной организации циклов, когда объекты обрабаты- ваются группами по п (где п — количество процессо- ров),— в п раз больше. В целом, однако, можно считать, что и для много- процессорных систем типа IV общий объем внутренней памяти должен быть примерно в п раз выше, чем для обычной вычислительной машины с одним процессором того же типа, которые применены в системе. Наконец, оценивая затраты на многопроцессорную систему типа IV, нужно было бы учесть те усовершенст- вования структуры системы, о которых говорилось в п. 2.1.3, 2е—6°. Однако сопоставить в общем виде слож- ность соответствующей аппаратуры со сложностью устройств, которые входят в состав обычной машины, трудно. Поскольку объем этой аппаратуры в общем не очень значителен по сравнению со всей аппаратурой си- стемы, мы позволим себе просто не учитывать затраты на нее. В виде компенсации допускаемой тем самым по- грешности не будем учитывать также и тот факт, что указанная аппаратура наряду с чисто системными функ- циями, направленными на повышение эффективности основных процессоров системы, выполняет иногда и опе- рации, связанные непосредственно с обработкой инфор- мации, причем более эффективно, чем аппаратура обыч- ной вычислительной машины. В качестве примера таких операций можно назвать логические операции над мас- сивами булевых переменных (аппаратура, рассмотрен- ная в п. 2.1.3, 3°), подсчет количества объектов, удов- летворяющих определенным условиям, либо выяснение, имеются ли вообще в данном множестве объекты, удов- летворяющие определенным условиям (аппаратура, рас- смотренная в п. 2.1.3, 5°), и т. д. Грубо можно считать, что при небольшом количестве процессоров п (порядка 3—6) отношение затрат на «-процессорную систему типа III или IV к затратам на обычную однопроцессорную машину составляет (0,6— 0,8) п. Многопроцессорные системы типа IV имеет смысл, как мы увидим из дальнейшего (см. п. 2.2.4), строить и с большим количеством процессоров. Чем больше коли- чество процессоров п, тем сильнее отклоняются затраты на систему от пропорциональности числу процессоров; например, при п=10—15 затраты на п-процессорную 5—10|3 65
систему типа IV составляют всего (0,4—0,5) п затрат на одиночную машину. 3°. Для вычислительных систем конвейерного типа (п. 2.1.4) предположение о пропорциональности затрат на систему ее номинальному быстродействию еще менее справедливо. Если говорить, например, о конвейерных системах типа IV (рис. 2.1.8 на с. 60), то избыточная аппаратура в них по сравнению с обычной вычислительной системой практически ограничивается п регистрами (или п пара- ми регистров) для хранения промежуточных результа- тов различных этапов операции. Их назначение состоит в том, чтобы развязать разные ступени процессора (одного!) и обеспечить возможность одновременного выполнения в каждой из ступеней своего этапа опера- ции— одной и той же для всех ступеней, но над разны- ми данными в разных ступенях. В конвейерных системах типа III, кроме п регистров (или п пар регистров), разделяющих ступени процессо- ра, имеется п регистров инструкции и, возможно, повто- рены п раз отдельные цепи устройства управления. Например, если на несколько ступеней разделено ариф- метико-логическое устройство и каждой ступени соответ- ствует свой регистр инструкции (см. рис. 2.1.7 на с. 59), то в составе устройства управления должно быть соот- ветственно несколько дешифраторов кода операции. Кроме того, в составе устройства управления системы типа III должны быть цепи, сравнивающие содержимое последовательных регистров инструкции и проверяющие возможности исполнения определенного этапа некоторой инструкции до окончания исполнения предшествующих. Наконец, в конвейерной системе типа II с количест- вом ступеней п (см. рис. 2.1.6 на с. 59) должно быть п независимых устройств управления, и пропорциональ- ность затрат на процессорную часть системы ее номи- нальному быстродействию соблюдается точнее всего. Ориентировочно можно считать, что для конвейерной системы типа IV при разумном количестве ступеней п *> *) Части, на которые делится арифметико-логическое устройство, не могут быть слишком мелкими — иначе в длительности такта ра- боты конвейера (времени срабатывания каждой из ступеней) слиш- ком значительным будет собственное время срабатывания раздели- тельных регистров. Кроме того, минимальный такт работы конвейера ограничен длительностью обращения к памяти; расслоение памяти отчасти ослабляет это ограничение, но не снимает его полностью, 66
Затраты на процессорную часть системы мало зависят от числа ступеней п и примерно в 1,5—2 раза превы- шают затраты на процессорную часть обычной вычисли- тельной машины. Для n-ступенных конвейерных систем типа II и III затраты на процессорную часть превышают затраты на процессорную часть обычной машины соответственно примерно в (0,3—0,4) п раз и в (0,4—0,5) п раз. 4°. В п. 2.2.2—2.2.4 мы будем заниматься определе- нием пользовательской эффективности Еп вычислитель- ных систем разных типов при решении разных классов задач, т. е. величиной отношения реального пользова- тельского быстродействия 5Р(П) к номинальному быстро- действию системы SH. При этом те различия между оценкой номинального быстродействия системы и оцен- кой затрат на ее создание и использование, о которых говорилось в п. 2° и 3°, можно было бы учитывать просто в том, какой считать минимально допустимую ве- личину пользовательской эффективности. Например, в соответствии со сказанным в п. 2° можно было бы счи- тать, что при проектировании или планировании исполь- зования многомашинного комплекса (системы типа I) приемлемой является величина Еп, близкая к единице, для многопроцессорной системы типа II — порядка 0,8—0,9 при малых п и порядка 0,7—0,8 при больших /г, и т. д. Возможности такого подхода, однако, весьма ограни- чены. Особенно ясно это видно на примере конвейерных систем. В п. 3°, в частности, сравнивая затраты на кон- вейерную вычислительную систему с ее номинальным быстродействием, мы имели в виду главным образом затраты на процессорную часть системы; при этом, как мы говорили, затраты на процессорную часть конвейер- ной системы сравнительно слабо связаны с количеством ступеней и, следовательно, с номинальным быстродей- ствием системы. Между тем, имеется прямая связь меж- ду быстродействием процессорной части и необходимым объемом главной памяти, общим объемом внутренней памяти, необходимой пропускной способностью внешнего обмена и другими характеристиками системы [1]. Об этом мы упоминали уже на с. 63. При проектировании вычислительной системы характеристики всех ее устройств согласуются, естественно, с номинальным быстродействием процессорной части. Если при конкрет- 5* 67
йом использовании вычислительной системы ее эффек- тивность оказывается низкой, то в общем случае это значит, что недостаточно используется не только про- цессорная часть (затраты на которую, может быть, и непропорциональны номинальному быстродействию), но недоиспользуются также память системы, каналы внеш- него обмена и другие возможности системы. В общем мы бы считали, что приемлемыми являются значения пользовательской эффективности £п не ниже 0,6—0,9, причем самые низкие из указанных значений могут быть допущены для конвейерных систем типа IV, а наиболее высокие следует требовать от многопроцес- сорных систем типа II и многомашинных комплексов (систем типа I). 2.2.2. ЭФФЕКТИВНОСТЬ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ ТИПА I И II Г. Вопрос об определении в общем виде пользова- тельской эффективности вычислительных систем типа I и II, ориентированных на параллелизм независимых ветвей, значительно сложнее, чем определение пользе* вательской эффективности для вычислительных систем других типов (о чем речь будет идти далее, в п. 2.2.3 и 2.2.4). Проще всего пользовательскую эффективность систем типа I и II определить для случая, когда все N ярусов ярусно-параллельной формы имеют ширину &, равную п — количеству машин в многомашинном комплексе или процессоров в многопроцессорной системе, или количест- ву ступеней конвейерной системы типа II. Если это так, то N— 1 b И b п 2 (max Vo+ Д(’)/,7+ Д(2>/<7} + (Л- 1) ДС’)^ «=о '/-1 где hj — длина j-й ветви (/=1, 2......Ь) в t-м ярусе (t=0, 1.....N—1); Д(1>/,7— приращение длины ветви с номером ij (j-й ветви i-ro яруса), связанное с необхо- димостью выполнения операций по проверке условий, позволяющих начать исполнение данной ветви (до на- чала ее исполнения), и операций по формированию 68
условий запуска последующих ветвей (после окончаний исполнения данной ветви); — приращение длины ветви с номером ij, связанное с необходимостью обмена информацией между машинами многомашинного ком- плекса или процессорами многопроцессорной системы типа II, если они работают над раздельной памятью. Для многопроцессорных и конвейерных систем типа II, работающих над общей внутренней памятью, прираще- ние A(2)/<7 обусловливается конфликтами при обращениях разных процессоров или разных ступеней конвейера к общей памяти; (п—— приращение длины i-ro яруса, характерное для конвейерных систем типа II и обусловленное тем, что разные ветви, принадлежащие t-му ярусу, начинают и заканчивают работу не одновре- менно, а со сдвигом в (п—1) тактов (причем мы пред- полагаем здесь, что ни одна из ветвей (i-H)-ro яруса не может начинать работу, пока не закончено исполне- ние всех ветвей i-ro яруса). Если длины ветвей и со- ответственно ярусов отождествить с временами их ис- полнения, то величина A<3,i(- для всех ярусов (для всех i) равна просто длительности такта работы конвейера. В приведенном выше выражении для Е„ величина N—1 ь 2 2 нах°Дящаяся в числителе,— это продолжитель- i=0 j=l ность исполнения программы однопроцессорной машиной. Разделив эту величину на п, получим 22 Zz//n- время, i=0 /=! в течение которого программа должна была бы испол- няться вычислительной системой, если бы ее реальное быстродействие было равно номинальному (в га раз выше, чем быстродействие обычной^однопроцессорной машины), а эффективность системы была бы равна единице. £Вели- N~l Г ь \ чина 2 (max {/(/4_А(1)/1/ + Д(г)/г/}-|-(/г — IJA*’*/,/)» на- 1=0 '7=1 ходящаяся в знаменателе выражения для Еп, представ- ляет собой то реальное время, за которое данная про- грамма исполняется вычислительной системой. Ясно, что для любого i-ro яруса, i = О, 1, ..., N— 1. / ь \ 6 п (тах{/// + Д(% + Д(2)7//} + (п- 1) A<3)/z )>£ 1Ц 1 |=1 69
(напомним, что здесь п=Ь), и поэтому £п<1. Величина эффективности Еа тем ближе к единице, чем меньше раз- личаются между собой длины ветвей, принадлежащих одному ярусу, и чем больше эти длины по сравнению с величинами Д^/у, Д<2>/у и (п—1)Д(3)/,-. Иначе говоря, желательно, чтобы для любого i-ro яруса соблюдалось соотношение /и«...»Д^/у, Д'Ч/, (п-1 )Д(Ч. Заметим, однако, что рассматриваемый выше случай, когда ширина любого яруса программы bt в точности равна п, является наиболее благоприятным для получе- ния высокой эффективности вычислительных систем ти- па I и II и в общем случае мало реален. Другой случай, в котором выражение для эффектив- ности системы £п может быть записано в аналитической форме, состоит в том, что для разных ярусов ярусно-па- раллельной формы программы величины Ьо, Ь\, Ь2, ... ..., Ья-i вообще различны и отличаются от п, но зато длины всех ветвей, входящих в один и тот же i-й ярус, одинаковы между собой: 1ц=1ц=- .=lib.=k для 1= =0, 1, 2, ..., N— 1. Кроме того, сохраним в силе пред- положение, что исполнение ни одной ветви (i-H)-ro яруса не может быть начато до того, как закончится исполнение всех ветвей i-ro яруса. Очевидно, что для этого случая время исполнения программы обычной (однопроцессорной) машиной должно N— I было бы быть При использовании вычислительной <=о системы все ветвей, входящих в i-й ярус (i=0,1,2,... bi Г -тЦ ГРУПП> Q-y — 1) групп содержат ровно по га ветвей а последняя группа — от 1 до л ветвей. Время ния всех ветвей одного яруса пропорционально, очевидно, — это бли- ..., N— 1), нужно разделить на из которых каждая, исполне- количеству групп • (Напомним, что жайшее не меньшее целое для числа Ь(/п.) Таким обра- 70
зом, выражение для эффективности системы имеет в дан- ном случае вид: ЛГ-1 2 Здесь А(2)/«, A(3)/f имеют тот же смысл, что и выше. Коэффициент при A(3)/t- показывает, сколько тактов по- требуется в л-ступенной конвейерной системе для завер- шения последней операции последней ветви z-го яруса сверх тех п тактов, которые отводятся для выполнения последней операции в последней (j'TrQ группе вет- вей. Если бы bi было кратно л, т. е. если бы выполня- лось равенство и последняя группа была полной (содержала бы л ветвей), то этот коэффициент был бы равен bt — 1 — п f 1— Г ' \ J п L Видно, что в рассматриваемом случае пользователь- ская эффективность тем выше, чем больше величины Ь$у Ь\, ..., по сравнению с л. В более общем случае, когда различны не только величины bi для разных ярусов, но и длины ветвей Zz/, входящих в один ярус, для достижения наибольшей эффективности системы следовало бы поступать иначе. Все bi ветвей, входящих в один ярус, нужно разбить на л групп — по числу машин в многомашинном комплексе или процессоров в многопроцессорной системе, или устройств управления в конвейерной системе типа II; соответственно каждая группа ветвей будет исполняться своей машиной или своим процессором, или своим устройством управления конвейерной системы. В сред- нем в каждую группу будет входить bi/n ветвей, но вообще-то группировка ведется с таким расчетом, чтобы по возможности были равны между собой суммы длин ветвей, входящих в каждую группу. Если бы группи- 71
ровку удалось провести так, чтобы суммы длин ветвей для всех групп были в точности равны между собой,, эффективность системы была бы больше всего. Задача о группировке bi чисел 1ц, li2, ..., hbt в п групп, таких, чтобы суммы чисел, входящих в каж- дую группу, минимально отличались друг от друга (т. е. чтобы разность между наибольшей и наименьшей сум- мами была минимальной), требует проведения весьма значительного (при больших bi и п) перебора. Если все характеристики ярусно-параллельной формы программы и характеристики вычислительной системы известны за- ранее и постоянны, то эта задача может решаться до за- пуска программы — как говорят, в статике. Если харак- теристики программы bi и lij (f=0, 1,..., N—1; /’=1,2,... ..., bi) зависят от исходных данных, а величина п за- висит от состояния технических средств системы и, воз- можно, от наличия в системе других задач и их приори- тетов по отношению к данной программе, то планиро- вание загрузки средств системы должно вестись в ходе исполнения программы — как говорят, в динамике. В действительности задача планирования загрузки вычислительной системы типа I или II значительно слож- нее, чем можно было бы заключить из предыдущего. Мы исходили до сих пор из предположения, что условием, разрешающим начать выполнение любой ветви (z’+l) -го яруса, является окончание исполнения всех ветвей /’-го яруса. На практике это во многих случаях не так. Хотя программу и можно формально представить в виде ярусно-параллельной формы, оказывается, что такое представление не отражает действительных возможно- стей организации параллельных вычислений, а числен- ные характеристики графа япусно-параллельной формы, о которых говорилось в п. 1.2.2, 3° и которыми мы поль- зовались выше, не позволяют оценить, какая эффектив- ность системы может быть достигнута при реализации данной программы. В качестве простейшего примеоа рассмотрим фрагмент графа ярусно-параллельной формы программы, представленный на рис. 2.2.1,п, и предположим, что эта программа должна реализо- ваться 4-машинным комплексом или 4-процессорной вычислительной системой типа II. Цифры, проставленные на рис. 2.2.1 рядом с круж- ками, символизирующими ветви, обозначают длины ветвей в услов- ных единицах времени. Предполагается, что величины и А(2)Л-; настолько малы по сравнению с длинами ветвей, что ими можно пре* небречь. 72
Формальный подход к дёлу подсказывает, что поскольку ширина i-ro и (i-H)-ro ярусов в точности равна количеству машин в ком- плексе или процессоров в многопроцессорной системе, bi==bi+i = n=4t то при планировании загрузки системы у нас, казалось бы, нет вы- бора, и расписание работы системы должно быть таким, как показа- но на рис. 2.2.1,б. Продолжительность исполнения i-ro и (i-H)-ro ярусов равна сумме их длин, Zi+Z»+i = 14 единицам времени, а эффективность системы равнялась бы при этом; Ж , " O + 3 + 3 + 4) + (10+10+ 10+1) £а = 1 + 1 ь.---" 4 (4 + 10) «2 42 -I6-0’75- Некоторое усовершенствование расписания, представленного на рис. 2.2.1,6, может состоять в том, что прохождение ветвей Н-1,1, x-f-1,2 и i+1,3 может начинаться в 1-, 2-, 3-й машинах раньше, чем в 4-й машине закончится прохождение ветви i,4, сразу после осво- бождения машин от исполнения ветвей i,l; i,2; i,3, поскольку все эти ветви не зависят от i,4. Общее время исполнения i-ro и {i+l)-ro ярусов при этом сократилось бы до 13 единиц, а эффективность по- 42 высилась бы до величины Еа = ^0,81. Между тем непосредственное рассмотрение графа, изображен- ного на рис. 2.2.1,а, позволяет построить еще более выгодное распи- сание работы системы — такое, как показано на рис. 2.2.1,в. Дли- тельность выполнения i- и (i-f-l)-ro ярусов в соответствии с этим расписанием составляет 11 ед. времени, а эффективность Еа => 42 Несложным перебором можно показать, что это рас- писание является оптимальным, т. е. что достигаемая при его исполь- зовании величина Еа — максимально возможная. Известны различные алгоритмы планирования рабо- ты вычислительных систем. Необходимо только учиты- вать, что сама планирующая программа исполняется теми же средствами системы, которые она распределяет для исполнения основной программы. Чем ближе к опти- мальному должно быть получено расписание, тем долж- на быть сложнее и тем дольше будет работать плани- рующая программа. Поэтому имеется некоторый опти- мум в том, к каким отклонениям от оптимального расписания реализации пользовательских программ сле- дует стремиться. 73
2°. Те аспекты организации работы вычислительных систем типа I или II, которые рассматривались нами в п. 1° и которые представляются весьма привлекатель- ными для различных теоретических построений, тем не менее мало приблизили нас к решению основных прак- тических вопросов, связанных с построением и исполь- зованием вычислительных систем указанных типов. Фактически на их основе мы можем сделать лишь два весьма приблизительных вы- вода. Первый из них состоит в том, что вычислительные системы типа I и II могут быть достаточно эффектив- ными в двух случаях. Либо такая система должна N машины (процессора) 4 Рис. 2.2.1 3 -4- /hi —4 —I 1+7, 4 4—Г —4 J___L—>. 12 Т строиться как строго специализированная, предназначен- ная для решения определенной задачи. При этом коли- чество машин многомашинного комплекса, или коли- чество процессоров многопроцессорной системы, или ко- личество ступеней конвейерной системы п должно быть в точности равно или являться целым делителем ширины каждого из ярусов ярусно-параллельной формы этой задачи, а длины всех ветвей, принадлежащих одному ярусу, должны быть одинаковы между собой.'Либо — если систему типа I или II предполагается использовать для достижения высокой пользовательской производи- тельности при решении широкого круга задач — в число этих задач должны войти такие, в ходе исполнения ко- торых в каждый момент времени t количество исполняе- мых и готовых к исполнению ветвей, В(/), велико по 74
сравнению с п. Наоборот: чем шире должен быть класс задач, при решении которых данная система будет до- статочно эффективна, тем меньше должно быть п. В пре- деле, при п=1, обычная однопроцессорная система оди- наково эффективна при решении любых задач. Второй вывод из сказанного в п. 1° состоит в том, что для достаточно эффективного использования систем типов I и II необходимо, чтобы длины независимых вет- вей в программах были намного больше, чем чисто си- стемные потери времени: ДО)/ — на проверку и форми- рование условий запуска ветвей, Д(2)/ — на обмен инфор- мацией между ветвями, Д(3>/ — на завершение последних операций ветвей в конвейерных системах. Наоборот: чем лучше реализованы в системе функции организации ее работы, т. е. чем меньше времени отнимают диспетчер- ские функции, обмен информацией между средствами системы и т. п., тем более широкий круг задач может быть эффективно решен с помощью системы. В частно- сти, по этой причине пользовательская эффективность вычислительных систем типа II при прочих равных усло- виях несколько выше, чем для систем типа I. Оба эти вывода, однако, весьма тривиальны. К со- жалению, оба они исходят из предположения, что зара- нее задана ярусно-параллельная форма программы и известны ее характеристики. Значительно содержательнее был бы ответ на вопрос о том, каковы могут быть оптимальные в определенном смысле характеристики ярусно-параллельной формы про- граммы для некоторой определенной задачи, либо ответ на вопрос, каким требованиям должны отвечать условия задач для того, чтобы ярусно-параллельные формы про- грамм для их решения имели требуемые характеристи- ки. Однако авторам неизвестны общие способы решения подобных вопросов. Те или иные свойства программ, позволяющие при их реализации с определенной эффективностью исполь- зовать вычислительные системы типа I или II, могут быть результатом сознательных усилий программиста в этом направлении. При этом от программиста большей частью требуется, чтобы он сам расставил в тексте своей программы операторы разветвления типа fork Ссписок ветвей>, означающие, что, начиная от данной точки программы, можно одновременно запускать ветви, пере- численные в списке, и операторы ожидания типа joint 73
<список ветвей > и quitt <список ветвей >, означаю- щие соответственно, что дальнейшее продолжение про- граммы возможно после окончания всех или хотя бы одной из ветвей, перечисленных в списке. Возмо- жен также вариант, когда соответствующие операции вставляются в текст программы транслятором при пере- воде программы с языка высокого уровня на машинный язык (см. п. 2.4.1, 4°). Если программа написана без- относительно к структуре системы, то транслятор обес- печит возможности параллельного исполнения отдель- ных ветвей программы лишь в той мере, в какой это окажется возможным. Таким образом, получается, что возможности эффек- тивного использования вычислительной системы типа I или II для решения некоторой задачи зависят не столько от свойств этой задачи, сколько от искусства програм- миста либо,— если программа составлялась безотноси- тельно к структуре системы,— от обстоятельств почти случайного характера. Итог нашего весьма пространного рассмотрения во- проса довольно скуден. Фактически, если целью созда- ния вычислительной системы является получение высо- кой пользовательской производительности, то мы не знаем, для каких классов задач целесообразно приме- нять вычислительные системы типа I и II и каковы ра- циональные характеристики этих систем. В этой ситуации большой интерес представляет ряд работ по моделированию процессов организации парал- лельных вычислений при решении разнообразных реаль- ных задач. В частности, в одной из этих работ [9] рас- сматривался широкий круг задач, связанных с прогнозом погоды, рентгеноструктурным анализом и др. В другой американской работе, проводившейся в плане про- граммы высадки человека на Марс, исследовались за- дачи, возлагаемые на бортовые вычислительные сред- ства космического корабля: навигационные, авто- матического управления и т. п. (на борту корабля предполагалось использовать 3-машинный вычислитель- ный комплекс СегЬег). Результаты этих и ряда других работ аналогичного характера более или менее совпадают между собой и в усредненной форме представлены на рис. 2.2.2. На рисунке показаны зависимости реального пользователь- ского быстродействия $Р(П) и соответствующей пользова- 76
тельской эффективности Ен от п (числа машин в мно- гомашинном комплексе или процессоров в многопроцес- сорной системе, или ступеней в конвейерной системе типа II). Из рассмотрения рисунка видно, что если рассчиты- вать на получение от системы высокого пользователь- ского быстродействия для широкого круга задач, то не имеет смысла объединять больше 3—4, в крайнем случае 5 машин (процессоров, устройств управления в конвейер- ной системе): слишком медленно растет при дальнейшем увеличении п реальное пользовательское быстродей- ствие. Как говорилось уже в 2.1.1, 3°, вычислитель- ные системы рассматриваемых типов с большим п стро- ятся главным образом в расчете на получение высокой системной производительности, а повышение пользо- вательской производительности решается как попутная задача — для тех программ из общего потока, проходя- щего через систему, для которых это выгодно. 2.2.3. ЭФФЕКТИВНОСТЬ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ ТИПА III Оценка эффективности вычислительных систем ти- па III наталкивается фактически на те же методические трудности, которые помешали нам получить в общем виде сколько-нибудь удовлетворительные результаты при попытке оценить эффективность систем типа I и II: количественные характеристики параллелизма смежных операций, на который ориентированы системы типа III, относятся на самом деле не к собственно решаемым за- дачам, а к программам для их решения. Однако, как мы говорили в п. 1.2.3, 3°, положение здесь облегчается тем, что сами эти характеристики (показатель связанности 77
смежных операций а и глубина параллелизма смежных операций £Псо) более зависят от качества локальной оптимизации программы, чем от свойств задачи. Во вся- ком случае для различных задач вычислительного ха- рактера *> при использовании одних и тех же методов локальной оптимизации программ достигаются примерно одни и те же значения а и £ПСо (см. п. 1.2.3, 3°). Если величины а (или £Псо) и п известны, то дальше определение пользовательской эффективности Еп для n-процессорной или n-ступенной конвейерной систе- мы типа III не представляет особых затруднений. Есте- ственно, что Еп является функцией а (или ЕПСо) и п: Еп=Еп(а, п) или Еп=Еп(Епсо, п). Для упрощения изложения будем в дальнейшем предполагать, что оптимизация программы (с целью улучшения возможностей использования параллелизма смежных операций) выполнена в процессе трансляции программы либо не выполняется вообще. На самом деле допущение возможности выполнения оптимизации одно- временно с интерпретацией программы ничего не изме- нило бы по существу. Однако каждый раз, говоря об очередной операции программы, о цепочке операций, которые можно выполнить одновременно с данной опе- рацией, и т. д., мы должны были бы упоминать, что речь идет не о порядке операций в тексте исполняемой программы, а о том порядке, который получается в ре- зультате ее оптимизации. Такое же упрощение нами фактически уже было принято в п. 1.2.3, 3°, где вводи- лись численные характеристики параллелизма смежных операций. Сохраним обозначения, принятые в п. 1.2.3, 3°. Очевидно, что в любом такте работы вычислительной системы типа III все п ее процессоров (или все п сту- пеней, если речь идет о конвейерной системе) могут быть заняты полезными операциями только при условии, что, начиная от очередной операции, в программе имеет- ся цепочка длиной не менее п операций, которые можно выполнить все одновременно. Вероятность существова- ния такой цепочки была обозначена нами рп, причем ' (п—1) п ♦) Так мы называем задачи, в которых главную роль играет выполнение вычислений — в отличие от информационно-поисковых и логических задач. 78
В других случаях занято меньшее количество процессб; ров (ступеней) /, где 1^/^п—1. Вероятность того, что занято ровно / процессоров (ступеней), есть у; — вероят- ность ситуации, когда, начиная от очередной операции в программе, имеется ровно I операций, которые можно выполнять все одновременно. Как мы говорили в п. 1.2.3, 3°, П-1) I I (.4-1) Т/ = (1-а) 2 (1 — а) 2 . Итого, эффективность вычислительной системы ти- па III равна IU+1) \ (л-1) л\ л (i-l) I -(1-а) 2 j + Ml - а) 2 j=_L£(l_a) 2 ' ' l=\ Ha рис. 2.2.3 показаны зависимости от п реального пользовательского быстродействия 5Р(П) и пользователь- ской эффективности £п для вычислительных систем ти- па III при различных значениях а. Можно также записать: (Д1СО» #) — (Д1СО (#))» где R(n)—некоторый остаточный член, тем меньший, чем больше п. При том вероятностном распределении использования результатов предыдущих операций в по- 79
Следующих операциях программы, которое было принй* то ранее, .00 (/-1) / п (/-1) I /?(«) = 2(1-а) 2 —3(1—а) 2 = /=1 /=1 00 (г—1) I = 2 (1-а) 2 • Ясно, что при прочих равных условиях величина £п тем меньше, чем больше п. Чем больше коэффициент связанности смежных операций а или чем меньше глу- бина параллелизма смежных операций £Псо, тем мень- шее количество процессоров п целесообразно объединять в многопроцессорную систему типа III (или предусмат- ривать ступеней в конвейерной системе типа III). Если считать допустимыми значения пользовательской эффек- тивности порядка 0,6—0,8, то при обычных значениях а и Lnco (а=0,1—0,5; Lnco=l,6-i-4— см. п. 1.2.3, 3°) целе- сообразная величина п для вычислительных систем ти- па III лежит в пределах 2—6. 2.2.4. ЭФФЕКТИВНОСТЬ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ ТИПА IV 1°. Рассмотрение вопроса об эффективности вычисли- тельных систем типа IV, ориентированных на использо- вание естественного параллелизма (или, в частности, параллелизма множества объектов), начнем для опреде- ленности с оценки эффективности многопроцессорных систем этого типа. Как мы увидим из дальнейшего, ана- логичная оценка для конвейерных систем типа IV полу- чается несколько иной. Основным фактором, определяющим эффективность многопроцессорных систем типа IV, является соотноше- ние ранга задачи г и количества процессоров п. В общем случае г не равно и не кратно п. Без учета других, ме- нее значительных факторов, влияющих на величину эффективности, пользовательская эффективность «-про- цессорной системы типа IV при решении задачи ранга г может быть приближенно оценена отношением
Где через обозначено ближайшее не МеньШее Целое для числа г/п. Здесь г — это то количество повторений каждой из операций в программе решения задачи ран- га г, которое потребовалось бы, если бы эта программа исполнялась обычной однопроцессорной машиной; г/п — это количество повторений каждой операции в «-процессорной системе, которое должно было бы по- лучиться, если бы пользовательское быстродействие «-процессорной системы было действительно в п раз вы- ше быстродействия однопроцессорной машины (т. е. если бы пользовательская- эффективность была равна единице); —это реальное количество повторений каждой операции в «-процессорной системе, причем ]г г — •«— г есть количество процессоров, простаивающих в последнем цикле исполнения операции (из-за чего, собственно, пользовательская эффективность и оказыва- ется вообще меньше единицы). Если г равно или кратно «, то во всех других случаях . Поэтому Еа= —: 1—Г<1. п п J п [ На рис. 2.2.4 в качестве примера показаны зависимо- сти величины —' , от п для г = 8 и г = 12. Видно, что г / («• 1 ) представляет собой не монотонную функцию «. Общая тенденция, однако, состоит в том, что —J тем ближе к единице, чем больше г и чем меньше «. В действительности величина —, -г- однозначно свя- 6—1013 81
Зйна с отношением г/п. Эта зависимость представлена на рис. 2.2.5. В отличие от рис. 2.2.4, где мы условно соединили линиями точки, соответствующие целочислен- ным значениям аргумента (л), функция, представленная на рис. 2.2.5, имеет смысл при любых положительных рациональных значениях аргумента (г/n). Она пред- ставляет собой кусочно-линейную функцию с бесконеч- ным количеством разрывов — во всех точках, где г/п — Рис. 2.25 целое число, причем в этих точках значения функции равны единице (предел слева). Если на разных этапах решения задачи ее ранг не остается постоянным и принимает значения из множест- ва {г,}, то ~п ^4Pi ТпТ’ (<) | п где р(. — вероятность того, что ранг задачи есть л. 82
Другие факторы, влияющие на пользовательскую эффективность многопроцессорных систем типа IV, учтем введением коэффициентов: /<р — коэффициент, учитывающий наличие расхожде- ний в программе; Кц— коэффициент, учитывающий возможности аппа- ратуры последовательно-параллельной обработки, если таковая имеется в системе (см. п. 2.1.3, 4°); Ко — коэффициент, учитывающий влияние на эффек- тивность системы наличия в программе «интегральных» операций (см. п. 1.2.1, 2°) и возможности общих ариф- метико-логических цепей и локальных связей между процессорами, если таковые имеются в системе (см. п. 2.1.3, 6°). Полное выражение для пользовательской эффектив- ности многопроцессорной системы типа IV при этом должно быть записано в виде: £п=411^7^ 'Wo- rn ] п [ Ниже мы рассмотрим более подробно влияние пере- численных факторов на величину Еп. Мы увидим, что Кр, Кц и Ко определенным образом зависят как от ха- рактеристик решаемых задач, так и от количества ос- новных процессоров, состава и характеристик другого оборудования системы. Точное определение величин Кр, Кц и Ко связано во многих случаях с весьма кропотливыми расчетами и не- обходимостью знать очень детальные характеристики решаемой задачи. Забегая, однако, вперед, можно ска- зать, что все эти факторы оказывают не очень значи- тельное влияние на величину пользовательской эффек- тивности, т. е. что для широкого круга задач, подходя- щих для решения с помощью вычислительных систем рассматриваемого типа, произведение КрКцКо близко к единице, а зависимость Еп от /г и г близка к приведен- ной выше (рис. 2.2.4, 2.2.5). 2°. Рассмотрим сначала влияние на пользовательскую эффективность расхождений в программе обработки раз- личных компонент векторов или матриц, или различных точек функции, или информации о различных объектах из множества однородных объектов. Для упрощения изложения будем иметь в виду в дальнейшем главным 6* 83
образом параллелизм множества объектов, а не общий случай естественного параллелизма. Как мы уже гово- рили, именно в этом частном случае расхождения в про- граммах играют наиболее значительную роль и именно для этого случая целесообразно ввести в систему, на- пример, процессор переформирования массивов. Если в системе отсутствуют и процессор переформи- рования массивов, и схема проверки однородности вы- борки, то все расхождения в программе реализуются только за счет механизма масок, а коэффициент Кр, вхо- дящий в выражение для Еп, есть просто величина, обрат- ная расхождению программы D, Знак прибли- женного равенства мы поставили здесь потому, что в самом определении величины D, приведенном в п. 1.2.1, 3®, имеется некоторая неточность (вернее, не- договоренность), состоящая в следующем. В формуле для величины D (с. 20) mk 3 3 lksk D = r-^^._________ mk s s rksi/ksb W sk=i молчаливо предполагается, что длины ветвей lkSk (т. е. длины подпрограмм обработки информации об объектах sft-ro класса, sk = 1, 2, на ft-м этапе исполнения программы) одинаковы в многопроцессорной системе и в обычной однопроцессорной машине. Иначе в числителе и в знаменателе выраженияТдля D нужно было бы4 запи- сать разные величины lkSk: в числителе — длиныТветвей в программе многопроцессорной системы, в знаменате- ле — соответствующие длины для однопроцессорной ма- шины. При идентичной системе команд величины lkSk для многопроцессорной системы и для однопроцессорной машины действительно можно с достаточной точностью считать одинаковыми, но только в том случае, когда величины lkSk не слишком малы — например, если величины lkSk, измеренные в количестве машинных операций, больше 5-6. 94
Для пояснения рассмотрим простейший пример. Пусть расхож- дение в программе обработки информации о разных объектах на £-м этапе описывается (в терминах АЛГОЛ-60) условным операто- ром ... if <отношение> then <арифметическое выражение 1> else <арифметическое выражение 2>; ... Иначе говоря, на k-м этапе объекты делятся на 2 класса (mk = 2): те, для которых отно- шение истинно, и те, для которых отношение ложно. Для первых вычисляется арифметическое выражение 1, для вторых — арифмети- ческое выражение 2. На машинном языке для однопроцессорной машины выполнение этого оператора описывается программой: — вычисление логического выражения, соответствующего за- данному отношению; — условная передача управления (на продолжение либо к Ml); — вычисление арифметического выражения 1; — безусловная передача управления к М2; Ml: вычисление арифметического выражения 2; М2:...................................... То же для многопроцессорной системы выглядит следующим образом: — вычисление логического выражения, соответствующего за- данному отношению, для группы объектов (формирование массива маски); — вычисление арифметического выражения 1 для группы объ- ектов под прямой маской; — вычисление арифметического выражения 2 под инверсной маской; Сопоставление программ для однопроцессорной машины и для многопроцессорной системы показывает, что длина ветви вычислений для объектов 1-го класса, /ы, в программе однопроцессорной маши- ны содержит две «лишние» операции по сравнеиню с программой многопроцессорной системы: условную передачу управления (на про- должение либо к Ml) и безусловную передачу управления к М2. Для объектов 2-го класса (для которых заданное отношение лож- но) отличие в величине /&2 составляет одну операцию — условной передачи управления. Если бы расхождения имелись на всех этапах исполнения про- граммы и были при этом только указанного вида, то коэффициент Кр должен был бы определяться по формуле 2 ^2^2) Г 3 ((/ft, - 2) + (/», - I)) (*) 85
При условии Iki, lk2^>3 в этом случае действительно /| (rki^ki + rk2^kz) к _________________ D r 2 Vki + W (*> Однако вообще в этом случае /Ср>-р-, а если и lk2 малы, то может оказаться Кр > 1. В качестве предельного случая можно пред- ставить себе ситуацию, в которой вычисления арифметических выра- жений 1 и 2 содержат всего по одной арифметической операции; тогда /л1=3 (условная передача управления — арифметическая опе- рация— безусловная передача управления), a Zfe2=2 (условная пе- редача управления — арифметическая операция). Если это так, то лг 2 (3rftl 4- 2г*2) (где W— количество этапов, 6=1, 2, ..., W). В пределе, при гм— и соответственно rk2=r—rki—>0, JCP—>-3. Конечно, рассмотренный пример весьма условен. Однако он показывает, что расхождения, имеющиеся в программах, не обязательно снижают пользователь- скую эффективность вычислительной системы типа IV. В некоторых частных случаях может оказаться, что про- стейший механизм масок без каких-либо дальнейших усовершенствований (введения процессора переформиро- вания массивов и схемы проверки однородности выбор- ки) может обеспечить значительное повышение пользо- вательской эффективности системы. При наиболее бла- гоприятных ситуациях пользовательская эффективность Еп может получиться даже существенно больше единицы (в нашем примере до 3). Теперь остановимся на вопросе о целесообразности введения в состав системы схемы проверки однородно- сти выборки (см. п. 2.1.3, 5°). Пусть, как и прежде, г—ранг задачи (количество объектов, по которым ведется обработка информации), п — количество процессоров в системе, ntk — количество подмножеств (классов), на которые разделяется на Л-м этапе обработки множество из г объектов, rk8k —ко- личество объектов, принадлежащих $*-му подмножеству, 86
—длина ветви обработки информации на ^-м эта- пе выполнения программы по объекту, принадлежащему Sfe-му подмножеству (s*=l, 2, /и*). Для упрощения дальнейшего изложения отвлечемся от рассмотренных выше обстоятельств, в силу которых длины ветвей в программе многопроцессорной системы могут отличаться от длин соответствующих ветвей в про- грамме однопроцессорной машины. Иначе говоря, все соотношения будем записывать так, будто величины lkSk достаточно велики. Однако схема проверки одно- родности выборки одинаково работает при любых дли- нах ветвей, и тот выигрыш в эффективности системы, который достигается с ее помощью, может просто накла- дываться на выигрыш, получаемый за счет других фак- торов. Отношение rkSk/r можно приравнять вероятности того, что некоторый произвольно выбранный объект из множе- ства, содержащего г объектов, принадлежит $А-му клас- су. Будем полагать, что объекты каждого $Л-го класса распределены в множестве из г объектов равномерно. Тогда вероятность того, что в выборке из п очередных объектов имеется хотя бы один объект, принадлежащий $Л-му классу, есть, очевидно, 1 — (1 — rkSkfr)n. Если г достаточно велико, то при наличии в системе схемы про- верки однородности выборки величину 1 — (1 — rkSklr)n можно рассматривать как частоту, с которой при обра- ботке групп по п объектов на k-м этапе должна испол- няться ветвь lksk. При этом, очевидно, 3 2 rksj^ksk к_________________(Ь> Sft=1__________________. Лр~ mk г2 2 (* (ft) sft-l m4 2 2 rfrsiJksii 1 _ (fe) sk^\ D mk r2 2 lksk W sk= 1 Ясно, что эффект от введения схемы проверки одно- родности выборки тем больше, чем меньше количество объектов rkSk (по сравнению с общим количеством объ- ектов г), принадлежащих 8к-му классу, для которого со- 87
о^ве+СТвуклцая длййй ветви велика ЙО сравнению с длинами других ветвей, и чем меньше количество про- цессоров п. Например, если бы на k-м этапе объекты делились на два при- мерно равных класса (тл = 2; гл1^л2^г/2) и длины ветвей для этих классов были бы примерно равны , то в знаменате- ле выражения для -ц- k-н этап был бы представлен слагаемым а в знаменателе приведенного выше выражения для Кр, учитываю- щего наличие схемы проверки Однородности, выборки, — слагаемым (1-(1-гЛ1/г)л)/А1+(1-(1-гЛ2/г)")/А2^2*(1-2—)/А. При п=2 2(1—2-")/А^0,75(2/А), при п=4 2(1-2-")/л^0,94(2/л), т. е. даже при малых значениях п выигрыш от введения схемы про- верки однородности выборки невелик. Другое дело, если бы классы были резко различны по своим характеристикам. Представим себе, например, что количество объек- тов 1-го класса составляет всего Vio от общего числа объектов, а остальные 9/ю объектов относятся ко второму классу и при этом длина ветви обработки для объектов 1-го класса в 10 раз больше, чем для объектов 2-го класса; иначе говоря, гЛ1=0,1г, глг=0,9г, /Л1 = Ю/, /*2=/, где I — некоторая условная единица длины ветви. Если это так, то в знаменателе для 1/D £-й этап представлен слагаемым /м+/л2= 11/, а в знаменателе выражения для Кр, учитывающего наличие схемы проверки однородности выборки, — слагаемым (1-(1-ГЛ1/г)П)/Л1 + (1-(1-ГЛ2/г)П)/л2 = = (1—0,9")10/-|-(1—0,1")/. При п=2 (1—0,92) 10/+ (1 —0,12) /^0,26 (11/), при п*=4 (1 —0,94) 10/ + (1 —0,14) /=^0,40 (11/), при /г=6 (1 —0,9е) 10/+ (1 —0,16) /^0,52 (11/). Как видим, выигрыш здесь достаточно значителен. Рассмотрим, наконец, эффект от введения в состав системы процессора переформирования массивов 88
(п. 2.1.3, 5°) и его влияние на величину коэффициен- та Процессор переформирования массивов, если он есть в составе системы, имеет смысл включать в работу на тех этапах вычислений, когда расхождение в програм- мах образуется сравнительно длинными ветвями. Сам процессор переформирования массивов требует для своей работы некоторого времени Тпм, которое в общем случае является неубывающей функцией трех переменных: г—количества объектов в обрабатываемом множестве, ть — количества классов, на которые долж- но быть разделено обрабатываемое множество из г объектов, Mk — количества параметров, которыми опи- сывается каждый из г объектов к началу k-ro этапа вы- числений и которые потребуются для выполнения ft-ro или любого последующего этапа. Таким образом, т£’ = Тпм(г,/пй,Л1Л где верхний индекс (k) указывает, что речь идет о вре- мени работы процессора на k-м этапе исполнения про- граммы. Зависимость ГПм от требует, возможно, дополнительного по- яснения. Допустим, что решаемая задача состоит в обработке траек- торий движения заряженных частиц, причем г — количество обраба- тываемых траекторий. Допустим также, что к началу k-ro этапа обработки для каждой t-й частицы (f=l, 2, ..., г) известны ее ко- ординаты в пространстве (для определенности, скажем, декартовы) Xi, yi, Zi, момент времени ti, к которому относятся эти координаты, составляющие скоростей Xi, yit zi, а также некоторый признак характеризующий тип частицы; таким образом, общее количество параметров, которыми описывается траектория каждой частицы к на- чалу &-го этапа вычислений, равно 8. Может оказаться, что какой- либо (или какие-либо) из этих параметров не нужен ни для выпол- нения &-го этапа, ни вообще в последующих этапах; если это не так, то Л4д = 8. Ясно, что на предыдущих и на последующих этапах вычислений количество параметров, описывающих каждый из объек- тов, может быть другим. Общая память n-процессорной системы должна иметь либо ши рокий формат обращения — так, чтобы за одно обращение из нее можно было выбрать одновременно п слов (по числу процессоров), расположенных в последовательных ячейках, либо высокую скорость по сравнению с процессорной частью, чтобы эти п слов могли быть достаточно быстро выбраны по последовательным адресам. Так или иначе Mk характеристик для объектов должны быть расположены в ней в виде Mk массивов, каждый из которых занимает г последо- вательных ячеек. Например, в первом массиве, начиная от опреде- ленного адреса, расположены в последовательных ячейках все хг: сначала х\, затем и т. д. до хг\ во втором массиве —//i, </2, • •Ут, И T. Д. 89
Когда речь идет о том, чтобы процессор переформирования мас- сивов разделил по определенным маскам множество из г объектов на Шк подмножеств, то это значит, что он должен переформировать фактически Mh массивов под управлением одного и того же набора масок, разделив каждый из них на nth подмассивов. Поэтому есть вообще не убывающая, может быть, даже линейная функция от Mk. При определенной структуре вычислительной систе- мы и пользовательской программы время работы про- цессора переформирования массивов может быть пол- ностью или частично перекрыто с временем выполнения других операций основными процессорами системы. По- этому будем считать, что в полное время исполнения fe-го этапа программы оно входит в виде слагаемого хТы=нТ^г'тЬ’М^' где 0<х<1. После того, как процессор переформирования масси- вов разделил исходное множество объектов на mk под- множеств— в соответствии с количеством разных ветвей для k-vo этапа — потери времени, связанные с расхож- дением программы на ft-м этапе, должны, казалось бы, исчезнуть. Однако в общем случае вместо них появля- ются некоторые дополнительные потери. Они связаны с тем, что прежде мы имели одно множество из г объектовой в последнем цикле его обработки у нас один раз простаивали ‘п—^процессоров, теперь же вместо этого имеется mk множеств, содержащих по rkl, гкг, ... ’rkmk объектов и в последнем'цикле обработки каж- Г до го из них простаивает соответственно 'п—rksk процессоров, где sk = 1, 2, ..., mk. С учетом этих обстоятельств оказывается, что вклю- чение на ft-м этапе процессора переформирования мас- сивов целесообразно при условии, что тк ,f г mk <]-[ 90
Где в правой части приняты во внимание также возмож- ности схемы проверки однородности выборки. Время исполнения k-ro этапа программы при этом равно левой либо правой части неравенства — в зависимости от того, какая из них меньше. Поскольку всегда ]—[ + — Г < [ a J п L J л L J п L пм является неубывающей функцией /и*, то здесь имеется некоторая возможность оптимизации. Она состоит в том, что при условии, когда на А-м этапе программы обра- ботки информации по объектам з^-го и s*;-ro классов мало отличаются друг от друга, может быть, имеет смысл при переформировании массивов не разделять между собой эти два класса, чтобы уменьшить таким образом общее количество классов /и* (и соответственно величину Т^) и получить вместо двух классов объек- тов, содержащих по г*, и г*/ объектов, один класс, со- держащий />(+/>/ объектов. Зато дальше, при обработ- ке информации по объектам этого объединенного клас- са, расхождение в программах придется проходить с по- мощью обычного механизма масок, используя также возможности схемы проверки однородности выборки. Итак, если расхождение в программах образуется за счет коротких разветвлений — и может быть, весьма многочисленных, так что суммарная величина D вели- ка,— эти расхождения эффективно реализуются меха- низмом масок; при этом /Ср может получиться даже боль- ше единицы. Если суммарная величина расхождения D образуется за счет достаточно длинных разветвлений на отдельных этапах программы, то может быть эффектив- но использован процессор переформирования массивов, в результате чего коэффициент /Ср получится хотя и меньше единицы, но весьма к ней близок. Наихудшим положение оказывается в случае, когда суммарная ве- личина расхождения D образуется разветвлениями «средней» длины: выигрыш в количестве операций управления, которые дает вообще механизм масок, здесь уже незначителен, а включать процессор переформиро- вания массивов на каждом из этапов, где встречается такое расхождение, еще нецелесообразно; величина /Ср при этом близка к \/D — лишь немного больше за счет уменьшения количества операций управления и, возмож- 91
но, за счет наличия схемы проверки однородности вы- борки. Впрочем, схема проверки однородности выборки дает выигрыш и при «малых» разветвлениях. Опыт показывает, что совокупный эффект рассмот- ренных факторов позволяет получить для большинства задач, обладающих естественным параллелизмом (или, в частности, параллелизмом множества объектов) вели- чину Кр>0,9. 3°. Коэффициент учитывает, как было сказано выше, влияние на эффективность системы аппаратуры последовательно-параллельной обработки. Если этой аппаратуры в системе нет, то Лц=1. При ее наличии всегда Лц>>1, но величина Лц существенно зависит от конкретных свойств задачи. Представим себе в качестве крайнего примера, что задача, ре- шаемая вычислительной системой, состоит в основном в суммирова- нии многомерных (r-мерных) векторов, умножении таких векторов на число и т. п. операций. Программа для обычной (однопроцессор- ной) машины при этом содержит короткие, но повторяющиеся много раз циклы. Например, для получения суммы r-мерных векторов Z = = X-j-Y программа (в терминах АЛГОЛ-60) выглядит следующим образом: ... for /: = 1 step 1 until 7? do 2[/]:=Х[/] + У[/]; .... Реализация этого цикла в программе на машинном языке имеет примерно следующий вид: — засылка единицы в индексный регистр (/; = 1); М: выполнение сложения очередных компонент векторов и запись результата в память (2[/]:=Х[/]-|-У [2]); — модификация индексного регистра (/:=/-Н); — вычитание R—/; — условная передача управления по алгебраическому знаку результата предыдущей операции )(если R— ^0, то к М9 если R—/<0, то на продолжение про- граммы) ; Мы не говорим здесь в точности об особенностях машинного языка, но ясно, что в любом случае количество полезных операций в цикле (сложение Х[/]+У[/]) в 2—3 раза меньше, чем количество служебных операций для организации цикла (модификация индекс- ного регистра, вычитание R—Ц условная передача управления). В n-процессорной системе с аналогичным машинным языком и без аппаратуры последовательно-параллель- ной обработки единственное отличие в программе на машинном языке состояло бы в том, что вместо опера- ции нужно было бы предусмотреть операцию 1: =/-|-д, потому что в каждом цикле одновременно бы 92
суммировалось п пар компонент. Такой цикл повторялся бы ]г/п[ раз — вместе со всеми своими полезными и слу- жебными операциями; иначе говоря, коэффициент Хц был бы равен 1 — как и должно быть при от- сутствии аппаратуры последовательно-параллельной об- работки. Если в n-процессорной системе предусмотрена аппа- ратура, описанная в п. 2.1.3, 4° (см. рис. 2.1.5), то про- грамма на машинном языке выглядит следующим об- разом: — засылка размерности векторов в регистр г; — выполнение сложения соответствующих компо- нент и запись результатов (2 [/] : =Х [/] + ......... ' «в»»» • ••••• Служебные операции в цикле здесь отсутствуют сов- сем, поэтому 3—4. Конечно, приведенный пример не очень реален. Для обычных задач Кц получается меньше чем 3—4, но до- стигает иногда величины 1,3—1,5. Можно, разумеется, возразить, что и в обычной (од- нопроцессорной) машине может быть предусмотрена аппаратура для автоматической реализации циклов — даже более простая, чем на рис. 2.1.5,— которая без спе- циальных инструкций производила бы в каждом цикле преобразование индексного регистра и проверку условия выхода из цикла. Понятны, однако, причины, по которым эту аппаратуру целесообразно применять именно в мно- гопроцессорных системах типа IV, где расчет идет на задачи, обладающие естественным параллелизмом с вы- соким рангом г и где одно устройство управления рабо- тает сразу с п арифметико-логическими процессорами. В обычной универсальной машине, рассчитанной на бо- лее широкий круг задач и содержащей одно устройство управления на одно арифметико-логическое устройство, такая аппаратура, как правило, отсутствует. 4°. Коэффициент Ко, учитывающий влияние на эф- фективность системы общих арифметико-логических цепей и локальных связей между процессорами, оценить в сколько-нибудь общем виде трудно. Если интегральные операции в задаче вообще отсут- ствуют или их мало, /Со=1 независимо от того, какие 93
общие арифметико-логические цепи предусмотрены в си- стеме. С этим случаем мы в основном имеем дело, когда речь идет о параллелизме множества объектов. Сравни- тельно редкие интегральные операции, которые встреча- ются в таких задачах, состоят, например, в том, чтобы одинаковым образом проверить некоторое отношение для каждого из объектов (например, проверить, больше ли определенный параметр, характеризующий данный объект, чем заданное — одинаковое для всех объектов— число), а затем определить, сколько имеется всего объектов (из г), удовлетворяющих указанному отноше- нию. Механизм размножения операндов (п. 2.1.3, 2°) и процессор переформирования массивов (2.1.3, 5°) в со- четании с обычными возможностями многопроцессорной системы типа IV обеспечивают достаточно эффективную реализацию подобных операций без каких-либо дополни- тельных усложнений системы. В общем случае при решении задач с естественным параллелизмом величина Ло существенно зависит от конкретных свойств задачи и возможностей общих ариф- метико-логических цепей и локальных связей, имеющих- ся в системе. В обычных ситуациях До ~ 0,5—1,5. 5°. В итоге проведенного выше рассмотрения мы ви« дим, что для многопроцессорных систем типа IV коэф- фициенты Др, Дц, Ко зависят от конкретных свойств за- дач и особенностей систем, но в первом приближении — особенно, если расхождение D не слишком велико — можно считать, что ДрДцДо~1. При этом эффективность многопроцессорной системы типа IV зависит главным образом от отношения ранга задачи г к количеству процессоров п — так, как об этом говорилось в п. 1° (см. также рис. 2.2.5). Если требо- вать, например, чтобы эффективность п-процессорной системы была порядка 0,8 или выше, то для решения с помощью этой системы должны отбираться задачи ранга г>(4—5)п. Чем меньше п, тем более универсаль- на система. Для задач с большим значением расхождения D (скажем, D&2-3), прежде чем ставить их решение с помощью многопроцессорной системы типа IV, жела- тельно проводить специальное рассмотрение вопроса о том, как справятся аппаратные средства системы с этим расхождением и не слишком ли низким окажется коэффициент Кр (см. п. 2°). 94
6°. Пользовательская эффективность конвейерной си- стемы типа IV — так же, как и эффективность многопро- цессорной системы типа IV — в основном зависйт от ве- личины отношения r/п, где г — ранг задачи, п — коли- чество ступеней в конвейерной системе. Ясно, что выполнение любой операции над г операн- дами или г парами операндов должно занять в п-сту- пенной конвейерной системе г+п—1 тактов. При этом 7-я ступень 2-я ступень 5-я ступень Ь-я ступень ® ® ® ® ® ® \®\® 1®\ ®\ ®\ ® 1 2 3 4 5 6 7 8 9 Такты (п) (г) (г+п-1) Рис. 2.2.6 1-я ступень занята полезными операциями в течение первых г тактов, а последние п—1 тактов простаивает; 2-я ступень работает от 2- до (г+1)-го тактов включи- тельно, 3-я — от 3- до (r-f-2) -го тактов, ..., n-я ступень — от п- до (г+«—1)-го тактов. (Для пояснения на рис. 2.2.6 показана временная диаграмма работы систе- мы для г=6, п=4, цифры в кружках обозначают номер обрабатываемого операнда или обрабатываемой пары операндов.) Таким образом, каждая ступень системы из общего количества г+«—1 тактов занята полезными операция- ми г тактов и простаивает п—1 тактов. В первом при- ближении поэтому можно считать, что пользовательская эффективность n-ступенной конвейерной системы типа IV при решении задачи ранга г есть р ~ г г/п П 1 п В отличие от приведенного в 1° аналогичного выра- жения для пользовательской производительности «-про- цессорной системы типа IV, здесь величина £п зависит не только от отношения r/п, но до некоторой степени 95
также от величины п. Однако эта зависимость сказыва- ется при малых количествах ступеней и; если п > 1, то Е - г/п п ~ (г/п) + 1 ’ Зависимости Еп от г/п для конвейерных систем ти- па IV для разных п представлены на рис. 2.2.7. На этом же рисунке показаны зависимости £п от п при некото- рых фиксированных г. Полное выражение для Еп должно включать также коэффициенты Кр, Ко, Кд, аналогичные введенным в п. Г для многопроцессорных систем типа IV: Г/П i Свойства задач, от которых зависят эти коэффициен- ты для конвейерных систем, те же, что и для многопро- цессорных систем, однако соответствующая аппаратура конвейерной системы выглядит иначе, чем в многопро- цессорной системе, и конкретные значения коэффициен- тов Кр, Кд, Ко могут получаться другими. Например, когда в n-процессорной системе встреча- ются расхождения в программах, т. е. требуется выпол- нение определенных операций под маской, то основные затруднения происходят фактически потому, что имею- щиеся в системе п процессоров обеспечиваются одно- временно п операндами за счет широкого формата обращения к памяти. При каждом обращении к памяти прочитывается одновременно п слов, расположенных в последовательных ячейках. Если переформирование массивов заранее не сделано, то части из этих п опе- рандов могут соответствовать единицы в маске, другой 95
пасти — нули. Соответственно при выполнении операции под маской часть процессоров будет простаивать. В конвейерной системе типа IV операнды читаются пз памяти по одному — в принципе тоже по последова- тельным адресам. Нетрудно, однако, предусмотреть схе- му просмотра маски «вперед». Если должна выполнять- ся операция под маской (скажем, прямой), то эта схема пропускает чтение тех операндов, для которых в маске содержатся нули, и сразу выбирает очередной операнд, для которого в маске содержится единица, обеспечивая одновременно соответствующую модификацию адреса. Таким образом, схема просмотра маски вперед заменяет процессор переформирования массивов (а схема провер- ки однородности выборки вообще становится ненуж- ной), причем ее работа практически не требует специ- ального времени. На самом деле, конечно, некоторое время для рабо- ты такой схемы требуется; но она может быть включена на правах дополнительной ступени конвейера, предше- ствующей ступени чтения очередного операнда. Может оказаться, что просмотреть маску вперед на произвольное количество разрядов (до г) трудно, и схема просматривает только группы из ограниченного количества разрядов маски (скажем, до 8 или до 16): тогда определенная вероятность пропуска тактов при выполнении операций под маской остается — тем мень- шая, чем больше разрядов маски просматривается одновременно. Аналогичным образом на правах дополнительных ступеней конвейера могут быть включены арифметико- логические цепи для реализации интегральных опе- раций. Что касается аппаратной реализации циклов (анало- гичной аппаратуре параллельно-последовательной обра- ботки в многопроцессорных системах), то она.заложена в самой идее построения конвейерной системы типа IV. В итоге оказывается, что произведение КрКцКо для конвейерных систем типа IV при прочих равных усло- виях несколько выше, чем для многопроцессорных си- стем этого типа. В то же время нетрудно заметить, что кривая Еъ=Еп(г[п) для конвейерной системы при п^>1 на рис. 2.2.7 является нижней огибающей кусочно- линейной функции, представляющей зависимость Еп от r/п для многопроцессорных систем (рис. 2.2.5). Поэтому 97 7-|0|3
с достаточной точностью можно считать, что зависимо- сти пользовательской эффективности Еи от отношения г/п для многопроцессорных и для конвейерных систем типа IV примерно одинаковы. 2.3. КОМБИНИРОВАННЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ 2.3.1. ЗАДАЧА ПОСТРОЕНИЯ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ С МАКСИМАЛЬНЫМ ПОЛЬЗОВАТЕЛЬСКИМ БЫСТРОДЕЙСТВИЕМ 1°. Пусть требуется создать вычислительную систему с максимально возможным пользовательским быстро- действием, предназначенную для решения особо крупных задач. Допустим, что соображения, связанные со стои- мостью, габаритами и т. п. характеристиками, не слиш- ком существенны. Тем не менее определенные критерии целесообразности должны быть соблюдены. Например, вряд ли целесообразно удваивать количество процессо- ров в многопроцессорной системе, если известно, что это приведет к увеличению пользовательского быстродейст- вия лишь на несколько процентов. Обобщенным крите- рием такой целесообразности, собственно, и является пользовательская эффективность вычислительной си- стемы. Особо крупные задачи, на которые мы здесь рассчи- тываем, обладают обычно в той или иной степени всеми видами параллелизма, о которых говорилось в § 1.2. Следовательно, в принципе можно было бы строить си- стему любого из рассмотренных выше типов. Однако рассмотрение, например графиков на рис. 2.2.2 показывает, что в общем случае (кроме спе- циальных задач) пользовательское быстродействие вы- числительной системы типа I или II при более или менее разумных значениях пользовательской эффективности может быть получено лишь в 4—4,5 раза выше, чем быстродействие обычной машины. Для этого п (коли- чество машин в многомашинном комплексе или процес- соров в многопроцессорной системе, или ступеней и со- ответственно устройств управления в конвейерной систе- ме типа II) должно быть порядка 6—10. Аналогичным образом рассмотрение рис. 2.2.3 пока- зывает, что при наиболее тщательной оптимизации про- грамм с целью выявления в них параллелизма смежных операций вычислительная система типа III может обес- 98
печйть лишь в 3—3,5 раза более высокое быстродейст- вие, чем обычная вычислительная машина. При этом ко- личество процессоров в ней п (или количество ступеней, если речь идет о конвейерной системе) должно быть порядка 4—6. Несколько более обнадеживающие результаты дает рассмотрение графиков пользовательской эффективно- сти для вычислительных систем типа IV, приведенных на рис. 2.2.5 и 2.2.7. Например, нетрудно видеть, что если бы ранг решаемых задач был не меньше 10, то, имея 10 процессоров в многопроцессорной системе ти- па IV (или соответственно 10 ступеней в конвейерной системе), можно было бы получить выигрыш в быстро- действии по сравнению с обычной машиной не менее чем в 5 раз — больше, чем можно получить от тех же 10 ма- шин (или процессоров, или ступеней конвейера) в вы- числительной системе типа I или II, и больше, чем можно получить от вычислительной системы типа III. Чем больше ранг естественного параллелизма, на который можно рассчитывать, тем больше можно при- нять величину п (число процессоров в многопроцессор- ной системе или ступеней в конвейерной системе *>) для вычислительной системы типа IV и тем больше получит- ся ее пользовательское быстродействие. Скажем, если бы можно было считать, что ранг естественного парал- лелизма будет порядка 100, то, приняв п=100, можно было бы получить увеличение пользовательского быст- родействия не менее, чем в 50 раз по сравнению с одно- процессорной машиной. Такого результата нельзя, оче- видно, достигнуть в вычислительных системах типа I, II или III. Вообще говоря, «особо крупные задачи», о которых здесь идет речь, во многих случаях как раз и являются особо крупными потому, что имеют высокий ранг есте- ственного параллелизма: они состоят, например, в инте- грировании дифференциальных уравнений в частных производных конечно-разностными методами, причем количество узлов решетки велико, в операциях над мат- рицами большого ранга, в обработке информации о боль- шом количестве более или менее однородных объектов и т. п. Тем не менее ясно, что чем меньше количество процессоров (ступеней конвейера) п в вычислительной *> См., однако, сноску на с. 66. 99
системе типа IV и чем меньше, следовательно, Может быть допустимый ранг естественного параллелизма г, тем шире круг задач, для решения которых можно бу- дет эффективно использовать такую систему. 2°. Построение комбинированных систем представ- ляет собой более универсальный путь создания вычис- лительных систем с максимальной пользовательской производительностью. Как видно из предыдущего, для вычислительных си- стем любого типа пользовательская эффективность Еп зависит от п (числа машин в многомашинном комплексе или процессоров в многопроцессорной системе, или сту- пеней конвейерной системы) Еп—Еп{п), причем в общем случае это функция убывающая. Неко- торым исключением являются многопроцессорные систе- мы типа IV, для которых при фиксированном г и при функция Еп(п) немонотонна (см. рис. 2.2.4 на с. 82); однако и здесь обнаруживается общая тенденция к уменьшению Еп с ростом п. Идея построения комбинированных систем состоит в том, что снижение пользовательской эффективности с увеличением п в системах типа I или II, III и IV про- исходит по разным причинам, хотя результаты, получа- ющиеся вследствие этих разных по существу факторов, могут быть похожими (ср., например, рис. 2.2.2, где по- казана зависимость Еп(«) для систем типа I или II, с аналогичными зависимостями для систем типа III на рис. 2.2.3 и для систем типа IV на рис. 2.2.4 и 2.2.7). Если задача, как мы предполагали в п. 1°, в той или иной мере обладает всеми видами параллелизма, то в построении вычислительной системы можно попытать- ся использовать их все. При этом использование одного вида параллелизма никак не сказывается (или, может быть, почти никак не сказывается) на возможностях использования других видов параллелизма. Скажем, в задаче на каждом этапе ее решения мож- но выделить несколько независимых ветвей, которые мо- гут исполняться одновременно. Каждая такая ветвь представляет собой часть общей задачи обработки ин- формации о некотором множестве объектов (либо, воз- можно, разные ветви задачи имеют дело с обработкой информации о разных множествах объектов, либо обла- 100
дают естественным параллелизмом в более общей фор- ме). Организовав одновременное исполнение нескольких независимых ветвей задачи, мы ничего не потеряем в возможности использовать при исполнении каждой ветви параллелизм множества объектов (либо естествен- ный параллелизм вообще) и можем получить таким образом дальнейшее увеличение пользовательского быст- родействия системы. Мы считаем также, что задача обладает параллелизмом смежных операций. Иначе го- воря, в программе обработки информации о каждом из объектов на всех ее этапах вслед за любой инструкцией с достаточной вероятностью имеется еще несколько инструкций, которые можно выполнить одновременно с данной. Ясно, что использование этой возможности для повышения пользовательской производительности систе- мы не зависит от того, выполняется ли одновременно несколько независимых ветвей программы и идет ли при исполнении каждой ветви обработка информации только об одном или одновременно о нескольких однородных объектах. 2.3.2. МНОГОПРОЦЕССОРНАЯ КОМБИНИРОВАННАЯ СИСТЕМА 1°. На рис. 2.3.1 показано одно из возможных по- строений комбинированной вычислительной системы, реализующей идею п. 2.3.1, 2° [11]. Основу системы составляют линии арифметико-логи- ческих процессоров (А), объединенных под общим управлением (У) и, более того, присоединенных к об- щему выходу устройства управления. Фактически каж- дая такая линия представляет собой многопроцессорную систему типа IV (ср. с рис. 2.1.4), ориентированную на использование естественного параллелизма или, в част- ности, параллелизма множества объектов; поэтому коли- чество процессоров в каждой линии мы обозначили через «4. Все процессоры одной линии в каждый момент времени выполняют одну и ту же операцию, но над раз- ными данными (скажем, относящимися к разным объектам). Каждое устройство управления на рис. 2.3.1 имеет, однако, несколько выходов, и к каждому из них при- соединена своя линия процессоров. В этой части рас- сматриваемое построение идентично построению много- 101
г—— I 2-я сВязка I_____ J rtj -я сВязка. Рис. 2.3.1 процессорной системы типа Ш (ср. с рис. 2.1.3), но к раздельным выходам устройства управления присо- единены не одиночные процессоры, а линии процессоров; соответственно количество линий, присоединенных к од- ному устройству управления, обозначено пз. Присоеди- нение к разным выходам устройства управления п3 линий процессоров ориентировано на использование па- раллелизма смежных операций. Разным линиям процес- соров устройство управления выдает либо последова- тельные инструкции из записанной обычным образом однолинейной программы (если в результате анализа, выполняемого устройством управления, выясняется, что 102
эти инструкции могут быть выполнены одновременно), либо различные компоненты вектора-инструкции (если выявление параллелизма смежных операций проведено на этапе программирования или трансляции программы на машинный язык системы) —ср. с п. 2.1.2. Далее «2 групп линий собраны над общей внутрен- ней памятью по типу многопроцессорной системы ти- па II. Сделано это в точности по аналогии с многопро- цессорной системой типа II, показанной на рис. 2.1.2 (с. 42) *). Несколько (tii) таких объединений, которые на рис. 2.3.1 названы связками, соединены между собой так же, как соединяются отдельные машины в многома- шинный комплекс (вычислительную систему типа I). На рисунке показано, что эти соединения выполнены по схе- ме канал — канал, т. е. так же, как на рис. 2.1.1,а, но их можно было бы выполнить и через общую внешнюю память — как на рис. 2.1.1,6. Фактически и объединение «г групп в одну связку, и объединение ni связок в один комплекс ориентированы на один и тот же вид параллелизма — параллелизм не- зависимых ветвей. Можно было бы не устраивать объединения связок, а вместо этого предусмотреть внут- ри одной (единственной) связки П2П1 групп, что дало бы, возможно, несколько более высокую пользовательскую эффективность (п. 2.2.2, 2°). Однако наличие в составе комплекса полностью функционально-законченных ча- стей, каковыми являются связки, создает определенные удобства в организации технического обслуживания вы- числительной системы (в частности, проведения профи- лактических или ремонтных работ на отдельных связках без вывода из строя всей системы), а также в организа- ции режима разделения оборудования [11]—когда необходимо получить не только максимальную пользова- тельскую производительность для особо крупных задач, но и удовлетворительную системную производительность для потока задач со случайными характеристиками. Функционально-законченная связка может являться удобным дискретом наращивания вычислительной си- стемы. ♦> На рис. 2.3.1 для простоты не показаны индивидуальные ЗУ, которые могут быть у отдельных процессоров, у линий процессоров и у групп линий. 103
Построение рис. 2.3.1 послужило в свое время про- образом структуры вычислительной машины М-10 [16]. 2°. Ясно, что для системы, изображенной на рис. 2.3.1, пользовательская эффективность равна Е™ (пх-п2-п3-п^ = Е^{пх.п2}Е^(п3)Е^{п4), где верхний индекс (к) означает, что речь идет об эф- фективности комбинированной системы, а верхние индек- сы (1, 2), (3), (4) относятся соответственно к вычислитель- ным системам типа I или II, типа III и типа IV. Произ- ведение пхп2п3п4 является общим количеством процессо- ров в системе. Нетрудно убедиться, что E^{n3njljlX> > Е^2)(пхп2п3п4\ Е^(пхп2п3п4)> Е™ (п3пгп,п4) и в об- щем случае, при некотором фиксированном и не очень боль- шом г (по сравнению с общим количеством процессоров), Е*к) (тг1я2я3п4)> Е^4) {пхп2п3п^. Реальное пользовательское быстродействие такой системы равно Sp(n)=-E''R) (пхп2п3п4) nxn2n3n4S (где S — быстродействие одиночного процессора) — больше, чем могло бы быть максимальное пользователь- ское быстродействие системы, построенной по одному какому-нибудь типу и ориентированной на одну какую- либо разновидность параллелизма. В приведенном выше выражении для Е*к) мы постави- ли знак приближенного равенства, потому что эффек- тивность соединения пг групп линий процессоров в одну связку и эффективность соединения «| связок в один ком- плекс несколько меньше, чем эффективность объедине- ния в многомашинный комплекс п\ обычных машин или объединение п2 отдельных процессоров в многопроцес- сорную систему типа II. Дело в том, что при определе- нии пользовательской эффективности вычислительных систем, типа I и II определенную роль играют соотноше- ния между длинами независимых ветвей и служебными потерями на обмен информацией, выработку и проверку условий запуска отдельных ветвей и т. п. (см., напри- мер, выражение для Еп на с. 68 в п. 2.2.2, 1°). Когда по образцу многопроцессорной системы типа II объединя- ются вместо отдельных процессоров группы линий про? 104
цессорой или по образцу вычислительной системы ти- па I объединяются вместо обычных машин мощные многопроцессорные подсистемы-связки, то длины неза- висимых ветвей при прочих равных условиях становятся меньше, а относительный вес служебных потерь време- ни — больше. 2.3.3. КОНВЕЙЕРНЫЕ И СМЕШАННЫЕ КОМБИНИРОВАННЫЕ СИСТЕМЫ 1°. Возможные построения комбинированных вычис- лительных систем весьма разнообразны. В отдельных случаях эффективность использования тех или иных ви- дов параллелизма может оказаться более высокой, чем в обычных системах — в отличие от случая, рассмотрен- ного в п. 2.3.2, 2°, где эффективность использования параллелизма независимых ветвей в комбинированной системе была несколько ниже, чем в обычной вычисли- тельной системе. Остановимся сначала на фрагменте структуры ком- бинированной системы, показанном на рис. 2.3.2. Кон- вейерная л-ступенная система, изображенная на этом рисунке, ориентирована на использование одновременно и естественного параллелиз- ма, и параллелизма смеж- ных операций (ср. с рис. 2.1.7 на с. 59 и 2.1.8) . Так же, как в конвейер- ной системе типа IV, в соста- ве устройства управления (У) имеется счетчик цик- лов (СчЦ), который сохра- няет в регистре инструкции (в данном случае—в РгИ<б) одну и ту же инструкцию У 1 Рги(1)\ Н | РгИ™\ \РгЦ™\ А I 7-я ступень к Г \ 2-я ступень р I у-яХ^Ъ^^ ф | | /7->7 I Рис. 2.3.2 в течение г тактов, где г — ранг естественного паралле- лизма. Однако регистр инструкции здесь не один, а п — по количеству ступеней конвейера: РгИ*1), РгИ(2), ... ..., РгИ(п) — как в конвейерной системе типа III. Если счетчик циклов в течение г тактов удерживает в Рг№> одну и ту же инструкцию, то во 2-м из них эта инструк- ция передается в РгИ(2), в 3-м — в РгИ(3) и т. д.; при г^п в конце концов оказывается, что во всех регистрах 105
Инструкции находится одна и та же инструкция й все ступени конвейера заняты выполнением одной и той же операции, но на разных этапах этой операции и над раз- ными данными. Рассматриваемая система при этом работает так же, как конвейерная система типа IV. По- скольку на отдельных этапах исполнения операции со- держимое счетчика цикла может использоваться для 1-я ступень___JGX ® „ ® t © ©I® ®„®.________________ 2-я ступень —I д ©Q___ J-я ступень___ 4-я ступень — ^~1 4 5 6 7 £ Л Такты (i-11-я операция 1 i-я операции '(i+D-я операция Рис. 2.3.3 модификации адреса обращения к памяти, то во всех ступенях устройства управления предусмотрены свои регистры РгЦ, в которых хранятся предыдущие состоя- ния счетчика циклов *>. Если бы мы имели дело с обычной конвейерной си- стемой типа IV, то выполнение каждой операции зани- мало бы г+п—1 тактов, из которых каждая ступень за- нята полезными операциями в течение г тактов и про- стаивает п—1 тактов. В рассматриваемой системе дело обстоит иначе. Через г тактов от начала некоторой (i-й) операции — сразу же после окончания исполнения ее в 1-й ступени конвейера — устройство управления запускает, если воз- можно, следующую ((Н-1)-ю) операцию, используя параллелизм смежных операций. При этом в 1-м такте исполнения (Н-1)-й инструк- ции эта инструкция попадает в РгИ(1) и одновременно обнуляется и начинает счет от начала счетчик циклов. *) В обычной конвейерной системе типа 1У (см. рис. 2.1.8) такие регистры не были нужны, поскольку счетчик циклов никогда не сбрасывался до окончания исполняемой операции над последними данными в последней ступени конвейера. Здесь же, как мы увидим, из дальнейшего, такие ситуации возможны. 106
В этом такте г последующих регистров инструкции РгИ (если г<п) хранят еще i-ю инструкцию, следующие за ними—(i—1)-ю, и т. д.; если г^п, то все последую- щие РгИ, начиная от РгИ(2) до РгИ(п), в 1-м такте исполнения (i-(-l)-ft инструкции хранят еще i-ю инструк- цию. Соответственно регистры РгЦ хранят предыдущие состояния счетчика циклов. В следующем такте (i-j-l)-H инструкция передвигается также в РгИ(2), а предыдущие инструкции сдвигаются ниже по цепочке РгИ, и т. д. 2°. Легко видеть, что эффективность использования параллелизма смежных операций в рассматриваемой системе намного выше, чем в обычной вычислительной системе типа III. Действительно. Рассмотрим временную диаграмму работы системы, приведенную на рис. 2.3.3. Как и вре- менная диаграмма для конвейерной системы типа IV на рис. 2.2.6 (с. 95), она построена в предположении г^п (на рисунке г=6, п=4). Видно,, что в том такте, когда 1-я ступень конвейера освобождается для начала исполнения (i+l)-ft операции (в первую очередь — над данными, относящимися к 1-му объекту из множества, или к 1-й компоненте r-мерных векторов, и т. п.), то i-я операция над данными, относящимися к 1-му объекту или к 1-й компоненте r-мерного вектора и т. п., уже завершена. К началу 2-го такта исполнения (i-|-l)-fi опе- рации при г^п наверняка завершена уже i-я операция над данными, относящимися ко 2-му объекту из обраба- тываемого множества объектов, и т. д. Ясно, что простои конвейера здесь возможны только в том случае, если i-я операция является интегральной (т. е. ее результат зависит от данных по всем объектам обрабатываемого множества или от всех компонент r-мерного вектора и т. п.) и при этом результат i-й опе- рации сразу же используется в (i-J-l)-A операции. Что касается всех предыдущих операций ((i—1)-й, (i—2)-й и т. д.), то они (при г^п) к началу (i-f-l)-fl операции завершены полностью. Вероятность использования ре- зультата i-й операции в (i-j-l)-ft мы назвали в свое вре- мя показателем связанности операций а. Обозначив до- полнительно вероятность наличия в программе инте- гральных операций через рв (разумеется, ри<1, а для многих задач ри^1), найдем, что вероятность простоя конвейера в построении рис. 2.3.2 равна рва. Длитель- ность простоя в этих случаях равна, очевидно, п—1 так- 107
там (до завершения t-й операции). Поэтому при г^п получим: Е<3-4» (п} =___г_______ п ' ' г + ряа(п— \) • где символом Е^~^ обозначена пользовательская эффек- тивность системы, сочетающей принципы построения кон- вейерных систем типа III и IV. Легко видеть, что Z*3-4’ (п) > (п) и Е^3-4’ (п) > Е^\п). Поскольку, как говорилось выше, а= 0,1—0, 5, то произведение /?иа< 1, а эффективность рассматриваемого построения получает- ся весьма высокой. 3°. Мы говорили о построении рис. 2.3.2 как о фраг- менте структуры вычислительной системы потому, что на самом деле это построение может входить в качест- ве составной части в вычислительные системы самых разнообразных конфигураций. Представим себе, например, что количество ступеней конвейера п велико, и для тех задач, которые предпола- гается решать с помощью системы, нельзя рассчитывать всегда на выполнение условия г^п. При г<п к началу (i-f-1) -й операции еще не будет выполнена t-я операция над данными, относящимися к 1-му объекту из обраба- тываемого множества (к 1-м компонентам обрабатывае- мых векторов и т. п.) и не будет полностью закончено выполнение (i—1)-й операции. При r<inl'l к началу (t-f-l)-fi операции не будут завершены i-, (i—1)- и (i—2)-я операции, и т. д. Разумеется, это приведет к снижению пользовательской эффективности. В этой ситуации выгодно предусмотреть, как это по- казано на рис. 2.3.4, несколько устройств управления, включенных через кольцевой коммутатор так, как это делается в конвейерных системах типа II (ср. с рис. 2.1.6 на с. 59). Количество устройств управления «2 здесь меньше количества ступеней п и является целым дели- телем п*>. Система рассчитана на выполнение одновре- менно «2 независимых ветвей. *) Последнее условие мы вводим только для простоты дальней- шего изложения. Фактически можно любое число ступеней п мыс- ленно дополнить до ближайшего кратного п2 несколькими фиктив- ными ступенями, после чего все излагаемое ниже остается в силе. 108
Каждое из устройств управления имеет свой узел формирования адреса очередной инструкции и первый регистр инструкции РгИ, свой счетчик циклов СчЦ (для реализации в выполняемой им ветви естественного па- раллелизма) и свои цепи, анализирующие возможность начать очередную операцию программы до полного окончания предыдущей операции (для реализации па- раллелизма смежных операций в выполняемой им ветви программы). Кроме того, в состав каждого устройства управления входят, может быть, автономные индексные и базовые регистры, цепи защиты памяти и т. п. Рис. 2.3.4 Когда некоторое устройство управления через коль- цевой коммутатор подсоединяется к 1-й ступени процес- сора, в общие управляющие цепи 1-й ступени Уд1’ пере-, даются содержимое РгИ и СчЦ данного устройства управления, причем СчЦ увеличивается на единицу (это происходит раз за п/п2 тактов). Однако во всех после- дующих ступенях процессора к общим управляющим цепям отнесены также регистры РгИ(/> и РгЦ(/), где /= =2, 3, ..., п; в конце каждого такта работы системы все РгИ(/) принимают содержимое РгИ(/-1), а все РгЦ</> — состояния РгЦ(/_*\ В результате оказывается, что в том такте, когда 1-е устройство управления под- 109
ключается к 1-й ступени управления, его инструкции на- ходятся также в РгИ(',,+ 1), РгИ12',,+1), .... Это могут быть такие же инструкции, как передавае- мая в 1-ю ступень (поскольку используется естественный параллелизм), а могут быть и предыдущие инструкции, проходившие через данное устройство управления (по- скольку оно использует параллелизм смежных опера- ций). В соответствующих регистрах РгЦ находятся пре- дыдущие состояния счетчика циклов 1-го устройства управления. Кольцевой коммутатор устроен так, что в каждом такте любое из п2 устройств управления подключается одновременно к п/п2 ступеням конвейера. Скажем, если 1-е устройство управления подключено к 1-й ступени, то в этом же такте оно подключено к (п2+1)-, (2п24-1)-, (Зпг+Ц-й, ... ступеням (как раз к тем, где в РгИ и РгЦ хранятся соответственно предыдущие инструкции и состояния счетчика циклов 1-го устройства управления), В следующем такте кольцевой коммутатор подключает 1-е устройство управления ко 2-, (пг+2)-, (2п2+2)-, (Зпг+2)-й, ... ступеням, а 2-е устройство управления подключается к 1-, (п2-|-1)-, (2п24-1)-, (Зм2+1)-й, ... ступеням. Затем 1-е устройство управления подключает- ся к 3-, (мг+З)-, (2п2+3)-, (Зп2+3)-й, ... ступеням, 2-е устройство управления — ко 2-, (п2-|-2)-, (2м2+2)-, (Зп24-2)-й, ... ступеням, а 3-е устройство управления — к 1-, (пг-1-1)-- (2п2+1)-, (Зп2+1)-й, ... ступеням, и т. д. В итоге получается, что система рис. 2.3.4 представ- ляет собой как бы П2 вложенных друг в друга и объеди- ненных по принципу конвейерной системы типа II по- строений рис. 2.3.2, каждое из п/п2 ступеней. Факти- чески комбинированная вычислительная система рис. 2.3.4 является конвейерным эквивалентом многопроцессорной связки рис. 2.3.1, которая также использует все три вида параллелизма. Пользовательская эффективность такой системы равна Е^(п) = Е^2>(п!)Е<п3~4) (п/пг). 4°. В п. 3° мы рассматривали случай, когда ранг естественного параллелизма г недостаточно велик по сравнению с количеством ступеней конвейера п. Может быть и обратное положение, когда для построения ИО
Рис. 2.3.8 рис. 2.3.2 r>n и возможности естественного паралле- лизма для повышения суммарного пользовательского быстродействия системы используются недостаточно. Если это так, то к одному устройству управления У, имеющемуся на рис. 2.3.2, можно присоединить несколь- ко (п<) одинаковых арифметико-логических процессоров конвейерного типа (А) — тоже таких же, как на рис. 2.3.2. Соответствующее построение показано на рис. 2.3.5. Главное отличие в работе устройства управ- ления в составе этого построения от работы аналогично- го устройства, изображенного на рис. 2.3.2, состоит 111
в том, что при использовании естественного параллелиз- ма счетчик циклов СчЦ в каждом такте добавляет вместо единицы величину п4— потому, что компоненты многомерных векторов или данные по разным объектам из множества и т. п. берутся в обработку не по одному, а группами по п4 последовательных компонентов, объек- тов и т. п. Если г не кратно п4, то в последнем такте операции может потребоваться, возможно, маскирование части арифметико-логических процессоров. Рис. 2.3.5 представляет фактически один из множест- ва возможных вариантов комбинированных вычисли- тельных систем, построенных по смешанному принципу, т. е. сочетающих — с целью достижения максимальной производительности — как конвейерную организацию, так и возможности объединения в одну систему несколь- ких процессоров. Одновременно с этим в смешанных си- стемах возможно и использование принципа объедине- ния в одну систему нескольких независимых машин ли- бо более сложных образований — подобно тому, как говорилось в 2.3.1 применительно к многопроцессорным комбинированным системам («связки» на рис. 2.3.1, с. 102). Например, несколько построений рис. 2.3.2, 2.3.5 или даже рис. 2.3.4 (если количество устройств управления п2 в этом построении не слишком велико) может быть объединено по типу многопроцессорной системы типа II, а несколько таких объединений — по типу многомашин- ного комплекса (вычислительной системы типа I). Ясно, что такие вычислительные системы ориентированы на использование всех видов параллелизма, которыми мо- жет обладать пользовательская задача. Рассмотреть все возможные построения смешанных систем не представляется возможным — слишком вели- ко количество различных вариантов. 2.4. ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ 2.4.1. О ПРОГРАММИРОВАНИИ ДЛЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ Г. Наиболее распространенные из современных язы- ков программирования создавались в период, когда основные вычислительные средства, выпускаемые про- мышленностью, представляли собой обычные однопро- цессорные машины; собственно, такое положение в зна- 112
чительной мере сохраняется и сейчас. Хотя создатели, например, языка АЛГОЛ-60 специально декларировали независимость языка от конкретных свойств той или иной вычислительной машины, все же при разработке языка они имели в виду, разумеется, обычную однопро- цессорную машину и соответственно последовательност- ные алгоритмы решения различных задач. Ясно, что эти языки не могут оказаться подходящими для описания параллельных вычислительных процессов. Наиболее радикальным решением при переходе к ис- пользованию вычислительных систем было бы создание принципиально новых языков программирования. Име- ются, однако, некоторые препятствия к тому, чтобы не- медленно идти по этому пути. Первое из них состоит в наличии в обращении боль- шого количества программ, написанных на современных языках. Если бы с порога было объявлено, что все эти программы не подходят для вычислительных систем, то это привело бы, прежде всего, к существенному сокра- щению возможных областей применения вычислитель- ных систем и как следствие — к замедлению развития собственно техники вычислительных систем. Положение усугубляется факторами субъективного и психологиче- ского характера, поскольку вместе со значительным фондом программ, написанных на современных языках, имеется и значительное количество пользователей и про- фессиональных программистов, изучивших и имеющих опыт работы с современными языками программиро- вания. Другое препятствие состоит в том, что разные вычис- лительные системы используют разные свойства задач для организации параллельных вычислений. Однако язык высокого уровня должен быть в достаточной мере независимым от конкретных свойств вычислительной си- стемы. Как частный случай весьма желательно, чтобы новый язык программирования, приспособленный специ- ально для описания параллельных вычислений, мог транслироваться и на обычную вычислительную машину и далее интерпретироваться в виде обычного последова- тельностного вычислительного процесса. Поэтому пере- ход от современных языков программирования к языкам, специально приспособленным для описания параллель- ных вычислительных процессов, можно представить себе в виде ряда последовательных этапов: 8—1013 ИЗ
1) введение в трансляторы с современных Языков специальных оптимизирующих блоков, выявляющих те свойства программы, которые могут быть использованы для организации параллельных вычислений, и соответст- вующим образом отражающих эти свойства в программе на машинном языке для конкретной вычислительной системы; 2) знание программистом устройства оптимизирую- щих блоков и использование этих знаний при составле- нии программы — с тем, чтобы после трансляции полу- чить наилучшую программу для системы; 3) введение в состав современных языков дополни- тельных средств для описания параллельных вычисли- тельных процессов; при этом транслятор для вычисли- тельной системы должен получать специальное указа- ние, использованы ли в данной конкретной программе дополнительные средства или транслятор должен орга- низовать по возможности параллельные вычисления с помощью собственных оптимизирующих блоков, а транслятор для обычной машины или для системы, не использующей соответствующий вид параллелизма, должен уметь игнорировать дополнительные описания либо формировать записанную с их использованием программу в виде последовательностной программы. В соответствии с этими этапами мы будем в даль- нейшем рассматривать применительно к различным ви- дам параллелизма следующие аспекты проблемы: — на какие особенности конкретной программы могли бы опереться оптимизирующие блоки транслято- ра с целью организации параллельных вычислений по программе, составленной на одном из современных (по- следовательностных) языков; — каким образом программист, работающий на со- временных языках программирования, может улучшить результаты работы транслятора, если ему заранее из- вестно, на какой вид параллелизма ориентирована вы- числительная система и как устроены оптимизирующие блоки транслятора; — какие дополнения целесообразно ввести в языки для описания параллельных вычислений, опирающихся на определенные виды параллелизма. Последнее имеет отношение, возможно, и к вопросу разработки принципиально новых языков. 114
Еще один аспект проблемы состоит в том, как по- строить трансляторы для вычислительных систем, чтобы в самом процессе трансляции наилучшим образом ис- пользовались возможности системы по организации па- раллельных операций. Но этого вопроса мы ниже не касаемся. 2°. Использование параллелизма смежных операций представляет собой, пожалуй, единственный случай при- менения вычислительной системы, когда практически не требуется никаких изменений или дополнений в совре- менных языках программирования. Как говорилось вы- ше, организация параллельных вычислений с использо- ванием этого вида параллелизма возлагается на блоки локальной оптимизации в составе транслятора либо да- же выполняется аппаратно, в ходе интерпретации про- граммы на машинном языке. Однако при составлении программы — даже на языке высокого уровня — программисту иногда полезно знать свойства системы, которую он предполагает использо- вать для решения задачи (количество параллельных процессоров или ступеней конвейера, ориентированных на параллелизм смежных операций), и свойства оптими- зирующих блоков ее транслятора или соответствующей аппаратуры. Предположим, например, что система позволяет выполнять па- раллельно до 4 независимых операций, а блоки локальной оптимиза- ции или аппаратура просматривают программы на глубину до 8 по- следовательных операций. Рассмотрим далее фрагмент программы, записанной, для приме- ра, на АЛГОЛ-60. 1: = 1+1; X[I]:=((X[I]+CONSl)/8)tI; SUMX: = SUMX+X[I]; J: = J+l; Y [ J]: = ((Y [ J] +CONS2) /2) f J; SUMY: = SUMY+Y[J]; K: = K+1; Z [K]: = ((Z [K]~CONS3) X2) f K; SUMZ: = SUMZ+Z[K]; L: = L+1; U[L]: =<( (U [L] — CONS4) X8) f L; SUMU: = SUMU+U[L]; 8е По
При указанных выше параметрах системы и блоков локальной оптимизации, как нетрудно видеть, такая программа загрузит систе- му далеко не оптимальным образом. В частности, на первом шаге просматривается возможность выполнения восьми операций: 1) 1+1; 2) X[I]+CONS1; 3) (X[I]+CONSl)/8; 4) ((X[I]+CONSl)/8)tI; 5) SUMX+X[I]; 6) J+l; 7) Y[J]+CONS2; 8) (Y[J]+CONS2)/2. Из них могут быть выполнены одновременно (на первом шаге) толь- ко две—1- и 6-я; для выполнения любой из остальных операций нужен результат предыдущей. На втором шаге просмотр дойдет, очевидно, до операции SUMY+Y[J] (ранее выполненные операции не учитываются), а вы- полнять можно будет опять только две операции: X[I]+CONS1 и Y[J]+CONS2. На третьем шаге просмотр дойдет до операции Z[K]—CONS3, а выполнять можно будет три операции: (Х[1] + +CONSl)/8, (Y[J]+CONS2)/2 и К+1, и т. д. Между тем очевидное изменение записи программы на исход- ном языке позволило бы получить полную загрузку системы (воз- можность одновременного выполнения 4 операций) на каждом шаге: begin I: = I+1; J:=J+1; К: = К+1; L: = L+1 end begin X[I]:=X[I]+CONS1; Y[J]: = Y[J] +CONS2; Z[K]:=Z[K]— CONS3; U[L]: = U[L]—CONS4 end begin X[I]: = X[I]/8; Y[J]:=Y[J]/2; Z[K]: = Z[K]X2; U[L}: = U[L] X8 end begin X[I]:=X[I]|I; Y[J]:=Y[J]fJ; Z[K]:=Z<[KHK; U[L]:=U[L]fL end begin SUMX: = SUMX+X[I]; SUMY: = SUMY+Y[J]; SUMZ: = SUMZ+Z[K]; SUMU: = SUMU+U[L] end. Дополнительные операторные скобки (begin—end) использованы здесь для того, чтобы выделить группы операций, выполняемых одновременно. В них заключено ровно по 4 операции; однако и при п<4 полезная загрузка системы при работе по указанной програм- ме была бы полной. Конечно, к рассмотренному примеру следует отно- ситься как к чисто иллюстративному. Введение допол- нительных операторных скобок для операторов, которые могут выполняться одновременно (неважно, сколько их — чем больше, тем лучше), разумеется, никак не ска- жется на работе транслятора для обычной вычислитель- 116
ной машины или для системы другой конфигурации; но и для системы, рассмотренной в примере конфигурации, не очень большое усложнение транслятора делает эти скобки излишними. Что касается сделанного в примере преобразования программы по существу (изменения по- рядка операций), то и его требовать от программиста в обычных условиях трудно, да и нет необходимости. Дело в том, что обычно глубина просмотра программы в процессе ее оптимизации в 3—4 раза превышает п— количество инструкций, которые могут выполняться одновременно (а не в 2 раза, как в рассмотренном при- мере). При этом пользовательская эффективность систе- мы и так получается достаточно хорошей. Для програм- миста же просмотр программы на (3—4)п операций вперед представляет собой слишком трудоемкую ра- боту. 3°. Использование естественного параллелизма или в частном случае параллелизма множества объектов в ситуации, когда программирование ведется на одном из современных языков, требует исследования в процес- се трансляции программных циклов и, если воз- можно, организации параллельного выполнения тех вы- числений, которые предполагалось вести циклически. Удобнее всего параллельное выполнение циклов организовать в том случае, когда список цикла задан в виде (обозначения АЛГОЛ-60): for I: =<начало>81ер 1 until <конец> do, где через I обозначена некоторая целочисленная пере- менная, используемая как индекс. Приращение, рав- ное 1, нам потребовалось для того, чтобы переменные с индексами, выбираемые для выполнения последова- тельных циклов, располагались в памяти по последова- тельным адресам. Однако, если бы в цикле переменные имели в качестве индексов выражения типа 21+1, 51—4, 1|2 и т. п., то эта закономерность была бы нарушена. Для того, чтобы последовательные циклы можно бы- ло выполнять параллельно, должен быть выдержан ряд ограничений. Например, в цикле вообще могут использоваться раз- ные переменные с индексом I либо зависящим от I — например, X[I], Y[I—1] и т. д. Однако, если одна и т а ж е переменная встречается внутри цикла с р а з н ы- м и индексными выражениями, зависящими от I, напри- мер, Y [I] и Y[I—1], то это допускается только при усло- 117
вии, что в цикле вообще нет оператора присваивания этой переменной либо что оператор присваивания рас- положен после операторов, в которых эта переменная используется с разными индексными выражениями. Иначе последовательные циклы оказались бы зависящи- ми друг от друга. При этом в случае, когда переменная с индексом, зависящим от I, впервые встречается в левой части оператора присваивания (и далее может встре- чаться в программе цикла обязательно с тем же индекс- ным выражением), важно, чтобы значение этого индекс- ного выражения было связано взаимно-однозначной зависимостью со значением I. В программе цикла могут встречаться также пере- менные без индексов или переменные с индексами, .не зависящими от I (т. е. не меняющимися от цикла к цик- лу). Для того чтобы циклы были независимы друг от друга, должно соблюдаться следующее правило: переменная без индекса (с индексом, не зависящим от I) в программе цикла либо должна встречаться сна- чала в левой части оператора присваивания (причем присваиваемое ей значение не должно зависеть от ее предыдущего значения), а дальше может встречаться уже в любых контекстах, либо эта переменная вообще не должна встречаться в левой части операторов при- сваивания. В первом случае мы имеем дело как бы с рабочими ячейками, которые при параллельном выполнении цик< лов могут быть назначены разными для разных циклов. Во втором случае речь идет как бы о константах, кото- рые при исполнении программы цикла используются во всех циклах одинаково и могут прочитываться из одной и той же ячейки для любого цикла (например, если речь идет о многопроцессорной системе типа IV, то через аппарат размножения операндов — ом. 2.1.3, 2°). Исключение может быть сделано для операторов, описывающих интегральные операции, которые интер- претируются общими арифметико-логическими цепями, если таковые имеются в составе вычислительной систе- мы (см. п. 2.1.3, 6°). Например, если общие арифмети- ко-логические цепи позволяют вычислить в качестве од- ной операции системы скалярное произведение векторов, то в программе цикла допустим оператор, скажем, сле- дующего вида: PROD : =PROD+X[I] XY[I];, 118
Ьде юдна и та же переменная без индекса (PROD) встре- чается и в левой, и в правой части оператора присваи- вания. Точно так же, если общие арифметико-логические цепи позволяют интерпретировать в качестве одной опе- рации отыскание 'минимального элемента в массиве, то в программе цикла допустим оператор, скажем, вида if Z [I] <MINZ then MINZ : =Z[I];, где переменная без индекса (MINZ) и используется при вычислении отношения и встречается в левой части опе- ратора присваивания. Имеется еще несколько столь же очевидных, правил, которые должны учитываться оптимизирующими блока- ми транслятора, организующими параллельное выпол- нение системой циклических вычислений. В общем правила, по которым транслятор с одного из современных языков программирования разворачива- ет циклические вычисления в параллельное выполнение циклов для вычислительной системы типа IV, сравни- тельно просты. Программист тоже может без труда по- нять и запомнить эти правила — с тем, чтобы при со- ставлении программы «помочь» транслятору организо- вать параллельные вычисления. При этом иногда желательно, чтобы программист учитывал еще некоторые дополнительные обстоятель- ства. Например, программу сложения матриц ||Z|| = ||X|I + I|Y|| можно записать двояко (в АЛГОЛ-60): for К: = 1 step 1 until LASTK do for I: = l step 1 until LASTI do Z[I, K]:=X[I, K]+Y[I, K]; либо for I: = l step 1 until LASTI do for K: = l step 1 until LASTK do Z[I, K]:=X[I, K] +Y[I, K];. В первом случае информацию в памяти системы типа IV желатель- но разместить в порядке возрастания I, а ранг задачи будет равен размерности матриц по X (т. е. величине LASTI), в другом же слу- чае информацию желательно разместить в порядке возрастания К, а ранг задачи будет равен размерности матриц по Y (т. е. LASTK). Поскольку пользовательская эффективность вычислительной си- стемы типа IV в общем случае тем больше, чем больше ранг зада- чи, а транслятор разворачивает в виде параллельных вычислений, как правило, внутренний цикл программы, то при наличии несколь- ких вложенных циклов желательно, чтобы внутренним был цикл, 119
йойТоряющийсй наибольшее количество раз. более Сложный трансля- тор мог бы учитывать это обстоятельство автоматически. С более общей точки зрения, однако, ясно, что ког- да программист расписывает в виде выполняемых по- следовательно циклов вычисления, которые заведомо можно выполнить параллельно (и, возможно, соблюдает определенные правила, чтобы транслятор сумел развер- нуть их в параллельные вычисления), а затем оптими- зирующие блоки транслятора превращают эту запись в программу параллельных вычислений, то по существу дважды делается ненужная работа. Значительно выгод- нее было бы дополнить исходный язык средствами для описания параллельных вычислений. Например, в АЛГОЛЕ-60 уже имеются средства для описания массивов. Массивы данных появляются в программах во многих слу- чаях тогда, когда программа обладает параллелизмом множества объектов. Остается только определить операции над массивами. Скажем, если считать, что сложение массивов одинаковых размер- ностей' и с одинаковыми границами состоит в сложении элементов этих массивов с одинаковыми индексами, то программу сложения двух матриц IIZ|| = ||X||+I|Y|| можно было бы записать в виде begin array X, Y, Z Г1 : LASTI, 1:LASTK1; Z: = X+Y end, где LASTI и LASTK — переменные, являющиеся для данного блока глобальными, либо фиксированные величины (числа). Наряду с обычными операциями над массивами желательно определить также операции выработки масок и операции под маска- ми (см. 2.1.3, 3°). Например, если MASK и COND — булевы масси- вы, X и Y — действительные массивы, имеют одинаковые размерно- сти и одинаково определенные границы, то оператор COND: = X>Y; означал бы, что каждому элементу массива COND присваивается значение true, если соответствующий элемент массива X больше или равен соответствующему элементу массива Y, и значение false в противном случае. Оператор MASK:=MASKACOND; означал бы присваивание каждому элементу массива MASK логиче- ского произведения его предыдущего значения на соответствующий элемент массива COND. Оператор X: = if MASK then X—Y; означал бы, что каждому элементу массива X при условии, что зна- чение соответствующего элемента массива MASK есть true, присваи- вается разность между предыдущим значением данного элемента массива X и значением соответствующего элемента массива Y. Те 120
элементы массива X, для которых соответствующие элементы масси- ва MASK имеют значение false, сохраняют предыдущее значение. Аналогично действительным, целым и булевым массивам могут быть определены такие объекты языка, как действительные, целые булевы векторы, матрицы и т. п., и операции над ними: Например, объекты языка: уес!ог<идентификатор>[<границы>] (или real vector), Integer vector < идентификатор >[<границы>], Boolean vector <идентификатор > [ < границы > ], matrix< идентификатор >'[< границы строки, границы столб- ца>] (или real matrix), integer matrix < идентификатор >([< границы строки, границы столб- ца>], Boolean matrix < идентификатор >'[< границы строки, границы столбца >] и т. д. Если Е, Н — векторы, А, В — матрицы, К — число, то дополни- тельными операциями могут быть, например, Е-Н — скалярное произведение векторов, Е\Н — векторное произведение, Е-К — умножение вектора на число (совпадает с умножением одномерного массива на число), Е-|-Н, Е—Н — сложение и вычитание векторов (совпадают со сложением и вычитанием одномерных массивов), А-Е — произведение матрицы на вектор, А-В — произведение матриц и т. д. Введение дополнительных объектов языка и дополнительных опе- раций не лишает язык его универсальности, делая одновременно за- пись программ на этом языке более компактной, а работу програм- миста более простой. Если транслятор переводит программу на язык обычной (однопроцессорной) машины или на язык вычислительной системы, не использующей естественный параллелизм (системы ти- па I, II или III), то операции над массивами, векторами, матрицами и т. п. должны разворачиваться им в циклические вычисления. Реа- лизовать такую возможность в трансляторе однопроцессорной маши- ны или вычислительной системы типа I, II или III несложно. Аналогичные во многом идеи высказывались также в [12—14]. 4°. Использование параллелизма независимых ветвей в программах, написанных на одном из современных языков программирования, связано с исследованием свойств отдельных разделов программы. В частности, если программа написана на АЛГОЛе-60, то опти- мизирующие блоки транслятора, имеющие целью выявить в програм- ме параллелизм независимых ветвей, должны были бы исследовать блоки оптимизируемой программы. При этом исследованию подле- жат такие пары блоков, из которых ни один не является подблоком другого. Два блока могут исполняться параллельно при условии, что в одном (любом) из них вообще не упоминаются те глобальные для обоих блоков переменные, которые упоминаются в левой части хотя бы одного оператора присваивания в другом блоке. Определенные тонкости связаны также с использованием процедур.
В общем правила, по которым оптимизирующие бло- ки транслятора могут выявить в программе параллелизм независимых ветвей и организовать на этой основе па- раллельные вычисления с помощью системы типа I или II, сформулировать не очень сложно. Возможно, что фор- мулировка этих правил окажется даже проще, чем фор- мулировка правил, по которым оптимизирующие блоки транслятора должны были бы исследовать программные циклы с целью выявления естественного параллелизма и организации параллельных ‘вычислений с помощью -си- стемы типа IV (ом. п. 3°). Однако характер работы, воз- лагаемой на транслятор в одном и в другом случае, су- щественно различен. Исследование программных циклов, выполняемое в интересах организации работы системы типа IV, представляет собой некоторым образом локальную зада- чу. Хотя оператор, выполняемый в цикле, может быть сам по себе очень длинным, а исследовать его придется весь целиком, исследование одного цикла ведется неза- висимо от исследования других циклов. Только если требуется высокая степень оптимизации программы и не предполагается требовать каких-либо специальных уси- лий от программиста, то транслятор должен, может быть, исследовать совместно вложенные циклы (см. с. 119). Исследование блоков программы (в АЛГОЛе-60 или подпрограмм в ФОРТРАНе) требует попарного сопо- ставления всех блоков одного уровня. По сути дела не обходимо производить перебор всех пар, потому что из возможности параллельного выполнения блоков А и В и блоков А и С не следует возможность параллельного выполнения блоков В и С. Скорее всего, когда речь идет о достаточно сложной программе — такой, для решения которой как раз и не- обходима вычислительная система с высокой пользова- тельской производительностью,—такая работа вряд ли может быть выполнена транслятором с приемлемым ка- чеством и приемлемой скоростью. Реально приходится рассчитывать главным образом на разметку программы программистом путем введения в нее операторов типа fork, joint и quitt, как об этом говорилось в п. 2.2.2,2°. Аналогичные средства для вы- деления независимых ветвей имеются в составе языка программирования PL/I. 122
Заметим еще, что дополнения к современным йзУкаМ программирования, о которых говорилось выше (п. 3°) в связи с использованием естественного параллелизма в вычислительных системах типа IV, вели в общем к упрощению труда программиста. Требование же о рас- становке специальных указателей для организации па- раллельных вычислений в вычислительной системе типа I или II, наоборот, создает излишнюю нагрузку для про- граммиста. В целом проблема программирования для вычислительных систем типа I и II выглядит существен- но более сложной, чем для систем типа IV. 2.4.2. ОБ ОСОБЕННОСТЯХ АППАРАТУРЫ До сих пор, говоря о структурах вычислительных си- стем, мы оставляли в стороне те особенности отдельных устройств, которые необходимы для использования их в составе системы. Дело выглядело таким образом, буд- то обычные устройства — такие же, -как применяются в составе однопроцессорных машин — просто объединя- ются в разных комбинациях в те или иные структуры вычислительных систем. Между тем некоторые требова- ния к свойствам применяемых устройств все же нужно предъявить, хотя, может быть, и не очень значительные. Об особенностях запоминающих устройств, применяе- мых в составе вычислительных систем, мы отчасти уже говорили в п. 2.1.2 и 2.1.3. Вопрос этот, так же как проб- лема организации связей в системе и некоторые другие, заслуживает отдельного тщательного рассмотрения (см., например, [11]). Однако в дальнейшем главное внимание уделяется наиболее сложной части проблемы — особенностям арифметико-логических устройств, на основе которых строятся вычислительные системы. По сути дела только вычислительные системы типа I, если они не используются в контуре управления в реаль- ном масштабе времени (об этом см. ниже), не предъяв- ляют никаких специальных требований к арифметико- логическим устройствам (да и вообще ко всем устройствам машин). Системы этого типа являются асинхронными: каждая машина работает в своем темпе, независимом от темпа других машин; это могут быть даже машины разных типов. Только в определенных точках вычислительного процесса, после окончания и 123
йеред началом Исполнения отдельных ветвей програм- мы, машины обмениваются между собой управляющими сигналами и организуют обмен информацией между со- бой. Даже в эти периоды времени, как правило, не тре- буется синхронизации работы машин между собой. Канал одной машины в соответствии с принятым интер- фейсом .входит в связь с каналам другой машины или устройством, являющимся частью общего поля внешней памяти, формирует запрос на передачу или на прием очередной порции информации, получает в ответ сигнал готовности, выдает или получает очередную порцию информации со своим сигналом сопровождения, форми- рует новый запрос, и т. д. Многопроцессорные вычислительные системы типа II являются обязательно системами синхронизированными, т. е. системами, работающими от единого тактового ге- нератора. Одна операция, например, в арифметико-логи- ческих устройствах (и вообще в процессорах) может в принципе выполняться за разное время, в зависимости от типа операции, от операндов, даже от свойств про- цессора, если процессоры не все одинаковы, но это вре- мя обязательно кратно длительности такта, единого для всех процессоров. Иначе обмен информацией процессо- ров между собой либо между процессорами и общей памятью требовал бы каждый раз затрат нескольких дополнительных тактов на синхронизацию и существен- но снижал бы общее быстродействие системы. Также синхронизированной может быть многопроцес- сорная система типа III, если ее работа построена по принципу опережающего анализа инструкций и передачи очередной инструкции, для которой выполняются усло- вия запуска, свободному процессору. Многопроцессорные системы типа III, работающие с векторами-инструкциями, а также многопроцессорные системы типа IV и конвейерные системы всех типов являются системами синхронными. Однако под этим общим термином объединяются несколько разные по жесткости требования, предъявляемые к устройствам системы в разных из указанных структур. Для многопроцессорных систем типа IV важно, что- бы любая операция выполнялась за некоторое фиксиро- ванное для данной операции время, не завися- щее от операндов, участвующих в ней. Ясно, что приме- нение, например, в арифметико-логических процессорах 124
такой системы методов ускорения операций, направлен- ных на минимизацию среднего для совокупности всех возможных операндов времени выполнения операции, бессмысленно. Длительность цикла работы системы, в котором п процессоров выполняют одну и ту же опе- рацию над разными операндами, все равно определялась бы длительностью работы того процессора, где операн- ды оказались наименее удачными в данной выборке из п. При этом аппаратура, затраченная на минимизацию среднего времени выполнения операции, фактически ока- залась бы бесполезной. В многопроцессорной системе типа III, работающей с вектором-инструкцией, желательно, чтобы длитель- ность выполнения операции не зависела не только от операндов, но и от типа операции, потому что цикл ра- боты системы и здесь подстраивается под наибольшее время работы любого из п процессоров, но теперь эти процессоры выполняют, может быть, разные операции. Возможен, конечно, вариант, в котором, например, дли- тельность умножения равна kyT, а длительность деле- ния— kRT, где Т — длительность всех других операций (логических, сложения, вычитания и т. п.), a ky и — целые числа. При этом вслед за вектором-инструкцией, в котором для некоторого процессора задана операция умножения или деления, должно следовать ky—1 или соответственно &д—1 векторов-инструкций, в которых для данного процессора не предусматривалось бы ника- ких новых операций. Однако такое решение существенно усложнило бы процесс оптимизации программы и при- вело бы к усложнению устройства управления. В частно- сти, устройство управления должно было бы уметь вы- бирать из памяти векторы-инструкции переменной дли- ны, помнить, какие процессоры заняты операциями, заданными в предыдущих циклах, раздавать в зависи- мости от этого компоненты вектора-инструкции процес- сорам в разном порядке (а не всегда первую компонен- ту 1-му процессору, вторую — 2-му и т. д.). Наконец, для конвейерных систем всех типов жела- тельно, чтобы не только длительность выполнения опе- рации не зависела от операндов и типа операции, но и чтобы длительности отдельных этапов, на которые раз- делены операции, были фиксированы. Возможны, конеч- но, построения конвейеров с переменным тактом, а так- же асинхронного типа [1]. Однако использование этих 125
возможностей связано в любом случае с непроизводи- тельными простоями аппаратуры системы. Таким образом, создание вычислительных систем во многих случаях требует разработки методов выполнения операций и соответственно арифметико-логических устройств, которые мы в дальнейшем будем называть синхронными, понимая под этим алгоритмы выполнения операций и структуры арифметико-логических устройств, рассчитанные на фиксированные (не зависящие от опе- рандов) длительности выполнения операций и на дости- жение минимальной длительности операции при любых операндах. Именно этой проблеме посвящены в основ- ном последующие разделы книги. В заключение обратим внимание на два важных обстоятельства. Большинство простейших (неускорен- ных) методов выполнения арифметических и логиче- ских операций являются в своей основе синхронными методами. Появление большого числа различных асин- хронных методов и структур является результатом со- знательных усилий разработчиков, предпринимавшихся в течение ряда лет для снижения среднего времени вы- полнения операций; иногда при этом достигалось и уменьшение максимального времени выполнения ариф- метической операции— соответствующего наименее бла- гоприятному сочетанию операндов — но не это считалось главным (см., например, [15]). Между тем при создании вычислительных систем мы, как правило, не можем удовлетвориться простейшими методами выполнения опе- раций, но должны искать такие синхронные методы и структуры, которые обеспечивали бы именно мини- мальные длительности операций при любых операн- дах. Из предыдущего видно, что в составе, например, многопроцессорной системы выгоднее иметь меньшее количество более сложных и более быстродействующих процессоров, чем большее количество простых, но более медленных процессоров. Равное номинальное быстродей- ствие, которое может быть получено в обоих случаях, при меньшем количестве процессоров соответствует большему реальному пользовательскому быстродей- ствию. Заметим еще, что область применения синхронных методов выполнения операций и соответствующих струк- тур арифметико-логических устройств не ограничивается лишь многопроцессорными системами типа III (с векто- 126
ром-инструкцией) и IV и конвейерными системами, но на самом деле намного шире. По сути дела в любом случае, когда вычислительная система или даже обыч- ная вычислительная машина используется для управле- ния .некоторым процессом, протекающим в реальном времени, и темп, в котором должна вестись обработка информации и выдача управляющих воздействий, за- дается извне, необходимо применять синхронные методы выполнения операций. В противном случае существенно затруднен даже процесс отладки и испытаний системы управления в целом, поскольку без специального иссле- дования нельзя выявить наихудшие комбинации исход- ных данных, при которых время работы вычислительных средств окажется максимальным. Перебор ситуаций, выбранных .на основе других соображений, не гаранти- рует от появления в реальных условиях сбоев, вызван- ных нехваткой времени на обработку информации и выработку управляющих сигналов. Альтернативой к использованию синхронных методов выполнения операций в этих случаях могло бы быть применение вычислительных средств с большим запасом быстродействия. Онако это связано, естественно, с боль- шими затратами. Во всяком случае аппаратура, приме- няемая в таких вычислительных средствах для уменьше- ния среднего времени выполнения операций, навер- няка оказалась бы избыточной. 3. БЫСТРОДЕЙСТВУЮЩИЕ синхронные СУММИРУЮЩИЕ УСТРОЙСТВА 3.1. СВЕРХПАРАЛЛЕЛЬНЫЕ СУММАТОРЫ Рассмотрение ускоренных синхронных сумматоров мы начнем с описания одного из самых быстрых (но и одного из самых громоздких) построений — сверхпарал- лельного сумматора (сумматор с параллельным пере- носом, сумматор с одновременным переносом, simulta- neous carry adder, carry look—ahead adder). Идея тако- го построения состоит в том, что сумматор разбивается на сравнительно короткие группы разрядов, которые объединяются в более крупные группы, те — в еще 137
ST“SS 36~SJO Зц-Sis S^-S2o $2Г32Ч 525~$28 s29~s33 5ЗЧ~53^ более крупные и т. д., причем в каждом разряде и в каждой группе разрядов производится выработка спе- циальных подготовительных функций, которые затем используются для организации ускоренного пробега пе- реносов вдоль всего сумматора. Самым существенным здесь является то, что эти подготовительные функции не зависят от значения сигнала переноса, поступающего в соответствующий разряд или группу разрядов. Поэто- му указанные функции можно вырабатывать одновре- менно. Две подготовительные функции, которые мы будем обозначать буквами D и R, являются соответственно функцией переноса, возникшего внутри разряда (группы разрядов), и функцией разрешения распространения пе- реноса через разряд (группу разрядов). На рис. 3.1.1 приведена структурная схема суммато- ра, являющегося первым из описанных в литературе сверхпараллельных сумматоров [1]. В каждом из разря- дов этого 53-разрядного сумматора вырабатываются по- разрядные подготовительные функции Di=atCi, Ri=aiCt-}-aiCi (3.1.1) (знаком «+» обозначается логическая функция ИЛИ). Здесь at, а — двоичные цифры слагаемых в i-м разряде (t=l, 2, ..., 53). Узлы выработки сигналов Di, Ri иа рисунке не показаны, 128
Рис. 3.1.1 И m И |и |и |и Д^Зб-ЗР Групповые сигналы D и R вырабатываются много- ярусными (в данном слу- чае 2-ярусными) схемами. В первом ярусе, как это вид- но из рисунка, вырабаты- ваются функции D и R для 4- и 5-разрядных групп, на которые разбит сумматор (количество разрядов ука- зано внутри прямоугольни- ков, изображающих схемы выработки сигналов D и /?). Групповые сигналы D и R формируются из соответст- вующих разрядных сигна- лов Di и Ri. Так, например, для 25—28 разрядов выра- батываются два сигнала: ^25-28 --^25 ^26^25 4“ ^27^26^25 4“ ^28^27^26^25’ ^25- 28 -^25^26^27^28* (3.1.2) (На рисунке оба эти сигнала для простоты обозначены одной стрелкой и надписью D, R25-28. В квадратных скобках на рисунке указаны действительные количества сигналов, изображенных одной стрелкой.) Принцип формирования групповых сигналов D и R ясно виден из соотношений (3.1.2). В группе возникает и выходит из нее перенос, если а) в старшем разряде D=l или б) в следующем разряде D=l, а через старший раз- ряд разрешено пройти переносу (7?=1), или в) в третьем слева разряде D—1 и при этом в каж- дом из двух старших разрядов /? = 1 и т. д.; через группу разрешается распространение переноса, если оно разрешено в каждом из «.разрядов группы. Сигналы D и R в группе, объединяющей несколько более «мелких» групп, формируются по такому же прин- ципу и по аналогичным формулам: если в предыдущем предложении под словом «группа» понимать группу, объединяющую «мелкие» группы, а под словом «разряд» понимать «мелкую» группу, то все предложение остается верным. 9—Ю13 129
Соотношения (3.1.1) и (3.1.2) подтверждают, что как поразрядные, так и групповые сигналы D и R не зави- сят от сигнала переноса, поступающего в данный раз- ряд или группу разрядов. Из рис. 3.1.1 видно, как группы разрядов объединя- ются в более крупные группы и как снова вырабатыва- ются функции D и R. Таким образом составляется мно- гоярусная (на рис. 3.1.1—двухъярусная) схема, в каж- дом из ярусов которой функции D и R формируются из аналогичных функций предыдущих ярусов. В схеме на рис. 3.1.1, например, ^16-33=^16-2о+^21-24/?16-2о+^25-28^21-24'^16-2о + 4^29-33^25-28^?21-24^? 16-20, ^16-33=^16-20^21-24^25 -28^29-33- Сигналы переносов и поразрядных сумм формируют- ся в схемах, которые можно считать отделенными от схем формирования сигналов D и R. Сигналы переноса ei вырабатываются как функции сигналов D и R, а так- же некоторых сигналов переноса более младших разря- дов. Сигнал в5з считается внешним. Сигналы сумм Si получаются из сигналов переносов и из сигналов D/, Ri, ал, а (на рисунке сигналы Ri, си, d не показаны, из сигналов d показаны только некоторые). Каждый пря- моугольник с горизонтальной стрелкой внутри изобра- жает схемы формирования нескольких сигналов пере- носа, которые вырабатываются одновременно. Нетрудно понять, что сигналы переноса формируются следующим образом: ^52 == ^53 + ^53^53» ^51 = ^5г|4“ ^53^52 4“ ^53^53^52» ^49 = 4“ ^51^50 4“ ^52^51^50 4“ ^53^52^51^50 4“ 4“ ^53^53^52^61^50* ^48 == ^49 4“ ^49^49» ^45 = ^46 4" ^47^46 4“ ^48^47^46 4" ^49^48^47^46 4" 4“е49^49^48^47^46^ ^44 ^46 “ 49 4“ ^49^45 - 49 * ^4 3 = ^44 4“ £\б - 4 9^44 4“ ^4^4 5 - 4^4* ’ 130
^21 - 4“ ^24^28^22 4" ^25 - 28^24^28^22 4“ “1“ ^29 - 38^25 - 28^24^28^22“|~ 38^29~ 83^25 - 2^24^28^22* eo — + ^2^i”b 4" DJ^RiRi-^-DiRiRiRtRri- 4- D, _ ^R6R4RtR2Rl"he 81^8 - 88^5^4^3^2^1- Сверхпараллельный сумматор может .не иметь цепи кольцевого переноса (рис. 3.1.1), но может, как это бу- дет показано ниже, и содержать ее. Общим признаком, объединяющим различные моди- фикации сверхпараллельных сумматоров, можно считать наличие многоярусных схем выработки функций D и R для групп разрядов. В сумматоре, показанном яа рис. 3.1.1, в одном и том же ярусе имеются пересекающиеся группы разрядов. Во втором ярусе таких групп четыре: разряды 6—33, 11—33, 16—33, 21—33. Любые две из них содержат некоторые «общие» разряды (например, разряды 11—33 для пер- вых двух групп). В то же время эти группы являются независимыми в том смысле, что их сигналы D и R вы- рабатываются раздельными схемами. Кроме того, сле- дует заметить, что в нижнем ярусе схем D, R после всех объединений осталось несколько групп (например, груп- пы 6—33, 36—39, 40—44, 45—49). Разряды 1—5, 34—35 вообще не вошли ни в какие группы (для этих разрядов не формируются групповые сигналы D, R). Наличие пересекающихся групп разрядов в одном ярусе и нескольких групп — в нижнем ярусе объедине- ния не является, вообще говоря, характерным для сверх- параллельных сумматоров. Часто встречаются структу- ры, в которых а) схемы формирования функций D и R, как и схемы формирования переносов, имеют многоярусную структу- ру; во всех ярусах разбиение на группы схем формиро- вания сигналов D, R совпадает с разбиением на груп- пы схем образования переносов; б) в любом ярусе нет пересекающихся групп; в) в нижнем ярусе схем формирования функций Z), R имеется только одна группа (охватывающая все раз- ряды); 9* 131
г) в каждом ярусе используется один коэффициент объединения: в первом ярусе разряды объединяются в группы по k\ разрядов, во втором ярусе объединяются по k2 групп первого яруса, в третьем ярусе — по k3 групп второго яруса и т. д.; часто бывает, что k[ = k2= ... — = k^ = k, где М — число ярусов; при этом разрядность сумматора, очевидно, равна kM\ д) в любом ярусе формирования сигналов £>, R или сигналов переноса все выходные сигналы вырабатыва- ются параллельно (одновременно). Рис. 3.1.2 В реальной аппаратуре встречаются, конечно, те или иные отклонения от этих правил. Например, в первом ярусе все группы, кроме одной, могут содержать по k\ разрядов, а одна группа — меньше чем k\ разрядов. На рис. 3.1.2 показана подробная схема сумматора, полностью соответствующего перечисленным правилам. Графическое изображение этого сумматора отличается от рис. 3.1.1 тем, что на рис. 3.1.2 схемы образования сигналов D, R в ярусах объединены с соответствующими схемами формирования переносов. При таком изображе- нии получается, что сначала сверху вниз распростра- няется процесс образования сигналов £>, /?, а затем сни- зу вверх — процесс формирования переносов. В этом трехъярусном сумматоре = k2 = k3=k = 3, М — 3. Раз- рядность сумматора равна kM=27. Сумматор состоит из узлов двух типов (/ и 2). Возможная реализация узла 1 показана на рис. 3.1.3, где знаком =1 обозначен эле- мент, реализующий функцию ИСКЛЮЧАЮЩЕЕ ИЛИ: 132
аёЦ-ас. На рис. 3.1.4 приведена схема узла 2, на которой разряды (группы), объединяемые данным узлом, прону- мерованы цифрами 1, 2, 3, возрастающими в сторону младших разрядов. При вычитании чисел с использова- нием обратного кода сигнал Р1-27 возникновения пере- носа внутри 27-разрядной группы является одновремен- но сигналом кольцевого переноса £27. В сумматоре без кольцевого переноса цепь D{_27—е27 следует разомкнуть. При этом Pi-27 может слу- жить сигналом переполне- ния сумматора. Чтобы оценить время работы сверхпараллельного Рис. 3.1.4 Рис. 3.1.3 сумматора, допустим, что время выработки каждого из поразрядных сигналов Di, Ri равно 1т, за такое же вре- мя, допустим, вырабатываются групповые сигналы D, R в каждом из М ярусов. Время выработки сигналов пере- носа eL в каждом ярусе пусть тоже будет равно 1т. На- конец, допустим, что сигналы si появляются через 2т после появления сигналов Тогда полное время рабо- ты /W-ярусного сверхпараллельного сумматора при нали- чии цепи кольцевого переноса равно Т=(2М+3)т (3.1.3) (1т тратится на выработку поразрядных сигналов Dir Ri, еще Л4т — на групповые сигналы D, /? в /И ярусах, Л1т — на сигналы переноса в Af ярусах и еще 2т — на выработку $/). При отсутствии цепи кольцевого переноса время работы сумматора уменьшается на 1т (так как выработка сигналов переноса начинается не после фор- мирования сигнала D в нижнем ярусе, а на 1т раньше— 133
После формирования сигналов Z), /? в предпоследнем ярусе). Если в каждом ярусе используется только один ко- эффициент объединения й, то, как уже отмечено, n=kM. Подставляя Af=logftn в (3.1.3), получаем: T=(21ogfen+3)T. Видно, что время работы сумматора Т при данном п (или максимальная разрядность и, достижимая при за- данном Т) сильно зависит от коэффициентов объедине- ния. При й=3 трехъярусный сумматор может содержать 33=27 разрядов и время его работы, если справедливы допущения, приведшие к формуле (3.1.3), равно 9т. При k=5 таким же быстродействием обладает уже сумматор с разрядностью п=53=125. Очевидно, что для достиже- ния высокого быстродействия следует увеличивать коэф- фициенты объединения. Однако при увеличении k растет а) максимальное количество входов в схеме И, б) максимальное количество входов в схеме ИЛИ, в) нагрузка на элементы. Существующие ограничения этих трех параметров приводят к тому, что на практике чаще всего в сверх- параллельных сумматорах используются коэффициенты объединения k—4 и k=5. Следует отметить одну особенность сверхпараллель- ных сумматоров с кольцевым переносом, которая хорошо видна, например, из рис. 3.1.2: схема, реализующая пере- носы, в действительности не является кольцевой, т. е. замкнутой в кольцо схемой. Поэтому в сверхпараллель- ных сумматорах с цепью кольцевого переноса нет опас- ности генерации сигналов в этой цепи. Еще одно общее замечание по структуре сверхпарал- лельного сумматора: из сказанного в этом разделе должно быть ясно, что функционирование сумматора не изменится, если разрядные сигналы Ri=aiCi-\-aiCi будут заменены более простыми сигналами аг-pG, что обычно и делается Используя обозначения формул (3.1.1), можно сказать, что в этих случаях вместо сигналов Ri используются сигналы Ri-^Di. ♦) В схеме на рис. 3.1.3 при этом ИСКЛЮЧАЮЩИЕ ИЛИ за- меняется простым ИЛИ, а сигнал s должен вырабатываться по формуле eD-\-eR-\-eRD, а не eR + eR. 134
Организацию ускорения переносов в сверхпараллель- ном сумматоре можно осуществлять при помощи не сиг- налов D и /?, а сигналов, реализующих другие подгото- вительные функции. Например, существуют серийно вы- пускаемые интегральные микросхемы двух типов, из которых можно, в частности, строить сверхпараллельные сумматоры с коэффициентами объединения k=4. Осо- бенность этих сумматоров состоит в том, что в любой группе вместо групповых сигналов £ = £14“£2^14“£з^2^14“£4^3|^2|^1, (индексы 1, 2, 3, 4 соответствуют четырем разрядам или четырем группам, входящим в данную группу; номера возрастают в сторону младших разрядов) вырабатыва- ются два других сигнала: 5 D=D 1 -р D% -\-D з -^-D 4, R -]-D=D i -^-D$R i -]-D^RiR 14“£4^?з^?2^ 14“ которые и используются для организации ускоренных переносов. Подробности структуры таких сумматоров будут рассмотрены в § 6.2. Более узкой группой сверхпараллельных сумматоров можно считать такие сумматоры, принцип действия ко- торых состоит в выработке сигналов D и R многоярус- ными схемами (что имело место и в рассмотренных схе- мах) и последующей одновременной выработке сигналов переноса для всех разрядов (вместо формирования пере- носов в многоярусных схемах). Будем называть такие построения сумматорами с одновременным переносом. По существу в первой публикации по сверхпараллель- ным сумматорам была приведена схема с одновремен- ным переносом — см. рис. 3.1.1. Если сигналы в49 и е*з обозначить как D50-53 и £34-53, то станет ясно, что любой из сигналов ei вырабатывается прямо из сигналов R и D. Еще яснее отличие сумматоров с одновременным переносом от обычных сверхпараллельных сумматоров видно из сопоставления сумматора, показанного на рис. 3.1.2, с изображенным на рис. 3.1.5 аналогичным сумматором с одновременным переносом (показан сум- матор без кольцевого переноса). Из рис. 3.1.5 видно, что 135
; 1-9 10-12 12-15 15-18 19-21 22 25 £4 25 26 27 s1~s3 S^-Ss S7-Sg S1Q-S12 Sjj-Sis Sjg-Sjg Sjg-Szi 5гг~ Зщ $г$-5г7 Рис. 3.1.5 сигналы D, R вырабатываются так же, как и в схеме на рис. 3.1.2. Что касается сигналов et, то они вырабаты- ваются в узлах, изображенных в виде прямоугольников (со стрелками, непосредственно из сигналов D, R. На- пример, сигналы е\—е$ вырабатываются следующим об- разом: 8 = ^4 - в 4“ ^7 - 9^4 - 6 4“ 1 0 - 1 8^7 - Л - 6 + 4~” ^19 - 27^10- 18^7 ~ 9^4-6’ е2 — D* 4“ ^4 - 6^з4“^7 - 9^4 - 6^3 “F - 1 8^7 - Л - 6^3 4" 4" ^19“ 27^10- 18^7 - 9^4- 6^3» е. = D2 + d3r2 4- d4 _ 6r3r2 + о7 _ Л _ 3r3r2 4- 4“ ^10-18^7- 9^4- 6^3^24“^1 9-27^10 - 18^7-9^4-6^3^2- (На рис. 3.1.5, как и на рис. 3.1.1, сигналы Ri, Di, щ, Сг на входах узлов, вырабатывающих сигналы е, и Si, не показаны.) Видно, что дополнительное увеличение скорости (бла- годаря отсутствию многоярусных схем выработки пере- носов дается в последней схеме ценой нарастающей справа налеро сложности схем выработки переносов и 136
ценой повышенных требований к нагруЗо^нЫМ способно- стям групповых -сигналов D, R. Структуру сверхпараллельного сумматора можно условно считать исходной для многих разновидностей ускоренных сумматоров. Рассмотрим кратко /несколько возможных изменений, приводящих к другим построе- ниям. Некоторые из этих построений хорошо известны. Рассмотрение будем иллюстрировать упрощенными блок- схемами сумматоров (рис. 3.1.6). Характер упрощений: виден из сравнения изображений сверхпараллельного сумматора на рис. 3.1.2 и 3.1.6,а. 1°. Если разрядность сумматора невелика по сравне- нию с возможностями, которыми обладает используе- мая система элементов, то можно построить весь сумма- тор как одну группу сверхпараллельного сумматора, (рис. 3.1.6,б). Такое построение называется параллельно- параллельной логикой [2]. Принимая уже сделанные допущения о скоростях работы элементов, можно ска- зать, что в параллельно-параллельном сумматоре 1т тратится на выработку разрядных сигналов Di, Ri, еще 1т — на одновременную выработку всех сигналов пере- носа (как при наличии, так и при отсутствии цепи коль-. 137’
цевого переноса) и еще 2т—на выработку сигналов суммы. Следовательно, Т=4т. Подробнее параллельно-параллельные сумматоры рас- смотрены в § 3.2. 2°. Вторая разновидность сверхпараллельного сумма- тора мало отличается от основной схемы. Единственное ютличие состоит в том (рис. 3.1.6,в), что внутри каждой группы первого яруса все разрядные сигналы переноса вырабатываются не одновременно за 1т после поступле- ния сигнала переноса в младший разряд группы, а по- следовательно, как в обычном неускоренно-м сумматоре, т. е. схемы выработки переносов в/ внутри группы, содер- жащей k разрядов, теперь описываются не соотноше- ниями ek-\=^k~\~ ek^k> ek-* = Dk-\ ~\~DkRk_i ekRkRk_^ el—D2-\-DlR2-[-D^RiR2-[-... 4"••• ... R2 -|” ek^k^k -1 ••• j (3.1.4) а соотношениями в/=^ж4“£ж^?ж (i=k—1, k—2, ..., 1) (разряды в группе пронумерованы от 1 до k в сторону младших разрядов). Этим достигается существенная экономия аппаратуры. Что касается времени суммирова- ния, то оно, естественно, увеличивается и становится равным Г=((2Л4+3) — 1 + (й— 1))т=(2М+Н-1)т, где (2Л44-3)т —время суммирования в исходной схе- ме— см. (3.1.3); (k—1)т—максимальное время рас- пространения переноса в группе первого яруса (считает- ся, что k — это разрядность каждой группы). Таким образом, потери времени по сравнению с ис- ходной схемой составляют (k—2)т, что при k=4—5 рав- но всего лишь (2—3)т. 3°. Третья разновидность (рис. 3.1.6,г) сильно отли- чается от основной схемы. Это — одноярусная структура. Можно сказать, что эта разновидность получается путем последовательного соединения групп первого яруса азе
сверхпараллельного сумматора. Группы могут иметь, вообще говоря, разные длины. Пусть т — число групп, ki — разрядность i-й группы (г=1, 2, ..., т). При этом число разрядов в сумматоре равно т ki- (=1 В частности, при 61=Л2= . •. =>km—k n=mk. Переносы внутри каждой fe-разрядной группы выра- батываются так же, как в сверхпараллельном суммато- ре, т. е. по формулам (3.1.4). Групповые сигналы D, R не вырабатываются. Вместо этого в каждой группе фор- мируется сигнал группового переноса, выходящего из данной группы и поступающего в следующую группу: eo=D\-]-D^Ri-\-D^R2Ri~[~ ••• ~{~DkRk-\Rk-2 ... Ri~\~^kRkRk-i ... Ri (3.1.5) (здесь тоже разряды группы пронумерованы от 1 до /г; номера возрастают от старших разрядов к младшим). Полагая, что во формируется из ел за время, равное 1т, можно определить Т: Т= (т+4)т в сумматоре с кольцевым переносом и Т=(щ-|-3)т в сумматоре без кольцевого переноса. В первом случае 1т тратится на выработку разрядных сигналов Di, Ri, еще mr — на поочередную выработку в m группах сиг- налов переноса, выходящих из этих групп (рассматри- вается самый «тяжелый» случай, когда перенос, возник- нув в одной из групп, обегает по кольцу весь сумматор и возвращается в ту группу, где он возник), 1т уходит <на формирование переносов внутри группы, в которую поступает последний из групповых переносов, и, нако- нец, 2т тратится на выработку сигналов суммы в этой группе. При отсутствии цепи кольцевого переноса сла- гаемое m в сумме (1-f-2)r меняется на пг—1, по- этому 7’=(/и-|-3)т. 4°. Четвертая разновидность (рис. 3.1.6,д) получается путем упрощения предыдущей схемы: внутри каждой 1??
группы одновременная выработка переносов заменяется последовательной; перенос из группы остается ускорен- ным. Если все группы имеют одинаковую длину й, то n=mk, где т — число групп. Время работы такого сум- матора с кольцевым переносом следует считать равным T=(/n+^+2)r. Это время соответствует самому «тяжелому» случаю, когда перенос возникает в старшем разряде некоторой группы (в этом разряде а=с=1), проходит сквозь все остальные группы (в каждом разряде этих групп аУ=с), поступает в младший разряд той группы, где возник перенос, и проходит сквозь k—1 младших разрядов этой группы (в них тоже а=£с). При такой ситуации 1т тра- тится на выработку сигналов Di, Ri, еще тх уходит на поочередное формирование ускоренных переносов, выхо- дящих из т последовательно соединенных групп, (k—1)т требуется на распространение переносов через k—1 раз- ряд указанной группы и, наконец, 2т нужно на выработ- ку последнего (по времени появления) сигнала суммы. Итого, 1 -\-nz-\-k— 1 -|-2 = m-\-k + 2. Если цепь кольцевого переноса отсутствует, то в са- мом «тяжелом» случае перенос возникает в младшей группе и заканчивается в старшей. При этом Т=(1+/и—1+й—1+2)т=(т+^+1)т. (3.1.6) В табл. 3.1.1 приведены величины Тип, соответ- ствующие некоторым значениям т и k. В каждой клет- ке таблицы над наклонной чертой указано Т (единица Таблица 3.1.1 т 2 3 1 4 1 1 5 6 1 7 2 5/4 6/6 1 7/8 | | 8/10 9/12 | 10/14 3 6/6 7/9 | 8/12 | 9/15 10/18 | 11/21 4 7/8 8/12 9/16 | 10/20 11/24 | 12/28 5 8/10 9/15 10/20 | 11/25 12/30 | 13/35 6 9/12 10/18 11/24 12/30 13/36 | 14/42 ’ 7 10/14 И/21 | 12 28 13/35 14/42 | 15/49 140
измерения—Vr), под чертой — п. Таблица составлена для сумматорХбез кольцевого переноса. В § 3.7 будет показано, что если в сумматоре этого типа длины групп не обязательно одинаковы, а могут быть разными и выбираются оптимальным образом, то можно достичь гораздо большего п при заданном Т (или меньшего Т при заданном п). Отдельные группы сумматоров только что рассмот- ренного типа (рис. 3.1.6,(9) тоже выпускаются в виде интегральных схем. Таковы, например, микросхемы С794008 и С794008А фирмы RCA [3]. В этих схемах k=4. 5°. Последняя из рассматриваемых в этом разделе разновидностей ускоренных сумматоров, родственных сверхпараллельному сумматору, получается путем неко- торого упрощения и изменения предыдущей схемы. Из- менение состоит в том (рис. 3.1.6,ё), что схема ускорен- ного группового переноса из ^-разрядной группы стро- ится не по соотношению (3.1.5), а по формуле eo=D\-\-e\R\-\-ekRkRk-i ••• т. е. на выходе группы схемой ИЛИ складывается не- ускоренный перенос и ускоренный «обходный» перенос CkRkRk-i ... Построения такого типа назы- ваются сумматорами с обходным переносом (сумматоры с упреждающим переносом, carry skip adders). Эти сум- маторы применяются достаточно часто, так как при не- больших дополнительных затратах аппаратуры обеспечи- вают сравнительно высокое быстродействие., В § 3.3 будут подробнее описаны структуры сумматоров с об- ходными переносами, в том числе и оптимальные струк- туры, т. е. построения, позволяющие достичь максималь- ного быстродействия при заданной разрядности (или максимальной, разрядности при заданном быстродей- ствии). В частном случае, когда n-разрядный сумматор со- стоит из m одинаковых ^-разрядных групп, время сум- мирования двух чисел равно T=(m-\-2k— 1)т (3.1.7) как при наличии, так и при отсутствии цепи кольцевого переноса. Формула (3.1.7) соответствует самому «тяже- лому» случаю, когда перенос возникает в младшем раз- ряде младшей группы, проходит поочередно сквозь, все U1
разряды этой группы, «а что тратится kx, затем «пере- прыгивает» т—2 группы (на это требуется еще (т—2)т), поступает на вход старшей группы, поочеред- но проходит сквозь k— 1 младших разрядов этой группы (на это тратится (k—1)т) и, наконец, за 2т вырабаты- вается сигнал суммы в старшем разряде сумматора. Итого, k—\-tn—2-k— 1 -2=т —|—2k— 1. Можно заметить, что в сумматорах, показанных на рис. 3.1.6,г—е, при наличии цепи кольцевого переноса возможна паразитная генерация сигналов в этой цепи. Генерация может возникнуть, если в каждом разряде ае=£ Ci и если, кроме того, по некоторой причине хотя бы в одном из разрядов хотя бы на короткое время выра- ботается сигнал е=1. Подробнее с этим вопросом можно познакомиться, например, в работе [4]. Можно заметить, что в разных частях сумматоров, показанных на рис. 3.1.6, в различных комбинациях используются три способа организации переноса: а) последовательные переносы (внутри групп перво- го яруса на рис, 3.16,в, внутри групп на рис. 3.1.6,д, е, между группами на рис. 3.1.6,г—е); б) параллельные (одновременные) переносы (в каж- дом ярусе на рис. 3.1.6,а, внутри групп на рис. 3.1.6,б, г, переносы на входах групп в каждом ярусе на рис. 3.1.6,в); в) обходные переносы — логическое сложение уско- ренного и неускоренного переносов (переносы из групп на рис. 3.1.6,е). Существуют и многие другие построения сумматоров, в которых эти три способа применяются в иных комбина- циях [5]. Известны также различные типы ускоренных син- хронных сумматоров, построенных на совершенно иных принципах. Некоторые из них рассмотрены в § 3.4—3.6. 3.2. ПАРАЛЛЕЛЬНО-ПАРАЛЛЕЛЬНЫЕ СУММАТОРЫ Параллельно-параллельные сумматоры [2] следует считать частным и предельным случаем сумматоров с одновременным переносом. В этом построении все п разрядов сумматора рассматриваются как одна группа первого яруса (рис. 3.1.6,б). 142
Если сумматор не имеет цепи кольцевого переноса* то сигнал переноса в каждый из разрядов формируется отдельной схемой, анализирующей поразрядные функции Dif Ri всех разрядов, более младших, чем данный, а так- же сигнал переноса еп в самый младший разряд сумматора. Схема строится в соответствии с уравне- нием ei=Di+i-]-Di+2Ri+\-}~Di+3Ri+2^i+i-\- ... 4" ~\~DnRn—\Rn—2 • . . Ri+r}~ertRnRn-4 . *. Ri+l> где Di=aiCi, Ri=aiCi-}-diCi или Ri=ai-\-Ci. Если сумматор содержит цепь кольцевого переноса, то сигнал переноса в любой i-й разряд (/=1, 2, ..п) вырабатывается на основе анализа всех разрядных сиг- налов D, R: ... + -{-DnRn_iRn_2 ... Ri+r]-DiRnRn-i ... Ri+i4“ -\-D2R1RriRn-l ... ••• ... ... R\RnRn—1 ... Ri+\> Сигналы переносов во всех разрядах в параллельно- параллельном сумматоре 'вырабатываются практически одновременно. Параллельно-параллельная схема может быть ис- пользована тогда, когда применяются логические эле- менты с достаточно большим числом входов и достаточ- но большой нагрузочной способностью. Так, в [2] парал- лельно-параллельная логика описана применительно к модифицированным схемам NOR (ИЛИ—НЕ), имею- щим до 25 входов и выдерживающим до 25 нагрузок. Параллельно-параллельным можно также считать сумматор, в котором все сигналы переноса вырабатыва- ются одновременно независимыми схемами не при помо- щи сигналов Ri, Di или каких-либо других вспомогатель- ных сигналов, а прямо из входных сигналов сумматора. Например, в сумматоре без кольцевого переноса можно вырабатывать сигналы переноса непосредственно по фор- мулам: - 1 = ^псп 4" &п - 2 :== - Sn - 1 + ^nPfffln - 1 + - 1) 4" 4“ &n 4” - 1 4“ Сп - 1)* 143
&п- з ап - - 2 + - \^п - 1 (Р'П - 2 4” - г) 4" ^rfini^n - 14“ 4" Сп - 1) (&п - г4” - г) 4“ (^n4~ ^п) (&п - 14"^л -1) п - г4“ - г) Конечно, в этом случае должны использоваться (при прочих равных условиях, т. е. при той же разрядности) элементы с еще большими возможностями. 3.3. СУММАТОРЫ С ОБХОДНЫМИ ПЕРЕНОСАМИ Принцип обходного переноса (упреждающий перенос, carry skip, carry bypass, carry bridging, anticipatory car- ry, carry look-ahead) предлагался еще Ч. Бэбиджем [6] для десятичной системы и был развит для двоичной си- 144
стемы Многими авторами [7—10]. При использовании этого метода ускорения параллельный сумматор разби- вается на последовательно соединенные группы разря- дов, которые охватываются цепями ускоренных обход- ных переносов. Выход цепи обходного переноса при по- мощи схемы ИЛИ объединяется с выходом цепи неускоренного переноса из соответствующего разряда сумматора. Эффект ускорения в группе, охваченной цепью обходного переноса, достигается только в том случае, если на вход младше- ,-------у, го разряда группы поступает _ г i I I L |—[~'| I I перенос, а в каждом из раз- । ‘ III—I—LJ—Г"^ рядов соблюдается условие разрешения распростране- Рис* 33,2 ния переноса, т. е. условие a^Ci (или условие at \/ g=1). Простейшая схема об- ходного переноса для одной четырехразрядной группы показана на рис. 3.3.1. Более сложная «двухслойная» группа показана в упрощенном виде на рис. 3.3.2. Вид- но, что в сумматорах с многослойными обходными пере- носами в одной схеме ИЛИ неускореннцй перенос может объединяться с несколькими обходными переносами. Из приведенных рисунков видно, что характерной чертой схем обходного переноса является выработка и использование в них групповых сигналов типа R (сигна« лы разрешения распространения переноса); сигналы ти- па D в этих построениях не используются. Другой харак- терной чертой таких схем является суммирование схемой ИЛИ сигналов ускоренного и неускоренного переноса. Последнее обстоятельство накладывает некоторые ограничения на характер управления сумматором при использовании потенциальной системы элементов. Про- цесс суммирования должен быть организован таким образом, чтобы не могли возникать переключения сигна- лов переноса с уровня 1 на уровень 0, так как в таких случаях неускоренный перенос, равный единице, пройдя сквозь схему ИЛИ, в которой он логически складывает- ся с обходным переносом, фактически блокирует дейст- вие обходного переноса. Иными словами, в сумматоре с обходными переносами обеспечивается ускорение рас- пространения сигналов переноса, переключающихся с уровня 0 на уровень 1 («пробег единицы»), а при об- ратных переключениях («пробег нуля») ускорения нет. 10—1013 145
Защитой от этого явления может, например, слу- жить предварительная установка в нулевое состояние всех входов сумматора перед началом суммирования. 3.3.1. ОПТИМАЛЬНЫЕ СТРУКТУРЫ СУММАТОРОВ С ОБХОДНЫМИ ПЕРЕНОСАМИ От способа разбиения на группы'сумматора с обход- ными переносами зависят аппаратные затраты и быстро- действие сумматора. Естественно, возникает задача оптимизации структуры. Оптимальность можно оценивать с точки зрения того или иного критерия. В этом разделе критерием опти- мальности будет служить быстродействие (будем стре- миться к обеспечению минимального значения макси- мального времени Т распространения переноса при за- данной разрядности п сумматора). 1°. Рассмотрим вначале задачу оптимизации струк- туры сумматора с группами равной длины [8]. Обозна- чим длину группы буквой k, а количество групп — бук- вой т, так что n=mk. За единицу времени примем вре- мя прохождения сигнала через две последовательно со- единенные схемы И, ИЛИ. Очевидно, что наихудшим случаем (время распро- странения переноса максимально) для сумматора без кольцевого переноса является случай, когда распростра- нение переноса начинается в младшем, n-м, разряде сум- матора, а заканчивается в старшем: = Сп = 1» ai=^ci (i = 2, 3, ..., п — 1), ^ = c. = 0. В этом случае время распространения переноса равно T=k+ (m—2) 4- (k— 1) =2k+m—3 (3.3.1) (k — время выработки и распространения переноса в младшей группе, m—2 —время прохода по цепям об- ходного переноса, k—1—время распространения перено- са в старшей группе) *\ Отсчет времени начинается *) Отличие формулы (3.3.1) от (3.1.7) объясняется тем, что в (3.3.1) не учтено время, затрачиваемое на выработку сигналов суммы из сигналов переноса; в § 3.1 это время полагалось рав- ным 2т. 146
с момента поступления слагаемых на входы схем оора- зования переносов и заканчивается формированием всех сигналов переноса (после чего могут быть определены сигналы суммы) . Следует отметить, что соотношение (3.3.1) относится и к сумматору с кольцевым переносом. В этом случае оно соответствует не только описанной ситуации, но и ситуации, когда перенос возникает в младшем разряде любой группы и заканчивается в старшем разряде соседней младшей группы. Перепишем (3.3.1): T=2k+nlk—3. (3.3.2) Считая оптимальным сумматор, обладающий мини- мальным Т при данном /г, приравняем нулю производ- ную dT I dk\ dT/dk=2—n/k2=0, откуда (3.3.3) и m = (3.3.4) Соотношения (3.3.3) и (3.3.4) указывают общий характер зависимости между/г, m, k в оптимальном сум- маторе. В конкретных случаях можно подбирать опти- мальные целочисленные значения, близкие к тем, кото- рые получаются из этих соотношений. Иногда парамет- ры n, m, k могут в точности удовлетворять приведенным соотношениям (например, при n=32, m=8, £=4). В этих случаях Г, как это следует из (3.3.2) и (3.3.3), равно Т=2/2/г-3, откуда тг=(Т—|—3)2/8. (3.3.5) В работе [8] показаны некоторые возможности даль- нейшего уменьшения величины Т путем использования групп переменной длины и введения многослойных обходных переносов, но подробнее эти возможности исследованы в работе [10], к краткому изложению ре- зультатов которой мы теперь перейдем. 2°. В работе [10] найдены оптимальные структуры сумматоров с группами неодинаковой длины. Рассмот- рены построенные на элементах И, ИЛИ или на элемен- тах ИЛИ—НЕ сумматоры с однослойными и двухслой- ными обходными переносами, с цепью кольцевого пере- 10* 147
носа и без нее. Оптимальным в работе считается сумматор, обладающий при заданной разрядности п минимальным значением максимального времени Т рас- пространения переноса (за единицу времени принимается задержка пары элементов И, ИЛИ или элемента ИЛИ— НЕ) и минимальным для этого Т количеством цепей обходного переноса. Кроме того, найдены структуры «экономичных» сумматоров, обладающих при заданных п и Т минимальным количеством цепей обходного пе- реноса. В частности, показано, что при данном Т максималь- ное количество п(т) разрядов в построенном на элемен- тах И, ИЛИ сумматоре с однослойными обходными переносами, не содержащем цепи кольцевого переноса, равно лг<^)=[ (ТЧ-4) Г/4) ] *>. (3.3.6) Последовательные группы при этом содержат Ш........T-l-g-j-i, /-]+ + 1, ..., 3,2, 1 разрядов (последовательность указана, начиная со стар- ших разрядов). Например, при 7=10 группы содержат 2, 3, 4, 5, 6, 5, 4, 3, 2, 1 разрядов. При наличии цепи кольцевого переноса n(n=[(r+3)2/8]. (3.3.7) В этом случае сумматор при Т, дающем при делении на 4 остаток, не равный 2, содержит группы одинаковой длины где _ (Г + З)2 8 : при Т, дающем при делении на 4 остаток 2, сумматор состоит из групп с чередующимися длинами по k и k—1 разрядов, причем Ь_И + 5 11/1 [ 4 2 * [х] обозначает целую часть х. 148 -(vr-n(r*)
Например, при Г=10 группы содержат 4, 3, 4, 3, 4, 3 разрядов. Из сказанного можно заключить, что обходные пере- носы позволяют при сравнительно небольших затратах аппаратуры получить довольно высокое быстродействие. 3.4. СУММАТОРЫ С ПИРАМИДОЙ ПЕРЕНОСОВ Пирамида переносов (piramid carry) была предложе- на М. Надлером [11]. Позже аналогичная схема была запатентована Е. Вагнером [12]. Структурная схема 8-разрядного двоичного сумматора, использующего пи- рамиду переносов, показана на рис. 3.4.1, из которого S 8 п-7 Sn-6 Sn-5 Sn-Q. Sri-з $п-2 $п-1 Рис. 3.4.1 видно, что этот сумматор состоит из четырех ярусов. В общем случае n-разрядный сумматор содержит М яру- сов, причем Af=[log2(n—1)] +2*}. На входы каждого t-ro яруса (г=1, 2, ..., М) подаются два числа, которые следует сложить. Для первого яруса (i=l)—это исходные слагаемые А и С. Числа, посту- *) Формула справедлива при п^2. Знак [], как и раньше, обо- значает целую часть числа.' 149
пающие на входы любого другого t-го яруса (i=2, 3, ... ..., Л1) с выходов предыдущего яруса, представляют со- бой сигналы суммы (n-разрядное число) и сигналы переносов (число, содержащее п/21’-1 цифр при п=2\ где k — целое). На выходах t-ro яруса также вырабаты- цифры в числе, состоящем из сигналов переноса, располо- жены вдвое реже, чем на входах яруса. Первый ярус состоит из п одноразрядных полусумма- торов. Любой другой i-й ярус содержит одинаковые сум- мирующие схемы (счетчи- ки), каждая из которых складывает 2г~2-разрядное двоичное число с сигналом переноса, поступающего в младший разряд этой схемы. Суммирующие схемы на рис. 3.4.1 изображены в виде прямоугольников с указан- ной внутри них разряд- ностью поступающего числа. Из рисунка, в частности, видно, что первый и второй ярусы содержат одинаковые узлы (полусумматоры). В последнем ярусе выраба- тывается только один сигнал переноса — сигнал перепол- нения сумматора (цепь кольцевого переноса в таком сумматоре отсутствует*)). Ускорение операции сложения-вычитания в пирамиде переносов достигается благодаря тому, что указанные суммирующие схемы легко сделать ускоренными, исполь- зуя, например, принцип параллельно-параллельной ло- *) Чтобы получить сумматор с кольцевым переносом, можно было бы заменить полусумматор, складывающий цифры ап и сп, одноразрядным сумматором и завести на него перенос из старшего разряда. Но такая схема, во-первых, работала бы примерно вдвое медленней (это видно, например, из анализа ситуации а\ = с\ = = с2= ... =сп=1, а2=а3 = ... = ап = 0) и, во-вторых, нужно было бы принимать особые меры для борьбы с возможностью гене- рации сигналов в цепи кольцевого переноса, 150
гики. Одна из возможных реализаций такой суммирую- щей схемы приведена на рис. 3.4.2. Время работы сумматора с пирамидой переносов определяется количеством ярусов. Если предположить, что время срабатывания каждого яруса равно 1т, то пол- ное время работы n-разрядного сумматора следует счи- тать равным ([log2(n—1)]4~2)т. 3.5. СУММАТОРЫ С УСЛОВНЫМИ СУММАМИ Сумматоры с условными суммами или условные сум- маторы (conditional sum adder) по своему построению похожи на сумматоры с пирамидой переносов, однако принцип их действия иной [13]. Структурная схема 8-разрядного условного суммато- ра приведена на рис. 3.5.1. Как и пирамида сумматоров (см. рис. 3.4.1), эта схема состоит из [log2(n—1)]+2 ярусов и количество сигналов переносов также умень- шается вдвое при переходе от предыдущего яруса к по- 151
следующему. Однако сами сигналы сумм и переносов вб всех узлах каждого яруса (кроме крайних правых узлов) вырабатываются двойными — один комплект сигналов (с верхним индексом «О») соответствует условию равен- ства нулю сигнала переноса, поступающего в данную группу разрядов, другой комплект (с верхним индексом «1») соответствует переносу, мер, узел первого яруса Рис. 3.5.2 равному единице. Напри- работает в соответствии с табл. 3.5.1, а узел второ- го яруса — в соответствии с табл. 3.5.2, в которой показано, чему равны выходы узла в зависимо- сти от значений управ- ляющих сигналов 1в°/, iexi (левый нижний индекс указывает номер яруса, правый нижний — номер разряда). Из табл. 3.5.2 видно, что узел второго яруса является довольно простым коммутатором, работающим в одном из трех режимов. Аналогич- но работают и узлы по- следующих ярусов. Вдоль нижнего края сумматора справа налево протекает процесс уста- новления истинных (а не сигналов переноса и эти сигналы истинных значений сумм из двух значений выбором условных) управляют поступающих сверху комплектов условных сумм. Макси- мальное время работы такого сумматора, как и сумма- тора с пирамидой переносов, пропорционально двоично- му логарифму от количества разрядов. На первый взгляд кажется, что условный сумматор не может работать в режиме с кольцевым переносом. Этот недостаток можно устранить следующим образом (см. пример для случая и=4 на рис. 3.5.2). Сделаем правый узел в каждом ярусе таким же, как остальные узлы яруса. Тогда на выходах сумматора образуется два комплекта сумм s°, s1 и два сигнала переноса е°о, из старшего разряда. Установим на выходах сумматора до- 152
полнительный коммутатор, управляемый сигналом е°о. При е°о=1 этот коммутатор будет пропускать сквозь себя в качестве окончательных результатов комплект сумм s1, а при е°о=0 — комплект s°. Этим, очевидно, и обеспечивается режим кольцевого переноса. Время сло- жения при этом увеличивается только на время срабаты- вания указанного коммутатора. Таблица 3.5.1 а. ci .3»,. Л-! •s’z 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 Т а б л и ц а 3.5.2 О О 1 1 О 1 is°i - i isl i 1$°Z i^°i- i l^Z-l - 1 3.6. СУММАТОРЫ С ВЫБОРОМ ПЕРЕНОСА В так называемых сумматорах с выбором переноса (carry select adder) [14] используется по существу та же идея, что и в условных сумматорах, но схемное реше- ние здесь иное. Отличие состоит в том, что весь сумма- тор сразу разбивается на группы разрядов (например, по tn разрядов в группе) и для каждой такой группы строятся два m-разрядных сумматора, в младший раз- ряд одного из которых принудительно вводят перенос е=0, а в младший разряд другого — перенос е=1. Истинные значения сигналов переноса, поступающих в каждую из таких групп, вырабатываются специальны- ми схемами ускоренного распространения переноса. Эти сигналы, как и в условном сумматоре, управляют выбо- ром одного из двух комплектов условных сумм. Осталь- 153
«6-10 «6-10 ffn-tf «Ц-15 «16-20 «16-20 ' «21-25 «21-25 • I I 10 ' 11 I I 15 16 | | !0 21 I I 25 Ср^\ Сумматор Сумматор СумматорУ^-О Сумматор\^0 е°^Сумматор |^-/7 \ск&ма Выборе^— fS27-25 a1S с1~5 Сумматор |^-7 |s*-rZ7 Ci[J jCrcMa BwBopa]*^- fss-zT" Сумматор *-7 - Р/7~75 ty/Wff/77/7/7 р—7 f .0 Сумматор -*-7 a is ^/-5 «ь-ю «б-ю I «5=^641 § «5^6-10 «5= R6-10 10=^11 "IS K ZiBl5=R 16-20 \^у«20жВ21-25 a11-1S «11-15 —«10=Яц-к **-е10=Я 11-15 ^BlO=Cl1-15 ^-«15=^16-20 Zie20=n27-M § а16-2О «16-20 I ___ e15=Cl6-20 -\**-b1iS-R16-20 § *+-«15=^16-20 ^^е20=Я^-^ «21'25 «21-25 Г—'— «20 21-25 <-J^p"*20= ^21-25 «) 6) Рис. 3.6.1
ИЫе детали видны из рис. 3.6.1,а, на котором показана структурная схема сумматора с выбором переноса для случая /т=25, т=5. Из рисунка видно, что внутри сумматора между 5-разрядными группами организован по существу после- довательный пробег переносов, возникающих из этих групп, но, кроме того, имеются 3 цепи обходных перено- сов— от сигнала в25 до входов старших трех групп. Изображая каждую 5-разрядную группу одним квадра- том, можно весь сумматор нарисовать так, как это сде- лано на рис. 3.6.1,6. Видно, что мы имеем дело с типич- ной схемой обходных переносов между группами. Одна- ко не это существенно для сумматоров с выбором пере- носа, так как распространение переноса между 5-раз- рядными группами 'можно организовать и по другим известным принципам, например так, как это делается в сверхпараллельном сумматоре. Существенно само по- строение группы, позволяющее, в частности, использо- вать в качестве групповых сигналов D и R соответствен- но сигналы переноса е° и е1, получающиеся на выходе старшего разряда каждой группы. В [14] показано, что можно легко образовать сигналы D и R для всего 25-разрядного сумматора, построив схемы этих двух сиг- налов в соответствии с соотношениями D = е\ 4- е\е\ + е\.е\е\ + е°15е\ое\е'о + + & 2^ о» R^e 10£ 1Б# 20. (3.6.1) Далее можно построить, (например, 100-разрядный сумма- тор из четырех описанных сумматоров, организовав рас- пространение переноса между 25-разрядными группами при помощи сигналов (3.6.1), например так, как это де- лается в сверхпараллельном сумматоре (см. рис. 3.1.2). Однако и это, естественно, не является отличительной или тем более обязательной чертой сумматоров с выбо- ром переноса. 3.7. ПРИМЕР ОПТИМИЗАЦИИ СТРУКТУРЫ СУММАТОРА В этом параграфе приводится расчет оптимальных длин групп разрядов сумматора, состоящего из после- довательно соединенных групп, в каждой из которых производится ускорение как переноса, идущего «в обход» 155
группы, так и переноса, возникшего внутри группы и вышедшего из нее. Схема одной такой группы показана на рис. 3.7.1 (изображены только цепи образования переносов и не показаны узлы, формирующие сигналы суммы). Эта группа отличается от приведенной на рис. 3.3.1 группы с обходными переносами наличием отмеченных звездочкой схем И, заменивших схему И со et. При этом не только обход- ный перенос за кратчайшее вре- мя проходит сквозь группу, но и «местный» перенос, возник- ший внутри группы, вырабаты- вается за такое же время. Вну- три группы схема распростра- нения переноса осталась после- довательной. Иными словами, в рассматриваемом сумматоре имеются последовательные пе- реносы внутри групп и между группами, параллельно-парал- лельные переносы из групп. СумматЪры. такого типа были кратко описаны в § 3.1 (см. рис. 3.1.6,(9). Рассматриваемый сумматор входными сигналами Рис. 3.7.1 должен, очевидно, обладать большим быстродействием, чем соответствующий сумма- тор с однослойными обходными переносами (при про- чих равных условиях) и, кроме того, он свободен от указанного в § 3.3 недостатка (медленный пробег нуля). Исследуем задачу определения оптимальных длин групп, обеспечивающих максимальную длину сумматора п= =п<т) при заданном максимальном времени Т распро- странения переноса [15]. Сумматор рассматриваемого типа с такими параметрами будем называть опти- мальным. Обозначим через пг количество групп в сумматоре и через 2, ..., m)—количество разрядов в f-й группе. Очевидно, что tn 2 kt=n. i=] 156
Будем считать, что номера групп возрастают по на- правлению от младших разрядов сумматора к старшим. За единицу времени, как и в п. 3.3.1, примем время про- хождения сигнала через пару схем И, ИЛИ. Заметим, что в сумматоре без кольцевого переноса цепочка переноса, обладающая максимальным временем распространения, при данном типе ускорения должна обязательно начинаться в младшей группе сумматора. Это следует из того, что время пробега переноса, воз- никшего в некоторой /-й группе (Ml) и закончившегося в некотором месте f-й группы, наверняка меньше време- ни пробега, начавшегося в первой группе и закончивше- гося в том же месте той же f-й группы. Будем говорить только о таких переносах и будем называть переносом, закончившимся в i-й группе, перенос, возникший в пер- вой группе и достигший выхода некоторого разряда i-й группы. Обозначим через ti максимальное время пробега пе- реноса, оканчивающегося в f-й группе. Понятно, что ti=(i— l)+max((^— I), I), t=l, 2, ..., m. (3.7.1) Здесь член (i—1) соответствует времени распростране- ния переноса от младшей группы сумматора до начала ьй группы; член ki—1 обозначает максимальное время пробега внутри f-й группы; если ki=l, то вместо вели- чины ki—1 следует взять 1, на что и указывает член max ((ki—1), 1). Максимальное время распространения переноса в сумматоре определяется соотношением T = max/Z =max {(/ — 1)4-max((£z — 1), 1)}*). i i i Легко показать, что в оптимальном сумматоре без кольцевого переноса каждая группа должна содержать не менее двух разрядов. В самом деле, допустим, что £j=l. Тогда *) При k\ = k2= ... =km = k эта формула превращается в Т = = пг——\=m-\-k—2, что на 3 меньше, чем опенка, получаю- щаяся по формуле (3.1.6). Разница объясняется тем, что в (3.1.6) учтено время (1т), затрачиваемое на выработку сигналов Ri, Di, и (2т), затрачиваемое на получение сигналов суммы из сигналов пе- реноса. 157
Если мы увеличим kj на единицу, то /j станет равно 6=(/-1 ) + (^-1)=/, т. е. не изменится. Остальные Л при этом тоже не изме- няются. Иными словами, мы сумели удлинить сумматор, не увеличив Ту что было бы невозможно, если бы сум- матор был оптимальным. Теперь докажем, что в оптимальном сумматоре без кольцевого переноса количество разрядов должно быть равно п^=Т(Т+3)!2. (3.7.2) Доказательство. Очевидно, что в оптимальном сумматоре ti = T (i=l, 2, ..., m). В самом деле, если то мы можем уве- личить kj по крайней мере на единицу и при этом будет удовлетво- ряться неравенство а остальные ti не изменяются, т. е. Т тоже не изменится. Полагая ti = T и Агг->1, получаем из (3.7.1): + l)=f+^._2 (Z=l, 2, ..., /и), т. e. ki = T-i+2. Отсюда следует, что оптимальное распределение длин групп имеет вид: ^1 = 7+1, k2=T, k$=T—1, ..., £m = 2, m = T, m т В табл. 3.7.1 показаны оптимальные распределения для ряда значений Т. Таблица 3.7.1 т П(Т) | Длины групп 1 т „(Т) 1 2 2 6 27 2 5 2, 3 7 35 3 9 2, 3, 4 8 44 4 14 2, 3, 4, 5 9 54 5 20 2, 3, 4, 5, 6 10 65 Длины групп 2, 3, 4, 5, 6, 7 2, 3, 4, 5, 6, 7, 8 2, 3, 4, 5, 6. 7, 8, 9 2, 3, 4, 5, 6,7, 8, 9, 10 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 На рис. 3.7.2 в упрощенном виде изображен сумма- тор с оптимальными длинами групп для случая Т=1У указаны номера групп и номера разрядов. 158
Нетрудно показать, что схема ускоренного переноса в нескольких старших группах оптимального сумматора может быть заменена более простой схемой обходного переноса. Говоря точнее, в сумматоре рассматриваемого типа, разбитом на группы с длинами km=2, km-i=3, ... ..., ki=tn—t—1-2, ..., максимальное время рас- пространения переноса не изменится, если в группах с номерами i, удовлетворяющими неравенству t^(/n+2)/2, (3.7.3) заменить рассматриваемую схему ускоренного переноса на схему обходного переноса. Рис. 3.7.2 В самом деле, до изменения схем переноса сигнал на выходе любой ьй группы вырабатывался не позже, чем в момент времени i. Следовательно, схему ускоренного переноса можно заменить на схему обходного переноса в тех группах, в который после этой замены сигнал пере- носа, возникший внутри группы, выйдет из нее не позже, чем за такое же время. Группа с номером i содержит т—Z-|-2 разряда. Поэтому максимальное время выра- ботки «местного» переноса из i-й группы, содержащей схему обходного переноса, равно т—i + 2. Следователь- но, можно установить схему обходного переноса во всех группах, для которых т—I-1- 2^л, откуда и следует (3.7.3). Таким образом, почти в половине групп можно уста- новить более простые схемы обходного переноса, сохра- нив то же быстродействие. В сумматоре с кольцевым переносом максимальному времени распространения 'переноса соответствует ситуа- ция, при которой перенос возникает в некоторой группе и, пробежав по всему сумматору, заканчивается в этой же группе. Поэтому Г = т + тах^-1, (3.7 4) 159
где т — время распространения переноса, возникшего в группе, имеющей максимальную длину, до ее входа, тах&/—1 —время пробега переноса внутри этой группы. i Из (3.7.4) следует, что при оптимальном разбиении все группы должны иметь одинаковую длину k=n[m. В самом деле, если k, -сГтах^;, J 1 I то длину /-й группы можно увеличить до величины шах^-, i сохранив, как это следует из п. 3.7.4, то же Т. Теперь докажем, что в оптимальном сумматоре с кольцевым переносом при заданном Т количество раз- рядов равно (3.7.5) Доказательство. Пусть k\ = k2= ... =km~k. Тогда ktn = n, k+m — T+i (3.7.6) (второе из этих уравнений следует из (3.7.4)). Используя теорему Виета о корнях квадратного уравнения, при- ходим к тому, что k и гл, должны быть корнями уравнения Х2_р(7’_]_1)х+п = о. (3.7.7) Так как ^1,2 — 2 i 2 г (Т | I)2 (3.7.8) и так как k и m — действительные числа, то подкоренное выражение в (3.7.8) должно быть неотрицательным числом, т. е. должно удов- летворяться неравенство м^(7+1)2/4. (3.7.9) Если Г —нечетное, то (7+1)2/4 — целое число и его следует при- нять в качестве п(т>: П(т)= (Г+1)2/4. (3.7.10) Если Т — четное, то максимальное действительное п, при кото- ром удовлетворяется (3.7.9), равно птах=(7'+1)2/4 = Г2/4+27/4 + 1/4. Первые два слагаемых в этой сумме — целые числа. Так как п(Г) — максимальное целое число, удовлетворяющее неравенству ^т^Ятах, то „(Т)= 72/4+27/4 = 7(7+2)/4. (3.7.11) Объединяя (3.7.10) и (3.7.11), получим (3.7.5). 160
При п = п(т)=(Т-\-\)2/4 корни уравнения (3.7.7) имеют вид х1>2= (7+1)/2, т. е. при нечетном Т оптимальным является следующее разбиение сумматора: /п=(Т+1)/2, ^1 = ^2= ... =^ = (7+1)/2. При п=п(т) = 7'(г+2)/4, т. е. при четном Г, корни уравнения имеют вид 7+ 1 7+1 Г (7 + 1)2— 7(7 + 2) =7 + 1 1 *1,2— 2 ± 2 У (7+1)2 2 ± 2 В 9 и так как система уравнений (3.7.6) симметрична относительно k и tn, то имеются два оптимальных разбиения сумматора с кольце- вым переносом: xI=m=7/2, x2=k\ = k2= ... = &т = 7/2+1 и Х1 = &1 = &2= ... =&m = 7/2, x2=^ = 7/2+1. Таблица 3.7.2 т (Г) п Длины групп т (Г) п Длины групп 3 4 2, 2 8 20 4, 4, 4, 4, 4 4 6 2, 2, 2 8 20 5, 5, 5, 5 4 6 3, 3 9 25 5, 5, 5, 5, 5 5 9 3, 3, 3 10 30 5, 5, 5, 5, 5, 5 6 12 3, 3, 3, 3 10 30 6, 6, 6, 6,>6 6 12 4, 4,4 И 36 6, 6, 6, 6, 6, 6 7 16 4, 4, 4, 4 В табл. 3.7.2 приведены оптимальные распределения для нескольких значений 7. На рис. 3.7.3 показаны графики полученных зависи- мостей п<т) от 7, построенные по соотношениям (3.7.2), (3.7.5). Для сравнения штриховой линией изобра- жены аналогичные графики для оптимальных суммато- ров с однослойными обход- ными переносами (см. п. 3.3.1). Из рис. 3.7.3 и формул (3.7.2), (3.7.5), (3.3.6), (3.3.7) видно, что при оди- наковом быстродействии и Рис. 3.7.3 11—1013 161
прочих равных условиях сумматоры, рассмотренные в этом параграфе, обладают примерно вдвое большей длиной, чем оптимальные сумматоры с однослойными обходными переносами. 4. БЫСТРОДЕЙСТВУЮЩИЕ СИНХРОННЫЕ УМНОЖИТЕЛИ При решении большинства вычислительных задач требуется выполнять умножение. Задачи, включающие деление, часто могут быть решены при помощи умноже- ний, сложений, и вычитаний. Деление можно выполнять, например, путем использования умножений и хранящих- ся в памяти таблиц обратных величин. Имеется много способов «обойти» деление, т. е. произвести его, не имея специальных устройств, предназначенных для этого. Умножение нельзя «обойти». Единственная возмож- ность избежать непосредственного вычисления произве- дения состоит в использовании таблиц умножения. Одна- ко применение этого метода в машинах параллельного действия требует большого объема памяти. Любой про- граммный метод умножения требует выполнения много- кратных сложений, которые не могут быть произведены так же быстро, как выполняется умножение при исполь- зовании ускоренных аппаратных методов. Поэтому очень часто при проектировании арифметического устройства стремятся к тому, чтобы умножение выполнялось с по- мощью быстрого аппаратного метода. Все известные синхронные методы ускорения умноже- ния' сводятся по существу к раздельному или комплекс- ному использованию следующих трех путей: 1. Уменьшение времени, требуемого для выполнения суммирования частичных произведений, т. е. произведе- ний множимого на отдельные разряды или группы раз- рядов множителя. 2. Уменьшение количества частичных произведений путем использования предварительно формируемых крат- ных множимого. 162
3. Использование вычитания при умножении, Позво- ляющее уменьшить количество дополнительных сумма- торов, необходимых для формирования кратных множи- мого. В основу такой классификации положены логические и математические идеи, реализация которых приводит к повышению быстродействия. Каждое из указанных направлений воплощено в группе методов ускорения умножения, аппаратные решения которых могут сильно отличаться друг от друга. В данной главе рассматриваются основные синхрон- ные методы ускоренного выполнения умножения. 4.1. УМЕНЬШЕНИЕ ВРЕМЕНИ СУММИРОВАНИЯ ЧАСТИЧНЫХ ПРОИЗВЕДЕНИИ Уменьшить время сложения всех частичных произве- дений можно тремя способами: ускорять процедуру сло- жения очередного частичного произведения с суммой предыдущих частичных произведений, начинать прибав- ление следующего частичного произведения до заверше- ния прибавления предыдущего частичного произведения и, наконец, строить схемы, складывающие текущую сум- му частичных произведений сразу с несколькими очеред- ными частичными произведениями. Основной реализацией первого способа является при- менение ускоренного сумматора для сложения очеред- ного частичного произведения с суммой предыдущих. К этой группе методов при желании можно также отне- сти использование хорошо известных схем умножения, позволяющих совмещать во времени сложение со сдви- гом множимого (рис. 7.7.1, б, г). Второй способ воплощен в методе умножения, при котором используется так называемый сумматор с запо- минанием переносов (carry save adder) [1, п. 4.3.2]. Идея этого метода состоит в формировании текущей суммы очередного частичного произведения с суммой предыду- щих частичных произведений в виде двухрядного кода, т. е. в виде двух чисел. В предельном случае одно из этих двух чисел составлено из поразрядных сумм s, а другое — из поразрядных переносов е. Принцип рабо- ты такого устройства иллюстрируется упрощенной струк- турной схемой, приведенной на рис. 4.1.1. Во время каж- дого цикла в комбинационном сумматоре См склады- 11* 163
вается очередное частичное произведение П с суммой предыдущих частичных произведений. В конце цикла значения сигналов е и s запоминаются в регистрах РгЗ, Рг4, а в начале следующего цикла передаются в Рг1, Рг2. Выигрыш в скорости достигается благодаря тому, что отсутствует процесс распространения переносов в сумматоре См, время срабатывания которого в дан- обычное сложение. Его ном случае уменьшается, очевидно, до времени сраба- тывания одного однораз- рядного сумматора. При более экономичных (но и более медленных) ва- риантах весь сумматор раз- бивается не на отдельные разряды, а на сравнительно короткие, «/-разрядные (1< <«/<га) сумматоры. При этом первое из двух указан- ных чисел составляется из выходов сумм этих суммато- ров, а второе число, содер- жащее в q раз меньше зна- чащих цифр, — из сигналов переноса, вырабатываемых в «/-разрядных сумматорах (по одному сигналу на каж- дый такой сумматор). В любом из этих вариан- тов после получения двух- рядного кода окончательного произведения выполняется преобразование двухрядно- го кода в однорядный, т. е. можно осуществить на обычном параллельном, а еще лучше — на ускоренном параллель- ном сумматоре. В устройстве, показанном на рис. 4.1.1, заключительное сложение может выполняться на сумма- торе См, который должен в этом случае после проведе- ния всех циклов сложений с частичными произведениями «перестроиться» с режима преобразования трехрядного кода (т. е. трех чисел) в двухрядный — на режим преоб- разования двухрядного кода в однорядный. Вместо этого заключительное сложение можно выполнять на отдель- 164
йом сумматоре, который следует установить после реги- стров РгЗ, Рг4. Такой вариант устройства будет показан на рис. 4.1.2. Третий способ ускорения процесса суммирования ча- стичных произведений предполагает введение в ариф- метическое устройство дополнительных сумматоров. Количество tn частичных произведений, которые одно- временно прибавляются к текущей сумме частичных про- изведений, может быть различным. Операция умножения при этом состоит из ряда циклов, во время каждого из которых прибавляется m новых частичных произведений. Обычно при этом используется и метод запоминания переносов, обеспечивающий дополнительное ускорение. На рис. 4.1.2 в качестве примера показано, как можно на каждом цикле к текущей сумме частичных произве- дений прибавлять еще два (тп=2) частичных произведе- ний П1 и П2 и при этом формировать сумму в виде двухрядного кода. Заключительное сложение в этой схе- ме делается сумматором См3, который целесообразно сделать ускоренным. В предельном варианте умножитель складывает сра- зу все частичные произведения. Умножение в этом слу- чае производится за один цикл. Умножители такого вида называются однотактными (матричными, одновременны- ми, пирамидами сумматоров и т. д.). Анализ и описание таких устройств приведены в § 4.4, 6.3. 4.2. ПРЕДВАРИТЕЛЬНОЕ ФОРМИРОВАНИЕ КРАТНЫХ МНОЖИМОГО При этом методе умножения множитель разбивается на группы по v разрядов и может иметься еще одна группа, содержащая меньше чем q разрядов. Каждая группа разрядов расшифровывается независимо от дру- гих как обычное двоичное число. Если условно считать, что запятая расположена справа от группы, то при рас- шифровке вырабатывается одно из чисел (сигналов) О, 1, 2, 3, ..., 29—1 и в качестве очередного частичного произведения соот- ветственно используется сдвинутое необходимым обра- зом относительно текущей суммы частичных произведе- ний одно из 2« кратных множимого С: О, 1С, 2С, ЗС...(2«—1)С. 165
Правило расшифровки одной группы для случая <7=3 показано в табл. 4.2.1. Таким образом, отдельным разрядам группы при рас- шифровке соответствуют естественные веса: q разрядов X X х"... х х 29-1 29-2 2«-3 2*2* Обозначим количество групп, на которые разбит мно- житель (или, что то же, — количество частичных произ- Таблица 4.2.1 Разряды группы Крат- ное Разряды группы Крат- ное Разряды группы Крат- ное Разряды группы Крат- ное ООО 0 010 2С 100 4С ПО 6С 001 1С 011 ЗС 101 5С 111 7С ведений), через т. Соотношение между п, q и т имеет следующий вид: (4.2.1) Крайними случаями разбиения множителя на группы является случай, когда все группы «полные»: (сверху указаны длины групп, снизу —их номера), и случай, когда неполная группа содержит только один разряд: д д <7 ,А. бТТох хТТх х~х... х~х 7"^ 3 т *) ]d[ — наименьшее целое число, не меньшее чем d. 166
(неполная группа показана слева, но она может стоять и в любом другом месте 'множителя). Остальные случаи являются промежуточными между этими двумя. Сказан- ное иллюстрируется двойным неравенством (т— 1) q-\-\^n^mq, правая и левая границы которого соответствуют двум указанным крайним случаям разбиения. Соотношение (4.2.1) справедливо во всех случаях. Те кратные КС, для которых К нечетно и больше единицы, предварительно формируются при помощи вспомогательных сумматоров, количество которых, оче- видно, равно 2'?~'—1. Остальные кратные множимого получаются путем дополнительных сдвигов из С и из кратных, выработанных вспомогательными сумматора- ми. Таким образом, при q=2 требуется сумматор для формирования ЗС, при q=3 нужны сумматоры ЗС, 5С, 7С, при 9=4— сумматоры ЗС, 5С, 7С, 9С, ПС, 13С, 15С и т. д. Одна группа вспомогательных сумматоров может вычислять кратные КС, используя в качестве исходных чисел величины ±С2* (/ целое), получаемые простым сдвигом множимого. Например: ЗС—С+2С, 5С=4С+С, 7С=8С—С, 9C=8C-f-C, 15С=16С—С и т. д. Другие вспомогательные сумматоры вынуждены пользоваться выходами сумматоров первой группы. Например: 13С= = 8С+5С или 13С=16С—ЗС и т. д. Очевидно, что при использований данного метода расшифровка групп может начинаться (т. е. умножение может начинаться) с любого конца множителя. Воз- можна также одновременная расшифровка нескольких групп разрядов множителя; такая необходимость возни- кает, если в умножителе складываются одновременно несколько частичных произведений, как это было, на- пример, показано на рис. 4.1.2. Можно считать, что при использовании данного ме- тода время умножения уменьшается примерно в q раз (мы предполагаем, что частичные произведения по оче- реди складываются в параллельном накапливающем сумматоре, не учитываем возможность наличия одной неполной группы разрядов множителя и пренебрегаем временем, затрачиваемым вспомогательными суммато- рами на формирование кратных множимого в начале операции). Это замечание относится и к методам, рас- смотренным в § 4.3. 167
4.3. ИСПОЛЬЗОВАНИЕ ОТРИЦАТЕЛЬНЫХ ЧАСТИЧНЫХ ПРОИЗВЕДЕНИЙ Этот метод обычно применяется в сочетании с пре- дыдущим. Ниже рассмотрены два варианта использо- вания вычитаний при умножении. В обоих случаях каж- дое частичное произведение соответствует умножению множимого на группу из q разрядов множителя. Основ- ное отличие состоит в том, что при первом варианте расшифровка может начаться с любого конца множи- теля, а во втором варианте умножение производится с младших разрядов множителя. Существуют и другие отличия. 4.3.1. МЕТОД УМНОЖЕНИЯ НА ГРУППУ ИЗ q РАЗРЯДОВ МНОЖИТЕЛЯ С РАСШИФРОВКОЙ <7+1 РАЗРЯДА МНОЖИТЕЛЯ При использовании этого метода ускорения умноже- ния очередная группа из q разрядов множителя дешиф- рируется вместе со старшим разрядом соседней млад- шей группы, который рассматривается как дополнитель- ный младший разряд. Всем разрядам группы, кроме старшего и дополнительного, приписываются те же естественные веса, что и в методе, описанном в § 4.2. Старшему разряду группы приписывается вес —2«-1, а дополнительному разряду — вес 1: q + 1 разряд ' X X х”.ХХ-Х —2?-1 29-» 29-» 21 2° 2° Таким образом, старший разряд каждой группы де- шифрируется дважды: один раз — как старший разряд этой группы, второй — как дополнительный разряд со- седней старшей группы. Старший разряд самой старшей группы и дополни- тельный младший разряд самой младшей группы долж- ны всегда быть нулями. Поэтому должно удовлетворять- ся двойное неравенство (т— V)q^n^.mq— 1, границы которого поясняются следующим образом (каждая нижняя дуга указывает одновременно дешиф- IQ8
рируемые разряды): Количество групп цифр множителя (количество час* тичных произведений) при данном методе равно Сумма весов ненулевых цифр группы определяет коэффициент К в кратном К.С, выбираемом в качестве Таблица 4.3.1 Разряды группы К Разряды группы К Разряды группы К Разряды группы К 0000 0 0100 2 1000 —4 1100 —2 0001 1 0101 3 1001 з 1101 —1 0010 1 ОНО 3 1010 -3 1110 —1 ООП 2 0111 4 1011 —2 1111 0 очередного частичного произведения. Величина К при этом принимает одно из значений О, ±1, ±2, ±3, .... ±2«-1, т. е. количество кратных увеличивается на одно по сравнению с предыдущим методом, но зато количество дополнительных сумматоров для формирования крат- ных множимого уменьшается до 2«-2—1. Правила расшифровки иллюстрируются табл. 4.3.1 (9=3). 169
4.12. Метод умножений С МЛАДШИХ РАЗРЯДОВ МНОЖИТЕЛЯ При расшифровке очередной группы разрядов мно- жителя по этому методу производится анализ q очеред- ных разрядов и одной двоичной цифры «переноса» из предыдущей (соседней младшей) группы в данную. Обозначим эту цифру буквой е. Веса, приписываемые отдельным разрядам, имеют при этом следующие зна- чения: q разрядов X X Х-ХХ е 2«-1 2<?-г 2«-’ 21 2® 2» Иными словами, разряды множителя имеют естествен- ные веса, а вес цифры е равен единице. Коэффициент К при кратном множимого КС, используемом в качестве очередного частичного произведения, выбирается из 29 значений О, ±1, ±2, ±3, ..., ± (29-1—1), 29-1 таким образом, чтобы выполнялось соотношение K+2^e'=S, где е' — выбираемая одновременно с К цифра «пере- носа» в следующую (соседнюю старшую) группу раз- рядов множителя (е'—О или е'=1), 3 — сумма весов ненулевых разрядов дешифрируемой группы цифр мно- жителя вместе с весом ненулевой цифры е. Количество дополнительных сумматоров для формирования кратных множимого при этом, как и в предыдущем методе, равно 2’-2—1. Одно из возможных правил расшифровки одной группы разрядов множителя для случая q=3 показано в табл. 4.3.2. В работе [2] был предложен другой вариант рас- шифровки для случая q=3 (см. табл. 4.3.3). Как видно, количество используемых кратных в обоих случаях равно 8, но вместо кратного — 2С появляется кратное 6С. Можно предложить и другие варианты пра- вила расшифровки. Среди возможных вариантов некоторым преимущест- вом обладают те, в которых при равенстве нулю стар- шего разряда дешифрируемой группы вырабатывается 170
Таблица 4.3.2 ряды группы е к е9 1 Разряды группы е К е9 ООО 0 0 0 000 1 1 0 001 0 1 0 001 1 2 0 010 0 2 0 010 1 3 0 011 0 3 0 011 1 4 0 100 0 4 0 100 1 —3 1 101 0 —3 1 101 1 —2 1 110 0 —2 1 по 1 —1 1 111 0 —1 1 111 1 0 1 Таблица 4.3.3 Разряды группы е к е9 Разряды группы е К е9 000 0 0 0 000 1 1 0 001 0 1 0 001 1 2 0 010 0 2 0 НО 1 3 0 011 0 3 0 ОН 1 4 0 100 0 4 0 100 1 —3 1 101 0 —3 1 101 1 > 6 0 НО 0 6 0 но 1 — 1 1 111 0 —1 1 111 1 0 1 e'=0. Таковы, в частности, оба варианта, показанные в табл. 4.3.2, 4.3.3. Если при этом группы образовать таким образом, чтобы слева в старшей группе всегда стоял нуль, то можно тем самым избежать переноса из этой группы, т. е. избежать необходимости формирова- ния еще одного частичного произведения. Поэтому пара- метры и, m, q должны быть связаны соотношением Правая и левая границы неравенства соответствуют следующим вариантам разбиения множителя на группы разрядов: q Я Я q 1 m 171
<7 <7 <7 <7 о ... ox. ,.ХХ...Х...Х...Х Как и в предыдущем методе, количество групп цифр множителя (количество частичных произведений) равно В табл. 4,3.4 сопоставлены параметры трех послед- них рассмотренных методов ускорения, при использова- нии которых множимое умножается сразу на группу, состоящую из q разрядов множителя. Цифры I, II, III обозначают: I — метод с использованием только поло- жительных кратных множимого (§ 4.2), II, III — мето- ды с использованием не только положительных, но и от- рицательных кратных (соответственно п. 4.3.1 и 4.3.2). Таблица 4.3.4 Характеристика метода I II III Требуемое количество кратных множимого 2^ 29 4- 1 29 Требуемое количество до- полнительных сумматоров 29-1 — 1 29-2 — 1 29-2—1 Соотношение между л, mt q •рч-и In+lf т-] ч L Для иллюстрации рассмотренных методов покажем, как при q = = 3 выполняется всеми тремя методами умножение некоторого мно- жимого С на множитель А, равный 0,101100011 (п=9). В первом случае разбиение на группы и расшифровка будут такие: 0, 101100011 Т'Т'Т и умножение фактически выполнится за 3 цикла следующим образом: С А = ЗС2-0+4С2“в+5С2-\ 172
Во втором случае разбиение может быть таким: 1 -2 -4 3 и циклов будет четыре: С А = ЗС2-9—4С2”в—2С2-3+1 С2°. В третьем случае разобьем множитель следующим образом: ООО, 101100011 и циклов будет тоже четыре С А=ЗС2“9+4С2“в—ЗС2“3+1 С2°. Сравнивая достоинства и недостатки всех трех мето- дов, следует отметить, что при п, кратном q, умножение по методам II, III тре- бует выполнения количества циклов большего на еди- ницу, чем в случае использования метода I; для реализации методов II, III требуется значительно меньшее количество дополнительных сумматоров, чем для реализации метода I; , количество кратных множимого для методов I, III на единицу меньше, чем для метода II; методы I и II в отличие от метода III подходят для применения в матричных умножителях (см. § 4.4), так как при их использовании можно расшифровывать все группы разрядов множителя одновременно. Таким образом, каждый из трех методов обладает некоторыми преимуществами, выгодно отличающими его перед хотя бы одним из двух остальных методов. В качестве еще одной иллюстрации этой группы методов рас- смотрим возможную аппаратную реализацию умножения с парамет- рами л=8, <7 = 3, реализующего метод III (рис. 4.3.1). В качестве «прототипа» устройства выбран вариант «а» схемы неускоренного умножения v(cm. рис. 7.7.1,а, с. 337). В нашем случае (рис. 4.3.1) первый цикл умножения начинается с расшифровки трех младших разрядов множителя 4, находящегося в регистре-сдвигателе. Если среди этих трех цифр есть хотя бы одна единица, то дешифратор Дш вырабатывает один из семи уяравляющих сигналов +1, —1, +2, —2, +3, —3, +4 (количество сигналов указано в соответствующих местах на рис. 4.3.1 в скобках) и сигнал переноса е' '(сигнал е в первом цикле равен нулю). Выработанный управляющий сигнал пропускает сквозь коммутатор Км в 10-разрядный накапливающий сумматор-сдвигатель в качестве первого частичного произведения со- ответствующее кратное множимого С из регистра РгС или из сум- матора СмЗС, который еще до начала первого цикла вычисляет и 171
хранит 10-разрядное утроенное множимое ЗС (пронумеруем разряды этого числа от 1 до 10). Если, например, три младших разряда мно- жителя равны 101, то вырабатывается и запоминается в триггере Т сигнал е'=1 и вырабатывается управляющий сигнал —3, который пропускает сквозь коммутатор Км число ЗС в обратном коде (один из десяти разрядов коммутатора показан на рис. 4.3.2). Частичное 8 Рис. 4.3.1 4-7— Ci-z----- -1 — Ci-z----- + Z — Ci-1 Ci-1----- 1-3— ----- __ 3 “~““ 3ci----- +4— & Ci в i-й разряд сумматора. (1 = 1,2,... ,10) Рис. 4.3.2 ется для крайних разрядов Ci=0 при i=9,10; ct-i=0 произведение прибавляется к содер- жимому сумматора (при выполнении первого цикла это содержимое равно нулю) и сумма запоминается. В кон- це цикла производится сдвиг вправо на 3 разряда в сумматоре и в реги- стре множителя. При этом три млад- шие разряда произведения переходят из сумматора в освобождающиеся старшие разряды регистра множите- ля. Аналогично выполняются второй и третий циклы, но в конце третьего цикла сдвиги не производятся. В сумматоре при сложениях исполь- зуется цепь кольцевого переноса во. Из других деталей можно отметить, что схема на рис. 4.3.2 слегка меня- коммутатора, так как нужно учесть, что при £=1,10; с<-2 = 0 при /=1,2. £ & & $ & & 7 4.4. АНАЛИЗ И МЕТОДИКА ПОСТРОЕНИЯ ОДНОТАКТНЫХ УМНОЖИТЕЛЕЙ 4.4.1. КЛАССИФИКАЦИЯ ОДНОТАКТНЫХ УМНОЖИТЕЛЕЙ В начале этой главы уже говорилось, что современ- ная вычислительная машина затрачивает значительную часть своего времени на выполнение умножения. В ря- 174
Де разработок новых машин арифметическое устройство освобождается от множества тривиальных операций, что приводит к увеличению доли времени, затрачиваемого на умножение и деление. Арифметическое устройство такой машины тратит на эти две операции примерно половину своего времени. Тем не менее объем аппара- туры, имеющейся в машине для этих операций, редко бывает велик. В крупных вычислительных системах и ЦВМ часто возникает ситуация, в которой для улучше- ния общих экономических показателей системы, содер- жащей большую память, развитое внешнее оборудова- ние и управление, выгодно увеличить затраты на умно- жение и деление даже выше того уровня, при котором прирост затрат дает равный прирост скоростей умноже- ния и деления. Однотактные умножители (ОУ) отно- сятся к средствам ускорения такого рода. Основная особенность ОУ состоит в том, что выпол- нение умножения в нем представляет собой единый непрерывный сложный переходный процесс одновремен- ного сложения всех частичных произведений, не разде- ляемый на более мелкие интервалы времени тактирую- щими сигналами, как это делается в умножителе лю- бого другого типа. Допустим, что нужно сформировать полное 2п-раз- рядное произведение двух «-разрядных сомножителей и что в умножителе не используются дополнительные кратные множимого (об использовании таких кратных говорилось в § 4.2, 4.3). Тогда общее количество цифр во всех слагаемых (частичных произведениях) равно п2. Позже мы увидим, что при изменении величины п коли- чество аппаратуры в ОУ того или иного типа изменяется приблизительно пропорционально п2. Поэтому приме- нение ОУ названо в работе [3] методом второго по- рядка ускорения умножения. Можно предложить [4] классификацию ОУ, основан- ную на разделении их на матричные ОУ и составные ОУ (рис. 4.4.1). Матричные ОУ [4—29] содержат прибли- зительно п2 однотипных элементов (например, однораз- рядных двоичных сумматоров), соединенных между со- бой тем или иным способом и складывающих все частичные произведения. Если используются дополни- тельные кратные множимого (см. § 4.2, 4.3), то коли- чество суммирующих элементов соответственно умень- шается и в состав устройства включается дешифратор 175
множителя и узел формирования необходимых кратных множимого. Матричные ОУ можно в свою очередь разделить на однородные и неоднородные. Однородные матричные ОУ относятся к классу устройств, часто называемых итера- тивными сетями (iterative arrays) и представляющих собой множество одинаковых элементов, образующих регулярную сеть [30]. Благодаря однородности структу- Рис. 4.4.1 ры и соблюдению принципа «ближнедействия» элементов применение таких устройств представляется весьма перспективным в больших и средних вычислительных машинах высокой производительности, создаваемых на базе современной технологии изготовления интеграль- ных схем. В настоящее время разработано большое количество итеративных сетей, представляющих собой множительные, делительные [22—24, 31—34], суммиру- ющие и другие вычислительные узлы; среди последних можно отметить схемы для вычисления квадратного кор- ня [34—36], для умножения и деления двоичного числа на константу [37], для возведения в квадрат [38], для перевода числа из двоичной системы в десятичную [37] и т. п. Однородные матричные ОУ [1, 4—16, 22—24] также содержат однотипные элементы, соединенные ре- гулярным образом. В неоднородных матричных ОУ [1,4, 13—21] эта регулярность отсутствует. Большую группу неоднородных матричных ОУ обра- зуют так называемые многослойные построения [1, 4, 176
13—21], Отличающиеся малым временем образований двухрядного кода произведения (см. п. 4.4.4). Составные ОУ синтезируются из ОУ меньшей раз- рядности: матричных [4, 27], табличных или представ- ляющих собой небольшие долговременные запоминаю- щие устройства [25, 26], вычисляющих произведения отдельных частей множимого и множителя. Соединение между собой «элементарных» ОУ в составном ОУ мо- жет выполняться тем или иным способом и, в частности, так, как соединяются одноразрядные сумматоры в одно- родных или многослойных ОУ; полученные таким обра- зом ОУ можно назвать макрооднородными, макромного- слойными и т. д. В настоящее время ОУ все чаще находят применение в арифметических устройствах цифровых машин. В ряде случаев одно и то же матричное устройство исполь- зуется для выполнения не только умножения, но и деле- ния [22—24]. По мере создания больших вычислитель- ных систем, в которых удельный вес арифметического устройства невелик по сравнению с остальной аппара- турой, применение ОУ будет, вероятно, возрастать. Во многих случаях используются также неполные матрицы, складывающие одновременно несколько, но не все, час- тичные произведения [27, 39, 40]. Об устройствах такого рода речь уже шла (§ 4.1). Однотактные умножители могут строиться, вообще говоря, из различных элементарных ячеек. Широкое распространение получили ОУ, основной типовой ячей- кой в которых является одноразрядный двоичный сум- матор на потенциальных элементах. Ниже мы будем иметь в виду ОУ, содержащие такие сумматоры. В настоящее время известно большое количество схем одноразрядного сумматора. В последующих пунк- тах этой главы будет показано, что от выбора схемы одноразрядного сумматора может существенным обра- зом зависеть быстродействие всего ОУ. Поэтому целе- сообразно рассмотреть возможные построения суммато- ра с точки зрения их влияния на свойства ОУ. В арифметических устройствах, не использующих матричные схемы, время задержки сигнала в цепях переноса одноразрядных сумматоров намного сильнее влияет на быстродействие устройства, чем время за- держки в цепях суммы. В устройствах, использующих матрицы сумматоров, общее время операции умножения 12—1013 177
Рис. 4.4.2 (и других операций, в выполнении которых участвует матрица) существенным образом зависит и от быстро- действия цепей суммы одноразрядных сумматоров. Для данной работы удобно ввести в рассмотрение отношение максимального времени задержки в цепи суммы к мак- симальному времени задержки в цепи переноса одно- разрядного сумматора. На рис. 4.4.2 показаны некоторые схемы однораз- рядных комбинационных сумматоров. Из их рассмотре- ния видно, что максимальная задержка в цепи пере- носа те, вообще говоря, не равна максимальной за- держке в цепи суммы тс м. Можно считать, что в общем случае тСм=&те, где k — некоторая константа. Однако для большинства практических применений можно огра- ничиться рассмотрением двух основных случаев: k=l 178
в) С(С) е) и k=2. В первом из них мы будем называть сумматор «однотактным», во втором случае — «двухтактным». Задержку будем назы- вать «тактом» и считать, что она одинакова для всех сум- маторов (в данном случае термин «такт» не имеет от- ношения к названию «одно- тактные умножители»). Ве- личина £=1, как правило, соответствует сум матор а м (рис. 4.4.2,а—г), в которых сигналы суммы и переноса вырабатываются независи- мо друг от друга, хотя вход- ная часть этих двух схем мо- жет быть общей (рис. 4.4.2,г). Такие сумматоры требуют парафазных» вход- ных сигналов, и, следователь- но, если мы хотим использо- вать их в матрице, то выходы этих сумматоров тоже долж- ны быть парафазными. Слу- чай i£=2 соответствует сум- маторам, в которых сигнал суммы вырабатывается при помощи сигнала переноса (рис. 4.4.2,д, е). Такие сумматоры не требуют парафаз- ных входных сигналов и поэтому, как правило, более экономичны. Код сигнала переноса в этих схемах инвер- сен коду слагаемых, а в схеме 4.4.2,5 инверсен по отно- шению ко входам и сигнал суммы. Схема двоичного одноразрядного сумматора обладает так называемым свойством самодвойственности, состоящим в том, что инвертирование всех входных сигналов приводит к ин- вертированию выходных сигналов. Это свойство отра- жено на рис. 4.4.2,5, е надписями в скобках и в даль- нейшем будет использовано. Основными достоинствами ОУ являются высокое быстродействие, простота схем управления, легкость настройки и выявления дефектов. Успехи микроэлектро- 12* 179
ники и, в частности, развитие техники больших инте- гральных схем позволяют успешно бороться с основным недостатком этих устройств — большим объемом аппа- ратуры. Опыт развития советской и зарубежной вычис- лительной техники за последние годы показывает, что использование ОУ становится важным средством повы- шения производительности вычислительных средств. 4.4.2. АНАЛИЗ ПРОЦЕССОВ СУММИРОВАНИЯ ЧАСТИЧНЫХ ПРОИЗВЕДЕНИИ В ОДНОРОДНЫХ МАТРИЧНЫХ ОУ На рис. 4.4.3 в упрощенной форме показаны схемы 12-матричных ОУ четырех типов. Каждый кружок на рисунке изображает одноразрядный двоичный сумма- тор, сверху вниз направлены сигналы суммы, справа налево, справа вверх налево и справа вниз налево на- правлены сигналы переноса. В каждой из этих схем выдержан единый принцип построения: сумматоры, от- носящиеся к одному разряду, образуют вертикальную цепочку, кроме того регулярный характер имеют связи между соседними разрядами. Приведенные структуры являются, таким образом, итеративными сетями. Часто с целью уменьшения количества аппаратуры совмещают применение рассматриваемого метода уско- рения умножения с описанным ранее методом ускоре- ния, состоящим в расшифровке групп, содержащих по q разрядов множителя, и в использовании предвари- тельно вычисляемых кратных множимого. Поэтому на рис. 4.4.3 для каждого из четырех типов матриц при- ведены три схемы, соответствующие вариантам умно- жения, при которых каждое частичное произведение по- лучается путем умножения множимого на q разрядов множителя (7=1, 2, 3). При этом предполагается, что при 7=2 используются кратные О, 1С, 2С, ЗС (т. е. в арифметическом устройстве имеется дополнительный сумматор, вычисляющий утроенное множимое), а при 7=3 используются кратные О, 1 С, 2С, ЗС, 4С, 5С, 6С, 7С (т. е. имеются сумматоры для вычисления величин ЗС, 5С^ 7С). При 7=2 или 7=3 могли бы быть использова- ны и другие кратные: например, при умножении на две цифры можно использовать кратные О, 1С, 2С, —1С, —2С, а при умножении на три цифры — кратные 0, 1 С, 2С, ЗС, 4С, —1С, —2С, —ЗС, —4С. При этом умень* 180
1=1, п любое д=2, п четное д=3, п кратное 3 Рис. 4.4.3 'п/3-k о/5-3 п/3-2 п/3-1
шается количество дополнительных сумматоров, но по- является аппаратура, необходимая для ввода отрица- тельных частичных произведений. В основном же струк- тура матрицы и ее свойства сохраняются. Матричные умножители на рис. 4.4.3 изображены, как отмечено, в несколько упрощенном виде — не пока- заны, в частности, схемы, формирующие частичные про- изведения, не показаны входы, через которые поступают Разряды Рис. 4.4.4 частичные произведения, одинаковым образом изобра- жены и сумматоры, и полусумматоры и т. д. Характер упрощений можно увидеть, сравнив схему типа III, по- казанную на рис. 4.4.3 в первой колонке, с этой же схе- мой, приведенной на рис. 4,4.4 в более подробном виде. В устройстве, показанном на рис. 4.4.4, складываются п частичных произведений, по п разрядов в каждом. Номера частичных произведений проставлены около стрелок, указывающих места ввода отдельных разрядов частичных произведений. Одноразрядные сумматоры и полусумматоры изображены в виде квадратов. Схемы во второй и третьей колонках на рис. 4.4.3 показаны для п, кратного соответственно двум и трем. Если это условие не выполняется, то количество этажей сумматоров получается равным соответственно величи- нам п/2—1 и п/3—1, округленным до ближайшего боль- шого целого. Структура устройства и его свойства при этом практически не изменяются. 182
Йи на рис. 4.4.3, ни на рис. 4.4.4 не показан узеЛ формирования частичных произведений. В простейшем случае (<7=1) этот узел содержит п2 двухвходовых схем И, формирующих п2 сигналов atCj (i=l, 2, ..., n; j= = 1, 2, ..., n), где ai, Cj — раз£яды сомножителей. Вы- работанные (одновременно^Пжгналы являются двоич- ными цифрами, стоящими в разрядах частичных произ- ведений (и произведений по п разрядов). Расставленные друг под другом в соответствии с весами разрядов, эти частичные произведения образуют матрицу, почти совпа- дающую по форме с матрицами, стоящими на рис. 4.4.3 в колонке q=l. Теперь каждый кружок изображает одну цифру одного частичного произведения. (Можно сказать, что при этом на рисунке не показано только младшее частичное произведение, занимающее разряды с (п-(-1)-го по 2л-й включительно. Чтобы ОУ «зарабо- тало», остается только наложить матрицу частичных произведений на матрицу сумматоров, т. е. соединить выходы схем И с соответствующими свободными вхо- дами сумматоров. При этом, очевидно, цифры, находя- щиеся в одной колонке матрицы чисел, можно подавать на входы соответствующей колонки сумматоров в лю- бом порядке, т. е. цифры в колонке можно менять мес- тами. Если q>l, то количество частичных произведений уменьшается в q раз (при п, кратном q), а каждое из них удлиняется с п до n+q разрядов. При q, равном 2 или 3, ОУ приобретает форму, показанную в соответ- ствующем месте рис. 4.4.3. Пример полной схемы ОУ ти- па II (ее можно также считать схемой типа IV) для случая /1=6, <7=2 приведен на рис. 4.4.5, на котором, кроме самой матрицы сумматоров, показаны также до- полнительный сумматор, вырабатывающий утроенное множимое, и схемы формирования частичных произве- дений. Пустые прямоугольники на этом рисунке изо- бражают одноразрядные сумматоры и полусумматоры. Устройство типа I (<7=2) описано в работе [1], с. 451. Там же имеются полные схемы ОУ типа I, q=\ (с. 438), типа III, <7=1 (с. 445), типа IV, ?=1 (с. 448) и др. Из рис. 4.4.3—4.4.5 видно, что на выходах ОУ фор- мируется готовое 2п-разрядное произведение. На этих рисунках не показаны дополнительные ин- верторы, которые нужны для «фазировки» сигналов при использовании сумматоров, изображенных на 183
О4— & оь-ПП+г/з +Z/5 а5-_ а6- & +з/з н_ S1 5г S3 St,. ss Рис. 4.4.5 рис. 4.4.2,д, е, так как в матрицах такого типа могут встречаться не только прямые, но и инверсные сигналы. Рассмотрим условия, при которых возникает подоб- ная необходимость. Для этого отметим прежде всего, что любая из структур, приведенных на рис. 4.4.3, может быть разделена на части, каждая из которых состоит из трех или четырех одноразрядных сумматоров, соединен- ных между собой «но кольцу» (рис. 4.4.6). Рассмотрим вначале кольцо из четырех сумматоров. Нетрудно убе- диться в том, что, как показано на рис. 4.4.6,а, б, два верхних сумматора такого кольца должны быть построе- ны по одной и той же схеме, соответствующей либо 184
56 S7 Sg 5 jo 5ц Sft Рис. 4.4.5 рис. 4.4.2,д, либо рис. 4.4.2,е (для простоты сум- маторы на рис. 4.4.6 обозначаются соответственно бук- вами д или е), а каждый из двух нижних сумматоров может быть построен по любой из этих двух схем. Та- ким образом, такое кольцо может быть построено на сумматорах либо типа д, либо типа е, либо на тех и дру- гих. Однако кольцо из трех сумматоров может быть по- строено без дополнительных инверторов только в том случае, если в распоряжении разработчика имеются схе- мы типа е (см. рис. 4.4.6,в). Если же имеются только сумматоры типа д, то для «фазировки» в кольце должен |85
быть установлен дополнительный инвертор (рис. 4.4.6,г). На рисунке этот инвертор включен в цепь суммы, но, очевидно, вместо этого он может быть включен в лю- бую из двух цепей переноса, образующих «треугольник» вместе с указанным сигналом суммы. Следует отметить, что соображение относительно не- возможности построения матрицы на сумматорах типа д без использования дополнительных инверторов относит- ся не только к структу- рам, показанным на рис. 4.4.3, но также к любой матрице, в схеме которой можно выделить хотя бы один такой замкнутый контур, образованный одноразрядными сумма- торами и соединяющими их сигналами суммы и пе- реноса, в котором коли- чество сумматоров было бы нечетным. Очевидно также, что такие контуры имеются практически в любой матрице. Однако Рис. 4.4.6 их количество различно в разных типах матриц. Из рис. 4.4.3 можно заключить, что матрицы типа I и III содержат минимальное количество таких контуров («треугольников»). Для случая q=2 это количество равно (п—4)/2, а для матриц II и IV — соответственно (Зп—6)/2 и (5п—20)/2; при q=3 матрицы I и III со- держат по (п—6)/3 «треугольников» по сравнению с (5/г—18)/7 и (7п—36)/3 для матриц II и IV. При q = \ матрицы I, II, III, IV, содержат соответственно п—2, п—1, п—2, Згг—8 «треугольников». Очевидно, что дополнительные инверторы должны устанавливаться таким образом, чтобы, во-первых, не нарушалась «фазировка» сигналов в смежных контурах и, во-вторых, по возможности не снижалось быстродей- ствие матрицы. Непосредственный анализ показывает, что первое из этих двух требований может быть легко удовлетворено для всех схем, показанных на рис. 4.4.3, таким образом, чтобы количество дополнительных ин- верторов было равно числу «треугольников». Однако
далее будет показано, что для выполнения второго трё- бования может понадобиться увеличение количества до- полнительных инверторов. Перейдем к анализу процессов установления реше- ния в однородных матричньпс ОУ [9]. Выше уже отмечалось, что суммирование частичных произведений в ОУ представляет собой в общем случае сложный переходный процесс. Во время протекания этого процесса сигнал в некоторой точке устройства мо- жет несколько раз переключаться с одного уровня на другой, прежде чем принять окончательное, правильное значение. Наличие пересекающихся потоков сигналов ограничивает возможности дополнительного ускорения. В некоторых арифметических устройствах приходится также считаться и с тем, что кроме потерь времени на переходный процесс, возникающий после подачи частич- ных произведений, имеются потери времени на затуха- ние процессов в матрице после снятия всех входных сигналов. Время затухания меньше времени суммирова- ния, но и оно может быть, как будет показано в п. 4.4.3, достаточно большим. Время выполнения умножения в матричном умножи- теле зависит от схемы матрицы, от параметров исполь- зуемых элементов и от значений сомножителей. В на- стоящее время не существует простых методов точной оценки максимального времени работы в различных ОУ. Поэтому оценивать быстродействие матриц мы будет «сверху», предполагая, что переходный процесс проте- кает «наихудшим» образом. Сравнение скоростных свойств матриц, изображенных на рис. 4.4.3, можно про- вести по методике, основанной на двух следующих до- пущениях. 1) Будем считать, что все частичные произведения подаются в матрицу одновременно в момент времени /=0. (В действительности это условие не выполняется из-за разброса параметров элементов предыдущих узлов, задержек сигналов на проводниках и т. п. Кроме того, для матриц, использующих дополнительные крат- ные множимого, которые вырабатываются дополнитель- ными сумматорами, это условие может не выполняться, так как сама выработка кратных отнимает некоторое время и младшие разряды кратных появляются раньше, чем старшие. В реальном устройстве указанные допол- нительные сумматоры целесообразно делать ускорен- 187
Разряды Рис. 4.4.9 Рис. 4.4.8 ними, но лишь в такой степени, чтобы полное время работы матриц зависело только от ее структуры, но не от дополнительных сумматоров.) 2) Будем также считать, что из каждого однораз- рядного «двухтактного» («однотактного») сумматора 188
Разряды правильный сигнал пе- реноса выдается через «такт», а сумма — через два «такта» (через один «такт») после подачи на входы сумматора всех трех слагаемых. По этой методике можно построить 24 вре- менные диаграммы, соот- ветствующие 12 структу- рам матриц, показанных на рис. 4.4.3, и двум зна- чениям величины k (А=1 и k=2). На основе диа- грамм были выведены общие выражения для ко- ординат характерных то- чек этих диаграмм. На рис. 4.4.7—4.4.11 Рис. 4.4.11 приведены пять из этих диа- грамм. Точками отмечены моменты установления пра- вильных сигналов на выходах сумм всех сумматоров матриц. Для наглядности показаны диаграммы, соответ- ствующие конкретным значениям и, однако приведенные 189
Рис. 4.4.12 на рисунках точные формулы для координат характер- ных точек диаграмм соответствуют любому значению п (с тем, однако, ограничением, что п считается крат- ным q). Полученные диаграммы соответствуют гипотетиче- скому «наихудшему» с точки зрения быстродействия переходному процессу и позволяют оценивать «сверху» реальные процессы, происходящие в однородных мат- ричных ОУ. Так, например, из рис. 4.4.10 видно, что 1) перенос «медленно» распространяется вдоль каж- дого этажа до (п+1)-го разряда (пробег переносов за- держивается поступающими сверху сигналами суммы), после чего пробег продолжается «быстро»; 190
Рис. 4.4.12 2) полное время работы этой матрицы равно Зп—3 «тактам»; 3) после 2п—3 «тактов» переходный процесс зату- хает во всей схеме, за исключением сумматоров, рас- положенных во 2 ... п разрядах вдоль нижнего коая. Это означает, что, построив схему ускоренного пробега переносов вдоль указанных сумматоров, можно сокра- тить полное время работы устройства с величины Зп—3 до величины порядка 2п—2 «тактов». Построение схем ускорения в других местах матрицы с целью дальней- шего сокращения полного времени потребовало бы слишком больших аппаратных затрат. Из рисунка вид- но, что t=2n—3 «тактов» — это время формирования двухрядного кода произведения, т. е. время формирова-
ния двух чисел, сумма которых равна искомому произ- ведению. Все 24 временные диаграммы сведены в показанную на рис. 4.4.12 таблицу. Для того, чтобы выделить основ- ные особенности диаграмм, были сделаны некоторые упрощения: участки диаграмм, которые соответствуют процессу установления сигналов в основной массе сум- маторов, показаны в виде контуров; процессы пробега переносов вдоль нижнего края матрицы изображены отдельной линией. На осях координат показаны (с точ- ностью до нескольких «тактов» и разрядов) координаты (время и номер разряда) характерных точек контура *>, полное время работы матрицы Т указано точно. Рассмотрение полученных временных диаграмм по- зволяет сделать следующие выводы о свойствах и осо- бенностях рассматриваемых однородных матричных ОУ. 1) Изменение типа структуры матрицы, типа одно- разрядного сумматора или параметра q может сущест- венно изменить временную диаграмму. 2) В ряде случаев можно ускорять пробег переносов вдоль всего нижнего края матрицы (например, в схемах II и IV при <7=3), в других случаях это можно сделать только в старших п разрядах (в матрицах II, III, IV при <7=1) и, наконец, для структуры I организовать ускоре- ние практически невозможно. 3) Матрицы типа I при прочих равных условиях об- ладают меньшей скоростью, чем любые другие. Матри- цы I практически невозможно ускорить, так как для этого пришлось бы ускорять пробеги во всех этажах. Приведенные диаграммы позволяют произвести вы- бор оптимального варианта однородного матричного множительного устройства и схемы одноразрядного сум- матора. Однако при этом должен быть также учтен ряд других обстоятельств, которые не могут быть проанали- зированы в общем виде из-за большого количества воз- можных ситуаций. Основные из этих обстоятельств сле- дующие: 1) Используемая система элементов. Тип, быстродей- ствие, надежность, нагрузочная способность, габариты, стоимость различных элементов, имеющихся в распо- *> Можно считать, что координаты характерных точек указаны для п—► <», 19?
ряжении проектировщика, сам факт наличия или отсут- ствия того или иного элемента могут влиять на выбор схемы матрицы. 2) Унификация конструктивных блоков, например больших интегральных схем, на которые «разбивается» матрица и все арифметическое устройство. 3) Необходимость введения в некоторых случаях в схему матрицы дополни- тельных инверторов для «фазировки» сигналов. 4) Использование ма- трицы при других операциях. Это обстоятельство имеет особенно большое значение. Еслик например, на матрице должно выполняться деление при помощи метода без вос- становления остатка, то ма- трицы типа I и II не могут быть применены, так как они не дают возможности осуще- ствить сдвиг очередного ос- ч татка. Для реализации тако- го метода деления может быть использована матрица III или IV. Первая из них наилучшим образом подходит в том случае, когда очерел/ ной остаток должен получаться в однорядном коде, а другая — если остаток формируется в двухрядном ко- де. Если предполагается осуществлять^деление при по- мощи одного из методов, использующих умножение (§ 5.3), то пригоден, вообще говоря, любой тип мат- рицы. Полученные временные диаграммы однородных мат- ричных ОУ позволяют выбрать такие места установки дополнительных инверторов (необходимых для «фази- ровки» сигналов в случае использования одноразрядных сумматоров типа д), чтобы быстродействие матрицы не изменилось. Сопоставление схем и диаграмм позволяет сделать вывод, что во всех схемах, кроме трех (II, q=2\ III, t/=2, 3), можно установить инверторы таким обра- зом, чтобы их количество было равно количеству «тре- угольных» контуров и при этом задержки, вносимые инверторами, не отражались на величине Т. В трех от- меченных случаях дополнительные инверторы следует 13—1013 193
устанавливать так, как это показано в упрощенном виде крестиками на рис. 4.4.13. Количество инверторов при этом должно превышать число «треугольников» (см. табл. 4.4.1), зато инверторы не располагаются на «кри- тических» путях распространения сигналов. Таблица 4.4.1 Тип матрицы Количество „треуголь- ных- контуров Количество дополнительных инверторов I, <7=1 n — 2 /2 — 2 /2—4 /г—4 I, q ~ 2 2 ~2~" n — 6 /2 — 6 I, q = 3 3 "V П, ?=1 n — 1 /2 — 1 3n — 6 I 7/г — 18 I П, 7 = 2 2 1 ‘ ] _5n— 18 5/2 — 18 II, q=3 7 7 III, q=l /2 — 2 /2—2 n — 4 Г 3/2 — 12 1 III, q = 2 2 1—4—] n— 6 2/2— 12 / /г Г п 1 \ III, q=3 3 3 2( 6 [ 6 ]/ IV, q=l 3/2 — 8 Зп—8 5л — 20 5/г— 20 IV, q=2 2 2 7n—36 7/г— 36 IV, q = 3 3 3 Из табл. 4.4.1 и временных диаграмм видно, в част- ности, что при q=2 и использовании сумматоров типа д матрица III, обладая таким же быстродействием, как матрицы II, IV, и лучшим быстродействием, чем схема I, содержит значительно меньше дополнительных инверто- ров. Матрицы III впервые были описаны, по-видимому, в работе [10]. 194
4.4.3. АНАЛИЗ ПРОЦЕССОВ «ЗАТУХАНИЯ» В ОДНОРОДНЫХ МАТРИЧНЫХ ОУ Если на матрице после умножения выполняется дру- гая — более простая и более быстрая — операция (на- пример, сложение), и если при этом пауза между кон- цом умножения и началом следующей операции мень- ше, чем время «затухания» сигналов в матрице, которое имеет место после установления всех входных сигналов в матрице в нулевое состояние, то время затухания должно учитываться при расчете времени выполнения следующей операции. При необходимости должны при- меняться аппаратные средства защиты от такого влия- ния. Например, можно при помощи специального сиг- нала «отсоединять» выходы верхних этажей матрицы от нижнего этажа, в котором могут производиться опера- ции сложения-вычитания. Поэтому изучение процессов затухания в матричных ОУ, как и процессов установления решения, имеет опре- деленную ценность. За- дача анализа процессов затухания, по-видимому, впервые была поставлена в работе [41]. Процессы затухания могут быть рассмотрены по методике, основанной на следующих допуще- ниях. 1) Все частичные про- изведения становятся равными нулю одновре- менно в момент /=0. 2) Из каждого одно- разрядного сумматора Рис. 4.4.14 двоичного правильный сигнал переноса (нуль) выдается через «такт» после подачи на вход двух правильных (т. е. нулевых) сигналов слагаемых, а сигнал суммы (тоже нулевой) вырабатывается через «такт» после подачи всех трех (нулевых) слагаемых. Правила эти едины для «однотактных» и «двухтакт- ных» сумматоров. Справедливость данного утверждения следует из рассмотрения схем, приведенных на рис. 4.4.2. 13* 195
ГТо указанной методике были построены временные диаграммы для всех матриц, изображенных на рис. 4.4.3, и были выведены точные формулы для координат ха- рактерных точек этих диаграмм [41]. Одна из 12 диа- грамм приведена на рис. 4.4.14. Она соответствует кон- 196
Полученные диаграммы в упрощенном виде сведены на рис. 4.4.15 в общую таблицу, как это было сделано раньше для процессов установления решения. На рисун- ке указаны точные значения полного времени затуха- ния Т3 и приближенные значения координат характер- ных точек (как и выше, точные формулы заменены приближенными лишь для наглядности). Из рассмотрения временных диаграмм видно, что за- тухание в матрицах типа I происходит медленнее, чем для остальных трех типов. При q=l матрицы II—IV обладают практически одинаковой скоростью затухания, а при ?=2, 3 в мат- рицах II и IV затухание происходит несколько быстрее, чем в матрице типа III. Видно также, что процесс зату- хания практически не может быть ускорен. Диаграммы затухания, как и диаграммы установле- ния решения, могут быть использованы для выбора типа однородной матрицы и схемы одноразрядного суммато- ра. Они позволяют выбрать необходимые меры защиты в тех случаях, когда наличие затухания приводит к сни- жению быстродействия арифметического, устройства. Следует отметить, что принятое в этой главе за еди- ницу измерения времени время одного «такта» хотя и было определено как максимальное время задержки со- ответствующего элемента, в действительности может быть приравнено к величине, лишь немного превышаю- щей среднее время срабатывания такого элемента. Это объясняется тем, что в длинной цепочке последовательно соединенных элементов вероятность большого отклоне- ния суммарной задержки от величины, равной сумме средних задержек, весьма незначительна. Эта особен- ность «однопроходных» (однотактных, безцикловых) арифметических и иных устройств вообще и матриц сумматоров в частности обеспечивает, по существу, до- полнительное ускорение их работы и повышение надеж- ности [1, с. 442—443]. 4.4.4. МНОГОСЛОЙНЫЕ ОДНОТАКТНЫЕ МАТРИЧНЫЕ УМНОЖИТЕЛИ 1°. Будем называть многослойным такой матричный ОУ, построенный на одноразрядных двоичных суммато- рах и полусумматорах, в котором имеется хотя бы один одноразрядный сумматор или полусумматор, на входы которого поступают выходные сигналы суммы из двух 197
или трех других одноразрядных сумматоров. Иными словами, в многослойном матричном ОУ одноразрядные сумматоры, относящиеся к данному разряду устройства, не вытянуты в цепочку, как это было, в частности, в однородных структурах, рассмотренных в и. 4.4.1—4.4.3, а образуют некоторое ветвящееся «дерево». Можно предложить очень много структур ОУ, кото- рые будут соответствовать приведенному только что определению. Мы рассмотрим только некоторые, наибо- лее известные построения. Разберем некоторые общие свойства, которыми об- ладает большинство многослойных построений, рассмат- риваемых в этой книге [46]. Будем считать, что ОУ состоит из ряда последова- тельно соединенных слоев: выходные сигналы z-ro слоя являются входными сигналами (г‘+1)-го слоя (i= = 1, 2, ...). На входы каждого r-го слоя из предыдуще- го, (i—1)-го слоя поступает Пг-i чисел. Аппаратура t-ro слоя обрабатывает (складывает) по некоторым одинако- вым для каждого слоя правилам эти числа и выраба- тывает гц других чисел, поступающих на следующий, (г’+1)-й слой. Сумма чисел, имеющихся на входах или на выходах любого слоя, равна одной и той же вели- чине— произведению .исходных сомножителей А и С. В дальнейшем мы увидим, что во многих известных и рассмотренных ниже многослойных ОУ функция удовлетворяет следующим пяти условиям. Условие 1. Любому целому положительному со- ответствует единственное целое положительное rii, т. е. функция —однозначная. Условие 2. Пг<Пг-1 при Пг-1 > 2 (/= 1,2,.. .) (т. е. если на входы любого слоя поступает более двух чисел, то на выходах этого слоя получается меньше чис- сел, чем поступило на входы). Условие 3. + («4-1 = 1, 2, ...) (т. е. количество Пг чисел на выходах слоя не может убывать при увеличении количества чисел на входах слоя)*). *) Предполагается, что изменение количества чисел на входах слоя сопровождается соответствующей перестройкой аппаратуры слоя. 198
Условие 4. + (ni-! = l, 2, ...). Условие 5. Для любого числа Af, как бы. велико оно ни было, существует такое n'i-i, что nC>N при всех nt-C>n'i_\. Иными словами, lim =оо. В дальнейшем мы увидим, что указанные условия выполняются не только в многослойных ОУ, построен- ных из одноразрядных сумматоров, но и в ОУ, построен- ных из параллельных счетчиков*) (см. п. 4°, 5°, 9°, 10°, 11°, 12° данного параграфа), короткоразрядных парал- лельных сумматоров (п. 6.3.1) или из специальных пре- образователей Af-рядного кода в двухрядный (п. 6.3.2). Рассмотрим несколько общих следствий, вытекаю- щих из выполнения указанных пяти условий и относя- щихся, таким образом, ко всем только что перечислен- ным многослойным ОУ (а также ко всем ОУ, которые еще могут быть предложены и разработаны и в которых тоже выполняются перечисленные условия). Следствие 1. Из условий 1, 2 следует, что количества Mi, п2, ... чисел на выходах последовательных слоев образуют последовательность, члены которой строго убывают до первого из них, удовлетворяющего нера- венству Пг^2. Обозначим номер этого члена буквой М. Будем счи- тать, что ОУ содержит М слоев**). Таким образом, ис- ходные п=/г0 чисел последовательно преобразовываются («сворачиваются») М раз так, что удовлетворяются неравенства ••• >Пм-С>Пм\ Пг>2 при пм^2. ♦) Параллельным счетчиком (k, m) называется узел, склады- вающий k двоичных цифр одинакового веса (допустим, вес равен 1) и вырабатывающий их сумму в виде m-разрядного двоичного числа. Так как максимальное значение такого числа равно 2т—1, то пг есть наименьшее целое решение неравенства 2W— Частным случаем параллельного счетчика является счетчик (3,2), который представляет собой хорошо известный одноразрядный дво- ичный сумматор. ♦*> Мы полагаем, что п0>2. 1W
Следствие 2. Из условия 1 и следствия 1 следует, что любому п соответствует единственное М, т. е. что функ- ция М (п) — однозначная. Следствие 3. Функция М (п) — неубывающая, т. е. Af(n') (п"), если п">п'. Это следует из следствия 1 и условия 3. В самом деле, при увеличении п не может уменьшиться ни одна из величин п.\, п2, ... и, следова- тельно, не может уменьшиться М. Следствие 4. При увеличении п на единицу количест- во слоев либо не изменяется, либо увеличивается на единицу, т. е. ЛГ(п+1)—Это следует из след- ствия 1 и условий 3, 4. Следствие 5. Количество слоев М может быть сколь угодно большим: ПтЛ4=оо. л->оо (из следствия 1 и условия 5). Следствие 6. Любому целому неотрицательному М соответствует некоторое максимальное значение /г, ко- торое буДем обозначать в виде г№\ Иными словами, п(м) — эт0 максимальное количество чисел, которые можно свернуть в двухрядный код при помощи М слоев. Следствие 6 следует из следствий 4 и 5*\ Отметим, что п(°)=2. Следствие 7. Из следствий 3 и 6 следует, что /г(г“1)<п(Т) (7=1, 2, ...). Таким образом, числа /г<0), пР\ /г<2>, ... образуют возрас- тающую последовательность. Следствие 8. Из следствий 3, 6, 7 следует, что при /г^З 7И(/г) = 7’, если /г(т-1)</г^п<т) (Т=1, 2, ...). Это значит, что количество слоев ОУ при любом /г^З мож- но определить, выбрав из последовательности чисел п<°), п$\ ... такие два соседних числа /г<т), которые удовлетворяют приведенному неравенству. Тогда7И(/г) = = Т. Эту методику мы будем часто использовать в даль- ♦) Выполнение условия 5 необходимо, так как если бы оно не выполнялось, т. е. если бы существовало такое X и такое что гц=Х при всех гц_^п, то при всех п^п было равно X, а М было бы равно некоторой постоянной максимальной величи- не Л7 (т. е. следствие 5 не имело бы места). При этом было бы равно бесконечности, а при не существовало бы (т. е. следствие б тоже не имело бы места): 300
йейшем. Ёсли известно врёМя т» срабатывания любого i-ro слоя и если Т1 = т2= ••• = тм=т, то величина М определяет время работы всего устройства от момента подачи п=п0 исходных чисел (частичных произведений) на входы первого слоя до получения двухрядного кода произведения; это время равно Мт. Следствие 9. Если n.i-i=n<T\ то Пг=п(т~1\ В самом деле, так как в данном случае п, чисел сворачиваются Т—1 слоями, то в силу следствия 8 Если бы оказалось, что ni<Zn<T~x\ то при увеличении «i-i на единицу и,- увеличилось бы не более чем на еди- ницу (условие 4), и стало бы равно n't, неравенство выполнялось бы и поэтому n't чисел сворачивалось бы Т—1 слоями. Но это означало бы, что n<T>+1 чисел свернуто Т слоями, что невозможно. Поэтому ni = n<-T~r>. Следствие 9, в частности, означает, что если Пг = — „(т-!), т0 щах (/ij-i) = п<т>. Этой возможностью мы будем пользоваться для вычисления величин nW. Пользуясь следствием 8, можно написать следующую систему неравенств: п^<п.<п{М\ П^<П^П{М-Х\ е . П^<пм_х<п{х\ пм = п^ = 2. Очевидно, что если мы некоторый i-н слой построим не в соответствии с функцией а некоторым другим способом, но так, чтобы при этом неравенство не нарушилось, то общее количество слоев М не изменится. В дальнейшем мы будем пользо- ваться этой возможностью для модификации рассматри- ваемых методов построения многослойных ОУ. 201
2°. Первое из многослойных ОУ, которое Мы рас- смотрим, организовано следующим образом [1, с. 454]. Разобьем множество, состоящее из п исходных сла- гаемых (частичных произведений), на непересекающиеся группы по два числа в группе. Количество таких групп (назовем их полными) равно [п/2]; кроме того, при нечетном п останется еще одна неполная группа, содер- жащая одно число. В каждой полной группе сложим два числа при помощи обычного параллельного двоичного сумматора с последовательным распространением пере- носов. Число, попавшее в неполную группу, преобразо- вывать не будем. Для преобразования понадобится, оче- видно, %i=[n/2] параллельных сумматоров, совокуп- ность которых назовем первым слоем устройства. Выхо- дами слоя будем считать [п/2] чисел, получившихся на выходах сумматоров, и число, попавшее в неполную группу, которое, таким образом, проходит сквозь слой без преобразования. Количество vj чисел, попавших в нейолную группу, очевидно, равно п—2[п/2]. Видно, что vi равно 0 или 1. Можно сказать, что в первом слое п=п0 чисел при помощи М параллельных сумматоров прёобразуется в n1 = ^ + v1=[-^-]+n.-2[-^]=n0- [4] чисел. Аналогичным образом строится каждый i-й слой, т. е. (4.4.1) Здесь Хг — количество параллельных сумматоров в г-м слое. График функции Пг=/(Иг-1) приведен на рис. 4.4.16а (с. 203). Сплошной линией показана часть графика, которая потом периодически повторяется (штрихо- вая линия). Из (4.4.1) и графика видно, что при данном методе построения многослойного ОУ выпол- няются все перечисленные выше условия (условия 1—5) и поэтому справедливы все девять следствий. Структура такого ОМУ описывается соотношениями -2Zz, nM = 2, z=l, 2,..., Af. (4.4.2)
о г 4 «1-/ а) л<т)=2, 4, 8, 16, 32, 64 б) д(т)=2, 3, 4, 6, 9, 13 в) л<г)=2, 3, 7, 15, 35, 80 б) п<т)=2, 3, 7, 127,2127— 1 22,27~i — 1 е) пМ=2, 3, 5, 9, 17, 32 (при k = 8) ж) п<г>=2, 8, 32, 128, 512, 2048 (при ;V = 8) Рис. 4.4.16. Типовой узел: а), б)—счетчики (3, 2); в) — счетчик (7, 3); г) — счетчик (15, 4); д) —счетчик (k, tn)-, е) — /г-разрядный сумматор; ж) преобразователь W—>-2, 7 = 0, 1, 2, 3, 4, 5. 203
Сумма двух чисел, получающихся на выходах послед- него, М-го, слоя, как уже говорилось, равна произве- дению АС. Из (4.4.1) видно также, что при данном ги макси- мальное значение Пг-i равно 2п,-. Поэтому в силу следст- вия 9 п(т)=2п<т-1) (Т=1, 2, ...). Так как п<°)=2, то /г<1)=4, п(2>=8, ..., т. е. n(M)=2M+i (М=0, 1, ...). (4.4.3) Первые шесть чисел п<1’> приведены на рис. 4.4.16,а. Так как для любого п есть такое Т, что пСг-П=2Г < п < 2Т+1=п<т>, то в силу следствия 8 этому п соответствует М=Т. Иными словами, M=]log2n[—1*>. (4.4.4) Например, при п=48 Л1=5 (так как п(4)=32<п^64 = =п<5)). Соотношения (4.4.3) и (4.4.4) полностью опре- деляют прямую зависимость между количеством сла- гаемых п и числом слоев М и обратную зависимость между числом слоев М й максимальным количеством слагаемых п<м). Поскольку каждый параллельный сумматор умень- шает количество складываемых чисел на единицу, то полное число этих сумматоров равно м S Л, = п-2. 1=1 На рис. 4.4.17 показано расположение чисел на вхо- дах и выходах слоев ОУ рассмотренного типа для слу- чая п=12, причем на рисунке отражена также процеду- ра завершающего сложения двух чисел, после которого получается окончательное произведение. На рисунке каждая точка изображает двоичную цифру. Исходная матрица А чисел преобразуется первым слоем в матри- цу В, после второго слоя получается матрица С, затем D и, наконец, результат Е. Каждая рамка на рисунке окружает числа, подаваемые на входы одного парал- *) ]d[ обозначает наименьшее целое число, не меньшее чем d. 204
лельного сумматора. Горизонтальными линиями соеди- нены выходные цифры каждого параллельного сумма- тора. Будем считать, что последний сумматор, преобра- зовывающий матрицу D, составляет дополнительный, (7И+ 1)-й слой устройства. Из рисунка видно, что коли- чество параллельных сумматоров равно 11, а количество одноразрядных сумматоров—146. Видно также, что максимально полное время работы рассмотренного устройства равно (Л4+1)тсм+ (2n—2)TE=]log2n[TCM+ (2п—2)те, где Тем, %е — соответственно время образования цифры суммы и цифры переноса в одноразрядном сумматоре. В самом деле, второй слой начинает работать через те+Тем после начала работы первого слоя (временем формирования частичных произведений пренебре- гаем), третий слой — еще через 2те+тСм, четвер- тый— еще через 4те+тсм- К этому времени перено- сы фактически пройдут сквозь 1+2+4 младших разрядов устройства (с 2п—1-го до 2п—8-го). В последнем слое переносы проходят разряды, остав- шиеся до первого разря- да. Кроме задержек, свя- занных с выработкой пе- реносов, имеется еще за- держка тем в каждом Номера разрядов 1 5 10 15 20 .....£ Рис. 4.4.17 слое. Из рис. 4.4.17 видно, что данное ОУ (и рису-„ ,^ нок) строились фактически по следующим правилам. 1) Исходная матрица слагаемых (частичных произ- ведений) изображена в виде параллелограмма. Ряды цифр, получаемых на выходах каждого слоя, изобра- жаются на рисунке друг под другом в том же порядке, что и рамки, отражающие соответствующие ряды аппа- ратуры (в данном случае — параллельные сумматоры) на входах слоя. 205
2) Количество п, чисел на выходах каждого i-ro слоя определяется функцией однако количество цифр на выходах одного разряда равно П{ только в не- скольких средних разрядах слоя; в крайних разрядах из-за ограниченной длины слагаемых количество цифр на выходах меньше, чем 3) Можно сказать, что аппаратура (сумматоры) устанавливались сперва так, как если бы слагаемые были бесконечно длинными числами, а потом с учетом реальной разрядности слагаемых из схемы были убра- ны все «лишние» узлы (одноразрядные сумматоры), т. е. те части аппаратуры, которые никак не влияют на рас- положение значащих цифр на выходах слоев. Можно заметить, что указанные правила однозначно определяют структуру, изображенную на рис. 4.4.17. На- зовем такую структуру «основной». В дальнейшем мы не раз будем встречаться с различными «основными» структурами ОУ, отличающимися между собой только тем, что вместо двоичных сумматоров в слоях будут устанавливаться некоторые другие типовые узлы. Заметим также, что, изменив сформулированные пра- вила, можно строить и другие структуры (при той же функции п,-=[(п{-1)). Например, если изъять первое из трех правил, то можно получить множество структур, 206
одна из которых показана на рис. 4.4.18. Количество слоев М при этом не меняется. 3°. В соответствии с замечанием, сделанным в конце п. 1°, можно несколько видоизменить конструкцию толь- ко что рассмотренного устройства, сохранив то же самое количество слоев Af=]logno[—1- Попробуем, например, уменьшить до предела количество параллельных сум- маторов в первом слое. Поскольку должно выполняться неравенство п(м-2)<П1^п(м-1)( (4.4.5) то количество сумматоров Л1=[п0/2] можно уменьшить до величины = п0 - и (М~1) = п, - 2м = п, - 2,1ое*"*1-1 . Эти A.'i сумматоров складывают попарно 2X'i чисел, а остальные п0—2X'i чисел пропускаются сквозь слой без преобразования. Тогда на выходах первого слоя по- лучается /h=Vi+ (п0—2Vi) =n("-o=2" чисел, что соответствует правой границе неравенства (4.4.5). Остальные слои должны быть построены по ста- рым правилам, т. е. Xi= [nt-t/2] (i=2, 3, ..М). Оче- видно, что при этом ns = -y-=n(M-2) = 2M-1» = Количество слоев М, как мы видим, сохраняется. Ин- тересно, что количество параллельных сумматоров в данном случае тоже не меняется: (п0—2м) + 2м"1 + 2м-2 + ... +2’ = п0—2. На рис. 4.4.19 отражена такая модифицированная структура для случая и=12. Кроме того, что ni = n<3>=8 (в отличие от П1=6 на рис. 4.4.17), п2=4, п3=2, из 207
£ис. 4.4.19 виден eilxe ряд особенностей новой структуры. Правила, по которым строилась новая структура, можно сформулировать следующим образом. 1) Аппаратура устанавливается так, чтобы количест- во цифр nit на выходах каждого j-го разряда каждого i-ro слоя удовлетворяло неравенству 2) В каждом слое устанавливаются только такие узлы (в данном случае — одноразрядные сумматоры), изъятие любого из которых приведет к невыполнению требования 3) Узлы в слоях используются «максимальным» об- разом (задействуется как можно больше входов этих узлов; на рис. 4.4.19 показано, в частности, что исполь- зуется даже вход переноса младшего разряда парал- лельного сумматора). Устройство, построенное по указанным правилам, бу- дем называть «экономичным». Из рис. 4.4.19 видно, что в данном случае «экономичное» ОУ содержит столько же слоев (4), что и основное, столько же параллельных сумматоров (И), но количество одноразрядных сумма- торов существенно уменьшилось (132 вместо 146). Мало того, уменьшилось и время работы устройства. Из ри- сунка видно, что теперь оно равно (2п—2) при ТеТем, (2п—4)те+2тсм при теСтсм- «Экономичные» структуры мы будем встречать и в дальнейшем. В силу следствия 8 «экономичную» мо- дификацию можно построить для любого ОУ, удовлетво- ряющего условиям 1—5. Можно заметить, что сформулированные правила по- строения «экономичной» схемы допускают различные построения, т. е. не определяют структуру ОУ одно- значно. Кроме основной и «экономичной», можно было бы предложить множество других модификаций, но мы этого делать не будем. • В табл. 4.4.2 в качестве еще одного примера приве- дены величины п{ и основной и «экономичной» струк- туры ОУ рассмотренного типа для случая ло=48. Основной недостаток обеих модификаций рассмотрен- ного устройства состоит в том, что в них нецелесообраз- но делать ускоренным сумматор последнего, М-Н-го 208
ёлоя, так Как распространение переноса в нем все равнд задерживается сумматорами предыдущих слоев. Анало- гичное положение мы наблюдали в однородных матрич- ных ОУ типа I (см. рис. 4.4.7). 4°. Этот недостаток объясняется тем, что внутри каждого слоя происходит распространение переносов от младших разрядов к старшим. В дальнейшем мы рас- Таблица 4.4.2 О 1 2 Основное ОУ .Экономичное" ОУ п1 1 п1 X. 1 48 48 24 24 32 16 12 12 16 .16 Основное ОУ .Экономичное" ОУ __"L_ ъ п‘ ъ 3 6 6 8 8 1 3 3 4 4 2 1 2 2 смотрим ряд структур ОУ, в которых будет достигаться высокое быстродействие благодаря тому, что процессы распространения переносов внутри слоев отсутствуют. Но раньше опишем структуру, которую можно считать однослойной и которая в определенном смысле являет- ся исходной для всех последующих модификаций. Это ОУ представляет собой цепочку из 2п—1 последователь- но соединенных параллельных счетчиков (&, т). В каж- дом разряде устройства находится один параллельный счетчик, который складывает все цифры частичных про- изведений, относящиеся к данному разряду (т. е. до п цифр), и, кроме того, переносы, поступающие из не- которых счетчиков, находящихся в более младших раз- рядах устройства [21]. Такое ОУ для случая п0=12 иллюстрируется рис. 4.4.20, 4.4.21, на первом из которых показаны несколько младших разрядов устройства, а на втором — расположение чисел на входах и выходах счетчиков. На рис. 4.4.21 выходы каждого счетчика со- единены наклонной линией. Из рисунка видно, что са- мый сложный счетчик— (15,4) —стоит в 13-м разряде. Общее количество счетчиков равно 2п—1. Устройства такого типа имеют простую структуру, но обладают существенными недостатками: параллельные счетчики с большим числом входов представляют собой сложные схемы и распространение переносов вдоль це- почки счетчиков отнимает много времени. 14—1013 209
5°. Теперь перейдем к многослойным структурам, в которых нет распространения переносов внутри слоев. Изменим предыдущее устройство [21]. Будем формиро- вать произведение в два этапа — вначале получим двух- рядный код произведения, т. е. два числа, сумма кото- рых равна искомому произведению, а затем сложим эти два числа на ускоренном сумматоре. В каждом из М слоев устройства, формирующего двухрядный код произведения, в одном разряде будет стоять не более одного параллельного счетчика (k, иг). Внутри слоя связей между счетчиками не будет. Слои соединим, как и раньше, последовательно. Если на вход данного слоя в некотором разряде поступает только одна цифра, то она будет проходить сквозь слой без преобразования (две цифры в одном разряде также не будут преобразовываться, если в каждом из более млад- ших разрядов на входе этого слоя тоже не будет более двух цифр). Такое устройство для п=12 иллюстрируется рис. 4.4.22, на котором, как и на рис. 4.4.21, наклонные 20 21 22 23 24 Номера разрядов ' Рис. 4.4.20 линии соединяют выходные цифры отдельных парал- лельных счетчиков. Из рис. 4.4.22 видно, что устройство содержит всего 3 слоя; мат- рица А преобразуется в мат рицу В, затем В — в С и, на- конец, С — в D. Видно, что 1 5 10 15 20 Переносы из колонок матрицы А Произведение Количество входов счетчиков 2 3 56 7 8 9 10111213141514151210 9 В 7 5 4 2 Рис. 4.4.21 210
максимальное количество входов одного счетчика в та- ком устройстве равно п. Из описания способа построения слоев следует, что данному ni-i соответствует nt, являющееся наименьшим целым числом, удовлетворяющим неравенству 2"'- Отсюда следует, что n,= [1 о g2 я/-1 ] +1. (4.4.7) График функции nl=f(nt-\) показан на рис. 4.4.165 (с. 203). Из описания этой зависимости видно, что и в данном случае условия 1—5 выполняются. Так как max(n,-i) =п<т> при га1=п<т~1) (следствие 9), то из (4.4.7) выводится: s'r-" = log,(nm + l). т. е. С7*—1) я(Г) = 2л -1. (4.4.8) Вычисленные при помощи соотношения (4.4.8) не- сколько первых величин п<т> приведены на рис. 4.4.165. В силу следствия 8 М—Т при Например, Л4=3 при п=48, так как п(2)=7<п<127=п(3>. Последовательность чи- сел п( для этого примера имеет такой вид: 48, 6. 3, 2. Видно, что при ис- пользовании данного ме- тода п!П стремительно увеличивается с ростом Т. Для реальных значений п количество слоев не пре- вышает величины 2—3. Следует отметить, что цо появления работы [21] этот метод сложения мно- жества чисел был предло- жен в [42] в более общем виде для систем счисле- 14* 211 » 5 10 15 20 Рис. 4.4.22 и
ния с произвольным основанием г. Для г=2 в [42] была приведена таблица величин п(т\ Эта же таблица в [21] содержала ряд неточностей: в качестве л<3>, п<4>, п<5> вме- сто 127, 2127—1,22 —1—1 было указано: 15, 32, 64. 6°. Только что описанный метод обеспечивает весь- ма малое число слоев, но для использования метода нужны параллельные счетчики, имеющие до п входов. При больших п такие узлы громоздки. Поэтому целе- сообразно рассмотреть методы, позволяющие использо- вать параллельные счетчики (k, т) с ограниченными k. Одной из самых первых работ в этой области была работа [42] В. М. Храпченко, в которой описан способ ускоренного суммирования большого количества г-ичных чисел при помощи одинаковых параллельных счетчиков (k, т), каждый из которых складывает k r-ичных цифр одинакового веса. Этот способ создан независимо от работ [19, 43] и представляет собой обобщение идеи, выдвинутой в них. Многослойные матричные ОУ, по- строенные на счетчиках (k, т), с различными k, иссле- довались также в работах [17, 21] и в ряде более позд- них публикаций. Начнем со случая £=2, г=2 (в дальнейшем в этом параграфе мы будем говорить только о суммировании двоичных чисел). Использование счетчиков (2, 2), т. е. двоичных полусумматоров, при п=3 и п=4 показано на рис. 4.4.23, 4.4.24. Видно, что при п=3 устройство содержит один слой, а при п=4 — четыре слоя. Как и в предыдущем случае (рис. 4.4.22), внутри каждого слоя устройства, формирующего двухрядный код произведе- ния, связей между счетчиками нет. Отличие состоит в том, что теперь в одном разряде одного слоя могут находиться несколько счетчиков (при п=4 в 5-м раз- ряде 1-го слоя и в 4-м разряде 2-го слоя стоят по два счетчика). Рассматривая структуры при больших п, можно убе- диться в том, что количество слоев в устройстве, по- строенном на счетчиках (2, 2) по этому методу, при- мерно равно 3,7п—10,4 *>. Такие устройства, конечно, слишком медленны. 7°. Перейдем к случаю k=3. К настоящему времени предложено значительное количество методов построе- *> Погрешность этой эмпирической формулы при п^80 не пре- вышает + 1,8. Формула М=2п~2 из [21] неверна. 212
ния многослойных ОУ на счетчиках (3, 2), т. е. на одно- разрядных двоичных сумматорах. Рассмотрим одно из самых первых предложений [17, 18]. На рис. 4.4.25, взятом из работы [21], показано рас- положение чисел на входах и выходах каждого слоя предложенного устройства для случая п=12. Принцип построения такого ОУ состоит в следующем. В первом слое устройства расположены Xi=[n/3] рядов одноразрядных двоичных сумматоров. Соответ- ственно п исходных слагаемых делятся на непересека- 123455 в Рис. 4.4.23 12345678 • • • • 1 S 10 15 20 гггггггггггг* 7//Z: • ///л::- Рис. 4.4.24 *...............*--------- Е Рис. 4.4.25 ।—юшш" д ющиеся группы: Х1==[п/3] полных групп по 3 числа каждая и одна неполная группа, содержащая vi = =п—3[п/3] чисел (vi = 0, I или 2). Каждый из Xi рядов сумматоров складывает 3 слагаемых соответствующей полной группы (каждая такая тройка чисел на рисунке обведена рамкой) и вырабатывает два числа — ряд по- 213
разрядных сумм и ряд поразрядных переносов, т. е. преобразовывает трехрядный код в двухрядный. На выходах первого слоя образуется «грядный код, причем «1=2X1 + vi=2 [п0/3] + по—3 [по/3] = п0— [по/3] (vi слагаемых неполной группы проходят сквозь слой без преобразования). На рис. 4.4.25 Xi=4, vi=0, пх—8. Короткими черточками на этом и следующем рисунке перечеркнуты линии, соединяющие выходные цифры тех одноразрядных сумматоров, которые складывают по две цифры и поэтому могут быть заменены полусумма- торами. Аналогичным образом во втором слое располагаются Хг= [П1/3] рядов одноразрядных сумматоров. Второй слой заменяет «i-рядный код п2-рядным, причем /l2==2X24-V2, где V2=ni—ЗХ2. На рис. 4.4.25 Х2=2, V2=2, п2=6. Та- ким же способом строится каждый i-й слой, т. е. ni=2Xi+vi=2[ni-1/3] -f- (jti—i— -3[n<_,/3]) =Пг-х- [n;-i/3]. (4.4.9) График функции ni=f(n,_i) приведен на рис. 4.4.166 (с. 203). Из графика и из (4.4.9) видно, что условия 1—5 выполняются. Структура такого ОУ описывается соот- ношениями: H,=:2Xi + ‘Vi, 1/3], Vi—tii-i—3%i, пм=2, i=l, 2, ..., М. При ni=n(r-I> максимальная величина Пг-1 = п(т> получается, очевидно, в том случае, когда слой содер- жит Х= [fti/2] рядов сумматоров, т. е. каждой паре чи- сел на выходах слоя соответствует 3 числа на входах слоя. При этом сквозь слой без преобразования прохо- дят v=tii—2Х чисел (v равно 0 или 1). Поэтому С помощью этого соотношения можно рассчитывать по- следовательность величин несколько первых из них приведены на рис. 4.4,16,6, 214
Как и раньше, Af=T прй n(T-1)<n<n(T>. (4.4.11) Например, Л1=9 при п=48, так как п(8>==42<п^63=п(9). Последовательность чисел пг для этого примера можно определить при помощи формулы (4.4.9): 48, 32, 22, 15, 10, 7, 5, 4, 3, 2. В работе [44] указано, что при использовании дан- ного метода M = ]logL-?-[ (4.4.12) ИЛИ M=llog3-Я-Н*’- (4.4.13) J 2 Сравнивая (4.4.12), (4.4.13) с (4.4.4), мы видим, что число слоев существенно увеличивается, но следует учи- тывать, что задержка в каждом слое теперь равна лишь времени срабатывания одного одноразрядного сумма- тора. Относительно структуры ОУ, соответствующей рис. 4.4.25, можно отметить, что она относится к классу «основных» структур, так как построена по правилам, приведенным в конце п. 2° данного параграфа. 8°. Опишем «экономичную» модификацию только что рассмотренного устройства [21]. В соответствии с пра- вилом, изложенным в 3°, во-первых, поставим в первом слое не Xi=[n0/3] рядов сумматоров, a X'i = n0—п^м~^ рядов. Тогда m = 2V1+ (п0—3V]) В каждом из остальных слоев, как и в предыдущем устройстве, количество рядов сумматоров будет равно ^г=[иг-1/3]. При этом, как уже отмечалось, п2=п(м~2\ п3=п(м-3), , Пм=п(°')=2. Во-вторых, каждый ряд сум- маторов в каждом слое будем максимально укорачивать с обеих сторон (до тех пор, пока дальнейшее укорачи- вание будет приводить к тому, что будет получаться большим, чем n(M-f)). Рис. 4.4.26 отражает структуру ♦> ]d[ обозначает наименьшее целое число, не меньшее чем d. 215
10 15 20 9 А какого «экономичного» ОУ (п= 12, как и на рис. 4.4.25). Из рисунка видно, что теперь в первом слое устройства устанавливаются только те одноразрядные сумматоры, при отсутствии любого из которых количество чисел пх на выходах слоя было больше, чем n(M-1)=n<4)=9. При этом одноразрядные сумматоры заменяются полусумма- торами (отмечены черточками) там, где это возможно. Аналогичные меры приняты и в остальных слоях. Срав- нивая последние два рисунка, можно увидеть, что количество слоев в «экономичном» устрой- стве такое же, как в предыду- щем, а объем аппаратуры меньше. Можно показать, что «эко- номичное» ОУ этого типа со- держит (и—1)(п—2) однораз- рядных сумматоров и полусум- маторов. Эта величина мини- мальна для любого ОУ, по- строенного из таких узлов и формирующего двухрядный код произведения. В данном случае (рис. 4.4.26) это коли- чество равно 11-10 = 110, т. е. на 26 меньше, чем в предыду- щем устройстве. Следует отметить, что до появления работы [21] прак- тически такой же метод по- строения многослойных ОУ на счетчиках (3, 2) был описан в работе [17]. Основное отличие состояло в том, что в [17] рассматривалось «усеченное» устройство, содержащее п основных и не- сколько дополнительных разрядов. 9°. Допустим теперь, что в распоряжении разработ- чика имеются счетчики (7, 3) и (3, 2)*} [21]. Каждый слой будем строить способом, который в определенной В г •::: жгггггггггггхгл С д 4 5 уггггггггггггггггггл: • F Рис. 4.4.26 ♦) Наличие счетчика (3,2) при этом не меняет существа задачи, так как он может быть заменен счетчиком (7,3); вообще любой счетчик (ki, mi) может быть заменен счетчиком (&2, ^2) при k^ki (на ^2—ki лишних входов подаются нули, но, конечно, счетчик (£ь mi) проще, чем (k2, т2)). 216
степени аналогичен предыдущему. В каждом i-м слое поставим Ki= [гц-,/7] рядов счетчиков (7, 3). Один та- кой ряд преобразовывает 7-рядный код в 3-рядный. Остальные —71,- входных чисел i-ro слоя либо про- ходят сквозь слой без преобразования (при n,-i—7А.<^ ^2), либо преобразовываются еще одним рядом счетчи- ков (при Hi-i—71,^3). Очевидно, что при n,--t—7Х«=3 на выходах этого дополнительного ряда счетчиков обра- зуется 2-рядный, а при П;-1—7Х{>3 получается 3-рядный код. График функции nf=f(n{_i) приведен на рис. 4.4.16в (с. 203). Из описания этой функции следует, что усло- вия 1—5 выполняются. Структура ОУ описывается соот- ношениями /1г== ЗА-j-j-Vi, [И/—1/7], nz_1 —7AZ при'/г,-.! — 72z<2, 2 при п-, _, — 72; = 3, 3 при nt_x— 72z>3, (4.4.14) nM=2, i=l, 2, ..., M. В соответствии со следствием 9 максимальная вели- чина nZ-i=n(T> при получается, очевидно, в том случае, когда слой содержит %'= [nt/3] рядов счетчиков (7, 3) и Х"= [ (nz—ЗА') /2] рядов счетчиков (3, 2) (К" равно 0 или 1), a v=n<—ЗА'—2А" чисел про- ходит сквозь слой без преобразования (у равно’0 или 1). Иными словами, каждой тройке чисел на выходах слоя соответствует 7 чисел на его входах; если количество tii—ЗА' оставшихся чисел равно 2, то им соответствует еще 3 числа на входах слоя, а если ni—ЗА'=1, то соот- ветствующее число прошло сквозь слой без преобразо- вания. Таким образом, n(T)=7A'+3A"+v, К'=[п(т-^/з], V'=[(n(T-D_3V)/2], v=n<T-I>— —ЗА'—2А", 7=1, 2, ... (4.4.15) Первые несколько чисел п<т), полученные с помощью этих соотношений, приведены на рис. 4.4.16в. Как и раньше, М=Т при n(T-”<n^n<T’. Например, Л4=5 при п=48. Последовательность чисел n,z для этого примера можно получить при помощи (4.4.14): 48, 21, 9, 5, 3, 2. 2|7
Сравнивая величины «<т) на рис. 4.4.16в и б (с. 203), видим, что уже при «>4 количество слоев в новом устройстве меньше. Заметим, что можно было бы в каждом i-м слое ста- вить только ki=[ni-l/7] рядов счетчиков (7, 3), а остальные «,—7[ni—i/7] чисел пропускать сквозь слой без преобразования. Для структуры такого типа «<т)= = 7[п(т-1>/3] + —3[«(T-1)/3]) и поэтому последова- тельность чйсел «<°>, «<’>, ... изменяется*’. В новой струк- туре не выполняется условие 3, т. е. «, может убывать при росте «t-i, из-за чего количество слоев Af может быть больше, чем в только что описанной структуре, а объем аппаратуры — меньше. Подобные построения можно предложить и при использовании других типовых у«лов— счетчиков (15, 4) (см. п. 11° этого параграфа), ^-разрядных сумматоров (п. 6.3.1), преобразователей S7->2 (п. 6.3.2) и др. Такие построения на преобразова- телях А-»-2 рассмотрены в работе [45]. 10°. Аналогично тому, как это делалось в п. 3°, 8° данного параграфа, можно построить «экономичное» многослойное ОУ на счетчиках (7, 3), (3, 2). В таком устройстве после первого слоя получается «^«(м-» чи- сел, после второго — п2=«(М'-2) и т. д. Например, если «=48, то «1=35, «2=15, «з=7, «4=3, «5 = 2. Основное и модифицированное («экономичное») ОУ для случая «=12 иллюстрируются соответственно рис. 4.4.27 и 4.4.28. Видно, что количество аппаратуры во втором устройстве меньше. 11°. Теперь допустим, что многослойное ОУ строится из счетчиков (15,4), (7,3), (3,2). Рассуждения, анало- гичные предыдущим, приводят к формулам «(. = 4Z,+v,-, ^ = [«,--,/15], —15Лг при «,_, — 152(<2, ___ 2 при —15zz = 3, V‘— 3 при 3<«/_1 — 15AZ<7, 4 при «z_! — 152z>7, «м = 2, i = l, 2,..., М, (4.4.16) ♦) Возможно, что в работе [21] имелся в виду именно такой способ построения ОУ, так как в ней вместо п(5) = 80 указана ве- личина 79. 218
f- (Г—1) /i(f) = 15r + 7Z''4-3X>',4-v) Л'=[—— „(Г-D _ 4Х' з „(Г-1)4^ ЗХ" v = «<r-1) _ 4V - ЗЯ” - 2Я'”, Т= 1, 2,... (4.4.17) График функции nt=f(«г-i) и первые несколько вели- чин «<г> показаны на рис. 4.4.16г (с. 203) *>. Условия 1—5 выполняются. Из рис. 4.4.16г видно, что при 16^«^22, 36^«^78, «^>81 количество слоев в этом 1 5 10 15 20 уггггггггггггггггггг “ • Рис. 4.4.27 Рис. 4.4.28 устройстве меньше, чем в предыдущем, построенном на счетчиках (7, 3). Например, при «=48 число слоев рав- но 4 (так как 22=«<3><48<;«(4)=78). Из (4.4.16) для «0=48 получаем все остальные вели- чины «,: П] = 14, «2=4, «з=3, «4=2. 12°. При использовании счетчиков (15, 4), как и в других случаях, можно строить «экономичные» ОУ, в которых nz=n(M-i> (/=1, 2, ..., М). *) Соотношения (4.4.16), (4.4.17) приводятся здесь впервые. В работе [21] в качестве г№\ г№\ п<5> ошибочно указано 21, 61, 226. 219
В п. 6.3.1 и 6.3.2 шестой главы будут рассмотрены еще два метода построения многослойных матричных ОУ. По первому из этих методов умножитель состав- ляется из больших интегральных схем (БИС), каждая из которых является ^-разрядным двоичным параллель- ным сумматором. Второй метод предусматривает ис- пользование БИС, каждый из которых представляет со- бой малоразрядный преобразователь Af-рядного кода в двухрядный. Несмотря на такую разницу в элементной л; Зг ni-i Рис. 4.4.29 базе, структуры ОУ в обоих этих случаях родственны структурам, рассмотренным в данном параграфе. Ис- пользование ft-разрядных сумматоров и преобразовате- лей N-+-2 отражено на рис. 4.4.16дас (с. 203). Кроме методов, отображенных на рис. 4.4.16, сущест- вуют и другие. Например, в [47] рассмотрены много- слойные ОУ, в которых типовым узлом является сум- матор, складывающий г ^-разрядных двоичных чисел и вырабатывающий их сумму в виде одного d-разрядного числа (подобный узел можно выполнить в виде постоян- ного запоминающего устройства, содержащего 2rk чисел по d разрядов каждое). Предлагается выбирать такие г и k, чтобы d было кратно k. Цепочка (ряд) таких сум- маторов преобразовывает группу из г многоразрядных чисел в s чисел, причем d=sk, r=2(s-1)ft4-2<s“2)ft+ ... +1. График ttj=f(n,_i) для такого ОУ показан на рис. 4.4.29 (выбран случай r=9, k=3, d=6, s=2). Видно, что условие 3 не выполняется, если г—1>$ (оно 220
выполняется только при r=3, k=l, d=%, s = 2, что coot- ветствует методу, отраженному на рис. 4.4.166 (с. 203) и являющемуся, таким образом, частным случаем мето- дов, рассмотренных в [47]). 5. БЫСТРОДЕЙСТВУЮЩИЕ СИНХРОННЫЕ устройства для деления Методы ускорения деления до недавнего времени были разработаны меньше, чем методы ускорения сло- жения, вычитания и умножения. По-видимому, это объ- ясняется, с одной стороны, «последовательным» харак- тером процедуры обычного деления (очередная цифра частного не может быть выбрана и новый остаток не может быть вычислен прежде, чем будет получен и ис- следован предыдущий остаток) и, с другой стороны, тем, что деление — сравнительно редкая операция. В неко- торых ЦВМ непосредственное выполнение деления «об- ходится» при помощи стандартных подпрограмм, вклю- чающих умножение и сложение-вычитание. Однако в настоящее время деление включается в список опера- ций почти всех современных универсальных машин к необходимость ускорения деления следует уже из самого существования весьма эффективных методов ускорения умножения: неускоренная операция деления теряет смысл при ускоренных сложениях-вычитаниях и умно- жениях, так как в этом случае подпрограмма деления может обеспечить большую скорость, чем аппаратное решение. Нужно отметить, что за последние годы по- явился ряд новых мощных синхронных методов ускоре- ния деления и разработка новых методов продолжается. Основные из известных методов рассмотрены в этой главе. Синхронные методы ускорения деления удобно раз- делить на две группы: ускорение деления, в каждом цик- ле которого выбирается одна или несколько цифр част- ного и вычисляется новый частичный остаток*), и *) В дальнейшем будем называть несдвинутый частичный оста- ток просто остатком и обозначать как Вг, делимое и делитель будем обозначать соответственно буквами А и С. 221
передается результат вычитания, во втором (0=1) — цифра уменьшаемого (разряд предыдущего остатка). Вся схема состоит из ярусов (рис. 5.1.2), в каждом из которых производится вычитание делителя С из удвоен- ного предыдущего остатка, поступающего с выходов предыдущего яруса. Вдоль яруса при этом распростра- няются сигналы Р, G займа (см. рис. 5.1.1 и 5.1.2). Рис. 5.1.2 Сигнал займа в старшем разряде яруса определяет знак разности 2Bi—С (и очередную цифру частного) и управляет выработкой сигналов S во всех элементах дан- ного яруса. На рис. 5.1.2 «расписан» пример деления .4=0,100 на 0=0,101, при котором получено частное 0=0,11001 и остаток В6=0,П; точное соотношение между А, С, Q, Bs в этом устройстве имеет вид -—=04- С С2‘ • Ускорение деления в таком устройстве достигается не усложнением алгоритма, а за счет использования ЗД4
быстродействующих миниатюрных элементов, соединен’ ных короткими регулярными связями *). 5.2. МЕТОДЫ СТЕФАНЕЛЛИ Основу методов деления, предложенных Стефанелли [5], составляют несколько алгоритмов получения обрат- ной величины 1/С двоичного делителя С, расположен- ного в диапазоне между 1/2 и 1; эти методы могут быть расширены и для вычисления частного от деления двух чисел. Формирование частного Q^l/C производится в два этапа — вначале частное вырабатывается в виде двоич- ного числа с избыточным представлением цифр, затем оно преобразовывается в простую двоичную форму. В избыточном двоичном числе Х=Х12—1+хг2—2+... в качестве цифр xi используются, вообще говоря, любые положительные или отрицательные целые числа. Основная процедура формирования обратной вели- чины делителя С=с12-1+с22-2+ ... +сп2-л предусматривает получение Q в избыточной форме Q=6Zu2°4" #12“1 + 2 4-... Произведение CQ должно быть равно, очевидно, еди- нице. Будем полагать, что оно равно двоичному числу 0,111 ... Располагая в виде матрицы частичные произ- ведения множимого С на отдельные разряды сц множи- теля Q, увидим в первой колонке этой матрицы член ci«o, во второй — члены с2Яо, cifli, в третьей — с3^о, сгЯь С102 и т. д. Основная идея метода состоит в том, что избыточные цифры at подбираются таким образом, что- бы сумма членов, стоящих в одной колонке, в точности равнялась единице, т. е. очередному разряду произве- *) Строго говоря, данный метод является частным случаем де- ления с восстановлением остатка — делением «с незавершением» (поп — performing division), при котором вычитание доводится до конца только в случае положительной разности 2Вг—С; в против- ном случае вычитание прерывается и производится сдвиг остатка (см. § 7.8). 15-1013 225
дения CQ. Легко показать, что при этом величины ai определяются соотношениями а0 = 1, = 1 -с2, = 1 -(<¥ч + с3), а8=1 — (с2а2 + с3а1 4-с4), «/ = 1 - - 2 + • • • + Ш + ci+1). В работе [5] описано матричное устройство, вычис- ляющее цифры ai по этим формулам. Устройство это весьма громоздкое, что вызвано, в первую очередь, боль- шим диапазоном возможных значений цифр ai. Напри- мер, при 12-разрядном делителе С —21 —28^: 232, —80^ai8^1579. Далее в работе [5] предло- жено последовательно три модификации метода, направ- ленные на уменьшение диапазона значений цифр ai и упрощение устройства. В последней модификации циф- ры ai не выходят из диапазона —3 ... +3, что значи- тельно упрощает вычисление величин а/ и преобразова- ние Q в обычную двоичную форму. 5.3. ВЫПОЛНЕНИЕ ДЕЛЕНИЯ ЧЕРЕЗ УМНОЖЕНИЕ В аппаратуре арифметических устройств современ- ных ЦВМ часто реализуются методы деления, исполь- зующие те или иные итерационные формулы, включаю- щие в себя умножение [6—12]. В таких арифметических устройствах частное или обратная величина делителя находятся путем последовательных приближений. В ос- нове большинства из этих методов лежит известная ите- рационная формула Уж=У/(2-{//С), i=0, 1, 2, ..., (5.3.1) используемая для приближенного вычисления величи- ны 1/С. Здесь уо, f/i, f/2, . • • — последовательные прибли- жения величины 1/С. Известно, что1 если первое прибли- жение уо не выходит из диапазона 0<у0<2/С, то уг+ ->1/С при г->оо. Чтобы ограничить сверху величины (в том числе и у0), ограничивают снизу величину С, Обычно полагают, что 1/2^С<1, 226
Пусть 6; — относительная погрешность величины Ус*. ^.=^-(1-6,). Подставив это выражение в (5.3.1), получим: что означает удвоение количества верных разрядов после каждой итерации. Количество итераций, которое нужно выполнить для получения необходимой точности результата, очевидно, сильно зависит от выбора первого приближения. Поэто- му выбору величины у0 уделяется большое внимание. Существует несколько методов выбора у0 [9]. Наиболь- шую точность (до 8—9 верных двоичных знаков в у0) обеспечивают табличные методы [9, 11, 12]. Момент окончания деления в арифметическом устрой- стве определяется не путем сравнения разности |уж—yi\ с некоторым допуском, как это бывает при выполнении деления по подпрограмме, а путем подсчета количества итераций. Например, если уо содержит 8 верных разрядов (|д0|^2~8), то для получения, скажем, 15-разрядного частного выполняют одну итерацию, для получения 30-разрядного частного нужны две итерации и т. д. •Известно большое количество различных машинных алгоритмов для реализации итерационного процесса, ос- нованного на формуле (5.3.1). Некоторые из этих алго- ритмов с целью повышения скорости сходимости итера- ций предусматривают те или иные изменения основной формулы (5.3.1) (см., например, [13], с. 535—536). Здесь будут кратко рассмотрены четыре наиболее из- вестных алгоритма. Процедуры, выполняемые по первому из этих алго- ритмов, буквально следуют самому написанию соотно- шения (5.3.1): у£> 2-у.С, у>=уЛ2~у„с)’ у£, 2-ytC, 15* 227
У^ = У> yfi, 2-yfi, yt+t=yi (2-yfi). При этом каждый цикл итерационного процесса состоит из трех последовательно выполняемых действий: умно- жения, взятия дополнения и еще одного умножения. Для удобства изложения введем обозначения: 1С, /=2 X/. Одна (/-я) итерация тогХа может быть описана соот- ношениями Xi=yi^iCi /?д=2—xz, yi=yi-iRi- (5.3.2) При i->oo величины х», Ri стремятся к 1, а уь как было отмечено, стремится к 1 / С. При втором алгоритме i-я итерация описывается со- отношениями [6, 10] Xf=Xj__i/^f_ 1, Ri=2 X/, yi=iyi—iRi 3, ...). (5.3.3) Первая итерация производится несколько иначе, а имен- но так, как при первом алгоритме: Xi=i/oC, Ri=2—xi, yi=yQRi. Величины Xi, Ri, yi при этих двух алгоритмах имеют со- вершенно одинаковые числовые значения (если прене- бречь аппаратными погрешностями), в чем нетрудно убе- диться, преобразовывая соотношения (5.3.2): Xi==yi—1 C=Cz/i—a/?!—i=X/_i/^i—1 (приходим к соотношению, используемому в формулах (5.3.3)). Отличие второго алгоритма от первого состоит лишь в том, что Xi вычисляется путем умножения x/-i на Ri-i вместо использования эквивалентной формулы Xi=yi-iC. Однако это отличие существенно влияет на ап- паратную реализацию, так как после получения Ri ве- личины yi и Xi+i могут вычисляться одновременно. 228
Итерация при третьем алгоритме (8, 10, 11] выпол- няется по тем же соотношениям (5.3.3), что и при вто- ром (для i=2, 3, ...). Отличие состоит в первой итера- ции: xi=y0C, #1=2—Xi, yi=y0ARi, где А — делимое. Величины х«, Ri при этом совпадают с аналогичными величинами, получающимися при пер- вых двух алгоритмах (если опять-таки пренебречь ап- паратными погрешностями умножений и вычитаний). Но yi в этом случае стремится к частному А(С. Третий алгоритм был реализован в арифметическом устройстве машины ИБМ 360/91 [11]. .Четвертый алгоритм был разработан в работе [7]. Очередная, i-я, итерация в этом случае состоит в вычис- лении величин ау4=ш2м, r^l+Wj, ф(=<р4-1^ (i = 2,3,...). (5.3.4) Первая итерация описывается соотношениями аУ1=1— УоС, п=1+аУ1, ф1=«/оДл. Если пренебречь аппаратными погрешностями умноже- ний и вычитаний, то третий и четвертый алгоритмы практически совпадают, так как Xi=\—Wi, Ri=rt, yi=<pt (i=l, 2, ...). Однако наличие аппаратных погрешностей приводит к тому, что вычисления по (5.3.3) и (5.3.4) протекают не одинаково. Например, в первом случае величина Ri=2—xt=2—Xi-iRi-i может быть меньше единицы, а во втором случае г/=1 + и)>=1 + и>2г-1 не может быть мень- ше единицы. Процессы накопления аппаратных и методических погрешностей для описанных в этом параграфе методов деления имеют довольно сложный характер и протека- ют при использовании различных алгоритмов по-разно- му. В настоящее время, по-видимому, не существует ме- тодов точного анализа этих процессов. Поэтому на прак- тике обычно пользуются сравнительно грубыми оценками погрешностей. Эти оценки основаны на предположении, что аппаратные погрешности разных действий (на- пример,' погрешность умножения yi-iRt в первом алго- ритме и погрешность выполняемого вслед за ним умно- 229
>кения yiC) являются независимыми случайными вели- чинами, что, вообще говоря, неверно. Погрешность после г-й итерации, т. е. разность между yi и искомым част- ным, оценивается обычно «сверху» в предположении, что аппаратные погрешности всех промежуточных дей- ствий, выполненных после начала деления, имели наи- более «невыгодные» знаки и абсолютные величины. Поскольку при каждом делении по любому из рас- смотренных здесь методов нужно выполнять несколько (обычно 4—5) умножений, то эти методы особенно эф- фективны в арифметических устройствах с быстрыми (например, матричными) умножителями. 5.4. УСКОРЕННОЕ ДЕЛЕНИЕ БЕЗ ВОССТАНОВЛЕНИЯ ОСТАТКА В этом параграфе рассматриваются различные син- хронные методы ускоренного деления без восстановле- ния остатка; описанный в § 7.8 метод деления без вос- становления остатка является частным случаем рас- сматриваемой здесь группы методов. 5.4.1. ОБЩЕЕ ОПИСАНИЕ ДЕЛЕНИЯ БЕЗ ВОССТАНОВЛЕНИЯ ОСТАТКА В общем виде синхронный метод деления без вос- становления остатка можно описать следующим обра- зом. Операция состоит из повторяющихся однотипных циклов, из которых только первый и последний несколь- ко отличаются от остальных. Во время очередного /+1- го цикла деления в устройстве вычисляется очередной остаток B/+i: Bi+i=Bir—ai+iC. (5.4.1) Здесь /-4-1=1, 2, 3, ... — номер очередного цикла деле- ния; Bi — предыдущий остаток; г — основание системы счисления, в которой производится деление*); С — дели- тель; ai+i — очередная цифра частного. Из (5.4.1) следует: k BJC^as^ + B^C. (5.4.2) i=l *) Величину г можно также определить как основание системы счисления, в которой производится предварительное формирование частного. 230
Здесь k обозначает полное число циклов деления. Таким образом, начальным остатком, т. е. первым из остатков Biy к которым применяется формула (5.4.1) для вы- числения Вж, является остаток Во- Этот начальный остаток в общем случае отличается от делимого неко- торым постоянным положительным множителем Л: k 4=^ (М-3) Г = 1 k Сумма h полученная в процессе выполнения • 1 = 1 операций в арифметическом устройстве, обычно воспри- нимается как результат деления, а остаточный член hBkjrhC составляет, таким образом, погрешность опе- рации. Каждый (i +1) -й цикл деления состоит в выборе ai+i и вычислении Вж. Выбор цифры at+i осуществляется в устройстве по некоторым правилам, включающим, в общем случае, анализ величин С, Вг и некоторые операции над ними. Остаток Sz+i, как уже отмечено, вы- числяется в соответствии с соотношением (5.4.1). Кроме того, производится «присоединение» очередной цифры частного к образованной в предыдущих циклах сум- i ме т- е- формируется величина /=1 2 atr-* + <я,(5.4.4) f=l Введем обозначение k Q = 2 air~l- (5.4.5) Z=1 Величина Q с точностью до остаточного члена Bk/rkC равна Во/С. Величина hQ с точностью до hBk/rhC рав- на искомому частному А/С: AlC=hQ+hBklr*C. (5.4.6) 331
Цифры at выбираются из некоторого множества (набо- ра) £ допустимых значений цифр: 5 = {е„ U. (5.4.7) Для определенности будем считать, что £1<Ъ< ... <U (5.4.8) Следует отметить, что соотношение, служащее для вы- числения Вж, могло бы быть записано в другой форме. Например: Bi+i=rBt—щС или •^г+1==^ (В/ , или Bw=r{Bi—aiC) и т. д. При этом изменяется форма записи соотношений (5.4.2), (5.4.3) и ряда других формул. Однако эти пре- образования формул означают только изменение наиме- нований переменных и констант и не меняют существа метода давления и его аппаратной реализации. Набор величин & (/=1, 2, ..., т) и основание г являются основными параметрами метода деления без восстановления остатка. Они в значительной степени определяют быстродействие и аппаратную сложность конкретного варианта метода. Как видно из (5.4.5), основанием системы счисле- ния, в которой формируется частное Q, является число г, а в качестве цифр аг- в r-ичных разрядах числа Q ис- пользуются величины gi, |2, . •., Будем для общности считать, что эта система счис- ления отличается от системы, в которой представляются все числа в машине (и, в частности, делимое и дели- тель). Положим, что в машине используется обычная р-ичная система с основанием р и цифрами 0, 1, 2, ... • •р— 1. Полученное частное Q должно быть преобразовано из г-ичной формы (5.4.5) в р-ичную форму Q=Sd<p-‘, (5.4.9) в которой цифры di выбираются из набора d={0, 1, ..., р— 1). (5.4.10) 382
Это преобразование может быть осуществлено в койЦё операции, однако возможно и преобразование каждого i частичного частного на каждом i-м цикле (i= t=i =1, 2, k). Можно отметить, что соотношения (5.4.1) — (5.4.3) имеют место и при синхронном делении с восстановле- нием остатка. Характерным признаком деления без вос- становления остатка является именно необходимость преобразования частного из формы (5.4.5) в форму (5.4.9). В отличие от этого, при делении с восстановле- нием остатка цифры частного сразу выбираются из на- бора (5.4.10). Поскольку учет знаков делимого и делителя и учет формы представления отрицательных чисел в машине (прямой или дополнительный код) не представляет прин- ципиальных трудностей для методов деления без вос- становления остатка, то для простоты изложения будем далее в этой главе считать, что А и С — неотрицатель- ные числа *>. Первый цикл деления может отличаться от последую- щих наличием подготовительной операции формирова- ния величины Въ=А)11, а также описанными в последую- щих разделах главы начальными преобразованиями ис- ходных значений делимого и делителя. Последний цикл деления может тем или иным обра- зом отличаться от предыдущих в зависимости от требо- ваний, предъявляемых в данном устройстве к последне- му остатку hBk. В простейшем случае остаток Вь про- сто не вычисляется. Каждый остаток Bi не должен выходить из некоторо- го: диапазона значений. Это требуется, во-первых, для того, чтобы остаточный член в (5.4.6) был бы меньше допустимой погрешности деления, т. е. чтобы этот член при достаточно большом k становился достаточно ма- лым, и, во-вторых, для того, чтобы каждый остаток Bi мог быть сформирован в некотором реальном устрой- стве. Таким образом, должно соблюдаться неравенство (5.4.11) *) В действительности представление отрицательных делимых и делителей в дополнительном коде сказывается на узлах арифмети- ческого устройства, выполняющих нормализацию делителя, выбор очередной цифры а»+1, преобразование частного и др. 233
Где Вшах и Вщщ — границы диапазона допустимых зна- чений остатка. Отметим, что должно выполняться тре- бование к. 'I (5.4.12) В самом деле, если, например, Во = £,тС/(г—1) + |6|, то даже при ai=£m получается Bi=Bor—%тС=1тС/ (г—1) + + 161 г. Выбирая далее а2=аз=. • .=ал=Вт, получаем Bk=Bo+1 д | rft, т. е. остатки S; будут непрерывно воз- растать, остаточный член в (5.4.3) будет равен [Л -^-=Л и при сколько-нибудь боль- шом |5| величиной hBk/(rhC) нельзя будет пренебречь. Если же в качестве at выбирать не £т, а другие цифры набора, то остатки будут возрастать еще быстрее. Ана- логичным образом остатки B,+i, Д+г, ... начинают не- прерывно возрастать по абсолютной величине, если В,< <&С/(г-1). Диапазоны допустимых значений величин делимого А, делителя С и частного А/ С зависят от принятой в ма- шине формы представления чисел и в общем случае заданы неравенствами Amln^A^Amax, (5.4.13) Cmln^C^Cmax, (5.4.14) (A/C)mln^A/C^ (А/С) max, (5.4.15) ГДе Amin, Атах, Cmin, Стах, (А/С)mln, (Л I С) щах кон- станты. 5.4.2. КЛАССИЧЕСКИЙ МЕТОД ДЕЛЕНИЯ Будем называть классическим обычный метод деле- ния без восстановления остатка [14]. Деление по этому методу производится в r-ичной системе счисления с ис- пользованием следующего набора допустимых величин цифр частного: g={-(r-l), -(г-2), —2, -1, 1, 2, г-1}. (5.4.16) 234
Границами диапазона (5.4.11) допустимых значений остатков для классического метода являются величины Дтах=£тС/ (г—1), 5т1п=£1С / 1), т. е. величины +С, —С. Таким образом, —C^Bi^C. (5.4.17) (5.4.18) Правила выбора очередной цифры аж для любого из описываемых в § 5.4 методов деления могут, как бу- дет показано ниже, несколько видоизменяться. В част- ности, для метода, использующего набор (5.4.16), можно предложить различные правила. Наиболее известное из них сформулировано в работе [14, с. 42] в следующем виде: если Вг^0(Вг<0), то из Вгг многократно вычи- тают (прибавляют) делитель С до тех пор, пока знак этой разности (суммы) станет противоположным знаку величины Bi *). Цифра аж при этом по абсолютной ве- личине равна числу произведенных вычитаний (сложе- ний) и имеет знак плюс (минус). Покажем, что если Bi удовлетворяет неравенству (5.4.18), то приведенное правило выбора цифры аж обеспечивает его выполнение и для следующего остатка Bi+i. Запишем величину rBi в виде гД=(Л4 + е) С, где М — целое (—г^Л4^г), а е удовлетворяет неравенству 0^е<1 (при М=г следует считать, как этого требует (5.4.18), что е=0). В табл. 5.4.1 показана зависимость ai и Вж от М, реализуемая приведенным правилом вы- бора az+i. Из таблицы видно, что новый остаток Вж находит- ся в том же диапазоне (5.4.18), что и Bi (здесь и ниже предполагается, что если rBi—рС=0, где рС — кратное делителя С, то эта разность имеет знак плюс). Допустим, что числа в машине представлены в обыч- ной г-ичной системе, использующей набор цифр d={0, 1, 2, ..., г—1], (5.4.19) *) Более точная формулировка должна была бы быть следую- щей: если В^О (В,<0), то из Bir многократного вычитают (при- бавляют) делитель С до тех пор, пока знак этой разности (суммы) станет противоположен знаку величины Bi или пока количество произведенных сложений (вычитаний) не сделается равным г—1. 235
Таблица 5.4.1 м ai + i в<+. г г— 1 гС — (г — 1) С = С Г— 1 г — 1 (г_1+е)С- — (Г— 1)С = еС 0, 1, 2 г — 2 М + 1 (Л4+»)С — —(Af + 1) С=—С (1—е) -(г-1), -(г-2), ... ..., —2, — 1 М (Af + «) С— Л4С = еС —г -(г-1) (-г + е)С+(г-1)С = = —С(1—«) и покажем, что можно сравнительно просто преобразо- i + l вывать сумму у а/"* в эту систему счисления на каж- /г=1 дом цикле деления. i + l Пусть число 2 ^tr~^ имеющее в системе с набором /=1 (5.4.16) вид О, aia2 . •. OHdi+i, после преобразования в систему с набором (5.4.19) вы- глядит так: О» dtdt... did.ti+y, т. е. равно df"* 1 -J-d'i+lr~l~l. Так как В0>0, то о,> f=i ^1 и поэтому после первого цикла деления чис- ло 0, 01 в системе счисления, использующей набор (5.4.16), и это же число 0, d\ в системе, использующей набор (5.4.19), записываются одинаково, т. е. d'i=oi. После второго цикла числа 0, aia2 и 0, did'2 также запи- сываются одинаково, если Bi>0, так как при этом а®> >0. Если же Bi<0, то я2<0 и di=d'i—1, d'3=r-Hty ?3S
Продолжая аналогичные рассуждения, приходим к тому, что если Д^О, то ai+i>0, и преобразованное частное после (i’+l)-ro цикла имеет вид О, did2 ... di-idid'i+i= =0, did% ... dt-id'itti+i, т. e. в этом случае di=:d'i, d'i+i=at+i. Если же B,<0, то af+i<0 и преобразованное частное записывается в виде 0, did2 ... di-i(d'i-l) (r+ai+i), т. е. di=d'i—1, d'i+i=r+ai+i. Таким образом, для вычис- ления суммы (5.4.4) с одновременным преобразованием частного необходимо иметь, кроме сдвигового регистра, только двухразрядную r-ичную вычитающую схему. Особый интерес представляет случай г=2, соответст- вующий рассмотренному в § 7.8 широко распространен- ному двоичному делению без восстановления остатка. Особенностью этого метода является простота выбора цифры аж, вычисления нового остатка Bt+i и преобра- зования частного: если В,^0, то a,+i=l, di=d'i=l, d'i+i=ai+i=\, если В,<0, то а,+1=—1> di=d'{—1=0, d'<+i = r-\- +a,+i=l. Если считать, что (Г+1)-м циклом называется сово- купность следующих действий: а) выбор ai+i по знаку Bi, б) выбор d{ и запись di в качестве окончательной цифры частного, в) вычисление Вж=2В<—ai+iC, то следует сказать, что всего при делении выполняется Л+1 цикл, но первый и последний из них — неполные: на первом цикле только вычисляется Bi (ai заведомо равно 1, do не выбирается), на последнем цикле только выбирается dk (так как ак+1 и Bk+i не нужны). После завершения деления точные соотношения между делимым, делите- лем, полученным частным и последним остатком Вк име- ют следующий вид: k если Bk^0, то^-=Л^- = Л d,2-' + h /=1 k если В* <0, то + <=i 257
В примерах деления, помещенных в § 7.8, констан- та h была равна 2. Ускорение обычного деления без восстановления остатка (г=2), как и ускорение деления с восстановле- нием остатка (см. § 5.1), может быть достигнуто путем выполнения устройства для деления в виде итеративной сети. Рис. 5.4.1 На рис. 5.4.1 показана одна из простейших модифи- каций такой сети, составленной из одинаковых элемен- тов. Каждый элемент (рис. 5.4.2) содержит комбина- ционный одноразрядный двоичный сумматор См и эле- мент ИСЛЮЧАЮЩЕЕ ИЛИ, реализующий функцию cq + cq и управляющий вводом делителя в сумматор. Восьмиразрядное делимое А=а0, четы- рехразрядный делитель С=с0, С1С2СзС4 и каждый остаток Bi (в частности, последний остаток В5=Ь0, й^Ьз^) представлены в дополнительном коде. Предполагается, что делимое и делитель являются положительными нор- мализованными дробями (т. е. ао=£о=О, ai=ci=l). Так как 1/2^А<1, 1/2^С<1, то частное Q=qi, qzqzqi— по- ложительное число, лежащее в диапазоне 1/2<Q<2, т. е. — целая часть этого числа. Каждая цифра част- 238
ного ^является управляющим сигналом для следующей строки матрицы, определяющим, какую операцию — сло- жение или вычитание — нужно выполнять в этой строке. Вычитание, как видно из рис. 5.4.1, 5.4.2, выполняется путем формирования дополнительного кода делителя. Ускорение деления в таком устройстве, как и в ранее разобранном устройстве (рис. 5.1.2), достигается не за счет усовершенствования алгоритма операции, а путем использования быстродействующих миниатюрных эле- ментов, соединенных короткими проводниками. Теперь рассмотрим модифи- кацию только что описанной схе- мы, позволяющую добиться до- полнительного увеличения скоро- сти деления [4]. Основная идея модификации состоит ц исключе- нии времени распространения пе- реноса вдоль каждой строки ма- трицы. С этой целью, во-первых, каждый остаток Вг в каждой строке будет вычисляться в виде Рис. 5.4.3 239
Двух чисел: числа S, составленного из Поразряд- ных сумм sy, и числа £, составленного из поразрядных переносов е, (сумма этих двух чисел равна остатку В/), и, во-вторых, перенос в знаковый разряд строки, оче- редной разряд частного и управляющий сигнал для еле дующей строки (сложить или вычесть) будут формиро ваться при помощи схемы опережения переносов. На рис. 5.4.3 показана модифицированная итератив- ная сеть для 4-разрядного делителя и 8-разрядного де- лимого. Сеть использует ячейки трех типов (Л, S, Р) и небольшую дополнительную логику., Действия, выполняемые на i-и строке матрицы (i= =1, 2, ...), соответствуют действиям, производимым во время очередного i-ro цикла обычного деления без вос- становления остатка: если ?г_1=1(0), то делитель С вычитается (прибавляется) из очередного остатка 2В^ В данном случае эта процедура выполняется следую- щим образом: 2S — s0> s2 . . • sn-2 I 2B 2£=s0, e2 . . . en-2 0 + Cpy Cj C2 . . . gft-2 cn________ S' = s'0, S'iS'2 . . . Srn-2 s'n- 1 s'n I g ef 2 . • • Cr fl— 2 л — 1 0 / Здесь n — разрядность делителя. Делитель вычитается путем прибавления дополни- тельного кода числа —С; дополнительный код получа- ется инвертированием всех цифр q и прибавлением еди- ницы (^-1=1) в младший разряд. Ячейки Р (рис. 5.4.4) содержат логику для опере- жающего определения переноса в знаковый (нулевой) разряд очередного остатка. Схема опережения в f-й строке должна выработать сигнал P=D1 + + • • • Rn- где Dj=s'je'j, —вспомогательные разрядные функции возникновения переноса и разрешения распро- странения переноса. Очевидно, что эта часть схемы за- висит от длины операндов п; для большой длины п не- обходимо использовать многоступенчатую схему опере- жения переносов (на рис. 5.4.4 показана ячейка, при использовании которой схема опережения будет одно- 240
ступенчатой только при п^З). Ячейка Р в i-й строкё матрицы вырабатывает перенос в нулевой разряд, полу- чающийся при сложении чисел s'iS'2 • • • S п—1 + е'^е'г ... e'n-t Ячейка S (рис. 5.4.4) i-й строки суммирует цифры «о, е0, со (эта сумма равна 0 или I в зависимости от того, четно или нечетно количество единиц среди цифр So, ео, Со); полученная сумма затем прибавляется к переносу а) Рис. 5.4.4 е'о, полученному при сложении с запоминанием перено- сов в соседнем элементе А (структура такого элемента показана на рис. 5.4.4). Наконец, результат суммирует- ся с переносом, полученным в элементе Р. Окончатель- ная сумма является знаковым разрядом остатка т. е. 16—1013 241
величиной qi. Сама цифра qi формируется инвертором в ячейке S следующей строки. Между делимым, делителем, частным и последним остатком (в данном случае — остатком В5) соблюдает- ся, как обычно при делении без восстановления остатка, соотношение A/C=Q + B5/24C (при В5^0), A/C=Q+(B5 + Q/24C (при В5<0). Следует заметить, что использование только одной цепи опережения переносов в каждой строке обычной матрицы (рис. 5.4.1) не привело бы к таким результа- там; понадобилось бы ускорение переносов во всех раз- рядах остатка, на что потребовалось бы большое ко- личество дополнительной аппаратуры. Именно сочетание формирования остатка в двухрядном коде и получение опережающего переноса в знаковый разряд позволяет достичь значительного ускорения деления при умерен- ных затратах. Из рис. 5.4.3, 5.4.4 видно, что общее вре- мя операции равно т (та+тр+тии), где т — разрядность частного; та— время задержки одной ячейки А; тр — время срабатывания элемента Р (здесь предполагается, что схема опережения односту- пенчатая); тии —время задержки элемента ИСКЛЮ- ЧАЮЩЕЕ ИЛИ, вырабатывающего цифру qi. 5.4.3. ГРАФОАНАЛИТИЧЕСКИЙ МЕТОД АНАЛИЗА ПРОЦЕССОВ ДЕЛЕНИЯ Прежде чем рассматривать методы деления без вос- становления остатка, использующие наборы, отличные от классического набора (5.4.16), введем в рассмотре- ние графические изображения зон на плоскости В/С [15, 17]. Эти изображения позволят нам проанализи- ровать связь между величиной г и структурой схемы вы- бора цифры a,+i. Будем считать, что границами диапазона (5.4.11) до- пустимых значений остатков В, являются величины (5.4.17), т. е. что (i=l, 2,..., £)• (5.4.20) 242
Это' означает, что при данных Bi и С можно в качестве a,+t выбрать некоторую цифру из набора если Т. е. если г(г—1)-Г г r(r- 1) г (5.4.21) или HmC (Кт £/) С (Кт— £i)C д <Г 5/n^* (Кт S/) г—1 ~ г г (г — 1) г— f г (5.4.22) Неравенству (5.4.22) соответствует рис. 5.4.5, на кото- ром на плоскости В/С заштрихована зона значений ве- личин Biy С, при которых удовлетворяется (5.4.22). На рисунке отражен некоторый конкретный случай, для ко- торого ___ (Кт — Si) б? г(г-1) >0. Тем не менее, нижеследующее изложение имеет общий характер. Нетрудно усмотреть соответствие между рис. 5.4.5 и слагаемыми в левой и правой частях двойного неравен- ства (5.4.22); слагаемое соответствует шири- не зоны цифры К,- (видно, что эта ширина не зависит от о t ч (Кт Kf) С самой величины сД слагаемое ----------соответствует расстоянию по горизонтали между правым краем зоны и прямой GL. Итак, если точка с координатами Bz, С попадает на рис. 5.4.5 в заштрихованную зону, соответствующую не- которой цифре gj, то в качестве аг-н можно выбрать эту цифру. Очевидно, что для того, чтобы процесс деления мог быть реализован при помощи некоторого набора g 16* 243
Рис. 5.4.5 между указанными зонами цифр I,-, каждая точка вну- три четырехугольника EFGL на рис. 5.4.5 должна входить в зону хотя бы одной из цифр набора. Для этого не- обходимо, чтобы на плоско- сти В{С зоны соседних цифр набора (5.4.7) перекрыва- лись или хотя бы касались друг друга, т. е. сдвиг меж- ду зонами каждых двух со- седних цифр и |j+i должен быть меньше ширины зоны или равен ей. Так как сдвиг (рис. 5.4.6) равен (S/+1—то должно выполняться требование (I/+1--1-) (Ы-£1) С/г (г-1), т. е. i/+1-|3<(^-|1)/(г-1) (/=1,2,...,т-1). (5.4.23) Из (5.4.23) можно вывести требование т^г. В самом деле, Складывая порознь левые и правые части всех этих не- равенств, получим: (т—1) (U-I1) / (г-1), откуда следует, что m>r. (5.4.24) На рис. 5.4.7 показаны зоны цифр набора (5.4.16), используемого при классическом делении (величины указаны в верхней части зон). Считается, что Стщ=0. Из рисунка видно, что зоны цифр перекрываются таким образом, что в случаях С(г—l)/r<Bi<C, 0<Bt<Cir, ^-C/r<Bt<Q, —C^Bt<—C(r—l)/r 244
должна выбираться определенная цифра набора, а именно цифра (соответственно) г—1, 1, —1, —(г—1). Для случаев Bi=pC/r (р=±2, ±3 ± (г—2)), соот- ветствующих границам зон, может быть выбрана одна из трех цифр: ± (р—1), ±р, ±(р+1). Во всех осталь- ных случаях может быть выбрана одна из двух возмож- ных цифр, так как все соответствующие участки плоско- сти BiC накрываются двумя зонами. Какая именно из Рис. 5.4.7 245
этих цифр выбирается, зависит от принятого правила выбора цифр Из рис. 5.4.7 видна также характерная особенность набора (5.4.16), заключающаяся в том, что зоны двух средних цифр (+1 и —1) не перекрываются, а только касаются друг друга. Поэтому при выборе ai+l необхо- димо знать знак остатка Bi и, следовательно, остаток должен вычисляться в арифметическом устройстве в ви- де одного числа, т. е. одно- рядного кода (схема на рис. 5.4.3 является исклю- чением). На рис. 5.4.8 показаны зоны для частного случая набора (5.4.16), соответству- ющего обычному двоично- му делению без восстановле- ния остатка (г=2). В этом случае зоны цифр не пе- рекрываются (рис. 5.4.8). Наличие перекрь/тия зон цифр на плоскости В,С отражает избыточность набора которая приводит к возможности неоднозначного представления чисел в системе счисления, использующей цифры gj. Эта воз- можность, как будет показано в следующем параграфе, позволяет в определенных случаях существенно повы- сить скорость деления. 5.4.4. ДЕЛЕНИЕ С ИСПОЛЬЗОВАНИЕМ СИММЕТРИЧНОГО НАБОРА ЦЕЛЫХ ЧИСЕЛ, ВКЛЮЧАЮЩЕГО НУЛЬ Для представления цифр формируемого частного в методах деления без восстановления остатка до недав- него времени, кроме классического набора (5.4.16), при- менялся еще только один вид наборов %: М~9, -(9-1), • •-1, 0, 1, ..., ?-1, q}, (5.4.25) где q— целое и удовлетворяет неравенству 246
Первым из методов деления, использующих наборы это- го вида, был метод [18—20], при котором r=2, | = {—1, 0,+1}. (5.4.26) Кроме того, был описан метод деления [20, 21] с па- раметрами г=4, £={—2, —1,0, 1, 2}, (5.4.27) метод [22] с параметрами г=4, 1={—3, —2, —1, 0, 1, 2, 3} (5.4.28) и метод [20] с параметрами >=10, g={—7, —6, —5, —4, —3, —2, —1, 0, 1, 2, 3, 4, 5, 6, 7}. (5.4.29) В общем виде набор вида (5.4.25) был описан в рабо- те [20]. Наборы (5.4.25) при q> (г—1)/2 являются избыточ- ными. В работах [18, 19] был предложен метод исполь- зования этой избыточности для набора (5.4.26), заклю- чающийся в том, что остаток B,+t стал вычисляться по формуле (5.4.1) в виде двухрядного кода на сумматоре с запоминанием переносов, т. е. в виде ряда поразряд- ных сумм и ряда поразрядных переносов. Это резко со- кращает время одного цикла и, следовательно, время всего деления. 247
На рис. 5.4.9 показано расположение зой длй набора (5.4.26). Избыточность набора приводит к перекрытию Таблица 5.4.2 B'i ai+i B'i ai + i 0, XXX 1, их 1 0 1, охх l.xbx — 1 — 1 вильного выбора цифры сц. зон соседних цифр и по- зволяет производить вы- бор ai+i на основе просто- го правила прямого ана- лиза старших разрядов 4исла Въ При нормали- зованном делителе (1 /2^С<1) и остатке, лежащем в диапазоне —С^В^С, для пра- достаточно знание всего лишь четырех старших разрядов двухрядного кода остатка В г. Если сложить два указанных четырехраз- рядных числа, то по полученной четырехразрядной сумме В*г можно выбрать цифру а<+ь пользуясь простой таблицей (табл. 5.4.2). Крестиками в таблице обозначены разряды, значе- ния цифр в которых могут быть произвольными. Спра- ведливость правила, отраженного в таблице, подтверж- дается рис. 5.4.9, из которого видно, что поскольку то выбор, например, ai+i=0 при В*/=1,110 (т. е. —1/4) не может привести к неправильному результату деле- ния, так как все остатки 4 1 1 4'4 независимо от величины С лежат в зоне цифры |2=0. Сплошными вертикальными линиями на этом рисун- ке отделены зоны действия дешифраторов, выбирающих цифру Oi+i (при этом следует считать, что по оси абс- цисс откладывается величина В*,): слева от прямой АБ выбирается ai+i=—1, между АБ и осью ординат выби- рается at+i=0, справа от оси ординат выбирается а,+1=+1. Этим подтверждается очевидное соображение о том, что границы зон действия дешифраторов должны проходить внутри участков перекрытия зон соответст- вующих Цифр На рис. 5.4.10 показаны зоны цифр для еще одно- го из упомянутых наборов— (5.4.27). Из рисунка видно, 248
что если аж выбирается путем прямого анализа остатка и делителя, то дешифраторы цифр в этом случае долж- ны быть значительно более сложными. Во-первых, вид- но, что кроме остатка Bi следует анализировать и дели- тель С, поскольку внутри участка перекрытия зон цифр 1 и 2 нельзя провести вертикальную прямую от прямой EL до прямой FG. Во-вторых, видно, что должно анали- зироваться сравнительно большое количество разрядов Рис. 5.4.10 чисел Bi и С. В самом деле, допустим для простоты, что Bi вычисляется в виде однорядного кода. Дешифратор любой цифры g/ может быть представлен как несколько схем И, выходы которых логически суммируются в схе- ме ИЛИ. На каждую схему И подаются несколько раз- рядов чисел Bi и С. При этом каждой такой схеме И на плоскости BiC соответствует один или несколько пря- моугольников, стороны которых параллельны осям ко- ординат. Прямоугольники, соответствующие всем схе- мам И дешифратора некоторой цифры £/, должны пол- ностью покрывать на плоскости BiC участок, правая и левая границы которого при этом оказываются состав- ленными из «лесенок», которые должны быть располо- жены внутри участков перекрытия зоны цифры с дву- мя соседними цифрами набора £. На рис. 5.4.10 показано одно из возможных разбиений плоскости на зоны дей- ствия дешифраторов. Очевидно, что дешифратор полу- чается тем сложнее, чем больше «ступенек» содержат 2^9
границы его зоны. Отсюда следует, что дешифратор тем сложнее, чем уже участки перекрытия зоны цифры g/ с зонами g/—i и gj+i и чем больше наклон участков пе- рекрытия. Для набора (5.4.25) при данных г, q максимальные наклоны имеют участки перекрытия зон крайних пар цифр (gi и ^2, gm-i и gm). Ширина участка перекрытия для набора (5.4.25), как это видно из рис. 5.4.6, равна (5m- 5i) С (£/ + 1-^.)С 2^7-r+l г г(г—1) г ''(''—О °’ При данном г эта величина тем больше, чем больше q. Максимальное значение (при q=r—1) равно С/г. Но даже при максимальном q количество ступеней в лесен- ках быстро растет, если переходить к большим значе- ниям г. Это следует из уменьшения ширины участка пе- рекрытия, равной С/r; ширина всего диапазона остатков при q=r—1 и изменении г остается постоянной: Sm^max 51^max (j Г — 1 г— 1 max- Нетрудно показать, что и для других типов наборов g при использовании метода выбора аг-н путем прямой расшифровки Bi и С дешифраторы усложняются (при прочих равных условиях) с ростом г. Количество т де- шифраторов тоже, естественно, растет, так как т^г. В работе [23] был предложен метод деления с пара- метрами r=2, g={—2, —1, 0, +1, +2}, в котором остаток В/+1 вычисляется в виде двухрядного кода, однако эти два ряда составляются не поразрядными суммами и пе- реносами обычного двоичного сумматора. Остаток Bri формируется в избыточной двоичной системе счисления (г=2) с допустимыми значениями цифр —1, 0+1. Оста- ток вычисляется с высокой скоростью, так как при этом отсутствует процесс распространения переносов. Но из- за увеличения количества допустимых цифр в наборе g и связанного с этим усложнения входных схем сумма- тора этот метод, по-видимому, не имеет преимуществ по сравнению с методами, описанными в [18, 19]. Еще один способ выбора цифры аг+1 был предложен в работе [20]. Он основан на анализе знаков прибли- женно вычисляемых разностей В —MjC (/=1, 2, . m-1), 25Q
где Л4/ — некоторые константы. Например, для набора (5.4.27) вычисляются разности в,+ 8-С, В. + 4-С. В,-±С, В, - ic. (5.4.30) На рис. 5.4.11 на плоскости В^С проведены прямые ли- нии, уравнения которых соответствуют разностям (5.4.30), вычисляемым для выбора цифры частного при Рис. 5.4.11 использовании набора (5.4.27). Знак разности указыва- ет на то, с какой стороны от соответствующей пря- мой линии расположена точка с координатами С. Очевидно, что количество констант Л4/, действительно, должно быть равно т—1, каждая прямая В{—М}С должна проходить внутри участка перекрытия зон цифр и gj+i, а сами цифры ai+r должны при этом выбирать- ся по правилу (полагаем, что Л41<Л42< ... : если Bi — МХС< 0, а/+1—если Bi — ai+1 = lp если |В.-ЛГ.С<0, 251
Из рисунка также следует, что ошибка вычисления разности Bi—MjC не должна превышать расстояния между прямой Bi—М/С=0 и границей участка пере- крытия двух зон, внутри которой проходит эта пря- мая. Поскольку m^r, то в общем с ростом г возрастает количество разностей Bi—MjC; при этом соответствен- но растут аппаратные трудности и время, требуемое для выбора очередной r-ичной цифры частного. В [24] был предложен метод, позволяющий добиться дополнительного ускорения деления без восстановления остатка в случае использования набора (5.4.26) при вы- числении Дж в виде двухрядного кода. Предложено ис- пользовать матрицу одноразрядных сумматоров, в каж- дом этаже которой определяется очередная цифра ai+t и вычисляется новый остаток В/+1. Выигрыш в быстро- действии при этом может быть весьма большим. В са- мом деле, при использовании одного /г-разрядного сум- матора для вычисления двухрядного кода Bt+i передача предыдущего остатка с выходов сумматора на его входы (с одновременным сдвигом на один разряд влево) при помощи триггерных регистров или линий задержки мо- жет отнять не меньше времени, чем само вычисление нового остатка. Матрица сумматоров в таком устройстве может служить и для выполнения умножения. При небольших величинах г (например, при г^4) и двухрядном представлении остатка матрицы суммато- ров могут быть, очевидно, использованы и для деления с другими наборами допустимых значений цифр част- ного. Из соотношения (5.4.2) следует, что увеличение ве- личины г означает, по существу, пропорциональное уве- личение скорости деления (в предположении, что время цикла остается неизменным). Например, при г=2, 4, 8, 16 за один цикл определяется соответственно сразу одна, две, три, четыре двоичные цифры частного. Основным и, по существу, единственным препятстви- ем к увеличению используемой при делении величины г является аппаратная сложность (либо большие затраты времени) выбора очередной цифры аж. В этом и пре- дыдущем разделах были описаны три основных способа выбора 1) многократное вычитание (сложение) С из гВг (для классического деления); 252
2) приближенное вычисление вспомогательных раз- ностей типа Bi—М/С; 3) прямая расшифровка величин В» и С. Значительное увеличение потерь времени или аппа- ратное усложнение схемы выбора с ростом г при использовании двух первых способов очевидны, посколь- ку с ростом г увеличивается количество цифр в наборах (5.4.16), (5.4.25) и, следовательно, для обоих способов растет число процедур сложения-вычитания. Об увеличе- нии количества и усложнении дешифраторов выбора tti+i при прямом анализе Bi и С тоже уже говорилось. В следующем параграфе этой главы будут рассма- триваться методы деления с большими значениями г. В этих методах при выборе ai+i будет производиться прямой анализ Bi и С. Следует отметить, что если оста- ток Bi формируется в виде двухрядного кода, то «лесен- ка» дешифратора не должна подходить на плоскости BiC к правой границе участка перекрытия ближе, чем на расстояние, соответствующее максимальной разности между анализируемой частью В*х остатка и точным зна- чением остатка Bit Эта разность поэтому не должна превышать ширины участка перекрытия и даже должна быть существенно меньше ее, так как в противном слу- чае количество «ступенек» и связанная с ним сложность дешифратора могут недопустимо возрасти. При больших г усложняются дешифраторы цифр (даже при одноряд- ном коде остатка). Наличие двухрядного кода остатка в силу указанного обстоятельства еще больше услож- няет эти дешифраторы, так как приводит к дополни- тельному увеличению ступеней в «лесенках». С другой стороны, если на входы дешифраторов поступают не цифры двухрядного кода, а выходы дополнительного сумматора, складывающего несколько старших разря- дов двухрядного кода (это делается для упрощения де- шифраторов), то требование уменьшить максимальную разность между В*х и Вг приводит к необходимости увеличения длины этого сумматора, что, в свою очередь, снижает выигрыш в быстродействии. Поэтому, а также для облегчения дальнейшего изложения, будем полагать, что Bi вычисляется в виде однорядного кода, хотя изла- гаемые далее методы применимы и в случае двухрядно- го кода остатка. 253
5.4.5. ОБОБЩЕННЫЙ МЕТОД ДЕЛЕНИЯ БЕЗ ВОССТАНОВЛЕНИЯ ОСТАТКА И ЕГО ИССЛЕДОВАНИЕ Здесь описывается предложенный в 1966 г. синхрон- ный метод деления [17], основной особенностью кото- рого является возможность практического использо- вания больших значений г при обеспечении высокой скорости выбора цифр частного аг+1. Этот метод позво- лил, в частности, создать арифметическое устройство, производящее деление в системе счисления с основани- ем г=16, т. е. определяющее за один цикл сразу 4 дво- ичных разряда частного [15]. В предыдущем разделе было показано, что попытка серьезно увеличить величину г приводит к значитель- ному усложнению схемы выбора цифры a^i. Покажем, что способ выбора ai+iy основанный на прямой расшиф- ровке Bi и С, может тем не менее позволить перейти к значительно большим величинам г, если при этом ис- пользовать другие наборы £. Такая возможность основана на следующей идее. Поскольку при использовании набора с равноотстоящи- ми цифрами дешифраторы отдельных цифр услож- няются по мере увеличения абсолютной величины из- за увеличения наклона границ зоны этой цифры на пло- скости BiCy то следует перейти к таким наборам, в ко- торых перекрытие зон соседних цифр увеличивается по мере роста абсолютных значений этих цифр. При этом увеличение наклона будет в значительной степени ком- пенсироваться увеличением перекрытия, так что коли- чество ступенек в «лесенках» не будет быстро возрас- тать. Иными словами, нужно перейти от наборов (5.4.16), (5.4.25), содержащих только равноотстоящие числа, к наборам, содержащим неравноотстоящие числа. Возможность такого решения скрыта в неравенстве (5.4.23), являющемся единственным ограничением, нало- женным на разности между соседними цифрами набора g, и позволяющем при данных gi и %т включать в на- бор £ любые действительные числа, удовлетворяющие этому неравенству. Но, с другой стороны, расширение участков перекры- тия ведет к увеличению числа цифр в наборе £, что уве- личивает количество вырабатываемых кратных делите- ля и усложняет входные схемы сумматоров, вычисляю- 254
щих Bi+i. Оптимум (при котором суммарная аппаратура схемы выбора ai+i, схемы вычисления Bl+i и схемы пре- образования частного минимальна) зависит от исполь- зуемой системы элементов. Поэтому здесь можно огра- ничиться лишь общим соображением о том, что при реа- лизации этого метода перекрытия зон средних цифр набора | должны быть, по-видимому, меньше, чем для набора (5.4.16), так как дешифраторы этих цифр весьма просты и их можно несколько усложнить, получив в ка- честве компенсации уменьшение количества цифр gj, а для крайних цифр набора перекрытия должны быть больше, чем для (5.4.16), хотя при этом и увеличивается число цифр в наборе g. Прежде чем перейти к рассмотрению конкретных на- боров выясним ограничения, накладываемые на край- ние цифры этих наборов, т. е. на величины gi и Отметим, что частное Во/С находится в диапазоне, зависящем от h и от диапазона (5.4.15) частного Л/С: ___LLA\ h \ £/ min \ ^ / min С ( С /max Л \ С )тах (5.4.31) С другой стороны, Во должно удовлетворять неравенст- ву (5.4.20). Подставив Alh=B0 в (5.4.20), получим тре- бование giC/(r—1)<Л/А<^тС/ (г—1), (5.4.32) которое совместно с (5.4.15) определяет соотношение между константами h, g1( gm. Рассмотрим сначала случай, когда (Л/С)тщ=0, что имеет место при представлении чисел в форме с фикси- рованной запятой. Из (5.4.32) и (5.4.15) следует, что при этом величины gi, gTO должны удовлетворять требо- ваниям £1^0, (5.4.33) и>Н/С) max (г—1) /А. (5.4.34) Конечно, можно считать, что gt и gm заданы (причем gi^O) и вместо неравенства (5.4.34) вывести из (5.4.32) и (5.4.15) неравенство, накладывающее ограничение на константу h; Л>И/С)гоах(г—l)/|m. (5.4.35) 255
Теперь рассмотрим случай, когда (Л/С)ппп>0, что соответствует представлению чисел в форме с плаваю- щей запятой. Из (5.4.32) и (5.4.15) следует, что при этом может быть выбрана как величина £1^0, так и £i>0. Если £1^0, то должна при проектировании вы- бираться на основе требования (5.4.34) или, что то же, h должна выбираться, исходя из (5.4.35). Если £i>0, то из (5.4.32) и (5.4.15) выводится требование (Л/С) max (^— 1 ) / ^(Л/С)т1п(г-1)/^. (5.4.36) Можно считать, что (5.4.36) указывает допустимые гра- ницы для h при заданных и |т. Можно, наоборот считать, что задана величина /г, а параметры и выбираются с учетом требований |1<(Л/С)т1п(г—1)//г, |т^(Л/С) max (г— 1) /h. (5.4.37) Из (5.4.36) видно также, что при gi>0 независимо от величины h должно выполняться требование М11ХЛ/С) max I (Л /С)min. (5.4.38) Проиллюстрируем смысл неравенств (5.4.37) и (5.4.38) на при- мере деления мантисс А и С чисел, представленных в форме с пла- вающей запятой. В этом случае N^A^M, (5.4.39) где М и N — константы, причем ДГ>0. При этом N/M^A/C^M/N, (5.4.40) т. е. требование (5.4.38) в данном случае имеет вид U/51XW2. На рис. 5.4.12 заштрихована зона PRST допустимых значений А и С, а на рис. 5.4.13 показана зона EFGL допустимых значений вели- чин С, Bi. При ^т= (M/N) (r—1) fh, т. е. в случае «граничного» выполнения требований (5.4.37), (5.4.38), квадрат PRST после подстановки Bb = Alh преобразуется в заштри- хованный прямоугольник на плоскости BiC. Из рисунков видно, что нарушение любого из неравенств (5.4.37) приводит к тому, что за- штрихованный прямоугольник на рис. 5.4.13 начинает выходить за пределы зоны допустимых значений. Следует отметить, что оба использованных подхода (при одном считалось, что заданы gi и а при другом, — что задано А) отли- чаются только методологически. Рассматривая зависимость между h и gi, |w, следует отметить, что принятые соотношения (5.4.1), (5.4.3) допускают неоднозначное 256
описание одного и того же метода деления. В самом деле, процесс деления делимого А на делитель С с использованием набора £ цифр t,i при определенной константе h и остатках Bi, лежащих в диапа- зоне (5.4.20), описываемый соотношениями (5.4.1) — (5.4.3), (5.4.7), (5.4.8), (5.4.11), (5.4.13) — (5.4.15), (5.4.20), будет по-прежнему опи- сываться этими соотношениями, если вместо h, gj, Bi (в том числе Bq) будем рассматривать велитаны h/ф, 4>Bit где ф —любая Рис. 5.4.12 Рис. 5.4.13 положительная константа. Так, например, метод деления, определяе- мый соотношениями г = 4; Е={-2, -14> 0. '4", 2}: 1 2 2 0<Л<1; -2“<С<1; — -у С < В, < -у- С; /1=4, и метод г=4; 5 = {-4, -2-^, 0, 2 4", 4^; 1 4 4 0<Л<1; -2-<С<1;------з-С<Вх<-з-С; Л=2 это один и тот же метод, реализуемый одной и той же аппаратурой. Чтобы добиться однозначности описания, будем в дальнейшем записывать набор g, как это по существу сделано для наборов (5.4.16), (5.4.25), таким образом (т. е. подбирать такую константу <р), чтобы, во-первых, все величины gj оказались целыми (это воз- можно, поскольку мы имеем дело с рациональными числами gj) и, во-вторых, чтобы наибольший общий делитель чисел gj был равен единице. Следовательно, только что приведенный пример следует за- писать так: r=4; g={—16, —9, 0, 9, 16}; 17—1013 257
л 1 16 16 1 О А 1 j ~2*" С 1 ’ — з” С * ’ i '~^* ~Cj Л ~ 2 * (5.4.41) Перейдем теперь к рассмотрению некоторых наборов I с переменным «шагом» между цифрами &. Набор (5.4.41) является первым из таких примеров. Располо- Рис. 5.4.14 жение зон цифр на плоскости BtC для этого набора по- казано на рис. 5.4.14. Из рисунка видно, что благодаря переменному «шагу» между цифрами ширина участка перекрытия между зонами 9 и 16 шире, чем между зо- нами 0 и 9. Сравнив рис. 5.4.14 и 5.4.10, увидим, что перекрытие зон 0 и 9 меньше, чем 0 и 1, но зато пере- крытие крайних зон 9 и 16 больше, чем 1 и 2. Другой пример симметричного набора с неравномер- ным расположением цифр приведен на рис. 5.4.15 для случая г=16: g={—30, —29, —28, —27, —26, —25, —24, —23, —22, —21, —19, —17, —15, —13, —11, —8, —5, —2, 2, 5, 8, 11, 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}. (5.4.42) 258
Зоны бтриЦательных цифр для упрощения рисунка по- казаны не полностью. На этом и на некоторых последующих рисунках в кружках указаны количества ступеней в идеальных «лесенках», разделяющих зоны соседних цифр набора. Под идеальной условно понимается такая лесенка, все углы которой касаются границ участка перекрытия, т. е. г-1 Рис. 5.4.15 «лесенка», имеющая минимальное количество ступеней. Эти величины позволяют оценивать сложность соответ- ствующих дешифраторов, выбирающих цифры част- ного *\ Максимально допустимое количество ступеней в «ле- сенке». зависит от системы элементов, от требуемого быстродействия и других обстоятельств. Допустим, на- пример, что в идеальных «лесенках» должно быть не бо- лее 5 ступеней. Несмотря на значительнее перекрытие зон крайних цифр набора (5.4.42), количество ступеней в идеальных «лесенках» все же велико — до 7 ступеней. Из *) Можно отметить, что после появления работы [17] предло- жения об использовании графических построений зон цифр частного на плоскости BiC и об оценке аппаратных затрат на схему выбора цифр частного по количеству ступеней в «лесенках» (правда, только для наборов (5.4.25)) были сделаны также в работах [22, 25, 16]. 17* 259
рис. 5.4.15 видно, что дальнейшее увеличение перекры- тия зон не может дать существенного уменьшения коли- чества ступеней. В самом деле, как бы ни была мала, например, разность —%m-i, все равно «лесенка» меж- ду зонами этих двух цифр будет содержать не менее 6 ступеней. Но и 6 ступеней, как было условлено выше, слишком много. Рассмотрим способ борьбы с этой труд- ностью. Для дальнейшего изложения желательно более точная формули- ровка правила изображения «лесенки», т. е. границы между зонами действия дешифраторов двух цифр набора £ на плоскости BiC. Уточ- нение касается точек, принадлежа- С щих непосредственно самим от- -—К у / -у*— резкам прямых, составляющих \tx А /ь1*/ «лесенку». Правило поясняется /КУ рис. 5.4.16. Стрелками показано, \ \ / к какой зоне—пРавой или левой— \ \ / / считаются относящимися точки, \ \ / / расположенные на отрезках «лесе- ' ' ' ' нок». Точки плоскости, располо- женные вне самой «лесенки» спра- ва или слева от нее, относятся, естественно, к правой и левой зо- --------------------------нам. Как было указано выше, «ле- 0-------------------------сенка», разделяющая зоны дей- Рис 5.4.16 ствия дешифраторов двух сосед- них цифр gj, gj+i набора £, долж- на располагаться внутри участка перекрытия зон этих двух цифр, может касаться границ участка перекрытия, но не должна выходить из них. В дальнейшем, при изображении зон цифр в других координатах будем придерживаться этого же правила. Теперь покажем, как можно упростить дешифрато- ры, выбирающие цифры ai. Пусть на плоскости BiC изо- бражена (рис. 5.4.17) зона EFGL допустимых остатков и делителей. Границы зон отдельных цифр являются прямыми линиями, уравнения которых записываются в виде Bi=KCy где /Г— । л Г (г — 1) "Г г для правой границы зоны Е, и для левой границы. 260
Изобразим всю эту систему линий в новой 'системе координат, в которой по осям отложены величины Bi—НС и С (рис. 5.4.18), где Н— положительная кон- станта. На плоскости BiC (см. рис. 5.4.17) величине Н соответствует прямая ОС' с уравнением B~HC=Q. Четырехугольник EFGL «переходит» с плоскости BiC на плоскость Bi—НС, С таким образом, что отрезки FG и EL сохраняют свою длину. То же самое происходит с зо- ной любой цифры не изменяется ни ее ширина (при данном С), ни ширина участков перекрытий. Но накло- ны границ всех зон изменяются. В частности, наклоны тех зон, которые на рис. 5.4.17 были расположены спра- ва от ОС' или слева от ОС', но ближе к ОС', чем к ОС, Рис. 5.4.17 261
изменяются таким образом, что новые «лесенки», про- веденные для этих зон в новой системе координат, име- ют меньшее количество ступеней, чем в старой системе (предполагается, что каждый из отрезков прямых, со- ставляющих «лесенку», параллелен одной из осей коор- динат). Аналогичным образом можно на рис. 5.4.17 сле- ва от ОС так провести другую прямую ОС" с уравнением —Bi—НС=0, чтобы в полученной третьей системе координат —В,—НС, С левые зоны цифр £,• заняли выгодное по- ложение. Для примера на рис. 5.4.19 показаны в системе ко- ординат Bi----|-С, С ранее приведенные на рис. 5.4.15 зоны крайних цифр набора (5.4.42). Из рисунка видно, что количество ступеней в идеальных «лесенках» для цифр 13, 15, 17, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 резко сократилось. Точно такое же положение на пло- 262
скости — Bi ^-С, С занимают зоны отрицательных цифр —13, —15, —17, —19, —21, —22, —23, —24, —25, —26, —27, —28, —29, —30. Из сказанного следует, что если в устройстве для деления, использующем набор (5.4.42), кроме остатка В,-, 3 3 вычислять разности В,-—2-С, —В,- 2-С и построить дешифраторы, выбирающие цифры 13, 15, 17,..., 30 пу- тем расшифровки старших разрядов величин В; — —|-С, С, цифры —13, —15, —17,..., —30 —путем расшифровки величин —В,------^-С, С и цифры —8, —5, —2, 2, 5, 8 — путем обычной расшифровки В/ и С, то дешифраторы крайних цифр набора значительно упростятся *\ Так как теперь ступеней в «лесенках» получается совсем мало, то целесообразно уменьшить количество цифр в наборе 1 что в ряде случаев может дать сущест- венный выигрыш в аппаратуре. Рассматриваемый набор (5.4.42) можно заменить, например, набором £={—30, —27, —24, —21, —18, —16, —14, —12, —11, —9, —7, —5, —2, 2, 5, 7, 9, 11, 12, 14, 16, 18, 21, 24, 27, 30}, (5.4.43) расположение зон которого на плоскостях В;С; В(- — 3 3 ---2" С, С; —В(.--С, С’^показано на рис. 5.4.20 и 5.4.21, причем на рис. 5.4.21 наложены друг на друга два одинаковых рисунка — один для зон положительных цифр в координатах В(.--1- С, С, другой — для зон от- рицательных цифр в координатах —В,.--~С, С. Цифры —11, —9, —7, —5, —2, 2, 5, 7, 9, 11 можно выбирать путем прямой расшифровки величин В(. и С, цифры 14, 16, 18, 21, 24, 27, 30 — путем анализа В; — *> Для цифр 4-11, —11 можно не строить дешифраторов, подоб- ных остальным, а выбирать эти цифры по следующему простому правилу: ai+1 = 4-ll (—11), если и при этом не вы брана ни одна другая цифра набора g.
Рис. 5.4.20 Рис. 5.4.21
---|-С и С и цифры —30, —27, —24, —21, —1&, —16, — 14 —путем анализа — Bi----------1- С и С. Из рисунков видно, что при этом все идеальные «лесенки» содержат не более четырех ступеней. Цифры —12, и +12 можно выбирать по правилу, аналогичному тому, которое было приведено выше для цифр +11, —11 набора (5.4.42). Рассмотрим вопрос о количестве двоичных разрядов в дополнительных сумматорах, вычисляющих разность типа ±Bi—НС. Нет необходимости в том, чтобы эти разности вычислялись точно. В указанных сумматорах достаточно обрабатывать величины, представленные не- сколькими старшими разрядами чисел Bi, НС. Однако при этом должны быть соответствующим образом изме- нены правила построения дешифраторов цифр и пра- вила проведения «лесенок» внутри участков перекрытия зон соседних цифр набора. Пусть 2* и 2~1 — веса старшего и младшего значащих двоичных разрядов сумматора, вычисляющего разность типа ±Вг-—НС. Бу- дем считать, что отрицательные числа — НС подаются на входы сумматора в обратном коде и что цепь кольцевого переноса в этом сумматоре отсутствует. Условимся также, что положительные и отрицательные числа на выходе сумматора представляются соответ- ственно в прямом и дополнительном коде (дополнение до 2‘+1)- Приближенное число ±Bi—НС, получаемое на выходах сумматора, будем в отличие от точного числа ±В;—НС обозначать в виде (±Bi—НС)*. Величины Bi и НС можно представить в следующей форме: Bi=Ki2-l+^ НС=К?2-1+у, где Ki и Дг — целые, причем Л2>0, а Р и у удовлетворяют нера- венствам 0^р<2\ 0^у<2г. Вначале рассмотрим вычисление разности Bi—НС. Поскольку эта разность используется для выбора ai+1 только при В»>0, то можно считать, что число Bi положительно и представлено в пря- мом коде. Будем также считать, что число Bi находится в некото- ром регистре В. Старшие разряды числа В» поступают из регистра В в сумматор Bi—НС также в прямом коде. Точная разность Bi—НС равна Вг-—НС=(К\—K2)2~z4-((3—у). В сумматоре при этом складываются числа Ki2~z и (2<+1—К22~1—2~1) *>. Если А\>/С2, то на выходах сумматора получается неотрица- тельное число (Bi— НС)* = (К\—K2)2“f—2~1. *)Так как максимальное значение Вг равно gmCmax(r— 1), то должно удовлетворяться требование 2^1^>^7пСгаах / (г— 1) ^2*. 265
Если то на выходах сумматора получается числб 2t+1-(Kr-2<i)2-z-2-i, что соответствует представлению в дополнительном коде отрица- тельного числа (В—НС)* = (JG—/С2)2"‘—2-‘. В обоих случаях 0<Вг—НС— (Bi—НС) * = 2-^+(0—Y) <2 -2-\ (5.4.44) Следовательно, число Bi—НС лежит на числовой оси правее числа (Bi—НС)* на расстоянии, меньшем, чем цена двух единиц младше- го разряда сумматора Bi—НС. Теперь перейдем к сумматору ——НС. Поскольку этот сумма- тор используется при В<<0, то будем считать, что Ki<0. Точная разность —Bi—НС равна -Bi-HC= (-K1-/<2)2-^-(P+y). Допустим также, что число Bi представлено в регистре В в допол- нительном коде: 2«+1—|В<|=2*+1+К12-г+р и что старшие разряды регистра В инвертируются перед передачей в сумматор —Bi—НС. В сумматоре складываются числа (2*-м_2<+!—/^2-!—2"9 = (—2-<) и (2'+1—Л22-г—2"9 *). Если —Ki>/<2+2, то на выходах сумматора получается неотри- цательное число - (—Bi—НС) * =t (-Ki—К2) 2-^2 • 2_/. Если то результат сложения равен 2‘+^ (/<1+/<2)2-г—2-2-S что соответствует представлению в дополнительном коде отрица- тельного числа (-Bi-HC)*= (-Ki—K2)2-l-2‘2-1. В обоих случаях 0<В<—НС— (Bi—//C)* = 2-2-^(P+y)^2-2-z, т. е. опять число —Bi—НС лежит на числовой оси правее числа (—Bi—НС)* на расстоянии, не превышающем цены двух единиц младшего разряда сумматора —Bi—НС. Из сказанного, а также из рис. 5.4.16 вытекает сле- дующее правило построения «лесенок» внутри участков перекрытия зон цифр £/ на плоскости |ВХ|—НС, С: «лесенки» не должны переходить левую границу зоны перекрытия и не должны подходить к правой границе *) Так как максимальное значение |В<| при Bi<0 равно |£i|C max /(Г-1). ТО 2<+l>|g!|Стах/(Г-1 )>2». 266
ближе, чем на расстояние, равное цене одной единицы младшего разряда сумматора ±Bt-—НС. При необходимости (например, при малых перекры- тиях зон цифр £/) можно вычислять несколько разно- стей типа ± Bi—НС с различными константами Н\ каждая из этих разностей может использоваться для построения дешифраторов определенной группы цифр £/. Следует отметить одну тонкость в толковании графического изо- бражения зон цифр и зон действия дешифраторов в координатах |В<|—НС, С: границы зон цифр изображаются в предположении, что по оси абцисс откладывается точная разность |Вг|—НС, а гра- ницы зон действия дешифраторов строятся в предположении, что по оси абсцисс указывается величина, получающаяся на выходах сум- матора \Bi |—НС, т. е. величина (|В< |—НС)*. Обычно узлы устройства для деления значительно упрощаются при симметричном наборе g (т. е. если £/= =—'gm-z+i; /=1, 2, ..m/2 при четном m; /=1, 2, ... ..(т—1)/2 при нечетном т). В частности, на пару симметричных цифр £/ и может быть построен один общий дешифратор, как это показано на рис. 5.4.22. Сигналы +В, —В являются выходными сигналами зна- кового разряда регистра В, т. е. +В=1 при В/^0, а —В=1 при Bi<0. Если набор £ симметричен, то упро- щается также узел вычисления Вж и узел преобразова- ния частного. Описанное в этом разделе использование приближен- ных разностей типа ±BZ—НС существенно отличается от использования аналогичных раз- ностей, описанного в работе [20] (см. п. 5.4.4). Там приближенные разности вычислялись только для определения знаков этих разностей и количество вычисляемых разно- стей быстро росло с увеличением т. В нашем случае разность (±В;— —НС) * нужна для построения де- шифраторов; поэтому используется не только ее знак, но и величина. Количество разностей невелико; даже для т=20—30 достаточно вычислить две разности типа ±SZ—НС. Рассмотрим кратко проблему обнаружения перепол- нения частного, которая возникает при делении чисел с фиксированной запятой. До сих пор в этой главе мы считали, что делимое А и делитель С находятся в диапазонах (5.4.13) и (5.4.14), ?67 Рис. 5.4.22
причем Cmin>0. Однако при делении чисел с фиксиро- ванной запятой истинные делимое Л* и делитель С* расположены в диапазоне 0<А*-^?, (5.4.45) и поэтому перед началом деления А* и С* должны быть преобразованы в А и С. При этом должно сохраниться отношение этих двух величин. Сигнал переполнения должен вырабатываться, если частное превышает величину /?. Это может произойти как при С*=0, так и при С*=^0. Первая ситуация не вызывает каких-либо аппаратных трудностей. Рассмот- ри внимательнее случай С*#=0. Самой простой реализацией процедуры преобразова- ния А* и С* в А и С является нормализация делите- ля С* и такой же сдвиг влево делимого А*: А=рМ*, С=р/С*. (5.4.46) Здесь р — основание системы счисления, используемой для представления чисел в машине; f—количество ну- лей перед старшей значащей цифрой в n-разрядном чис- ле С*. Очевидно, что если С*#=0, то 1. (5.4.47) Будем считать, что А* и С* преобразуются в А и С при помощи нормализации. Переполнение можно обнаруживать различными спо- собами. Например, можно использовать следующий прием. Так как С^/?, то будем сравнивать А и /?2. Если А>/?2, (5.4.48) то будем считать, что имеет место переполнение. Но если А^/?2, то это еще не означает, что переполнение отсут- ствует. /требуем, чтобы при A^R2 автоматически обеспе- 41 юсь выполнение неравенства ^о^?тпС,тщ/(/—1)- (5.4.49) Поскольку при делении с фиксированной запятой (А/С)min=0, то и поэтому выполнение неравен- ства (5.4.49) означает, что точка с координатами С попадает на плоскости BiC в зону допустимых значений. 268
Так как теперь мы считаем, что A^R2, то, подставив BQ—A/h—R^/h в (5.4.49), получим требование Л^/?2(г-1)/Ст1пи (5.4.50) На рис. 5.4.23 заштрихован прямоугольник на пло- скости АС, в котором может находиться точка с коор- динатами А, С, и прямоугольник на плоскости BiC, в ко- торый может попасть точка Во, С при h=R2(r-l)/Cmti&n. Таким образом, константу h следует выбирать с уче- том требования (5.4.50). При этом деление будет пра- вильно выполняться все k циклов (т. е. все Bi будут на- ходиться в диапазоне допустимых значений), после чего останется только проверить неравенство hQ>R, (5.4.51) соблюдение которого следует расценивать как признак переполнения. В п. 5.4.6 будет описан пример применения такого способа обнаружения переполнения. 5.4.6. ПРИМЕР РЕАЛИЗАЦИИ ОБОБЩЕННОГО МЕТОДА ДЕЛЕНИЯ БЕЗ ВОССТАНОВЛЕНИЯ ОСТАТКА Рассмотрим кратко структуру устройства для деления, построен- ного на основе результатов, изложенных в данной главе. Метод деления, реализованный в указанном арифметическом устройстве, и само устройство обладают следующими параметрами [15, 17]: р=2, л = 28, запятая фиксирована перед старшим разря- дом, г =16, A=l, k = 7, £={—30, —29, —28, —27, —26, —24, —22, —19, —16, —13, —Ю, —8, —5, —2, 2, 5, 8, 10, 13, 16, 19, 22, 24, 26, 27, 28, 29, 30}. (5.4.52) 269
Очевидно, что /?=1—2-28 и поэтому исходные делимое Л* и делитель С* расположены в диапазонах 2-28, 2-28 (случай С*=0 здесь не рассматривается). После нормализации чисел Л* и С* величины А и С располо- жены в диапазонах 0<^4<^2+27—2-1, 2~1^С^1— 2~28, т. е. Cmln = 2-1, Cmax = l—2~28. Если 4^1, т. е. если 4>/?а+2-28, то вырабатывается сигнал Переполнения. Очевидно, что при этом 4*/С*>1. Если же 0^4^1— 2-28, 2-^С^1—2-28, го деление идет верно все 7 циклов, так как выбранная величина h обеспечивает выполнение неравенства (5.4.49). В конце операции деления производится проверка неравенства (5.4.51), имеющего в данном случае вид hQ^L Если то тоже вырабатывается признак переполнения. Диапазон (5.4.20) допустимых значений остатков Bi имеет вид —2C^Bi^2C. Средние цифры набора 5 (цифры —8, —5, —2, 2, 5, 8) выби- раются при помощи дешифраторов, анализирующих старшие разряды величин Вц С, Расположение эон этих цифр и зон действия соот- ветствующих дешифраторов на плоскости В\С показано на рис. 5.4.24* 270
Для выбора крайних цифр набора 5 (Цйфры —30, —29, —28, —27, —26, —24, —22, —19, —16, —13, 13, 16, 19, 22, 24, 26, 27, 28, 29, 30) в устройстве применены два дополнительных сумматора, вычисляющих разности типа ±В<—НС, а именно, разности В— С, —Bi—С. Расположение зон крайних цифр набора (5.4.52) и зон дей- ствия соответствующих дешифраторов на плоскости |В<|—С, С по- казано на рис. 5.4.25. Дешифраторы крайних цифр построены в со- ответствии с рис. 5.4.22, т. е. попарно объединены. Рис. 5.4.25 Сдвоенный дополнительный сумматор |Вг|—С содержит 9 раз- рядов; веса старшего и младшего разрядов этого сумматора соот- ветственно равны 1 и 2-8. Поэтому «лесенки» дешифраторов на рис. 5.4.25 не должны под- ходить (и не подходят) к правой границе участка перекрытия зон ближе чем на 2-8. Цифра —10 (+10) выбирается автоматически, если Вг<0 (Вг^О) и если при этом не выбрана ни одна другая цифра набо- ра Дешифраторы цифр gj, как и все остальные узлы арифметиче- ского устройства, построены на потенциальной системе элементов, содержащей инвертор НЕ и формирователь (усилитель) Ф, выпол- ненные по схеме транзисторного переключателя тока, эмиттерные повторители и диодные логические схемы И, ИЛИ. На рис. 5.4.26 в качестве примера показана схема выбора цифры £12=—8. Можно проследить соответствие этой схемы зоне, показанной на рис. 5.4.24. Разряды чисел пронумерованы слева направо: 0 (вес 1), 1 (вес 2-1), 2 (вес 2~2) и т. д. Сигнал —В является выходом знакового регист- ра В и равен 1 при Bj<0. Вспомогательные сигналы Дь Д2, Дз вырабатываются отдельными схемами таким образом, что Д1 = 1 при 1/2^С<37/64, Дг=1 при 45/64^С<53/64, Дз=1 при 53/64^С<1. 271
Az Аз ^з fy Az Bg сг с$ 0$ fy Вц Bif. в5 -в вд Bj В2 в$ Вц в$Д} Рис. 5.4.26 Рис. 5.4.28 Рис. 5.4.27 Дешифраторы цифр частного содержат по 22—80 диодов. Самые простые схемы имеют дешифраторы +2, —2 (по 22 диода), ±24 (24 диода), самые сложные схемы — дешифраторы +5, —5 (по 80 диодов). Блок-схема устройства для деления показана на рис. 5.4.27, а входящая в нее схема вычисления очередного остатка Bi+i — на рис. 5.4.28. 272
Значения кратных tli и П2 делителя С, выбираемые из набора П1 = {±32С, ±24С, ±16С, ±8С, 0} П2={±4С, ±ЗС, ±2С, 0} по правилам, определяемым табл. 5.4.3, обеспечивают выполнение соотношения П1+П2=—di+i,C. Как видно из таблицы, каждое из кратных П1 или П2 форми- руется из сдвинутого на нужное количество разрядов числа С или числа ЗС, вырабатываемого вспомогательным сумматором ЗС. Т абл ица 5.4.3 ai + i П1 П, a/+l n> П, ±2 0 +2C ±22 +24C +2C ±5 +8C +3C ±24 +24C 0 ±8 • +8C 0 ±26 +24C +2C ±10 +8C +2C ±27 +24C +3C ± 13 + 16C +3C ±28 +24C +4C ± 16 + 16C 0 ±29 +32C +3C ±19 + 16C +3C ±30 +32C +2C В сумматоре См 2 организован ускоренный пробег переносов. Схема преобразования частного Q в двоичную форму представ- ляет собой по существу семиразрядный двоичный сумматор. Вели- чины %] набора (5.4.52) являются пятиразрядными двоичными чис- лами. Прямой перебор всех возможных случаев показывает, что при сложении двух двоичных чисел i f=l пробег переноса не превышает трех разрядов, а пробег займа — семи разрядов. Трехразрядный перенос получается, например, если аг- равно 19 или 27, а af+i^l6: х. • -XX0U ----------2 1ХХХХ —----------a(+116-z-* ------------- i + l х. . • ХХЮОХХХХ*-— 2 а',6-< 18—1013 273
Семиразрядный пробег займа имеет Место, если а,=5,13 или 29/ tof+i = —16, 6Zf4-2<X0: i x...xioi«----------------2 a<16'z + t=l —100 0 0*--------------------fl/+116-‘ -1 X...X1 oooooo +-XXXXX<------------------------------^4-21б -1 -2 i+2 X-..X0 1 Ш 1 XXXXX*------2 a'16-' t=A Семиразрядный сумматор в схеме преобразования частного по- строен с использованием параллельно-параллельной логики, т. е. в схеме нет сигналов переноса или займа, и время образования всех семи разрядов суммы равно времени задержки одного активного элемента. Следует отметить удачное совмещение в созданном арифметиче- ском устройстве операций умножения и деления. Умножение про- изводится за 5 циклов, во время каждого из которых к текущей сумме частичных произведений прибавляется произведение множи- мого на 6 очередных разрядов множителя А. При этом используют- ся те же сумматоры См 1, См2, ЗС (рис. 5.4.28), те же кратные П1, П2 множимого С (при операции умножения используются еще два значения кратного Па, равные ±С), те же регистры В и Р. Аппаратура, установленная в арифметическом устройстве только для операции деления (схема преобразования частного, сумматоры ±JBi—С, дешифраторы выбора цифры ai+i) и не используемая при других операциях (умножение, сложение, вычитание, сдвиги, логиче- ские операции), составляет лишь 10% от всего объема устройства. Это показывает, что при определенных условиях описанные методы деления могут успешно сочетаться с известными методами выполне- ния других операций, не требуя значительных дополнительных за- трат оборудования. Следует отметить, что в настоящее время, по-видимому, не су- ществует других машин, в арифметических устройствах которых синхронные методы деления без восстановления остатка обеспечива- ли бы получение за один цикл сразу четырех или хотя бы трех двоичных разрядов частного. Получение более чем четырех разрядов частного за цикл могут обеспечить устройства, выполняющие деле- ние при помощи итераций (циклов), во время каждой из которых производятся операции умножения (см. § 5.3). В таких устройствах количество полученных разрядов частного может, например, удваиваться после каждого цикла. Однако применение этих методов оправдано лишь в арифметических устройствах, выполняющих умножение с весьма большой скоростью. Напротив, обоб- 274
щенный метод синхронного деления без восстановления остатка позволяет значительно повысить скорость деле- ния в арифметических устройствах, использующих срав- нительно недорогие (в смысле аппаратных затрат) мето- ды ускорения умножения и содержащие поэтому срав- нительно небольшое количество оборудования. 6. ПОСТРОЕНИЕ ОСНОВНЫХ УЗЛОВ ВЫЧИСЛИТЕЛЬНЫХ СРЕДСТВ ВЫСОКОЙ ПРОИЗВОДИТЕЛЬНОСТИ НА ОСНОВЕ БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМ На нынешнем этапе развития вычислительной тех- ники, когда полупроводниковая промышленность пере- ходит к массовому выпуску больших интегральных схем (БИС), особое значение приобретает проблема анализа и модернизации известных и создания новых методов выполнения арифметических и логических операций. Цель этих работ — использование широких возможно- стей современной электронной техники. Разработка принципов выполнения арифметических и логических операций при помощи БИС становится одной из наибо- лее важных задач в теории и практике построения арифметических устройств. Следует также отметить, что БИС, созданные для построения таких узлов, как комму- таторы, регистры и т. п., могут успешно применяться и в других устройствах ЦВМ. Большой интегральной схемой обычно называют схе- му, в корпусе которой содержится большое количество (сто и более) логических элементов, соединенных в слож- ную функциональную структуру. Применение БИС по- зволяет преодолеть ограничения, накладываемые на ли- нейные размеры и надежность ЦВМ. Необходимость уменьшения линейных размеров ЦВМ обусловлена соизмеримостью достигнутого наносекунд- ного быстродействия логических элементов с потерями времени на распространение электрических сигналов (в современных платах с печатным монтажом задержка составляет ~7 нс/м). 18* 275
Повышение надежности связано, в основном, с при- менением в ’ БИС более качественных компонентов, уменьшением количества технологических операций и числа сварных соединений. Развитию техники БИС предшествовал период разра- ботки и использования интегральных схем с малым и средним уровнем интеграции. С 1970 г. стандартной продукцией зарубежных фирм стали счетчики, суммато- ры, дешифраторы, сдвиговые регистры и другие узлы на интегральных схемах с малым и средним уровнем инте- грации. Арифметические устройства зарубежных ЦВМ третьего поколения, выпущенных или намеченных к вы- пуску на рынок в 1971—1972 гг., были практически пол- ностью выполнены на интегральных схемах с тем или иным уровнем функциональной сложности. При этом происходило (и происходит сейчас) постоянное сниже- ние стоимости и повышение функциональной плотности интегральных схем. При разработке логики интегральных схем и БИС одной из задач следует считать унификацию и уменьше- ние количества типов схем, повышение регулярности схемных построений, приводящие к снижению стоимости этих схем. В частности, повторяемость или регулярность функциональных узлов предлагается рассматривать как один из важных критериев оптимальности построения вычислительных машин [1, 2]. Примером арифметического устройства, построенного в начале 70-х годов на БИС с малой номенклатурой, может служить 32-разрядное арифметическое устройство ЦВМ RAC-251, разработанное одной из зарубежных фирм (Raytheon) и содержащее БИС всего лишь восьми типов [3, с. 123]. В те же годы были опубликованы описания ЦВМ, целиком или почти целиком построен- ных на БИС, например описание универсальной ЦВМ с коммерческим уклоном фирмы Four — Phase Systems. Эта ЦВМ была построена на БИС типа MOS, содержа- щих не менее 1000 вентилей на кристалл [4]. Стали известны реализованные или находящиеся в стадии раз- работки проекты с еще более высоким уровнем интегра- ции. Например, фирма ICL (Англия) собирается к кон- цу 70-х годов закончить создание гигантского вычисли- тельного комплекса, в котором каждый из 30 тыс. про- цессоров целиком размещается на одной БИС [5]. 276
В последние годы общими тенденциями развития БИС является непрерывное повышение функциональной сложности схем, их надежности и быстродействия. Одно- временно снижается стоимость вентильной схемы. Примером БИС с высоким уровнем интеграции мо- жет служить схема, в корпусе которой содержится це- ликом однотактный умножитель, перемножающий два 16-разрядных сомножителя [6]. Значительный прогресс в технологии интегральных схем достигнут благодаря усовершенствованию методов изоляции, фотолитографии и диффузии и широкому внедрению автоматизации на этапах раскладки схем, изготовления оригиналов фотошаблонов и проверки схем. Наиболее перспективными направлениями считаются развитие методов оксидной изоляции, тройной диффузии (3£>), ионного легирования и электронно-лучевой и рент- генолучевой литографии [7]. Для построения арифметических устройств современ- ных ЦВМ используются различные типы схем TTLS, ECLy I2L, МОП-схемы и др. Биполярные логические схемы обладают большим быстродействием, чем МОП-схемы, но и большей стои- мостью. В биполярных схемах увеличение функциональ- ной плотности и рост быстродействия влекут за собой нежелательное повышение мощности рассеяния. В не' которых случаях при высоком уровне интеграции, свой- ственном БИС, плотность мощности рассеяния может потребовать специального охлаждения. Это обстоятель- ство объясняет относительно медленный прогресс в про- изводстве биполярных логических быстродействующих БИС и их использовании в вычислительных системах вы - сокой производительности. В настоящее время элемен- тную базу центральных процессоров большинства зарубежных вычислительных систем высокой произво- дительности составляют биполярные схемы типа ECL и TTL с диодами Шотки. По-видимому, ECL-схемы и их модификации будут применяться в более быстродействующих системах, а TTL-схемы с диодами Шотки — в более медленных. На ECL-схемах были реализованы, например, про- цессоры машин 470V/6 фирмы Amdahl. Уровень инте- грации в этих БИС составляет 100 вентилей на кристалл, а время задержки на вентиль — 600 пс. Мощность рас- сеяния кристалла составляет от 1 до 3,5 Вт и проблема 277
охлаждения решается путем использования специальных теплоотводов и особого характера движения воздушной струи [7]. Ряд фирм, например Дженерал Электрик, считает наиболее перспективным для БИС и супер-БИС (еще более сложных схем) Т7’£-схемы с диодами Шотки, обеспечивающими задержки порядка 1,5 нс на вен- тиль [7]. Технические и экономические преимущества БИС в настоящее время не вызывают сомнения. Переход на БИС приводит не только к повышению надежности, ско- рости и снижению стоимости, но и к изменению архи- тектуры ЦВМ, так как внедрение БИС резко изменяет отношение стоимостей самих схем и межсхемных связей. При разработке вычислительных средств на БИС основ- ной тенденцией является не минимизация количества элементов, а оптимизация числа соединений между БИС даже за счет введения некоторой аппаратурной избыточ- ности. Кроме минимизации числа межмодульных свя- зей, перед разработчиками ЦВМ на БИС стоит задача уменьшения количества типов БИС; это требование является, в частности, одним из основных в военных си- стемах [2]. По мнению многих ведущих разработчиков ЦВМ, реализация преимуществ, свойственных БИС, тре- бует существенного изменения методов проектирования ЦВМ вообще. Ниже в этой главе рассматриваются некоторые пути выполнения основных арифметических операций на БИС. Некоторые из изложенных ниже способов выполнения арифметических операций (например, метод построения многослойных множительных устройств на преобразова- телях М->2) изменяют принципы построения узлов арифметического устройства, другие фактически направ- лены на создание новых структур БИС, реализующих известные методы выполнения операций. 6.1. КРИТЕРИИ ОПТИМАЛЬНОСТИ БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМ При разработке логических структур БИС могут Использоваться различные критерии оптимальности БИС. В общем случае этот критерий является некоторой функ- цией переменных, которые в той или иной форме оцени- вают такие свойства и параметры БИС или устройств, синтезируемых из них, как 278
i) быстродействие, 2) количество применяемых типов БИС, 3) количество выводов БИС и количество связей в устройстве, 4) регулярность внутренней структуры БИС, 5) надежность и др. Рассмотрим кратко каждый из перечисленных пунктов. 1. Скоростными параметрами, учитываемыми Крите* рием оптимальности, могут являться как быстродействие самой БИС, так и быстродействие узла (сумматора, умножителя и т. д.), построенного на БИС. 2. Минимизация количества типов БИС, их унифика- ция имеют большое практическое значение, так как при- водят к упрощению и ускорению организации массового производства БИС, снижению их стоимости, упрощению и удешевлению обслуживания и ремонта вычислитель- ных средств [1, 2, 8, 9]. В качестве критерия оптималь- ности (или его составной части) может, в частности, использоваться отношение количества типов БИС к их общему числу [2]. 3. Минимизация межсхемных связей является одной из важнейших проблем, которую следует решать разра- ботчикам БИС и ЦВМ [2, 9—12]. Фактически задача сводится к созданию новых методов построения узлов ЦВМ из соединенных более или менее регулярным обра- зом БИС, содержащих минимальное количество внешних выводов, приходящихся на единицу объема аппаратуры. 4. Увеличение регулярной внутренней структуры по- вышает технологичность БИС, а также ее быстродейст- вие (при прочих равных условиях). 5. О надежности БИС уже немного говорилось в на- чале главы. Здесь мы отметим, что при создании логи- ческой структуры БИС в ней могут быть предусмотрены аппаратные средства для обнаружения, а также для исправления ошибок, вызываемых неисправностями эле- ментов БИС. Повышение надежности при этом достига- ется соответственно за счет сокращения времени восста- новления и увеличения времени безотказной работы. Количественно повышение надежности может оценивать- ся теми или иными вероятностными параметрами. В данной главе рассматриваются и предлагаются не- которые структуры БИС, 279
использующих наиболее мощные методы ускорения основных арифметических операций, позволяющих строить тот или иной узел арифмети- ческого устройства (сумматор, умножитель и т. д.) на БИС с минимальной номенклатурой (1—3 типа), обладающих сравнительно небольшим отношением f/v количества f внешних выводов БИС к общему объе- му v находящейся в ней аппаратуры, что позволяет ми- нимизировать количество межсхемных связей. Отдавалось также предпочтение БИС с регулярной внутренней структурой. 6.2. ПОСТРОЕНИЕ БЫСТРОДЕЙСТВУЮЩИХ СУММАТОРОВ НА БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМАХ Из всего многообразия структур ускоренных сумма- торов обычно выбирают для реализации в виде инте- гральных схем такие построения, которые можно разде- лить на узлы (интегральные схемы) одного-двух типов. В гл. 3 были рассмотрены основные виды ускоренных сумматоров. Из этого рассмотрения с очевидностью сле- дует, что сумматоры с пирамидой переносов (§ 3.4) и условные сумматоры (§ 3.5) не удовлетворяют указан- ному требованию и, следовательно, плохо подходят для реализации при помощи БИС. Что касается описанных в § 3.1—3.3 сверхпараллельных сумматоров (рис. 3.1.2, 3.1.6,а) и сумматоров, которые мы формально счита- ли разновидностями сверхпараллельного сумматора (рис. 3.1.6,б—е), то они легко разбиваются на узлы 1—2 типов и, следовательно, могут быть выполнены в виде БИС. В качестве первого примера на рис. 6.2.1 приведена структура интегральной схемы SiV5483A (фирмы Texas Instruments). Из рисунка видно, что этот 4-разрядный сумматор с полным ускорением всех переносов соответ- ствует рис. 3.1.6,г. Соединяя последовательно такие 4-разрядные сумматоры, можно строить 4р-разрядные сумматоры для любого целого р. Очевидно, что БИС этого типа по мере повышения уровня интеграции смогут содержать не одну, а несколько групп разрядов, и сами группы, возможно, станут длиннее. Другим примером может служить интегральная схе- ма CD4008 фирмы RCA, [13], содержащая 4-разрядный сумматор с последовательным переносом внутри группы 280
381
Рис. 6.2.2 28?
й ускоренным переносом из группы. Сумматоры, состав- ленные из таких групп, рассматривались в § 3.1 (рис. 3.1.6,д). Построение сверхпараллельных сумматоров из инте- гральных схем покажем на примере использования схем SW54181 (рис. 6.2.2) и 57V54182 (рис. 6.2.3) фирмы Texas Instruments. Микросхема, изображенная на рис. 6.2.2, представ- ляет собой универсальное арифметико-логическое устрой- ство, способное выполнять разнообразные операции сло- жения-вычитания и 16 поразрядных логических операций над двумя 4-разрядными двоичными числами А^а^а^сц и С=С1СгСзС4. Код выполняемой операции задается сиг- налами So, Si, Sa, S3. Еще одним управляющим сигналом является сигнал М. Результат операции формируется в виде 4-разрядного числа F1F2F3F4. Перенос, поступаю- щий на вход младшего разряда, и перенос, выходящий из старшего разряда, представлены в инверсной форме (ё<, ёо) и используются при операциях сложения-вычита- ния. Подготовительные функции SZ) и предназна- чены для организации ускорения переносов в многораз- рядном сверхпараллельном сумматоре. Сигнал А=С может использоваться как признак равенства чисел_Л и С при операции А—С и операции (ЛАС)У(ААС). Этому сигналу можно найти и другие применения: его можно, например, расценивать как признак неравенства чисел А и С при операции (A/\C)V В табл. 6.2.1 приведены коды операций интегральной схемы S2V54181. Видно, что при Л4=1 схема выполняет любую из 16 поразрядных логических операций, в том числе и такие операции, как const 0 и const 1. При этих двух операциях на выходах Ft просто вырабатываются нули (операция const 0) или единицы (операция const 1). Если М=0, то в схеме выполняется одна из 16 опе- раций типа сложение-вычитание. Можно сказать, что при этом в 4-разрядном сумматоре складывается пере- нос е4 и два 4-разрядных двоичных числа, каждое из которых является результатом некоторой логической по- разрядной операции над числами и С1С2С3С4. На- пример, операция А—С выполняется так: #2 <*3 +____- __ С 2 *3 ^4 1 283
Рис. 6.2.3 (е4=1). Операция А—1 выполняется так: ^2 + 1 1 1 1 о (е4=0. Число 1111 формально можно тоже считать ре- зультатом логической операции.) Операция (XVC) + 284.
Таблица 6.2.1 к «о эд операции 1 М = 1 М = 0 е, = 0(е,»1) | е4 = 1 (е4 = 0) 0 ООО А А А+ 1 0 0 0 1 аус А+(АДС) А+(АДС) + 1 0 0 1 0 АДС А+(АДС) А+(АДС)+1 0 0 1 1 const 1 А + А А + А + 1 0 1 0 0 АДС АУС (A VQ+1 0 1 '0 1 С (АуС)+(АДС) (ДуС)+(АДС)+1 0 1 1 0 (АДС)У(АДС) А — С—1 А —С 0 1 1 1 АуС (АуС)+А (AVQ + A4-1 1 ООО А\/С АуС (AVQ + 1 1 0 0 1 (АДС)У(АДС) А + С А + <?+ 1 1 0 1 0 С (АуС) + (АДС) (АуС)+(Мё)+1 1 0 1 1 А\/С (AVQ+A (AVC)+A+1 1 1 0 0 const 0 —1 (const 1) 0 1 1 0 1 АДС (АД 0—1 адс 1 1 1 0 ЛДС (АД 0—1 АДС 1 1 1 1 А А —1 А + (ДЛС) выполняется так: а1\/с1 ' ^1ЛС1 Д4\/ С 4 С 2 ^Х/^з ^г/\^2 ^зЛ^З Таким образом, табл. 6.2.1 заполнена в предположении, что вычитание в схеме выполняется в дополнительных кодах (отрицательный результат на выходах Ft должен получаться в дополнительном коде). Но мы увидим, что в действительности можно выполнять вычитание и в об- ратных кодах, т. е. с использованием цепи кольцевого переноса. Интегральные схемы SW54181 можно соединять по- следовательно при помощи сигналов ё0, ё±. При соеди- 285
Нёнйй т микросхем образуется 4/и-разрядный ускорен- ный сумматор, соответствующий рис. 3.1.6,г. Для организации сверхпараллельного сумматора, кроме схем SW54181, используются схемы SW54182 (рис. 6.2.3). В качестве примера рассмотрим построение 32-разрядного сумматора с кольцевым переносом (рис. 6.2.4). Для упрощения рисунка на нем не показаны входы слагаемых и выходы суммы. Из рис. 6.2.2—6.2.4 Рис. 6.2.4 видно, что при операции А—С в сумматоре фактически складываются числа ^2 ^3 • • • ^32> ^2 ^3 * * • ^32* При этом в каждом разряде сумматора вырабатывают- ся (например, в точках у и х см. рис. 6.2.2) две подгото- вительные функции О ,==<7,^, (6.2.1) где Ri—atCt+aiCi. В каждой группе первого яруса вырабатываются две подготовительные групповые функции (см. рис. 6.2.2 и 6.2.4) — Dj+tDi+tDt+tD, +4 — Di+, -|~ D(+i D(+, -|~ +4 286
/?-|-Z)=Z)i+i4*^i+2^<+i4*^<+3^?'+2^?i+i4_ 4- D i+tR 1+3R i+zRt+14“ Ri+iRt+sR i+zR i +1 (z=0, 4, 8, 12, .... 28). (6.2.2) Здесь R=Ri+4Ri+sRi+2Ri+i. (Индексы при буквах R, D соответствуют номерам разрядов чисел Л и С; если группы первого яруса про- нумеровать слева направо от 1 до 8, то можно сказать, что формулы (6.2.2) относятся к группе с номером 14-*74, где i — номер старшего разряда этой группы.) Следует заметить, что логическое произведение сиг- налов SD и R+D равно D i+i -j-Di+iR i+i -{-Di+sR i+zR i+i -\-Di+^R i+zR i+^Ri+x =D, t. e. оно может служить в качестве сигнала возникнове- ния переноса в 4-разрядной группе. В каждой группе остальных ярусов из поступающих в нее из предыдущего яруса сигналов S(D, Rt^-Di фор- мируются при помощи схемы SW54182 два новых сигна- ла (см. рис. 6.2.3) R+D=ViD(fli+Di) +S2D(fl2+D2) (₽t+£>i) + +23П(₽з+^з) (₽2+D2) (Я1+ГМ + + (/?4+f>4) (/?3+D3) (7?2+D2) (₽i+D,) . (6.2.3) Используя сделанные выше замечания относительно свойств произведения сигналов SD, /?+О, выходящих из первого яруса, можно переписать соотношения (6.2.3) следующим образом: SD=SiD+S2D+S3D+S4D, R 4~ D—D1 -J-DzR 1+D3R2R1+D4R3R2R1 -^-RtRzRzR 1. (6.2.4) Произведение этих двух сигналов также может играть роль группового сигнала D. Сигналы (6.2.4) имеют тот же логический смысл, что и сигналы (6.2.2): SZ)=1, если хотя бы в одном из четырех элементов, вхо- дящих в данную группу, вырабатывается «местный» перенос, выходящий из этого элемента (под «элементом» в случае формул (6.2.2) понимается разряд, а в случае формул (6.2.4) — группа разрядов); 7?-|-£>=1, если в данной группе вырабатывается и выходит из нее 287
«местный» перенос либо через данную группу разреша- ется распространение переносов. Из сигналов SP, /?+£> формируются окончательные сигналы переносов. В отличие от рассмотренной в § 3.1 более известной схемы сверхпараллельного сумматора, в которой переносы организуются при помощи сигналов /? и D, в данном случае роль сигнала D любой группы разрядов играет произведение (J?+P)SD, а роль сигна- ла R выполняет сигнал R+D. Так, например, перенос е\ в первый (старший) разряд 32-разрядного сумматора вырабатывается находящейся в первом ярусе сумматора схемой (см. рис. 6.2.4, 6.2.2), реализующей функцию, которая после несложных формальных преобразований приводится к обычной форме: + Д + (/ДО,) D2 + (7?Г+ DJ D3D2 +ё AD,D2= = (R2 + О2) (R, + D3 + Dg) (/?4 + P4 + D3 + Dg) (e. + + ^4+D3 -|- Dg)=D2 -|- D3R2 O4/?s/?2 e^RJifRt (здесь индексы при буквах R, D, e соответствуют нуме- рации этих величин на рис. 6.2.2 и нумерации разрядов в 32-разрядном сумматоре). Переносы в нижних ярусах формируются иначе. Например, сигнал ёь вырабатывает- ся так (см. рис. 6.2.3, 6.2.4): =S2D (/?2 + Dg) + S3D (/?, + РЖ + Р2) + + S4P (/?4 + D4) {R3 + D,) (/?2 + Dg) + + е„ (Rt + D4) (R, + D.) (R2 + D2) = =р2+ад+ РЛД+^/да, (здесь индексы соответствуют нумерации сигналов R, D, 2D, е на рис. 6.2.4). Цепь кольцевого переноса замыкается через отдель- ный элемент И—НЕ. Это обстоятельство не следует счи- тать недостатком схем SM54181, S2V54182, так как обыч- но в реальных устройствах кольцевой перенос все равно приходится то замыкать (например, при вычитании), то размыкать (при сложении). Следует обратить внимание на то, что в сумматоре, показанном на рис. 6.2.4, в нижнюю схему 5У54182 298
в качестве сигналов 2iZ), R\-\-Di, S2Z), R2+D2 заведены постоянные уровни 0 и 1. Этим обеспечивается правиль- ная выработка сигналов 2ц£>, /?и+£>ц. Такой прием является общим для многих стандартных схем, возмож- ности которых в некотором отношении превышают по- требности конкретного применения. Если бы, например, нам был нужен не 32-разрядный, а 31-разрядный сум- матор, то в устройстве, показанном на рис. 6.2.4, следо- вало бы в один из разрядов завести постоянные уровни а=0, с=1 (или а=1, с=0). Выход суммы этого разря- да, естественно, не использовался бы. Интересное предложение содержится в работе [14]. В группах первого яруса сверхпараллельного суммато- ра, описанного в ней, вырабатываются обычные пораз- рядные функции Di, Ri (в [14] они названы Vi, Zi). Далее в первом и во всех нечетных ярусах вырабатыва- ются подготовительные групповые функции D, R (в ра- боте названы V, Z*), т. е. функции, инверсные функциям D и R, используемым в обычном сверхпараллельном сум- маторе *>. В четных ярусах сумматора вырабатываются подготовительные групповые функции SD, /?+£> (в [14] они называются V*, Z), как в только что описанном сверхпараллельном сумматоре. Групповые сигналы пе- реноса в нечетных ярусах вырабатываются инверсными (из сигналов 2£), R-\-D предыдущего яруса и сигналов переноса е, поступающих из последующих ярусов), а в четных ярусах сигналы переноса формируются пря- мыми (из сигналов D, R предыдущего и сигналов ё по- следующих ярусов). Основная особенность такого сум- матора состоит в том, что при использовании элементов И—ИЛИ—НЕ время выработки указанных подготови- тельных функций (и переносов) в каждом ярусе рав- но 1т (время срабатывания одного элемента И—ИЛИ— НЕ), а схемы выработки сигналов D, R, ё соответствен- но тождественны схемам выработки сигналов R-]-D, 1ZD, е, что дает возможность строить весь сумматор на ти- повых узлах двух разновидностей: для первого яруса и для последующих ярусов. *) При таком сопоставлении сумматора из '[14] с обычным сверхпараллельным сумматором предполагается, что в последнем поразрядные функции Ri выбираются по формуле Ri=di+ci, а не Ri=diCi+aiCi. 19—1013 289
6.3. ПОСТРОЕНИЕ ОДНОТАКТНЫХ УМНОЖИТЕЛЕЙ НА БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМАХ Применение ОУ является одним из наиболее мощных методов ускорения операций умножения и деления (де- ления— в тех случаях, когда оно выполняется с по- мощью умножения). За последние годы благодаря успе- хам микроэлектроники и развитию техники БИС исполь- зование этих устройств значительно возросло. Два свойства ОУ делают весьма перспективной их реализацию на БИС: сравнительно небольшое отноше- ние количества внешних выводов к количеству аппара- туры (как для всего устройства, так и для его состав- ных частей) и однородность структуры (последним свойством разные типы ОУ обладают в различной сте- пени). Известны проекты и практические реализации ОУ на интегральных схемах с малой, средней [15—18] и с высокой степенью интеграции [6]. В § 6.3 рассматриваются различные схемы ОУ на БИС. В одних случаях (п. 6.3.1) речь идет об использо- вании БИС, представляющих собой ^-разрядные двоич- ные параллельные сумматоры, т. е. БИС, не предназна- ченных, вообще говоря, для построения ОУ. В других случаях рассмотрены методы построения ОУ из специ- ально для этого разработанных БИС—^-разрядных пре- образователей М-рядного двоичного кода в двухрядный (п. 6.3.2) или из БИС, представляющих собой ОУ мень- шей разрядности (п. 6.3.3). В ОУ, построенном на БИС, можно различать микро- структуру устройства (структуру БИС) и макрострукту- ру (характер соединений между БИС). В некоторых случаях эти две структуры могут быть практически оди- наковыми (можно, например, из БИС, представляющих собой небольшие однородные матричные ОУ, собрать большое ОУ с таким же характером структуры). 6.3.1. ПОСТРОЕНИЕ МНОГОСЛОЙНЫХ ОДНОТАКТНЫХ УМНОЖИТЕЛЕЙ ПРИ ПОМОЩИ ПАРАЛЛЕЛЬНЫХ СУММАТОРОВ Если по тем или иным причинам в распоряжении разработчика отсутствуют БИС, специально предназна- ченные для построения ОУ (такие БИС будут рассмот- рены в п. 6.3.2, 6.3.3), то наиболее подходящими для соз- 290
дания ОУ обычно оказываются БИС, содержащие мало- разрядные (^-разрядные) параллельные двоичные сум- маторы. Из таких интегральных схем можно строить, вообще говоря, ОУ различной конфигурации. Можно, например, реализовать любую из однородных структур (см. рис. 4.4.3). Для этого нужно схему ОУ разделить вдоль цепей переносов на участки, содержащие по k одноразрядных сумматоров. Формирование частичных произведений осуществляется при этом либо отдельными схемами (одна из возможных схем будет показана на рис. 6.4.1), либо прямо внутри БИС с сумматорами (не- которые из БИС обеспечивают такую возможность). Однако однородные ОУ в ряде случаев оказываются недостаточно быстрыми и тогда более предпочтительны многослойные построения. В п. 4.4.4, 7°, 8°, были рас- смотрены быстродействующие многослойные ОУ, по- строенные из одноразрядных сумматоров. Время работы такого устройства определяется количеством М его слоев; М получается из неравенства где п — разрядность сомножителей, а л(т) — определяе- мая соотношением п(т)=п(т-1)+[п(т-1)/2] максимальная разрядность сомножителей, которые можно перемножить на ОУ, имеющем Т слоев (следует учесть, что п(0)=2). Для краткости назовем схему такого ОУ «классической». К сожалению, классическая схема мало подходит для реализации на БИС, так как ее структура неоднородна и, по-видимому, может быть разделена на одинаковые узлы единственным способом: узел должен содержать не связанные между собой одноразрядные сумматоры. Однако при этом для каждого сумматора на БИС долж- ны иметься 5 внешних выводов, что приводит к очень невыгодному увеличению отношения f/v количества f внешних выводов БИС к объему v находящейся в ней аппаратуры. В следующем пункте (6.3.2) будет изложен метод построения ОУ, приближающихся по быстродей- ствию к классической схеме, из БИС нового типа. В этом пункте (6.3.1) мы тоже попытаемся строить схе- му, родственную классической, но в качестве составных частей ОУ будут использованы ^-разрядные ускоренные двоичные сумматоры [19]. Будем полагать, что в таком сумматоре все k сигналов суммы и сигнал переноса из старшего разряда вырабатываются одновременно через 1т после поступления всех входных сигналов, число kq- торых, очевидно, равно 2^+1. 291
Построим многослойное ОУ, в первом слое которого исходные п=по слагаемых (рядов, частичных произве- дений) преобразуются в ni рядов, во втором слое ni ря- дов преобразуются в п2 рядов и т. д. Опишем организацию первого слоя. Разобьем исход- ные слагаемые на группы, содержащие по 214-1 чисел. В одной неполной группе при этом, очевидно, окажется п—(21-|-1) [п/(214-1)] чисел, причем О^п— (214-1)Х X[n/(2k+l)]^2k. Произведем суммирование 214-1 слагаемых каждой полной группы при помощи 1-разрядных сумматоров, расположив их в k строк таким образом, чтобы в каж- дой строке складывались два исходных числа, а всего на k строк будет заведено 2k чисел. Цифры одного оставшегося исходного числа группы заведем на входы переносов в младшие разряды этих же 1-разрядных сум- маторов. Для этого сумматоры каждой строки должны быть соответствующим образом сдвинуты на один раз- ряд по отношению к сумматорам соседней строки. Вы- ходные сигналы сумм указанных сумматоров и сигна- лы переносов из их старших разрядов при этом образуют (14-1)-рядный код. Все 11= [п/(21-|-1)] полных групп, следовательно, преобразовывают (214-1)11-рядный код в (1-(-1) li-рядный. Оставшаяся неполная группа, как мы видели, содер- жит п—(214-1)11 чисел. Если п—(214-1)11^2, то эти числа обрабатывать не будем, а просто пропустим их сквозь слой. Если п—(214-1)11^3, то произведем сум- мирование при помощи [(п—(214-1)11—1)/2] дополни- тельных строк сумматоров. Сумматоры в строках сдви- нем так же, как в полной группе. В каждой строке бу- дут складываться 2 числа и, кроме того, на входы пере- носов в младшие разряды сумматоров будут заводиться цифры из еще одного числа. Следует отметить, что при п—(214-1)11^3 часть разрядов одного числа неполной группы не преобразовывается, а проходит сквозь слой. Например, если неполная группа содержит 3 числа, то на строку сумматоров заводятся 2 числа и только одна из каждых k цифр третьего числа. Если же, кроме того, п_ (214-1)1! четно, то еще одно число неполной группы .целиком проходит сквозь слой без преобразования. Аналогичным образом строится каждый i-й слой, пре- образующий т-i рядов в т рядов. Вся структура ОУ описывается уравнениями 292
= l)Az-|-vz, Az= v{ = О при tii — (2Z>-(- 1)Л, =0, [nz-(2* 4-1) Xz ] 1 при _ (2ft+1)2.>Of nM = 2, i=l,2,..., AT. (6.3.1) (Как и в п. 4.4.4, мы полагаем, что на выходе послед- него Л4-го слоя получаются два числа, которые далее будут складываться на параллельном сумматоре.) График функции приведен на рис. 6.3.1 (этот же график был изображен на рис. 4.4.16е (с. 203)). Сплошной линией показано преобразование, осуще- ствляемое над слагаемыми одной (полной или не- полной) группы; дальше л, график периодически по- вторяется (штриховая * линия). Из (6.3.1) и рис. 6.3.1 следует, что при ис- ’ * пользовании этого мето- о да построения ОУ выпол- t * т t__ - r t няются все пять условий о • • • (условия 1—5), рассмот- ренных в п. 4.4.4. Поэго- Рис- 6,31 му каждому Т соответ- ствует №— максимальное количество рядов (чисел), которое можно свернуть в двухрядный код на ОУ, со- держащем Т слоев. Известно (см. п. 4.4.4), что тахпг_1 = п<т) при ni=n(T“1). Учитывая это обстоятель- ство, можно вывести из рис. 6.3.1 или из соотношений (6.3.1) следующую зависимость между и г^т~^\ Г п\т-^ 1 n<^ = (2fe+l)Z + v, Л = [-^ч-т_], (О при п(Т ° — 1)Я = 0, v= |2 (п(Г-1) -(fc-pH)- 1 'при (£-[- 1)Л.>0, Т=1, 2,... (6.3.2) Подставляя сюда и(0)=2, получим и(1). Подставляя да- лее п<», п(2), ..., получим последовательно величины п(2), п(3), ... для любого k (табл. 6.3.1). 293
Таблица 6.3.1 k п(0) п(1) «(2) «(3) »(<) „(5) /г(6) «(7) п(8) Я(9) 2 2 3 5 8 13 21 35 58 96 160 3 2 3 5 8 14 24 42 73 127 222 4 2 3 5 9 16 28 50 90 162 291 5 2 3 5 9 16 29 53 97 177 324 6 2 3 5 9 16 29 53 98 182 338 7 2 3 5 9 16 30 56 105 196 367 8 2 3 5 9 17 32 60 ИЗ 213 382 Зная величины «<0), «(1), ..., можно определить М для любого «о (см. п. 4.4.4). Для этого нужно выбрать такие два числа «(т-1), «(т), что «(т-|)<«0^п(Т). Тогда М=Т. Например, ЛГ=6 при k=5 и «0=48, так как в этом слу- чае «<5>=29<«^53=«(в). Последовательность из п, для этого примера получается из (6.3.1): «1=27, «2=15, «з=9, «4=5, «5=3, «6=2. Полное время умножения в устройстве, построенном на только что описанных принципах, равно ТфИ-Мт-рт СМ, где Тф — время формирования частичных произведений, т — время срабатывания одного слоя, тСм — время за- ключительного сложения двух чисел. Количество слоев М приблизительно равно М = 10^+1 *-н а точная оценка, как сказано, дается соотношениями (6.3.2) и табл. 6.3.1. Основная структура ОУ для £=4, «о=12 отражена на рис. 6.3.2, имеющем тот же характер, что и аналогич- ные рисунки в п. 4.4.4. Как и в других случаях (см. п. 4.4.4), существует «экономичная» модификация этого метода, при которой П{=п(м-1\ П2=п(м-ъ, .... им=п(0)=2. «Экономичное» ОУ для п0=12 иллюстрируется рис. 6.3.3. Можно заметить, что частным случаем данно- го метода является метод, рассмотренный в п. 4.4.4, 7°, 8° и названный нами классическим; в этом случае 6=1. 294
Рис. 6.3.2 Другим частным случаем (А=оо) является метод, рас- смотренный в п. 4.4.4, 2°, 3°. Как уже говорилось, из ускоренных ^-разрядных сумматоров можно строить ОУ и других типов. Одно из предложений содержится, например, в [26]. Однако ме- тод, изложенный выше, обеспечивает большее быстро- действие. 6.3.2. МЕТОД ПОСТРОЕНИЯ МНОГОСЛОЙНЫХ ОДНОТАКТНЫХ УМНОЖИТЕЛЕЙ ПРИ ПОМОЩИ ПРЕОБРАЗОВАТЕЛЕЙ N-+2 Рассмотрим еще один метод преобразования много- рядного кода, обеспечивающий примерно такую же ско- рость преобразования, как и классическая многослойная схема, но реализуемый одинаковыми специальными узлами, имеющими небольшое количество внешних вы- водов [20]. Метод состоит фактически в построении близких к классическому преобразователей и-рядного кода в двухрядный (и=3, 4, ...) из классических пре- 295
образоватёлей TV-рядного кода (N — фиксированное це- лое число, причем ТУ^З). Пусть имеется узел (БИС), обладающий Nk основ- ными входами, 2k основными выходами, N—3 дополни- тельными входами и N—3 дополнительными выходами (рис. 6.3.4). Здесь k— разрядность двоичных чисел, по- ступающих на основные входы узла, N — количество этих чисел (рядов). На рис. 6.3.4,а показан узел, в ко- Рис. 6.3.4 тором 2V=9, на рис. 6.3.4,б — один разряд узла с пара- метром N=8, на рис. 6.3.4,в — один разряд узла для случая М=4. Узел содержит (N—2)k одноразрядных сумматоров (на рисунке изображены в виде квадратов) и состоит из k одинаковых частей, каждая из которых представляет собой один разряд классического преоб- разователя АЛ-рядного кода в двухрядный. Если несколь- ко таких узлов соединить друг с другом цепочкой таким образом, чтобы дополнительные выходы предыдущего узла были соединены с дополнительными входами сле- дующего так, как соединяются соседние разряды внутри узла, то получается схема, которая может служить клас- сическим преобразователем Af-рядного кода (W много- разрядных двоичных чисел) в двухрядный. Для кратко- сти будем называть такой узел (БИС) преобразователем N-+2, а цепочку преобразователей 7V->2, соединенных указанным образом для преобразования чисел большей 296
разрядности, чем Л, назовем рядом преобразователей. Преобразователь n-рядного кода в двухрядный со- ставим из М слоев преобразователей. Выходы каждого i-го слоя являются входами следующего, (i*+l)-ro слоя. Каждый i-н слой (i=l, 2, ..., М) содержит несколько рядов преобразователей. Через ni-i и и/ обозначим ко- личество слагаемых (ря- дов) соответственно на вхо- п' > де и выходе i-ro слоя. Разобьем исходные п= =п0 слагаемых на группы, 2> содержащие по 2V чисел. г т \ т » У нас получится X\ = [n/N] и г ••• zn полных групп и одна не- полная группа, содержа- Р*10, 6-3*5 щая п—чисел (очевид- но, что 0<cn—7VZi<AZ). Каждую из Xi групп бу- дем преобразовывать в двухрядный код при помо- щи одного ряда преобразователей. Неполную группу при п—NK^3 тоже преобразуем в двухрядный код еще одним рядом преобразователей. Если п—2VXi^2, то про- пустим числа неполной группы сквозь первый слой без преобразования. Таким образом, на выходах слоя полу- чится Mi чисел, причем П\ = 2Xi+vi, V =/^° 1 I 2 Xi= [по/Л^], при nQ — N\ < 2, при nQ — NX^3. Аналогичным образом строится каждый Лй слой, преобразующий чисел в п/. График функции п,= показан на рис. 6.3.5. (Этот же график был приведен на рис. 4.4.16ж, с. 203). Сплошной линией показано преобразование, осуществляемое над слагае- мыми одной (полной или неполной) группы; дальше график периодически повторяется (штриховая линия). Видно,‘что в данном случае условия 1—5 (см. п. 4.4.4) выполняются. Вся структура ОУ описывается следую- щими соотношениями *>: *) Очевидно, что при 3^пг_1—Nki^N—1 аппаратура того ряда преобразователей, на который поступает пг—i—Nki слагаемых не- полной группы, используется неполностью. 297
{ni_1—NXi при nz_, —Wl/<2, 2 при 4.,— Л^Яг>3, n =2, i — 1, 2,..., M. M 1 1 ’ (6.3.3) Любому целому Т соответствует и(т) — максимальное количество исходных слагаемых, которое может быть свернуто в двухрядный код устройством, содержащим Т слоев. Так как nm=maxn^ при ni=nST-v>, то из (6.3.3) можно получить следующую зависимость между Л(Т) и „(Т-1). nm=n(T-i)+ (2V—2) [п<т~^/2]. (6.3.4) В самом деле, при данном щ максимальное nt--i по- лучается, если каждая из [nt/2] пар чисел получена путем преобразования N чисел одним рядом преобразо- вателей 2V->2, a rti—2[и//2] чисел прошло сквозь слой без преобразования. Полагая щ=п{Т~х\ получаем: n^=N [nST~^/2] + (п^-1)—2 [п{т~^/2]), откуда следует (6.3.4). Подставляя в (6.3.4) п<°)=2, можно по очереди вычислять и(1), п(2), ... для любого N. Для четного N можно получить функцию n{T)=f(T) в явном виде. В самом деле, при четных и(т-1) и N из (6.3.4) имеем: /т п , п(Г—___ N (Г—в п(Г)=п(Г-,) + ^ -2)---2-- ~Гп » т. е. и(т) — тоже четное. Поэтому из четности и(0) следует четность и(1), далее — четность и(2) и т. д. Следовательно, п(т)— четное при любом Т: „.,=2=2(4у, „.,=42(4)-=2(4у, п(8) = 4^ = 2(4У>-> «<П = 2(4)Г- (6-3-5) Таблица 6.3.2 г=о п<г) п<г> Г=1 т=2 т=з Т=4 Г=»5 т=о | Г=1 Г=2 | т=з Т=4 | Г=5 3 2 3 4 6 9 13 6 2 6 18 54 162 486 4 2 4 8 16 32 64 9 2 9 37 163 730 3285 298
Некоторые из величин и(т) приведены в табл. 6.3.2. Так как условия 1—5 выполняются, то М=Т при n(T”i)<n0^n(T). Например, при 2V=4 и и0=51 количест- во слоев в ОУ равно Л4=5 (так как 32=n(4)<n0^n(5)= =64). Величины и,, получаемые из (6.3.3), для этого при- мера равны т=26, и2=14, м3=8, п4=4, и5=2. Можно заметить, что при 2V=3 ОУ рассматриваемо- го типа превращаются в классическую схему, описанную в п. 4.4.4. В табл. 6.3.3 величины размещены в несколько ином порядке. В каждую колонку таблицы сведены ве- личины и(м) устройств, обладающих одинаковым быст- родействием, т. е. одинаковым произведением МК, где /С—количество слоев одноразрядных сумматоров внут- ри преобразователя 2V->2 (считаем, что каждый слой одноразрядных сумматоров срабатывает за одно и то же время). Для таблицы выбраны преобразователи с па- раметрами N, равными для случая 2V=3, т. е. вы- браны преобразователи 2V->2 с максимально возможным количеством слагаемых N при данном количестве К слоев внутри преобразователя 2V->2. Из таблицы видно, что при заданном п произведение МК, т. е. быстродей- ствие ОУ, в общем мало зависит от N. Это обстоятель- ство можно объяснить следующим образом. Количество слоев сумматоров в каждом из классических преобразо- вателей Af-рядного кода, используемых для составления Таблица 6.3.3 N, К „(М) W = 3, К= 1 N = 4, К = 2 N = 6, <К = 3 N = 9, К = 4 N= 13, К = 5 = 19, N = 28 К=7 13 19 28 16 18 13 19 28 42 32 37 63 54 94 64 79 141 211 128 162 163 172 316 474 711 256 486 508 392 МК 12 3 4 5 6 7 8 9 10 299
преобразователей n-рядного кода, примерно равно 1Z 1 У К log3/2 2 (см. формулы (4.4.12), (4.4.13) в п. 4.4.4). Количество слоев в преобразователе n-рядного кода, как видно из (6.3.4), (6.3.5), примерно равно М 1°ёл/721" • Поэтому общее количество слоев сумматоров МК l°g3/2 -у log^“у в 1°£з/2 ~2~ не зависит (точнее, мало зависит) от N и примерно рав- но количеству слоев в классическом ОУ, перемножаю- щем n-разрядные сомножители. Такая оценка, однако, является довольно грубой. В качестве примера рассмотрим построенное на четырехразряд- ных преобразователях 4—>2 устройство, сворачивающее 9-рядный код (9 частичных произведений) в двухрядный (W=4, k = 4, п = 9). Структура основной модификации ОУ отражена на рис. 6.3.6. Из рисунка видно, что для формирования двухрядного кода произведе- ния требуется 12 преобразователей и что общее количество слоев М равно трем. Так как К=2, то все преобразование производится за 6тс, где Тс — время срабатывания одноразрядного сумматора. (При использовании классической схемы при п=9 количество слоев М равно 4 и время преобразования, следовательно, равно 4тс, однако, например, при л=16 обе схемы выполняют преобразование за одно и то же время — 6тс.) Следует отметить, что метод построения ОУ на пре- образователях Af->2 может иметь и «экономичную» мо- дификацию, как и методы, рассмотренные в п. 4.4.4, 6.3.1, т. е. модификацию, при которой п{=п^м~^, «Эко- номичная» структура для случая и=9 иллюстрируется на рис. 6.3.7. Сопоставляя методы построения многослойных мат- ричных ОУ на параллельных счетчиках (3,2), (7,3), (15,4), (k, т) (см. п. 4.4.4), на ^-разрядных параллель- ных сумматорах (п. 6.3.1) и на преобразователях ^->2, можно придти к выводу, что для реализации ОУ на БИС, по-видимому, весьма перспективна последняя груп- па методов. Умножитель, построенный на преобразова- телях 2V->2, мало уступает в быстродействии ОУ на счетчиках (3,2) (классической схеме), но выгодно отли- чается от нее небольшим отношением f/v количества 300
f внешних выводов БИС к объему v находящейся в ней аппаратуры. Другие перечисленные ОУ при прочих рав- ных условиях уступают ОУ на преобразователях N-+2 в быстродействии. К сожалению, в настоящее время пре- образователи 2V->2, выполненные в виде БИС, промыш- ленностью, по-видимому, не выпускаются. Выполненный в виде БИС преобразователь W->2, описанный в этом параграфе, состоит, как мы видели, 15 10 15 Рис. 6.3.6 Рис. 6.3.7 из k одинаковых разрядных схем и имеет f=kN+2N+ +2£—6 внешних выводов. Можно показать, что если до- пустить, чтобы в БИС крайняя левая и крайняя правая разрядные схемы отличались от остальных (одинако- вых) разрядных схем, то можно, вообще говоря, добить- ся уменьшения количества f внешних выводов БИС при сохранении того же объема v аппаратуры преобразова- теля 2V->2 и при том же для данного п количестве М слоев (и, следовательно, том же быстродействии) ОУ. Сказанное поясняется рис. 6.3.8, на котором показан 301
преобразователь 9->2, содержащий столько же аппара- туры, как и преобразователь 9->2, изображенный на рис. 6.3.4,а. Новый преобразователь имеет на 6 внешних выводов меньше. Экономия достигнута путем такого про- ведения «боковых» границ БИС, при котором «перере- зается» минимальное количество «боковых» сигналов *\ Ясно, что узлы, один из которых показан на рис. 6.3.8, тоже могут соединяться боковыми сторонами в длинную цепочку, образуя такой же ряд преобразователей 9->2, как и цепочка узлов, один из которых изображен на рис. 6.3.4,а. 6.3.3. СОСТАВНЫЕ ОДНОТАКТНЫЕ УМНОЖИТЕЛИ НА БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМАХ Если в распоряжении разработчика имеются БИС, каждая из которых представляет собой ОУ того или иного типа, способный перемножать малоразрядные со- множители, то составить из таких «элементарных» ОУ большой ОУ можно, вообще говоря, многими способами. Рассмотрим несколько примеров. Пусть для синтеза ОУ используются умножители 4X4 [21—23], каждый из которых выполнен в виде ДЗУ (долговременное запоминающее устройство, «read ♦) Эта возможность указана В. Я. Горштейном. 302
only memory») [21, 22] или в виде матричного ОУ [23 J и допустим, что требуется составить ОУ, перемножаю- щий 8-разрядные числа. Для такого устройства нужно использовать 4 БИС. Одна БИС формирует произведение (назовем его ча- стичным произведением) четырех старших (или млад- ших) разрядов множимого на четыре старших (или1 младших) разряда множителя. Частичные произведения можно складывать сумматорами так [21, 22], как это- показано на рис. 6.3.9, или так [23], как показано на 15 10 15 15 Ю 15 ’////////•••• В Рис. 6.3.9 Рис. 6.3.10 рис. 6.3.10 (на рисунках использованы те же обозначе- ния, что и в п. 4.4.4). Видно, что в первом случае (рис 6.3.9) используется 8-разрядный и 12-разрядный па- раллельные сумматоры, а во втором случае — 8 одно- разрядных сумматоров и 11-разрядный параллельный сумматор. Из рис. 6.3.9, впрочем, видно, что если в млад- шем разряде 8-разрядного сумматора складывать не 2, а 3 цифры, то второй сумматор станет 11-разрядным и объемы аппаратуры суммирующих схем, показанных на рис. 6.3.9 и 6.3.10, сравняются. Достоинство второй из этих двух схем состоит в том, что ее легче ускорить (нужно ускорять только И-разрядный сумматор). Интересная идея построения ОУ использована в мик- росхемах SW54284, SW54285 фирмы Texas Instruments. Одна из этих схем формирует старшие четыре, а дру- гая— младшие четыре разряда 8-разрядного произведе- ния двух 4-разрядных сомножителей. Благодаря этому каждая микросхема располагается в корпусе с 16 вы- водами. Одна пара схем SN54284, SW54285 представляет собой, таким образом, ОУ 4X4. В каталоге [24] на стр. 496, 497 описано составное ОУ 8X8, построенное 303
в соответствии с рис. 6.3.10. В этом умножителе четыре пары схем SW54284, SW54285 за 40 нс вырабатывают четыре произведения 4X4, затем четыре схемы SW54//183, каждая из которых содержит два однораз- рядных сумматора, за 12 нс преобразуют трехрядный код произведения в двухрядный, и, наконец, сверхпарал- лельный сумматор, составленный из трех схем ^S7V54S181 и одной схемы SW54S182 (см. § 6.2), за 22 нс формирует 11 старших раз- рядов произведения. Время умножения, таким образом, равно 74 нс. Необходимость использо- вать дополнительные сумма- торы для сложения частич- ных произведений, выраба- тываемых элементарными ОУ (из которых составляет- ся большой ОУ)» вообще го- воря, характерна для подоб- ных построений. Однако это- го можно избежать, если в схеме самой БИС имеется аппаратура для прибавления некоторого числа к формируемому частичному произведе- нию. Пример такого составного ОУ приведен в [16]. В данном случае интегральная схема состоит из восьми одноразрядных двоичных сумматоров, каждый из которых соединен с двухвходовой схемой И (рис. 6.3.11,а). Такой узел в условном виде изображен на рис. 6.3.11,6. Восемь указанных узлов соединены в интегральной схеме так, как это показано на рис. 6.3.11,в. Видно, что эта схема может играть роль ОУ 4X2 (на входы каждой схемы И подается одна цифра множимого и одна цифра множи- теля), причем к 6-разрядному произведению может при- бавляться произвольное 4-разрядное число и еще две двоичные цифры. Эта схема требует 20 контактов (48 логических и 2 для питающих напряжений) и может быть размещена в корпусе с 24 выводами. Схема составного ОУ 8X8, содержащего 8 таких ин- тегральных схем, приведена на рис. 6.3.12. Весь ОУ со- ставлен из одинаковых узлов и не требует дополни- тельных сумматоров. Если считать, что в каждом одно- разрядном сумматоре тСм=Те=т, то время работы та- 304
кого ОУ равно 25т+ти, где ти — время срабатывания входной схемы И. В рассмотренных примерах элементарные ОУ были малоразрядными, но и более крупные схемы могут со- единяться аналогичными способами. 6.4. ПОСТРОЕНИЕ СДВИГАТЕЛЕЙ, ДЕШИФРАТОРОВ, КОММУТАТОРОВ НА БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМАХ Много места в арифметических устройствах совре- менных ЦВМ обычно занимают сумматоры, умножители и регистры. Построение быстродействующих сумматоров и умножителей на БИС мы рассматривали в § 6.2, 6.3 Существует множество интегральных схем разного уров- ня интеграции, содержащих триггерные регистры того 20—1013 305
или иного типа. Эти схемы широко известны и мы не будем их рассматривать. Значительную часть арифметического устройства со- ставляют также дешифраторы, коммутаторы, сдвигате- ли и счетчики. Эти узлы ши- роко используются также и в других устройствах вычисли- тельных машин и систем — в устройствах центрального управления и в логической части ЗУ и устройств ввода— вывода. Номенклатура инте- гральных схем, содержащих подобные узлы, тоже достаточ- но широка. Мы отметим здесь только одно обстоятельство: в ряде случаев объем v аппа- ратуры, находящейся в БИС, и количество f внешних выво- дов БИС являются функциями двух структурных параметров и задача минимизации крите- рия оптимальности может иметь строгое решение. На рис. 6.4.1 приведена известная схема адресного дешифратора, которая имеет ряд других применений и, 306
в частности, может быть использована в качестве узла формирования частичных произведений в матричном умножителе. Узел вырабатывает тп логических функций вида q)ij=aiCj (/=1, 2, 3, /и; /=1, 2, ..., п) и хо- рошо подходит для реализации в виде БИС, так как обладает сравнительно небольшим числом f внешних выводов (т-\-п-\-тп) при значительном объеме v аппа* ратуры (тп узлов формирования функций Таким образом, отношение f/v равно f(m, ri)/v(m, п) = (тп-}-т+п) /тп. (6.4.1) На рис. 6.4.2 приведена схема n-разрядного коммута- тора, сквозь который может передаваться одно из т л-разрядных чисел /А, 2А. ..., mA: еСЛИ CLj = 1, CLX = CL2 = ... = CLj _ j = dj -i-j = CL :_j_2 = ... = = am = 0, to ^=/4, <р2 = /Д2,= Кроме коммутирования потоков информации, схемы этого типа могут выполнять ряд других функций. В част- ности, на их основе могут создаваться разнообразные быстродействующие сдвигатели [25]. Структура комму- татора, приведенная на рис. 6.4.2, в определенном смыс- ле обратна структуре только что рассмотренного дешиф- ратора. Параметр f/v БИС, содержащей этот коммута- тор, определяется тем же соотношением (6.4.1) (тп — количество элементов И). 6.5. ОПТИМИЗАЦИЯ СТРУКТУРЫ ДВУМЕРНЫХ МАТРИЧНЫХ ИНТЕГРАЛЬНЫХ СХЕМ В современных быстродействующих ЦВМ времена срабатывания логических элементов соизмеримы с поте- рями времени на распространение электрических сигна- лов. Поэтому одной из важнейших проблем, связанных с проектированием вычислительных систем, стала мини- мизация межсхемных связей. Если некоторая машина или устройство проектируется из интегральных схем определенного размера, то, очевидно, количество и дли- ны межсхемных связей при прочих равных обстоятель- ствах тем меньше, чем меньше количество использован- ных интегральных схем и чем меньше количество внеш- них выводов на этих схемах. Если считать, что объем аппаратуры проектируемого устройства — заданная по- 20* 307
стоянная величина, то для достижения этой це- ли нужно стремиться во-первых, к увеличению количества аппаратуры v в каждой интегральной схеме (при этом буде1г уменьшаться число этих схем, общее количество связей и их длины) и, рис 651 во-вторых, к уменьшению ис* ’ числа f внешних выводов интегральной схемы, что приводит к уменьшению количества связей. В силу этих соображений отношение f/ v может считаться одним из важнейших критериев оптимальности структуры БИС [2, 12, 20, 25]. При проектировании структуры БИС конструктивные требования обычно выражаются неравенствами f^F, (6.5.1) где V, F—максимально допустимые значения вели- чин v, f. Рассмотрим задачу минимизации критерия f/v при ограничениях (6.5.1). В п. 6.3.2 была рассмотрена структура БИС (А-раз- рядный преобразователь Af->2), для которого критерий оптимальности f/v выглядит следующим образом: p=f/v= (kN+2N+2k—6) / (kN—2k), (6.5.2) где v=kN—2k — количество одноразрядных сумматоров в БИС. В § 6.4 были описаны структуры двух других БИС (дешифратор и коммутатор), для которых критерий f/v тоже является функцией двух параметров: p=f/v=(mn-]-m-(-n) /тп. На рис. 6.5.1 приведена схема БИС, представляющей собой однородную структуру, содержащую одноразряд- ные сумматоры См, и пригодной для синтеза различных однородных ОУ. Для этой БИС p=f/v= (тп-}-4п-\-2т—2) /тп, где v=mn — количество одноразрядных сумматоров. 308
Подобные примеры можно было бы продолжить. Су- ществует достаточно широкий класс БИС, имеющих разные принципы действия и различную внутреннюю организацию, но обладающих более или менее однотип- ными аналитическими выражениями критерия р, являю- щегося функцией двух параметров структуры БИС. Оптимизация таких структур, т. е. отыскание целочис- ленных значений двух указанных параметров, обеспечи- вающих минимум функции р, производится более или менее одинаковыми способами. Рассмотрим в качестве примера методику оптимизации пара- метров N, k преобразователя N—>-2 |[20]. Зависимость p(N, k) определяется соотношением (6.5.2) и иллюстрируется рис. 6.5.2. Так как dp/dN<Qy dp/dk<Q при W>3, &>1, то величина р убывает с ростом N и k. Отметим, что lim р= 1. ЛГ-юо Л->Ор Каждое из неравенств (6.5.1) ограничивает зону значений Ny k, в которой ищется минимум р. Границы этих зон для некоторых значений V, F показаны на рис. 6.5.3. Уравнение границ k = vf(N—2) (u=V=const), £=,(/=—2tf+6)/(tf+2) (f=F=const) получаются из соотношений f = kN+2N+2k—6, (6.5.3) v = kN—2k. (6.5.4) Легко показать, что значения р вдоль любой из этих границ воз- растают в обе стороны от точки пересечения этой границы с прямой N=2k+2 (штриховая линия на рис. 6.5.3). Действительно, если /=const, то, подставив k= (f—2W+6)/ (W+2) в (6.5.4), получим функцию v = (-2№+fN+ j 0^-2/=-12) / (N+2), производная которой dv/dN= (4f+32—2N2—8N) /(ЛЧ-2)2 обращается в нуль при # = ЛГ> =V2f + 20 —2, /У = ЛГ2 = —l<2f + 20 —2. Нетрудно показать, что N=Nt обеспечивает максимум v и, следо- вательно, минимум р, который равен Pmin = 1 -4-8 / (Л7— 2) —4/ (N—2)2. 21—1013 309
Соотношения между N, k, v, f в точке экстремума имеют сле- дующий вид: # = 26+ 2 = 2 + К2и = К 2/ + 20 — 2, 6=( — 2)/2=Кр/2=К//2 + 5 — 2, v = (# — 2)2/2= 262 =f — 4/2/ + 20+ 18, f = (# + 2)»/2 — 10 = 2 (6 + 2)2 — 10 = t» + 8 Kv/2 — 2. (6.5.5) К этим же соотношениям можно прийти, если положить v = = const, подставить k=v/(N—2) в (6.5.3) и приравнять нулю про- изводную df/dN (минимум f в этом случае обеспечивает мини- мум р). Из сказанного следует, что при ограничениях (6.5.1) минимум р достигается при AZ=min (Уу, Уг), k=(N—2)/2, (6.5.6) где Nv = 2 + 2 Kv , NF = if 2F + 20 — 2. Вычисленные таким об- разом параметры N в k могут оказаться не целыми числами. В этих случаях следует выбирать N в k, близкие к получающимся по (6.5.6). Введем обозначение: Q=min (Nv, Nf). Можно показать, что оптимальные целочисленные значения парамет- ров N, k могут быть выбраны при помощи следующей процедуры. Если Q = 2Z (/=1, 2, ...), то минимум р обеспечивается при W=2Z, £=/—!. Если 2Z<Q<2Z+2, то для обеспечения минимума р следует выбрать такую из четырех пар чисел У=2/, 1 V = 2Z + 1, 1 k=l — 1 Г k= I — \ )’ N = 2Z, k = I N = 2l-\-\, k=l 310
Таблица 6.5.1 V 2 8 18 32 50 72 98 f 8 22 40 62 88 118 154 N 4 6 8 10 12 14 16 k 1 2 3 4 5 6 7 Р 4 2,75 2,22 1,94 1,76 1,64 1,55 для которой f^F, причем для следующей по порядку пары хотя бы одно из этих двух неравенств должно не выполняться. Ре- шение N = 2l \ k = l / может быть заменено эквивалентным (те же и, Д р) решением W = 2/+ 2 1 k = l — 1 Г На рис. (6.5.4) штриховой линией показана зависимость ртш от N. Здесь же приведены графики p(N) для нескольких фиксиро- ванных v. В табл. 6.5.1 приведено несколько первых целочисленных решений системы уравнений (6.5.5). Видно, что уже при М=10 ве- личина р оказывается в два с половиной раза меньше, чем для БИС, содержащей не связанные между собой одноразрядные сум- маторы. Следует отметить, что при проектировании структуры БИС, кроме минимизации критерия f/v, нужно стремить- ся к удовлетворению ряда других требований и пожела- нии, анализ которых не мо- жет быть произведен в об- щем виде. Например, во многих случаях желательно, чтобы разрядность схемы, находящейся в БИС, была равна целой степени двойки. Можно также учитывать, что некоторый узел, разде- ленный на независимые ча- сти (например, сумматор, разделенный на несколько 21* 311
более коротких сумматоров), в некотором отношении бо- лее универсален, чем неразделенная схема: эти части можно использовать порознь. Подобных соображений может оказаться множество. 7. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ ЛОГИЧЕСКИХ И АРИФМЕТИЧЕСКИХ УСТРОЙСТВ И УЗЛОВ ЦВМ В этой главе рассматриваются форма и точность представления чисел в ЦВМ, способы (неускоренные) выполнения основных опера- ций (сложения, вычитания, умножения, деления), системы элементов и структуры типовых узлов (регистров, сдвигателей, коммутаторов, сумматоров). 7.1. ОСНОВЫ АЛГЕБРЫ ЛОГИКИ При создании различных узлов ЦВМ, в особенности при выборе оптимальной с некоторой точки зрения структуры узла, значитель- ную помощь разработчику может оказать математический аппарат алгебры логики, изучающей высказывания, рассматриваемые со сто- роны их логических значений (истинности или ложности) и логиче- ских операций над ними. Приведем краткие сведения из этой обла- сти, достаточные, однако, для большинства практических приме- нений. В алгебре логики любая логическая функция f(A, С, ...) от логических переменных А, С, ..., как и любая переменная А, С, ..., может принимать только два значения (истинное и ложное), чля обозначения которых можно ввести символы «И» и «Л». Вместо >гих символов обычно употребляют (что мы и делаем) числа 1 и 0. Такой характер логических функций и переменных фактически сов- падает с характером сигналов в большей части аппаратуры боль- шинства вычислительных машин — это сигналы также могут прини- мать только два значения. Можно показать, что количество всевозможных функций от k переменных равно 22 . Четыре функции fi, ..., /ч одной перемен- ной А приведены в табл. 7.1.1. Все функции двух переменных пока- заны в табл. 7.1.2. Две первые из них (fb /г) фактически не зависят от перемен- ных А, С и называются const 0 (константа 0) и const 1 (констан- та /). Функции f3, ..., fQ, как видно из таблицы, фактически зависят только от одной переменной, причем f3 и f4 просто повторяют зна- чения переменных А и С, а функции fs и f6 соответственно обратны 312
переменным А и С. Каждая из функций fs, fe называется функцией отрицания (функцией НЕ, инверсией) и обычно обозначается, как это сделано в табл. 7.1.2, названием соответствующей переменной с черточкой сверху. Физический элемент, реализующий функцию НЕ, обычно называют инвертором. Функция f7 называется дизъюнкцией (функцией ИЛИ, логиче- ской суммой) и обозначается в виде А \/С или Д-j-C. Таблица 7.1.1 А ft h f3 b 0 0 1 0 1 1 0 1 1 0 Функция /8 называется конъюнкцией (функцией И, логическим произведением) и обозначается в виде ДДС или Д&С, или АС. Функция /9 называется стрелкой Пирса. Она обратна (инверс- на) функции f7 и поэтому может быть записана в виде Д-j-C. Эле- мент, реализующий эту функцию, обычно называется элементом ИЛИ—НЕ (в зарубежной литературе принято название NOR). Эту же функцию можно рассматривать как логическое произведение функций f5 и f6 и, следовательно, записать в виде АС. Функция Ло называется штрихом Шеффера. Из таблицы видно, что /1о=А+С=ДО. Элемент, реализующий /ю, называется И—НЕ (за рубежом — NAND). Функция /п называется функцией эквивалентности или равно- значности, так как она равна 1 при А=С и равна 0 при А=^=С. Эта функция иногда обозначается в виде А^С. Функции эквива- лентности обратна функции fi2, которая называется функцией не- эквивалентности (неравнозначности, суммой по модулю два, исклю- чающим ИЛИ). Эта функция иногда изображается в виде А ©С. Каждая из функций fi3, /и называется импликацией. Иногда используются обозначения А—>С, С—>Д. Из табл. 7.1.2 видно, что любая из функций /3, ..., fie может быть выражена через переменные Д, С и функции И, ИЛИ, НЕ. Функции fi и (2 тоже можно выразить с помощью трех указанных функций: const 0=ДА, const 1=Д+Л. Набор функций, через кото- рые можно выразить любую другую функцию, называется функцио- нально полным набором. Функции И, ИЛИ, НЕ не являются един- ственным функционально полным набором. С помощью элементов, реализующих все функции функционально полного набора, можно, следовательно, реализовать любые другие функции. Функции И, ИЛИ можно распространить на случай нескольких переменных: функция И равна 1 в том и только в том случае, когда каждая из переменных равна 1; функция ИЛИ равна 1 в том и только в том случае, когда хотя бы одна из переменных равна 1. На примере функции /9=Д+С=АС из табл. 7.1.2 и на примере 313
Переменные fl const 0 f а const 1 h A h c fr A+C fa AC А с 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 функции fю мы видели, что одну и ту же функцию можно разными способами выразить через функции И, ИЛИ, НЕ и, следовательно, реализовать разными схемами. Цель преобразований логических формул обычно и состоит в том, чтобы найти такую запись форму- лы, которой соответствует схема, оптимальная с той или иной точки зрения. Ниже приведены некоторые наиболее употребимые равенства, играющие важную роль при преобразовании логических формул в другие равные формулы: АС=СА, А+С=С+Л (закон коммутативности), (АС)В=А(СВ), (А+С)+В=А + (С+В) (закон ассоциативности), А(А+В)=А, А+АВ=А (закон поглощения) А (С+В) =АС+АВ, А+\(СВ) =<(А+С) (А + В) (закон дистрибутивности), АА=0 (закон противоречия) А+А = 1 (закон исключенного третьего), А+А=А (закон идемпотентности), Л-4-1 = 1, А1=А, АА = А, А+АС=А+С, АС + СВ + АВ = АС+СВ + АВ. Л + С + В+ ... = АСВ..., АСВ ...=А + С + В + ... Некоторые из этих правил основаны на теореме Моргана, утверждающей, что всякая логическая функция преобразовывается в инверсную, если в формуле этой функции все операции И заме- нить на ИЛИ и наоборот и все переменные заменить их инверсиями. 314
Таблица 7.1.2 л АС _Ьо__ А+С fll 1 АС+АС 1 АС+АС fl3_ А+С f li С+А fu AC h. AC 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 1 0 0 7.2. ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ФИКСИРОВАННОЙ ЗАПЯТОЙ В современных ЦВМ используются весьма разнообразные спосо- бы представления чисел. Мы, однако, ограничимся кратким рассмот- рением самой распространенной двоичной системы счисления. Цифра в каждом из разрядов двоичного числа может прини- мать только два значения — 0 и 1. В реальных ЦВМ разрядность чисел всегда конечна. Обозначив число разрядов через и, можем записать двоичное число А в виде 01(12 • • . Оп. Здесь Oi — цифры в разрядах, i — номер разряда. Будем считать, что старший разряд написан слева, т. е. имеет номер 1, младший разряд — справа. Запятая, отделяющая целую часть чисел с фиксированной запя- той от дробной части, может стоять, вообще говоря, в любом, но постоянном для данной ЦВМ месте. Для определенности будем счи- тать, что запятая, как это чаще всего бывает в ЦВМ, стоит слева от старшего разряда: j4=,6Zi6Z2 • • • «п- Ценд единицы каждого разряда (вес разряда) в двоичной си- стеме в два раза больше цены единицы соседнего младшего разря- да. В нашем случае вес первого разряда равен 2-1, вес второго раз- ряда равен 2“2 и т. д. Таким образом, п Л=2«/2-г. 1=1 До сих пор мы говорили фактически о положительных числах А. Очевидно, что величины этих чисел лежат в диапазоне 2~п. Для представления положительных и отрицательных чисел с фиксированной запятой в современных ЦВМ используются в основ- ном три способа — в прямых, дополнительных и обратных кодах. В табл. 7.2.1 показано представление всех n-разрядных двоичных положительных и отрицательных чисел А всеми тремя способами. 315
Таблица 7.2.1 4 Код прямой дополнительный обратный 1 —2-« 0,11 . . . 1111 0,11 . . .till 0,11 . . . 1111 1 — 2-2-" 0,11 . . .1110 0,11 . . . 1110 0,11 . . . 1110 1 —3-2-" 0,11 . . . 1101 0,11 . . . 1101 0,11 . . . 1101 1 — 4-2-" 0,11 . . .1100 0,11 . . . 1100 0,11 . . . 1100 1 _ 5-2~" 0,11 . . . 1011 0,11 . . . 1011 0,11 . . . 1011 * 4*. 2*~" 0,00 . . .0100 0,00 . . . 0100 0,00. . . 0100 3-2~" 0,00 . . .ООП 0,00. . . ООП 0,00 . . . ООП 2-2~" 0,00 . . . 0010 0,00. . . 0010 0,00 . . . 0010 2-« 0,00 . , .0001 0,00. . . 0001 0,00 . . . 0001 +о 0,00 . . . 0000 0,00. . . 0000 0,00. . . 0000 п разрядов п разрядов п разрядов —0 1,00 . . . 0000 1,11 . . . 1111 —2~" 1,00 . . . 0001 1,11 . . . 1111 1,11 . . . 1110 —2.2-" 1,00 . . . 0010 1,11 . . . 1110 1,11 . . . 1101 —3-2~" 1,01 . . .ООП 1,11 . . . 1101 1,11. . . 1100 —4-2-" 1,00 . . . 0100 1,11 . . . 1100 1,11 . . . 1011 _(1 — 4.2-") 1,11. . .1100 1,00. . . 0100 1,00 . . . ООП —(1 — 3.2-") 1,11. . . 1101 1,00. . . ООП 1,00 . . . 0010 —(1 — 2-2-") —(1 _ 2-") 1,11. . . 1110 1,00. . . 0010 1,00. . . 0001 1,11. . . 1111 1,00 . . 1,00. . . 0001 .0000 1,00. . . 0000 —1 Из таблицы видно, что в изображение числа А добавлен слева от запятой еще один разряд, который фактически является разря- дом, изображающим знак числа: 0 в этом разряде означает знак «+», 1 означает знак «—». В качестве примера приведем представление чисел А = +3/4, А=—3/4 всеми тремя способами (п=5) 3 + — ->0,11000 (пр) 0,11000 (доп) 0,11000 (обр) 3 ---т--* 1,11000 1,01000 1,00111 4 Из таблицы и примеров видно, что при использовании первого способа (прямой код) представление числа содержит знак и абсо- лютную величину |А|, при использовании обратного кода отрица- тельного числа представление содержит знак и поразрядные инвер- сии цифр числа |А |, при использовании дополнительного кода отри- цательного числа представление содержит знак и величину 1— |А|, т. е. дополнение числа |А| до единицы. Для положительных чисел все три способа представления совпадают. Кроме обычного обратного и дополнительного кода, показанных в табл. 7.2.1, внутри арифметического устройства иногда использу- 316
ются модифицированный дополнительный и модифицированный обратный коды, отличающиеся только «раздвоением» знакового раз- 3 ряда. Число----4-ИЗ предыдущего примера в этом случае записы- вается так: 3 — 11,01000 (доп) 11,00111 (обр) Достоинство модифицированного кода состоит в упрощении (не- значительном) процедуры обнаружения выхода результата операции» из допустимого диапазона, т. е. из диапазона в случае использования дополнительных кодов и диапазона — (1—2-”)s^4^1— 2~п в случае использования обратных кодов. Для представления чисел во всех частях ЦВМ — в памяти, на входе и выходе арифметического устройства и т. д. — используется обычно либо прямой, либо дополнительный код; для представления чисел внутри арифметического устройства используются, вообще- говоря, все три кода: прямой, дополнительный и обратный. 7.3. ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ Недостаток способа представления чисел с фиксированной запя- той состоит в том, что при неточной работе программиста абсолют- ная величина многих обрабатываемых чисел оказывается гораздо- меньше единицы, т. е. в этих числах некоторое, иногда довольно большое количество старших разрядов равно нулю. Это приводит к уменьшению числа значащих разрядов и, следовательно, к потере точности вычислений. Другой недостаток фиксированной запятой состоит в том, что результаты тех или иных операций могут оказаться по абсолютной величине больше единицы >(это также происходит из-за неточностей в программе). В этом случае обычно вычисления прекращаются и программист корректирует свою программу. Таким образом, оба ука- занных недостатка связаны с проблемой масштабирования. Представление чисел в форме с плавающей запятой обеспечи- вает автоматическое масштабирование чисел, благодаря чему ко- личество значащих разрядов остается всегда постоянным. Наиболее распространен способ представления числа А в виде А = 2*а, где а — мантисса числа А, а— порядок числа А. В машине число А фактически представляется некоторым коли- чеством двоичных знаков. Обычно левый двоичный разряд является разрядом знака мантиссы или, что то же самое, знаком числа А. Чаще всего 1 изображает знак «—», а 0 — знак «+». Далее следуют разряды ।(обозначим их количество через т+1), изображающие по- рядок а, и в конце размещаются п двоичных разрядов, представ- ляющих мантиссу а (иногда разряды порядка размещаются после разрядов мантиссы). 317
Порядок а является целым числом, лежащим в диапазоне Pmln^Ot^Pmax, где ртах, Pmin — максимальное и минимальное допустимые значе- ния порядка. Наиболее распространены два способа изображения порядка а при помощи m-J-l двоичного разряда (табл. 7.3.1). Мы будем придерживаться первого способа, при котором pmax=2m—1, Pmln = —2™. Таблица 7.3.1 а Первый способ Второй способ а Первый способ Второй способ 2т-1 111.. .111 011...111 —0 — 100...000 2^—2 111.. .110 011...110 —1 011...111 100...001 2^-3 111.. .101 011...101 —2 011...110 100...010 2т-4 111.. .100 011...100 -3 ОН... 101 - 100...011 ^ . . . .... 3 100...011 000...011 —(2т-3) 000...011 111...101 2 100...010 000...010 —(2т—2) 000...010 111...по 1 100...001 000...001 -(2^-1) 090...001 111...111 0 100...000 т разрядов 000...000 т разрядов*. 2т 000...000 Мантисса обычно представляется в прямом коде. Поэтому, го- воря о мантиссе а, будем иметь в виду ее абсолютную величину (знак мантиссы, как уже сказано, является знаком всего числа А и помещается отдельно, в начале числа). Представление мантиссы фактически совпадает с описанным в § 7.2 представлением чисел с фиксированной запятой. Единственное, но весьма существенное отличие состоит в том, что старший разряд мантиссы всегда (за исключением одного особого случая, о котором речь будет ниже) равен единице. Иными словами, величина мантиссы не выходит из диапазона 1/2^а^1—2“”, а само число |Д| лежит в диапазоне 2Fmin-l/2C| Л|<2₽тах(1 — 2~п). Такое число называется нормализованным. Исключением является число А = 0, которое обычно представ- ляется в виде Л= + 2Рт1П-0. СЬевидно, что при использовании пер- вого способа представления порядков (см. табл. 7.3.1) такое число фактически представляется 1 + (ш+1)-|-/г нулями. 318
7.4. ТОЧНОСТЬ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ Погрешности представления чисел не следует смешивать с по- грешностями операций или. как их еше называют, аппаратными погрешностями. Аппаратные погрешности вызываются тем, что в ря- де случаев арифметическое устройство вычисляет не точный, а при- ближенный результат операции (например, умножения или деления) над двумя числами А и С, поступившими в устройство. Абсолютной погрешностью представления числа назовем раз- ность |А*—А| между точным значением А* некоторого числа и тем значением А, которое может быть введено в конкретную ЦВМ или конкретное арифметическое устройство. Будем считать, что число А*, будучи представлено в двоичной системе счисления, может со- держать любое количество значащих двоичных разрядов. Разряд- ность числа А определяется разрядностью машины. Обычно различают несколько разновидностей абсолютных и относительных погрешностей представления (табл. 7.4.1). Среди них несколько типов максимальных и средних погрешностей. Таблица 7.4.1 Д Макс Макс макс Ср Ср ср Абс ' Я* — А | М‘-л|чакс — М‘-А1ср 1Л*~Л 'ср — Отн | Я* - Я 1 м-1 1 "4* ~ 1макс |А»| И* - А ' Л* ~ Л'ср 1 мин 1 я* 1 'ср Наиболее универсальным показателем точностных свойств пред- ставления чаще всего считается погрешность ^отн ср ср-- I л* — Л |ср I А* |с? (7.4.1) при расчете которой производится, во-первых, усреднение по все- возможным разностям |А*—А|, во-вторых, усреднение по самим ве- личинам |А*|. Для /г-разрядного двоичного числа с фиксированной запятой следует считать, что Дотн ср ср = 2”п-1. (7.4.2) Эта формула выводится следующим образом. Так как мы полагаем, что число |Л| содержит справа от запятой п разрядов, а число |А*|—сколько угодно разрядов (предполагается, что |А*|<1, |А|<1), то будем считать, что число А получается из А* путем •отбрасывания разрядов, более младших чем /г-й, и одновременного округления. Иными словами, чтобы получить А из А*, нужно отбро- сить в А* разряды с номерами /г+1, /г+2, ... и после этого приба- вить к оставшемуся числу величину 2-п, если в старшем из отбро- шенных разрядов стояла единица. При таком способе уменьшаются как средние, так и максимальные погрешности. Очевидно, что при этом 0^|А*—Al^-"-1. 319
Полагая, что все разряды числа А* являются независимыми случай- ными величинами, принимающими с одинаковой вероятностью зна- чения 0 или 1, приходим к тому, что средняя величина этой разно- сти, стоящая в числителе дроби (7.4.1), равна |Л*_Л|ср = 2-"-2. (7.4.3) Из допущения о независимости цифр в разрядах числа А* следует, что число |А* | в диапазоне 0^|А* | <1 принимает все значения с одинаковой вероятностью (точнее, имеет в этом диапазоне равномерный закон распределения). Поэтому стоя- щую в знаменателе дроби (7.4.1) среднюю величину |А*|СР числа |А* | следует считать равной 1/2. Подставляя это значение и (7.4.3) в (7.4.1), получаем (7.4.2). Для чисел с плавающей запятой анализ погрешностей представ- ления приводит к не столь очевидным результатам. Рассмотрим более общий случай представления чисел с плаваю- щей запятой, чем мы это делали в § 7.3. Пусть число |А| пред- ставляется в следующей форме: |А|=Рад, (7.4.4) где а — порядок; а—мантисса; Р=2к (k целое положительное). Будем считать, что а — целое число и представляется, как обыч-: но, (m-j-l)-разрядным двоичным числом, т. е. —2m^a^2m—1. Будем также считать, что мантисса а представляется п-разряд- ным двоичным числом с запятой, фиксированной слева от старшего разряда. При этом величина мантиссы (не считая случая а=0) должна лежать в диапазоне Х/Р^а^Л— 2~п. (7.4.5) В частном случае, когда Р = 2, получается уже знакомая нам двоичная система. В общем случае число |А|, записанное в форме (7.4.4), фактически представлено в Р-ичной системе счисления, при- чем каждая Р-ичная цифра мантиссы представляется ^-разрядным двоичным числом (поэтому желательно, чтобы п было кратно k). Определим значения всех погрешностей, указанных в табл. 7.4.1. Очевидно, что e/>amin_L л|<рат“(1 — 2-п) = р2'"-1 (1 —г-”), 0<Дабс= |Л*-Л |<Р“2-«->, Аабс макс = | А* —«. А |макс = Р 2~п~* (имеется в виду погрешность, максимальная при данном а), Дабсср=М*-А|сР= Р»2-«-2 320
(среднее значение погрешности при данном а), | Л* - А I 0<Дотн- |л»! < РЧ.п I ' А Imax Ра2‘п~' _2~п~' ^отн макс | yl* | рла а (погрешность, максимальная при данном а) М*-Л|тах , ^отн макс макс — 14*1. = л»л ’ I Imin * 0min | Л* — Л Icp р®2-«-2 =2-п-2 Аотн ср = I ^4* | = ~^Га а" ’ Закон распределения мантиссы а в диапазоне (7.4.5) не является равномерным и среднее значение мантиссы аСр не лежит в середине этого диапазона. По данным работ [1, 2], I Л* — Л |ср __р»2-«-2 2‘n-2 1) 2-п Дотнсрср= 1Л*|ср 41пР Именно эта формула делает целесообразным использование не- которых форм представления, невыгодных на первый взгляд. Срав- ним, например, два способа представления чисел (табл. 7.4.2). В двух сравниваемых случаях ЦВМ имеет одну и ту же разряд- ность, так как сумма т-\-п в обоих случаях одна и та же. Близки Таблица 7.4.2 р т 4-1 п ОГИ 1 А — Р2 —1 ^макс — * ^отн макс макс — = Р-2~п-1 Аотн ср ср (Р—1) 2~п ~ 4 In Р 2 8 38 2127 0,5-2-37 0,18-2-*7 16 6 40 2124 2-87 0,17-2-8 7 между собой и диапазоны представимых чисел (так как величины 2127 и 2124 отличаются друг от друга не слишком сильно). Макси- мальная относительная погрешность в первой из этих двух систем, как это видно из таблицы, в два раза меньше, чем во второй систе- ме. (Понять это нетрудно: во второй системе мантисса содержит на два двоичных разряда больше, чем в первой, но из 40 разрядов мантиссы при 1/16^а<2/16 три старших разряда оказываются ну- лями и тогда остается фактически 40—3=37 значащих разрядов, что на один разряд меньше, чем в первой системе). Поэтому, на первый взгляд, вторая система хуже. Но по усредненной относительной 321
погрешности вторая система не уступает первой. Указанное обстоя- тельство было, по-видимому, одним из решающих при выборе спосо- ба представления чисел в сериях машин ЕС ЭВМ, ИБМ 360, ИБМ 370, в которых, как известно, Р=16*\ 7.5. ЭЛЕМЕНТЫ И УЗЛЫ ЦВМ Не только в этой главе, но и во всей книге основное внимание уделяется логическим и математическим идеям и принципам, лежа- щим в основе вычислительных устройств, машин и систем. Техниче- скими деталями мы занимаемся лишь в мере, необходимой для по- нимания путей реализации указанных идей. Поэтому основные типы элементов и узлов рассмотрим кратко, выделяя их назначение и ло- гические возможности. в) а) Рис. 7.5.1 В настоящее время наибольшее распространение получили по- тенциальные системы элементов. Кроме того, применяются импульс- ные, импульсно-потенциальные и другие системы. В потенциальной системе элементов информация представляется электрическими потенциалами, которые могут принимать только два фиксированных значения (говоря так, мы пренебрегаем процессом перехода с одного уровня на другой; во время этого процесса по- тенциал сравнительно быстро изменяется от одного фиксированного значения до другого). Будем считать, что более высокий из двух уровней изображает (представляет) цифру 1, более низкий — циф- ру 0 (существуют ЦВМ, в которых принята обратная договорен- ность). Основная особенность потенциальных систем состоит в том, что электрический сигнал может принимать любое из этих двух значений в течение интервала времени произвольной длительности (рис. 7.5.1,а). В импульсных системах элементов электрические сигналы имеют форму стандартных импульсов и поэтому в системе с положитель- ными (отрицательными) импульсами потенциал может быть высоким (низким) только в течение определенного небольшого интервала вре- мени, определяемого стандартной формой импульса (рис. 7.5.1,6). В импульсно-потенциальной системе выходные сигналы одних элементов имеют импульсный характер, а выходные сигналы элемен- тов других типов — потенциальный характер. В данном параграфе описываются только потенциальные эле- менты и построенные из них узлы. Следует заметить, что во всех *) Одним из основных достоинств 16-теричной системы являет- ся также относительная простота реализации процедур сдвига чисел (например, при нормализации, денормализации и др.), так как сдви- ги при этом производятся только на количество разрядов (двоич- ных), кратное четырем. 322
случаях рассмотрения конкретных узлов и устройств в данной книге предполагалось использование потенциальных элементов (это не означает, что принципы построения того или иного устройства не могут быть реализованы на других элементах). Одним из основных параметров потенциальной системы элемен- тов является набор логических функций, реализуемых этими эле- ментами. Наиболее распространенными являются функции И, ИЛИ, И—ИЛИ, И—НЕ, ИЛИ—НЕ, И—ИЛИ—НЕ, ИЛИ—И—НЕ. На рис. 7.5.2 показаны условные изображения элементов, реализующих указанные функции. Х?+Х2+Х3+Х_ 1 ^1+Х2)(х}+Х^/ 7 X; — х2 — х3 4“ *2 = *3 — Х5—L s XpfrXj+XfrXs **— x3~' Xz>—L Рис. 7.5.2 Среди других параметров, которые важны при синтезе различ- ных функциональных схем, следует отметить число входов схемы И, число входов схемы ИЛИ, коэффициент разветвления по выходу (нагрузочную способность), объем оборудования каждого логическо- го элемента, динамические параметры элементов. В определенных случаях большое значение приобретают конструктивные параметры, устойчивость к механическим, климатическим воздействиям, потреб- ляемая мощность и др. Микросхема, размещенная в одном корпусе, обычно содержит некоторое количество элементов, реализующих указанные выше эле- ментарные логические функции. Характер соединений между эле- ментами внутри корпуса определяет функции, выполняемые всей микросхемой. В одном корпусе может, например, размещаться 4-раз- рядный ускоренный сумматор (см. § 6.2) или устройство, перемно- жающее 4-разрядные сомножители (п. 6.3.3) и др. Основными типами функциональных узлов, построенных на эле- ментах, реализующих указанные выше элементарные логические функции, можно считать триггеры, сдвигающие регистры, коммута- торы, сумматоры. Триггер — это логическая схема с положительной обратной связью, имеющая два устойчивых состояния, которые принято назы- вать единичным и нулевым и обозначать 1 и 0. Таким образом, триггер является запоминающим устройством с объемом памяти в один бит. Существует множество построений триггерной схемы (см., например, [3]). Один из простейших триггеров и его условное обозначение показаны на рис. 7.5.3. Если D=l, то при поступлении на вход С положительного импульса (строба приема) триггер уста- навливается в единичное состояние (Q=l, Q = 0); если £)=0, то этот же импульс устанавливает триггер в нулевое состояние (Q = 0, 5=1). Принятое состояние сохраняется до тех пор, пока С=0, т. е. поведение информационного сигнала D при С=0 на состояние триг- гера не влияет 323
Группа триггеров с общим стробом приема называется триггер- ным регистром. Такой узел способен хранить двоичное число, раз- рядность которого равна количеству триггеров в регистре. Триггерный регистр, к которому добавлена некоторая аппарату- ра, позволяющая сдвигать вдоль регистра хранящуюся в нем информацию, будем называть сдвигающим регистром. Одно из воз- можных построений сдвигающего регистра показано на рис. 7.5.4. Узел состоит из двух триггерных регистров (Рг1 и Рг2), один из которых (например, Рг1) можно считать основным, а другой — вспо- могательным. Из рисунка видно, что если передать информацию из Рг1 в Рг2 при помощи строба С2, а затем передать ее обратно в Рг1 при помощи С1, то инфор- мация в Рг1 сдвинется на один разряд. В зависимости от наличия или отсутствия связи между выхо- дом нижнего триггера регистра Рис. 7.5.4 Рис. 7.5.3 Рг2 и входом верхнего триггера Рг1 (показана штриховой линией на рис. 7.5.4) сдвигающий регистр называется кольцевым или разом- кнутым. В кольцевой схеме информация сдвигается по кольцу. Из рис. 7.5.4 видно, что Рг2 служит для кратковременного хра- нения информации. Поэтому этот регистр может быть заменен ли- ниями задержки или еще какими-либо элементами, задерживающи- ми сигналы. В некоторых случаях для этой цели могут быть использованы паразитные задержки основного регистра. Можно утверждать, что принцип передачи информации на короткое время в некоторую схему используется в той или иной форме в любом сдвигающем регистре. Коммутатор— это узел, служащий для коммутации информаци- онных сигналов, принимаемых одним приемником с нескольких воз- можных направлений. Направление коммутации определяется управ- ляющими сигналами Уг-. При передаче информации параллельным кодом, т. е. при необходимости коммутировать сразу п разрядов, 324
коммутатор строится из п одинаковых одноразрядных схем.^ На рис. 7.5.5 показан один разряд такого коммутатора, построенный на элементе И—ИЛИ—НЕ. Принцип работы коммутатора прост. Если один из сигналов У; равен единице, а остальные — нулю, то инфор- мационный сигнал, соответствующий высокому управляющему сиг- налу, «проходит» сквозь коммутатор. Из рисунка видно, что в дан- ном случае информационные входные сигналы инверсны выходному сигналу: если входные сигналы поданы в прямом (обратном) коде, то выходной сигнал получается обратный (прямой). Одна из немногих тонкостей использования коммутаторов свя- зана как раз с элементами И—ИЛИ—НЕ. В некоторых устройствах возможен режим, при котором У1=Уз= ... ... =yfe=0. Если требуется, чтобы в этом режиме число на выходах коммутатора рав- нялось нулю, и если выходные сигналы коммутатора представлены в прямом коде (входные — в обратном), то, как видно из рисунка, в этом режиме на выходах по- явятся высокие уровни, которые будут рас- цениваться как единицы. В таком коммута- торе нужно в каждом разряде на одну из входных схем И (одновходовую) завести дополнительный управляющий сигнал =У1У2 ... Ул, который и обеспечит У= нули на выходах в указанном режиме. Различные типы параллельного сумматора — устройства для сложения двух n-разрядных двоичных чисел — подробно рассматри- ваются в третьей главе. Здесь мы только заметим, что сумматоры, делятся на комбинационные и накапливающие. Комбинационный сумматор не содержит запоминающих элементов и поэтому сумма* слагаемых формируется в нем и сохраняется на его выходах только в течение того времени, пока слагаемые находятся на входах сум- матора. Внутри накапливающего сумматора имеется триггерный ре- гистр, в котором перед началом сложения содержится одно из двух слагаемых, а после окончания сложения — полученная сумма. Вто- рое слагаемое подается на отдельные входы сумматора. Производя- сложение числа, находящегося в регистре сумматора, с несколькими- числами, поочередно поступающими на указанные входы накапли- вающего сумматора, можно «накопить» в нем сумму всех этих чисел. Подробнее с различными функциональными узлами на потен- циальных элементах можно познакомиться, например, по книге [3].. 7.6. ОСНОВНЫЕ МЕТОДЫ НЕУСКОРЕННОГО СЛОЖЕНИЯ-ВЫЧИТАНИЯ Существует множество деталей процесса сложения-вычитания двух двоичных чисел с фиксированной запятой. Поскольку некото- рую комбинацию этих деталей можно назвать способом или мето- дом сложения-вычитания, то количество методов становится неопре- деленным. Тем не менее представляется целесообразной классифика- ция методов сложения-вычитания, приведенная на рис. 7.6.1. На рисунке цифрами выделены пять методов, которые предлагается счи- 325.
тать основными. Сама классификация выполнена по трем признакам. Во-первых, разделение произведено по форме представления операн- дов и результата операции — в прямом или в дополнительном коде,. Вторым классификационным признаком выбран вопрос о том, какой или какие операнды могут быть преобразованы перед поступлением в сумматор (имеется в виду преобразование формы представления числа). Будем считать, что устройство должно уметь выполнять три операции: Л+С=В, А—С=В, С—А —В. По второму класси- фикационному признаку методы делятся на две группы. В одних случаях (методы 4, 5) преобразовываться может только один опе- ранд (назовем его операндом С), в других случаях (методы 2, 3) Рис. 7.6.1 преобразовываться могут оба операнда. Третьим классификацион- ным признаком является тип кода, применяемого в сумматоре при вычитании, — дополнительный или обратный. Рассматриваемые методы могут использоваться в трех модифи- кациях. Назовем модификацией «а» вариант устройства, в котором в сумматоре имеются два знаковых разряда и используется модифи- цированный код (дополнительный или обратный), модификацией «б» — вариант с одним знаковым разрядом в сумматоре и модифи- кацией «в» — вариант, в котором сумматор вообще не содержит знакового разряда (при этом о знаке числа, получающегося в сум- маторе, судят по сигналу переноса из старшего разряда сум- матора). Г. Рассмотрим метод 1. Он используется обычно в ЦВМ, в ко- торых числа на входах и выходе арифметического устройства пред- ставлены в дополнительном коде. В сумматоре при этом методе используется дополнительный код. 326
Операции 4+С, А—С, С—А выполняются по методу 1 в два этапа: вначале в нужных случаях преобразуется один из операндов, затем выполняется сложение на cvMMSTooe. Преобразование операнда А производится при операции С—А, преобразование С—при операции А—С. Само преобразование со- стоит во взятии дополнения. Сложение при использовании этого и всех других методов вы- полняется на сумматоре, содержащем, как уже отмечалось, п+2 (модификация «а»), л-4-1 (модификация «б») или п (модификация <в») разрядов. Полученная в сумматоре после сложения по методу 1 сумма представляет собой готовый результат операции, что является характерным признаком метода 1. Правила обнаружения переполнения, т. е. правила выработки сигнала со в трех модификациях метода, различны. Приведем примеры выполнения сложения-вычитания по мето- ду 1а. В этом случае переполнение обнаруживается по несовпаде- нию цифр si, s2 на выходах двух знаковых разрядов сумматора, т. е. СО = SjS2 + 5^2. (7.6.1) Во всех примерах, которые будут рассмотрены в этом параграфе, сперва будут написаны числа А и С в виде правильных десятичных дробей, рядом (в скобках) будут показаны соответствующие двоич- ные числа Л и С в том виде, в котором они поступают в арифме- тическое устройство. Далее будут написаны слагаемые, поступаю- щие на входы сумматора, и полученная сумма. Сбоку в скобках будет приводиться в виде неравенства соотношение между операн- дами, выполнение которого в данном примере определяет знак ре- зультата операции и наличие или отсутствие переполнения. В примерах, относящихся к методу 1а, дополнение берется пу- тем инвертирования всего числа и прибавления единицы в младший разряд (такой способ в ряде случаев проще для реализации). Край* ний левый (знаковый) разряд числа, поступающего в сумматор, пе- ред сложением раздваивается (для получения модифицированного дополнительного кода). Примеры. Метод 1а< Операция А — С, п = + I) да * -5- (О.ОГОТ) 00,0101 16 + С а + — (0,0011) 11,1100 16 -I fce X ( д>С) 00,0010 8 й)д„ + Х (0,00П) оо,ООП 16 4- С=+-5- (0,0101) 11,1010 16 I в = - -I— (д<С) 11,1110 8 0) д = «X (ОДП) со,опт . _ s (1,1010) 00,01® с " 8 I в = (А-С CI) 00,1101 4) А s ( 0,1010) 00,1010 ^6 + с а ( 1,1001) 00,0110 16 в и«1 С А-С>1) и,0001 327
5) А = - Е- (1,0101) 16 + 11,0101 6) а = - Ji ( 1,0101) 16 II,010Х 0 = +_2_ (0,0101) к 11,1010 I г - + 3 ( 0,0110) П.100Х L К - - I ( А - С » -I) 11,0000 и =1 (А-С<-1) I0JIII 7) А = - 15. (х.ОСЮТ) 16 II,0001 8) А * -2- ( 1,0111) li.oiii. + с Ц.ош) + 00,1000 г _ _ _9 ( 1,0111) 00,1000 16 I I в =—СГАТ > ICI) 8 II ,1010 Ь = 0 (|А 1 4 ICI) 00,0000 Пользуясь приведенными примерами, читатель сумеет разоб- рать выполнение операций А+С, А—С, С—А по методу 1а при лю- бом п. Методы 16, 1в мы рассматривать не будем. Модификации <б» и «в» будут описаны применительно к другим методам. Отличия между модификациями «а», «б», «в» не велики. В основном они касаются способа обнаружения переполнения. 2°. Перейдем к методу 2. Как видно из рис. 7.6.1, теперь мы будем иметь дело с операндами и результатами операций, представ- ленными в прямых кодах; преобразовываться могут оба операнда, в сумматоре используется дополнительный код. Операции выполня- ются в три этапа: вначале в нужных случаях преобразуются один или оба операнда из прямого кода в дополнительный, затем выпол- няется сложение на сумматоре и, наконец, в нужном случае (при отрицательном результате операции) результат преобразуется из до- полнительного кода в прямой. Операнд А преобразуется при операциях А+С, А—С, если чис- ло А отрицательно, и при операции С—А, если А положительно. Аналогично С преобразуется при операциях А+С, С—А, если С отрицательно, и при операции А—С, если С положительно. Иными словами, А преобразуется, если в сложении на сумматоре участвует число —|А |, а С преобразуется, если в сложении участвует число — |С|; отрицательные числа — |А|, — |С| поступают в сумматор в дополнительном коде. Рассмотрим примеры сложения-вычитания по,методу 26. В этом случае переполнение можно обнаруживать при помощи схемы, вы- рабатывающей логическую функцию со — AnCns + AnCns + AnCnz, (7.6.2) где s — сигнал на выходе знакового разряда сумматора, Ап (Сп) — сигнал, равный единице в том случае, когда операнд А (С) преобра- зовывается в дополнительный код, г — сигнал, равный единице в том случае, когда после сложения в сумматоре все п значащих разрядов на выходах сумматора оказываются равными нулю. Примеры. 'Метод 26. Операция С—А, п=3. Взятие дополнения после суммирования указывается в отдельной строке. 328
1) А= + -5-(o,ioi) l.oii 8 + 2) А= + -2- ( ОДП) 8 + 1,001 • С * * -2- (ОДП) ОДП А —. С я ♦ — ( 0,101) 8 0,101 i,iio ч Е “ ♦ Ц-СА<СЭ о.ско 4 £ а - (А> С ) 1,010 8) А = ♦ X ( 0,001) 1ДП 8 4) А я+4- ( 0,П0) 4 + 1,010 С*« йч X- (1,010) 1Д10 4 , 11,101 С В-Х ( 1,010 ) 4 1,110 J3 в - -f- (С-А>-1) 1,011 В а> = I ( с - А -I) 1,000 S) Др- 4j- ( 1,100) ОД00 6)А = —К 1,юо) 2 + 0,100. Се* -2- ( 0,011) 0,011 8 С =+ -|-( О.юх ) 0,101 S • ♦ (С-А<1 ) ОДП U = I ( С -А >, I) 1,001 А » -X (1ДИ) 0,101 О 'f 8) А= ( 1,101) + 0,101 £ ₽ —— (ГД01) 1,011 8 с _ _3 (1Д10 .) 4 1,010 1ДЙ* г«о(|А1>1с|) о.ооо В =--|.(1А|<|С| ) 1,001. Из формулы (7.6.2) и из примеров видно, что при использова- нии метода 26 несколько усложняется обнаружение переполнения. По сравнению с формулой (7.6.1) усложнение двух первых слагае- мых в (7.6.2) объясняется переходом от модификации «а» к модифи- кации «б»; введение третьего слагаемого (ЛПСП2) вызвано возмож- ностью получения результата операции, равного —1. Такой резуль- тат является допустимым для дополнительного кода (который используется в сумматоре), но недопустим для прямого кода (в ко- тором представляется результат операции). Можно отметить, что первое и третье слагаемое формулы (7.6.2) «сработали» соответст- венно в примерах 6 и 4. Второе слагаемое «срабатывает» при ре- зультате операции, меньшем чем —1. Методы 2а, 2в мы рассматривать не будем. 3°. Третий метод отличается от второго тем, что в сумматоре используется обратный код и имеется цепь кольцевого переноса, по которой перенос из старшего разряда сумматора поступает в млад- ший разряд. Преобразуются операнды в тех же случаях, что и при методе 2, однако не из прямого кода в дополнительный, а из пря- мого — в обратный. Если результат операции отрицателен, то он по- 22—1013 329
лучается на выходе сумматора не в дополнительном коде, как при методе 2, а в обратном, и заключительное преобразование переводит это отрицательное число из обратного кода в прямой. Рассмотрим несколько примеров для метода 36. В этом случае переполнение может быть обнаружено по правилу (О |“/4пСп^. Обозначения здесь те же, что и в (7.6.2). Примеры. Метод 36. Операция А—С, п=4. (Операнды в при- мерах 1—3,5, 8 те же, что в примерах для метода 1а.) I) А = + 2 (0.0I0I)’ 16 С = + -3-(0,0011) 16 о; 01 or + 1,1100 2) А = +—- (0,0011) 0,0011 16 + с = +JL (o,oioi) i,ioio 16 .кольцевой перенос—► в = + -L( А > с) 8 р- 0,0001 0,0010 1,1101 В =——( A s С ) 1,0010 8 3) А = + — ( 0,0111) 16 0,0111 + 4) а = ( 0,1001) 0,1001 16 + С =•_ _3_ (1,0110) 8 0,0110 с = - ~( 1,0111) 0,0111 16 Ь =+ (А-С<1) 16 0,1101 Ы = I ( А - С * I) 1,0000 5) А « - К- (I.I0H) 16 1,0100 + G) А — (1,1011) 1,0100 16 + С = + ^ ( 0,0101) 1,1010 с = + -£• (о,оюо) 1,юп 4 Ы жК А-С 4 -I) 0,1110 рдш * 1 в = _ 15 (д-с>-1) 1,0000 16 1,1111 7) а = - — U.I0OI) 16 1,0110 8) д = - §_ ( I(I00I) 1,0110 16 + с = _ 15 (1,пп) 16 0,ПП С = - — (1,1001) 0,1001 <= 16 2 Р 0,0101 1,1Ш 1—I —
В последнем примере был показан случай получения отрица- тельного нуля в результате операции. 4°. Особенностью метода (4) (как и метода 5) является то, что один из операндов (будем считать, что это операнд Л) поступает на входы сумматора без преобразования, независимо от типа опера- ции и знаков слагаемых. Второй операнд (С) при необходимости преобразуется. Методы 4, 5 могут оказаться, в частности, выгодны- ми в таких арифметических устройствах, где в целях повышения быстродействия каждый операнд преобразуется отдельным узлом; поэтому при использовании, например, метода 2 и 3 нужны два таких узла, в то время как для метода 4 или 5 требуется только один узел преобразования С. Сложение-вычитание по методу 4 выполняется в три этапа: вначале в нужных случаях производится преобразование операнда С из прямого кода в дополнительный, затем выполняется сложение на сумматоре и, наконец, в нужном случае производится преобразова- ние результата из дополнительного кода в прямой. Преобразование операнда С производится в тех случаях, когда нужно выполнить операцию Л-j-C над числами, имеющими разные знаки, или выполнить операцию А—С или С—А над числами с оди- наковыми знаками. Будем считать, что в этих случаях в арифмети- ческом устройстве вырабатывается управляющий сигнал «Выч». В остальных случаях, т. е. три операции Л + С над числами с оди- наковыми знаками или операции А—С, С—А над числами с разны- ми знаками, вырабатывается сигнал «Слож». Очевидно, что Слож.=Выч. Рассмотрим примеры сложения-вычитания по методу 4в. При этом переполнение может быть обнаружено схемой, реализующей формулу со = Слож-е, (7.6.3) где е — перенос из старшего разряда сумматора. Дополнительный код —|С| будем формировать путем инверти- рования числа |С| и прибавления единицы в л-й разряд; разряд знака числа, полученного при этом преобразовании, будем, как это принято для модификаций «в», отбрасывать. Преобразование суммы, полученной в сумматоре, будем производить при Выч-ё=1. Напом- ним, что знак числа, получающегося в сумматоре при модификации «в», определяется по сигналу е. Примеры. Метод 4в. Операция Л+С, л=3. I) а = + —(0,011) 8 с s + -5—(о.ою) 4 слои = I, е =о ,011 ,010 ,101 2) Д= + -2- (0,011) ,011 8 + с = + _2_ (о,ш) ’П1 8 _____ е = I, cj = I , QE 0 (А + С >1) В = + -§-( А + С < I) 8 22* 331
А® - — (1,001) 8 ,001 4) А = |(i,oii) ,би с = + (о.оп) 8 ,100 I с = : + —1.(0,001) 8 I Выч = I, е =о в = + —(IAI< 1CI)" 4 ,110 «ото е = I, -в = - I- 4' (|А 1 >, |С|) ,010, 5) А = + -J-(o,ooi) 8 ,001 б) А = + —( 0,101 ) 8 , 101 с=- -^-(i.on) 8 Выч =1, е = о ,100 I с = - L ((.ют) 8 + , 010 I ,110 е; = I, В =0 , 000 В =- -j- (IAI < 101) , ото (lAi >;ici) 7) А = - --- (. 1,101) 8 ,101 8) А = - (1,101) Q ,101 С = - — ( 1,001) 8 ,001 с О = - —- ( 1,100) 2 + ,100 Слож =1, е =о ,110 е =1 , ш = I ,001 В |(А + С >- I ) ( А + С 4 -I ) Одно из отличий метода 4 (5) от методов 2, 3 состоит в том, что число, получающееся после сложения в сумматоре, преобразует- ся не только при отрицательном результате всей операции, но иногда и при положительном (см. пример 3). Мы еще не описали формально правило определения знака ре- зультата операции при использовании метода 4в. Это правило для всех модификаций методов 4, 5 имеет более сложный характер, чем для методов 1—3. В частности, для метода 4в знак результата опе- рации представляет собой следующую логическую функцию: Зн В = Слож {[ (А+С) V (Л—С) ] (—А) + (С—А) (+ А)} + +Выч {[(А+С) V(Л—С)] [(+4)ё+ (-А)е] + + (С-А)[(+А)е+(-А)ё]}. Здесь использованы упрощенные условные обозначения. Формула утверждает, что знак результата операции отрицателен, если Слож = = 1 и при этом выполняется операция А+С или А—С, а число А отрицательно, и т. д. 332
5°. Пятый йГетод отличается от четвертого тем, что в сумматоре используется обратный код и имеется цепь кольцевого переноса. Операнд С преобразовывается в тех же случаях, что и при методе 4, но не из прямого в дополнительный, а из прямого в обратный код. Результат преобразуется в тех же случаях (для модификации «в» — при Выч-ё=1); это преобразование переводит результат из обрат- ного кода в прямой. Рассмотрим примеры сложения-вычитания по методу 5в. Пере- полнение обнаруживается по правилу (7.6.3). Примеры. Метод 5в. Операция А+С, п=3 (операнды те же, что ь примерах для метода 4в). I/ А = + —- ( 0,011 ) ,011 -2) Л = + X (0,011) ,011 8 8 * / с = + —- (0,010) 4 .,010 с = + X (0,ш) ,Ш 8 г. тгг слоя = 1, е = о ,101 е = I, ш =т ,010 В - + — ( А + С 4 ' О [) (А + С 7/1) з) A = - X( 1,001) 8 ,001 + 4) 1,011) + с « + X со.отх) 8 ,100 с = + X(o,oci) 8 т дю poor Выч «I > е *=о В»+Х flAKICI) ,101 ,010 е .= I, в s - i- 1 4 (IAIMCI) L^_r, ,010 5) А = + -X ( 0,001) 8 ,001 + 6) А=+ ( о,Ю1) 8 дог С = - (1,011) 8 ,100 ,101 С = - Х(1,Ю1) 8 »ою ,П1 Быч« I, е —о в = - X (1а| |с|) ',010 е =0, в = - о (|А| <1 CI) ,000 7) А = - X (1,101 8 С = - ir (1,001) 8 ) ,101 + ,001 8) А = - — (1,101) 8 С = --- (1,100) 2 дог + -,100 Слоя = I, g=0 ,110 е = I, td =1 ,001 В = -Х( А + С > 4 -I) (А+ с <-.-1 ) 333
бд. Рассмотрим кратко процедуру сложенйя-йычитЗнйя чисел А и С, представленных в форме с плавающей запятой, т. е. в форме А = ±2% С= ±27с, ' (7.6.4) Anin < а» Y < Алах (обычно /?щах = 2™ - 1, pmin = - 2т) 1 — ^а, с < 1 — 2~п (если не считать особых случаев а=0, с=0). Знаки ± в (7.6.4) означают, что число может иметь знак плюс или минус. Сложение-вычитание чисел А и С производится в три этапа. На первом этапе, называемом обычно «выравнивание порядков», выби- рается большее из чисел а и у, вычисляется разность |а—у |, после чего мантисса числа, имеющего меньший порядок, сдвигается вправо относительно второй мантиссы на |а—у| разрядов. На втором эта- пе производится сложение-вычитание сдвинутой и несдвинутой ман- тиссы. При этом могут использоваться, вообще говоря, различные методы сложения-вычитания, например уже знакомые нам методы 2—5 сложения чисел с фиксированной запятой (мы считаем, что мантиссы операндов и результата представляются в прямом коде). Абсолютная величина Ьвв полученной суммы (разности) мантисс является мантиссой ненормализованного результата операции 4- 2тах (а, 7)^ где тах у) — максимальный из порядков а, у. На третьем этапе («нормализация результата») производится сдвиг влево или вправо мантиссы Ьвв таким образом, чтобы полученная после сдвига окончательная мантисса b удовлетворяла неравенству 1/2<Ь<1—2“", и производится соответствующая коррекция порядка max (а, у), после которой получается окончательный порядок (3. Рассмотрим два примера операции А+С. |31 1 Примеру, ^ = 2б’з2", С = 22-“2', Первый этап. Выбираем max (а, у)=5 и вычисляем |а— —у|=5—2 = 3. После сдвига мантиссы с на три разряда вправо взаимное расположение мантисс оказывается следующим: а ,11111 + с.2“/«-7| ,0001 Второй этап. 6НН= 1,00001 Третий этап. Так как ненормализованный результат равен 2тах(«, т)6нн=2».1-1-, 334
то следует сдвинуть ЬНп на один разряд вправо, а к порядку ненор- мализованного результата прибавить единицу, после чего Ъ = = &нн-2-1 = 0,100001 (в двоичной фо^ме), р = тах (а, у) + 1=5 + + 1=6. Итак, А+С=В= 20b = 2e«-g^-. В этом примере оказа- лось, что ЬНн>1. Так как каждая из мантисс а, с меньше единицы, то очевидно, что &Нн всегда меньше, чем 2. Поэтому сдвиг вправо при нормализации результата может производиться только на один разряд. 1 Пример 2. А = 2’8 (1—2-’), С = —2-’.-у. Первый этап, max (а, у)=у =—7, |а—у| = 1. с , 1 а-2-1 ,0111111111 Второй этап. &нн=, 0000000001 (результат после вы- читания). Третий этап. Так как ненормализованный результат равен 1 2-7'1024’ то следует сдвинуть Ьпп на 9 разрядов влево, а от порядка ненор- мализованного результата отнять 9, после чего Ь = Ьнн-29=0,1 (в двоичной форме), Р = —7—9 =—16. Итак, Л4-С = В = 2?б = 2-,,-+. Из сказанного и из мые при нормализации, примеров следует, что действия, выполняе- можно описать следующим образом: b = bBB-2~р = тах (а, у)+1 при Ьнн^1, b = bUH-2Nt р = тах (a, y)—N при Ьнн<1, где W — количество нулей между запятой и старшей единицей в чис- ле Ьнн. Видно, что сдвиг Ьнн и коррекция порядка max (а, у) де- лаются так, чтобы величина результата не изменилась, т. е. 2₽6==2тах (ал)Ьнн. Если 6нн^1 и при ЭТОМ max (а, Y)=Pmax, то Р = Ртах+1 И, следовательно, результат операции по абсолютной величине превы- шает максимальное допустимое число 2Ртах(1—2~п). В этом случае в арифметическом устройстве вырабатывается сигнал переполнения разрядной сетки (со=1). Таким образом, правило обнаружения пе- реполнения при сложении- вычитании с плавающей запятой совсем другое, чем при фиксированной запятой.
Если Ьнн = О или если Ьйп<1, Р = тах (а, у)—N<pm\n, т. е. если результат операции меньше минимально допустимого нормали- зованного числа 2^mIn,-2-> то в качестве результата операции обычно используют число + 2Pmln-0. (На первый взгляд кажется, что при нулевой мантиссе мог бы стоять любой порядок. Однако, если бы число, равное нулю, имело порядок, отличный от Pmin, то при сложении такого числа с числом,' имеющим меньший порядок и мантиссу, отличную от нуля, эта вто- рая мантисса при выравнивании порядков могла бы полностью или частично выдвинуться за пределы сдвигателя вправо, что привело бы к потере точности вычислений.) При сложении- вычитании с плавающей запятой возникают раз- личные аппаратные погрешности. Не .рассматривая этих вопросов детально, укажем только причины возникновения погрешностей. 1) При сдвиге вправо во время выравнивания порядков ман- тисса числа, имеющего меньший порядок, может полностью или час- тично выдвинуться за пределы сдвигателя вправо. (Допустим, что этот сдвигатель, сумматор и схема нормализации содержат по n+k разрядов.) 2) При сдв>иге вправо во время нормализации может выдви- нуться еще один разряд. 3) Во время выполнения операции отбрасываются полностью (или с тем или иным округлением) младшие k разрядов. 4) Обнуление результата операции при max (а, у)—W<pmin тоже вносит погрешность. Максимальные значения погрешностей операции в каждом кон- кретном устройстве определить обычно нетрудно. Гораздо сложнее обстоит дело со средними значениями. Трудности фактически со- стоят в том, что до настоящего времени мало изучены статистиче- ские свойства и взаимосвязь величин |а—у|, W, а», Ci (i=l, 2, ... ..., п). '(Буквами at, Ci здесь обозначены двоичные цифры в разря- дах мантисс.) Вопросы точности сложения-вычитания с плавающей запятой рассматривались в работах [4, с. 326—331], [5] и др. 7.7. ОСНОВНЫЕ МЕТОДЫ НЕУСКОРЕННОГО УМНОЖЕНИЯ 1°. Перемножим двоичные числа 0,1101 и 0,1011: 0,1101 0,1011 множимое С множитель А 1101 1101 0000 1101 частичные произведения ,10001111 произведение СА В этом примере умножение начиналось с младших разрядов множи- теля. Каждое частичное произведение равняется либо нулю (если qq- 336
оТбетствующйя цифра Множителя равна нулю), либо множимому, сдвинутому на соответствующее количество разрядов. Очевидно, что умножение можно начинать и со старших разрядов множителя (при этом частичные произведения меняются местами). Кроме того, ясно, что если частичные произведения складываются не все сразу, а сна- чала только два частичных произведения, затем к их сумме прибав- ляется третье и т. д., то не обязательно при формировании частич- ных произведений сдвигать множимое; вместо этого можно перед прибавлением множимого, умноженного на очередной разряд мно- жителя, сдвигать на один разряд накопленную к этому моменту сум- му частичных произведений. Таким образом, существуют четыре ва- рианта умножения и им соответствуют показанные на рис. 7.7.1 четыре основные схемы неускоренного параллельного умножения [4]. Каждая из них состоит из трех основных узлов: регистра-сдвигате- ля множителя А, регистра (или регистра-сдвигателя) множимого С и накапливающего сумматора (или накапливающего сумматора- сдвигателя). Надписи на рисунке слева от узлов уточняют их со- став и разрядность. Например, надпись 2и-р. Рг-Сд, n-р. См (рис. 7.7.1,а) относится к 2п-разрядному сдвигающему регистру (регистр-сдвигатель) и n-разрядному накапливающему сумматору, в котором роль внутреннего регистра выполняет половина указан- ного регистра-сдвигателя. Рис. 7.7.1 В первом из четырех устройств (самом простом и самом распро- страненном) умножение начинается с младших разрядов множителя. Процесс умножения имеет циклический характер. Во время каждого /-го цикла (/=1, 2, ..., ri) из регистра-сдвигателя выдвигается очередная цифра множителя an-j+i, которая управляет передачей через п двухвходовых схем И (обозначены кружком) в сумматор 337
либо числа 0 (если цифра множителя равна нулю), либо множимо- го (если цифра множителя равна единице), причем множимое посту- пает в 2 ... (п+1) разряды сумматора. В конце цикла полученная сумма частичных произведений сдвигается на один разряд вправо (на последнем, n-м цикле этот сдвиг не нужен). Таким образом, во время первого цикла в сумматор передается число Cai2-1, в конце цикла оно сдвигается. В начале второго цикла прибавляется число Са22-1, а в конце второго цикла полученная сумма Са\2~2+Са22~{ сдвигается и т. д. На рис. 7.7.1 внутри контуров сумматоров напи- сана текущая сумма частичных произведений, остающаяся в накап- ливающем сумматоре во время /-го цикла сразу после прибавления /-го частичного произведения (до сдвига). Из рис. 7.7.1,а видно, что схемы суммирования находятся толь- ко в старшей половине узла, накапливающего частичные произведе- ния (точнее —в п+1 старших разрядах узла). Младшая половина этого узла, как и узел множителя, представляет собой регистр-сдви- гатель. Поэтому имеется возможность изъять из устройства млад- шую половину сумматора, а выдвигаемые из сумматора младшие разряды готового произведения передавать (штриховая линия) в освобождающиеся старшие разряды регистра-сдвигателя мно- жителя. Во втором устройстве (рис. 7.7.1,6) умножение тоже начинается с младших разрядов, но сдвигается не сумма частичных произведе- ний, а множимое. В третьем и четвертом устройствах умножение идет со старших разрядов и поэтому множитель двигается влево. Третье устройство можно упростить, изъяв из него регистр-сдвигатель множителя и поместив множитель в старшую половину регистра накапливающего сумматора. В процессе умножения множитель будет сдвигаться влево, освобождая место надвигающейся справа сумме частичных произведений. Следует еще заметить, что левая половина сумматора третьей схемы содержит не одноразрядные сумматоры, а однораз- рядные полусумматоры, так как частичные произведения в старшую половину не поступают. В этом состоит преимущество третьей схемы перед второй и четвертой. Затраты аппаратуры и другие свойства каждого из четырех ва- риантов множительного устройства можно оценить довольно точно прямо по виду рис. 7.7.1. Из менее очевидных особенностей следует отметить пригодность двух последних схем для выполнения деления: в регистр множимого можно поместить делитель, в накапливающий сумматор — делимое (там же будут получаться все остатки), фор- мируемые цифры частного можно по одной вдвигать справа в ре- гистр множителя. Показанные на рис. 7.7.1 устройства предназначены для полу- чения полного, 2п-разрядного произведения АС. Значительный интерес представляет анализ возможностей упрощения каждой из этих схем в том случае, когда устройство предназначено для формирования только n-разрядного произведения. Очевидно, что в первом из четырех устройств в этом случае мо- жет быть изъята вся младшая половина регистра-сдвигателя суммы частичных произведений (если, конечно, эта половина не совмещена с регистром-сдвигателем множителя). При этом в старшей половине регистра-сдвигателя останутся старшие п разрядов точного произве- дения. (При желании можно оставить один дополнительный млад- 338
ший разряд и одновременно с выполнением последнего, n-го цикла произвести округление). Очевидно также, что третья схема не поддается упрощению, так как изъятие из сумматора даже двух-трех младших разрядов при- ведет к аппаратной погрешности, значительно превышающей вели- чину 2~п. Наиболее сложен анализ упрощений, возможных во 2- и 4-й схе- мах. Допустим, что в сумматоре имеется лишь п+т старших раз- рядов (0^/п^п), а п—т младших разрядов с целью экономии аппаратуры изъяты. Изобразим частичные произведения, поступаю- щие в сумматор, в виде следующей таблицы: Номера >,1 2 3 4.. • п п+1 п+2 п+3 • • • разрядов 1 XXX- • X X сумматора 2 X X- • X X X 3 X- • X X X X т • X X X X ••• т+1 • X X X X ••• п—1 X X X X • п X X X ••• 1 номера частичных п оиз ведений п+т п+т+Ь ••• 2п— 1 2п Каждый крестик здесь обозначает цифру частичного произведе- ния, т. е. либо нуль, либо соответствующую цифру множимого. Разница между 2- и 4-й схемами состоит фактически лишь в по- рядке, в котором частичные произведения поступают в сумматор. Допустим, что разряды частичных произведений, ©казавшиеся пра- вее младшего из оставшихся разрядов сумматора, т. е. правее вер- тикальной черты в таблице частичных произведений, отбрасываются. Тогда сумма чисел, стоящих справа от черты, является погрешностью полученного в сумматоре (п+т) -разрядного произведения. Нетруд- но оценить ее максимальное значение, соответствующее случаю, ког- да все отброшенные цифры являются единицами. Однако максималь- ная погрешность умножения резко уменьшается, если производится округление путем прибавления единицы в (п+т)-и разряд сумма- тора каждый раз, когда старший из отбрасываемых разрядов оче- редного частичного произведения, т. е. (п+/п+1)-й разряд равен единице. Точная оценка максимальной погрешности умножения для этого случая получена в работе «[6]. Эта погрешность равна Л f И ' tn Amav = 2-(n+rn) max 6 Следует учитывать, что указанная величина — это максимальная разность между точным произведением АС и (п+т) -разрядным произведением, сформированным описанным способом. Дополнитель- ная погрешность, связанная с отбрасыванием младших т разрядов полученного (п+т)-разрядного произведения (при этом можно еще округлить остающийся n-разрядный результат) —это отдельный (бо- лее простой) вопрос. 2°. Рассмотрим процедуру умножения чисел А и С, представ- ленных в форме с плавающей запятой, т. е. в форме Л=2°°а, C=2h, We Pm|n<“. Т< ^тах> 1 -2-<а, (7.7.1) 339
(пока не будем говорить об особых случаях а = 0 или с=0). Умно- жение производится в два этапа. На первом этапе порядки склады- ваются, а мантиссы перемножаются, т. е. вычисляется величина АС= У^ас. Из (7.7.1) следует, что -|“<лс<(1 — 2-")2. Поэтому при -j- ас < -у- выполняется второй этап (нормализа- ция результата), во время которого ас сдвигается на один разряд влево, а от суммы порядков отнимается единица. Если обозначить результат операции через В = 2^6, то можно записать, что Ь = ас \ 1 > при ас^ -у, 5 =а +YI 2 ь = 2ас 1 1 4 > при ас < -у. 0 = <x + y— 11 к 2 Очевидно, что b тоже находится в диапазоне (7.7.1). Если 1 2 “ + Y > Ртах или если <x+y — 1 > ртаХ) т. е. если результат умножения превышает максимальное допустимое число 2Pmax (1—2~п), то в арифметическом устройстве вырабаты- вается сигнал переполнения разрядной сетки. Иногда это правило заменяется более простым, но более грубым правилом: сигнал пере- полнения выдается при а+у>ртах- Недостаток второго правила состоит в том, что ситуация a + Y = Aw + 1 Г 1 > считается недопустимой, в то время как при использовании первого правила вычисления могут продолжаться (в данном случае 0 = — Ртах) • Если ас=0 (это бывает при равенстве одного или обоих сомно- жителей нулю), то в качестве результата операции обычно исполь- зуется число + 2Рт,п.О; то же самое, еслй 1 ] ас <Т" I 1 или если a + Y</?mIn, “ + Y - 1 < Pmln J т. е. если результат умножения меньше минимально допустимого «40
нормализованного числа 2PmiF,,~2-. Иногда это правило заменя- ется более грубым: а+у— Kpmin- Недостаток последнего правила состоит в том, что при 1 « + Y = pmln результат умножения будет заменен нулем, в то время как при использовании предыдущего правила он сохранится (в данном слу- чае P = Pmln). 7.8. ОСНОВНЫЕ МЕТОДЫ НЕУСКОРЕННОГО ДЕЛЕНИЯ 1°. Рассмотрение операции деления мы начнем с общего опи- сания. При делении чисел с фиксированной запятой в арифметическом устройстве формируется частное Q, которое в общем случае являет- ся приближенным частным, т. е. A/C^Q. Здесь А — делимое, С — делитель. В тех методах деления, которые будут рассмотрены в этом параграфе, Q содержит старшие п раз- рядов точного частного А /С. Выработка знака частного Q на основе знаков делимого и де- лителя обычно не представляет особых трудностей. Поэтому для упрощения будем считать А, С, Q положительными числами. Если А^С, т. е. если А/С^1, то должен вырабатываться при- знак (сигнал) переполнения, который будем обозначать буквой <о. Само деление представляет собой циклический процесс; на каж- дом Z-м цикле определяется очередная двоичная цифра частного qi. Пронумеруем разряды частного Q следующим образом: Q = 0, q2q3 ... qn+i. Общее количество циклов деления равно n-j-l. Первый цикл отли- чается от других тем, что при эго выполнении проверяется неравен- ство Л^С, на втором цикле определяется q2, на третьем — q3 и т. д. В дальнейшем мы подробно изучим процесс определения цифр част- ного. Деление чисел с плавающей запятой, т. е. вычисление частного А/С = 2*а/2тс производится в два этапа. На первом определяется разность поряд* ков и делятся мантиссы, т. е. вычисляется величина: А/С = 2a“TQ, где Q^a/c. Как и при делении чисел с фиксированной запятой, Q содержит старшие разряды точного частного а [с. Так как 1/2^а, 2-п (7.8.1) (мы пока не говорим об особых случаях а=0 или с=0), то 1/2<а/сС2-2-"+1. (7.8.2) 841
6 =<2/2 й = а — у 4-1 Поэтому при 1^Q^2—2~n+1 выполняется второй этап операции (нормализация результата), во время которого Q сдвигается на один разряд вправо, а к разности порядков прибавляется единица. Если обозначить результат операции через В = 2$Ь, то можно за- писать, что b = Q ) > при Q< 1, 3=«“-Y I Очевидна, что мантисса b тоже находится в диапазоне (7.8.1). Рассмотрим особые случаи. Если С = 0 ИЛИ а—Y>Pmax, ИЛИ Q>1, а—у+1>Ртах, т. е. если результат деления превышает максимально допустимое число 2^max (1—2“л), то вырабатывается сигнал со переполнения разрядной сетки. Иногда вместо рассмотрения трех последних нера- венств рассматривают только неравенство а—у+1>рШах и выра- батывают <о=1 при удовлетворении этого неравенства. Недостаток такого более простого, но более грубого правила состоит в том, что при Q ‘С 1, Ct—у — Рт&х. вырабатывается <о=1, хотя в этом случае 0 = pmax, т. е. вычисле- ния можно было бы продолжать. Если а=0, то в качестве результата операции обычно исполь- зуется число 2₽m,n.O. То же самое производится, если Q< 1, a—Y<Pmin ИЛИ а—Y+l<Pmin, т. е. если результат деления меньше минимально допустимого числа 2PmIn,~2-. Иногда это правило заменяется более грубым: а— Недостаток последнего правила состоит в том, что при Q>1, а—у4-1=Рт1п результат деления будет заменен нулем, в то время как при исполь- зовании предыдущего правила он сохранится (в данном случае fl = ==Pmin) • Мантиссы а и с делятся фактически так же, как и числа А и С с> фиксированной запятой. Разница состоит лишь в том, что во время первого цикла деления делимое с делителем не сравниваются, как при делении чисел с фиксированной запятой, а определяется целая часть частного, которое теперь имеет вид Q = Pi, рг, Рз • • • Из (7.8.2) следует, что по крайней мере одна из цифр рг равна единице. Учитывая, что при pi = l частное Q будет во время нормализации результата сдвигаться на один разряд вправо, можно записать: 342
Q = qi, q2qs...qn+\ при <71=0 Q=qi, qzqs.'-qn при <7i = l, т. e. при <7i = 0 нужно выполнить и4-1 цикл, а при <7г=1—выпол- нить п циклов; в обоих случаях в частном получится п значащих разрядов. 2°. Перейдем к детальному рассмотрению процесса получения последовательных цифр qi частного Q при делении с фиксированной или с плавающей запятой. Основными двумя методами неускорен- ного деления следует считать деление с восстановлением остатка и деление без восстановления остатка. Рассмотрим процесс получения цифр частного по первому из этих методов. На рис. 7.8.1 показана структурная схема одного (<+1)-го цик- ла деления с восстановлением остатка. Цикл начинается со сдвига на один разряд влево (удвоения) остатка В», полученного во время предыдущего, i-ro цикла. После этого вычисляется разность между удвоенным остатком и делителем. Если она положительна, то в оче- редной разряд частного записывается цифра ^+1 = 1, а эта раз- ность является новым остатком Bt+i. Если разность между 2В» и делителем отрицательна, то, как видно из рисунка, в частное запи- сывается <7i+i = 0, а остаток 2В< восстанавливается и воспринимает- ся как новый остаток Bt+i. Таким образом, во время одного цикла производится одна или две операции сложения-вычитания. Рассмотрим пример деления чисел с фиксированной запятой. А 0,100 С “0,101 л =3 1-й цикл 2-й цикл “ Л = 2В, 0,100 —С 1,011 2В„ — С 1,111 +с 0,101 _2В, = В, 0,100 <? = 0, 2В0 —С<0, <о = 0 2В, 1,000 —С 1,011 е = 1, 2В,—0, <72 = 1 2В, —С = В2 0,011 2В2 0,110 3-й цикл —С 1,011 2В2. -с = в3 0,001 2В, 0,010 —С 1,011 4-й 1 цикл 2В, -С 1,101 +с 0,101 ^B, = Bt 0,010 <2=0,110 е = 1, 2Вг— С^0, </, = 1 е = 0, 2В, — С < 0, <?4 = 0 343
Ь этом примере и в других примерах деления, рассматриваемые в данном параграфе, делитель вычитается с использованием допол- нительного кода. Кроме того, следует отметить, что все числа изо- бражаются без знакового разряда (можно сказать, что используется модификация «в» одного из методов вычитания, рассмотренных в § 7.6). Разряд, расположенный слева от запятой в этом и других примерах деления, является не знаковым разрядом, а разрядом uej лой части и имеет вес 2°; о знаке разности 2Вг—С в примерах нужно судить не по знаковому разряду (его нет), а по сигналу пе- реноса е из старшего разряда. Между делимым А, делителем С, приближенным частным Q и последним остатком Bn+i существует следующее точное соотно- шение: A/C=Q+Bn+i/C2n. Так как Q содержит старшие п разрядов точного частного А/С, то в тех ЦВМ, где в качестве результата деления, кроме Q, выдается последний остаток Bn+i, программист может использовать этот Рис. 7.8.1 Рис. 7.8.2 остаток для повторного деления (Вп+1 на С) и получить еще ц7раз'- рядов частного. Многократно повторяя эту процедуру, можно вычис- лить частное с любой точностью. Теперь рассмотрим пример деления мантисс а и с чисел, е пла- вающей запятой. а 0,111 с “0,110 п~ 3 а=2В, 0,111 1-й цикл е — 1, 2ВЭ — с О, = t 2В, 0,010 —с 1,010 2-й цикл 2В,— с 1,100 +•<’ 0,110 е = 0, 2ВХ — с < 0, д2=® __ 2Bj = В2 0,010 344
3-й цикл 2В2 0,100 —с 1,010 2В2 — с 1,110 +с 0,110 2В2 = В3 0,100 е — 0, 2В2 — с < 0, qz — О Q = 1,00 В этом примере выполнено только 3 цикла потому, что ^1=1. Из примера видно, что разницы между делением чисел с фиксирован- ной запятой и делением мантисс почти нет. Соотношения между а, с, Q и последним остатком имеют следующий вид: —-о . с ~ч + с2п (при qt = 0), Т‘=<г + с27ГТГ (ПРИ?1=1) Частным случаем деления с восстановлением остатка следует считать деление с не зав ерше наем (nonperforming division), реали- зация которого возможна при использовании определенного типа на- капливающего сумматора, вычисляющего разность 2Bi—С. При этом методе в сумматоре сперва происходит процесс распространения переносов. Если в конце процесса выясняется, что 2Вг—С^0,. то вычитание доводится до конца и в регистр накапливающего сумма- тора вместо 2Вг принимается вычисленная разность 2Bi—С. Если же выясняется, что 2В<—С<0, то вычитание до конца не доводится и в регистре остается число 2Bi. Этим исключается необходимость восстановления остатка, т. е. экономится время. 3°. Теперь рассмотрим деление без восстановления остатка. На рис. 7.8.2 показана структурная схема (i+l)-ro цикла деления. Остатки Вг при использовании этого метода могут быть как поло- жительными, так и отрицательными числами. Из рисунка видно, что во время каждого цикла выполняется только одна операция сложе- ния-вычитания. Разделим те же числа А и С, что и в предыдущем примере де- ления чисел с фиксированной запятой: А = 0,100 С 0,101 А = 2В0 0,100 1-й цикл L2B0-C = B1 1,011 1,111 е = 0, Вг < 0, со = 0. 2Bt 1,110 2-й цикл +£ 0,101 В2 0,011 е = 1, В2 0, q2 = 1, 23—1013 345
- 2Вг 3-й цикл —С 0,110 1,011 - в3 0,001 е=\, В3^0, 73= 1, ~ 2В3 4-й цикл — 0,010 1,011 . в4 1,101 е = 0, В* <0, q* = 0. Как и при делении с восстановлением остатка, частное Q содержит старшие разряды точного частного А/С. Соотношения между А, С, Q, Bn+i имеют следующий вид: A/C=QAr^n+ilC2n (при Вп+1^0), A/C=Q+(Sn+i+C)/C2” (при Вп+1<0). Рис. 7.8.3 Деление мантисс при делении чисел с плавающей запятой про- изводится фактически таким же образом: а 0,111 с “0,110 л“3 л=2В0 0,111 1-й цикл —с 1,010 е = 1, Bt > 0, г/i = 1, Bt 0,001 ' 2В, 0,010 2-й цикл —с 1,010 . в, 1,100 ' 2Вг 1,000 3-й цикл 0,110 . в, 1,110 е = 0, В2 < 0, q2 = 0, е = 0, В2 < 0, q3 = 0. 346
При таком делении a/c=Q4-Bn+i/c2n (при qi = 0, Bn+i^0) a/c=<2-H(Bn+i+c)/c2n (при <7i=0, Bn+i<0), a/c=Q+Bn/c2n-1 (при <7i = l, BnX)), a/c=Q+(Bn+c)/c2n“1 !(при <7i = l, Bn<0). 4°. В описанных в этом параграфе методах деления очередной остаток Bi сдвигался влево. Очевидно, что результат деления не изменится, если вместо сдвига влево остатка сдвигать вправо де- литель, т. е. если вместо вычисления, например, разности 2Вг—С вычислять разность В~С/2. Это обстоятельство приводит к су- ществованию двух основных схем деления — см. рис. 7.8.3. Обозна- чения на рисунке те же, что и на рис. 7.7.1. Штриховая линия ука- зывает, что перенос из старшего разряда сумматора, определяющий знак числа 2Bi—С или 2Вг+С, управляет выбором очередной циф- ры (/г+1 и выбором числа, которое должно быть прибавлено к со- держимому сумматора. Первая из двух схем деления проще, чем вторая, и поэтому чаще находит применение. Достоинство второй схемы состоит в том, что при использовании определенных типов накапливающих сумматоров можно производить сдвиг делителя до завершения сложения-вычитания в сумматоре. 23*
СПИСОК ЛИТЕРАТУРЫ К главе 1 1. Глушков В. М., Капитонова Ю. В., Летичевский А. А. Теория структур данных и синхронные параллельные вычисления. — Кибер- нетика, 1976, № 6, с. 2—15. 2. Гливенко Е. В. Об одном принципе параллельных вычисле- ний. — Программирование, 1977, № 1, с. 3—9. 3. Карцев М. А. Вопросы построения многопроцессорных вы- числительных систем. — Вопросы радиоэлектроники. Сер. ЭВТ, 1970, вып. 5—6, с. 3—19. 4. Мультипроцессорные системы и параллельные вычисления/ Под ред. ^Энслоу Ф. Г. Пер. с англ. — М.: Мир, 1976.—383 с. 5. Байцер Б. Архитектура вычислительных комплексов/ Пер. с англ. — М.: Мир, 1974— Т. 1—498 с, Т. 2—566 с. 6. Baer J. L., Estrin G. A priory sheduling of bi — logic graph models of computations. — INTERNET, 1969, p. 119—127. 7. Baer J. L., Estrin G. Bounds for maximum parallelism in a bilogic praph model of computation. — IEEE Trans. Comput., 1969 v. C-18, № 11, p. 1012—1014. 8. Martin D., Estrin G. Models of computations and systems- evaluation of vertex probabilities in graph models of computations. — J. ACM, 1967, v. 14, № 2, p. 281—300. 9. Головкин Б. А. Построение вероятностной модели и анализ параллельных вычислительных процессов. — Изв. АН СССР. Техни- ческая кибернетика, 1973, № 3, с. 86—96. 10. Головкин Б. А. Об одном классе динамических многомерных моделей. — Вопросы радиоэлектроники. Сер. ЭВТ, 1973, вып. 7, с. 25—30. 11. Евреинов Э. В., Косарев Ю. Г. Однородные универсальные вычислительные системы высокой производительности. — Новоси- бирск: Наука, 1966.—308 с. 12. Поспелов Д. А. Введение в теорию вычислительных систем.— М.: Советское радио, 1972.—280 с. 13. Голубев-Новожилов Ю. Г. Многомашинные комплексы вы- числительных средств. — М.: Сов. радио, 1967.—424 с. 14. Карцев М. А. Распараллеливание вычислительных алгорит- мов итерационного типа. — Вопросы радиоэлектроники. Сер. ЭВТ, 1971, вып. 9, с. 36—39. К главе 2 1. Карцев М. А. Архитектура цифровых вычислительных ма- шин.— М.: Наука, 1978.—296 с. 2. Мультипроцессорные системы и параллельные вычисления/ Под ред. Энслоу Ф. Г. Пер. с англ, — М.: Мир, 1976.—383 С, 348
3. Crane В. A., Cilmartin H. J., Huttenhoff J. H., Rux R. T., Shively R. R. PEPE computer architecture. — COMPCON-72, 6th Annu. IEEE Comput. Soc. Int. Conf., San Francisco, 1972, p. 57—60. 4. Evensen A. J., Troy J. L. Introduction to the architecture of a 288-element PEPE. — Proc. Sagamore Computer Conf, on parallel processing, Springer-Verlag, N. Y., 1973, p. 162—169. 5. Slotnick D. L., Borck W. C., McReynolds R. C. The Solomon computer. — 1962 Fall Joint Computer Conf. AFIPS Proc., 1962, v. 22, Washington, p. 97—108. 6. Barnes G. H., Brawn R. M., Kato M., Kuck J., Slotnick D. L., Stokes R. A. The ILLIAC IV Computer. — IEEE Trans. Comput. 1968, v. C-17, № 8, p. 746—757. 7. Bouknight W. J., Dennenberg S. A., McIntyre D. E., Sa- meh A. H., Slotnick D. L. The ILLIAC-IY System. — Proc, of IEEE, 1972, v. 60, № 4, p. 369—388. 8. Вопросы радиоэлектроники. Сер. ЭВТ, 1980, вып. 9. 9. Martin D. F., Estrin G. Experiments on models of computa- tion and systems. — IEEE Trans. Comput., 1967, v. EC-16, № 1, p. 59—69. 10. Noor A. K., Fulton R. E. Impact of CDC STAR-100 computer on finite element systems. — J. Struct. Div. Proc. Amer. Soc. Civ. Eng., 1975, v. 101, № 4, p. 731—750. 11. Карцев M. А. Вопросы построения многопроцессорных вы- числительных систем. — Вопросы радиоэлектроники. Сер. ЭВТ, 1970, вып. 5, 6, с. 3—19. 12. Abel N. Е., Budnik Р. Р., Kuck D. J., Muraoka Y., Northo- ote R. S., Wilhelmson R. B. TRANQUIL: A language for an array processing computer. Spring Joint Computer Conference, 1969, p. 57—73. 13. Lamport L. The Parallel exicution of DO loops. — Communi- cations of the ACM, 1974, v. 17, № 2, p. 83—93. 14. Lawrie D. H., Layman T., Baer D., Randal J. M. Glypnir — a programming languagef or Illiac-IV. — Communications of ACM, 1975, v. 18, № 3, p. 157—164. 15. Карцев M. А. Арифметика цифровых машин. — M.: Наука, 1969.—576 с. 16. Карцев М. А. Вычислительная машина М-10, ДАН, 1979, т. 245, № 2, с. 309—312. К главе 3 1. Weinberger A., Smith J. L. A one-microsecond adder using onemegacycle circuitry. — IRE Trans, on Electron. Comput., 1956, v. EC-5, № 2, p. 65—73. 2. Rowe W. D. A new approach to high-speed logic. — In: Proc, of the West Joint Computer Conf., San Francisco — N. Y., 1959, p. 277—283. 3. Arithmetic arrays using standart COS/MOS building blocks. — RSA Solid State Division, 1973, p. 373—378. 4. Жук А. И., Жук В. И. О циркуляции сигналов по цепи пере- носа в сумматорах обратных кодов. — Вопросы радиоэлектроники. Сер. ЭВТ, 1968, вып. 4, с. 24—33. 5. Потемкин И. С. Сумматоры. Министерство высшего и сред- него специального образования СССР. Московский ордена Ленина Энергетический институт. — М., 1975—66 с. 349
6. Wilkes M. V. Automatic digital computers. London: Methuen and Co., 1958—305 p. 7. Morgan L. P., Jarvis D. B. Transistor logic using current switching and routing techniques and its application to a fast-carry propagation adder. — IEE Proc., 1959, v. 106, № 29, Pt. B, p. 467—468. 8. Lehman M., Burla N. Skip techniques for high-speed carry pro- pagation in binary arithmetic units. — IRE Trans, on Electron. Com- put., 1961, v. EC-10, № 4, p. 691—699. 9. Heijn H. I., Selman J. C. The Philips Computer Pascal. — IRE Trans, on Electron. Comput., 1961, v. EC-10, № 2, p. 175—183. 10. Majersky S. On determination of optimal distributions of carry skips in adders. — IEEE Trans. Comput., 1967, v. 16, № 1, p. 45—58. 11. Nadler M. A high-speed electronic arithmetic unit for auto- matic computing machines. — Acta Technica, 1956, v. 1, № 6, p. 464—478; 1957, v. 2, № 1, p. 101 — 102. 12. Пат. № 3230354 (США). НКИ 235—164. 13. Sclansky J. Conditional-sum addition logic. — IRE Trans, on Electron. Comput, 1960, v. EC-9, № 2, p. 226—231. 14. Bedrij O. J. Carry-select adder. — IRE Trans, on Electron. Compnt., 1962, v. EC-11, № 3, p. 340—346. 15. Беляков M. И., Брик В. А. Определение оптимальных пара- метров ускоренного сумматора. — Вопросы радиоэлектроники. Сер. ЭВТ, 1970, вып. 9, с. 62—66. К главе 4 1. Карцев М. А. Арифметика цифровых машин. — М.: Наука, 1969.—576 с. 2. Хетагуров Я. А. Схема сокращения времени умножения. — В кн.: Вычислительная техника. — М.: Атомиздат, 1960, с. 48—53. 3. Карцев М. А. Арифметические устройства электронных циф- ровых машин. — М.: Физматгиз, 1958.—158 с. 4. Брик В. А., Лушпин Л. И. Построение однотактных множи- тельных устройств на больших интегральных схемах. — Вопросы радиоэлектроники. Сер. ЭВТ, 1974, вып. 11, с. 41—52. 5. Dean К. J. Versatile multiplier arrays. — Electronic Letters, 1968, v. 4, № 16, p. 333—334. 6. Hoffman J. C., Lacaze B., Csillag P. Multiplier parralele a circuits logiques iteratifs. — Electronic Letters, 1968, v. 4, № 9, p. 178. 7. Bandyopadhyay S., Basu S., Choudhury A. K. An iterative array for multiplication of signed bihary numbers. — IEEE Trans. Comput., 1972, v. 21, № 8, p. 921—922. 8. Хетагуров Я. А., Попов Ю. А., Любенцов В. М. Матричное устройство перемножения. — В кн.: Вопросы вычислительной мате- матики и вычислительной техники. — М.: Машгиз, 1963, с. 157—165. 9. Брик В. А. О быстродействии пирамид сумматоров множи- тельных устройств ЦВМ. — Вопросы радиоэлектроники. Сер. ЭВТ, 1970, вып. 5—6, с. 79—87. 10. Брик В. А., Борисов Ю. М., Танетов Г. И. Пирамида сум- маторов для арифметического устройства цифровой вычислительной машины. — В кн.: Элементы и устройства управляющих машин,-” М., 1966, с. 159—166, 330
11. Majithia J. C., Kitai R. An iterative array for multiplication of signed binary numbers. — IEEE Trans. Comput., 1971, v. 20, № 2, p. 214—216. 12. Deegan I. D. Cellular multiplier for signed binary numbers.— Electronic Letters, 1971, v. 7, № 151, p. 436—437. 13. Kingsbury N. G. Hilgh-speed binary multiplier. — Electronic Letters, 1971, v. 7, № 10, p. 277—278. 14. Springer J., Alfke P. Parallel multiplier gets boots from IC iterative logic. — Electronics, 1970, v. 43, № 21, p. 89—93. 15. Habibi A., Wintz P. A. Fast multipliers. — IEEE Trans. Com- put. 1970, v. 19, № 2, p. 153—157. 16. Stylianos P. A 40-ns 17-bit by 17-bit array multiplier. — IEEE Trans. Comput, 1971, v. 20, № 4, p. 442—447. 17. Храпченко В. M. Методы ускорения арифметических опера- ций, основанные на преобразовании многорядного кода. — Вопросы радиоэлектроники. Сер. VII ЭВТ, 1965, вып. 8, с. 121—144. 18. Wallace С. S. A suggestion for a fast multiplier. — IEEE Trans. Comput., 1964, v. EC-13, № 1, p. 14—17. 19. A. C. 126668 (СССР). —Опубл, в Б. И., 1960, № 5. 20. Jacobsohn D. A suggestion for a fast multiplier. — IEEE Trans. Comput., 1964, v. EC-13, № 6, p. 754—755. 21. Dadda L. Some schemes for parallel multipliers. — Alta Fre- quenza, 1965, v. 34, № 5, p. 349—356. 22. Карцев M. А. Устройство для ускоренного выполнения ум- ножения и деления.—Вопросы радиоэлектроники. Сер. XII Обще- техническая, 1959, вып. 12, с. 43—61. 23. Gex A. Multiplier-divider cellular array. — Electronic Letters, 1971, v. 7, № 15, p. 442—444. 24. Deegan I. Concise cellular array for multiplication and di- vision.— Electronic Letters, 1971, v. 7, № 23, p. 702—704. 25. Hemel A. Making small ROM’s do math quickly, cheaply and easily. — Electronics, 1970, v. 43, № 10, p. 104—111. 26. Johnson N. Improved binary multiplication system. — Elec- tronic Letters, 1973, v. 9, № 1, p. 6—7. 27. Пат. 3670956 (США). МКИ G06f7/52. 28. Lamdan T., Aspinal D. Some aspects of the design of a simultaneous multiplier. — Proc. IFIP Congr., New York City, 1965, v. 2, Washington, D. C., Spartan Books; London, Macmillan and Co., 1966, p. 440—441. 29. Мороз И. Г. Некоторые вопросы однотактного умножения.— В кы.: Вычислительная математика и техника. — Киев: АН УССР, 1962, с. 85—94. 30. Hennie F. С. Iterative arrays of logical circuits. — MIT Press, New York —London: Wiley, 1961.—242 p. 31. Сарра M., Hamacher V. C. An augmented iterative array for high-speed binary division. — IEEE Trans. Comput., 1973, v. 22, № 2, p. 172—175. 32. Guild H. H. Some cellular logic arrays for non-restoring bi- nary division. — The Radio and Electronic Engineer, 1970, v. 39, №6, p. 345—348. 33. Majithia J. C. Nonrestoring binary division using a cellular array. — Electronic Letters, 1970, v. 6, № 10, p. 303—304. 34. Dean K. J. Binary division using a datadependent iterative array. — Electronic Letters, 1968, v. 4, № 14, p. 283—284. 351
35. Dean К. J. Cellular logic array for extracting sguare roots. — Electronic Letters, 1968, v. 4, № 15, p. 314—315. 36. Devries R. C., Chao M. H. Fully iterative array for extracting square roots. — Electronic Letters, 1970, v. 6, № 8, p. 255—256. 37. Dean К. Logical circuits for use in iterative arrays. — Electronic Letters, 1968, v. 4, № 5, p. 81—82. 38. Dean K. J. Cellular logical array for obtaining the square of a binary number.—Electronic Letters, 1969, v. 5, № 16, p. 370—371. 39. Anderson S. F., Earle J. G., Goldschmidt R. E., Powers D. M. The IBM System/360, Model 91. Floating-point execution unit.— IBM J. Res. and Developm., 1967, v. 11, № 1, p. 34—53. 40. Проектирование сверхбыстродействующих систем. Комплекс Стретч./Под ред. В. Бухгольца. Пер. с англ, под ред. А. И. Кито- ва. — М.: Мир, 1965—348 с. 41. Брик В. А., Ленгник Т. М. Анализ процессов «затухания» в матричных множительных устройствах. — Вопросы радиоэлектро- ники. Сер. ЭВТ, 1971, вып. 9, с. 65—69. 42. Храпченко В. М. Об одном способе преобразования мно- горядного кода в однорядный. — Доклады АН СССР, 1963, т. 148, № 2, с. 296—299. 43. Офман Ю. Об алгоритмической сложности дискретных функ- ций.— Доклады АН СССР, 1962, т. 145, № 1, с. 48—51. 44. Борисов Ю. М. Об аппаратных методах второго порядка ускорения умножения. — В кн. Вычислительная техника, алгоритмы и системы управления. — Труды конференции ИНЭУМ, июль 1966.— М., ИНЭУМ, 1967, с. 5—19. 45. Брик В. А., Лушпин Л. И. Преобразование многорядного кода в двухрядный при помощи однотипных узлов. — Вопросы ра- диоэлектроники. Сер. ЭВТ, 1973, вып. 7, с. 94—116. 45. Брик В. А. Некоторые общие свойства многослойных мат- ричных устройств. — Вопросы радиоэлектроники. Сер. ЭВТ, 1978. вып. 6, с. 61—69. 47. Stenzel W. J., Kubitz W. J., Garcia G. H. A compact high- speed parallel multiplication scheme. — IEEE Trans. Comput., 1977, v. 26, № 10, p. 948—957. К главе 5 1. Пат. 3293418 (США) НКИ 235—156. 2. Акушский И. Я. Многорегистровые схемы выполнения ариф- метических операций: Вопросы теории математических машин. Сбор- ник первый/ Под ред. Ю. Я. Базилевского. — М.: Физматгиз, 1958, с. 192—218. 3. Dean К. J. Binary division using a datadependent iterative array. — Electronic Letters, 1968, v. 4, № 14. 4. Сарра M., Hamacher V. C. An augmented iterative array for high-speed binary division. — IEEE Trans. Comput., 1973, v. 22, № 2, p. 172—175. 5. Stefanelly R. A suggestion for a high-speed parallel binary divider. — IEEE Trans. Comput., 1972, v. C-21, № 1, p. 42—55. 6. Wallace C. S. A suggestion for a fast multiplier. — IEEE Trans. Comput., 1964, v. EC-13, № 1, p. 14—17. 7. Храпченко В. M. Методы ускорения арифметических опера- ций, основанные на преобразовании многорядного кода. — Вопросы радиоэлектроники. Сер. VII ЭВТ, 1965, вып. 8, с. 121 —144. 8. Flynn М. J. Very high-speed computing system. — Proc, of the IEEE, 1966, v. 54, № 12, p. 1901—1909. 352
9. Ahmad M. Iterative schemes for high-speed division. — Com- put. J., 1972, v. 15, № 4, p. 333—336. 10. Shaham Z., Riesel Z. A note on division algorithms based on multiplication. — IEEE Trans. Comput., 1972, v. C-21, № 5, p. 513—514. 11. Anderson S. F., Earle J. G., Goldschmidt R. E., Powers D. M. The IBM System/360, Model 91. Floating-point execution unit.— IBM J. Res. and Developm., 1967, v. 11, № 1, p. 34—53. 12. Брик В. А., Гаврилин В. А., Жук В. И., Златников В. М., Кислинский В. А., Ленгник Т. М., Лушпин Л. И., Петрова Г. Н. Многопроцессорное арифметическое устройство. — Вопросы радио- электроники. Сер. ЭВТ, 1972, вып. 5, с. 56—67. 13. Карцев М. А. Арифметика цифровых машин. — М.: Наука, 1959—576 с. 14. Беркс А., Голдстейн Г., Дж. Нейман. Предварительное рас- смотрение логической конструкции электронного вычислительного устройства. — Кибернетический сборник № 9, М.: Мир, 1964, № 9, с. 7—67. 15. Брик В. А., Гаврилин В. А., Жук В. И., Захаров В. Г., Лушпин Л. И., Петрова Г. Н. Быстродействующее арифметическое устройство. — Вопросы радиоэлектроники. Сер. ЭВТ, 1970, вып. 5—6, с. 97—108. 16. Atkins D. Е. The analysis and design of a class of quotient digit selectrors. — 5-th Annu. IEEE Int. Comput. Soc. Conf., Boston, Mass., 1971. Conf, dig., New York, 1971, p. 201—202. 17. Брик В. А. Об одном методе деления без восстановления остатка. — Цифровая вычислительная техника и программирование/ Под ред. А. И. Китова. — М.: Сов. радио, 1969, вып. 5, с. 72—84. 18. Nadler М. A high-speed electronic arithmetic unit for automa- tic computing machines. — Acta Technica, 1956, v. I, № 6, p. 464—47&, 1957, v. 2, № 1, p. 101 — 102. 19. Карцев M. А. Об одном методе двоичного деления. — В кн.: Материалы научно-техн, конференции «Новые разработки в обла- сти вычислительной математики и вычислительной техники». — Киев: ВЦ АН УССР, 1960, с. 409—418. 20. Robertson J. Е. A new class of digital division methods. — IRE Trans, on Electron. Comput., 1958, v. EC-7, № 3, p. 218—222. 21. Браиловский В. Л., Глухов Ю. Н. О методах деления без восстановления остатка. — Вопросы радиоэлектроники. Сер. XII — Общетехническая, 1961, вып. 13, с. 40—59. 22. Пат. 3621218 (США). 23. Soceneantu A., Toma С. I. Cellular logic array for redundant binary division. — Proc. IEE, 1972, v. 119, № 10, p. 1452—1456. 24. Карцев M. А. Устройство для ускоренного выполнения умно- жения и деления. — Вопросы радиоэлектроники. Сер. XII — обще- техническая, 1959, вып. 12, с. 43—61. 25. Atkins D. Е. Higher-radix division using estimates of the divisor and partial remainders. — IEEE Trans. Comput., 1968, v. C-17, № 10, p. 925—934. К главе 6 1. Грамолин В. В. Повышение регулярности вычислительных устройств при использовании специальных арифметик. — Труды Мос- ковского ин-та инженеров железнодорожного транспорта, 1971, рып. 395 «Вопросы теории вычислительных систем», с. 73—83. 353
2. Карасик В. М. Некоторые задачи проектирования ЦВМ на больших интегральных схемах. — Вопросы радиоэлектроники. Сер. ЭВТ. 1971, вып. 1, с. 3—13. 3. Зейденберг В. К., Матвеенко Н. А., Тароватова Е. В. Обзор зарубежной вычислительной техники по состоянию на 1971 г. — М.: Институт точной механики и вычислительной техники, 1971.— 316 с. 4. Cloyd Е. М. MOS/LSI throughout. — IEEE Int Convent. Dig., New York, N. Y., 1971. —New York, N. Y., 1971, p. 74—75. 5. New Scientist. — 1973, 3/V, № 844. 6. Альтман. Функциональный подход к проектированию БИС.— Электроника, 1975, № 17, с. 58. 7. Тароватова Е. В., Головня Е. В., Матвеенко Н. А. Вычис- лительная техника за рубежом в 1975 г./ Под ред. В. К. Зейден- берга. — М.: Институт точной механики и вычислительной техники им. С. А. Лебедева АН СССР. 1976.—275 с. 8. Микроэлектроника и однородные структуры для построения логических и вычислительных устройств/ И. В. Прангишвили, Н. А. Абрамова, Е. В. Бабичева, В. В. Игнатушенко. — М.: Наука, 1967.—228 с. 9. Духнич Е. И., Макаревич О. Б. Большие интегральные схемы и математическое обеспечение цифровых интегрирующих структур.— В кн.: Вычислительные системы и среды. — Таганрог, 1972, с. 433—435. 10. Зейденберг В. К., Матвеенко Н. А., Тароватова Е. В. Обзор зарубежной вычислительной техники по состоянию на 1972.—М.: Институт точной механики и вычислительной техники, 1972.—355 с. 11. Arluckle W. L., Mattson R. С. Macromodularity: a design con- cept to end computer generation gaps. — Computer Design, 1970, v. 9, № 8, p. 69—79. 12. Russo R. L. On the tradeoff between logic performance and circuit-to-pin ration for LSI. — IEEE Trans. Comput., 1972, v. 21, № 2, p. 147—153. 13. Arithmetic arrays using standard COS/MOS building blocks. — RCA Solid State Division, 1973, p. 373—378. 14. Белков M. С., Братальский E. А., Лушпин Л. И. Способ построения сверхпараллельного сумматора. — Вопросы радиоэлек- троники. Сер. ЭВТ, 1975, вып. 7, с. 65—71. 15. Kingsbury N. G. High-speed binary multiplier. — Electronic Letters, 1971, v. 7, № 10, p. 277—278. 16. Springer J., Alfke P. Parallel multiplier gets boots from IC iterative logic. — Electronics, 1970, v, 43, № 12, p. 89—93. 17. Habibi A., Wintz P. A. Fast multipliers. — IEEE Trans. Corn- put., 1970, v. >19, № 2, p. 153—157. 18. Stylianos P. A 40-ns 17-bit by 17-bit array multiplier. — IEEE Trans. Comput., 1971, v. 20, № 4, p. 442—447. 19. Брик В. А., Лушпин Л. И. Метод преобразования много- рядного кода при помощи двоичных сумматоров. — Вопросы радио- электроники. Сер. ЭВТ, 1977, вып. 6, с. 119—124. 20. Брик В. А., Лушпин Л. И. Преобразование многорядного кода в двухрядный при помощи однотипных узлов. — Вопросы ра- диоэлектроники. Сер. ЭВТ, 1973, вып. 7, с. 94—116. 21. Hemel A. Making small ROM’s do math quickly, cheaply and easily. — Electronics, 1970, v. 43, 10, p. 104—HI, 354
22. Johnson N. Improved binary multiplication system. — Elec- tronic Letters, 1973, v. 9, № 1, p. 6—7. 23. Пат. 3670956 (США). МКИ G06f 7/52. 24. The TTL Data Book Supplement to CC-401 for Disign Engi- neers. — Deutschland: Texas Instruments, 1973. 25. Белков M. С., Братальский E. А., Брик В. А., Лушпин Л. И., Пахунов В. Н. Разработка системы БИС для построения узлов ЦВМ.— Вопросы радиоэлектроники. Сер. ЭВТ, 1975, вып. 7, с. 72—80. 26. Пат. 3866030 (США). МКИ G06f7/39. К главе 7 1. McKeeman W. М. Representation error for real numbers in bi- nary computer arithmetic. — IEEE Trans. Comput. 1967, v. 16, № 5, p. 682—683. 2. Hamming R. W. Numerical methods for scientists and engi- neers.— New York.: McGraw-Hill Book Co., 1962.—411 p. 3. Потемкин И. С. Построение функциональных узлов на по- тенциальных системах элементов. — М.: МЭИ, 1974.—126 с. 4. Карцев М. А. Арифметика цифровых машин. — М.: Наука, 1969.—576 с. 5. Брик В. А. Точность выполнения операций сложения — вычи- тания с плавающей запятой. — Вопросы радиоэлектроники. Сер. ЭВТ, 1972, вып. 5, с. 74—81. 6. Храпченко В. М. Об оценке погрешности двоичного умно- жения. — Проблемы кибернетики/ Под ред. А. А. Ляпунова. — М.: Физматгиз, 1963, вып. 10, с. 165—177.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Абсолютная погрешность пред- ставления числа 319 Алгебра логики 312 Аппаратные погрешности при сложении — вычитании с плавающей запятой 336 Аппаратура параллельно-по- следовательной обработки 51 Арифметическое устройство ЦВМ RAC 251—276 Биполярные логические схемы 277 Большие интегральные схемы (БИС) 275 — критерии оптимальности 278 Быстродействующие синхрон- ные умножители 162 ----- устройства для деления 221 — сумматоры на БИС 280 Вычислительная система 3, 6, 39 -----, быстродействие 10, 12, 98 ------- номинальное 10 ------- реальное пользова- тельское 10 ------- реальное системное 10 ----- комбинированная 98 ----- конвейерная (маги- стральная) 56, 69, 105 -----многопроцессорная 10'1 -----смешанная 105 -----, программирование 112 -----, производительность 8 ------- типа I 41 ------- типа II 42 -------типа III 47 -------типа V 49. -----, эффективность 10, 61, 68, 77, 80 Глубина параллелизма смеж- ных операций 28 Двумерные матричные инте- гральные схемы 307 Деление с восстановлением остатка 222, 343 — без восстановления остатка 230, 269, 343 — — —, графоаналитический метод анализа 242 -------, обобщенный метод 254 — с использованием симмет- ричного набора целых чи- сел 246 Дизъюнкция (ИЛИ, логическая сумма) 313 Естественный параллелизм 14, 117 Импликация 313 Импульсная система элементов 323 Инвертор 313 Интегральные операции 15 Итеративные сети 176 Коды операций интегральной схемы SN 54181 285 Комбинационный сумматор 325 Коммутатор 324 Конъюнкция (И, логическое произведение) 313 Коэффициент расхождения за- дачи 18 Логические и арифметические устройства и узлы ЦВМ 312 Матричные ОУ 175, 180, 19'5 Межсхемных связей миними- зация 307 Метод деления с использова- нием итерационных формул 226 — классический 234 — неускоренного деления .341 -----умножения 336 — сложения вычитания 325 Методы деления Стефанелли 225 — ускоренного деления с вос- становлением остатка 222 ------- без восстановления остатка 230, 254 Механизм масок 50 Многомашинные комплексы 39 Многопроцессорные системы с общим управлением 46, 48 -----с раздельным управле- нием 41 Многослойные ОУ 197, 295 -----на параллельных сумма- торах 290 Накапливающий сумматор 325 Номинальное быстродействие >10 Однотактные умножители (ОУ) 165, 174 356
-----на ВИС 290 ---многослойные 197, 295 Операции геометрического управления 56 Основная структура ОУ 206 Отрицательные частичные про- изведения 168 Относительная погрешность представления числа 319 Параллелизм естественный 14 — искусственный 29 — множества объектов 15 — независимых ветвей 21 — смежных операций 26, 115 Параллельно-параллельная ло- гика 137 Параллельный сумматор 325 — счетчик 199 Показатель связанности смеж- ных операций 27 Потенциальная система элемен- тов 322 Пользовательская производи- тельность 10, 44 — эффективность 11 -----конвейерной системы 95 Преобразование логических формул 314 — многорядного кода 29'5 Преобразователь Af->2 296 Процессор переформирования массивов 53, 88 Процессы «затухания» в одно- родных матричных ОУ 195 — суммирования в однород- ных матричных ОУ 180 Ранг задачи 17 Реальное быстродействие 10 Самодвойственности свойство 179 Сдвигающий регистр 324 Синхронные методы выполне- ния операций 126 Система с одиночным потоком команд и одиночным пото- ком данных (ОПК—ОПД) 42 -------и множественным по- током данных (ОПК— МПД) 42 Системная производительность 8 — эффективность 11 Системы с множественным по- током команд и множествен- ным потоком данных (МПК--МПД) 42 Средства высокой производи- тельности 275 Стрелка Пирса (ИЛИ—НЕ, NOR) 313 Структуры экономичные 208 Сумматоры с выбором перено- са 153 — с обходным переносом 142, 146 — с одновременным переносом 135 — параллельно-параллельные 142 — с пирамидой переносов 149 —, оптимизация структуры 155 — сверхпараллельные 127 — с условными суммами 131 Схема адресного дешифратора 306 — проверки однородности вы- борки 55, 86 Триггер 324 Триггерный регистр 324 Умножители однотактные 165, 174 Функционально полный набор 313 Функциональные узлы на по- тенциальных элементах 325 Функция неэквивалентности (неравнозначности) 313 — отрицания (НЕ, инверсия) 313 — эквивалентности (равно- значности) 313 ЦВМ, элементы и узлы 323 Числа с плавающей запятой 317 -------, пример деления 344, 346 — с фиксированной запятой 315 -------, пример деления 343, 345 -------, примеры сложения- вычитания 327 Штрих Шеффера 313 Ярусно-параллельная форма программы 22 -------, количественные ха- рактеристики 24 357
ОГЛАВЛЕНИЕ Предисловие ........................... 3 1. ПРОБЛЕМА ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ 1.1. Исходные положения...................................... 6 1.1.1. Вычислительные системы, цели их создания. 1.1.2. Производитель- ность вычислительных систем. Основные понятия и определения 1.2. Особенности вычислительных задач, позволяющие органи- зовать параллельные вычисления...............................14 1.2.1. Естественный параллелизм и параллелизм множества объектов. 1.2.2. Параллелизм независимых ветвей. 1.2.3. Параллелизм смежных операций. 1.2.4. Искусственный параллелизм 2. СТРУКТУРЫ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 2.1. Принципы организации вычислительных систем ... 39 2.1.1. Многомашинные комплексы и многопроцессорные системы с раз- дельным управлением (системы типов I и II). 2.1.2. Многопроцессор- ные системы с общим управлением, ориентированные на параллелизм смежных операций (системы типа III). 2.1.3. Многопроцессорные си- стемы с общим управлением, ориентированные на естественный парал- лелизм (системы типа IV). 2.1.4. Конвейерные (магнистральные) вы- числительные системы 2.2. Эффективность вычислительных систем.....................61 2.2.1. Общие соображения. 2.2.2. Эффективность вычислительных систем типа I и II. 2.2.3. Эффективность вычислительных систем типа III. 2.2.4. Эффективность вычислительных систем типа IV 2.3. Комбинированные вычислительные системы .... 98 2.3.1. Задача построения вычислительной системы с максимальным пользовательским быстродействием. 2.3.2. Многопроцессорная комбини- рованная система. 2.3.3. Конвейерные и смешанные комбинированные системы 2.4. Дополнительные замечания.......................' . . 112 2.4.1. О программировании для вычислительных систем 2.4.2. Об осо- бенностях аппаратуры 3. БЫСТРОДЕЙСТВУЮЩИЕ СИНХРОННЫЕ СУММИРУЮЩИЕ УСТРОЙСТВА 3.1. Сверхпараллельные сумматоры.......................127 3.2. Параллельно-параллельные сумматоры................142 3.3. Сумматоры с обходными переносами..................144 3.3.1. Оптимальные структуры сумматоров с обходными переносами . 3.4. Сумматоры с пирамидой переносов.................. 149 3.5. Сумматоры с условными суммами.................... 151 3.6. Сумматоры с выбором переноса..................... 153 3.7. Пример оптимизации структуры сумматора ... 155 4. БЫСТРОДЕЙСТВУЮЩИЕ СИНХРОННЫЕ УМНОЖИТЕЛИ 4.1. Уменьшение времени суммирования частичных произве- дений .................................................163 4.2. Предварительное формирование кратных множимого . . 165 4.3. Использование отрицательных частичных произведений . 168 358
4.3.1. Метод умножения на группу из q разрядов множителя с рас- шифровкой ?-1-1 разряда множителя. 4.3.2. Метод умножения с млад- ших разрядов множителя 4.4. Анализ и методика построения однотактных умножителей 174 4.4.1. Классификация однотактных умножителей. 4.4.2. Анализ процес- сов суммирования частичных произведений в однородных матричных ОУ 4.4.3. Анализ процессов «затухания» в однородных матричных ОУ. 4.4.4. Многослойные однотактные матричные умножители 5. БЫСТРОДЕЙСТВУЮЩИЕ СИНХРОННЫЕ УСТРОЙСТВА ДЛЯ ДЕЛЕНИЯ 5.1. Методы ускоренного деления с восстановлением остатка 222 5.2. Методы Стефанелли....................................225 5.3. Выполнение деления через умножение...................226 5.4. Ускоренное деление без восстановления остатка . . 230 5.4.1. Общее описание деления без восстановления остатка. 5.4.2. Клас- сический метод деления. 5.4.3. Графоаналитический метод анализа про- цессов деления. 5.4.4. Деление с использованием симметричного набо- ра целых чисел, включающего нуль. 5.4.5. Обобщенный метод деле- ния без восстановления остатка и его исследование. 5.4.6. Пример реа- лизации обобщенного метода деления без восстановления остатка 6. ПОСТРОЕНИЕ ОСНОВНЫХ УЗЛОВ ВЫЧИСЛИТЕЛЬНЫХ СРЕДСТВ ВЫСОКОЙ ПРОИЗВОДИТЕЛЬНОСТИ НА ОСНОВЕ БОЛЬШИХ ИНТЕГРАЛЬНЫХ СХЕМ 6.'1 . Критерии оптимальности больших интегральных схем . 278 6.2. Построение быстродействующих сумматоров на больших интегральных схемах.......................................280 6.3. Построение однотактных умножителей на больших интегральных схемах.......................................290 6.3.1. Построение многослойных однотактных умножителей при помощи параллельных сумматоров. 6.3.2. Метод построения многослойных одно- тактных умножителей при помощи преобразователей АГ->2. 6.3.3. Со- ставные однотактные умножители на больших интегральных схемах 6.4. Построение сдвигателей, дешифраторов, коммутаторов на больших интегральных схемах..............................305 6.5. Оптимизация структуры двумерных матричных инте- гральных схем............................................307 7. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ ЛОГИЧЕСКИХ И АРИФМЕТИЧЕСКИХ УСТРОЙСТВ И УЗЛОВ ЦВМ 7.1. Основы алгебры логики.............................. 312 7.2. Представление чисел с фиксированной запятой . . 315 7.3. Представление чисел с плавающей запятой . . 317 7.4. Точность представления чисел....................... 319 7.5. Элементы и узлы ЦВМ.......................... 322 7.6. Основные методы неускоренного сложения-вычитания . 325 7.7. Основные методы неускоренного умножения ... 336 7.8. Основные методы неускоренного деления .... 341 Список литературы ...................................... 348 Предметный указатель.................................... 356
МИХАИЛ АЛЕКСАНДРОВИЧ КАРЦЕВ ВЛАДИМИР АРКАДЬЕВИЧ БРИК ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ И СИНХРОННАЯ АРИФМЕТИКА Редактор Н, Д. Иванушко Художественный редактор Н. А. Игнатьев Художник О. В. Камаев Технический редактор Г. 3. Кузнецова Корректор О. И. Галанова ИБ № 377 Сдано в набор 17.10.80 Подписано в печать 26.03.81 Т-00800 Формат 84ХЮ81/1в Бумага книжно-журнальна * Гарнитура литературная Печать высока* Усл. печ. л. 18,9 Уч.-нзд. л. 19,58 Усл.-кр. отт. 18,9 Тираж 10 00Э экз. Изд. 19523 Зак. 1013 Цена 1 р. 20 к. Издательство «Радио и связь», Москва, Главпочтамт, а/я 693 Московская типография № 10 «Союзполиграфпрома» Государственного Комитета СССР по делам издательств, полиграфии и книжной торговли. Москва, М-114, Шлюзовая цаб., 1Q