Электроника
СБИС
Издательство«Мир>>
VLSI Electronics Microstructure Science Volume 14 VLSI Design
Norman G. Einspru...
24 downloads
431 Views
116MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Электроника
СБИС
Издательство«Мир>>
VLSI Electronics Microstructure Science Volume 14 VLSI Design
Norman G. Einspruch Edited by
Norman G. Einspruch College of Engineering University of Miami Coral Gables, Florida
1986 ACADEMIC
PRESS,
INC.
Harcourt Brace Jovanovich, Publishers Orlando Boston
San Diego London
N e w York
Sydney
Tokyo
Austin Toronto
Электроника СБИС Проектирование микроструктур Под редакцией Н. Айнспрука Перевод с английского Н. Л. Николаева и Я. Л. Теплицкого под редакцией д-ра техн. наук И. П. Норенкова
Москва «Мир» 1989
Б Б К 32.97 Э45 УДК 519
Авторы: Ганнетт Дж., Домич А., Катевенис М., Паттерсон Д., Пшибилски С., Секуин К-, Фостер М., Хеннесси Дж., Шербурн Р., мл.
Электроника СБИС. Проектирование микроструктур: Э45 Пер. с англ./Под ред. Н. Айнспрука. — М.: Мир, 1989. —• 256 е., ил. ISBN 5-03-000477-7 В коллективной монографии американских ученых рассматриваются архитектурные особенности СБИС-микропроцессоров, в частности таких высокоэффективных устройств, как микроЭВМ с сокращенными наборами команд (RISC). Значительное внимание уделяется методам проектирования структур СБИС, позволяющим существенно повысить надежность и выход годных изделий. Рассмотрены проблемы создания и применения кремниевых компиляторов — программных средств для автоматического преобразования описаний реализуемых функций в детальное представление топологии СБИС. Д л я специалистов по микроэлектронике, вычислительной технике, автоматизации проектирования электронных устройств, а также студентов старших курсов и аспирантов соответствующих специальностей.
Э
2302030300-206 041(01)-89
125-89
Редакция
I S B N 5-03-000477-7 (русск.) I S B N 0-12-234114-7 (англ.)
ББК 32.97
литературы по
электронике
1986 by Academic P r e s s Inc. перевод на русский язык, «Мир»,
От редактора перевода
Тенденция к росту степени интеграции микросхем, сохраняющаяся в микроэлектронике, привела к появлению сверхбольших интегральных схем (СБИС). С одной стороны, техника СБИС — это новые возможности создания сложных систем, с другой — увеличение трудностей проектирования. Предлагаемая вниманию читателей книга посвящена рассмотрению основных проблем проектирования процессоров в виде СБИС, начиная с методологии проектирования, принятия архитектурных проектных решений и кончая средствами проектирования. Освещаемые в книге вопросы отличаются новизной и слабо отражены в отечественной литературе. В то же время успех создания современных высокоэффективных ЭВМ и других видов радиоэлектронной аппаратуры в значительной мере определяется доступностью информации, связанной с накопленным положительным опытом проектирования СБИС. Именно такой опыт отражен в данной книге. По мере усложнения проектируемых объектов вопросам методологии проектирования придается все более важное значение. В случае СБИС уже достигнута степень интеграции 106 транзисторов и этот показатель продолжает быстро расти. Если при проектировании БИС решались задачи, относящиеся только к функционально-логическому, электрическому и топологическому иерархическим уровням, то проектирование СБИС нужно начинать с архитектурного уровня. Существенно возрастает взаимозависимость результатов проектирования на разных уровнях, повышается роль верификации проектных решений и одновременно увеличиваются трудности ее эффективной реализации. Это связано с размещением на одном кристалле как операционного, так и управляющего блоков, воплощающих алгоритмы параллельной и конвейерной обработки данных с микропрограммным или аппаратно реализуемым управлением. Появление СБИС сделало возможной реализацию супермини-ЭВМ на малом числе кристаллов. Однако простое переложение архитектуры существующих универсальных ЭВМ на несколько кристаллов новой машины не будет эффективным, поскольку вместо традиционных условий проектирования выдвигаются новые специфические требования к правильному распределению имеющихся ресурсов — площади,
возможностей рассеивания мощности — между процессорами, памятью, трактами связи и т. д. Учет особенностей 'СБИС привел к появлению архитектуры ЭВМ с сокращенной системой команд, получившей название RISC-архитектуры. Эта архитектура позволяет реализовать аппаратным способом те операции, которые вносят определяющий вклад в затраты времени, и тем самым уменьшить задержки. Остальные операции могут быть реализованы как композиция команд, вошедших в сокращенный список. Проблема создания процессоров с RISC-архитектурой включает в себя исследование состава команд и структур данных в обрабатываемых классах задач, выбор структуры памяти, согласованной со структурой операндов, организацию использования регистровой памяти. Наиболее трудной для решения проблемой проектирования СБИС считается проблема тестируемости. Проверка правильности схемы требуется на этапах и проектирования, и изготовления, и эксплуатации. Однако число выводов у корпуса интегральной микросхемы на несколько порядков величины меньше, чем число логических вентилей на кристалле СБИС внутри корпуса. Следовательно, условия доступа к различным частям схемы для обнаружения дефектов крайне ограничены. Именно невозможность проверки работоспособности СБИС делает практически неприемлемыми многие проекты схем, выполненные без достаточного учета требований контролепригодности. Существенный прогресс в решении этой проблемы достигнут благодаря разработке специальных способов проектирования контролепригодных и самотестирующихся схем. Введение дополнительных аппаратных средств для повышения контролепригодности хотя и приводит к снижению быстродействия и увеличению рассеиваемой мощности, является необходимым в практике проектирования и изготовления схем с высокой степенью интеграции. Наиболее существенным достижением последних лет в области средств проектирования БИС и СБИС стало появление кремниевых компиляторов. Кремниевая компиляция — автоматическое получение детального описания проекта СБИС по высокоуровневому описанию функций кристалла. Эффективность использования кремниевого компилятора существенно зависит от характера его входного языка. В развитых кремниевых компиляторах применяются языки описания алгоритмов или языки уровня регистровых передач. Возможно построение как универсальных, так и специализированных кремниевых компиляторов. Специализация позволяет приблизить характеристики автоматически синтези-
рованных СБИС к характеристикам кристаллов, спроектированных с участием опытных разработчиков в интерактивном режиме работы с ЭВМ. Создание и внедрение кремниевых компиляторов в практическую деятельность разработчиков — важный резерв сокращения сроков проектирования,, основной путь разработки специализированных процессоров для различных типов радиоэлектронной аппаратуры. Данная книга освещает состояние проблем методологии проектирования, разработки RISC-архитектур и способовповышения тестируемости СБИС, создания кремниевых компиляторов. Она написана на уровне, доступном для широкого круга разработчиков радиоэлектронной аппаратуры, полезна для специалистов, занимающихся созданием как собственно аппаратуры на СБИС, так и средств автоматизированного проектирования СБИС. И. П. Норенков
Предисловие
"Человеческая цивилизация преодолела рубеж второй промышленной революции. Первая промышленная революция, начало которой положило создание паровой машины, позволила человеку многократно увеличить свои физические возможности. Вторая промышленная революция, базой для которой служит полупроводниковая электроника, позволяет человеку многократно увеличить свои интеллектуальные возможности. Электроника СБИС (сверхбольших интегральных схем), последнее слово в области полупроводниковой электроники, представляет собой знаменательный пример применения современных научных знаний для удовлетворения требований новой техники и технологии. Настоящая серия книг публикуется в связи с тем, что сейчас явно ощущается потребность в развернутом описании состояния и перспектив электроники СБИС с прогнозированием будущих тенденций и представлением научной базы, обеспечивающей успешное развитие этой области. Книги настоящей серии предназначаются для научных работников и инженеров, которые хотели бы познакомиться с этой быстро развивающейся областью; для ученых, ведущих фундаментальные исследования и интересующихся проблемами физики и химии материалов и технологических процессов; для разработчиков электронной техники, которым необходимо знать основные принципы построения и ограничения, определяющие характеристики создаваемых ими микросхем; для системотехников-архитекторов, которым требуется организовать совместную работу СБИС, и для инженеров, которые будут применять СБИС при решении конкретных прикладных задач. Настоящая серия охватывает самые различные темы — от описания поведения материалов на микроскопическом уровне, скоростных характеристик приборов и видов технологических процессов, применяемых при изготовлении СБИС, до подробного изложения проблем использования СБИС для построения машин и систем. Каждый из томов серии состоит из ряда взаимосвязанных отдельных глав, каждую из которых готовили известные высококвалифицированные специалисты по данному вопросу. Главы написаны таким образом, что конкретные интересующие читателя темы можно изучать и осваивать, не обращаясь к другим томам серии.
1 Существует общее мнение, что фундаментальная наука, которая служит основой для разработки технологии ИС, в значительной степени отстала от требований времени и нуждается в притоке свежих сил и новых идей. Этот вопрос рассматривается в отчете Национального исследовательского совета (Национальная академия наук/Национальная инженерная академия) под названием «Научные, инженерные и технологические проблемы микроструктур». Мы надеемся, что настоящая серия книг станет основой и стимулом для развертывания дальнейших работ по физике и химии структур с субмикронными размерами и по использованию этих структур на благо человечества.
Глава 1 Методология проектирования процессорных СБИС* Дж. Л. Хеннесси (J. L. Hennessy) и С. Э. Пшибилски (S. A. Przybylski) Лаборатория вычислительных систем, факультет электротехники Станфордский университет, Станфорд, шт. Калифорния
I. Введение
Современная технология ИС дает возможность изготавливать кристаллы, содержащие сотни тысяч транзисторов. Проектировать системы подобного масштаба по-прежнему сложно. Архитектор системы сталкивается с проблемами, связанными с разбиением системы на части, с выработкой технических требований для этих составных частей, с написанием спецификаций для интерфейсов подсистем и их верификацией и с построением системы в целом. Благодаря высокому уровню технологии ИС сейчас можно изготавливать однокристальные процессоры, которые по своей сложности и функциональным возможностям сравнимы с самыми высокопроизводительными крупными компьютерами, построенными с использованием стандартных микросхем малой, средней и большой степени интеграции (МИС, СИС и БИС). Эти крупные компьютеры, такие, как Сгау-1, IBM-360/91 и CDC-7600, разрабатывались очень долго и вследствие этого имели очень высокую стоимость проектирования. Для микропроцессора, который характеризуется низкой ценой в сочетании с довольно малой длительностью жизненного цикла, столь большие расходы на проектирование очень трудно оправдать. Кроме того, технология ИС развивается так быстро, что длительные усилия по проектированию и достигнутая оптимальность схемы могут оказаться сведенными на нет из-за появления новой, более совершенной технологии. Использование СБИС как средства реализации замыслов разработчика обусловливает необходимость соблюдения нескольких основных правил. 1. Бездефектность — важнейшая задача проектирования. Устранение ошибок схемы кристалла сопряжено с серьезными трудностями и требует много времени. Немедленно про* Проектирование процессора M I P S , который используется в качестве примера в настоящей главе, осуществлялось при поддержке Управления перспективных исследований и разработок министерства обороны США ( D A R P A ) по статьям MDA903-79-C-680 и MDA903-83-C-0335.
верить правильность вносимых изменений тестированием невозможно, приходится ждать от нескольких недель до нескольких месяцев. Это вынуждает накапливать изменения для одновременного внесения в схему кристалла и настоятельно требует почти идеальной разработки. 2. Степень гибкости проектирования исключительно высока: разработчики определяют логическую организацию системы, ее деление на составные части, физическое размещение и даже детали индивидуальных транзисторов, задающих усилителей и логических вентилей. 3. Несмотря на такую гибкость, вряд ли возможно скомпенсировать на каком-либо одном уровне или этапе проектирования дефекты, допущенные на более высоких уровнях, Эти ограничения связаны как с принципиальными особенностями технологии (лимитирующими такие параметры, как размеры кристалла, мощность рассеяния и быстродействие) , так и с необходимостью избегать создания; дополнительных сложностей на более низких уровнях. При этом проблему быстродействия необходимо учитывать и решать на всех уровнях и этапах проектирования. В настоящей главе мы сосредоточим внимание на проектировании микропроцессоров общего назначения. Хотя конкретные компромиссные технические решения могут меняться, изложенные здесь концепции и методы непосредственно приложимы и к специализированным СБИС-процессорам. Поскольку для изготовления микропроцессоров широкого коммерческого применения основными сейчас являются МОП-технологии, здесь будут излагаться преимущественно методологии проектирования именно этих схем. Мы рассмотрим проблему проектирования СБИС-компьютера как четыре отдельных, хотя и тесно переплетающихся этапа: составление спецификации архитектуры, выбор логической организации процессора (логическое проектирование), физическое проектирование и электрическая (схемная) реализация. Спецификация архитектуры предполагает определение набора команд и поведения всех компонентов, видимых пользователю процессора. Здесь обязательно описываются регистровая структура, функциональные устройства и устройства памяти с учетом режимов адресации. Описываются также характер и связь с частными вариантами системы, а в некоторых архитектурах — и интерфейс ввода-вывода. Архитектура обычно не зависит от реализации — она не препятствует выбору той или иной конкретной технологии, хотя может быть гораздо более совместимой с каким-то одним» а не другим видом технологии.
Реализация архитектуры начинается с того, что прежде всего определяется логическая организация процессора. Взаимодействие функциональных устройств описывается в сочетании со структурой управления и потактовой временной диаграммой, определяющей последовательность операций, при помощи которых будет реализовываться каждый процесс в архитектуре. Здесь необходимо также детально определить иерархию и схему распределения памяти. Некоторые вопросы, решаемые на этом этапе проектирования, могут быть не связанными с архитектурой (например, использование кэш-памяти), а некоторые (такие, как схема распределения памяти) могут определяться архитектурой. При наличии всей этой информации можно будет с достаточно высокой точностью рассчитать скоростные характеристики процессора, выражающиеся количеством тактов (циклов частоты синхронизации) на команду. Физическое проектирование — это процесс разбиения всего центрального процессора (ЦП) и системы памяти на физические компоненты, из которых строится разрабатываемая машина: стойки, схемные платы и микросхемы. С появлением СБИС такой этап физической декомпозиции начинает играть еще более важную роль: высокая относительная стоимость перехода через границы кристаллов делает определение этих границ исключительно ответственной задачей. В рамках одной ИС функциональные блоки необходимо размещать таким образом, чтобы наиболее эффективно использовать дефицитную площадь кристалла, причем с учетом ограничений по межсоединениям, свойственных выбранной технологии реализации. К этапу физического проектирования мы относим также задачу декомпозиции функциональных блоков на реализующие их логические схемы. Под электрическим проектированием мы понимаем преобразование логических схем в электрические схемы с транзисторами и связанную с этим задачу определения топологии. Мы будем иметь дело главным образом с современными усовершенствованными методами электрического, схемного проектирования, чтобы добиваться высоких скоростных характеристик и успешно решать проблемы минимизации мощности рассеяния и занимаемой площади. В прошлом эти четыре этапа проектирования процессоров часто оказывались отделенными друг от друга. Влияние технологии реализации на логический и архитектурный уровни было минимальным. Аналогичным образом после определения схемы центрального процессора на уровне логических вентилей большинство высокоуровневых аспектов в дальнейшем, на этапах физического и детального электриче-
Рис. 1. Этапы процесса проектирования.
ского проектирования, просто игнорировались. Преимущество такой линейной декомпозиции заключалось в том, что процесс проектирования имел в значительной степени нисходящую, последовательную природу. Благодаря этому удавалось ограничить сложность всего процесса до такой степени, что им можно было сравнительно легко управлять. Группа разработчиков составлялась из отдельных подгрупп, которые работали самостоятельно над различными задачами и передавали результаты «вниз» по такой концептуальной цепочке. Появление МОП СБИС как жизнеспособной технологии реализации привело к существенному изменению, углублению и укреплению взаимосвязей между различными этапами проектирования. Некоторые взаимосвязи подобного рода иллюстрирует рис. 1. Если показанные здесь дополнительные связи «снизу вверх» с учетом соответствующих ограни-
чений и взаимозависимостей не организовать должным образом, то полученный в результате разработки компьютер не достигнет своего максимально возможного быстродействия. Комплексный подход к проектированию процессора предусматривает одновременную разработку: 1) архитектуры, 2) логической структуры, которая обеспечивает эффективное декодирование и выполнение набора команд архитектуры и которая хорошо отображается на кремнии, а также 3) временной диаграммы, тесно связывающей логическую структуру со схемотехникой (с известными заранее скоростными характеристиками), которая будет использоваться на предполагаемых критических путях. Благодаря параллельному продвижению различных этапов проектирования появляется возможность получить готовую схему, которая будет гораздо более эффективно использовать особенности конкретной технологии реализации и, следовательно, значительно превосходить схемы, проектируемые более примитивными способами. II. Методология архитектурного проектирования
СБИС-процессоры по своей архитектуре и логической организации во многих отношениях напоминают центральные процессоры современных вычислительных машин, реализуемые с применением стандартных микросхем (ТТЛ, ЭСЛ и т. д.). Поэтому методологии проектирования, связанные с оптимизацией и решением проблем сложности процессоров больших ЭВМ и СБИС-процессоров, также схожи. МОП-технология налагает некоторые дополнительные ограничения, которые подчеркивают взаимосвязь между архитектурой и реализацией. Это заставляет разработчика архитектуры более четко представлять себе последствия принимаемых им решений. Архитектуру компьютера следует оценивать по ее эффективности с точки зрения выполнения прикладных программ и по уровням скоростных характеристик, достижимых при различных способах реализации данной архитектуры. Для процессора общего назначения пригодность архитектуры как базы для выполнения прикладных программ определяется ее эффективностью поддержки языков высокогоуровня. Специализированный компьютер можно рассматривать как машину с архитектурой, ориентированной на ограниченный класс языков и прикладных программ. Например,.
•специализированный однокристальный компьютер для граических приложений, такой, как «Геометрическая машина» 1J, работает с одним конкретным входным языком, описывающим геометрические преобразования. Природа языка и необходимые скорости выполнения примитивов этого языка диктуются структурой прикладных задач. В других случаях в качестве языка программирования удобно использовать универсальный язык, однако прикладные программы, которые предполагается выполнять на этом процессоре, имеют различные частоты использования различных операций или накладывают дополнительные ограничения по скорости. К этой категории можно отнести, например, специализированный процессор сигналов: здесь вычислительные операции используются гораздо чаще, чем обычно, причем время для них является критическим фактором. Ниже мы обсудим проблемы, которые возникают при определении пригодности той или иной архитектуры как базы для эффективного выполнения программ, л то, каким образом архитектура влияет на логическую организацию процессора; в заключение мы дадим некоторые рекомендации, которые должны помочь в оценке эффективности архитектуры с точки зрения как выполнения прикладных программ, так и реализации с применением СБИС.
?
А. Архитектура как база для эффективного выполнения про-
грамм. Эффективность архитектуры необходимо оценивать с учетом как стоимости, так и скоростных характеристик, получаемых при различных реализациях этой архитектуры для программ определенных категорий. Эта оценка должна исходить из реалистических предположений относительно используемого языка программирования и класса решаемых прикладных задач. Поскольку большинство программ пишется на языках высокого уровня, испытания для сравнительной оценки скоростных характеристик должны производиться путем измерения количественных показателей именно для таких программ; испытания с использованием программ на языке ассемблера не слишком целесообразны, поскольку они фактически не отражают скоростных характеристик для языков высокого уровня. Чтобы оценить эффективность предлагаемой архитектуры •с точки зрения выполнения программ, написанных на языке высокого уровня, необходимо иметь компилятор языка высокого уровня для этой архитектуры. При этом качество и структура компилятора будут влиять на получаемые количественные показатели архитектуры. Например, в зависимости от того, предусматривает ли компилятор распределение
регистров или глобальную оптимизацию, может существенно меняться соотношение количества употребляемых команд («профили программ»). Некоторые разработчики архитектуры считают, что необходимо исключать или «нейтрализовать» влияние компилятора; обычно при этом используется некоторый примитивный компилятор. Такой подход несостоятелен по двум причинам. Во-первых, измерения на примитивном компиляторе не позволяют оценить корректность технических решений для условий, когда имеется более совершенный компилятор. Если, например, применяется компилятор, не содержащий средств распределения регистров, разработчик архитектуры может сделать вывод, что машина должна иметь лишь очень небольшое количество регистров — поскольку они недостаточно интенсивно используются. Во-вторых, менее очевидная причина заключается в том, что архитектура определяет простоту или сложность построения компиляторов. Чтобы эффективно использовать возможности некоторых архитектур, особенно со сложными и многовариантными командами, нужен хороший компилятор. Некоторые из подобных особенностей архитектуры не удается эффективно использовать или могут потребоваться методы компиляции, фактически неприемлемые из-за высокой стоимости компиляции. Без создания реального компилятора все эти факторы количественно оценить трудно. Благодаря правильному использованию компилятора можно определить рациональный подход к выбору тех или иных компромиссных решений при разработке набора команд процессора. Предположим, что базовая структура набора команд уже имеется. Эта структура определена с учетом требований принятых языков программирования, прикладных задач, проблем реализации и общего состояния техники компиляторов. В качестве исходного рубежа нужно взять соответствующий список операторов, некоторые режимы адресации и набор правил их комбинирования. После этого компилятор можно использовать как инструментальное средство для оценки различных аспектов архитектуры. Рассмотрим следующую ситуацию, которая вполне может возникнуть в процессе проектирования многих наборов команд. Для архитектуры предлагается ввести новый набор режимов адресации. Дополнительные режимы адресации потребуют увеличения длины командного слова с учетом расширенного формата представления операндов. Можно оценить целесообразность введения этих дополнительных режимов адресации для компилятора путем сравнения качества кодогенератора при наличии и при отсутствии подобных архитектурных возможностей. Чтобы произвести подобную
оценку, необходимы в первую очередь такие данные, как времена выполнения программ (выражающиеся количеством, команд) для альтернативных вариантов архитектуры; к числу дополнительных полезных данных относится частота использования новых режимов адресации и различие в динамической пропускной способности при выполнении команд. Эти дополнительные данные необходимы для подтвержденияосновного количественного показателя архитектуры (скорости выполнения, выражаемой количеством команд) и для понимания других следствий предлагаемых расширений набора команд. К аналогичной процедуре измерений можно прибегать при рассмотрении вопроса о добавлении или замене того или иного кода операции. В любом случае для. полной оценки предлагаемых расширений архитектуры необходимо производить расчеты дополнительных расходов на реализацию; эту проблему мы более подробно обсудим ниже. При разработке архитектуры недостаточно учитыватьтолько требования компилятора, поскольку аппаратура не может выполнять прикладные программы без операционной системы. Чтобы обеспечить максимальные функциональные возможности при достаточной эффективности работы, операционной системе нужна определенная архитектурная поддержка. Если необходимые средства в архитектуре отсутствуют, создатели операционной системы будут вынуждены) отказаться от реализации в ней некоторых функций уровня пользователя — иначе это повлечет за собой значительныепотери в скорости, из-за которых данная архитектура окажется неприемлемой. Некоторые разработчики считают, чтоархитектура должна предусматривать специальные средства; поддержки для определенных функций операционной системы. Подобные средства архитектуры должны подвергаться: точно таким же процедурам оценки, которые используются при анализе предлагаемых изменений набора команд. Естественно, что проводить подобные оценки гораздо труднее,, поскольку в них участвует и операционная система, а нетолько компилятор. Единственным приемлемым методом получения количественных данных, которые отражают влияние средств поддержки операционной системы, предназначаемых для включения в архитектуру, являются, по-видимому, испытания с использованием существующих операционных систем. Данные по работе операционной системы в совокупности с оценочными значениями времени выполнения программ операционной системы (в процентах от общеговремени выполнения) могут служить основой для определения потенциального выигрыша в скорости благодаря архи2—708
тектуре по сравнению с машинами, не имеющими подобных специальных средств архитектурной поддержки. Естественно, при оценке подобных средств мы должны также учитывать стоимость их реализации. Б. Архитектура и требования по реализации. Характер архи-
тектуры оказывает определяющее влияние на вид логической организации, необходимой для достижения заданных уровней быстродействия при реализации данной архитектуры. Аналогичным образом, имея ту или иную структуру для реализации, можно в широких пределах менять конкретные •средства поддержки различных архитектурных аспектов. Это особенно справедливо для случая, когда реализация осуществляется с использованием СБИС, — здесь взаимосвязи архитектуры и ее реализации наиболее явно выражены. Важное значение имеют три ключевых свойства технологии реализации, которые, как правило, выделяются при рассмотрении этих взаимосвязей. Это средние скорости переключения для логических вентилей, расходы на передачу данных и влияние переходов через границы кристаллов. В МОП-схемах более высокая плотность компоновки достигается за счет снижения быстродействия; это обусловливает целесообразность параллельных вычислений. Другими словами, в системе целесообразнее использовать много низкоскоростных компонентов вместо меньшего количества высокоскоростных компонентов. Такая исходная методология проектирования стала основной при разработке ряда самых разнообразных изделий, от систолических матриц [2] до кристалла тракта обработки данных для компьютера Micro VAX-I [3]. В случае систолических матриц индивидуальные процессоры могут быть довольно низкоскоростными, поскольку высокое общее быстродействие достигается благодаря использованию параллельно работающих конвейерных аппаратных модулей. Как правило, обмены и передачи данных обходятся дороже, чем вычисления. Поэтому архитектуры, которые требуют более крупномасштабных глобальных взаимодействий, будут существенно терять при реализации. Таким образом, разработчик архитектуры должен стремиться к тому, чтобы везде, где это только возможно, организовывать локальные вычисления и обмены данными. Переходы через границы кристаллов приводят к двум основным последствиям. Вопервых, они накладывают жесткие ограничения на пропускные способности при передачах данных внутри и вне кристалла. Во-вторых, они создают существенные различия в
задержках распространения сигналов на кристалле и вне кристалла. Такое разделение всех объектов системы на расположенные на кристалле и вне кристалла играет особенно важную роль. Разработчик должен использовать ресурсы кристалла для хранения глобальных данных, чтобы тем самым снижать требования по внекристальным обменам. Масштаб и сложность архитектуры могут вынудить разработчика произвести разбиение системы на составные части неоптимальным образом, что приведет к очень большим потерям в связи с обменами данными между кристаллами. Еще один фактор, который тесно связан как с архитектурой, так и с выбранной логической организацией, — это сложность проектируемой схемы. Сложность схемы влияет и на сроки проектирования, и на скоростные характеристики при любых средствах реализации, однако особенно важное значение этот фактор приобретает в случае СБИС, когда решать проблемы сложности гораздо труднее. Большие затраты на отладку и проверку вариантов схемы путем многократных итераций приводят к тому, что завершить проектирование сложных схем в приемлемые сроки исключительно трудно. Возможности достижения оптимальных скоростных характеристик также обычно ограничиваются, если базовая схема очень сложна. А если разработчик имеет ограниченные ресурсы для завершения проектирования сложной схемы, ему приходится мириться с неоптимальными скоростными характеристиками, лишь бы добиться работоспособности кристалла. Наиболее важным следствием этого факта с точки зрения проектирования является то, что ни одна дополнительная архитектурная возможность не обходится бесплатно. В лучшем случае ее введение усложняет схему, увеличивает время проектирования, а часто приводит также к снижению тактовой частоты, если не реальной скорости работы. Архитектура влияет на скоростные характеристики аппаратуры преимущественно на уровне логической организации, где архитектура предъявляет определенные требования. Менее заметно архитектура отражается на более низких уровнях реализации, на которых основное значение начинает приобретать технология и ее особенности. Технология играет важную роль как фактор, обусловливающий предпочтительный выбор одних организационных подходов и нежелательность других. Перед принятием тех или иных архитектурных решений полезно анализировать их с точки зрения реализации. Оценочное количество команд служит показателем архитектурной ценности предлагаемых расширений. На уровне реализации главным вопросом становится максимальная
тактовая частота, достижимая для обеих рассматриваемых архитектурных альтернатив. В совокупности количественные показатели архитектуры и реализации позволяют с достаточной степенью уверенности установить, относится ли данная особенность к архитектуре. Естественно, гораздо труднее определить стоимость реализации, поскольку обычно практически нецелесообразно включать в схему кристалла все возможные предлагаемые средства. Лучше всего подобные расходы способны, по-видимому, оценивать опытные разработчики. Важно правильно учитывать взаимозависимости между особенностями операционной системы и набором команд проектируемого микропроцессора. Эти взаимозависимости могут приводить к отказу от определенных методов реализации или к снижению быстродействия по сравнению с достижимым в других условиях. Классическим примером подобных взаимозависимостей может служить обработка ситуаций, когда в системе подкачки страниц по требованию нужная страница в памяти отсутствует. Поддержка такого режима в операционной системе может оказаться практически невозможной ('или в лучшем случае обойтись очень дорого), если другие архитектурные решения не будут ориентированы на реализацию этого режима. Так, весьма трудно и дорого обходится решение проблемы команд, которые производят запись в те или иные блоки процессора до гарантированного завершения данной команды (если только не отсутствует нужная страница в основной памяти). Разработчик архитектуры должен хорошо представлять себе взаимозависимость подобных средств и факторов на уровне как архитектуры, так и реализации. Очевидно, что главная цель реализации — создание наиболее высокоскоростной аппаратуры для данной архитектуры; это можно сформулировать в виде двух правил. 1. Необходимо добиваться минимальной длительности цикла тактовой частоты для системы. Здесь подразумевается как уменьшение накладных затрат времени на выполнение команд, так и организация аппаратных средств таким образом, чтобы свести к минимуму задержки в каждом такте. 2. Необходимо добиваться минимального количества тактов, затрачиваемых на выполнение каждой команды. Такая минимизация должна осуществляться на основе прогнозируемой частоты употребления команд в программах. Первое правило — это по сути цель архитектуры; отметим, что оценка архитектурных «усовершенствований» должна учитывать их влияние на скоростные характеристики
остальных компонентов данной архитектуры. Второе правило может потребовать повышения быстродействия наиболее часто используемых компонентов даже за счет снижения скоростных характеристик некоторых других составных частей. Необходимость такого компромисса может привести также к уменьшению значимости редко используемого усовершенствованного средства из-за снижения его скорости. Этот процесс оценки и выбора тех или иных решений является по сути процессом итеративной настройки. Осознание необходимости технических компромиссов такого рода вместе с тем фактом, что усложнение архитектуры обусловливает дополнительные накладные расходы, привело к появлению архитектур с сокращенным (или упрощенным) набором команд [4, 5]. В подобных RISC-архитектурах исключаются команды, встречающиеся в программах достаточно редко, причем эти сложные команды строятся как последовательности более простых команд. Благодаря этому накладные расходы на команду удается существенно уменьшить, так что инженеру при реализации архитектуры не приходится по-разному относиться к различным командам. И действительно, в большинстве машин с упрощенными наборами команд для разработчиков аппаратуры и компиляторов исключаются сложные компромиссные технические решения, поскольку команды выполняются, как правило, за один такт. Простой набор команд обеспечивает возможность повышения рабочей тактовой частоты, а однотактное выполнение команд упрощает управление машиной. А упрощение управления дает возможность в конкретной машине легче реализовать потенциальные преимущества параллелизма путем конвейеризации [6] или вводить дополнительные средства, которые явно окупаются при реализации, примером чему могут служить регистровые окна RISCархитектуры [7]. III. Методология организационного проектирования
Взаимосвязь между архитектурой процессора и его логической организацией всегда оказывала большое влияние на технико-экономические показатели (соотношение цены и скоростных характеристик), достижимые для архитектуры. В случае СБИС это влияние распространяется вплоть до нижних уровней реализации. Мы проиллюстрируем некоторые из компромиссных технических решений и методы их оценки на примерах, относящихся к процессору MIPS. Хотя эти примеры специфичны для данного процессора, проблемы, которые они иллюстрируют, являются общими для
большинства универсальных СБИС-процессоров и многих, процессоров специального назначения. Многие из технических решений, используемых в обыч-! ных процессорах, применимы и в СБИС-процессорах. Орга-' низация тракта обработки данных (операционной частипроцессора) должна решить ряд вопросов, не связанных по> сути с техникой СБИС; но использование СБИС для реализации архитектуры определяет некоторые компромиссныетехнические решения, причем ограниченная площадь кремниевого кристалла может даже исключать некоторые альтернативы. При проектировании тракта обработки данных, необходимо принимать некоторые важные структурные решения, в том числе по следующим вопросам: 1. Сколько шин должен иметь тракт обработки данных? 2. Какие функциональные блоки должен он содержать?' Нужен ли многорегистровый циклический сдвигатель или подойдет простой однобитовый сдвигатель? 3. Нужны ли специальные средства для выполнения операций умножения и деления целых чисел и чисел с плавающей точкой? 4. Какие выбрать времена работы для блоков тракта* обработки данных? Времена доступа и коэффициенты использования должны соответствовать структуре конвейера. Структура конвейера может также определять требования по длительности цикла и по задержкам для компонентов; тракта обработки данных. 5. Каким образом организовать регистровый блок: с использованием шины или как запоминающее устройство произвольной выборки (ЗУПВ)? Сколько должно быть портов?' 6. Какого типа арифметико-логическое устройство (АЛУ) необходимо? Будет ли оно укладываться в предполагаемуюфизическую компоновку кристалла? Схема тракта обработки данных в значительной степени1 определяется ограничениями, накладываемыми общей организацией системы и физической компоновкой кристалла. От исходных принципов, принятых для тракта обработки данных, практически зависит временная диаграмма основного' цикла машины. Например, применение в системе двух или трех шин при работе с регистрами обусловит выполнениеопераций обратной записи (обратного копирования) немедленно или с задержкой; в случае обратной записи с задержкой могут потребоваться в свою очередь такие структурныерешения, как обходные пути передачи для сохранения скоростных характеристик. Проблемы выбора структуры и реализации трактов обработки данных обсуждаются в работах, посвященных RISC-процессору Университета Берклю
{8—11], MIPS-процессору [12, 13] и компьютеру Micro VAX-I [3]. Схема тракта обработки данных является важным, но в достаточной степени простым компонентом общей структуры СБИС. Гораздо более сложную проблему часто представляет организация и реализация основного машинного цикла и управления. Именно функции управления являются самым критическим моментом в проектировании высокоскоростных СБИС-процессоров. Сложность и эффективность •функций управления связаны с тем, что, например, в высокоскоростном МОП-процессоре для повышения быстродействия необходимо использовать методы логической организации довольно высокого уровня. Ниже мы рассмотрим роль конвейеризации, наиболее широко распространенного способа повышения пропускной способности машины; мы увидим, что сложность реализации конвейерной машины определяется преимущественно архитектурой. При применении конвейерной структуры узким местом становится выборка и интерпретация команд. Для интерпретации наборов команд используются, как правило, два метода — микропрограммная и аппаратная реализация. Мы рассмотрим относительные достоинства и недостатки обоих методов и проанализируем, каким образом выбор того или иного подхода отражается на архитектуре, схеме и топологии кристалла. А. Конвейеризация. Классическим методом повышения быстродействия процессора в конкретной реализации является конвейеризация. Главное достоинство конвейеризации заключается в том, что она дает возможность повысить пропускную способность в d раз, где d — так называемая глубина конвейера: если максимальная возможная средняя скорость выполнения операций есть г, то конвейеризация глубиной d обеспечивает в идеальном случае среднюю скорость выполнения, равную rd. Поскольку возможная скорость выполнения отдельных операций ограниченна, подобный подход служит отличным средством повышения быстродействия для МОП-схем. Глубина конвейера — это множитель идеальной формулы увеличения быстродействия. На практике такой полный выигрыш в быстродействии недостижим по нескольким причинам. Во-первых, эта формула не учитывает задержки, которые возникают в случае, когда данные, необходимые для выполнения текущей команды, еще не подготовлены предыдущей командой, находящейся на обработке в конвейере. Во-вторых, еще более существенные задержки возникают, когда прохождение команд по конвейеру прерывается из-за
передач управления. Передача управления требует, чтобы процессор вычислил исполнительный адрес ветвления и произвел упреждающую выборку соответствующей команды; а сделать это практически невозможно без задержки конвейера по меньшей мере на один такт. Проблема усложняется для условных передач управления, которые требуют анализа условия, а также вычисления целевого адреса. В-третьих, сложности управления конвейером и обработки исключительных ситуаций, нарушающих обычное прохождение команд по конвейеру, требуют добавления дополнительных средств к основной логике управления конвейером, что приводит к снижению возможной скорости выполнения операций на каждой ступени конвейера. Чтобы максимально повысить скорость работы, разработчик может пойти на увеличение количества ступеней (тактов) конвейера на команду. При этом возникают две серьезные проблемы. Во-первых, не все команды будут выполняться за одно и то же число тактов конвейера. Многие команды, в частности простые, будут лучше всего выполняться при использовании конвейеров, содержащих две, три или максимум четыре ступени. Поэтому конвейер глубиной п будет работать вхолостую в течение периода, соответствующего разности между п и средним количеством тактов, затрачиваемых на команду. Другими словами, коэффициентповышения быстродействия благодаря конвейеризации определяется количеством активных ступеней на среднюю команду, а не просто глубиной конвейера. На этом основании мы могли бы сделать вывод, что гораздо более эффективными будут более сложные команды, использующие большее число ступеней конвейера. В то же время это потенциальное преимущество может оказаться сведенным на нет из-за нескольких других проблем: смесей команд, частоты ветвлений, готовности или неготовности операндов и особенностей реализации, связанных с определением длительности такта конвейера. В смесях команд доминирующую роль играют простые команды. Измерения для вычислительных машин типаVAX показали, что наиболее часто в программах встречаются простые команды пересылки и команды АЛУ с использованием регистров и простых режимов адресации памяти. Выполнение этих команд требует обычно лишь небольшого количества ступеней конвейеров. Таким образом, в случае увеличения длины конвейера значительная доля тактов будет тратиться вхолостую. Частота ветвлений в компилированном коде ограничивает целесообразную длину конвейера, поскольку она определяет
среднее количество команд, которые будут выполняться, прежде чем придется очищать и перезагружать конвейер. Это количество зависит от набора команд. Измерения для компьютера VAX, которые провел Кларк [14], показали, что между каждыми двумя состоявшимися ветвлениями выполняются в среднем три команды; измерения для архитектуры Паскаль-машины Adept [15] дали даже более короткие значения отрезков между ветвлениями. Команды ветвления, которые не приводят к фактической передаче управления, могут также вызывать задержку в конвейере, поскольку команды, следующие за ветвлением, не могут менять состояние машины, прежде чем проанализировано условие ветвления, если только не предусматривается возможность аннулирования подобных изменений, когда фактическая передача управления не происходит. Аналогичные измерения для таких машин с более простыми архитектурами, как MIPS и IBM-801, показали, что команды ветвления составляют 15—20% динамической смеси команд. Если учесть уровни наборов команд, то показатели для компьютеров VAX и машин с более простой архитектурой по сути эквивалентны. Это важный момент; измеренная таким образом частота ветвлений будет отражать частоту ветвлений в программах на исходном языке. Архитектурные аномалии в некоторых случаях будут приводить к увеличению частоты ветвлений, однако количество операций (а не команд) между ветвлениями, как правило, не зависит от набора команд. Это число, часто называемое длиной отрезка, и возможность в конвейерном режиме выполнять индивидуальные команды должны определять оптимальный выбор глубины конвейера. Чтобы увеличить глубину конвейеризации для заданной смеси команд, разработчик должен предусматривать меньший объем работы для каждой ступени конвейера. Это приводит к интересным последствиям с точки зрения реализации; наиболее важным является тот факт, что приходится уменьшать время, отводимое на передачу информации состояния между ступенями конвейера. Эта информация необходима для того, чтобы определять, можно ли конвейеру продолжать движение вперед; как правило, это информация о текущем состоянии машины, о возникновении тех или иных особых ситуаций и о взаимозависимостях между командами. Чтобы добиться сокращения такта конвейера, накладные расходы на передачу этой информации должны составлять постоянный процент длительности такта конвейера. Другими словами, если мы сокращаем такт, мы должны сократить и время на формирование, передачу и использование этой информации. В вы-
сокопроизводительных машинах применяются такие методы,, как задержанный выбор (см. ниже), которые помогают несколько смягчить подобные жесткие временные ограничения. В случае СБИС ограничивающим фактором часто является способность передавать эту глобальную информацию состояния. В связи с этим многие СБИС-процессоры имеют такты конвейера большей длительности с большим объемом работ на ступень. Высокопроизводительные крупные компьютеры,, такие, как суперкомпьютер Сгау-1, часто используют короткие конвейеры с большим объемом параллельной аппаратуры для настройки и выбора и высокоскоростными глобальными средствами связи. Другие проблемы, такие как распределение сигналов синхронизации и управления, также обусловливают использование тактов конвейера большей длительности в СБИС-процессорах. Таким образом, если имеются данные эмпирических динамических измерений для конкретного набора команд, можно вычислить эффективность конвейера длины d по формуле (d/ra)—fbCb—id—h, где га — время на ступень конвейера [это время почти постоянно для конвейеров длиной три или четыре (обычно это наиболее распространенные длины для СБИС-процессоров); оно уменьшается для конвейеров длиной два или при отсутствии конвейеризации (d= 1); значение Га растет в случае, когда конвейеры имеют длину пять или более]; /ь — частота ветвлений; Сь — потери на ветвлениях; id —среднее число холостых тактов конвейера на команду и h — прочие потери в работе конвейера из-за отсутствия операндов и т. д. Величина h учитывает и некоторые другие приостановки конвейера. Эти приостановки в обычном случае происходят по следующим причинам: 1. Отсутствие операндов из-за их неготовности или задержек на доступ к памяти. Задержки на доступ к памяти могут возникать в связи с отсутствием данных в кэш-памяти, с ошибками буфера преобразования адресов и с неготовностью памяти. 2. Приостановки на запись, возникающие в случае, когда буфер полный и делается попытка выполнить операцию записи в память. В СБИС-процессорах с простой архитектурой реализуются новые способы управления конвейером и делается попытка повысить коэффициент использования конвейера путем уменьшения затрат на ветвления. В процессорах с архитектурой RISC и MIPS используются только отложенные ветвления; таким образом, при команде ветвления конвейер приостанавливается только в случае, когда компилятор не может найти полезные команды для выполнения во время тактов, необхо-
димых для определения адреса ветвления, анализа условия ветвления и упреждающей выборки целевой команды, если лри ветвлении происходит фактическая передача управления. Измерения говорят о том, что эти задержки при ветвлениях в 50% случаев можно эффективно использовать. В крупных компьютерах применяется альтернативный метод — прогнозирование ветвлений. Если удастся точно предсказать, будет ли производиться фактическая передача управления при ветвлении, можно будет значительно снизить потери в работе конвейера при ветвлениях. Такие простые методы, как фиксация результата конкретного ветвления при последнем выполнении этой команды, позволяют обеспечить точное прогнозирование в 90% случаев и более. Б. Интерпретация команд. Существуют два основных метода интерпретации набора команд: микропрограммирование и аппаратно-реализованное управление. Главная черта, различающая эти методы, — наличие или отсутствие микропрограммного счетчика и памяти микропрограмм, которая занимает значительную часть площади кристалла. В случае реализации без памяти микропрограммы и контроллера последовательности будет использоваться чисто аппаратное управление и большинство команд будет выполняться за один проход через конвейер. На компоновочных планах кристаллов, приводимых в следующем разделе, видно, что в архитектурах с более сложными наборами команд значительную часть площади кристалла занимает память микропрограмм, примерами тому могут служить микропроцессоры 68000 фирмы Motorola 16 000 фирмы National и 80286 фирмы Intel. В кристаллах трактов обработки данных компьютера Micro VAX-1 и в RISC-микропроцессоре практически нет управляющей памяти, поскольку команды, которые они реализуют, весьма близки к уровню операций, реализуемых трактом обработки данных. Естественно, поскольку Micro VAX-I реализует архитектуру семейства VAX, здесь используется большой объем внекристального микрокода. Кристалл MIPS представляет некий промежуточный подход, и мы обсудим схему его блока управления ниже. При выборе конвейерной структуры быстродействие определяется преимущественно конкретной реализацией блока команд. Одна из задач конвейеризации — как можно ближе подойти к достижению главной цели, выполнять по одной команде в каждом такте частоты синхронизации. Для большинства команд этого можно добиться в исполнительном устройстве машины. Команды, требующие длительного времени выполнения, например операции с плавающей точкой,
во многих случаях можно эффективно конвейеризировать в исполнительном устройстве. Хотя для выполнения таких длинных сложных операций требуется много тактов, конвейеризация в устройстве команд в сочетании с малой частотой употребления таких сложных команд в сравнении с более простыми делает их влияние на среднее количество тактов на команду не слишком существенным. Наиболее узким местом общего процесса интерпретации команд является устройство выборки и дешифрации команд. Использование сложных команд переменной длины обходится гораздо дороже по реализации выборки и дешифрации; это весьма серьезно по двум причинам. Во-первых, это не позволяет организовать эффективную конвейеризацию. Наборы команд высокого уровня характеризуются очень короткими отрезками между ветвлениями (вследствие высокоуровневой природы команд). В связи с этим процессор должен иметь число тактов конвейера, затрачиваемых на выборку и дешифрацию команд, как можно более близкое к единице. Если для выполнения этих функций отвести большее число тактов, то процессор будет часто терять такты вхолостую. Отметим, что такие потери будут наблюдаться и при упреждающей выборке, и при дешифрации команд; обе фазы становятся более сложными в случае команд произвольной длины. Во-вторых, большинство выполняемых команд — это все же простые команды. В случае компьютера VAX самыми употребительными командами являются пересылки (обычно между регистром и ячейкой памяти) и простые операции АЛУ. А наиболее часто используемыми режимами адресации являются «регистровый» и «регистровый с байтовым смещением». Таким образом, затраты на выборку и дешифрацию могут во многих случаях быть такими же или даже более высокими, чем затраты на выполнение команд. Сложности дешифрации команд могут привести также к снижению эффективности и для простых, коротких операций. Например, на выполнение операций типа «регистр-регистр» в компьютере VAX-11/780 затрачиваются два такта, причем половина этого времени уходит на выборку и дешифрацию даже для> очень простых команд. А в процессоре MIPS на выборку и дешифрацию команд затрачивается в среднем приблизительно треть времени выполнения; аналогичные доли общего цикла отводятся на эти цели и в процессорах RISC и 801. Устройство управления процессора MIPS представляет интересный промежуточный вариант между микропрограммным блоком (с большим ПЗУ для хранения микропрограмм), применяемым в большинстве коммерческих процессоров, и по
существу отсутствующей секцией управления RISC-микропроцессоров. Устройство управления MIPS-процессора состоит из двух отдельных частей: дешифратора команд IDU и главного конвейерного контроллера МРС. Дешифратор команд выполняет исключительно функции декодирования команд. Регистр команд является для него входом, а на выход он выдает набор сигналов управления, образующих слово горизонтального микроуправления для тракта обработки данных. Некоторые из этих сигналов управления остаются закодированными и в дальнейшем декодируются при помощи программируемых логических матриц (ПЛМ) и простых дешифраторов, расположенных вдоль тракта обработки данных. Схема дешифратора команд в существенной степени определяется структурой набора команд. В RISC-архитектуре команды кодируются достаточно свободно, а это означает, что при декодировании не возникает особых сложностей. В компьютерах VAX на дешифрацию команд затрачивается много тактов, причем для каждого операнда декодирование идет отдельно. В процессоре MIPS дешифрация команд производится в параллельном режиме за один такт частоты синхронизации, однако для этого приходится использовать несколько параллельно включенных ПЛМ. В схему дешифратора команд входят три ПЛМ, при помощи которых осуществляется декодирование трех основных категорий команд: MIPS-процессора. При этом индивидуальные ПЛМ реализуют следующие функции: 1. ПЛМ загрузки/запоминания/ветвления декодирует команды загрузки, запоминания и ветвления. 2. ПЛМ АЛУ декодирует команды арифметико-логического устройства. 3. ПЛМ класса команд определяет, к какому классу относится данная команда. Все три ПЛМ работают параллельно, причем выходной сигнал ПЛМ класса команд используется для коммутациивыхода одной из двух других ПЛМ дешифратора команд на фактические линии управления. Такой способ отложенного выбора играет особенно важную роль для высокопроизводительных машин; он широко используется также в блоке МРС устройства управления. Следует отметить, что этот подход: в случае широкого набора команд был бы невозможен, поскольку количество различных комбинаций линий управления увеличилось бы до неприемлемо большого уровня. При простом наборе команд дешифрацию команд можно* осуществлять за один такт без учета состояний, в то время) как для обеспечения работы конвейера и управления процес-
сором при возникновении таких непредсказуемых событий, вызывающих значительное изменение состояний процессора, как прерывания и отсутствие нужной страницы, необходима микромашина, учитывающая многие возможные состояния. Однако подобная микромашина не принимает непосредственного участия в декодировании или выполнении команд, если не считать того, что она диктует последовательность шагов конвейера. В более сложной архитектуре структура микромашины должна обеспечивать как соблюдение последовательности команд, так и обработку исключительных ситуаций. Каскадное соединение логических схем, необходимых для декодирования сложной команды, приводит к увеличению времени декодирования. Поскольку декодирование обычно производится при помощи программируемых логических матриц, постоянных запоминающих устройств или аналогичных лрограммируемых устройств, возможно возникновение значительных задержек из-за взаимодействия между такими устройствами и при прохождении сигналов в логических схемах устройств, которые сами являются, как правило, тактированными. Поэтому в таких процессорах, как MIPS, взаимодействие между двумя половинами устройства управления ограничивается приблизительно десятком управляющих линий, при помощи которых определяется появление команд типа TRAP («Ловушка»), отражающихся на общем состоянии машины. Архитектура набора команд влияет на схему дешифратора команд и в значительной степени определяет структуру главного устройства управления. В процессоре MIPS главный конвейерный контроллер МРС отвечает за координацию основных действий процессора, в том числе за инициирование нормальных командных циклов процессора при обычных условиях и за обработку исключительных ситуаций (отсутствие нужной страницы в основной памяти или в кэш-памяти, прерывания, внутренние ошибки и т. д.), когда они возникают. Наиболее сложным моментом этой задачи является обработка исключительных ситуаций, которые требуют вмешательства операционной системы, поскольку это, как правило, вызывает необходимость прекратить выполнение нормального •потока команд, запомнить текущее состояние выполнения и передать управление коду супервизорного уровня, чтобы «упрятать» состояние программы пользователя и начать обработку ошибки. Даже в компьютерах простых архитектур контроллер МРС сразу становится центральным элементом, работа которого в значительной мере критична по времени. Это связано с тем, что многие события, требующие, чтобы контроллер .МРС менял состояние процессора, прекращая выполнение
команд или откладывая операции записи для выполняющихся команд, происходят в конце машинного цикла. Речь идет о таких событиях, как, например, арифметическое переполнение и отсутствие нужной страницы в основной памяти, когда приходится, как правило, почти сразу прекращать выполнение нормальной последовательности команд. Архитектура может упростить решение некоторых из подобных проблем, предусматривая возможность организации выполнения команд таким образом, чтобы их можно было без нежелательных последствий прерывать практически в любой момент, почти до конца цикла выполнения. Здесь главное в том,, что операции записи в регистры откладываются до конца выполнения команды. Даже при таком подходе при проектировании контроллера МРС будут возникать серьезные проблемы: как правило, несколько битов важной информации придется передавать и обрабатывать в большинстве схем кристалла, поскольку эти биты участвуют в выборе режимов МРС. В случае процессора MIPS из-за таких прибывающих с задержкой сигналов потребовалось вместо одной ПЛМ. контроллера МРС использовать ПЛМ, окруженную набором произвольных логических схем и мультиплексоров. Как мы видим, сложность схемы устройства управления быстро растет, когда разработчику приходится для достижения целевых скоростных характеристик применять такиеструктурные решения, как конвейеризация. Подобные решения находят отражение на всех схемных и архитектурных уровнях. На уровне системы команд сложность и недостаточное внимание к конвейеризации значительно увеличивают трудности обеспечения эффективного управления конвейерным режимом. Это в свою очередь приводит к снижению быстродействия, поскольку замедляется выполнение самых: коротких по времени операций в устройстве управления. Структура набора команд влияет также на организацию машины тем, что она определяет по сути вид необходимой логики выборки и дешифрации команд. Для сложных команд (переменной длины) потребуется управление микропрограммного типа, поэтому для достижения высокого быстродействия разработчику приходится усложнять или удлинять конвейер. Подобные изменения структуры конвейера затрудняют управление им и вызывают другие подобные эффекты (например, увеличивают накладные расходы при ветвлениях), которые могут существенно уменьшить целесообразность реализации таких решений. Построение тракта обработки данных такжеопределяется в значительной степени структурой конвейера. Сочетания перекрывающихся конвейерных операций определяют такие ключевые особенности организации тракта обра-
ботки данных, как использование шины, доступ к регистровому блоку и относительные скорости выполнения операций АЛУ и других операций тракта обработки данных (таких, >хак доступ к регистрам и взаимодействие с шиной). Правда, некоторые проблемы взаимодействия обычно удается решить •благодаря применению специализированных микросхем, однако сложность набора команд всегда будет сказываться как на сроках проектирования, так и на достигаемых временных характеристиках. IV. Методология физического проектирования
Процесс физического проектирования заключается в том, чтобы преобразовать чисто логическое описание функциональных блоков и их межсоединений (организацию процессора) в представления уровня логических вентилей и подробный компоновочный план кристалла. Наиболее ответственные задачи физического проектирования связаны с распределением имеющейся площади кремниевого кристалла и мощности рассеяния между различными функциональными блоками. Как и для других задач проектирования, для физического проектирования исходной основой служат представления более высокого уровня абстракции, т. е. выбранная организация и архитектура, причем с учетом практических ограничений и требований реальной топологии. В настоящем разделе мы рассмотрим механизм и цели подобного преобразования и ограничения, накладываемые МОП-технологиями. Главная проблема процесса отображения организации и архитектуры процессора на топологию кристалла состоит в том, чтобы свести к минимуму количество глобальных связей. Длинные проводники занимают дефицитную площадь кристалла и приводят к снижению скорости взаимодействия между блоками (из-за больших емкостных нагрузок). Эти проблемы являются особенно острыми для МОП-технологии, тде для прокладки глобальных связей имеется малое число слоев металлизации. Цель физического проектирования заключается в нахождении такого планарного отображения архитектуры, при котором количество соединений между блоками минимально. Решение этой задачи осложняется тем, что начальные оценки размеров различных функциональных блоков, как правило, недостоверны. Весьма компактный компоновочный план кристалла, созданный, однако, исходя из неправильной оценки размера ПЗУ микропрограмм, может существенно измениться с расширением трассировочных каналов, если окажется, что это ПЗУ должно быть вдвое большие. Таким образом, разработчик должен учитывать чувстви-
тельность конкретной конфигурации функциональных блоков к изменениям размеров этих блоков. Во многих случаях размеры лишь небольшого количества блоков необходимо считать неопределенными, т. е. с высокой вероятностью подверженными изменениям. ПЗУ, ПЛМ и управляющая логика в процессе отработки схемы, как правило, разрастаются, в то время как модули тракта обработки данных, размер микрокомандного слова и число регистров к моменту начала детального физического проектирования обычно уже четко зафиксированы. Таким образом, оптимальная организация кристалла позволяет большинство пар взаимодействующих функциональных блоков размещать вплотную друг к другу, с общими границами, и при этом обладает достаточной гибкостью, чтобы избежать коренной переработки из-за отличия окончательных размеров блоков от первоначальных оценок. Тесное размещение взаимодействующих блоков играет особенно важную роль для тех элементов схемы, которые, как ожидается, будут располагаться на критических путях кристалла. К числу других ограничений, которые необходимо учитывать при физическом проектировании, относятся геометрические параметры кристалла, размер необходимых трассировочных каналов и равномерное распределение контактов ввода-вывода по периметру. Процесс физического проектирования является в принципе иерархическим. После завершения высокоуровневого проектирования кристалла в целом этот процесс повторяется для каждого функционального блока. Подблоки, из которых состоят основные функциональные блоки, необходимо рассчитать, разместить и в свою очередь разделить на элементы следующего уровня и так вплоть до уровня логических вентилей. Однако этот процесс не является прямолинейно нисходящим. Это процесс итеративного приближения к оптимуму с многократными одновременными переходами сверху вниз и снизу вверх. Начальные оценки размеров и мощности рассеяния базируются на исходных топологиях ключевых мультиплексируемых элементов с резервированием дополнительной площади для размещения внутренних соединений и логики. Таким образом осуществляется частичная обратная связь нижних и верхних уровней иерархии. После выбора первоначального варианта относительного размещения и ориентации функциональных блоков самого верхнего уровня иерархии мы получаем приблизительное расположение портов ввода-вывода, которые используются как исходное ограничение для размещения и ориентации подблоков. Когда в процессе такой нисходящей декомпозиции выясняется, что внутренняя струк3—708
тура некоторого критического подблока оказывается излишне сложной и в конечном итоге приведет либо к значительному ухудшению скоростных характеристик, либо к увеличению требуемой площади кристалла, начинается итеративное совершенствование схемы и топологии. Для выхода из подобных ситуаций обычно приходится добиваться стройности и рациональности структуры в одной части кристалла за счет другой секции, где неупорядоченность и нерегулярность, в большей степени допустимы. Для процессов физического, логического и электрического' проектирования важную роль играют интерфейсы между функциональными блоками, выбираемые на самом верхнем уровне иерархической структуры. Модули, схемные платы и кристаллы образуют естественные границы, по которым крупные схемы могут разделяться на удобные для работы отдельные компоненты. Поскольку количество транзисторов на кристалле сейчас резко увеличилось и превысило 100 000г очевидной стала также необходимость четко устанавливать и определять внутренние интерфейсы кристаллов. В описаниях этих внутренних интерфейсов в дополнение к обычной семантической и временной информации должна содержаться также информация о топологических и электрических параметрах. Таким образом, одной из задач процесса начального физического проектирования является выбор подобных границ и определение механизмов, гарантирующих их непротиворечивость и совместимость на всех уровнях. Рис. 2—6 показывают, что на практике разработчики обычно разбивают процессор на секцию тракта обработки данных и секцию управления. Процессы физического проектирования для этих двух видов схем совершенно различны по характеру. А. Проектирование трактов обработки данных. Если количе-
ство блоков тракта обработки данных и общая структура их межсоединений определены при выборе организации процесса в целом, то главными вопросами физического проектирования тракта обработки данных становится линейное упорядочение функциональных блоков и шаг расположения двоичных разрядов каждого функционального блока. Линейное упорядочение имеет важное значение потому, что максимальное количество шин в какой-либо одной точке с большой вероятностью будет определять шаг для всего тракта обработки данных, а увеличение расстояния между источниками и потребителями сигналов по критическим путям будет увеличивать длительность такта машины. Наиболее распространенный стратегический подход состоит в том;
б Главный контроллер конвейерный (МРС)
Дешифратор команд
Деишсрраторы микропрограммных слов Управляющие блоки ПрограммМногоре метро- Регистро- ный счетчик и преобВый цик- вый АЛУ лический блок разователь адресов сдвига тель
Рис. 2. Микропроцессор
M I P S . Микрофотография план кристалла ( б ) .
(а)
и компоновочный
,
б
СдВигатель
Регистровый блок
Мультиплексор и промежуточные регистры
1 1 Meuiucppamop команд и управляющие блonи
ПС
Рис. 3. Микропроцессор R I S C II. Микрофотография (о) и компоновочный) план кристалла ( б ) . (С любезного разрешения Манолиса Катевениса.)
чтобы разместить основные функциональные блоки (АЛУ и многорегистровый циклический сдвигатель) на одной стороне, интерфейс памяти на другой стороне, а регистровый блок в середине кристалла. Именно так сделано в микропроцессорах MIPS [13] (рис. 2) и НР9000 [16]. Другой стратегический принцип предусматривает размещение регистрового блока на одной стороне кристалла. Это особенно целесообразно' в случае, если такой блок имеет необычно большой размер, как, например, в RISC-процессорах [8] (рис. 3). Во многих случаях удобно размещать схемы связи с памятью по обе стороны тракта обработки данных, как в микропроцессорах NS32032 фирмы National и Micro VAX-II фирмы DEC [17]
useiw
Блок шины упреждающей Выборки и дешисррато ра команд Блок адресов памяти
Деш.исрратор микрокоманд
Регистровый блок
АЛУ и блок нормализации
Рис. 4. Микропроцессор NS32032. Микрофотография (а) и компоновочный план кристалла (б). (С любезного разрешения фирмы National Semiconductor Corporation.)
1 Блок адресов шины
Исполнительный блок
Блок адресов
Блок команд блок данных
шины
Рис. 5. Микропроцессор iAPX286. Микрофотография (а) и компоновочный план кристалла (б). (С любезного разрешения фирмы Intel Corporation.)
б Регистровый блок и H3V констант
Программный счетчик и АЛУ
Многорегистровый циклический сдвигатель и степ Дешифратор микрокоманд
Рис. 6. Микропроцессор Micro VAX-1. Микрофотография (а) и компоновочный план кристалла ( б ) . (С любезного разрешения фирмы Silicon Compilers Inc.).
(рис. 4). Один из вариантов подобного подхода предполагает размещение блока адресов на одной стороне, а порта данных и блока нормализации на другой стороне кристалла. Несколько новейших микропроцессоров, наиболее известными из которых являются приборы iAPX86 и iAPX286 фирмы Intel (рис. 5), не содержат какого-то одного четко
выделенного блока тракта обработки данных. Это дает возможность осуществлять оптимизацию топологии отдельных блоков без ограничений, связанных с необходимостью выдерживать постоянный шаг расположения отдельных разрядов. ! Недостатком подобного подхода является сложность прокладки соединений между блоками и меньшая гибкость в построении схемы. В качестве примера компромиссного решения можно привести кристалл тракта обработки данных компьютера Micro VAX-I [3] (рис. 6). Здесь регистровый блок, ПЗУ констант, многорегистровый циклический сдвигатель и стек операндов имеют один шаг координатной сетки, а АЛУ реализуется с собственным, гораздо большим шагом. В этом случае дополнительные расходы на трассировку оказались приемлемыми, поскольку на кристалле размещались только средства тракта обработки данных. Сложность такой трассировки была сведена к минимуму благодаря довольно малой плотности используемых каналов прокладки соединений. Такая декомпозиция схемы позволила также включить в тракт данных все регистры, необходимые для задуманной архитектуры, без нежелательного дисбаланса геометрических размеров кристалла. Тракт данных микропроцессора NS32032 имеет две секции, в одной из которых используется значительно больший шаг координатной сетки, чем в другой. Здесь основную сложность представляет область стыковки обеих секций, где осуществляется переход с одной величины шага на другую. При проектировании тракта обработки данных с постоянным шагом координатной сетки важно выбрать оптимальное значение шага расположения отдельных двоичных разрядов. Шаг должен быть достаточно большим, чтобы можно было реализовать самый сложный функциональный блок, но не настолько большим, чтобы задержки распространения управляющих сигналов стали слишком значительными. Это последнее ограничение играет особенно важную роль для многоразрядных (32-бит) микропроцессоров, изготавливаемых по технологиям с однослойной металлизацией. Использование всего одного слоя металлизации для реализации шин тракта обработки данных заставляет линии управления, пересекающие тракт, делать поликремниевыми. Распределенная задержка этих проводников с высоким омическим сопротивлением становится весьма значительной для линий с большой нагрузкой при ширине проводников в диапазоне от 1000 до 2000 мкм в зависимости от технологии. Частичным решением этой проблемы может быть применение ряда супербуферов между старшими и младшими 16 разрядами, как это сделано в процессоре RISC I [9], или каскадное соединение старшей
и младшей половин тракта обработки данных, расположенных в направлении шин, т. е. создание более длинного тракта с постоянной разрядностью 16 бит; такой подход приняли разработчики микропроцессора М68000 фирмы Motorola. Еще один возможный вариант — это помещение дешифраторов сигналов управления и усилителей между обеими половинами тракта обработки данных, как в микропроцессоре NS32032. Такой подход целесообразен, когда желательно иметь независимый доступ к старшей и младшей половинам тракта, но оказывается неудачным, если требуется декодировать несколько полей управляющего микрослова: обе половины тракта данных становятся чрезмерно обособленными. Часто бывает необходимо выбрать шаг для тракта обработки данных почти в самом начале цикла проектирования, чтобы разработку топологии различных функциональных блоков можно было осуществлять параллельно. К сожалению, на ранних этапах проектирования редко удается четко установить, какой именно блок будет определять минимальный шаг для всего тракта обработки данных. Неправильный выбор шага может привести либо к недостаточной плотности компоновки тракта, либо к необходимости перераскладки некоторых блоков, если впоследствии шаг придется увеличивать либо к неэффективной топологии участков, где происходит переход с одной величины шага на другую. Зависимость между величиной шага и длиной тракта обработки данных обычно не проявляется в явном виде, поскольку минимальную длину многих функциональных блоков часто ограничивает шаг топологии усилителей управляющих сигналов, поэтому оказывается проблематичным создание тракта обработки данных с большой шириной и малой длиной участка кристалла. Б. Устройства управления. Декомпозиция устройства управления является, как правило, гораздо более трудоемкой и кропотливой работой, чем декомпозиция соответствующих модулей трактов обработки данных. Корень этой проблемы в том, что устройства управления имеют в принципе менее регулярную и более сложную структуру, которая гораздо существенней отражается на низких уровнях иерархии проектирования. Для упрощения решения этой задачи обычно идут по пути реализации большинства архитектурных возможностей при помощи микропрограммных ПЗУ. К сожалению, как было показано в п. III.Б, это приводит к определенным ограничениям по скорости. В большинстве существующих интегрально-схемных процессоров используются одноуровневая или двухуровневая структура микрокода с некоторыми
произвольными логическими схемами декодирования и управления между памятью микрокода и трактом обработки данных. Подобная физическая организация принята, в частности, в таких процессорах, как НР9000, NS32032, iAPX286, М68000 и однокристальный процессор MicroVAX-II. Ряд выпускаемых в настоящее время микропроцессоров имеет асинхронно работающие блоки интерфейса памяти, которые осуществляют упреждающую выборку команд. В некоторых микропроцессорах основные функции управления реализуются с использованием ряда параллельно работающих блоков. Именно такая структура выбрана разработчиками процессоров Bellmac-32A [18], NS32032 и микропроцессоров семейства iAPX86 [19]. Благодаря такому подходу уменьшается сложность каждого из блоков управления, а также создаются более естественные возможности для организации параллельной работы. Аналогичную архитектуру имеет также микропроцессор MIPS, в котором дешифратор команд отделен от основного блока управления — «Главного контроллера конвейерного» (МРС). Альтернативный вариант— полностью аппаратное управление, как в микропроцессоре Z8001/2. Наиболее серьезные проблемы такого подхода заключаются в том, что возрастает трудоемкость процесса проектирования, повышая вероятность ошибок, а разработанное устройство управления оказывается менее гибким. В соответствии с общими целями процесса физического проектирования главные задачи разработки структуры управления состоят в том, чтобы создать такую топологию, при которой управляющие блоки располагаются по возможности ближе к управляемым и к источнику входных задающих сигналов одновременно. В. Другие задачи. Основным исходным документом для физического проектирования служит входящий в спецификацию логических и временных параметров список операций, которые должны выполняться в каждом цикле. В рамках процесса декомпозиции, проходящего параллельно с электрическим проектированием, осуществляется распределение ресурсов времени и мощности по всем основным блокам и их подблокам. Кроме того, неотъемлемой частью подобного рекурсивного размещения компонентов является разводка шин питания, земли и синхронизации по кристаллу. Хотя эта часть работы по проектированию редко серьезно отражается на окончательном варианте организации и компоновки кристалла, это обязательная и во многих случаях нетривиальная задача. Особенно непросто найти эффективное решение этой
задачи в тех случаях, когда применяются сложные или чувствительные схемы, которые не допускают чрезмерных фазовых сдвигов сигналов синхронизации или электрических помех по земле. Эта последняя проблема наиболее часто возникает для групп контактных площадок, когда большое число мощных усилителей срабатывает одновременно. Г. Взаимосвязи с другими аспектами проектирования. Про-
цесс физического проектирования наиболее тесно связан с логической организацией кристалла И с электрическим проектированием. Взаимосвязи между физическими и электрическими аспектами проектирования ИС будут обсуждаться в п. V.B. Даже небольшие изменения в логической организации могут существенно сказаться на оптимальности физической топологии. Наличие или отсутствие многоразрядной выделенной шины между двумя блоками может привести к значительным изменениям потерь площади кристалла. Как правило, шины совместного использования многими абонентами гораздо легче уложить в топологию, чем набор специальных шин с практически случайными межсоединениями. В подобных обстоятельствах наличие лишь одного или двух слоев металлизации может оказаться очень серьезным ограничением. Использование множества специальных, выделенных шин допустимо только тогда, когда имеется та или иная специализированная структура, предназначаемая для соединения функциональных блоков и предусматривающая прежде всего простое геометрическое размещение этих блоков. Аргументом в пользу выделенных шин служит обычно то, что их можно сделать гораздо более высокоскоростными, чем общую унифицированную шину с многими источниками и многими потребителями. В связи с этим применение выделенных шин вполне оправдано для решения определенных критических задач, несмотря на некоторые очевидные неудобства. Например, для передачи управляющих слов микропрограммы, информации об исключительных ситуациях и связи программного счетчика с регистром адресов памяти целесообразно использовать выделенные шины вследствие временных ограничений, высокой приоритетности и высоких темпов трафика соответственно. Разработчик структуры микропроцессора должен иметь очень четкое представление об использовании каждой линии связи между функциональными блоками, чтобы определять, можно ли эти линии объединять без ущерба для общих скоростных характеристик. Подобное объединение может даже способствовать улучшению характеристик, поскольку физическая топология с уменьшенными накладными
расходами площади кристалла на трассировку проводников будет либо более компактной и благодаря этому обеспечивать более высокую скорость работы, либо будет иметь больше места для размещения дополнительных функциональных блоков. При оценке и планировании длительности цикла машины необходимо также учитывать тесные взаимосвязи между физической топологией и логической организацией кристаллов. В отличие от менее специфичных видов схем, для которых величины задержек на логических вентилях позволяют просто, но достаточно точно оценивать длительность цикла, для МОП-схем очень важную роль играют задержки на межсоединениях. Поэтому важно учитывать физическую ориентацию функциональных блоков относительно предполагаемых критических путей, а также их собственные времена срабатывания. В действительности может оказаться необходимым изменить логическую организацию в какой-то некритической части схемы, чтобы обеспечить оптимальную физическую топологию для какого-либо ответственного функционального блока. Изначальное влияние физической топологии на уровень архитектуры определяется тем фактом, что реальная площадь кремниевого кристалла ограничивается из-за выхода годных и проблем скорости и в связи с этим ее, как правило, не хватает. Архитектуру, которая в принципе требует слишком больших аппаратных ресурсов для достижения приемлемых уровней быстродействия, нельзя будет реализовать в виде одной ИС. Столкнувшись с таким обстоятельством, разработчик архитектуры должен оценить место различных кристаллов с точки зрения верхних уровней архитектуры. В качестве примеров, иллюстрирующих два разных подхода, можно привести микрокомпьютер iAPX432 [20], в котором два кристалла, реализующие центральный процессор, являются по сути неделимым устройством, и архитектуру iS32000 [21], которая предусматривает включение подчиненных процессоров, работающих с непосредственным управлением от основного набора команд. Более лимитирующим фактором, чем конечный размер технологичного допускающего изготовление с приемлемым выходом годных кремниевого кристалла, является ограниченное количество выводов у большинства распространенных корпусов ИС. До последнего времени, когда появились корпуса с матричным расположением выводов и безвыводные носители кристалла, максимальное число выводов двухрядного корпуса достигало 64. С увеличением длины слова микропроцессора с 8 до 32 бит распределение этого весьма скудно-
го количества выводов стало камнем преткновения для специалистов по разработке и по реализации архитектуры. При этом не только обычно не хватает выводов ИС, но и вносятся значительные потери времени на переход с кристалла на кристалл. Особенно острой эта проблема является для разработчиков многокристальных процессоров. Так, разработчикам процессора 432 фирмы «Intel» из-за чрезвычайно ограниченного количества выводов кристаллов пришлось пойти на использование очень малоразрядного (16-бит) тракта передачи управляющего слова микропрограммы между кристаллом дешифратора команд и исполнительным кристаллом. Важный вопрос, решение по которому должен принять разработчик логической организации, заключается в том, следует ли делать шины адресов и данных раздельными или мультиплексированными, т. е. с уплотнением по времени. Мультиплексированные шины, подобные применяемым в микропроцессорных семействах iAPX86 и NS32000, значительно уменьшают число требуемых выводов корпуса за счет увеличения сложности как внешних, так и внутренних схем процессора, а также снижают максимальную пропускную способность канала обмена с памятью. Раздельные шины позволяют иметь более простые интерфейсы, как в случае семейства М68000, либо организовать обращение к памяти с совмещением или с параллельной обработкой адресов и данных, как в случае микропроцессора MIPS. V. Проблемы электрического проектирования Говоря о процессе электрического проектирования, мы подразумеваем все задачи, которые относятся преимущественно к методологии реализации. Здесь мы имеем в виду выбор технологии изготовления, видов схем и схемных решений, способов синхронизации, детальный анализ критических путей и, что наиболее важно, переход от логических формул и подробного компоновочного плана кристалла к топологии. Хотя многие из этих задач должны соответственно решаться и при реализации разрабатываемого процессора с применением таких стандартных видов микросхем, как ТТЛ или ЭСЛ, они становятся гораздо более ответственными и принципиальными, когда приходится иметь дело непосредственно с кремниевым кристаллом. Это различие определяется тем, что специалист, реализующий СБИС-процессор, имеет большую свободу действий. А. Характеристики конструктивных реализаций. Разработчики
процессоров часто не в состоянии каким-либо образом воз-
действовать на природу технологического процесса, применяемого для изготовления кристалла. Главные факторы, интересующие разработчика: 1) число слоев для прокладки межсоединений, 2) емкостные и резистивные параметры каждого слоя,. 3) нагрузочная способность транзисторов. Именно эти факторы по сути определяют скорость вычислений,, связанную с темпами локальных и глобальных обменов данными. Поскольку количество нестандартных транзисторных элементов в микропроцессоре гораздо больше, чем в кристалле памяти, имеющем высокую степень регулярности, необходимо, чтобы на электрическое и физическое проектирование элемента тратилось как можно меньше времени. В этой связи важным критерием для выбора конструктивной реализации является наличие четко определенного и относительнопростого набора правил проектирования, опять-таки как электрического, так и физического. Чрезмерно сложный процесс проектирования будет увеличивать вероятность ошибок, остающихся невыявленными на этапе верификации схемы [22]. В качестве четкой цели ряда последних проектов создания коммерческих микропроцессоров ставилось получение сразу же полностью работоспособного кремниевого кристалла [3, 17]. Затраты времени и других ресурсов на проведение начального проектирования и всех последующих итераций настолько велики, что любые возможные меры, направленные на их уменьшение без ущерба для качества и временных характеристик конечного изделия, будут безусловно оправданны. Об этом наиболее явно свидетельствует успех методологии проектирования, которую предложили Мид и Конвей [23]. Еще более серьезные проблемы, чем при применении «неудобной» технологии, возникают в случае, когда нужно проектировать ряд немногим отличающихся по технологии реализации вариантов схем. Чаще всего такая ситуация связана с ориентацией на несколько кремниевых мастерских или с использованием вариантов одной и той же технологии, различающихся по топологическим проектным нормам. В этом случае единственным рациональным решением может быть нахождение «наименьшего общего знаменателя» для всех этих целевых технологий и проектирование схемы с расчетом на него. Такой подход оказывается также эффективным, если приходится иметь дело с чрезмерно сложной или предельной технологией либо если микропроцессор предположительно» придется переводить на изготовление по технологии с уменьшенными топологическими нормами.
S. Схемные решения. На этапе электрического проектирования наиболее важную роль играют схемотехнические решения. Так, в процессоре MIPS использование одного оригинального схемного решения в критической части кристалла лозволило сократить длительность такта процессора в целом на 30% [12]. Высокоскоростные архитектуры не могут реализовать своих предельных потенциальных возможностей без применения высокоскоростных схем. Здесь можно назвать такие приемы разработчиков, как применение чувствительных усилителей, шин с уменьшенными аплитудами сигналов, логики типа «домино», цепей положительной обратной связи, матриц ПЗУ с несколькими битами на запоминающий элемент и др. Подробное обсуждение подобных схемотехнических решений выходит за рамки настоящей книги, и мы рекомендуем читателю обратиться к учебнику по проектированию усовершенствованных МОП-схем [24]. Применение таких сложных схем для построения микропроцессора требует всестороннего анализа с учетом взаимосвязей между достигаемым быстродействием, определяющимся длительностью такта процессора, и дополнительными расходами на проектирование с увеличением степени риска. Дополнительные расходы на проектирование выражаются в том, что, во-первых, растет время проектирования и моделирования и, во-вторых, для группы разработчиков требуются специалисты более высокой квалификации. Увеличивающаяся степень риска связана с тем, что указанные выше схемы являются более сложными, и поэтому повышается вероятность различных ошибок и недосмотров. Здесь риск — главным образом результат невозможности точного моделирования таких схем на уровне переключателей или на логическом уровне. Адекватную верификацию этих схем можно осуществить только при моделировании на уровне транзисторов. А на моделирование такого вида затрачивается настолько много машинного времени, что практически нереально рассчитывать на то, что удастся проверить все окружающие схемы более полно, чем лишь с малым количеством комбинаций входных сигналов. Замена сложных реальных структур упрощенными логическими эквивалентами при представлениях схемы на более высоких уровнях неизбежна, однако весьма •опасна. Эти элементы также неизбежно оказываются менее надежными в ситуациях, которые разработчик просто не может предусмотреть: в ситуациях, связанных со случайным распределением зарядов, снижением уровней напряжений, •отклонениями параметров технологического процесса и различными сочетаниями этих факторов. Многие из этих факторов относятся также к процессам с более гибкими характери-
стиками. Так, обычно требуется учитывать те или иные особенности транзисторов, работающих в режимах обогащения и обеднения. Повышение быстродействия кристалла благодаря выбору конкретного схемного решения легче оценить количественно, чем затраты на проектирование. Программы временного анализа [25, 26] и моделирование на уровне транзисторов [27] дают возможность достаточно точно предсказать выигрыш в быстродействии в случае внесения в схему тех или иных изменений. Кроме того, уменьшение мощности потребления и занимаемой площади часто становится сильным аргументом в пользу применения схемы повышенной сложности. Эффективное схемотехническое решение элемента с высокой степенью повторяемости может существенно повлиять на общие характеристики кристалла. В некоторых случаях особенно жесткие ограничения по шагу могут вынудить разработчика пойти на нестандартную реализацию элемента тракта обработки данных. Типичным примером решения подобного рода может быть построение регистрового элемента без транзистора обратной связи, как показано на рис. 7, или использование транзистора, работающего в режиме обеднения, в точке пересечения линий двух независимых сигналов. Сбалансированность между этими положительными и отрицательными эффектами достигается обычно благодаря тому, что наиболее сложные схемотехнические решения применяются только в тех случаях, когда можно четко доказать их несомненные выгоды для выполнения общих требований к процессору. Цель процесса электрического проектирования состоит в том, чтобы создать конкретную детальную реализацию, удовлетворяющую всем техническим требованиям к микросхемам. Кроме упомянутых выше спецификаций временных диаграмм, существуют также функциональные и электрические спецификации. Главное, что необходимо для решения поставленной задачи — получения первого же полностью работоспособного кремниевого кристалла, — тщательный систематизированный подход к верификации схемы при проектировании с учетом всех этих требований. Некоторые из указанных функций, например контроль соблюдения электрических требований и правил, реализуются обязательно в рамках процесса электрического проектирования, однако основной объем работ по аттестации кристалла, заключается в том, чтобы проверить непротиворечивость представления схемы на различных концептуальных уровнях. Архитектурное описание воплощается, как правило, в модели уровня команд, организационная структура — в виде описания уровня регистро-
Вход
1!Запись
Выход
т-
Регенерация
Запись Вход
>
Выход
Т.
1'
Запись
Вход
>
(Слабая
Выход
обратная
связь)
Рис. 7. Варианты схем регистровых элементов.
вых передач, а физико-топологические и электрические характеристики отображаются в представлениях схемы на уровне логики, переключателей и транзисторов. Проверка соответствия, непротиворечивости между этими многочисленными представлениями одной и той же схемы осуществляются путем либо моделирования, либо прямой верификации декомпозиции. При моделировании для двух представлений схемы создаются режимы «выполнения» одной и той же кодовой последовательности с одними и теми же исключительными ситуациями, а эквивалентность проверяется прямым сравнением для интерфейсов, видимых для обоих исследуемых уровней: для уровня регистровых передач, когда речь идет об архитектуре; для передач по шине, когда анализируется организация, и для индивидуальных сигналов в случае окончательного варианта схемы. Если на всех этих уровнях провести достаточно полное и тщательное моделирование с охватом всех предполагаемых рабочих режимов и ситуаций, то 4—708
можно надеяться, что первый же кремниевый кристалл будет работоспособен. Хотя некоторые методологии проектирования, такие, как метод сквозного сдвигового регистра (МССР) [28] и BILBO (встроенный контролер-наблюдатель логических блоков) £29], исходно предусматривают обеспечение тестируемости, практически эта проблема начинает решаться только на этапе электрического проектирования, когда и становится ясно, какие конкретные средства для этого используются и с какими накладными расходами это связано. Сами по себе затраты площади кристалла на реализацию данных методов, как правило, не слишком велики, однако могут возникать сложности из-за того, что дополнительные проводники управляющих линий и трактов обработки данных не укладываются в топологию кристалла. Кроме указанных систематических методов обеспечения тестируемости существует ряд специальных подходов, применяемых в коммерческих микропроцессорах. Довольно широкое распространение получили такие средства, как режимы дампинга микрокода, внутренние точки для подключения пробников и контрольные контакты, не связанные с выводами кристалла. Вообще говоря, все это предназначается преимущественно для того, чтобы можно было .осуществлять проверку кристаллов перед присоединением выводов, и только на втором месте стоит задача верификации схемы. В. Взаимосвязи с физическим проектированием. Этап элек-
трического проектировния наиболее тесно взаимосвязан с этапами физического и логического проектирования и в некоторой степени с этапом выбора организации микропроцессора. Главные задачи, решаемые на этом этапе, — уточнение компоновочного плана кристалла, оценка потребляемой и рассеиваемой мощности и построение временных диаграмм при реа^ лизации каждой части схемы. Когда создается компоновочный план кристалла и распределяется общее время цикла машины, каждому блоку и подблоку выделяются соответствующие ресурсы. В процессе реализации каждого конкретного блока может выясниться, что тех или иных ресурсов выделено недостаточно или слишком много. Если расхождение велико, то целесообразно частично переработать физическую структуру, чтобы привести ее в соответствие с фактической схемой. Количества этих трех видов ресурсов, выделяемые для каждого блока логики, в существенной степени определяют способ и характер его реализации. Рассмотрим, например, блок управляющей логики, который должен обрабатывать
исключительные ситуации. Если этот блок не находится на к а к о м - л и б о критическом пути и для него выделена достаточная площадь кристалла, то вполне рациональным для его реализации может быть выбор программируемой логической матрицы (ПЛМ). Такой способ реализации удобен тем, чтоПЛМ легко проектировать и менять, в случае если первоначальная спецификация блока окажется некорректной и потребует внесения каких-либо небольших изменений. Если в исходной матрице предусмотреть резервные минтермы, базовые логические элементы, то изменение логических функций можно будет провести при минимальной доработке кристалла и даже без доработки. С другой стороны, если высокие требования по скорости не позволят использовать ПЛМ, то придется идти на реализацию при помощи произвольной логики. В этом случае выбор того или иного сочетания размера площади, скорости и мощности потребления менее очевиден главным образом из-за громадного количества возможных компромиссных решений. Эти компромиссные решения должны приниматься с учетом двух различных факторов. Во-первых, нужно учитывать, что для транзисторов с увеличением отношения ширины к длине аналогичным образом увеличивается занимаемая площадь и мощность потребления, а задержка уменьшается. Второй важный фактор — это тип схемы. Если временная диаграмма допускает реализацию с использованием схем типа «домино» или схем с предварительным зарядом, то можно добиться высокой скорости и малой мощности потребления. Если требования по скорости исключительно жесткие (т. е., например, отсутствует неактивная фаза цикла), то может оказаться необходимым изменить логическую структуру и физическую топологию, чтобы сократить количество длинных проводников и уровней логики на наиболее критических путях прохождения сигналов. Г. Взаимосвязи с организацией процессора. Главное, что с в я -
зывает задачи электрического проектирования и организациюпроцессора, — это необходимость принимать решения, относящиеся к фундаментальной природе каждого из функциональных блоков и начальным грубым оценкам ожидаемых скоростных характеристик. Организация процессора, как правило, строится исходя из предположений об относительном быстродействии памяти и регистров, с одной стороны, и арифметико-логических устройств и устройств управления — с другой. Эти относительные скорости выбираются на основе опыта разработчиков и некоторых предварительных проработок электрических схем критических и ответственных элементов. Если после завершения реализации выясняется, что
исходные относительные скорости были выбраны очень неудачно, то это указывает на недоиспользование того или иного ресурса или на то, что какой-либо один критический путь «съедает» значительную долю длительности такта машины. Этот фактор является наиболее серьезным для машин с высокой степенью конвейеризации, где одновременные события должны завершаться синхронно. Взаимосвязь электрического проектирования и организации процессора обусловливает также выбор соответствующей стратегии построения конкретных функциональных блоков. Если, например, регистровую память предполагается построить как блок ЗУПВ, а не как блок статических регистровых элементов, подключенных к шине, то длительность цикла регистрового блока будет, вероятнее всего, меньше, однако при этом блок будет, по-видимому, однопортовым. Такое ограничение необходимо учитывать на уровне организации. Аналогичные компромиссные решения приходится принимать при выборе способа реализации дешифраторов команд и устройств управления при помощи микропрограммного ПЗУ или ПЛМ или произвольной логики. Несмотря на очень низкоуровневый характер большинства задач процесса электрического проектирования, гибкость реализации заказных кремниевых кристаллов достаточно велика, так что решения, принимаемые на концептуальном уровне, в существенной степени влияют на организацию и компоновочный план кристалла процессора. VI. Заключение
Появление СБИС привело к значительным изменениям методологии проектирования и реализации компьютеров. В настоящее время эти изменения практически ощущаются только в области микропроцессоров, однако с повышением уровней интеграции аналогичные принципы будут распространяться и на более крупные и более мощные процессоры. Общая тенденция заключается в том, что должны устанавливаться более тесные взаимосвязи между различными аспектами или концептуальными уровнями разрабатываемого изделия. Такие тесные взаимосвязи в сочетании с большим числом степеней свободы, предоставляемыми новой технологией реализации, в принципе значительно усложняют процесс проектирования по сравнению с прежними временами. А сложности процесса проектирования необходимо ограничивать и контролировать путем внедрения методологии, которая даст возможность игнорировать проблемы, не оказывающие существенного влияния на общие конечные характеристики
•^разрабатываемого изделия. Автоматизированные средства •проектирования начинают играть важную роль как инструмент для определения степени сложности, допустимой для данного изделия, а также при установлении и внедрении соответствующей методологии проектирования. Рациональное применение последних технологических достижений и новых .архитектурных решений позволяет создавать однокристальные процессоры с существенно более высокими характеристиками. Выражение
признательности
Приведенный в настоящей статье материал по процессору MIPS — результат коллективной работы группы разработчиков MIPS, в которую входят Томас Гросс, Норман Джуппи, Кристофер Роуэн и авторы статьи.
Литература 3. Clark J. Comput. Graphics 16, 127—132, 1982. 2 . Kung H. Т., Leiserson С. E. Introduction to V L S I S y s t e m s , eds. C. A. Mead, L. Conway, Addison-Wesley, Reading, Massachusetts, pp. 271—292, 1978. 3. Louie G„ Но Т., Cheng F. V L S I D e s i g n 4, 14—21, 1983. 4. Radin G. Proc. S I G A R C H / S I G P L A N Symp. Architect. Support Progr. Lang. Oper. Syst., ACM, Palo Alto, California, 39—47, 1982. 5. Patterson D. A., Ditzel D. R. Comput. Archit. N e w s 8, 25—33, 1980. 6. Hennessy J. L., Jouppi N., Gill J., Baskett F., Strong A., Gross T. R., Rowen C„ Leonard J. Proc. Compcon, IEEE S a n Francisco, California, 2—7, 1982. 7 . Patterson D. A., Sequin С. H. Proc. Ann. Symp. Comput. Archit., 8th, Minneapolis, Minnesota, 443—457, 1981. -8. Sherburne R. W., Jr., Katevenis M. G. H., Patterson D. A., Sequin С. H. Int. Solid-State Circuits Conf. IEEE, 168—169, 1984. 9. Peek J. B. Tech. Rep. U C B / C S D 83/135, Computer Science Division, University of California at Berkeley, August 1983. 30. Patterson D. A., Sequin С. H. Computer 15, 8—22, 1982. 31. Katevenis M. PhD, dissertation, Univ. of California at Berkeley, 1983. 32. Przybylski S., Gross Т., Hennessy J., Jouppi N.. Rowen C. J. V L S I Comput. S y s t e m s 1, 170—208, 1984. 13. Hennessy J., Jouppi N.. Przybylski S., Rowen C., Gross T. Proc. Caltech Conf. VLSI, 3rd Calif. Institute of Technology, Pasadena, California, 33—54, 1983. 34. Clark D., Levy H. Proc. Ann. Symp. Comput. Archit. A C M / I E E E , 9th Austin, Texas, 1982. 35. Wakefield S. PhD. dissertation, Stanford University, 1983. 16. Beyers J. W., Dohse L. J., Futetola J. P., Kochis R. L„ Lob C. G„ Taylor G. L., Zeller E. R. Int. Solid-State Circuits Conf., IEEE, 104—105, 1981. 37. Beck J., Dobberpuhl D„ Doherty M., Dornekamp E., Grondalski R., Grondalski D„ Henry K., Miller M„ Supnik R„ Thierauf S., Witek R. D i g . 1984 Int. Solid-State Circuits Conf., IEEE, S a n Francisco, 178—179, 1984.
18. Murphy В. Т., Molinelli J. J. A 32-Bit Single Chip CMOS Microprocessor,, seminar at the Integrated Circuits Laboratory, Stanford University, 1981. 19. Intel, Inc., Intel iAPAX 286 Users Manual, (preliminary ed.) 1983.' 20. Lattin W. W„ Bayliss J. A., Budde D. L„ Rattner J. R., Richardson W. S. V L S I Design, 2, 34—45, 1981. 21. National Semiconductor, Inc., National IMP 16000 Users Manual, 1983. 22. Przybylski S. A. Proceedings, Third MIT Conference on Advanced Topics in VLSI, ed. Paul Penfield, Jr., MIT, Cambridge, Massachuesetts, pp. 100—109, 1984. 23. Mead C„ Conway L. Introduction to VLSI Systems, Addison-Wesley, Menlo Park, California, 1980. 24. Hodges D. A., Jackson H. G. A n a l y s i s and D e s i g n of Digital Integrated Circuits, McGraw-Hill, N e w York, 1983. 25. Jouppi N. Proceedings Third CalTech Conference on VLSI, ed. R. Bryant, California Inst, of Tech., Pasadena, California Inst, of Tech., Pasadena, California, 1983. 26. Ousterhout J. Third CalTech Conference on Very Large Scale Integration, ed. R. Bryant, Computer Science Press, Rockville, Maryland, pp. 57—70, 1983. 27. Nagel L. Tech. Rep. UCB ERL-M250, University of California, Berkeley, 1975. 28. Eichelberger E. В., Williams T. W. J. D e s i g n Automation Fault Tolerant Comput. 2, 165—178, 1978. 29. Williams T. W„ Parker K. P. Trans. Computers, C-31, 2—15, 1982.
Глава 2 RISC: Эффективные архитектуры для СБИС-компьютеров М. Г. X. Катевенис* К. X. Секуин Д. А. Паттерсон Р. У. Шербурн-мл.**
(М. G. Н. Katevenis), (С. Н. Sequin), (D. A. Patterson), (R. W. Sherburne, Jr.)
Отдел вычислительной техники факультета электротехники и вычислительной техники Калифорнийского университета, Беркли, шт. Калифорния
I. Введение
Достижения в области СБИС-технологии создали условия для реализации функциональных возможностей суперминикомпьютера с использованием лишь нескольких кремниевых кристаллов. Однако этой новой технологии присущи ограничения, кардинально отличающиеся от ограничений, свойственных традиционной технологии крупных ЭВМ. Еще в течение длительного времени кристалл кремния придется рассматривать как довольно ограниченный ресурс с точки зрения количества транзисторов, которые можно на нем разместить, и мощности, которую он способен рассеять [1]. Еще одним серьезным ограничением являются задержки распространения сигналов между элементами кристалла, между подблоками, а также между кристаллами. По мере уменьшения размеров элементов МОП-схемы быстродействие транзисторов кристалла будет все возрастать, так что главной проблемой станут паразитные параметры связей между ними. Поэтому необходимо тщательно продумывать декомпозицию системы, а также интерфейсы между кристаллами. Необходимо избегать разводки критических внутренних цепей с разделением по нескольким кристаллам, а количество соединений большой длины должно быть минимальным. Ответственной задачей следует считать создание компоновочного плана кристалла, содержащего регулярные матрицы с высокой плотностью размещения элементов. Использование матриц весьма желательно также потому, что это упрощает топологическое проектирование. * Computer S y s t e m s Laboratory, Computer Science Department, Stanford Univ., Stanford, California, 94305. ** Electrical Computer and S y s t e m s Engineering Department, Rensselaer Polytechnic Inst., Troy, N e w York, 12181.
56
М. Г. X.
КАТЕВЕНИС,
К. X.
СЕКУИН,
Д. Э.
ПАТТЕРСОН
И
Р. У.
ШЕРБУРН
MJT-
Таким образом, нельзя рассчитывать на то, что простое отображение архитектуры удачного крупного компьютера на кристалл кремния автоматически приведет к эффективной реализации этой архитектуры. Предварительно необходимо переработать архитектуру с учетом конкретных ограничений СБИС-технологии. При этом предпочтение должно отдаваться: архитектурам, допускающим разбиение на функциональные блоки размером с кристалл или размещаемые на одном кристалле. Ограниченные ресурсы кристалла — площадь, мощность рассеяния и число транзисторов — следует четко и аккуратно распределять между процессором, внутренней памятью, связными или интерфейсными схемами и другими необходимыми функциональными блоками. В течение 1980—1984 гг. в Беркли разрабатывался проект RISC (Компьютер с сокращенным набором команд), целью которого был выбор архитектур и технологий реализации однокристальных СБИС-компьютеров для эффективной работы с такими языками высокого уровня, как Си и Паскаль. В процессе разработки проекта было установлено, что рациональное ограничение числа команд небольшим набором наиболее употребительных операций в сочетании с архитектурой, ориентированной на быстрое выполнение всех команд этого набора, может обеспечить весьма эффективное использование дефицитных ресурсов и построение вычислительных машин с высокой пропускной способностью. Подобный RISCмикропроцессор [2, 3] выглядит совершенно иначе, чем типичные кристаллы современных микропроцессоров (рис. 1)Преобладающую часть площади кристалла микропроцессора RISC II занимает тракт обработки данных, содержащий большой регистровый блок, и лишь очень небольшая доля площади отводится для дешифратора команд и секции управления. Чтобы добиться максимального быстродействия при данном размере кристалла и данной мощности рассеяния, необходимо провести объективный, беспристрастный анализ большинства важных требований основных приложений, для которых предназначается компьютер. Большинство наиболее часто встречающихся операций следует поддерживать по преимуществу аппаратно, однако только до такой степени,, чтобы общая производительность компьютера в целом реально возрастала. Расширение аппаратной поддержки, а следовательно, и выделение увеличенной площади кристалла и мощности для какой-то одной функции неизбежно ведет к уменьшению ресурсов, предоставляемых другим функциям. Поэтому задача разработчика системы заключается в том, чтобы анализировать возможные компромиссные решения
Рис. 1. Микрофотография кристалла микропроцессора RISC II.
с нескольких различных точек зрения, включая схемотехнику, микроархитектуру и построение набора команд, и находить оптимальное решение. В настоящей главе описывается подобный анализ и решение, которое выбрано для реализации однокристального микропроцессора, ориентированного на языки Си и Паскаль, путем выполнения некоторой смеси заданий, как было сделано на факультете информатики и вычислительной техники академического института. Студенты, которые слушали многосеместровый курс на этом факультете, в течение 1980 г. исследовали концепцию RISC, а впоследствии разработали функционально законченный 32-бит микропроцессор под названием RISC I с использованием я-канальной МОП-технологии [4]. Этот первый вариант микропроцессора был реализован, испытан и аттестован к весне 1982 г. [5]. Параллельно, взяв за основу ту же базовую архитектуру, разработчики создавали второй, более сложный кристалл с гораздо более тщательной оптимизацией схемы. Этот второй микропроцессор под названием
RISC II был доведен до работоспособного состояния всего двумя специалистами и был продемонстрирован в двух вариантах одной и той же конструкции, с длинами затвора 4и 3 мкм соответственно, в течение 1983 г. [6]. Микрофотография кристалла RISC II показана на рис. 1. В настоящей главе речь идет в основном об этом последнем микропроцессоре. Аналогичные эксперименты проводятся и в других местах. Особого упоминания заслуживает проект 801 корпорации IBM, по которому по инициативе Джона Кока в середине 1970-х годов начал разрабатываться мини-компьютер и руководителем которого сейчас является Радин [7], а также проект MIPS Станфордского университета [8—10]. II. Вычисления общего характера на машинах с фон-неймановской архитектурой
При архитектурном проектировании вычислительной машины главная проблема заключается в том, чтобы рационально выбрать операции, поддерживаемые аппаратно. Реализация операций аппаратным способом повышает скорость их выполнения; однако необходимо сопоставлять возможный выигрыш в скорости выполнения отдельных операций со стоимостью' дополнительной аппаратуры и с общим снижением быстродействия процессора из-за увеличения сложности и физических, размеров. Поэтому разработчик архитектуры компьютера обязательно должен иметь четкое представление о частотеупотребления различных операций в практических вычислениях и о дополнительных затратах на поддержку каждой из; этих операций в аппаратуре. В данном разделе рассматривается первый вопрос — мы попытаемся дать общую картину, позволяющую судить о том,, какие операции встречаются в вычислениях с максимальной частотой. Мы придаем особое значение этому фактору, поскольку считаем, что архитектура многих коммерческих, компьютеров является далеко не оптимальной с точки зрения1 общих характеристик. В качестве примеров можно привести сложные компьютеры, идущие на смену более простым машинам, такие, как компьютер VAX-11 корпорации DEC, преемник модели PDP-11 [11]; System/38 корпорации IBM, сменяющую System/3 [12], и микрокомпьютер iAPX-432 компании Intel, созданный вслед за микропроцессором 8086 [13„ 14]. Характер вычислений и частота употребления различных операций определяются путем построения так называемого профиля выполнения для контрольных программ либо путем
статических или динамических измерений параметров самих программ. Построение профиля программы, или профилирование, состоит в том, что измеряется доля общего машинного времени центрального процессора (ЦП), затрачиваемая на выполнение каждого оператора программы. Построение профиля программы дает возможность выявить те ее части, на выполнение которых уходит максимум общего времени. Это, как правило, небольшое количество малых циклов — так называемых «критических циклов». Их анализ может дать полезную информацию относительно характера вычислений, выполняемых контрольной программой. При статических или динамических измерениях программ производится подсчет числа появлений тех или иных операторов или случаев, когда те или иные признаки оказываются истинными в тексте программы (статика) либо в процессе ее выполнения (динамика). Подобные измерения дают количественную информацию относительно конкретных свойств вычислений, дополняя тем самым общую картину, получаемую при построении профиля программы и говорящую о том, где тратится максимум времени. В настоящем разделе рассказывается об исследованиях природы вычислений общего характера на машинах с фоннеймановской архитектурой; исследования проведены при помощи всех трех указанных выше методов. Здесь слова «общего характера» используются для обозначения смеси прикладных программ, которые не относятся к какой-либо одной конкретной области, — это совокупность программ обработки текстов, управления базами данных, электронной почты и связи, компиляции — трансляции, автоматизации проектирования, управления и обработки числовых данных. Рассматриваемые исследования ограничиваются фон-неймановской архитектурой, поскольку в настоящей главе речь идет именно об этом классе компьютеров. В процессе исследований проводились измерения только для программ, написанных на языках фон-неймановских машин. При этом не использовались никакие Кобол-программы. А. Обработка числовых данных. П р и к л а д н ы е программы об-
работки числовых данных обычно отличаются тем, что в них доминирующую роль играют арифметические операции с плавающей точкой, выполняемые над элементами массивов. Некоторые критические циклы написанных на Фортране программ обработки числовых данных исследовались в [15, Sect. 2.3]. Большинство из них выявил Кнут [16] с применением метода профилирования. Ниже приводится гипотетический цикл, иллюстрирующий типичные характеристики чис-
ленных расчетов. Он написан в формате модифицированного Фортрана: do j = l , N {
^
B[j|=2»A[jl—С if ( B [ j l < 0 ) then call sub(B,N,j) TT=(A[jl+A[N-j]/(B[j]+B[N-j]+C)-C do k = j , N { XX[j , k ] = T T • XX[k, j ]» F [ M — k , k + 1 ] + С if ( j > L )
then
B[jl=SQRT(B[j]»B[N—j])
Циклы программ численных расчетов осуществляют обычно обработку элементов векторов или матриц регулярными последовательностями. При этом подразумевается, что в массивах данных имеется небольшое количество рабочих ячеек, адреса которых меняются в арифметической прогрессии с каждым проходом через цикл. Локальность ссылок возрастает, когда длина цикла составляет лишь несколько' слов. Подсчет числа проходов через цикл и индексация массивов осуществляются при помощи небольшого количества! целочисленных скалярных переменных. Обращение к этим1 переменным производится очень часто, но над ними выполняются только простые операции, такие, как приращения, формирование адресов и сравнения для ветвления. Малое число скалярных переменных с плавающей точкой обычно используется многократно. Часто выполняются операции сложения, вычитания, умножения и деления с плавающей точкой, достаточно широко используются также вызовы математических функций или других процедур. Б. Обработка нечисловых данных. Если
с р а в н и в а т ь с чис-
ленными расчетами, то критические секции программ обработки нечисловых данных характеризуются 1) отсутствием операций с плавающей точкой, 2) использованием связанных структур данных, а не только массивов, 3) более частым использованием указателей и менее частым использованием индексации массивов, 4) более частым использованием сравнений и ветвлений и 5) более частым использованием циклов «while» и менее частым использованием циклов «do», т. е. более нерегулярными циклическими структурами. Некоторые критические циклы программ на языке Си для обработки нечисловых данных были выявлены путем профилирования и исследованы в работе [15, Sect. 2.4]. Ниже приведены две гипотетические критические секции (напи-
санные на языке типа Си), которые иллюстрируют типичные характеристики обработки нечисловых данных. Первый пример является типичным для прикладных программ обработки текстов, а второй может служить иллюстрацией программ, использующих динамические структуры данных. / * с, char есть локальные символьные переменные (или аргументы); * pi, р2, plim есть локальные символьно-указательные переменные (или аргументы); * nflag, lcount есть глобальные переменные (булевы, целые). * / if (nflag) then {редко выполняется}; ehar=find(pl,plim); i f ( * p l i m + + = = c h a r ) then {редко выполняется} /*"*plim+-1-" есть чтение символа по указателю plim, * а затем приращение plim * / else if (checkbad(plim)) then {никогда не выполняется} else l c o u n t = l c o u n t + l ; while ( p K p l i m and * р 1 т ^ ' \ п ' ) / * контроль границы и символ новая-строка */;
{ *p2++ = *pl++; }
/ * копирование символов и приращение указателей */; cur, prev есть локальные указательные переменные (или аргументы); * NIL,LIMIT есть константы; * p-»-f означает поле f структуры, на которую указывает р. * / while (flag and c u r ^ N I L and cur-^-num-nxt; if (cur-»-num>prev->-num) then {редко выполняется}; else if (check(cur-»-num,bound)) then {редко выполняется}; else { prev->-link=cur->-nxt; c u r - > n u m = c u r - > - n u m + l ; }; flag=find(prev->-link,cur->link,cur->-num); /*
При обработке нечисловых данных используются простые арифметические операции — почти исключительно целочисленные сложения и вычитания. Наиболее часто с помощью этих операций выполняются сравнения, приращения и формирование адресов. Доступ к элементам структур данных обычно осуществляется с применением указателей. В программах, написанных на языке Си, указатели часто используются также для доступа к элементам массивов (как в первом из двух приведенных выше примеров), поскольку эта обеспечивает более высокую скорость. Указатели, индексы и счетчики, используемые в критических секциях программ,— это обычно скалярные переменные, локальные для своей процедуры, причем их количество невелико. Простые вызовы процедур и копирование данных встречаются часто, а сравнение и ветвление — очень часто.
В. Измерения параметров
программ.
Анализ
критических
циклов позволяет охарактеризовать природу вычислений. Количественные показатели эффективности программ можно получать путем измерения нужных параметров при помощи соответствующих инструментальных средств, например эмуляторов наборов команд. Опубликовано несколько отчетов по подобным измерениям программ. Мы отметим [3, 16— 24], которые кратко рассмотрены в [15, Sect. 2.2]. Часто используется способ измерения параметров программ, при котором выполняемые операторы разбиваются Таблица
I
Статические, динамические и весовые количественные показатели программ Присваивания, %
Условные операторы, %
Циклы, %
Вызоввозврат, %
Прочие %
Литература
48
15
16
18
3
[17]
47
17
6
29
1
[21]
42
36
5
15
2
[21]
42±12
36±15
4±За
14±4
4
[3]
Веса команд
13±4
16±7
37±5б
32±12
2
[3]
Веса памяти
14±5
10±4
30±4б
44±16
2
[3]
Статика
Динамика
а
Входы в циклы. ® Повторения циклов.
на такие широкие категории, как присваивания, условные конструкции, циклы и пары «вызов — возврат». Александер и Уэртман приводят результаты статических измерений при такой классификации для 19 программ — главным образом •компиляторов, — написанных на языке XPL [17, р. 42]. Эти результаты представлены в табл. I (после исключения описаний и пустых операторов). При подобных статических измерениях подсчитываются просто операторы, присутствующие в программе, без учета числа выполнений каждого оператора или общего времени, затрачиваемого на выполнение каждого из них. Динамические измерения, с другой стороны, учитывают количество выполнений каждого оператора. Таненбаум приводит результаты статических и динамических измерений для более чем 300 процедур, используемых в программах операционных систем и написанных на
языке структурного программирования SAL [23, р. 239]. Паттерсон и Секуин провели динамические измерения для восьми крупных программ, написанных на языках Си и Паскаль и предназначенных для обработки нечисловых данных [3, р. 10]. Они приводят также результаты тех же измерений после распределения операторов по весам с учетом среднего числа машинных команд (веса команд) или обращений к памяти (веса памяти), выполняемых для каждого типичного оператора (типичный вариант каждого оператора предложил Вулф в рамках своей исследовательской работы по оценке качества компиляторов [25]). Эти последние строк» табл. I дают гораздо более реалистическое представление о том, на что затрачивается наибольшее время ЦП и, следовательно, для каких операций может быть оправдана аппаратная поддержка. Приведенные цифры говорят о том, что основная доля времени вычислений расходуется на подсчет циклов, сравнение, ветвление, а также накладные расходы на вызовы — возвраты из процедур, по крайней мере для программ обработки нечисловых данных. Накладные расходы на вызовы — возвраты из процедур обычно столь велики потому, что приходится выполнять много стековых операций на запоминание содержимого регистров, передачу аргументов и значения программного счетчика, прием возвращаемых значений и восстановление регистров. Еще одно интересное измерение, которое можно провести для программы, — это определение сложности выражений, используемых в ней. Выражения встречаются преимущественно в правой части операторов присваивания, а также в условиях операторов ЕСЛИ, в заголовках циклов, используются в качестве индексов массивов и аргументов процедур. Большинство выражений в реальных программах имеют очень малую длину. Статические измерения, проведенные, как упоминалось выше, Александером и Уэртманом [17, р. 43], показывают, что в среднем приходится только 0,76 операции на выражение (не считая индексации массивов), причем для программ обработки нечисловых данных операции распределяются следующим образом: Г) 55%—булевы операции или операции сравнения, 2) 42% — операции сложения или вычитания, 3) 3% —операции умножения или деления. Аналогично динамические измерения Таненбаума [23, р. 239] показывают, что из всех выражений, встречающихся в правой части операторов присваивания, 1) 66% имеют один операнд (без знака операции), 2) 20% имеют один операнд и один знак операции,
3) только остающиеся 14% имеют 2 и более знаков операции. Лунде в своих динамических измерениях для архитектуры DEC system 10 использует понятие регистрового блока [21]. Регистровый блок содержит информацию о всех событиях, относящихся к каждому регистру и происходящих за период времени с момента загрузки в этот регистр до момента последнего использования регистра перед загрузкой в него другого независимого операнда. Измерения Лунде были проведены для семи программ обработки числовых данных и пяти компиляторов, написанных на языках Алгол, Блисс, Фортран, Бейсик и на ассемблере. Они показывают [21, tables VII—XII], что из всех регистровых блоков. 1) 50% (от 20 до 90] не имеют выполняемых над ними арифметических операций; 2) 25% (от 1 до 70) имеют только целочисленные сложения или вычитания, выполняемые над ними; 3) 5% (от 2 до 20) имеют выполняемые над ними целочисленные умножения и деления (возможно, также и целочисленные сложения или вычитания, но не имеют операций с плавающей точкой); 4) 15% (от 0 до 40) имеют минимум одну операцию с плавающей точкой. Кроме того, из всех регистровых блоков 1) 40% (от 20 до 70) использовались для адресации памяти или индексации массивов. Приведенные статические данные измерений документально свидетельствуют о простоте большинства выражений и операций в программах обработки нечисловых данных. Аналогичные результаты получаются и для программ обработки числовых данных, если учесть простые операции индексации и подсчета циклов. Третий интересный класс измерений связан с типами операндов, используемых в программах. Измерения Таненбаума [23, table III (динамика)] и Паттерсона и Секуина [3, table 1 (динамика)] дают цифры, приведенные в табл. II. Кроме того, согласно [3, р. 9], 1) свыше 80% обращений к скалярам осуществлялось локально (переменные описывались как локальные для своей процедуры, включая скалярные аргументы процедур), 2) свыше 90% обращений к элементам массивов и структур данных относились к элементам, описанным как глобальные или сформированным путем динамического назначения. Эти измерения показывают, что константы и локальные «скаляры составляют основную часть операндов, к которым «производится обращение в процессе выполнения программы.
Таблица
II
Частота употребления операндов различных типов Константы,
%
33 20±7
Скаляры, %
Массивы (структуры), %
42
20
55±11
25±14
Прочие, %
5
Литература
[21] [31
В этой связи интересны еще два наблюдения. Во-первых, константы, используемые в программах, обычно малы. Согласно статическим измерениям [16, table 3], 1) 56% всех констант имеют значения в диапазоне от —15 до +15, или 2) 98% всех констант имеют значения в диапазоне от —511 до +511 (в этих программах обработки нечисловых данных все константы— целые). Во-вторых, большинство процедур имеют малое количество аргументов и локальных переменных. 1) Таненбаум провел измерения и нашел, что 98% динамически вызываемых процедур имеют менее шести аргументов, а 92% из них — менее шести локальных скалярных переменных [23, tables VI, VII]. 2) Халберт и Кесслер [20] провели измерения для написанных на языке Си трех крупных и шести малых программ обработки нечисловых данных. Они нашли, что 97— 100% динамически вызываемых процедур имеют менее шести аргументов, а 94—100%—аргументы и локальные переменные, которые могут уложиться в 12 и менее целых. Эти измерения означают, что подавляющее большинство операндов, к которым осуществляется обращение в рамках процедуры, — константы, по длине обычно не превышающие нескольких битов, и локальные скаляры, практически всегда укладывающиеся в несколько слов. Эти качественные и количественные измерения образуют основу для рационального выбора и оценки эффективности процессорных архитектур и их конкретных реализаций. III. Быстрый доступ к операндам Анализ особенностей вычислений общего характера на машинах фон-неймановской архитектуры говорит о том, что наиболее важный вид действий, которые целесообразно поддерживать аппаратно, — это доступ к операндам вычислений, если временно игнорировать проблему выборки и 5—708
декодирования команд (эта проблема обсуждается в пп. IV.B.2, V-Б.Г, VII.Б и [15, Sect 6.3]). Выполнение всех важных категорий программных операторов сильно зависит от возможной скорости поступления операндов в исполнительные аппаратные средства. В частности: 1) Оператор присваивания должен прочитать операнд, выполнить над ним ту или иную операцию и записать результат в другой операнд. Поскольку многие операторы присваивания выполняют очень малое количество или даже вообще не выполняют операций, очевидно, что доминирующую роль здесь играет доступ к операндам. Это особенно справедливо для программ обработки нечисловых данных, в которых наиболее широко употребительные операции очень просты для вычислений. 2) Условные операторы (if) и операторы циклов (for, while) требуют выполнения простых сравнений и вычисления выражений, служащих для подсчета числа повторений цикла. Здесь также важную роль играет доступ к операндам. 3) При вызовах процедур и возвратах производятся манипуляции множеством операндов в форме аргументов или значений, которые передаются между регистрами и основной памятью. Типы операндов,, используемых в программах, очень разнообразны, поэтому для хранения этих операндов применяются также различные категории запоминающих устройств, образующих так называемые иерархии памяти. Для этого созданы разные виды средств аппаратной поддержки. А. Типы операндов и иерархия памяти. Основные типы опе-
рандов, которые следует учитывать при анализе, делятся на три категории: 1) Константы — не меняются во время выполнения программ и имеют обычно небольшие значения. 2) Скаляры — как правило, обращение к ним производится явно, по их собственному имени; их обычно немного и они описываются в процедурах как локальные. 3) Элементы массивов и структур данных — обращение к ним производится путем косвенной адресации, при помощи индексов и указателей; их может быть довольно много. Запоминающие устройства, которые интересуют нас в данном случае, — это: 1) регистровый блок, 2) кэш-память и 3) основная память. Процесс доступа к операндам программы состоит из двух частей, причем обе они должны учитываться при оптимизации скорости доступа. Прежде всего необходимо осуществить адресацию, т. е. определить адрес физической ячейки,
где в настоящий момент хранится искомый операнд. Только после этого может быть произведен сам доступ к операнду. Для различных типов операндов и различных устройств памяти в иерархии характерны различные уровни сложности и задержки при выполнении адресации и доступа. В табл. III приведены основные характеристики различных запоминающих устройств, входящих в иерархию памяти (кроме накопителей на магнитных дисках), и сведения о возможностях использования этих ЗУ для хранения различных типов операндов. Операнды можно помещать в формат команды только тогда, когда это — константы. В подобном случае никакой дополнительной адресации или задержки доступа не требуется — после того как команда будет выбрана, а ее поля выделены для обработки. Выборка команд и выделение полей являются необходимым условием для адресации и доступа к операнду любого типа. Таблица
III
Иерархия памяти и типы операндов Отдельная команда
Регистровый блок
кэш-память
Основная память
Накладные расходы на а д р е с а ц и ю
О
Малые
Средние
Средние
Задержка доступа
О
Очень малая »
Малая
Средняя
Высокая
Очень высокая
Возможно »
Возможно
Возможно
»
»
Емкость Стоимость на слово
в расчете
Константы
Возможно
Промежуточные значения, невидимые д л я языка высокого уровня
—
Скаляры
—
Массивы и структуры д а н н ы х
При определенных условиях —
Регистровые блоки и кэш-память относительно мало различаются с точки зрения емкости, времени доступа и стоимости, однако существенно различаются по накладным расходам на адресацию. Регистровые блоки традиционно имеют меньший размер, чем кэш-память, и, следовательно,
меньшую задержку доступа. Кэш-память имеет более высокую стоимость в расчете на слово, чем регистровые блоки, поскольку требуют дополнительных схем для организации хранения тегов, параллельного чтения многих групп слов и для реализации логики сравнения и замещения. Если по времени доступа кэш-памяти в принципе могут почти не уступать регистровым блокам, то накладные расходы на адресацию — и соответственно задержка — для кэш-памяти значительно выше. Это прямое следствие фундаментальных различий между кэш-памятью и регистровыми блоками. Обращение к кэш-памяти осуществляется при помощи адресов памяти полной длины, и благодаря этому кэш-память прозрачна для программиста на машинном уровне. А регистровые блоки адресуются короткими номерами регистров, так что они должны быть видимы на машинном уровне. Короткие номера регистров обычно указываются в команде, поэтому их декодирование производится очень просто и быстро. С другой стороны, длинный адрес памяти, необходимый для выборки операнда из кэш-памяти, требует более высокой полосы пропускания каналов обмена, что приводит к увеличению стоимости. Длинный адрес нелегко поместить в команду, он даже обычно неизвестен во время компиляции, если не считать таких операндов, как глобальные скаляры. Как правило, этот адрес приходится формировать во время выполнения программы, что требует как минимум обращения к регистру или полноразрядного сложения либо и того и другого. Что касается локальных скаляров, то здесь накладные расходы на адресацию состоят в прибавлении короткого смещения к содержимому регистра-указателя стека. В качестве примера в табл. IV приводятся сравнительные данные о временах доступа к локальным целым, хранящимся в регистровых блоках и в кэш-памяти, для некоторых команд мини-компьютеров PDP-11/70 и VAX-11/780 корпорации DEC. Отметим, что аппаратура компьютера VAX-11/780 предусматривает возможность одновременного чтения двух регистров и записи в третий за 200 не и что доступ к кэшпамяти при наличии в ней нужного слова также занимает 200 не. Остальное время выполнения операций, перечисленных в табл. IV, затрачивается на декодирование команды, на вычисление исполнительного адреса (адресов) и на доступ (доступы) к кэш-памяти. Если даже процессор построен с применением конвейеризации, многопортовой кэш-памяти или и того и другого, чтобы ускорить операции над локальными скалярами, находящимися в кэш-памяти, то все же довольно трудно и дорого сделать выполнение этих операций столь же быстрым, как
Таблица
IV
Время д о с т у п а (в н а н о с е к у н д а х ) к локальным скалярам, хранящимся в регистровых блоках и в кэш-памяти 3
PDP-11/70
i,j : регистр i: регистр, j: стек ( о п е р а н д в кэш-памяти) i: стек (операнд в з а п и с ь ) , j: регистр
VAX-11/780
300
400
1050
800
1500
1200
2250
1400
кэш-памяти/сквозная
i, j: стек (операнд в кэш-памяти/сквозная пись) а
,
за-
1
Время выполнения команды пересылки i«-J (получаемой при компиляции оператора i:=J).
операций типа «регистр — регистр». С другой стороны, кэшпамять, подобно основной памяти, можно использовать для хранения операндов любого типа, в то время как регистровые блоки позволяют хранить только определенные типы операндов (табл. III). Регистровые блоки могут использоваться для хранения констант, а также промежуточных результатов, которые формируются в процессе вычисления выражений и невидимы на уровне исходной программы (написанной на языке высокого уровня, или ЯВУ). Регистры, поскольку они адресуются прямо, при помощи полей самой команды, нельзя использовать для размещения массивов и структур данных. С точки зрения скалярных переменных ситуация не столь однозначна. Б. Распределение скалярных переменных по регистрам. Ре-
зультаты измерения программ, приведенные в п. IIB, показывают, что из каждых ста операндов ЯВУ, к которым осуществляется обращение во время выполнения, примерно 25— константы, 50 — скаляры и 25 — данные структурного типа. Если исключить из рассмотрения константы, поскольку их можно помещать в команды, остается соотношение ссылок 50 скалярных на 25 структурных. Однако для каждой структурной ссылки ЯВУ необходим доступ минимум к одной скалярной переменной — индексу массива либо указателю «структуры» или «записи». Таким образом, на уровне машинного языка это соотношение становится минимум 50 + 25=75 скалярных ссылок на 25 структурных. Из-за большого различия между регистровыми блоками и кэш-памятью по общей скорости доступа и большой часто-
ты использования скаляров в программах распределение скалярных переменных по регистрам имеет важное значение для увеличения быстродействия и поэтому заслуживает гораздо большего внимания, чем ему уделялось разработчиками большинства архитектур коммерческих процессоров. Чтобы добиться достаточно высокой эффективности распределения переменных по регистрам, необходимо решить ряд проблем. Первая проблема возникает в случае, если количество подобных переменных в программе больше, чем число регистров в целевом компьютере. Для достижения более высокого быстродействия целесообразно прежде всего распределять по регистрам наиболее часто используемые переменные. Однако во время компиляции частота использования неизвестна. Некоторые языки предоставляют программисту возможность выдавать компилятору указания, подобные описаниям, предусмотренным в языке Си: register integer i; register struct node *p; /*указатель на узел структуры*/.
При этом отвественность за эффективность распределения регистров несет сам программист. Другой подход состоит в том, чтобы включить в схему компьютера столько регистров, сколько потребуется для хранения большинства скалярных переменных. Это осуществимо для локальных скаляров процедур; для размещения всех аргументов и локальных переменных приблизительно 95% процедур достаточно 12 слов (см. конец п. II В). Распределение только локальных скаляров по регистрам позволяет вполне удовлетворительно решить проблему, поскольку основной процент всех скалярных ссылок относится именно к локальным скалярам. Вторая, более сложная проблема — это проблема скалярных переменных с псевдонимами, т. е. скаляров, обращение к которым производится при помощи указателя. В языке Си программист может затребовать адрес некоторой переменной, а впоследствии использовать этот адрес любым удобным способом. Например, вот каким образом процедурам передаются аргументы возврата: scant ("%d
я", &£&/);
Так что же такое адрес переменной, находящейся в регистре, и как организовать доступ по этому адресу (переназначение адреса), чтобы попасть в нужный регистр? Близкая по характеру проблема — восходящая адресация в языках с блочной структурой. Восходящая адресация — это обраще-
ние к локальным скалярам родительской процедуры со стороны одной из ее дочерних процедур. Каким образом процессор узнает, находятся ли локальные скаляры этой родительской процедуры в тех или иных регистрах? Одно возможное решение подобных проблем — использование двухпроходного компилятора, который выявлял бы все псевдоименные переменные при первом проходе и распределял бы их по памяти при втором проходе. Другое возможное решение — предусмотреть в процессоре специальную аппаратуру, которая в моменты доступа обнаруживала бы все адреса, относящиеся к регистрам, и осуществляла бы соответственные переназначения этих адресов (см. обсуждение этой проблемы в [15, Sect. 3.2.3]). Третья проблема касается запоминания и восстановления локальных скалярных переменных с соответствующими обменами между регистрами и памятью при вызовах и возвратах из процедур. Здесь цель в том, чтобы свести к минимуму накладные расходы на вызовы процедур. Эту важную проблему мы обсудим ниже. В. Многочисленные перекрывающиеся окна регистров. Рас-
пределение аргументов процедур и локальных скалярных переменных по регистрам приводит к существенному выигрышу во времени выполнения благодаря высокой скорости доступа к регистрам. С другой стороны, необходимость запоминания содержимого регистров в памяти при вызовах процедур и восстановлении при соответствующих возвратах снижает производительность. Как минимум содержимое тех регистров, которые используются родительской процедурой и к тому же должны использоваться дочерней процедурой для хранения собственных переменных, необходимо направить в память до того, как дочерняя процедура произведет их перезапись. Вызовы процедур в типичных современных (структурированных) программах осуществляются весьма часто, так что расходы на подобное запоминание-восстановление никак нельзя игнорировать. Суммарные накладные расходы на выполнение команд вызова и возврата из процедур для стандартных процессоров сейчас настолько велики, что могут доходить до 50% общего количества обращений к памяти во время выполнения программы [3, table 3]. Хотя индивидуальные вызовы-возвраты производятся весьма часто, большие колебания динамической глубины вложенности процедур для типичных программ нехарактерны. Это свойство мы называем локальностью глубины вложенности процедур. Это свойство локальности иллюстриру-
1; , iii
11 II III III ""I"""" II '
'"I x-
t=33
АA t w -5
Параметр /
•I1"""1
к
/vVsAA^
Глубина вложенности Рис. 2. Локальность глубины вложенности процедур. Параметр t указывается в единицах вызовов-возвратов из процедур.
ется на примере графика глубины вложенности (рис. 2). Прямоугольником выделен участок, в котором глубина вложенности остается в пределах 5 (w = 5) в течение периода, соответствующего 33 вызовам-возвратам из процедур (£=33). Это свойство локальности можно с успехом использовать, если в процессоре предусмотреть ряд наборов, или банков, регистров, как предложили Баскетт [26] и Сайте [27]. При вызовах процедур производится выделение нового банка регистров, благодаря чему исключаются накладные расходы на запоминание/восстановление содержимого регистров. По завершении процедуры соответствующий банк регистров может быть предоставлен новой процедуре. Кроме того, желательно также ускорить передачу параметров и значений возврата между родительскими и дочерними процедурами, используя для этой цели регистры. Для этого необходимо, чтобы к определенным регистрам имели возможность доступа и родительская и дочерняя процедуры, другими словами, чтобы банки регистров обеих процедур перекрывались. Удобным способом реализации подобной возможности является механизм с многими перекрывающимися «окнами», накладываемыми на непрерывный блок регистров. Такой механизм, предложенный Халбертом и Кесслером [20], используется в процессорах RISC I и II, разработанных в Беркли. Измерения, результаты которых приведены в [20, Sect. II. С; 23], показывают, что 97% или более процедур имеют менее шести аргументов; это значит, что вполне достаточно обеспечить перекрытие соседних окон приблизительно на полдесятка регистров. В процессоре имеется указатель текущего окна, который выбирает одно из окон и делает его регистры доступными
на период выбора. При вызовах и возвратах из процедур значение указателя текущего окна модифицируется таким образом, чтобы указывать на следующее или предыдущее окно соответственно. Когда глубина вложенности процедур превышает количество окон w, происходит (положительное) переполнение и содержимое некоторых старых окон приходится направить в основную память чтобы освободить место для новых процедур. Желательно организовывать управление окнами как циклическим буфером, в котором хранились бы w записей об активации (инициировании) самых последних процедур. Пока глубина вложенности колеблется в пределах w, ни одно окно не приходится записывать в основную память или восстанавливать из памяти. Прямоугольниками на рис. 2 показаны уровни глубины вложенности, соответствующие w окнам регистрового блока в различные периоды времени. Начало каждого нового прямоугольника — это момент, когда происходит положительное переполнение или отрицательное переполнение (выход за нижнюю границу блока регистров). Стратегия управления окнами, отображенная на данном рисунке, предполагает запоминание точно одного окна при каждом положительном переполнении и восстановление точно одного окна при каждом отрицательном переполнении. Тамир и Секуин [24] исследовали различные стратегии и пришли к выводу, что такая простая стратегия запоминаниявосстановления по одному окну для большинства практических ситуаций является наилучшей. Халберт и Кесслер [20] и Тамир и Секуин [24] проводили измерения локальности глубины вложенности, подсчитывая среднее количество вызовов-возвратов t, выполняемых в периоды между соседними положительными или отрицательными переполнениями (это количество соответствует средней длине t прямоугольников на рис. 2). Некоторые полученные результаты приведены в табл. V, причем для указанной выше стратегии запоминания-восстановления по одному окну. (Все исследуемые программы были написаны на языке Си.) Интересно отметить, что программы довольно четко разделились на две группы — большие, перечисленные слева, и малые, перечисленные справа. Максимальная абсолютная глубина вложенности для некоторых малых программ даже не превышает 6 процедур. Когда процессор имеет однорегистровое окно, как в случае традиционных архитектур, это окно приходится запоминать-восстанавливать при каждом вызове-возврате. Когда в процессоре предусмотрено ю окон, одно окно приходится запоминать-восстанавливать только на каждые t вызовов-возв-
Таблица
V
Среднее количество вызовов-возвратов, t, м е ж д у положительными и отрицательными переполнениями
W
Компилятор языка Си компьютера VAX [20] Компилятор языка Си компьютера RISC [24] Паскаль — интерпретатор [20] troff — наборщик [20] Ханойские башни [24]
Шесть малых нечисловых программ [20] Программа-головоломка [24]
4
7—12
6
15—50
от 150 д о оо
8
30—100
от 5 0 0 д о оо
40—300
ратов. Приведенные в таблице измерения свидетельствуют о том, что 6—8 окон достаточно для того, чтобы уменьшить количество запоминаний-восстановлений окон на пару порядков величины по отношению к традиционным архитектурам. Реализация механизма перекрывающихся окон регистров показана на рис. 3. Рис. 3, б — р-канальная МОП-схема, реализующая дешифратор адресов регистров для случая, когда в любой момент должны быть 32 доступных регистра; нумерация регистров организована таким образом, что перекрывающиеся регистры находятся в двух окнах с номерами, различающимися на 16. Более полное описание механизма перекрывающихся окон можно найти в [3, pp. 11—13, 15, Sect. 3.2]. Г. Достоинства и недостатки больших регистровых блоков.
Как и реализации всех аппаратных возможностей процессора, реализация механизма с многими окнами регистров не обходится бесплатно. 1) Большой регистровый блок стоит дорого — по количеству используемых транзисторов и по занимаемой площади кристалла. Таким образом, увеличение размера блока приводит к тому, что дефицитных кремниевых ресурсов не хватит каким-либо другим функциональным блокам. 2) Чем больше размер регистрового блока, тем длиннее его шины и линии адресов, тем выше их паразитные емкости и тем ниже скорость дешифрации и считывания. 3) Дешифраторы на логических вентилях И-ИЛИ, необходимые для реализации механизма перекрывающихся окон (рис. 3), работают медленнее или потребляют большую мощность, чем простые И-дешифраторы обычных регистровых блоков.
Текущее окно А В
\ Окно В
_ N1 N1 N0 NО Номер регистра
Дешифратор
Регистры
+5В Выход deuiucppamop Окно A —j[,V4 или
^ H f МО1
Окно В
или МЗ
или N0
или1[ W77;
Рис. 3. Перекрывающиеся окна регистров.
4) На запоминание и восстановление регистрового блока с многими окнами при переключениях с процесса на процесс (переключениях контекста) затрачивается гораздо больше времени. Как и во всех прочих случаях, аппаратный механизм перекрывающихся окон регистров следует вводить в схему процессора таким образом, чтобы достигаемый выигрыш превышал затраты. Учитывая существенное различие в скоростях доступа к регистровым блокам и к кэш-памяти, высокую частоту вызовов процедур и высокую стоимость запоминания содержимого регистров в основной памяти, можно считать, что многооконный регистровый механизм будет привлекательным и целесообразным для самых различных архитектур и приложений. Во многих случаях гораздо выгоднее использовать.
транзисторы на реализацию регистров для обеспечения высокоскоростного доступа к операндам, чем на поддержку редко употребляемых сложных команд. Увеличение общей длительности машинного такта из-за снижения скорости дешифрации адресов и чтения регистров необходимо тщательно оценивать применительно к каждой конкретной технологии, схеме конвейеризации и организации тракта обработки данных, а затем сопоставлять с количеством тактов, экономящихся благодаря тому, что операции по запоминанию-восстановлению регистров придется выполнять реже. Табл. V говорит о том, что достижение выигрыша в скорости благодаря дополнительным окнам регистров «насыщение» происходит при числе окон w = 5—7. Таким образом, вполне можно считать, что «оптимальное» число окон составляет от 3 до 8. Более подробное обсуждение этого вопроса можно найти в [28]. Представляет интерес вопрос о том, влияет ли увеличение регистрового блока на задержки переключения с процесса на процесс, и связанный с ним вопрос о том, следует ли использовать многорегистровые окна (или «наборы») по одному на процедуру или по одному на процесс. Ключом к ответу на оба этих вопроса является отношение частоты вызовов процедур к частоте переключений с процесса на процесс. Это отношение обычно настолько велико, что точные цифры даже не нужны: на одну команду вызова процедуры приходится приблизительно от 25 до 250 выполняемых команд (см., например, [2, fig. 15]), в то время как перед переключением с процесса на процесс выполняются, как правило, десятки тысяч команд (см., например, [29, р. 34]). Поскольку вызовы процедур происходят примерно на два порядка величины чаще, чем переключения процессов, окна регистров следует использовать для поддержки процедур, а потери, связанные с запоминанием содержимого большего количества регистров при переключениях процессов вполне компенсируются тем, что при вызовах процедур запоминается меньше регистров. Описанный выше механизм перекрывающихся окон для повышения общего быстродействия процессора можно модифицировать несколькими способами. Ниже приводятся возможные усовершенствования и кратко рассматриваются их достоинства и недостатки; более подробное описание см. [15, Sect. 6.2, 18, 28, 30]. Кроме того, следует отметить, что для уменьшения числа вызовов процедур и возвратов можно использовать линейное расширение соответствующих процедур, при этом практически отпадает необходимость в регистровом блоке большого размера.
1. Специальные средства поддержки механизма окон. Если для уменьшения задержки на запоминание-восстановление окон иметь дополнительную аппаратуру, то можно допустить более высокую частоту положительных и отрицательных переполнений. Благодаря этому появляется возможность использовать регистровый блок с меньшим количеством окон и с меньшими емкостными задержками. Затраты времени на запоминание-восстановление окон могут быть сокращены несколькими указанными ниже способами. Один возможный вариант — ввести аппаратную поддержку для обработки положительных и отрицательных переполнений. Получаемые при этом задержки меняются в зависимости от конкретного подхода: 1) Положительное и отрицательное переполнения могут восприниматься как исключительные ситуации для процессора, приводящие к вызову обычной программы обработки прерываний. При выполнении этой программы некоторое время тратится на служебные, вспомогательные операции и некоторое время — на несколько операций пересылки типа «регистр-память». Это самый низкоскоростной, преимущественно программный способ. 2) Делается то же, что в первом случае, однако используется команда групповой пересылки, которая копирует целое окно быстрее, чем ряд индивидуальных команд пересылки регистров. Этот способ обеспечивает более высокую скорость, однако требует реализации более сложной команды. Он был применен в микропроцессоре SOAR [31]. 3) Положительное и отрицательное переполнения могут обрабатываться целиком аппаратным способом, вместо того чтобы прибегать к механизму прерываний. Накладные расходы времени значительно сокращаются, если применяется аппаратура, способная определять, какое окно необходимо скопировать и куда. Копирование осуществляется по команде групповой пересылки, упомянутой выше. Этот способ обеспечивает еще более высокую скорость, но требует сложной управляющей аппаратуры. Дополнительного повышения скорости позволяет достичь команда блочного обмена «ЦП-память» по каналу большой пропускной способности. Такой канал, реализованный в дополнение к обычному интерфейсу между ЦП и основной памятью (кэш-памятью), рассчитанному на пересылку по слову за цикл, обеспечивает быстрый доступ к последовательным ячейкам памяти с применением таких методов, как чередование (интерливинг) банков памяти или предусмотренный в однокристальных динамических ЗУПВ страничный обмен. При этом можно использовать небольшой регистро-
вый блок с эквивалентно высокой полосой пропускания. Такой метод требует дорогостоящих шин связи ЦП и памяти, но позволяет ограничиться лишь небольшим высокоскоростным регистровым блоком. Эффективную задержку на запоминание-восстановление окон можно уменьшить также, если копировать содержимое регистров в «фоновом» режиме, т. е. параллельно с обычным выполнением команд. Для этого требуется более сложная аппаратура управления и, быть может, вторая шина обмена между ЦП и основной памятью. Здесь могут использоваться две схемы: а. Со сквозной записью. В типичных архитектурах операции записи в регистры производятся с максимальной частотой одна запись на такт. Выполнение этих операций можно организовать таким образом, что каждое значение, записываемое в регистр, будет также запоминаться (упрятываться) в соответствующей ячейке памяти (кэш-памяти) в течение ближайшего следующего такта. При подобной схеме явное запоминание окон никогда не приходится делать, но по-прежнему необходимо только восстановление окон. б. С непрерывным обратным копированием. Этот алгоритм предложил Сайте [27]. Окна переписываются из ЦП в основную память и обратно практически непрерывно в фоновом режиме. После выполнения вызова процедуры соответствующее окно записывается в основную память в порядке подготовки к новому вызову. Аналогично после возврата из процедуры окно восстанавливается в порядке подготовки к новому возврату. Этот алгоритм может способствовать достижению главной цели, чтобы процессору почти никогда не приходилось ждать запоминания-восстановления окон. К сожалению, случаи, когда два вызова или два возврата выполняются очень быстро друг за другом, встречаются редко. Необходима поэтому специальная аппаратура для высокоскоростного копирования блоков в фоновом режиме, чтобы фоновый процесс не занимал слишком много времени. 2. Переменные размеры окон. Если регистровые окна будут иметь размер около десятка регистров каждое, то их будет достаточно для размещения записей, связанных с активацией большинства процедур (разд. II.В). Однако среднее число аргументов и локальных переменных в расчете на процедуру составляет всего лишь от четырех до шести [15, Sect. 6.2.1, 18, 20]. Таким образом, в регистровых блоках с окнами фиксированного размера многие регистры остаются неис-
пользованными. Подобную неэффективность можно частично исключить двумя способами: а. Запоминание-восстановление только использованных регистров [32]. Окна по-прежнему имеют фиксированный размер (около 12 регистров), но при положительных и отридательных переполнениях производится запоминание-восстановление только тех регистров, которые реально использовались, благодаря этому сокращаются накладные расходы на копирование. Однако этот алгоритм довольно нерационален из-за высокой стоимости аппаратуры для слежения за использованием регистров. б. Окна переменных размеров. Это важная альтернатива механизму с окнами фиксированного размера [18]. Здесь размер каждого окна определяется во время выполнения и выбирается точно таким, какой требуется для соответствующей процедуры. Регистровый блок в целом рассматривается как небольшая кэш-память, размещаемая на вершине исполнительного стека. Этот алгоритм позволяет иметь то же самое количество окон в среднем при использовании меньшего числа физических регистров. Однако ему свойственны следующие недостатки: требуется выполнять короткое сложение, чтобы получить возможность адресовать нужный регистр, и одну или две дополнительные команды на пару вызов-возврат из процедуры для обновления и контроля значения указателя окна [15, Sect. 6.2.1; 18]. IV. Наборы команд, ориентированные на регистровую архитектуру
Измерения параметров программ, приведенные в разд. II, свидетельствуют о простоте большинства операций, встречающихся в вычислениях общего характера на машине с фоннеймановской архитектурой, и о высокой доле числа обращений к скалярным операндам. В разд. III показано, почему соответствующая архитектура должна быть четко ориентирована на эффективное распределение скалярных переменных по регистрам. Чтобы обеспечить распределение наиболее часто используемых операндов по регистрам с учетом простоты наиболее часто встречающихся операций, была предложена регистрово-ориентированная архитектура компьютера с сокращенным набором команд RISC. Подобная архитектура имеет простые команды типа «регистр-регистр», команды для пересылки данных между регистром и памятью и простые команды передачи управления. Все эти команды можно реализовать при помощи эффективного конвейерного
л
тракта обработки данных и несложной схемы синхронизации и управления. А. Операции типа «регистр-регистр». К простейшим
опера-
циям в машине фон-неймановской архитектуры относятся те, которые выполняются над данными, находящимися внутри центрального процессора. Существуют два принципиально различных вида архитектур: стековая и регистровая. Стековые команды обрабатывают данные, которые размещаются в ячейках, выбираемых по умолчанию, т. е. на вершине стека для вычисления выражения, который часто реализуется в регистрах, известных только на аппаратном уровне. Отметим, что стек вычисления выражения концептуально и функционально отличается от стека для хранения записей активации процедур. Стековые команды (иногда называемые также безадресными командами) позволяют получать очень компактный машинный код для вычисления выражения, поскольку они не должны содержать битов для указания адреса ячейки, где будут храниться промежуточные результаты. Однако, как упоминалось в разд. II, среднее выражение очень короткое: оно содержит лишь три четверти операции; выражение с двумя и более операциями — а только такие выражения вычисляются с получением промежуточных результатов— встречаются весьма редко. Таким образом, архитектуры, оптимизированные для вычисления выражений, не столь эффективны для более обычного стиля программирования, примеры которого приведены в разд. II. В наиболее общем виде команды типа «регистр — регистр» можно записать следующим образом: Rd^-Rsiop Rs2 И Rd-^op константа. Второй формат играет важную роль, поскольку позволяет задавать константы непосредственно в командах. Эти форматы охватывают вариант с двумя операндами Ra-^RaOpB (где В может обозначать Rb ИЛИ константу) как особый случай d = sl. Они охватывают также регистровые команды пересылки и сравнения как особые случаи: когда RS2 = 0 и оператор « + », образуется команда «переслать». Если оператор «—» и Rd вначале проверяется, а затем отбрасывается, то образуется команда «сравнить». Эти особые случаи, которые, как показано в разд. II, встречаются довольно часто, можно закодировать как самостоятельные, более компактные команды. В архитектуре компьютеров RISC I и II Калифорнийского университета Беркли разработчики не пошли на подобное кодирование, поскольку использовали простой и унифицированный однословный формат команды, чтобы еде-
Rd 5 Условие
1 Непосредственная константа
А 31
24
Код операции 7
18
13
Результат
t 5 УКУ- бит
0 Короткий операнд
5
14 а
Код операции 7
Результат
Т ~ 5 VKV- бит
Непосредственная
константа
~19
Рис. 4. Форматы команд микропроцессора RISC Калифорнийского университета в Беркли: а — типа «регистр — регистр» и б — п е р е д а ч и управления.
лать декодирование быстрым и экономичным. Эта проблема будет обсуждена ниже, в разд. VII.Б. Пересылку как особый случай общего формата команды также можно было бы закодировать в виде отдельной высокоскоростной команды, поскольку она не требует выполнения какой-либо арифметической или логической операции. Мы опять-таки не пошли на подобное кодирование, поскольку такая команда с меньшим временем выполнения не уложилась бы непосредственно в стандартную конвейерную временную диаграмму [15, Sect. 3.3.3]. На рис. 4 показаны форматы команд архитектуры компьютеров RISC Университета Беркли. Поля номеров регистров должны быть длиной 5 бит, поскольку имеются 32 регистра, видимых для программистов. Команды типа «регистррегистр» в описанном выше общем виде соответствуют формату рис. 4,а. 7-бит поле кода операции (КОП) содержит «ор». Поле «результат» указывает Rd, за ним следует поле операнда R s i. Правые 14 бит команды могут указывать RS2 ИЛИ содержать 13-бит константу (большинство констант имеют малую длину, см. разд. II.В). Один из 32 видимых регистров, Rd, всегда содержит (аппаратно-реализованную) константу «О»; запись в этот регистр эквивалентна аннулированию записываемого значения. Бит 24 всех команд —это признак «установить коды условия» (УКУ-бит): если этот бит имеет значение 1, то производится установка триггеров 6-708
признаков нуля, отрицательного результата, арифметического переполнения и переноса соответственно результату выполнения данной операции. Эти признаки используются при синтезе команд проверки и сравнения. В микропроцессоре MIPS, представляющем разновидность RISC-архитектуры, применяются команды сравнения и ветвления в явном виде и не предусматривается признаков кодов условий [9] (см. также [8, 10]). В архитектуре RISC Университета Беркли в числе операций ор реализованы целочисленные сложение и вычитание, булевы операции над битами и сдвиги на произвольное количество разрядов. Команды пошагового умножения и пошагового деления не были реализованы из-за отсутствия специалистов соответствующей квалификации. Операции с плавающей точкой не были включены в набор команд, так как для их реализации требуется слишком большой объем схем, которые не уместились бы на кристалле ЦП при существующей технологии изготовления. А если даже их удалось бы разместить на кристалле, это привело бы к значительному снижению скорости тракта обработки данных из-за увеличения паразитных емкостей и длин межсоединений. Мы считаем, что для выполнения операций с плавающей точкой лучше всего использовать специализированный сопроцессор. Сдвиги на произвольное количество разрядов, включенные в набор команд компьютеров RISC I и II, в реальных программах встречаются довольно редко. Их реализация при помощи матричного сдвигателя оказалась в результате весьма дорогостоящей [15, Sect. 4.2.4]. Строго придерживаясь концепции RISC следовало бы исключить этот функциональный блок из тракта обработки данных. Вместо этого желательно иметь сдвиги на один бит — они встречаются в программах гораздо чаще, и их можно экономично реализовать в арифметико-логическом устройстве. RISC-процессор Университета Беркли имеет 32-бит архитектуру с побайтовой адресацией виртуальной памяти объемом 232 байт. Все команды типа «регистр-регистр» обрабатывают свои операнды как 32-бит целые в дополнительном двоичном коде. Символы и полусловные целые при загрузке в регистры преобразуются в полные слова, а поддержка чисел с плавающей точкой не предусматривается по причинам, упомянутым выше. Б. Команды обращения к памяти и
передачи управления.
Архитектуры процессоров RISC Университета Беркли, MIPS Станфордского университета и IBM-801 не имеют команд,
которые непосредственно работают с операндами, находящимися в основной памяти. Они предусматривают только простые команды обмена данными: загрузить и запомнить. Таким образом, сложные манипуляции с данными разбиваются на ортогональные компоненты, относящиеся к обмену и обработке. Это упрощает формат команд, временную диаграмму, конвейеризацию и обработку прерываний. Здесь мы вначале опишем команды обращения к памяти для компьютеров RISC I и II, а также тесно связанные с ними команды передачи управления (условный переход, вызов и возврат). Затем мы обсудим соответствующие вопросы быстродействия. 1. Описание команд. Команды загрузки имеют вид /?(Г«-Л4[испадр]; команды запоминания (записи в память) — Л1 [испадр а команды передачи управления — ПС^-испадр, где испадр — это «исполнительный адрес», М [испадр]—соответствующая ячейка памяти, а ПС —программный счетчик. Возможные способы определения исполнительного адреса являются важной характеристикой архитектуры — они называются режимами адресации. 1) Для глобальных скаляров испадр = константа; эта константа может иметь малую величину, если компилятор распределяет все глобальные скаляры вблизи адреса 0. 2) Для элемента а [/] линейного глобального массива испадр = а база +размер i, где а база — базовый адрес а [] (константа, которая может быть большой), а размер — размер элемента массива (константа, равная, как правило, 2, 4 или 8). 3) Для элементов массива или других данных, доступ к которым осуществляется по указателю, испадр = указатель. Этот способ адресации обычно более быстрый, чем предыдущий. Он часто используется для последовательного просмотра массивов — особённо символьных буферов. 4) Для поля (члена) некой структуры (записи) испадр= = р + смещение, где р — указатель данной структуры, а смещение— смещение поля (константа, обычно короткая). Этот же режим адресации применим для локальных скаляров, для хранения которых используется исполнительный стек. 5) Для большинства передач управления испадр = ПС + +расстояние передачи, обычно короткая константа. В программах встречаются, хотя и гораздо реже, и другие, более сложные варианты адресации (например, при работе с многомерными массивами или в режиме многоуровневой косвенной адресации).
RISC-архитектура Университета Беркли предусматривает следующие режимы адресации: испадр = ^81 + У?82, испадр = /?„! + 13-бит константа, испадр = ПС+19-бит константа. Эти режимы адресации в совокупности с использованием регистра R0 ( = 0), охватывают все основные способы формирования адресов, перечисленные выше (в предположении, что значение а база хранится в регистре), за исключением так называемой шаговой адресации (со сдвигом на размер элемента массива). Приведенное выше вычисление исполнительного адреса очень похоже на команду сложения, что в значительной мере способствовало унификации порядка выполнения команд, а благодаря этому — достижению простоты тракта обработки данных, конвейеризации, временной диаграммы и управления. Хотя такое сложение не всегда обязательно, в компьютерах RISC I и II оно всегда выполняется по той же самой причине, по которой, как указывалось выше, здесь реализуются команды пересылки типа «регистр-регистр» со сложением. Процессор IBM-801 имеет аналогичные режимы адресации [7]. Архитектура MIPS Станфордского университета имеет некоторые режимы адресации, не требующие сложения, однако в их аппаратной реализации опять-таки используется фиктивное сложение с нулем. Команды, использующие первые два режима адресации, соответствуют формату, показанному на рис. 4, а, а команды с режимом относительной адресации с значением программного счетчика как базы имеют формат с длинным кодом непосредственного адреса, показанный на рис. 4, б. Команды условного перехода содержат условие перехода в поле «результат» (рис. 4). Команды вызова запоминают значения программного счетчика в Ra, меняют значение указателя текущего окна после проверки на положительное переполнение, а затем осуществляют безусловную передачу управления по целевому адресу. Команды возврата меняют значение указателя текущего окна после проверки на отрицательное переполнение, а затем передают управление по значению программного счетчика, которое соответствующая команда вызова запомнила в регистровом блоке. 2. Конвейеризация, взаимозависимости по данным и порты памяти. Конвейеризация — весьма распространенный и эффективный способ повышения быстродействия машины. Главная проблема конвейерной архитектуры — необходимость учитывать взаимозависимости данных, обрабатывав-
Время
Рис. 5. Совмещение выборки и выполнения команд и задержанный переход управления.
мых различными командами на различных уровнях, ступенях конвейера. Традиционный подход к решению этой проблемы заключается в том, что подобные взаимозависимости обнаруживаются аппаратно, после чего выполнение последующих команд приостанавливается в ожидании момента, когда появятся необходимые результаты предыдущих операций. Такой подход, главная цель которого состоит в том, чтобы сделать реализацию конвейера невидимой с архитектурного уровня, не всегда является оптимальным, поскольку может вносить необязательные задержки. В качестве примера можно привести «задержанный переход» («ветвление и выполнение» [7]). На рис. 5 показан простой двухуровневый конвейер, образуемый в результате совмещения выполнения текущей команды с выборкой следующей команды. Когда выполняется команда условной передачи управления К1 при удовлетворении указанного условия, ее целевую команду КЗ невозможно выполнить в течение ближайшего следующего такта конвейера. В традиционных архитектурах центральный процессор находится в режиме холостого хода во время выборки КЗ. А в процессорах RISC I и II, MIPS и IBM-801 во время выполнения команды К1 производится выборка команды, следующей непосредственно за К1, а затем эта команда выполняется при одновременной выборке команды по целевому адресу К1 (в процессоре IBM-801 так делается только в случае, если К1 указывает на это). Компилятор, оптимизатор или «реорганизатор» конвейера стремится вставить после команды передачи управления К1 какую-либо полезную команду К2,
6 Рис. 6. Выполнение команд обращения к памяти для случаев а — одной общей памяти и б — раздельных устройств памяти команд и данных.
не зависящую от К1. Благодаря этому после передач управления приблизительно две трети квантов времени, которые в противном случае просто терялись бы, используются для выполнения полезной работы [3, 7, 9, 15, Sect. 3.1.3]. Этот способ задержанного ветвления служит одним из примеров того, каким образом удается обеспечить занятость ЦП в течение максимально возможного числа тактов при использовании набора команд, содержащего лишь простые команды с описанием примитивных операций. Разработчики компьютеров со сложными наборами команд CISC стремятся добиться такого же эффекта, комбинируя несколько примитивных операций в одной сложной команде, а затем микропрограммируя параллельное выполнение этих примитивов (в качестве примера можно привести команды ветвления с декрементом указателя). Аналогичная ситуация возникает в случае, когда нужно обеспечить занятость ЦП во время выборки данных из памяти. Рис. 6 иллюстрирует эту ситуацию на примере некоторых команд компьютера типа RISC. Все подобные команды описывают простые, примитивные операции ЦП, для выполнения которых требуется один такт ЦП, совмещаемый с одним обращением к основной памяти (кэш-памяти). На рис. 6,а показан случай, когда имеется одна шина обмена
ЦП с общей памятью для команд и для данных, и поэтому ЦП не может производить выборку новой команды во время обращения к памяти за данными и ему приходится простаивать. Во многих архитектурах эту проблему пытаются решить путем комбинирования нескольких примитивных операций в одной команде, с тем чтобы некоторые из этих операций можно было выполнять во время обращения к памяти за данными (примером могут служить команды загрузки с инкрементом значения указателя). Разработчики процессоров IBM-801 и MIPS пошли по другому пути: они предусмотрели в ЦП два раздельных порта для доступа к командам и данным, как показано на рис. 6,6. Благодаря этому ни один такт ЦП не теряется (пока есть работа, которую ЦП может делать и которая не зависит от загружаемых данных), набор команд остается простым и достигается полная гибкость с точки зрения совмещения обращений к основной памяти данных и любых других примитивных операций. В машине RISC Университета Беркли команды загрузки и запоминания употребляются гораздо реже, чем обычно, благодаря многооконному регистровому механизму. В этой связи разработчики посчитали необязательным иметь два порта-канала для обмена ЦП с памятью. От упаковки более чем одной примитивной операции в одну команду отказались, поскольку это нежелательным образом отразилось бы на микроархитектуре — формат команды пришлось бы сделать более сложным, что в свою очередь привело бы к усложнению дешифрации команд и увеличению соответствующих задержек, а также к дополнительным трудностям при обработке прерываний. Анализ показал, что лишь немногие комбинации примитивов можно было бы упаковать в 32-бит формат команды, причем частота их появления в обычных программах весьма невелика; команды длиной более 32 бит в данном случае нецелесообразны, поскольку они требовали двух тактов выборки. Влияние того или иного выбора набора команд и формата команд на размеры программ обсуждаются в разд. VI. В общем распределение часто используемых скаляров по регистрам упрощает выполнение наиболее употребительных операций, делая эти операции примитивами типа «регистррегистр». Малая частота употребления сложных операций делает нецелесообразной их поддержку при помощи специальной аппаратуры, поскольку это привело бы к неоправданному увеличению объема схем и длительности такта машины. Конвейеризация является более эффективным решением, обеспечивающим занятость центрального процессора максимальную долю общего времени. Простой формат команды,
разрядность которого совпадает с числом линий шины выборки команды, позволяет добиться высокой скорости и эффективности выборки и декодирования команд. Таким образом, в целом применение RISC-архитектуры обеспечивает резкое уменьшение объема схем управления и, как мы увидим в следующем разделе, соответствующее сокращение времени, затрачиваемого на проектирование и отладку процессора. V. Микроархитектура процессора RISC II
Микроархитектура процессора, т. е. организация его аппаратуры в конкретной реализации, в существенной степени определяет быстродействие компьютера в целом. Это следует учитывать с самого начала процесса проектирования, в том числе при выборе набора команд. Некоторые примеры возможных компромиссных решений, охватывающих многие этапы иерархии проектирования, были приведены в последних двух разделах и, в частности, в разд. IV.B, где описывались команды обращения к памяти и передачи управления. В настоящем разделе вначале будут рассмотрены схемы конвейеризации с различными степенями совмещения операций. Затем будет более подробно описан трехуровневый конвейер компьютера RISC II, его базовые временные зависимости и тракт обработки данных. Наконец, будет представлена организация секции управления компьютера RISC II, которая благодаря сокращенному набору команд является очень простой и компактной. А. Двух-, трех- и четырехуровневые конвейеры. На рис. 7 показаны три различные конвейерные схемы, которые можно использовать как основу для реализации архитектур типа RISC. Здесь представлены последовательности команд «регистр— регистр» или передач управления (выполнение команд обращения к памяти может осуществляться, как описано в п. IV.B.2). Каждая команда типа «регистр — регистр» выполняется как ряд следующих действий: 1) Выборка команды из основной памяти или из кэшпамяти команд («выборка»); 2) Дешифрация двух входящих в формат команды полей номеров регистров — операндов (чт. per) и одновременное декодирование остальных полей команды и направление непосредственной константы в тракт обработки данных; 3) Выполнение арифметической или логической операции или сдвига согласно указанному в команде коду операции (оп);
Рис. 7. Конвейеры с увеличенным количеством уровней: а — двухуровневый, б — трехуровневый и а — четырехуровневый.
4) Запись результата операции в регистр — потребитель, регистр результата (зп. per). Команды передачи управления выполняются аналогичным образом с тем отличием, что на последнем этапе значение результата используется как исполнительный адрес для выборки команды. В качестве регистра операнда эти команды часто используют программный счетчик. На рис. 7, а показан двухуровневый конвейер, реализованный в компьютере RISC I. На первом уровне производится выборка команды, а на втором — ее выполнение. Фазы выполнения последующих команд не перекрываются, и поэтому между ними нет взаимозависимости по данным. Однако взаимозависимость по данным существует между уровнями выполнения и выборки, когда встречаются команды передачи управления. Как упоминалось в п. IV.B.2, эти взаимозависимости учитываются на архитектурном уровне введением задержанного ветвления.
На рис. 7, б показан трехуровневый конвейер, реализованный в компьютере RISC II. Здесь второй уровень разделен на две части, каждая из которых может поэтому иметь меньшую длительность. На первом уровне также производится выборка команды. Это нужно делать быстрее, если желательно добиться сокращения общего такта машины. На втором уровне производится чтение регистров операндов и выполнение операции. Результат записывается в регистр результата на третьем уровне параллельно с выполнением операции, указанной следующей командой, в то время, когда регистровый блок в противном случае просто находился бы в режиме холостого хода. При таком подходе взаимозависимость по данным возникает, если регистр операнда в команде К2 совпадает с регистром результата команды Ю. Эту ситуацию необходимо обнаруживать при помощи специальной аппаратуры, а результат команды KJ должен предоставляться команде К2 путем внутренней передачи с уровня на уровень конвейера или организации конвейерной цепочки, т. е. без выполнения обычной пары операций записи в регистр и чтения из регистра. На рис. 7, в показан четырехуровневый конвейер, подобный применяемому в процессоре IBM-801. Этот четырехуровневый конвейер обеспечивает использование тракта обработки данных в максимально возможной степени, насколько это позволяют взаимозависимости по данным. Результат арифметической, логической операции или сдвига, как только он образуется, может использоваться в качестве исходного операнда для следующей команды. Чтобы избежать передач управления с двойными задержками (см. рис. 7, в), исполнительный адрес ПС-(-константа для передач управления относительно значения программного счетчика (которые представляют подавляющее большинство всех передач управления) может вычисляться параллельно с операциями чтения регистров операндов. Четырехуровневый конвейер предъявляет более серьезные требования к регистровому блоку и к механизму выборки команд. Операции чтения и записи для регистрового блока выполняются одновременно, а время выборки команды должно быть таким же коротким, как время выполнения сложения. Б. Основные временные зависимости для трехуровневых кон-
вейеров. Существуют некоторые основные временные зависимости, которые определяют организацию конвейера и ограничивают его предельное быстродействие. Они зависят от выбранного набора команд и принятого способа конвейеризации, но сравнительно мало зависят от конкретных
Передача результата по внутренней кончцепочке вейера
Декодирование команды] и направление константы Операция
\х \
ЦП Память
— ^ С иг
^
J
/
Декодирование / iWMepa регистра,' 7 F(результат готоВ Выравнивание ) Выдача (адреса)
Чтение (команды данных)
Рис. 8. Основные временные зависимости для процессора RISC II.
деталей построения тракта обработки данных. Здесь мы обсудим эти зависимости на примере процессора RISC\II, набор команд и трехуровневый конвейер которого были представлены выше. Что касается тракта обработки данных, предположим, что имеется регистровый блок с двумя портами чтения и одним портом записи, связанный с двумя разделяемыми шинами чтения-записи, рассчитанными на цикл чтения-записи с предварительным зарядом [33]. Применение такого двухшинного регистрового блока стало главным отличием процессора RISC II от RISC I. Благодаря этому процессор RISC II имеет на 75% больше регистров, чем RISC I с его трехшинным регистровым элементом, несмотря на то что площадь кристалла RISC II на 25% меньше [4, 34]. На рис. 8 показан абстрактный граф временных зависимостей для подобного процессора. Здесь стрелки представляют операции тракта обработки данных, а вершины — причинно-следственные зависимости. Если операция Y зависит от операции X и обязательно должна следовать за ней во времени, то стрелка, представляющая операцию У, начина-
ется в конце стрелки X. Один проход против часовой стрелки по верхней части диаграммы представляет основные операции, происходящие в ЦП в течение одного машинного такта. Аналогично один проход по часовой стрелке вокруг нижней половины диаграммы представляет цикл обращения к памяти, происходящего параллельно. Стрелка Л-УВ представляет операцию АЛУ, а стрелка A-+F — сдвиговую операцию. Обе такие операции могут начинаться только после того, как прочитаны регистры операндов (стрелка G-wl). Результат операции АЛУ (точка В) может быть записан в регистр результата или использоваться для внутренней передачи с уровня на уровень конвейера в течение следующего цикла (путь B-+F-+A). Возможен и вариант, что этот результат будет исполнительным адресом памяти для доступа к данным или для выборки команды. Путь иллюстрирует операцию чтения памяти. Если эта операция чтения памяти есть выборка команды, то стрелка E-*-G представляет декодирование полей номеров регистров операнда этой команды, которое должно произойти до того, как сможет начаться обращение к соответствующим регистрам для чтения. Прежде чем начнется операция АЛУ или сдвига, необходимо декодировать остальные поля команды и выдать константу в тракт обработки данных (стрелка Е->А). Стрелка E-+F обозначает операцию выравнивания и размножение знака-заполнения нулями, необходимые, когда из произвольной ячейки памяти в младшие разряды регистра загружаются байты и короткие слова. Таким образом, точка F представляет результат, который образуется на предпоследнем уровне конвейера и который должен быть записан в регистр результата на последнем уровне (точка А). Цикл чтения-записи регистра с предварительным зарядом показан как цикл H-*-G-*-A-*-H. При построении диаграмм рис. 8 мы старались хотя бы грубо придерживаться реальных значений временных параметров. Длины стрелок приблизительно пропорциональны времени, требуемому для выполнения соответствующих операций тракта обработки данных. Точки £ и Б на диаграмме показаны разделенными произвольным отрезком времени t\. Точка Е представляет конец цикла чтения памяти, а точка В — начало следующего цикла обращения к памяти. Вследствие использования мультиплексированных линий адресов/ /данных и неперекрывающихся обращений к памяти событие В должно происходить после события Е, т. е. t\ должно быть больше нуля. С учетом этого ограничения t\ является произвольным проектным параметром, который определяет, насколько время обращения к памяти (B->C-+D^>-E) дол-
ПАМЯТИ \Вход данных/ констант\
Шина А Регистровый блок Шина В СдВигатель
Выходная шина bus OUT
Рис. 9. Тракт обработки данных микропроцессора RISC II.
жно быть меньше длительности общего машинного такта. Рис. 8 показывает, что путь внутренней передачи промежуточного результата F-+-A не является критическим. Критическими путями являются циклы обращения к регистровому блоку (предварительный заряд) (чтение) G A->(запись) АН И путь в форме цифры 8: (декодирование регистра) (чтение регистра) СА-> ->(вычисление адреса) А в->-(выдача адреса) В с~+ (выборка команды)cd->~(прием команды)г>£. Если обозначить время такта Т, можно написать следующие базовые уравнения критического пути: Т > (предзаряд р е г и с т р а ) я й + (чтение регистра) оа+ + (запись р е г и с т р а ) ^ , Т » (декодирование р е г и с т р а ) в о + (чтение регистра) ga+ + (сложение А Л У ) / ) В — t u Г > (выдача адресов) вс+ (чтение памяти) с о + (прием) DE+ti-
Таким образом, параметр t\ отражает взаимозависимость между скоростными характеристиками памяти и ЦП. Чем меньше время доступа к памяти, тем больше t\ и тем медленнее осуществляются операции декодирования и чтения регистров и операции АЛУ. В. Тракт обработки данных микропроцессора RISC II. На рис. 9 показана схема тракта обработки данных микропроцессора RISC II. Регистровый блок предусматривает возможность доступа для чтения по двум портам — через шины bus Л и bus В. Один операнд поступает на вход АЛУ по шине bus D, это может быть значение либо шины bus Л, либо программного счетчика (в случае адресации относительно программного счетчика). Второй операнд АЛУ поступает
либо по цепи шина busfi-^блок 5#С-»-шина bus Я, либо константа-миина busL-миина bus R. Результат АЛУ может быть выдан либо на выходную шину bus OUT и использован в качестве исполнительного адреса, либо на шину busD и принят в блок DST. Из блока DST этот результат записывается в регистровый блок во время последнего шага конвейера. На шины busOLT и bus/) может также выдаваться содержимое регистров программного счетчика (имеются три варианта значений программного счетчика — по одному на уровень конвейера). Значение ПС выдается на шину busOLT при нормальных выборках команд, а на шину bus/) (вместо значения АЛУ) при выполнении команды вызова процедуры, когда значение программного счетчика необходимо запомнить в регистре. При выполнении операций сдвига значение шины bus Л принимается в ПС, а затем поступает на шину bus R либо bus L. Результат образуется на второй из этих шин сдвига и принимается в блок DST [32]. По командам загрузки производится выравнивание данных, поступающих ,из памяти, с использованием сдвигателя: входные данные-^ -инина L-ипина R-+DST. Таким образом, сдвигатель служит как для передачи непосредственных констант в АЛУ, так и для сдвига или выравнивания данных. Такие двойные функции позволили отказаться от дополнительной вертикальной шины для направления констант в тракт обработки данных. Благодаря компактной топологии удалось разместить полный восьмиоконный регистровый блок на кристалле ограниченной длины. Однако это потребовало, чтобы в течение некоторых циклов сдвигатель использовался дважды. Вначале мы думали, что это удастся сделать без потерь быстродействия. Однако после завершения схемного и топологического проектирования и проведения более тщательного моделирования выяснилось, что быстродействие процессора существенно снижается из-за отсутствия отдельной шины для констант [34]. Это подтверждает ту мысль, что для реализации часто употребляющихся операций ЦП следует выделять достаточно специальных аппаратных ресурсов. Матричный сдвигатель и связанный с ним входной хранящий регистр-блок формирователей SRC занимают значительную площадь кристалла; его шины R и L занимают также значительную часть участка в промежутке между •блоками DST и SRC. Таким образом, сдвигатель вносит дополнительные задержки на очень интенсивно используемом пути между АЛУ и регистровым блоком, что приводит к увеличению общей длительности такта машины. Поэтому мы
считаем, что сдвигатель на произвольное число битов не должен входить в критический путь тракта обработки данных — его можно разместить в каком-то другом месте, с возможностью доступа только по командам, допускающим меньшую скорость выполнения. При этом сдвиги на один или два бита, составляющие подавляющее большинство всех сдвигов, можно производить в АЛУ. Приведенные рассуждения позволяют понять, в чем заключается особенность архитектуры RISC: те или иные средства и возможности, включаемые в схему с целью ускорения выполнения определенной операции (операций), будут вызывать замедление других операций. В частности, слишком большая или слишком сложная схема ядра процессора будет обусловливать снижение его собственного быстродействия. Таким образом, в схему следует вводить только такие средства и возможности, которые будут ускорять выполнение наиболее часто используемых операций. Г. Секция управления микропроцессора RISC II. Главное преимущество сокращенного набора команд — кардинальное уменьшение объемов кремниевых ресурсов, требуемых для реализации функций управления. В микропроцессоре RISC II дешифратор кода операции занимает лишь 0,5% площади кристалла, содержит лишь 0,7% общего числа транзисторов, а трудоемкость его проектирования с учетом разработки топологии составила менее 2% общих трудозатрат. Дешифратор кода операции выполняет функции, для реализации которых в микропрограммируемых центральных процессорах используется память микрокода. Указанные цифры позволяют судить, насколько резко микропроцессор RISC II отличается от некоторых других современных микропроцессоров распределением аппаратных ресурсов: ПЗУ микрокода часто занимает от одной трети до двух третей площади кристалла. В настоящем параграфе описана секция управления микропроцессора RISC II и объяснено, каким образом достигнуты ее малые размеры. На рис. 10 показаны основные компоненты полной схемы секции управления микропроцессора RISC II, которые занимают всего лишь 10% общей площади кристалла и содержат 6% общего числа транзисторов. Фиксированный формат команд микропроцессора RISC II с небольшим количеством ортогональных полей дает возможность разбить биты команды на три группы — код операции, номера регистров и непосредственная константа — и при их поступлении на кристалл ЦП принимать раздельно на регистры-защелки, расположенные вблизи тех мест, где эти поля должны использоваться
Команда
Рис. 10. Секция управления микропроцессора RISC II.
Номера регистров и непосредственная константа проходят по конвейеру регистров-защелок («станций») и используются в соответствующем месте в соответствующее время. Декодирование семибитового кода операции вместе с однобитовым признаком состояния дает 30 бит информации расширенного кода операции. Коды операций декодируются по одному за такт. Имеется только один бит состояния, он служит для того, чтобы различать нормальный цикл и цикл обращения к данным памяти (см. рис. 6). Кроме 30 бит расширенного кода операции в управлении ЦП участвуют еще 9 бит. Они содержат информацию, ортогональную по отношению к коду операции, в частности определяют выбор регистра или константы как операнда-2, признак установки кодов условий (рис. 4), результат анализа условия перехода или служат для обнаружения взаимозависимости по данным с целью организации внутренней передачи промежуточных результатов с уровня на уровень конвейера. Сто сигналов управления, необходимых для работы процессора в целом, вырабатываются путем пропускания через логический вентиль И одного или более из упомянутых выше 3 0 + 9 бит с одним или более из четырех фазовых синхросигналов (как в многофазных микропрограммируемых процессорах). Большинство из ста логических вентилей, используемых
для формирования этих сигналов управления во времени, очень просты: 70 из них не имеют ни одного или имеют по одному входу управляющего бита синхронизации. Мы видим, что для управления выполнением команды достаточно нескольких десятков битов информации. Это существенно меньше, чем число битов микрокода, требуемых для выполнения команд в типичных микропрограммируемых машинах. Такое малое число достигнуто благодаря стандартному базовому порядку выполнения всех команд RISC-машины: все команды читают те или иные операнды, выполняют указанную операцию и затем направляют результат в соответствующее место. Все это происходит по одной и той же фиксированной временной диаграмме, что дает возможность аппаратно завести необходимую временную информацию в логические вентили, обеспечивающие выработку сигналов управления. VI. СБИС-реализация микропроцессоров RISC I и II
Микропроцессоры RISC I и II, о которых говорилось выше, были реализованы в рамках проекта RISC в течение 1980— 1983 гг. в Калифорнийском университете (Беркли). В настоящем разделе будут рассмотрены вопросы проектирования, отладки и тестирования микропроцессора RISC II. А. Условия и средства проектирования. П р а к т и ч е с к а я реали-
зация новой архитектуры играет важнейшую роль в исследовании возможностей этой архитектуры. Она позволяет создать конструкцию процессора с учетом реалистических ограничений, приковывает внимание к конкретным деталям и обеспечивает обратную связь для оценки эффективности предлагаемого подхода. Процессоры RISC I и RISC II, о которых шла речь в предыдущих разделах, были реализованы в виде «-канальных МОП СБИС. Их топологическое проектирование было проведено при помощи интерактивного редактора топологии в цвете под названием Caesar [35], который предусматривает использование лишь прямоугольных элементов с горизонтальными и вертикальными сторонами. Это приводит к весьма незначительному увеличению площади кристалла, но существенно упрощает задачу топологического проектирования и повышает эффективность использования всех инструментальных средств САПР. Полученное геометрическое описание кристалла служит исходным для нескольких других инструментальных подсистем, решающих следующие задачи: 7—708
1) вычерчивание рисунков фотошаблонов в крупном масштабе, 2) контроль норм проектирования, 3) восстановление электрической схемы по топологии, 4) временное моделирование. Все эти инструментальные программы встроены в наш комплекс САПР с операционной системой Unix. Они работают в сети, содержащей компьютеры VAX-11/750 и 11/780 корпорации DEC, и поэтому являются тесно связанными и доступными для всех разработчиков ИС. Кроме того, возможности оперативного взаимодействия и координации работ всех участников проекта RISC были существенно расширены благодаря наличию электронной почты и специальной службы электронной передачи сообщений для этой группы. Б. Проектирование и
топология микропроцессора RISC II.
Благодаря простой архитектуре микропроцессора RISC II на его проектирование затрачено гораздо меньше времени, чем на другие микропроцессоры с более сложными наборами команд. Кристалл микропроцессора RISC II, содержащий 40 760 транзисторов, спроектировали два аспиранта университета (Катевенис и Шербурн) в течение 1981—1983 гг. Конструкция и топология этого n-канального МОП-кристалла выполнены в соответствии с нормами проектирования Мида и Конвей [36] — с одним слоем поликремния и однослойной металлизацией и со стыковыми, а не скрытыми контактами. Во время проектирования микропроцессора параметры технологического процесса изготовления кристалла были известны очень приближенно, что ограничило возможности оптимизации быстродействия. Некоторые количественные показатели микропроцессора RISC II представлены в табл. VI (более полные данные см. в [34]) в сравнении с аналогичными показателями (где их удалось найти) для трех коммерческих микропроцессоров, выпускаемых фирмами Motorola, Zilog и Intel. Видно, что микропроцессор RISC II имеет наименьшую общую площадь кристалла и сравнительно небольшое количество транзисторов. Но более важно то, что распределение этих кремниевых ресурсов между трактом обработки данных и секцией управления очень четко отражает различия в архитектурах RISC и традиционных машин. В RISC-машине максимальная доля ресурсов выделяется тракту обработки данных, в частности регистровому блоку, а секции управления отводится лишь малая их часть. Последняя строка табл. VI иллюстрирует еще одно преимущество RISC-архитектуры. Трудоемкость проектирования
Таблица Сравнительные
количественные
показатели
RISC II
'Количество транзисторов ® том числе в с у б б л о к а х (в % от о б щ е г о количества) : тракт о б р а б о т к и данных (регистровый блок) П З У (дешифратор КОП) П л о щ а д ь , мм 2 •в том числе для с у б б л о к о в (% от о б щ е г о значения): тракт о б р а б о т к и данных (регистровый блок) управление Трудоемкость проектирования (в человеко-месяцах ориентировочно)
VI
микропроцессоров г
(3-мкм линии)
М68000 3
Z8000®
41000
68000
18000
iAPX-432-01e
110000
93(73) -(0,7)
45
34
45
50(33)
60
39
66
20(6)
10
50
50
65
30
170
130
260
а
Данные получены по микрофотографии и из [31; процентные значения для субблоков указаны ориентировочно. ® Один из трех кристаллов микросистемы.
RISC-машины по сравнению с обычными машинами резко уменьшается. Это особенно важно с коммерческой точки зрения, поскольку обеспечивает снижение себестоимости и •сокращение сроков подготовки производства и выпуска в продажу новых изделий. В. Моделирование и отладка. Схема и конструкция микропроцессора RISCII были описаны в формате, пригодном для машинного чтения, на уровне микроархитектуры (регистровых передач) и на уровне топологии. На уровне архитектуры (уровне набора команд ISP) и на схемном уровне использовался только текст на естественном английском языке и чертеж схемы на бумаге, поскольку у нас не было соответствующих инструментальных средств, которые могли бы нормально работать в рамках нашей САПР с операционной системой Unix. Этот недостаток безусловно придется устранить как можно быстрее. К счастью, архитектура микропроцессора RISC II настолько проста, что разработку удалось успешно завершить даже без этих дополнительных инструментальных средств.
Контроль отсутствия нарушений проектных норм был проведен при помощи системы Lyra [37]. Для автоматического восстановления описания электрической схемы по геометрическим данным топологии использовалась система Mextra [38]. Предусмотренные в системе Mextra средства! назначения меток узлам в описании топологии и возможности контроля имен представляют эффективный механизм для проверки на короткие замыкания, разрывы и ошибки п трассировке соединений. Восстановленное по топологии описание электрической схемы было промоделировано на уровне переключателей при помощи системы Esim [39]. Для моделирования на уровне регистровых передач использовалась система моделирования и язык описания аппаратуры, подобный языку Лисп (Slang [40]). Последний этап функциональной отладки был выполнен следующим образом: системы моделирования Slang и Esim работали параллельно, и после каждого шага моделирования производилось автоматическое сравнение получаемых значений для соответствующих узлов в обоих описаниях схемы. Анализ временных диаграмм для критического пути тракта обработки данных и для схем управления был проведен на этапе проектирования и разработки топологии при помощи программы Spice [41]. Чтобы проверить, что в остальных частях схемы не нарушаются временные ограничения, установленные для критического пути, восстановленная по топологии схема была обработана при помощи верификатора временных диаграмм Crystal [42]. Г. Изготовление и тестирование. Микропроцессор RISC II изготавливался на двух различных технологических линиях с двумя различными длинами затворов. Одно и то же параметризованное лямбда-описание топологии кристалла было передано в кремниевую мастерскую MOSIS, финансируемую Управлением перспективных исследований и разработок министерства обороны США (DARPA) (А = 2 мкм, длина затвора 4 мкм) и на производственное предприятие PARC компании Xerox (Л,= 1,5 мкм, длина затвора 3 мкм). Изготовленные кристаллы размерами 10,3x5,8 и 7,7X4,4 мм соответственно были получены через два месяца. Тщательная отладка моделей и отработка геометрии фотошаблонов микропроцессора RISC II в процессе подготовки производства дали отличные результаты: оба кристалла оказались без функциональных ошибок и работали со скоростью в пределах 10% от расчетной. Если говорить более конкретно, то 4-мкм кристаллы, для которых моделирование было проведено в
полном объеме, согласно расчету, должны были иметь время цикла 480 не, а реально это время при комнатной температуре оказалось равным 500 не. Кристаллы с уменьшенными 3-мкм размерами элементов, для которых моделирование дополнительно не проводилось, работали, как оказалось, с временем цикла 330 не [6]. Для двух критических хранящих регистров тракта обработки данных (блоков DST и SRC) и одного регистра управляющей секции микропроцессора RISC II с целью улучшения тестируемости организованы последовательные цепи сканирования (вход сканирования — выход сканирования) [43—45]. Однако мы решили тестировать кристаллы без использования этих контрольных цепей. Благодаря простоте архитектуры, малому количеству признаков состояния ЦП (не считая содержимого многих регистров) и однотактному выполнению команд кристалл центрального процессора RISC II отличается очень хорошими возможностями управления и наблюдения. Независимо от предыдущего состояния этот кристалл можно всего за 3—4 такта инициировать таким образом, что любую команду можно выполнять в известных условиях. Результат большинства операций выдается на основные выводы кристалла или записывается в какойлибо регистр. Содержимое любого регистра можно прочитать через основные выводы за один такт при помощи команды передачи управления с регистровой индексацией, причем имеются команды, которые позволяют записать значение любого регистра в остальные регистровые элементы ЦП и обратно. По нашему мнению, метод последовательного сканирования вовсе не обязателен для кристаллов, опрос внутреннего состояния которых легко можно осуществлять с использованием нормальных, штатных средств и режимов работы. VII. Оценка характеристик RISC-архитектуры
В процессе выполнения работ по проекту RISC в Беркли несколько специалистов занимались написанием программ и их применением для оценки различных аспектов RISCархитектуры. Тамир написал архитектурную модель для микропроцессоров RISC I и RISC II [46], а Кэмпбелл и Мирос адаптировали мобильный компилятор языка Си для машин RISC [47, 48]. Все трое, а также Паттерсон и Пьефо собирали результаты измерений для оценки эффективности архитектуры [2, 3, 49]. Другие интересные результаты можно найти в [50] (они приводятся также в [51]), [52] (скоростные характеристики RISC-машины при программно-реали-
зованном выполнении арифметических операций с плавающей точкой) и [53]. Здесь мы приведем основные результаты этих оценок машины RISC II по быстродействию, размеру кода и пригодности для выполнения программ, написанных на языках высокого уровня. Поскольку у нас были только кристаллы центрального процессора RISC, а не работоспособная вычислительная машина RISC, эти оценки сделаны на основе прогона компиляторов и моделей на других компьютерах. Общее число тактов RISC-машины для получения показателей быстродействия затем умножалось на экспериментально измеренную длительность такта кристалла RISC II. При этом предполагалось, что используется достаточно высокоскоростная основная память или кэш-память со 100%-ным коэффициентом попадания. Кроме того, ни одна из контрольных программ и задач здесь не содержала вычислений с плавающей точкой. А.
Оценка
скоростных
характеристик
микропроцессора
RISC II. В табл. VII приводятся сравнительные данные по микропроцессору RISC II и трем другим коммерческим процессорам с более сложными архитектурами, выпускаемым фирмами DEC, Motorola и Zilog. Отметим, что базовый показатель быстродействия тракта обработки данных и время доступа к памяти для микропроцессора RISC II аналогичны или хуже, чем соответствующие показатели для VAX-11/780 и М68000. В то же время по общей скорости работы на компилированных программах языка Си при обработке нечисловых данных микропроцессор RISC II значительно превосходит эти процессоры. Сравнительные данные становятся еще более наглядными, если сопоставить недавно разработанный набор кристаллов СБИС с функциональными возможностями и характеристиками мини-компьютера VAX-11/780 [54]. Несмотря на то что этот набор кристаллов реализуется по гораздо более современной технологии, чем RISC II, и содержит гораздо большее количество транзисторов, чем кристалл RISC II, он выполняет программы языка Си медленнее, если не считать программ интенсивных вычислений с плавающей точкой. Другой однокристальный СБИС-процессор реализует подмножество набора команд машины VAX-11/780 и содержит приблизительно в 10 раз меньше транзисторов, чем указанный выше набор кристаллов [55]. В это подмножество набора команд входят наиболее часто употребляемые операции машины VAX, на долю которых обычно приходится примерно 98% общего времени выполнения программ (эта цифра прозвучала устно в докладе [55]).
а < u шЖ Я в3 хv о см -ч< со со га t j о, вО оо sc<. га
оо
ии и 3s < 2в хш 1 со™ —. см — §2 1о л4 ГV а. а « 0 м в га вв 00 1 2 в? 3 в 4 SН
сп
оо
г-
со см
+1
о
ю
о
о
о
СО сом м~
3 C 3J оS в5 ух о <м — см оо о со со со о 4 гаг-\ с. а, в О а: в оога а: •< <«
о
о
о о С О ю
о ~ о
—
ю см
оо
О В sС н оов в ш |в а* а: га v £га ° о к о. н о. в о о. м 3 я о) а: о га кв Ч — о s 2 „ в Я га « н Оо уi9В О и ч в со — i — j н в v=Са:О вн - 3 X -—ага ш >. в в.о 53 s:о о. га вга гао. я =ов в О 5О 3)я в о =со нв вн В 3- г- н Ч i—I вСП н в < 3 J ое- 3-S- ; ООО га га л о « о в в га О -- кв ао н5 •я 2 во О гг J3 в о и §гаa g—SО =х чх С в Ч „ |g ° Sg К о 3 | га t В А * В s вX "В а " Я-о. S a. о £ £•< га н; ч Ч о о11 р яга S 2." _ £ aоs яt_ н^ и *sя яВ 2-1* ^ а> S u в 5 о a S с в (U оо щ _ 5 j) о у s в g a. я о в 3 2S £•« as г § в R ,•га К •в В ЬО О яas ьо g ^ я в - г а iя s 1 к в g- s щ 1) о s 2 3 ц ао-юй КЗ вО Чч X в ~>0 га
кв во га Ч агаоа.а н о<3оо=г а) о. о а. вв Ч о вВ t-H
^ е-
о
те
о
оо~оо— сосо см ю оо оо оо см см см
3 О S 3« оо 45 у с' 2 Оа. а, га 1 вО as о га в о х <s
a: >> о. н
о •н
оом ссм
•
га
-
чо as j> ..U Л.ооQ. (JВСг^ — яas ю*Оо 3m вк«га в 3в
sв |5sв
5в §а:8в у ^ |со о
Важную роль в достижении высоких скоростных характеристик микропроцессора RISC II безусловно играет механизм регистровых окон. В эталонных контрольных программах, указанных в табл. VII, основные локальные скалярные переменные были описаны как «регистровые» в исходном коде на языке Си, поэтому приведенные цифры не учитывают дополнительных преимуществ микропроцессора RISC II, связанных с автоматическим распределением локальных скаляров по регистрам при помощи компилятора. Но, естественно, остаются преимущества микропроцессора RISC II, связанные с механизмом регистровых окон. Процессоры VAX или М68000 имеют значительно более высокие средние накладные расходы на вызовы процедур при работе с компилятором языка Си (см. табл. VII). Однако не все преимущества микропроцессора RISC II в быстродействии можно отнести на счет механизма регистровых окон. Пять из одиннадцати эталонных контрольных программ, использованных при составлении табл. VII, не содержат никаких процедур, но микропроцессор RISC II имеет более высокие показатели при выполнении и этих программ, если говорить о компилированных версиях кода языка Си. Если же говорить о написанных вручную версиях программ на языке ассемблера, то быстродействие микропроцессора RISC II будет приблизительно таким же, как у других процессоров (см. [15, Fig. 3.4.1, 49]). Это свидетельствует о том, что простой набор команд микропроцессора RISC II не только способствует повышению его быстродействия, но и дает возможность его конвейеру обеспечивать близкую к максимальной эффективность использования тракта обработки данных при работе с компилированными программами, в то время как для достижения аналогичных результатов процессору с более сложными наборами команд требуется ручное программирование на языке ассемблера. Это еще одна причина целесообразности ограничить набор команд только простыми операциями, которые могут эффективно выполняться в компьютере. Б. Компактность программного кода. В наборе команд RISCмашины предусматриваются только простые операции-примитивы, поэтому выполнение более сложных операций приходится организовывать с использованием ряда команд. Кроме того, команды микропроцессора RISC II имеют простой формат с независимыми полями на фиксированных местах, поэтому получаемый код программы является не очень плотным. Например, для команд, в которых в качестве второго операнда используется регистр, 8 бит поля «короткий one-
ранд 2», теряются (рис. 4). При этом программы, компилированные в код микропроцессора RISC II, будут содержать увеличенное количество команд по сравнению с кодом для других процессоров, а соответствующие команды будут иметь больший размер, т. е. общий объем кода окажется увеличенным. Однако, как показывает табл. VII, размер кода здесь возрастает не слишком резко — код для микропроцессора RISC II лишь примерно на 30—50% больше, чем довольно компактный код VAX-11. В нижней части табл. VIII приводятся данные сравнения перечисленных выше процессоров с некой гипотетической архитектурой, которая имеет такой же набор команд, как микропроцессор RISC II, но более компактное кодирование команд. Видно, что подобное кодирование позволило бы создавать RISC-программы, не превышающие по размеру программы для других процессоров. Таблица
VIII
Размеры кодов программ в сравнении с микропроцессором R I S C II a R I S C II
1,0
VAX-11/780
0,75±0,30
М 6 8 0 0 0 (6 программ)
0,90±0,20
Z8002
1,20±0,60
RISC-архитектура с кодированием по способу Хаффмана (4— 67 бит/команда) [48, 5 1 ]
0,60
R I C S - а р х и т е к т у р а с 8-, 16-, 24- и 32-бит командами [48, 5 1 ]
0,65
RISC-архитектура с 16- и 32-бит командами [48, 5 1 ]
0,70
Усредненные для 11 программ на языке Си [31.
Разработчики микропроцессора RISC II не пытались достичь уменьшения размеров кода подобным способом, поскольку это потребовало бы усложнения, а следовательно, и снижения быстродействия схем управления при выборке и декодировании команд. В соответствии с основными принципами RISC-архитектуры потенциальные преимущества в результате повышения компактности кода необходимо сопоставлять с дополнительными расходами, связанными с увеличением сложности. Первое преимущество — это уменьшение размера и стоимости памяти. Однако общая стоимость памяти сейчас не слишком велика, значительная часть памя-
ти тратится на хранение данных, а не команд, причем гораздо большие потери емкости памяти происходят в случае, когда, например, полное слово (32 бит) выделяется для любого целого независимо от фактического размера конкретного целого. Второе преимущество более компактного кода — уменьшение среднего времени выборки команд при фиксированной и обычно недостаточной пропускной способности канала «ЦП — память». Однако, если, конечно, нет сложного и дорогостоящего механизма буферизации команд, на выборку команд, длина которых не превышает разрядности канала памяти, все равно затрачивается полный цикл обращения или даже два цикла, если оказывается, что команда переходит через границу двух слов. В микропроцессоре RISC II все команды по длине соответствуют разрядности шины памяти (32 бит) и выравниваются по границам слов, так что выборка любой команды всегда возможна за один цикл обращения к памяти. В. Является ли микропроцессор RISC II компьютером языка
высокого уровня? Микропроцессор RISC II был разработан с ориентацией на поддержку таких языков высокого уровня (ЯВУ), как Си или Паскаль. В то же время имеются определенные сходства между RISC-командами и типичными микрокомандами машин с микропрограммным управлением. В обоих случаях речь идет о концептуально простых операциях, используются довольно длинные и ортогональные кодовые последовательности, операции выполняются, как правило, за один такт и реализация осуществляется при помощи очень простого конечного автомата. Учитывая эти сходства, некоторые специалисты считают, что RISC-команды являются «слишком низкоуровневыми для компьютера языка высокого уровня». Однако более тщательный анализ показывает, что такой вывод неправомерен. Несколько типов наиболее употребительных операторов ЯВУ компилируются в одну или две команды микропроцессора RISC II. Так, оператор cur = cur->nxt, который используется в последнем примере в п. II.Б, компилируется в одну RISC-команду load: i? C ur^-M[^cur+OFF5 n xt]. Это свидетельствует о том, что команды микропроцессора RISC II по уровню немногим уступают некоторым часто встречающимся операторам ЯВУ. Кэмпбелл приводит статическое число машинных команд 12 программ языка Си, компилированных для компьютеров RISC, VAX-11 и PDP-11 [47]. По отношению к коду VAX-11 среднее число команд в объектных программах PDP-11 больше на 40%, а в RISC-программах — на 67%. Это говорит о том, что, хотя команды RISC-машины по сво-
ей содержательности уступают командам VAX и PDP и поэтому могут считаться «низкоуровневыми», реально их различие не слишком велико. Паттерсон и Пьефо измерили времена выполнения некоторых программ в версиях, компилированных с языка Си, и в написанных вручную версиях на языке ассемблера; результаты измерений для машин RISC I и RISC II и некоторых других компьютеров представлены в табл. IX [49]. Коэффициент, указанный в этой таблице, — количественный показатель потери эффективности из-за программирования на ЯВУ, а не на языке ассемблера. Чем меньше этот коэффициент, тем больше у программиста оснований для того, чтобы писать программы на языке ассемблера. Если судить по этому показателю, архитектура микропроцессоров RISC I и RISC II для программирования на ЯВУ является наилучшей среди машин, перечисленных в табл. IX. Таблица
IX
Коэффициенты эффективности п о д д е р ж к и языка высокого уровня [ 4 9 ] Среднее значение коэффициента Время выполнения кода ассемблера Время выполнения компилированного кода
Машина
R I S C I и R I S C II
0,90±0,10
PDP-11/70
0,50±0,20
Z8002
0,46 ± 0 , 3 0
VAX-И/780
0,45±0,20
М68000
0,34±0,30
VIII. Заключение Детальные исследования, проведенные в рамках проекта RISC в Беркли в течение 1980—1983 гг., подтвердили целесообразность и рациональность этой концепции. Дополнительные усложнения в аппаратуру следует вносить только после того, как будет четко доказано, что они дадут реальные выгоды. Подобный подход особенно необходим при создании современных однокристальных компьютеров, где площадь кристалла, возможное количество использованных транзисторов и максимальную мощность рассеяния следует рассматривать как ценные ресурсы, причем достаточно ограниченные.
Только тщательный анализ различных вариантов позволяет определить, для каких именно функций целесообразно реализовать максимальную аппаратную поддержку, чтобы добиться наилучших возможных результатов. В процессорах общего назначения с архитектурой фон Неймана к числу подобных функций относится быстрый доступ к часто используемым операндам, но не сложные команды. Здесь следует руководствоваться правилом, типичным для многих других инженерных дисциплин: если есть сомнения, нужно выбирать более простое решение.
Литература 1. Patterson D., Sequin С. IEEE Trans. Comput. C - 2 9 ( 2 ) , 108—116, 1980. 2. Patterson D., Sequin C. Proc. Symp. Comput. Archit., 8th ACM SIGARCH CAN 9 ( 3 ) , 443—457, 1981. 3. Patterson D., Sequin C. IEEE Comput. Mag. 1 5 ( 9 ) , 8—21 (1982); CM. также Univ. of California, Berkeley, E. R. L., Memo. U C B / E R L M 8 2 / 1 0 , 1982. 4. Fitzpatrick D., Foderaro J., Katevenis M., Landman H., Patterson D., Peek J., Peshkess Z„ Sequin C„ Sherburne R„ VanDyke K. V L S I S y s t e m s and Computations, Carnegie-Mellon Univ. Conf., pp. 327—336 Computer Science Press, Rockville, Maryland, 1981. См. также V L S I Design, 11(4), pp. 14—20, 1981; Comput. Archit. News, ACM SIGARCH, 1 0 ( 1 ) , 28—32, 1982. 5. Foderaro J., VanDyke K., Patterson D. V L S I Des., MI (5), 27—32, 1982. 6. Sherburne R., Katevenis M., Patterson D., Sequin C., Proc. IEEE Int. Solid-State Circuits Conf. ( I S S C C 1984), 31 st, San Francisco, THAM, 1 2 ( 1 ) , 168—169, 1984. 7. Radin G. Proc. Symp. Archit. Support Progr. Lang. Oper. Syst., ACM S I G A R C H — C A N 1 0 ( 2 ) , S I G P L A N 1 7 ( 4 ) , 39—47, 1982. 8. Hennessy J., Jouppi N„ Baskett F„ Gill J. Proc. CMU Conf. V L S I Syst. Comput. 337—346, 1981. 9. Hennessy J., Jouppi N., Baskett F„ Gross Т., Gill J. Proc. Symp. Archit. Support Progr. Lang. Oper. Syst. ACM SIGARCH CAN 1 0 ( 2 ) , S I G P L A N 1 7 ( 4 ) , 2—11, 1982. 10. Hennessy J., Jouppi N„ Przybylski S„ Rowen C., Gross T. Proceedings, Third Caltech Conference VLSI, Pasadena, California, ed. R. Bryant, Computer Science Press, Rockville, Maryland, 1983, pp. 33—54. 11. Strecker W. A F I P S Conf. Proc., 47. 967—980, 1978. 12. Utley B. et ai, IBM S y s t e m / 3 8 Technical Developments, IBM GS800237, 1978. 13. Tyner P. iAPX-432 General Data Processor Architecture Reference Manual, Order No. 171860-001, Intel, Santa Clara, California, 1981. 14. Organick E. A Programmer's Wiew of the Intel 432 System, McGrawHill, Hightstown, N e w Jersey, 1982. 15. Katevenis M. Doctoral dissertation, 1983; Rep. No. U C B / C S D 8 3 / 1 4 1 , Computer Science Dis., EECS, University of California at Berkeley. 16. Knuth D., Software — Practice and Experience, Vol. 1, pp. 105—133, 1971. 17. Alexander G„ Wortman D. I E E E Comput. Mag., 41—46, Nov. 1975. 18. Ditzel D., McLellan H. Proc. Symp. Archit. Support Progr. Lang. Oper. Systems, ACM SIGARCH CAN 10(2) S I G P L A N 17(4), 48—56, 1982.
19. Elshoff J. Software — Practice and Experience, Vol. 6, 1976, pp. 505— 525. 20. Halbert D„ Kessler P. CS292R-course final report, Univ. of California at Berkeley, 1980. 21. Lunde A. Commun. ACM 2 0 ( 3 ) , 143—153, 1977. 22. Shustek L. Doctoral dissertation Stanford Univ., Stanford, California (1977/1978). 23. Tanenbaum A. Commun. ACM 2 1 ( 3 ) , 237—246, 1978. 24. Tamir Y„ Sequin C. IEEE Trans. Comput. C - 3 2 ( l l ) , 1983. 25. Wulf W. Частное сообщение, 1980. 26. Baskett F. A V L S I Pascal machine (public lecture) Univ. of California, Berkeley, 1978. 27. Sites R. Proc. Caltech Conf. VLSI, 1979, pp. 527—532. 28. Sherburne R. Doctoral dissertation, EECS, Univ. of Calif., Berkeley, 1984. 29. Clark D. ACM Trans. Comput. S y s t e m s 1 ( 1 ) , February 24—37, 1983. 30. Sherburne R., Katevenis M., Patterson D., Sequin C. Proc. IEEE Int. Conf. Comput. Des.: V L S I Comput. ( I C C D ' 8 3 ) , 149—152, 1983. 31. Ungar D., Blau R., Foley P., Samples D., Patterson D. Proc. Ann. Symp. Comput. Archit. 8th, ACM SIGARCH CAN 11(3), 188—197, Ann Arbor, Michigan, 1984. 32. Lampson B. Proc. Symp. Archit. Support Progr. Lang. Oper. Syst., ACM SIGARCH CAN 10(2), S I G P L A N 1 7 ( 4 ) , 66—76. 33. Sherburne R., Katevenis M., Patterson D., Sequin C. Proc. Conf. Adv. Res. VLSI, M.I.T., 53—62, 1982. 34. Katevenis M„ Sherburne R„ Patterson D., Sequin C. Proc. I F I P TC10/WG10.5 Int. Conf. V L S I ( V L S I ' 8 3 ) , Trondheim, Norway, pp. 349— 359, North-Holland Publ., Amsterdam, 1983: см. также J. V L S I Comput. Syst., 1 ( 2 ) , 1984. 35. Ousterhout J. V L S I Des. 11(4), 34—38, 1981. 36. Mead C., Conway L. Introduction to V L S I Systems, Addison-Wesley, Reading, Massachusetts, 1980. 3 7 . Arnold M„ Ousterhout J. Des. Autom. Conf. Proc. 19th, ACM-IEEE, June 1982. 38. Fitzpatrick D. Mextra, a Manhattan circuit extraction program, Univ. of California at Berkeley. См. также Rep. No. U C B / C S D - 8 3 / 1 1 5 , С о т р . Sci. Div., Univ. of California at Berkeley, 1983. 39. Terman C. Esim: a Switch-Level Simulation Program, Massachusetts Institute of Technology, Cambridge, Massachusetts. 40. VanDyke K., Foderaro J. Res. Prog. (Master's report), CS, Univ. of California, Berkeley, 1982. 41. Nagel L., Pederson P. Proc. Midwest Symp. Circuit Theory, 16th, Waterloo, Canada, 1973. 42. Ousterhout J. Proc. 3rd Caltech Conf. VLSI, 3rd, 1983. 43. Williams M., Angell J. I E E E Trans. Comput. C - 2 2 ( l ) , 46—60, 1973. 44. Eichelberger E., Williams T. Proc. Des. Autom. Conf. 14th, 462—468, 1977: См. также J. Des. Autom. Fault-Tolerant Comput., 2 ( 2 ) , 165—178, 1978. 45. Frank E„ Sproull R. ACM Comput. Surv., 1 3 ( 4 ) , 425—451, 1981. 46. Tamir Y. Electr. Res. Lab. Memo. U C B / E R L M81/17, Univ. of California, Berkeley 1981. 47. Campbell R. Master's report, EECS, Univ. of California, Berkeley, 1980. 48. Miros J. Master's report, EECS, Univ. of Cilifornia, Berkeley, 1981. -49. Patterson D„ Piepho R. Proc. Ann. Sympt Comput. Archit., ACM SIGARCH 1 0 ( 3 ) , 3—8, 1982; IEEE Micro M a g . 2 ( 4 ) , 9—19, 1982. SO. Garrison P., VanDyke K. CS292R Final C l a s s Report, С о т р . Sci. Div., Univ. of California at Berkeley, 1981.
51. Patterson D„ Garrison P., Hill M., Lioupis D., N у berg С Sippel Т., VanDyke К. Proc. Symp. Comput. Archit. 10th, ACM SIGARCH C A N 1 1 ( 3 ) , 108—116, 1983. 52. Sippel T. M.S. project report, EECS, Univ. of California, Berkeley, 1982. 53. Ponder C. Rep. No. U C B / C S D 83/122, Computer Sci. Div., EECS, Univ. of California, Berkeley, 1983. 54. Johnson W. Proc. IEEE Int. Solid-State Circuits Conf. 31st ( I S S C C 1 9 8 4 ) , San Francisco, THAM 12(4), 174—175, 334—335, 1984. 55. Beck J., Dobberpuhl D., Dohert.v M„ Dorenkamp E„ Grondalski В., Grondalski D„ Henry K., Miller M'., tupnick В., Thierauf S., Witek R. Proc. I E E E Int. Solid-State Circuits Conf. 31st ( I S S C C 1984), S a n Francisco, THAM 12(6), 178—179, 1984. Nagel L. ERL Memo ERL-M520, Univ. of California, Berkeley, 1975.
Глава 3 Проектирование СБИС с учетом тестируемости Дж. У. Ганнетт (J. W. Gannett) Белл Телефон Лабораторис Марри-Хилл, шт. Нью-Джерси
I. Проблема тестирования СБИС — общие сведения Благодаря достижениям в области технологии изготовления интегральных схем (ИС) неуклонно уменьшаются как число дефектов, так и минимальный размер элемента кристалла; это дает возможность планировать, разрабатывать и выпускать все более сложные и насыщенные кристаллы. Однако с ростом плотности компоновки ИС пропорционально усложняются и проблемы тестирования для выявления потенциальных ошибок: кристалл СБИС (сверхбольшой интегральной схемы) может содержать десятки тысяч внутренних схемных узлов, которые недоступны для непосредственного управления и наблюдения через контакты ввода-вывода этого кристалла. Задача верификации, т. е. доказательства того, что внутри СБИС нет глубоко скрытых ошибок, может оказаться исключительно трудной, а затраты времени и усилий на решение проблем тестирования могут привести к значительному возрастанию себестоимости производства ИС. Для данного обсуждения мы выделим две общие цели тестирования ИС: верификацию проекта схемы и производственный технический контроль. Если речь идет о вновь разрабатываемой схеме, то впервые изготовленные кристаллы нужно подвергнуть тщательному тестированию, чтобы установить отсутствие в проекте схемы, в топологии или в фотошаблонах таких ошибок, которые могут привести к неправильному функционированию схемы. Мы называем эту процедуру верификационным тестированием схемы. Оно предполагает исключение неисправностей схемы, связанных с технологическими дефектами, и обнаружение таких ошибок, которые повторяются от кристалла к кристаллу. Отметим, что эта концепция верификационного тестирования схемы отличается от концепции верификации проекта схемы на уровне машинного моделирования. Кристалл, проект которого успешно прошел машинное моделирование, может все-таки оказаться неработоспособным по результатам верификационного тестирования схемы, причем для выявления причины неработоспособности придется приложить, как правило, много интеллектуальных усилий. Это может быть ошибка в ко-
дировании топологии (ошибка связности или нарушение проектных норм и правил) либо результат того, что машинное моделирование было проведено некорректно. Кроме того, причиной неработоспособности кристалла могут быть аппаратные или программные ошибки установки электронно-лучевого экспонирования, применяемой при изготовлении фотошаблонов. Наконец, устойчивая, повторяемая неисправность схемы может быть вызвана печатаемым дефектом рабочего фотошаблона, если используется литография с последовательным шаговым экспонированием. Когда неработоспособность кристалла не вызывается ни одной из этих причин, можно заподозрить существование каких-либо непредусмотренных паразитных связей* или гонки сигналов в цепях кристалла; однако при этом нельзя исключать, что возможными причинами отрицательных результатов проверки на работоспособность являются такие простые вещи, как ошибки в тест-векторах, в тест-программах или даже неисправности контрольно-испытательной аппаратуры. Отметим, что некоторые недостатки проекта схемы (такие, как нарушения правил и норм проектирования или гонки сигналов) могут проявляться не во всех изготовленных кристаллах из-за нестабильности параметров технологического процесса изготовления ИС. Поскольку в результате подобных недостатков проекта, чувствительных к значениям технологических параметров, происходит снижение выхода годных, а не просто получаются кристаллы с одним и тем же четко повторяемым дефектом, такие ошибки проектирования обнаружить обычно сложнее всего. После верификации проекта схемы, топологии и фотошаблонов необходимо разработать стратегию технического контроля для проверки кристаллов в производстве на отсутствие дефектов, связанных с технологией изготовления и с корпусированием (монтажом в корпус). Испытания, проводимые на этапе производственного технического контроля, являются отбраковочными, т. е. строятся по принципу «годен — негоден»; другими словами, кристалл либо проходит все отбраковочные испытания и считается годным для применения в системе, либо не выдерживает эти испытания и бракуется. Хотя отбраковочные испытания в принципе проще, чем верификация проекта схемы, для обоих этих этапов * Паразитные связи м е ж д у схемными узлами, вызываемые, как правило, чувствительностью к кодовым комбинациям, у ж е в течение длительного времени известны как одна из причин неработоспособности запоминающих устройств произвольной выборки ( З У П В ) . А внедрение методов литографии с уменьшенными размерами элементов для изготовления СБИС мож е т привести к появлению аналогичных проблем и для обычных логических схем.
тестирования свойственны общие проблемы, далеко нетривиальные. Третий аспект проблемы тестирования ИС, эксплуатационное тестирование, концептуально аналогичен отбраковочным испытаниям. Эксплуатационное тестирование служит для обнаружения ошибок, которые возникают уже после установки кристалла в систему. Эксплуатационное тестирование производится в менее благоприятных условиях, чем отбраковочные испытания, причем эксплуатационные тесты, кроме того, обычно являются не настолько полными, как тесты, применяемые при отбраковочных испытаниях. В настоящее время отдельные кристаллы весьма редко проверяются на объекте эксплуатации. Как правило, в процессе эксплуатации осуществляется тестирование целых схемных плат, которые заменяются, если обнаруживается их неработоспособность. Все методы проектирования с учетом тестируемости, описанные в настоящей главе применительно к уровню кристалла, могут быть реализованы и при тестировании плат. Мы используем термин логическое тестирование, обозначая им процесс контроля логического поведения цифрового кристалла в статике или динамике при верификации проекта схемы или при отбраковочных испытаниях. Логическое тестирование и проблемы, связанные с логическим тестированием схем типа СБИС, обычно называются тестированием ИС и проблемой тестирования СБИС соответственно. В настоящей главе описаны методы проектирования, призванные упростить процесс логического тестирования: однако следует иметь в виду, что при тестировании цифровых ИС обычно необходимо контролировать не только логическое поведение, но и другие свойства. В число этих других свойств может входить мощность рассеяния кристалла, его чувствительность к колебаниям напряжения источника питания или температуры, предельные значения помех на входе, ток утечки по входу и характеристики выходных усилителей как источников и потребителей тока. Чтобы разработать стратегию тестирования кристалла, необходимо вначале решить, каким образом моделировать этот кристалл и его ошибки. Выбранная нами модель не является самой универсальной, однако позволяет иллюстрировать концепции, о которых пойдет речь. Мы будем рассматривать синхронные последовательностные цифровые схемы (рис. 1), которые можно математически моделировать при помощи уравнений состояния и выхода вида * ( / + 1 ) = /(*(/), и ф ) , I/(/) = £(*(/), «(/)), 8—708
(1а) (16)
Рис. 1. Модель синхронной последовательной цифровой схемы. Регистровые элементы L могут срабатывать по фронту и использовать однофазный синхросигнал или они могут строиться по схеме «главный — подчиненный» (MS) и использовать неперекрывающиеся главный и подчиненный синхросигналы для исключения гонки фронтов.
где и (/), «/(/) и x(j)—векторы с двоичными компонентами, имеющими размерности т, п и k соответственно, а / е е{0,1,2,...}—временной параметр (дискретной шкалы). Переменные и, у и х — это вход, выход и состояние соответственно; переменная х представляет логические состояния либо таких элементов памяти, как триггеры, либо узлов с динамическим хранением заряда, применяемых в некоторых цифровых МОП-схемах. Вход и не включает синхросигналов — в наших уравнениях входные синхросигналы в явном виде не представлены. Выборка значений входа, выхода и состояния производится с интервалами, определяемыми системным синхросигналом, причем мы исходим из предположения, что процесс выборки происходит с частотой, при которой остается достаточно времени, чтобы для этих величин успевали устанавливаться распознаваемые логические значения. Мы допускаем, что начальное состояние схемы л-(О) яв-
ляется случайной переменной, но предполагаем, что существует последовательность входных сигналов, при помощи которой схему можно перевести в некоторое определенное состояние. Мы называем это предположением о контролируемости, управляемости состояния. Эта формулировка охватывает в качестве особых случаев такие схемы, в которых один входной сигнал сбрасывает все триггеры или в которых *(0) является детерминированным. Последняя ситуация имеет место, когда запоминающие элементы разработаны таким образом, что при включении питания схемы всегда оказываются в определенном, известном состоянии. Согласно предположению о контролируемости состояния выход, являющийся результатом каждой входной последовательности и{-), будет случайной переменной, зависящей от и(-), однако в обычном случае этот выход станет детерминированным после ряда синхросигналов. Отметим, что наши формулировки исключают сложности, связанные с так называемым неопределенным состоянием, которое часто используется при моделировании цифровых схем. Комбинационные схемы* можно математически моделировать при помощи простого отображения для входов и выходов y(j) =g(u(j)), которое не включает переменных состояния. Мы требуем, чтобы математические модели комбинационных схем не содержали (ненаблюдаемых) переменных состояния. Цель как отбраковочных испытаний, так и верификации проекта схемы заключается в том, чтобы удостовериться, чтопроверяемая схема логически ведет себя так, как предусматривает уравнение (1). Пусть R обозначает множество (детерминированно) достигаемых состояний для уравнения (1), т. е. x ^ R , тогда и только тогда, когда существуют такая входная последовательность «(•) и время t, что x(i)=x с вероятностью 1, где *(•)—траектория состояний уравнения (1), генерируемая для «(•)• Если предположить, что множество R не меняется из-за какой-то потенциальной ошибки проверяемой схемы, то для контроля поведения этой схемы по входам и выходам в принципе можно было бы использовать следующую процедуру. Для каждого x<=R 1) подать на вход схемы последовательность которая переведет схему в состояние х.
сигналов,
* Если схема не содержит элементов памяти (т. е. логическое значение каждого узла этой схемы зависит только от текущих значений входов, а не от прошлых значений ее входов), то говорят, что это комбинационная схема. Про схему, которая не является комбинационной, говорят, что она последовательностная.
2) заблокировать синхронизацию схемы; другими словами, зафиксировать для входа (или входов) синхронизации такое значение, чтобы состояние оставалось постоянным* независимо от входа и, а затем 3) сравнить наблюдаемое значение выхода с расчетным для каждого входа и, в то время как для и последовательно задаются все возможные входные векторы. Эту процедуру мы называем полной функциональной верификацией; к сожалению, она в высшей степени нерациональна для типичной СБИС. Задача генерации входных последовательностей, которые будут переводить схему в любое из достижимых состояний, сама по себе может оказаться достаточно серьезной, однако если даже это удалось бы сделать сравнительно легко, громадное количество тест-векторов, требуемых для данной процедуры, делает ее практически неприемлемой. Минимальное число тест-векторов, требуемых для реализации данного метода тестирования, составляет nrX2т, где п, — количество элементов в R (отметим, что Автор участвовал в разработке интегрального процессора сигналов, имеющего 78 нетактированных входов и 546 триггеров. По меньшей мере 426 из этих триггеров можно было переводить в то или иное состояние независимо от состояния любого другого триггера, так что для данного случая мы имеем / г л х 2 т > 2 4 2 б х 2 7 8 «5,2-10 151 .
(2)
Если бы на проверяемую схему удалось подавать тест-векторы и анализировать реакции со скоростью 1 млн. векторов в секунду, то для полной проверки схемы на функционирование по этому методу пришлось бы затратить более 10138 лет! Даже для комбинационной схемы уровня БИС полная функциональная верификация обычно практически невозможна. Например, арифметико-логическое устройство для упомянутого выше процессора сигналов — комбинационная схема, имеющая 87 входов; следовательно, при подаче тест-векторов со скоростью 1 млн. векторов в секунду для завершения полной проверки на функционирование потребовалось бы 4,9 триллиона лет! Когда полная проверка на функционирование практически невозможна, необходимо анализировать внутреннюю струк* Д л я динамических логических МОП-схем эту процедуру пришлось бы изменить, чтобы предусмотреть регенерацию для узлов с динамическим хранением заряда.
туру проверяемой схемы и пытаться составить приемлемое множество потенциальных ошибок схемы, которые могут с достаточно высокой вероятностью возникать и отражаться на работоспособности схемы. Зная структуру схемы, мы должны создать такие входные последовательности (тествекторы), которые будут проверять схему на наличие подобных ошибок или по крайней мере высокого процента этих ошибок. Продолжая уточнять формулировку нашей задачи, мы постулируем существование множества ошибок F. Каждое a ^ F представляет то или иное изменение в цифровой схеме, математически моделируемой уравнением (1). Для каждого а мы получаем измененную цифровую схему, характеризующуюся уравнениями состояния вида X
a
( j + l ) = fa(xa(j),
tl{j)),
(За)
y a ( j ) = g*(xa(j),
u(j)).
(36)
Размерность u(j) есть пг, а размерность ya(j) есть п, как в уравнении (1). Размерность xa(j), обозначаемая ka, не обязательно такая же, как размерность x(j) в уравнении (1). Чтобы упростить наши рассуждения, мы исключаем ошибки, которые приводят к превращению комбинационной схемы в последовательностную или синхронной последовательностной схемы в асинхронную последовательностную схему; однако подобные ошибки на практике встречаются не так уже редко. Приняв подобные предпосылки, можно сформулировать точные определения таких понятий, как обнаружение ошибок и обнаруживаемая ошибка. Говорят, что входная последовательность ы(-) обнаруживает ошибку a<=F, если существует такое i, что y(i) является детерминированным, ya(i) является детерминированным и уа(i)Фу(i). Здесь у(-) и уа{-) — это реакции схем, описываемых уравнениями (1) и (3), на входную последовательность и(-) соответственно. Говорят, что ошибка а является обнаруживаемой, если существует такая входная последовательность, которая ее обнаруживает. Отметим, что ошибка, которая не допускает инициализации схемы, по нашему определению может оказаться необнаруживаемой, хотя в большинстве практических случаев последствия подобных ошибок будут проявляться на любой достаточно полной последовательности тест-векторов. Выбор множества ошибок, пригодного для моделирования потенциальных ошибок цифровой схемы, обычно основывается на интуиции, опыте и возможности обработки такого множества на компьютере, причем последняя играет главную роль. Для иллюстрации проблем, связанных с обработкой на компьютере, рассмотрим следующее множество ошибок Fu
(которое выбрано на основе тщательного изучения внутренней структуры кристалла): любая комбинация разрывов в проводниках и любая комбинация коротких замыканий между проводниками. Такое множество ошибок позволяет, повидимому, моделировать практически все возможные неисправности ИС, вызываемые несовершенством технологии, однако мощность этого множества для типичной СБИС астрономически велика. Вместо того чтобы пытаться вычислить мощность Fu, проанализируем мощность гораздо более ограниченного (и следовательно, меньшего) множества ошибок Fm, которое будет определено ниже. Предположим, что рассматриваемую схему можно промоделировать как традиционную логическую схему, и примем для каждого логического вентиля следующие возможные ошибки: константный нуль на выходе, константная единица на выходе и для многовходовых логических вентилей — все комбинации константных ошибок для входных линий, неэквивалентные той или иной константной ошибке для выхода. Например, двухвходовый логический вентиль ИЛИ-НЕ будет иметь четыре ошибки: константный нуль на выходе, константная единица на выходе, константный нуль на входе № 1 и константный нуль на входе № 2. Множество ошибок Fm определим как совокупность всех возможных комбинаций неисправных логических вентилей. Для большинства логических схем приемлемый оценочный размер множества Fm можно получить, если предположить, что в среднем логический вентиль имеет два входа. Поскольку такой средний вентиль может находиться в одном из пяти состояний (он может не содержать ошибок или иметь одну из четырех указанных выше ошибок), число элементов множества Fm составляет 5 г —1, где g — число вентилей. Схема, содержащая лишь 100 логических вентилей, например, может иметь 7,9-10 69 множественных константных ошибок. Именно из-за столь больших сложностей широкое распространение получила модель одиночных константных ошибок Fs. Каждое a ^ F s представляет ситуацию, в которой точно одинвентиль логической модели схемы имеет точно одну ошибку (либо константную ошибку на выходе, либо константную' ошибку на одном входе, неэквивалентную константной ошибке по выходу). Благодаря этому мощность множества Fs пропорциональна количеству логических вентилей в схеме. Отметим, что модель с одиночными константными ошибками не отображает всех ошибок, которые могут возникать в ИС: многие возможные разрывы и короткие замыкания проводников в МОП-схеме она не будет охватывать [1—4]; кроме того, константные ошибки по природе своей являются статическими, так что эта модель не охватывает динамические ошиб-
ки (т. е. ошибки, из-за которых схема неправильно работает только при определенных динамических условиях). Возможен даже вариант, что множество тест-векторов, обнаруживающее все одиночные константные ошибки, окажется непригодным для обнаружения определенных множественных константных ошибок [5]. Тем не менее широко распространено мнение о том, что тест, который обнаруживает высокий процент одиночных константных ошибок, хорош в том смысле, что он будет обнаруживать значительную долю ошибок других видов. Доля одиночных константных ошибок, обнаруживаемых при помощи множества тест-векторов, называется процентом покрытия возможных неисправностей тестом; это значение обычно считается полезным относительным показателем того, насколько полно данное множество тест-векторов «испытывает» схему. Даже сравнительно простая модель одиночных константных ошибок, описанная выше, представляет сложную вычислительную проблему. Задача нахождения тестов для данного множества константных ошибок в логической схеме является jVP-полной [6]. Подобные задачи считаются «трудными» и представляют основную тему исследований теории сложных вычислений [7]. МР-полные (требующие полного перебора) задачи, по-видимому, не могут решаться машинными алгоритмами за «приемлемое» время; говоря более точно, никто не знает, каким образом (а многие исследователи предполагают, что это невозможно) создать алгоритм, который обеспечит гарантированное решение NP-полной задачи за ряд шагов, ограниченный сверху полиномиальной функцией «размера» задачи. Число шагов, необходимых для подобного алгоритма, почти безусловно будет расти экспоненциально с увеличением «размера» задачи. К счастью, при решении NP-полных задач, возникающих на практике, часто оказывается, что такая экспоненциальная верхняя граница достигается только в очень редких случаях. Кроме того, во многих случаях удается создать эвристические алгоритмы, которые ускоряют решение практических задач. Программы автоматической генерации тестов с применением таких точных алгоритмов, как £)-алгоритм [8], или таких эвристических алгоритмов, как Генерация критического пути CPG [5], получили широкое распространение при генерации тестов для комбинационных схем вплоть до размера БИС. При использовании для малых последовательностных схем (МИС) программы автоматической генерации тестов обычно требуют вмешательства человека, чтобы получить необходимые результаты. Программы автоматической генерации тестов, как правило, оказываются слишком дорогими или практически непригод-
ными для использования при работе с высокопоследовательностными СБИС, если эти схемы не разработаны специально с учетом тестируемости. Хотя NP-полные задачи для вычислений сложны, во многих случаях они уступают человеческой изобретательности. Еще один подход к тестированию СБИС заключается в том, что человек-разработчик лишь в минимальной степени или вообще не использует программы автоматической генерации тестов, создавая множества тест-векторов на основе своих знаний о функциональных особенностях и структуре схемы. Разработчик обычно пишет машинную программу, моделирующую поведение кристалла, и использует некое сочетание случайных и детерминированных алгоритмов для генерации тест-векторов. Процент покрытия ошибок для множества тест-векторов, генерированного человеком-разработчиком, необходимо проверить при помощи так называемого имитатора ошибок. Параллельный имитатор ошибок, принципиально самый простой, моделирует схему, не содержащую ошибок, и формирует по одной копии этой схемы целиком для каждого а в множестве ошибок F. Совмещенный имитатор ошибок, моделирует не содержащую ошибок схему целиком, однако для каждого a ^ F моделирует только те части схемы, на которых отражаются а. Еще один распространенный имитатор ошибок — дедуктивный, который моделирует не содержащую ошибок схему и одновременно учитывает каждую ошибку, входящую в множество F, используя метод распространения ошибок определенного списка [9]*. Имитация ошибок, подобно генерации тестов, представляет JVP-полную задачу [6]. Опыт работы с реальными схемами свидетельствует о том, что машинное время ЦП, затрачиваемое как на дедуктивную имитацию ошибок, так и на генерацию тестов, растет пропорционально g2, где g — число логических вентилей в схеме [12]. Такой темп роста значительно лучше, чем теоретический экспоненциальный рост для худшего случая, однако необходимое машинное время ЦП по-прежнему резко увеличивается с увеличением размера схемы. Даже для схем' категории БИС затраты времени ЦП на имитацию ошибок слишком велики, чтобы за один прогон программы на компьютере можно было промоделировать достаточно заметную) часть ошибок, входящих в множество F. * Параллельная, совмещенная и дедуктивная имитации ошибок требуютперечисления ошибок и в связи с этим практически непригодны для определения процента покрытия множественных константных ошибок. А новый метод причинно-следственного анализа [10, 11] не требует перечисления ошибок и может представить информацию относительно покрытия множественных константных ошибок.
В качестве грубого оценочного показателя эффективности множества тест-векторов часто используется покрытие одиночных константных ошибок (на уровне логических вентилей). Для схем категории СБИС идеал — обеспечение 100%ного покрытия одиночных константных ошибок — обычно практически недостижим. Учитывая это, необходимо определять приемлемый уровень покрытия ошибок, достижимый при приемлемых усилиях. По-видимому, правомерно сказать, что сейчас не существует четких правил определения приемлемой степени покрытия ошибок при верификационном тестировании проекта схемы; даже не ясно, можно ли считать процент покрытия константных ошибок на уровне логических вентилей удовлетворительным показателем качества для тестов верификации проекта [13]. Что касается отбраковочных испытаний, то здесь таким показателем может служить коэффициент обнаружения неработоспособных кристаллов в системе; этот показатель определяется как отношение количества неработоспособных кристаллов, которые прошли первоначальное тестирование при отбраковочных испытаниях как работоспособные, к общему количеству кристаллов, успешно прошедших тестирование. Взаимосвязь между покрытием ошибок тестом f и коэффициентом обнаружения неработоспособных кристаллов в системе г пока до конца не изучена. Уодсак [14] вывел следующую формулу зависимости г от /: г = 1 —[(1 + р/)/(1 + р)]«,
(4)
где а и р — параметры, описывающие статистические свойства интенсивности дефектов для проверяемой партии кристаллов. Для типичного технологического процесса изготовления СБИС с малым выходом годных формула (4) сводится к г » да1—f. Таким образом, при подобном подходе для достижения коэффициента обнаружения неработоспособных кристаллов в системе 1% необходимо было бы иметь 99%-ное покрытие ошибок тестом, а это, как правило, невозможно для схем уровня СБИС. Анализ, который провели Уильяме и Браун [15], является, по-видимому, частным случаем анализа Уодсака, причем его результаты в равной мере пессимистичны. Агравал и др. [16] получили результаты, гораздо более оптимистические; согласно их данным, можно добиться малой частоты обнаружения неработоспособных кристаллов в системе и при приемлемых значениях покрытия ошибок тестом. Эти авторы провели анализ для кристалла, содержащего 25 000 транзисторов, и пришли к заключению, что для достижения коэффициента обнаружения неработоспособных кристаллов в системе 1% достаточно иметь всего лишь 80%-ное покрытие ошибок тестом.
В последние годы высказывались сомнения относительно адекватности модели одиночных константных ошибок для МОП-технологий [1—4]. Например, из-за постоянно закрытого транзистора в комбинационной КМОП-схеме могут образоваться узлы, которые при определенных условиях будут динамически хранить заряд, т. е. комбинационная схема будет превращаться в последовательностную. Традиционные имитаторы ошибок, базирующиеся на классической логической схеме уровня вентилей, не могут непосредственно моделировать это явление. Хотя неоднократно предпринимались различные попытки включения нестандартных ошибок МОПсхем в такой традиционный имитатор ошибок [17], более рациональное решение состоит в том, чтобы создать имитатор ошибок, базирующийся на усовершенствованной модели цифровых МОП-схем на логическом уровне. Определенный выигрыш может дать имитатор ошибок, построенный на базе имитатора временных диаграмм МОП-схем [18]. Имитатор переключательного типа для МОП-схем [19], который осуществляет логическое моделирование на уровне транзисторов, представляя МОП-транзисторы как двунаправленные переключатели, также позволяет обеспечить гораздо более реалистическое моделирование ошибок МОП-схем, чем традиционное моделирование уровня логических вентилей [20]. Дебаты относительно адекватности модели одиночных константных ошибок (уровня логических вентилей) не имеют, по-видимому, практического значения, поскольку, как уже доказано, подобная модель является с точки зрения вычислений слишком дорогой, чтобы ее можно было использовать для обработки целой СБИС. Модель одиночных константных ошибок может по-прежнему использоваться для подсхем проекта СБИС в случае применения методов проектирования с учетом тестируемости, предусматривающих разбиение кристалла на подсекции для тестирования, однако может оказаться необходимым прибегнуть к более грубым моделям с ошибками, подобным тем, что служат для функционального тестирования [13, 21], чтобы получить относительные показатели эффективности для множества тест-векторов, предназначаемых для контроля целых кристаллов СБИС. До сих пор мы говорили преимущественно о множествах ошибок и неисправностей для тестирования при отбраковочных испытаниях, а теперь рассмотрим проблемы верификационного тестирования проекта кристалла. При этом виде тестирования мы ищем грубые нарушения топологии схемы, вызываемые любой из перечисленных выше причин. Мы стремимся также выявить такие ошибки, как некорректности временной диаграммы и связи узлов, приводящие к неработо-
способности схемы. Очевидно, что эта категория ошибок принципиально отличается от дефектов, обусловливаемых проблемами технологии изготовления и корпусирования кристаллов, и гораздо труднее поддается моделированию! Распознавание и моделирование потенциальных ошибок проектирования и разработка тестов для контроля на отсутствие таких ошибок представляют нетривиальные проблемы, решение которых традиционно требует значительных интеллектуальных усилий человека. Научные исследования возможностей автоматизации процесса генерации верификационных тестов проекта схемы находятся сейчас лишь на ранних этапах, хотя некоторые обнадеживающие результаты уже получены [13]. II. Методы проектирования с учетом тестируемости Методы проектирования с учетом тестируемости ставят целью по возможности снизить большие затраты времени и человеческих усилий, необходимые для генерации последовательностей тест-векторов контроля СБИС-кристаллов. Выявление неисправных микросхем при установке в систему и при эксплуатации может оказаться также существенно проще, если кристаллы будут проектироваться с встроенными средствами обеспечения тестирования. Хотя предложены различные количественные показатели тестируемости [22], ответ на вопрос о том, является ли данный кристалл более «тестируемым», чем другой, дается обычно скорее качественно, чем количественно. Очевидным качественным показателем тестируемости может служить объем трудозатрат, необходимых для нахождения множеств тествекторов приемлемого размера, обеспечивающих высокий процент покрытия потенциальных ошибок; чем больше трудозатраты, тем менее тестируемым является кристалл. Еще один качественный показатель тестируемости отражает, насколько трудно генерировать тест-векторы и интерпретировать результаты тестирования. Например, множества тествекторов, которые генерируются при помощи простого сдвигового регистра с линейными обратными связями, с интерпретацией результатов при помощи небольшой комбинационной схемы, могут оказаться весьма удачным решением в случае, когда нет дорогостоящих универсальных систем цифрового тестирования. Наконец, еще одним качественным показателем тестируемости является объем трудозатрат, необходимых для локализации (а не просто обнаружения) ошибок схемы; заложенные в схему кристалла при проектировании средства тестирования, упрощающие процесс лока-
лизации неработоспособного логического блока кристалла, могут быть очень полезными, особенно на этапе верификационного тестирования проекта. Методы, которые мы будем рассматривать, предназначаются для повышения степени управляемости (контролируемости) либо наблюдаемости для внутренних узлов кристалла либо обеих этих характеристик схемы. Для улучшения управляемости модифицируют нормальную топологию схемы таким образом, чтобы упростить процесс перевода внутренних узлов в нужные логические состояния; это может в свою очередь значительно упростить процесс генерации последовательностей тест-векторов. Для улучшения наблюдаемости обеспечивается возможность немедленно видеть, правильны ли логические значения внутренних узлов; благодаря этому исключаются проблемы генерации последовательностей тествекторов, которые должны продвигать состояние внутренних узлов через многие уровни логики на основные выводы кристалла. Последовательности тест-векторов для схем, содержащих встроенные средства тестирования, являются зачастую более короткими и, следовательно, выполняются быстрее, а это немаловажное обстоятельство для производственного технического контроля и отбраковочных испытаний. Прежде чем описывать некоторые типичные методы проектирования с учетом тестируемости, упомянем о недостатках подобного подхода. Во-первых, методы проектирования с учетом тестируемости часто требуют увеличения числа выводов корпуса ИС. Хотя число таких дополнительных выводов обычно удается уменьшить благодаря мультиплексированию, это все же весьма серьезный недостаток для микросхем с ограниченным количеством выводов. Во-вторых, большинство способов проектирования с учетом тестируемости требуют также введения дополнительных логических вентилей и межсоединений, дополнительных к необходимым для реализации основных функций схемы. Эти накладные расходы схем для тестирования приводят к следующим нежелательным последствиям: 1) Выход годных. Тест-схемы увеличивают площадь кристалла и тем самым уменьшают выход годных (т. е. процент изготовленных кристаллов, которые оказываются полностью работоспособными). Кроме того, чем больше размер кристалла, тем меньше кристаллов умещается на полупроводниковой пластине. Эти факторы могут привести к значительному увеличению стоимости кристаллов. 2) Быстродействие. Тест-схемы могут создавать дополнительные емкостные нагрузки для схемных узлов или вноситьдополнительные вентильные задержки для обычных логиче-
ских цепей схемы, либо и то, и другое. Это будет отражаться на работе основной схемы. Фирмы-изготовители, действующие в полупроводниковой промышленности, где наблюдается острая конкуренция, сейчас все с большей неохотой идут на связанное с этим снижение быстродействия. 3) Мощность рассеяния. Дополнительные тест-схемы обычно приводят к увеличению потребляемой мощности кристалла. Эту проблему нельзя недооценивать, особенно если учесть, что с ростом количества компонентов, размещаемых на кристалле, отвод выделяемого тепла становится все более сложной инженерной задачей. Согласно нашей оценке, наиболее широко распространенные методы проектирования с учетом тестируемости вызывают дополнительные расходы площади кристалла, снижение быстродействия и увеличение мощности рассеяния в пределах до 20%. Наконец, разработчики иногда отказываются от применения подобных методов, поскольку считают, что они не позволяют им в полной мере реализовать свои творческие замыслы. Во многих организациях разработчики считают даже, что они, собственно, и не должны беспокоиться о проблемах тестирования, поскольку для этого существует специальная служба контроля и тестирования. К счастью, сейчас все больше разработчиков охотно идут на внедрение методов проектирования с учетом тестируемости, так как понимают, насколько серьезны проблемы контроля, особенно для сложных интегральных схем. Ни один из известных методов проектирования с учетом тестируемости не может служить панацеей. Если для данной схемы выбран какой-либо метод, то, как правило, лучше всего последовательно придерживаться его на всех этапах процесса проектирования, от составления технического задания до завершения разработки, а не просто включать соответствующие средства в практически уже готовую схему. Методы, которые мы опишем, в ряде случаев рекомендуется дополнять хотя бы минимальными средствами обычного тестирования; другими словами, кристалл следует проверять в режиме нормального функционирования и при нормальной рабочей частоте. Некоторые средства обычного тестирования будут необходимы, например, если выбранный метод проектирования обеспечивает только статический контроль схемы, а кристалл содержит критические по времени логические цепи. Кроме того, обычное тестирование будет необходимо, если выбранный метод проектирования предусматривает только проверку отдельных логических блоков схемы, но не контролирует цепи связи между этими блоками. Чтобы решить, какой именно метод проектирования выбрать для дан-
-У,
"t U
2
Уг
Комбинационная логина
v 'п
Выход данных сканирования
Выход данных Si
ТТТ SMA
SL
SL
Вход данных *—О D
"вход 1 J данных сканиА родания Подчинен- Выход,, сканиро ный м вание/нормальГлавный
ный
"
Триггер типа MS для ' сканирования
ТТТ SMA
SL
ТТТ
Вход данных сканирования
,SMA Рис. 2. Синхронная последовательная цифровая схема, содержащая средства сканирования. По сравнению с обычными MS-триггерами триггеры типа M S для контрольных цепей сканирования (SL) имеют два дополнительных входа: вход / для занесения сдвигаемых данных и вход управления А для выбора нормального режима работы или режима сканирования.
нои схемы, нужно сопоставить такие преимущества, как упрощение генерации тест-векторов, увеличение процента покрытия ошибок и возможное уменьшение времени тестирования, с указанными выше недостатками. А. Методы сканирования. Методы сканирования упрощают тестирование последовательностных схем благодаря тому, что превращают эту задачу в более легко выполнимую задачу тестирования комбинационных схем. Подобные методы требуют включения в схему специальных триггеров, из которых в тестовом режиме можно формировать один или более распределенных сдвиговых регистров. При этом значения каждого триггера можно устанавливать или наблюдать посредством простого сдвига последовательности битов. На
Рис. 3. Реализация триггера типа M S для контрольного сканирования по я-канальной МОП-технологии.
рис. 2 показана одна из возможных реализаций этого метода с использованием триггерных пар типа MS, работающих от неперекрывающихся синхросигналов главного и подчиненного элементов пары. Такие триггерные пары позволяют без гонки фронтов производить сдвиг содержимого распределенного сдвигового регистра и обеспечивают работу схемы в нормальном режиме также без гонки фронтов, при условии, что максимальная задержка в комбинационной логике меньше длительности периода частоты синхронизации. На рис. 3 показано, каким образом можно модифицировать базовый MS-триггер для сканирования (при изготовлении по я-канальной МОП-технологии) путем добавления простого входного мультиплексора*. Управляющий сигнал А определяет, будет ли триггер запоминать значение, принимаемое по нормальному входу данных D или по входу регистра сдвига /. Выход данных Q каждого триггера поступает на комбинационную схему, а также на вход / следующего триггера распределенного сдвигового регистра. При необходимости можно ввести буферизацию, чтобы исключить перегрузку выходов Q паразитными емкостями длинных цепей связи со следующими входами I сдвигового регистра. Когда А = О, триггеры хранят данные комбинационной схемы, а кристалл * Показанная схема требует добавления только четырех транзисторов на триггер, однако несколько увеличивает з а д е р ж к у в тракте обработки данных из-за прохождения сигнала через мультиплексор. Другие возможные реализации [23] не вносят задержку, но требуют большего числа транзисторов.
работает в нормальном режиме. При работе в режиме тестирования при Л = О в триггерах запоминаются значения выходов х комбинационной схемы. Когда Л = 1, триггеры запоминают данные, принимаемые от предыдущих триггеров сдвигового регистра. Это дает возможность устанавливать значения входов х комбинационной схемы, сдвигая по распределенному регистру данные, поступающие по входу сканирования кристалла; одновременно происходит выдача данных, ранее запомненных в сдвиговом регистре, на выход сканирования кристалла. Реализация такого метода сканирования требует занятия двух дополнительных выводов кристалла: Л и вход сканирования. Использования дополнительного вывода в качестве выхода сканирования зачастую удается избежать, поскольку в большинстве схем выход по крайней мере одного триггера связан с основным выводом кристалла (так что этот триггер может стать последним в цепи контрольного сдвигового регистра). Кроме того, Мерсер и Агравал [24] разработали новый способ синхронизации с применением модифицированного MS-триггера, позволяющий обойтись без линии управления А и благодаря этому несколько сэкономить площадь кристалла. Здесь мы должны указать, что кристаллы, в состав которых входит, например, секция запоминающего устройства произвольной выборки (ЗУПВ), требуют особого подхода при рассмотрении возможностей применения методов сканирования. Элементы ЗУПВ нельзя включать в контрольные цепи сканирования по следующим очевидным причинам: большое количество этих элементов, необходимость достижения высокой плотности компоновки для топологии ЗУПВ и т. д. В большинстве схем входные и выходные порты ЗУПВ обычно доступны через основные контакты ввода-вывода кристаллов; если это не так, кристалл следует соответственно переработать. После этого для тестирования секции ЗУПВ можно будет использовать известные методы [25—27]. Хотя в нескольких крупных компаниях-изготовителях при проектировании с учетом тестируемости применяются различные способы сканирования [28], этот принцип обычно связывается с корпорацией IBM, поскольку он является основой ее известного метода сквозного сдвигового регистра (МССР) [29]. MS-триггер для цепей сканирования, показанный на рис. 3, по сути аналогичен триггерам, применяемым в сквозном сдвиговом регистре корпорации IBM. Метод сквозного сдвигового регистра предусматривает также такие моменты, как управляемость для внутренних линий синхронизации, связанность триггеров сканирования и исключение условий для возникновения гонки фронтов [29]. Другие методы ска-
нирования предполагают использование триггеров с запуском по фронту сигнала (а не триггеров типа MS), а еще некоторые методы предусматривают объединение сдвиговых регистров в контрольную схему, не являющуюся частью обычной логической схемы. Триггеры этих регистров представляют дополнительные точки для управления и наблюдения. Один аналогичный метод, известный под названием случайное сканирование, обеспечивает произвольную адресацию триггеров контрольной схемы с возможностью чтенияВыход сигнала записи, как для элементов четности ЗУПВ. Подробное описание этих методов дали Уильяме Рис. 4. Генератор сигналов четности, состоящий из логических вентилей и Паркер [28]. «исключающее ИЛИ». Показанная Методы сканирования схема осуществляет сжатие восьми предназначаются преиму- бит шины данных в один бит контроля четности. щественно для статического тестирования цифровых схем, хотя с их помощью возможно выявление и некоторого процента динамических ошибок [30]. Как и в случае любого другого метода проектирования с учетом тестируемости, тестирование на рабочей частоте всегда можно осуществлять, если задавать для кристалла режим нормального функционирования. Б. Сжатие данных. Методы сжатия данных предполагают, что производится сбор данных с многих ключевых узлов схемы, эти данные уплотняются и в сжатом виде выдаются для контроля [31], благодаря чему повышаются возможности наблюдения за состояниями внутренних узлов. В одном из подобных методов [32, 33] применяются генераторы сигналов четности и сигнатурные регистры. Генератор сигналов четности — это дерево логических вентилей типа «исключающее ИЛИ», которое определяет четность для ключевых линий данных в течение каждого такта (рис. 4). Генератор сигналов четности можно рассматривать как схему пространет вен9—708
Четность 1 Четность /
Четность 3
Четность 4 Четность 5
Установка
Пуск/стоп
Синхросигнал
<3 01
02
03
6 Q4
05
Рис. 5. Сигнатурный регистр. Показанный пятиразрядный регистр с линейными обратными связями ( L F S ) сжимает последовательности битов, поступающие из пяти источников (четность 1—5), в одну комбинацию логических нулей и единиц, которая выдается на выходы Q l — Q 5 в конце теста.
ного сжатия данных, поскольку он уплотняет данные, поступающие от многих ключевых точек кристалла, формируя на выходе один контрольный бит. Выходы генераторов сигналов, четности поступают на один или более сигнатурных регистров, которые реализуются как регистры с линейными обратными связями (рис. 5). Сигнатурный регистр сжимает длинные последовательности контрольных битов, поступающие от генераторов сигналов четности, в комбинацию логических нулей и единиц, которую можно наблюдать в какой-то один момент времени, тем самым обеспечивается временное сжатие данных. Таким образом, данные, проходящие через схему, подвергаются пространственному и временному сжатию с формированием сигнатуры (контрольной комбинации логических нулей и единиц), которая говорит о том, правильноли работала схема при выполнении теста. Схема, содержащая средства сжатия данных, проверяется в своем нормальном рабочем режиме и на полной номинальной рабочей частоте. В процессе выполнения теста сигнатуры накапливаются в сигнатурном регистре и контролируются в заранее определенные моменты времени. Ошибка сигнатуры свидетельствует о неправильной работе кристалла. Улучшение наблюдаемости внутренних узлов, обеспечиваемое благодаря подобной схеме сжатия данных, дает возможность использовать более короткие множества тест-векторов, которые проще генерировать и которые дают более высокий процент покрытия потенциальных ошибок кристалла.
Число дополнительных контактов ввода-вывода, необходимых для реализации этого метода, зависит от конкретных обстоятельств. Нужно иметь два управляющих сигнала: сигнал «УСТАНОВКА», который служит для инициализации сигнатурного регистра (или регистров), и сигнал «ПУСК/ /СТОП», который определяет интервал выборки. Каждый •выходной бит сигнатурного регистра должен выдаваться на основные выводы кристалла, причем количество битов сигнатуры (т. е. количество разрядов сигнатурного регистра)— это параметр, выбираемый разработчиком. В некоторых случаях с целью уменьшения числа необходимых дополнительных контактов ввода-вывода кристалла возможно использование мультиплексирования. Рассмотрим вопрос о разрешающей способности сигнатурного регистра, подобного показанному на рис. 5, с точки зрения обнаружения ошибок, т. е. вопрос о том, будут ли для различных входных последовательностей регистра с линейными обратными связями формироваться различные значения сигнатур. Предположим, что на я-разрядный регистр с линейными обратными связями поступает последовательность S длины k, причем k>n. Если не считать некоторых вырожденных случаев, которые здесь не представляют интереса, существуют (2пк~п—1) других входных последовательностей, для которых будет формироваться такая же сигнатура [34]. Учитывая, что общее количество других последовательностей есть (2 nfe —1), получим, что доля других последовательностей, для которых сигнатуры совпадут со значением сигнатуры для S, будет (2»*-«—1)/(2»*— 1) (5) С увеличением длины k входной последовательности доля последовательностей, сигнатуры для которых будут отличаться от сигнатуры 5, приближается к D А1—2-" (6) Для пятиразрядного сигнатурного регистра, подобного показанному на рис. 5, D = 0,97. Довольно распространено неверное представление (например, [34]) о том, что D обозначает вероятность обнаружения ошибки в длинной входной последовательности. Это было бы справедливо для особой ситуации, когда все ошибки равновероятны, однако при тестировании цифровых схем это бывает редко (как, впрочем, и во всех других случаях). Кроме того, часто считается, что точки подключения обратных связей для сигнатурного регистра необходимо выбирать таким образом, чтобы обеспечить максимальную длину последовательности; это значит, что если
для сигнатурного регистра провести инициализацию в ненулевое состояние и удерживать нули на входах, то регистр будет последовательно принимать все возможные ненулевые' состояния. Нахождение подобных точек подключения обратных связей осуществляется при помощи теории неприводимых полиномов для поля Галуа порядка 2 [35—37]. Однако, повидимому, нет каких-либо четких аналитических доказательств того, что следует обязательно стремиться выбирать подключения обратных связей таким образом, чтобы добиваться последовательности максимальной длины; на практике используются и дают хорошие результаты и другие обратные связи. Отличное обсуждение этого предмета можно найти у Смита [38]. Не существует жестко определенных правил, регламенти*рующих количество сигнатурных регистров и деревьев контроля четности, их размеры и их взаимосвязи. Главным фактором здесь может служить количественный показатель покрытия ошибок, достигаемого при помощи множества тест-векторов приемлемой мощности, которые можно генерировать без чрезмерных усилий. При правильной реализации этот метод обеспечивает почти столь же высокий процент покрытия ошибок, как в случае непосредственного контроля шин данных. (Хотя непосредственный контроль шин данных в реальной схеме может оказаться невозможным, это всегда осуществимо для имитатора ошибок.) Преимущество метода сжатия данных по сравнению с описанным выше методом сканирования заключается в том, что он позволяет обеспечить полное функциональное тестирование схемы на максимальной рабочей частоте. В. Преобразования схем и специальные реализации. Эти методы [39—46] требуют четкого соблюдения строгих топологических правил. Они обычно обеспечивают 100%-ное покрытие одиночных константных ошибок при использовании лишь немногих легко генерируемых тест-векторов. Кроме того, число тест-векторов, как правило, не зависит от сложности кристалла или от функций, которые он реализует. К сожалению, эти методы иногда требуют многих дополнительных контактов ввода-вывода, а также обычно приводят к существенному увеличению занимаемой площади, снижению быстродействия и повышению мощности рассеяния; следовательно, они вряд ли когда-либо будут применяться в широких масштабах. Однако эти методы позволяют в значительной степени, упростить процесс тестирования и поэтому заслуживают рассмотрения. Мы опишем метод, базирующийся на так называемом двураздельном преобразовании [40], типичный для
А1 А 2
о
вг Рис. 6. Двураздельная схема. Показана черная/белая «раскраска» логических вентилей и проводников схемы.
А G
В О
=п>
Рис. 7. Недвураздельная схема С.
методов этой категории. Он обеспечивает возможность при помощи всего лишь шести тест-векторов производить 100% ное статическое тестирование на отсутствие одиночных константных ошибок. Мы опишем этот метод только для комбинационных схем, хотя его можно распространить и на последовательностные схемы [40], комбинируя его с каким-либо методом сканирования. Инвертирующие логические вентили обладают следующим свойством: если для всех входов установить значения 0 (соответственно 1), то на выходе вентиля будет 1 (соответственно 0). Примерами таких инвертирующих логических вентилей могут служить вентили И-НЕ, ИЛИ-НЕ и инверторы. Рассмотрим комбинационную схему С, состоящую из взаимосвязанных инвертирующих логических вентилей. Говорят, что схема С является двураздельной, если можно окрасить ее логические вентили и соединительные проводники в два цвета, черный и белый, таким образом, что каждый белый (соответственно черный) вентиль будет иметь только белые (соответственно черные) проводники на входах и черный (соответственно белый) проводник на выходе. Пример двураздельной схемы показан на рис. 6. Двураздельные схемы имеют важное значение по следующим причинам [40]: Принцип четности. Если для белых входных проводников двураздельной схемы установить логическое значение а, а для черных входных проводников — значение а, то все белые проводники этой схемы будут иметь значение а, а все черные проводники схемы — значение а. Именно принцип четности, представляющий свойство четкой управляемости, является ключевым для этого метода проектирования с учетом тестируемости. Не все схемы являются двураздельными. На рис. 7 показана комбинационная схема с инвертирующими логическими вентилями (двухканальный мультиплексор), которая не является двураздельной. Однако существует простой канониче-
Рис. 8. Схема Сь для схемы рис. 7.
ский способ преобразования любой комбинационной схемы с инвертирующими логическими вентилями в двураздельную. Этот способ может почти удвоить количество вентилей. Мы опишем его на примере преобразования схемы рис. 7. Обозначим комбинационную схему с инвертирующей логикой через С. Сделаем две копии каждого вентиля схемы С: белую и черную. Кроме того, сделаем белую и черную копии каждого проводника схемы С. Затем создадим новую схему Сь следующим образом: соединим выход белой копии вентиля с черной копией проводника, на который этот вентиль работает в схеме С; соединим противоположный конец (или концы) этого проводника с входами черной копии каждого вентиля, с которым он соединен в схеме С. Аналогичным образом белая копия входного проводника соединяется с белой копией каждого вентиля, с которым он соединен в схеме С. Теперь выполним дополняющую процедуру, т. е. повторим все эти действия с заменой белого на черный и черного на белый. При таком построении схема Сь будет двураздельной. Схема Сь для приведенного на рис. 7 примера показана на рис. 8. Если сравнивать со схемой С, то двураздельная схема Сь имеет такой же коэффициент разветвления и такую же глубину, однако у нее вдвое больше входов, выходов и вентилей. Опишем теперь, каким образом можно путем дальнейшего преобразования схемы Сь получить новую схему См, имеющую то же самое число входов и выходов данных, как в схеме С. Отметим вначале, что черная и белая копии каждого выходного проводника избыточны, следовательно, одну из этих копий можно исключить. Кроме того, можно исклю-
Рис. 9. Схема Сы для схемы рис. 7; здесь Т — комбинационный логический элемент, реализующий следующую функцию: если Р Е Ж И М = 0 , то G&= = 0 Ш = 0 ; если Р Е Ж И М = 1 , то Gb=Gw=G.
а
i
-
в ^ О ^ г П ^
0
С
б Рис. 10. Схема, которая содержит только логические вентили И Л И - Н Е н инверторы, может быть реализована с использованием лишь двувходовых вентилей И Л И - Н Е , а — инвертор образуется путем соединения входов двувходового вентиля И Л И - Н Е . б — вентиль И Л Й - Н Е с числом входов более двух может быть реализован как дерево из двувходовых вентилей И Л И - Н Е и инверторов.
чить также и вентиль, работающий на избыточный выходной проводник, и всю логику, работающую на этот вентиль. Таким образом, схема Сы имеет то же количество выходов данных, что и С, с менее чем вдвое увеличенным количеством вентилей в функциональной части схемы. Исключение логики, работающей на избыточный выход, позволяет также исключить черную или белую копию некоторых из входных проводников, однако в обычном случае обе копии каждого входного проводника остаются. Отметим, что схема Сы (или Сь) будет моделировать схему С, если на черную и белую копии каждого входного проводника подавать одно и то же значение. Однако при тестировании нам необходимо, чтобы на черную и белую копии каждого входного проводника подавались дополнительные коды. Эти два режима работы можно обеспечить без увеличения количества входов данных по отношению к схеме С, если воспользоваться простым комбинационным логическим элементом Т с входами х и РЕ-
сif -oS
\
ж и м , выходами Хь и xw, реализующим следующую функцию: если Р Е Ж И М = 1 , то xb=x w = x\ если_ РЕЖ И М = 0,
то
Xb=xw
= x.
В общем каждый основной I Ов вход схемы См поступает на вход х элемента Т, а выход этого элемента Т связан с черной и белой копиями соответствующего входного проводника. Элементы Т не нужны для тех входов, где один из двух входных про-оП водников был исключен как избыточный. Схема См для приведенного на рис. 7 примера показана на рис. 9. Теперь обозначим через С комбинационную «-каijl О в нальную МОП-схему, содер'R жащую только вентили ИЛИ-НЕ и инверторы. Без потери общности предположим, что схема С состоит исключительно из двувхоРис. 11. а — двувходовый логический вентиль И Л И - Н Е , изготавливаемый довых вентилей ИЛИ-НЕ по я-канальной МОП-технологии, б — [инверторы можно синтезиуправляемый двувходовый вентиль ровать путем объединения И Л И - Н Е , изготавливаемый по «-кавходных точек двувходового нальной МОП-технологии. Управляющие сигналы с г и с 2 являются общими вентиля ИЛИ-НЕ, а вентии используются в режиме тестировали ИЛИ-НЕ с числом вхония для активации не более чем оддов более двух можно синтеной цепи вентиля И Л И - Н Е в каждый зировать как дерево из двумомент времени. входовых вентилей ИЛИ-НЕ и инверторов (рис. 10)]. Предположим, что схема С преобразована в схему См, как было описано выше. Построим схему Сь2 путем замены каждого вентиля ИЛИ-НЕ схемы См (рис. 11, а) на управляемый логический вентиль ИЛИ-НЕ, показанный на рис. 11,6. Управляющие сигналы сi и с2 (рис. 11,6) являются общими (т. е. они поступают на каждый вентиль схемы), так что они обеспечивают простоту тестирования на константные ошибки. Мы опускаем здесь подробное доказательство этого утверждения [40], однако нетрудно показать, что последовательность из пяти тест-векторов, приведенных в табл. I,
обеспечивает 100%-иое покрытие одиночных константных ошибок в функциональной части схемы Сь2, если наблюдается указанное событие*. Сейчас мы обсудим, каким образом наблюдать эти события. Последний тест-вектор табл. I требует, чтобы значение РЕЖИМ было установлено равным 0, а для всех входов данных 1. Отметим, что здесь существуют всего три наблюдаемых события: все черные проводники имеют значения 1 и все белые проводники — значение 0, все черные проводники— значение 0, а все белые 1 и,наконец, все проводники равны 1. Поскольку последовательность, упомянутая выше, контролирует только три из четырех возможных входных комбинаций для элементов Т на входах кристалла, необходим еще один дополнительный тест-вектор. Этот тест-вектор устанавливает значение 0 для линии РЕЖИМ и всех внешних входов; наблюдаемое событие состоит в том, что на выходах всех элементов Т оказывается значение 0. Наконец, отметим, что указанная выше тестовая последовательность создает для каждого основного выхода кристалла состояние и 0, и 1, так что ошибки монтажа контактных площадок кристалла можно обнаруживать путем непосредственного наблюдения за состояниями основных выходных контактов схемы. Описанные события относятся к двум группам проводников: все проводники одной группы должны иметь значение 0, в то время как все проводники другой группы должны иметь значение 1. Эти события можно обнаруживать при помощи одного логического вентиля ИЛИ-НЕ с большим числом входов для группы проводников с нулевыми значениями и логического вентиля И-НЕ с большим числом входов для группы проводников с единичными значениями. В обычном случае подобные вентили распределяются по схеме и реализуются, вероятнее всего, как дерево вентилей с приемлемым коэффициентом разветвления по входу, чтобы избежать чрезмерного снижения быстродействия. Отметим, однако, что быстродействие этих контрольных вентилей не является критическим, так как оно определяет только возможную частоту приложения шести тест-векторов. Схему, полученную в результате добавления контрольных вентилей в Сь2, обозначим Сы- На рис. 12 показана одна возможная реализация схемы Сы для приведенного на рис. 7 примера. Схема Сы предусматривает возможность 100%-ного контроля одиночных константных ошибок в его функциональной части, включая входные элементы Т, при помощи описанных * Эта последовательность тест-векторов обнаруживает также постоянно закрытый нагрузочный транзистор в каждом логическом вентиле Н Е - И Л И [40], который не модулируется в строгом смысле как классическая константная ошибка.
Режим Ао
ь
о—
во
NB1
Рис. 12. Схема Сь/ для схемы рис. 7. Сигнал ВО служит для наблюдения события «все черные проводники равны 0», а сигнал NB1 — отрицательный логический сигнал, позволяющий наблюдать событие «все черные проводники равны 1». Сигналы №0 и NW1 обеспечивают наблюдение событий «все 0» и «все 1» соответственно для белых проводников; сигнал / 0 обеспечивает наблюдение события «все выходы элементов Т равны 0».
выше шести тест-векторов [40], при условии что контрольные вентили работают безошибочно. Рассмотрим теперь случай, когда эти контрольные вентили работают неправильно. Такая ошибка, как постоянно закрытый нагрузочный транзистор в контрольном вентиле И-НЕ или постоянно открытый нагрузочный транзистор в вентиле ИЛИ-НЕ, приведет к тому, что будет забракована схема, имеющая, возможно, безошибочную функциональную часть, однако подобное снижение выхода годных является частью той цены, которую приходится платить за реализацию любого метода проектирования с учетом тестируемости. А как быть с ошибками, например типа постоянно открытого транзистора в контрольном вентиле И-НЕ, которые могут маскировать ошибки в функциональной части схемы? Обозначим через п узел, соединенный с вентилем постоянно открытого транзистора, и обозначим через ао ошибку, когда п постоянно находится в состоянии 0. Поскольку постоянно открытый транзистор не реагирует на ао, эту ошибку нельзя непосредственно обнаружить при помощи контрольного вентиля И-НЕ. Если, однако, соединить п с
входом какого-либо другого вентиля, то результат ошибки ао будет распространяться через этот вентиль при приложении одного из тест-векторов табл. I. Это объясняется тем, что управляющие входы С\ и с 2 используются для активации не более чем одной нагрузочной цепи в каждом логическом вентиле для каждого тест-вектора. Следовательно, если соединить п с входом любого другого вентиля, ошибка ао будет почти наверное обнаружена по ее последствиям для других узлов схемы. Если п не связан с входом какого-либо другого вентиля, это, по-видимому, основной выход, и ошибка ао будет обнаруживаться тривиально. Рассмотрим теперь случай постоянно открытого транзистора в вентиле, работающем на узел п. Более конкретно, предположим, что один функциональный транзистор этого вентиля (т. е. транзистор, которым управляет вход А или В, см. рис. 11,6) постоянно открыт. Обозначим эту ошибку ось Предположим далее, что транзистор, соединенный с узлом п в контрольном вентиле И-НЕ, постоянно открыт. В этом случае при подаче одного тест-вектора табл. I узел п будет иметь значение 0, когда он должен иметь значение 1. Если, однако, ни один вентильный вход, соединенный с п, не будет активироваться тем же самым тест-вектором, ошибка ai не будет проходить через следующий уровень логики и не будет обнаружена. Все эти рассуждения относительно маскирования ошибок иллюстрируют общий критерий применения методов проектирования с учетом тестируемости: как правило, желательно предусматривать те или иные средства независимого тестирования тест-схем. Если это невозможно, то необходимо по крайней мере добиваться того, чтобы ошибки тест-схемы не маскировали ошибки в функциональной части схемы. Мы показали, что способу двураздельного преобразования свойственны потенциальные проблемы маскирования Таблица Значения входов черные входы
белые входы
1
0
I
Наблюдаемые события С2
черные проводники
белые проводники
1
0
1
0
С1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
1
ошибок. Эти проблемы можно свести к минимуму, если при проектировании гарантировать, что в случае подачи одного из пяти тест-векторов табл. I последствия ошибки не ограничиваются выходным узлом того вентиля, где она произошла, но распространяются минимум еще на один уровень логики. Логический вентиль ИЛИ-НЕ под именем 10 с большим коэффициентом разветвления по входу, связанный с шестым тест-вектором, который проверяет на нули выходы элементов Т, представляет другую проблему маскирования ошибок. Одним из способов ее решения служит обеспечение возможности тестирования вентиля ИЛИ-НЕ под именем 10, чтобы убедиться, что ни один из нагрузочных транзисторов не является постоянно закрытым. Для этого необходимо устанавливать все входы вентиля 10 в 1, в то время как все остальные входы удерживаются в состоянии 0. Это можно сделать различными способами. Например, можно ввести дополнительную логику, позволяющую устанавливать 1 для линии РЕЖИМ каждого элемента Т поочередно, в то время как все другие элементы Т имеют РЕЖИМ = 0. Хотя эта дополнительная логика обеспечивает тестирование на отсутствие постоянно закрытых транзисторов вентиля 10, в подобном случае обычно во много раз увеличивается общее количество тест-векторов и в связи с этим частично теряется смысл этого метода проектирования с учетом тестируемости. Возможен альтернативный вариант — можно считать, что очень мала вероятность того, что постоянно закрытый транзистор будет находиться на том самом входе вентиля 10, который соединен с выходом неисправного элемента Т. Наконец, этот метод можно использовать только для быстрого предварительного тестирования. После этого можно использовать обычные методы тестирования, чтобы обнаруживать ошибки, которые могут оказаться замаскированными из-за неисправных контрольных вентилей. Эти рассуждения говорят о том, что тестирование СБИС всегда связано с некоторой степенью неопределенности. Сложность СБИС и ограниченные возможности наблюдения за состояниями внутренних узлов требуют нахождения некоего компромисса между затратами на тестирование и степенью неопределенности относительно числа необнаруживаемых ошибок. III. Методы самотестирования ,Термин самотестирование мы употребляем применительно к микросхемам, на кристалле которых размещаются средства для генерации задающих тест-векторов и сжатия результатов
тестирования. При реализации описанных здесь методов на кристалле можно разместить также схему анализа результатов теста, чтобы на основе этих результатов выработать либо простой признак «прошел — не прошел», либо дополнить подобный признак данными, служащими для локализации неисправных логических блоков. Очевидно, что ни один способ самотестирования не может быть полностью автономным, т. е. всегда приходится организовывать передачу каких-то данных на кристалл и из кристалла. Необходимо как минимум «сказать» кристаллу, что он должен переключаться в режим самотестирования, а затем необходимо прочитать признак «годен — не годен»; многие способы самотестирования требуют обменов данными больших объемов. В принципе метод самотестирования можно рассматривать как один из методов проектирования с учетом тестируемости, при котором объем данных, поступающих на кристалл и выдаваемых из кристалла, существенно сокращен по сравнению с вышеописанными методами. Микросхемы, содержащие средства самотестирования, можно проверять при помощи оборудования, которое проще и дешевле, чем то, что требуется для описанных выше методов проектирования с учетом тестируемости. А. Встроенный контроллер логических блоков (BILBO). Метод встроенного контроля логических блоков (BILBO) [47, 48] сочетает элементы сканирования и сжатия данных. Метод BILBO лучше всего подходит для обширного класса цифровых схем, содержащих взаимосвязанные логические (функциональные) блоки с триггерами-защелками в трактах данных между этими логическими блоками. В режиме тестирования на входы каждого логического блока поступают сигналы от размещенного на кристалле генератора псевдослучайных тест-кодов (TPG), а выходы блока в свою очередь поступают на соответствующий расположенный на кристалле сигнатурный регистр (SR) (рис. 13). Этот сигнатурный регистр называется наблюдателем логических блоков [47]. Генератор тест-кодов TPG и сигнатурный регистр SR являются регистрами с линейными обратными связями LFS и в идеале получаются путем задания соответствующей конфигурации триггеров, входящих в обычную логическую схему. Эти регистры BILBO могут быть соединены в один или более распределенных сдвиговых регистров (рис. 13), так что их инициализацию и считывание можно производить при помощи простой операции сдвига битовой последовательности. На рис. 14 показан регистр BILBO, реализованный по «-канальной МОП-технологии. Входящие в эту схему триггеры-
/ Л
Рис. 13. Метод BILBO обеспечивает возможность контроля логических блоков кристалла на полной рабочей частоте, предусматривая использованиеобычных регистров данных в качестве генераторов тест-кодов (TPG) и сигнатурных регистров (SR) в режиме самотестирования. Инициализацияи считывание содержимого генераторов TPG и сигнатурных регистров S R производится при помощи цепей сканирования.
защелки L могут работать в одном из четырех режимов в зависимости от приложенных на управляющие входы А1 и А2 значений (см. табл. II). В отличие от схемы, описанной Кёнеманном и др. [47], схема рис. 14 предусматривает раздельные функциональные режимы для генерации тест-кодов-и накопления сигнатур. В обычном случае один регистр BILBO разделяется (коллективно используется) двумя логическими блоками: один блок формирует входные данные для этого регистра, а другой принимает от него выходные данные. Регистр BILBO может выполнять функции сигнатурного регистра для логического блока, с которого к нему поступают входные данные на первом этапе выполнения теста, а затем: выполнять функцию TPG для логического блока, подключенного к его выходам данных на втором этапе. Таким образом, регистры BILBO делятся на две группы: регистры одной» группы реализуют функции генераторов тест-кодов TPG, а регистры другой — функции сигнатурных регистров SR Е-. течение первого этапа выполнения теста, а на втором этапе:
D1
D2
D3
D4
D5
А1о-
Выход сканирования l.nunupUUUI
Я ход сканирования Синхросигнал
O f
01
02
Q3
Q4
05
Рис. 14. Реализация регистра BILBO по л-канальной МОП-технологии. Если подключить логический вентиль N типа ИЛИ-НЕ, как показано пунктирными линиями, этот сдвиговый регистр будет принимать все состояния, в том числе нулевое состояние, в режиме генератора тест-кодов (Л 1 = 1, А2=0). В режиме сигнатурного регистра (>41 = 1, / 4 2 = 1 ) двоичные последовательности, поступающие на входы D1—D5, сжимаются в сигнатуру, которая выдается на выходы Q l — Q 5 в конце теста.
регистры обеих групп меняются ролями. Управляющий сигнал Л1 является общим, а Л2 должен формироваться для обеих групп раздельно, поскольку, когда Л 1 = 1, сигнал Л2 определяет режим функционирования (TPG или SR) регистра BILBO. В обычном случае точки подключения обратных связей для генераторов TPG выбираются таким образом, чтобы обеспечивалась работа с последовательностями максимальной длины; если логические блоки имеют менее приблизительно 30 входов, становится практически целесообразным последовательно перебирать все возможные состояния генераторов TPG. Модифицированный контрольный регистр LFS, который проходит также через нулевое состояние [49], формируется, если подключить логический вентиль ИЛИ-НЕ как показано пунктирными линиями на рис. 14. Генераторы TPG, последовательно перебирающие все возможные состояния, в том числе нулевое, обеспечивают полное тестирование комбинационных логических блоков. Схема, содержащая средства BILBO, проверяется следующим образом. Вначале производится инициализация генераторов TPG и сигнатурных регистров SR путем сдвига битовой последовательности через вход сканирования. Затем кристалл начинает выполнять автономную процедуру тестирования, во время которой каждый TPG выдает на вход под-
Таблица
II
Режим
Ai
Аз
О
О
Сканирование
0
1
Нормальный (хранение данных)
1
0
Генератор тест-кодов T P G
1
1
Сигнатурный регистр SR
ключенного к нему логического блока последовательность входных векторов, а выходные данные этого логического блока накапливаются в сигнатурном регистре SR этого блока. В конце выполнения теста данные, хранящиеся в регистрах, выдаются через выход сканирования, причем значения сигнатурных регистров сравниваются с ожидаемыми значениями. Затем сигнатурные регистры SR и генераторы TPG меняются ролями и процедура повторяется. Метод BILBO обеспечивает тестирование каждого логического блока на его полной рабочей частоте, однако передачи данных на кристалл и с кристалла могут осуществляться на низкой частоте при помощи простого и недорогого испытательного оборудования. BILBO является одним из многих способов, предусматривающих сочетание методов сканирования с контрольными регистрами LFS, чтобы обеспечить простоту тестирования или самотестирование. Дополнительные примеры подобного подхода можно найти в [50]. Б. Самотестирование при помощи встроенных средств обратной связи. Схема, реализующая метод самотестирования при помощи встроенных средств обратной связи (STIF) генеририрует собственные тест-векторы, подавая обработанные выходные данные на свои входы. Первоначально автор рассматривал метод STIF как дополнительный механизм самотестирования для быстродействующего параллельного БИСумножителя 16X16 в дополнительном двоичном коде без специальных средств тестирования, предусмотренных при проектировании. Реализация метода STIF потребовала дополнительных схем, которые удалось разместить на кристалле, однако как внешние по отношению к базовому умножителю; таким образом, переработка базового умножителя не понадобилась. Это было важно потому, что умножитель уже имел компактную топологию, созданную вручную, так что
Основные
входы
о
Основные выходы Рис. 15. Метод STIF. Здесь функциональное устройство генерирует свои' собственные тест-векторы, когда его обработанные выходные данные подаются снова на входы через мультиплексор.
его переработка обошлась бы очень дорого как по времени,, так и по затраченным усилиям. На рис. 15 показана блок-схема умножителя с самотестированием. Управляющий вход А определяет, работает ли умножитель в нормальном режиме или в режиме самотестирования: при А = 0 устанавливается нормальный режим, а при А = 1 — режим самотестирования. Сигнал А проходит через триггер-защелку, на выходе которого образуется новый сигнал А', синхронизированный по тактовой частоте системы. Выходные данные функционального устройства (т. е. умножителя) поступают в процессор обратной связи. Запоминающие элементы этого процессора обратной связи, если таковые имеются, стробируются синхросигналом С' и инициализируются сигналом А'. Входной мультиплексор, управляемый сигналом А', определяет, будут ли поступать на входы функционального устройства данные основных входов или выходные данные процессора обратной связи. Контроллер длины теста определяет длину теста; он работает от системного синхросигнала С и инициализируется по сигналу А'. На выходе G (вентильном выходе) контроллера длины теста устанавливается значение 1, когда А' = 0, причем это значение10—708
/ сохраняется и после переключения А' в состояние 1 на заранее определенное число тактовых импульсов (подсчитываемых с момента переключения А' в состояние 1). После этого выход G переключается в 0 и остается в состоянии О, пока не будет установлен в 1 по сигналу А'. Когда выход G переключается в 0, он блокирует прохождение синхросигнала как на функциональное устройство, так и на процессор обратной связи, благодаря чему основные выходные данные фиксируются для наблюдения. Инициализация запоминающих элементов (если таковые имеются) в функциональном устройстве, функции процессора обратной связи и длина теста — это параметры, выбираемые разработчиком схемы с целью достижения максимального покрытия ошибок. Моделирование ошибок для базового умножителя показало, что при генерации тест-векторов по случайному закону величина покрытия ошибок тестом приближается к постоянной в диапазоне 250—300 тест-векторов. Поэтому была выбрана длина теста 256 тактов, легко отсчитываемая при помощи двоичного счетчика. В тракте данных базового умножителя имелись регистры задержки (входной, выходной и конвейерный), так что процессор обратной связи удалось реализовать как обычную комбинационную схему при сохранении синхронной последовательной природы кристалла. Это означает, что входы А' и С' для процессора обратной связи не потребовались; эффективный процессор обратной связи для умножителя с самотестированием был образован путем простого монтажа «комбинированных» прямых соединений. Здесь мы имеем в виду, что каждый вход входного мультиплексора был непосредственно соединен (т. е. при помощи металлического проводника) с одним основным выходом. Поскольку основных выходов было меньше, чем основных входов, некоторые основные выходы были соединены с более чем одним входом входного мультиплексора. Эта схема обратных связей (т. е. соединения конкретных выходов с конкретными входами) была выбрана способом проб и ошибок для достижения максимального покрытия ошибок тестом. В конце концов мы остановились на некой случайной схеме обратных связей; она была выбрана не по какому-либо детерминированному алгоритму, а просто потому, что лучше обеспечила покрытие ошибок тестом, чем другие испробованные схемы. Емкостная нагрузка проводников обратной связи оказалась не слишком большой для выходных усилителей умножителя, поскольку они рассчитаны на работу с гораздо более высокими емкостями внешнего монтажа. Для инициализации запоминающих элементов 4>ункциолального устройства на каждом основном входе
удерживается некоторое постоянное значение, для схемы, устанавливается режим нормальной работы (Л = 0) и подается последовательность из четырех или более синхронизирующих импульсов. Вектор инициализации (т. е. комбинация нулей и единиц, подаваемая на основные входы во время инициализации) был выбран способом проб и ошибок для достижения максимального покрытия ошибок тестом. Вектор инициализации также выбирался без всякого детерминированного алгоритма и в конце концов был выбран как случайный. Вектор инициализации и схема соединений обратных связей являются взаимозависимыми по своему влиянию на покрытие ошибок тестом. Поэтому процесс оптимизации схемы более точно описывается как процесс нахождения такого сочетания вектора инициализации и соединений обратной связи, при котором обеспечивается высокое покрытие ошибок тестом. Пошаговая процедура контроля умножителя с самотестированием по методу STIF выглядит следующим образом: 1) Установить Л = 0 (нормальный режим работы) и подать заранее определенную комбинацию нулей и единиц на основные входы для инициализации функционального устройства. 2) Подать непрерывную последовательность импульсов синхронизации на вход С. 3) После прохождения четырех или более импульсов синхронизации функциональное устройство инициализировано. Теперь установить А — 1. 4) После подачи 256 или более импульсов синхронизации (подсчитываемых от момента переключения Л в состояние 1) значения основных выходов будут оставаться постоянными. Значения, наблюдаемые на основных выходах, необходимо сравнить с ожидаемыми значениями. Моделирование ошибок показало, что при удачном выборе вектора инициализации и соединений обратной связи один тест STIF длиной 256 тактов обеспечивает для умножителя 98% покрытия ошибок. Это приблизительно такой же процент, как и при генерации случайных тестов. Благодаря механизму STIF можно добиться полного, высокоскоростного функционального контроля умножителя при использовании стандартного высокочастотного генератора импульсов и небольшого объема дополнительных схем. Хотя под функциональным устройством, показанным на рис. 15, подразумевается умножитель со средствами самотестирования, это может быть любая комбинационная или синхронная последовательностная цифровая схема. Если существуют комбинационные цепи, связывающие некоторый
вход с некоторым выходом функционального устройства, то в процессор обратной связи может оказаться необходимым включить элементы задержки (триггеры), чтобы избежать образования асинхронной последовательностной схемы. В качестве процессора обратной связи, как правило, выбирается контрольный регистр типа LFS (регистр сдвига с линейными обратными связями), подобный показанному на рис. 5. Такой регистр обычно будет иметь больше разрядов, чем число основных выходов, поскольку у большинства функциональных устройств основных входов больше, чем основных выходов. Благодаря этому можно добиться повышения качества контроля, если анализировать содержимое регистра LFS в конце теста, а не значения основных выходов, так как дополнительные разряды регистра LFS дают больше информации относительно последовательности данных, появляющихся на основных выходах в процессе выполнения теста. Содержимое регистра LFS можно последовательно прочитать, если добавить выходной контакт «выход сканирования». Возможны и другие варианты. Если, например, функциональное устройство имеет входной регистр, то этот регистр можно в режиме тестирования использовать в конфигурации регистра LFS для выполнения многих функций процессора обратной связи. Механизм STIF может также оказаться удачным дополнением схемы типа BILBO для тестирования логических блоков кристалла. Это может быть выгодно, например, в случае, когда обычная логическая схема не содержит триггеров, из которых путем реконфигурации можно образовать генератор тест-кодов TPG или сигнатурный регистр, необходимые для реализации метода BILBO; здесь для метода STIF потребуется меньший объем дополнительных тест-схем. Однако соединения обратной связи, требуемые для STIF, могут занять большую площадь кристалла, чем в случае BILBO. IV. Заключрние Мы сознательно решили описать методы проектирования с учетом тестируемости, пригодные для обширных категорий цифровых схем. Альтернативный подход — описание подобных методов применительно к конкретным схемам — заставил бы нас увязнуть в трясине подробностей, что пошло бы в разрез с нашими учебно-ознакомительными целями. Читателю, который захочет больше узнать о методах проектирования с учетом тестируемости для конкретных видов схем (например программируемых логических матриц, арифметико-логических устройств, запоминающих устройств, микропроцессоров и т. д.), мы рекомендуем обратиться к литерату-
ре [49, 51—55]. Мы сознательно также не говорили о многочисленных незначительных вариантах базового метода проектирования с учетом тестируемости, которые могут использоваться различными компаниями или предлагаться в литературе. Компетентный разработчик схем, разобравшийся в описанных здесь методах, без особого труда сможет создать множество вариантов, полезных для конкретной схемы или для конкретной технологии. Представленные здесь методы направлены на решение классической проблемы тестирования; она заключается в том, чтобы обеспечить контроль кристалла на наличие или отсутствие внутренних ошибок при помощи «экспериментов», проводимых с основными входами и выходами кристалла. Однако сейчас начинает развиваться так называемое электронно-лучевое тестирование [56—58], при котором логические состояния внутренних узлов не упакованного в корпус кристалла ИС контролируются с помощью сканирующего электронного луча; это может привести к радикальному изменению классического, традиционного подхода к тестированию. Метод электронно-лучевого тестирования решает проблему наблюдаемости ошибок для СБИС-кристаллов при минимальных дополнительных средствах, закладываемых при проектировании в схему для упрощения тестируемости; однако в настоящее время этот метод практически оправдан только для верификационного тестирования проекта (электронно-лучевое тестирование нецелесообразно для отбраковочных испытаний ввиду малой скорости проверки и потенциальной опасности повреждения кристаллов). Поскольку здесь имеется возможность постоянно наблюдать за логическими состояниями всех узлов, одно множество тест-векторов, которое просто «переключает» каждый узел схемы, будет обнаруживать 100% константных ошибок, которые можно идентифицировать как константные ошибки выходов вентилей для классической модели ошибок уровня логических вентилей. И действительно, если мы наблюдаем, что некоторый узел находится постоянно в состоянии 0 или 1, то тем самым исключаем обратную константную ошибку для этого узла, т. е. до 50% константных ошибок узлов можно обнаруживать при помощи одного тест-вектора. Генерация теста, обеспечивающего «переключения» для данного множества узлов, является задачей не тривиальной, но более простой*, чем генерация обычных тестов [59]. (Отметим, что обратная задача, т. е. проверка того, что данное множество тест-век* Здесь «более простой» означает, что алгоритм требует меньшего числа шагов; однако задача по-прежнему остается ^VP-полной.
торов «переключает» данный узел, требует лишь обычного» логического моделирования и поэтому довольно проста.) А генерация теста для константных ошибок типа постояннооткрытых или постоянно закрытых транзисторов (которые можно идентифицировать как константные ошибки входов вентилей или классической модели ошибок уровня логических вентилей) представляет не тривиальную, однако все же более простую задачу, чем обычное тестирование, поскольку здесь не требуется «продвигать» ошибку на основные выходы. Электронно-лучевое тестирование должно повысить эффективность контроля и позволить разработчикам производить верификацию своих схем более оперативно и с большей степенью уверенности, чем это возможно сейчас при использовании традиционных методов. Дальнейшее развитие электронно-лучевого тестирования может привести к тому, что этот метод со временем окажется незаменимым инструментом для проектирования и производства СБИС-кристаллов. Независимо от того, какой из механизмов тестирования встроен в схему и насколько полно контролируется эта схема, задаче тестирования СБИС всегда свойственна некоторая степень неопределенности. Фирма-изготовитель может выпустить СБИС-кристалл с незамеченной ошибкой, которая будет обнаружена лишь в системе через месяцы или годы. Мы не можем рассчитывать на то, что удастся добиться «полного» тестирования СБИС-кристалла; даже не ясно, что такое «полный» тест. Мы ориентируемся на высокий процент покрытия одиночных константных ошибок, однако даже тест со 100%-ным покрытием подобных ошибок не обязательно обнаружит многие другие ошибки, которые могут возникать, в ИС. Выражение признательности Пратима Агравал, Шейла Вейдя и Крис ван Эйк дали многополезных советов по данной главе, за что я приношу им мою> благодарность.
Литература 1. Galiay J., Crouzet Y„ Vergniault M. IEEE Trans. Comput. C-29, 5 1 0 — 514, 1980. 2 Acken J Proc. 20th Des. Autom. Conf., Miami Beach, Florida, 20th717—718, 1983. 3 Chiang K.-W., Vranesic Z. Proc. Des. Autom. Conf., 20th, Miami Beach,. Florida, 50—56, 1983. 4 Timoc С, Buehler M„ Griswold Т., Pina C„ Stott F., Hess L. Int. T e s t Conf. Dig. Pap., Philadelphia, 546—553, 1983. i
5. Breuer М. A., Friedman A. D. D i a g n o s i s and Reliable D e s i g n of Digital Systems, Computer Science Press, Potomac, Maryland, 1976. 6. Ibarra О. H„ Sahni S. IEEE Trans. Comput. C-24, 242—249, 1975. 7. Garey M. R„ Johnson D. S. Computers and Intractability: A Guide to the Theory of NP-Completeness, Freeman, S a n Francisco, California, 1979. 8. Roth J. IBM J. Res. Dev. 10, 278—291, 1966. 9. Chappell S. G„ Elmendorf С. H., Schmidt L. Bell Syst. Tech. J. 53, 1451— 1476, 1974. 10. Abramovici M„ Breuer M. IEEE Trans. Comput. C-29, 451—460, 1980. 11. Abramovici M., Breuer M. IEEE Trans. Comput. C-31, 1165—1172, 1982. 12. Goel P. Proc. Des. Autom. Conf., 17th, Minneapolis, Minnesota 77—84, 1980. 13. Lai K.-W., Siewiorek D. Proc. Des. Autom. Conf., 20th, Miami Beach, Florida, 207—213, 1983. 14. Wadsack R. L. Int. Test Conf. Dig. Pap., Philadelphia, 547—554, 1981. 15. Williams T. W„ Brown N. C. IEEE Trans. Comput. C-30, 987—988, 1981. 16. Agrawal V. D„ Seth S. C„ Agrawal P. Proc. Des. Autom. Conf., 18th, Nashville, Tennessee, 196—203, 1981. 17. Wadsack R. L. Bell Syst. Tech. J. 57, 1449—1474, 1978. 18. Bose А. К., Kozak P., Lo C.-Y., Nham H. N.. Pacas-Skewes E„ Wu K. Proc. Des. Autom. Conf., 19th, Las V e g a s , Nevada, 400—409, 1982. 19. Bryant R. E. IEEE Trans. Comput. C-33, 160—177, 1984. 20. Bryant R. E„ Schuster M. D. V L S I Des. 4, 24—30, 1983. 21. Thatte S. M., Abraham J. IEEE Trans. Comput. C-29, 429—441, 1980. 22. Agrawal V. D„ Mercer M. R. Int. Test Conf. Dig. Pap., Philadelphia, 391—396, 1982. 23. Eichelberger E. В., Williams T. W. Proc. Des. Autom. Conf., 14th, N e w Orleans, Louisianna, 462—468, 1977. 24. Mercer M. R„ Agrawal V. D. IEEE J. Solid-State Circuits SC-19, 207— 212, 1984. 25. Hayes J. P. I E E E Trans. Comput. C-24, 150—157, 1975. 26. Knaizuk J., Hartmann C. R. P. I E E E Trans. Comput. C-26, 1141—1144, 1977. 27. Suk D. S., Reddy S. M. I E E E Trans. Comput. C-29, 419—429, 1980. 28. Williams T. W„ Parker K. P. Proc. IEEE 71, 98—112, 1983. 29. Eichelberger E. В., Williams T. J. Des. Autom. Fault — Tolerant Comput. 2, 165—178, 1978. 30. Barzilai Z., Rosen B. Int. Test. Conf. Dig. Pap., Philadelphia, 89—94, 1983. 31. Saluja К. K., Karpovsky M. Int. Test Conf. Dig. Pap., Philadelphia, 83— 88, 1983. 32. Davidson R. P., Harrison M. L., Wadsack R. L. Int. Test Conf. Dig. Pap., Philadelphia, 15—20, 1981. 33. Davidson R. P. United States Patent no. 4320509, Mar. 16, 1982. 34. Frohwerk R. A. Hewlett-Packard J., 2—8, May 1977. 35. Elspas B. IRE Trans. Circuit Theory CT-6, 45—60, 1959. 36. Gallager R. G. Information Theory and Reliable Communication, Wiley, N e w York, 1968. 37. Golomb S. W. Shift Register Sequences, Holden-Day, S a n Francisco, California, 1967. 38. Smith J. E. IEEE Trans. Comput. C-29, 510—514, 1980. 39. Hayes J. P. IEEE Trans. Comput. C-23, 56—62, 1974. 4 0 . LaPaugh A. S., Lipton R. J. Proc. Des. Autom. Conf., 20th, Miami Beach, Florida, 713—716, 1983.
41. LaPaugh A. S., Lipton R. J. Int. Test Conf. Dig. Pap., Philadelphia, 428— 434, 1983. 42. Oklobdzija V. G., Ercegovac M. E. Int. Conf. Circuits Comput., New York, 198—201, 1982. 43. Reddy S. M. IEEE Trans. Comput. C-21, 1183—1188, 1972. 44. Reddy S. M„ Wilson J. IEEE Trans. Comput. C-23, 98—100, 1974. 45. Saluja К. K., Reddy S. M. IEEE Trans. Comput. C-23, 552—554, 1974. 46. Saluja K. K„ Reddy S. M. IEEE Trans. Comput. C-23, 1204—1207, 1974. 47. Кдпетапп В., Mucha J., Zwiehoff G. Test Conf. Dig. Pap., Cherry Hill, N e w Jersey, 37—41, 1979. 48. Кдпетапп В., Mucha J., Zwiehoff G. IEEE J. Solid-State Circuits SC-15, 315—319, 1980. 49. McCluskey E. J., Bozorgui-Nesbat S. IEEE Trans. Comput. C-30 866— 875, 1981. 50. El-ziq Y. M. Int. Conf. Comput.-Aided Des., Santa Clara, California, 73— 76, 1983. 51. Hayes J. P., McCluskey E. J. Computer 13, 17—26, 1980. 52. Lu D. J., McCluskey E. J. Int. Test Conf. Dig. Pap., Philadelphia, 7 6 — 82 1983 53. Nozaki S. United States Patent no. 4384348, May 17, 1983. 54. Ramanatha K. S., Biswas N. N. Int. Test Conf. Dig. Pap., Philadelphia, 67—74, 1982. 55. Son K., Prodhan D. K. Test Conf. Dig. Pap., Philadelphia, 163—166, 1980. 56. Shaver D. C. Proc. Caltech Conf. on VLSI, 2nd, Pasadena, California-, ed. C. L. Seitz, 111—126, 1981. 57. Smith K. Electronics, 57, 86—88, 1984. 58. Wolfgang E., Lindner R., Fazekas P., Feuerbaum H. IEEE Trans. Electron Devices ED-26, 549—559, 1979. 59. Kinch R„ Pottle C. Int. Conf. Circuits Comput., N e w York, 5 4 8 — 5 5 1 , 1982.
Глава 4 Кремниевые компиляторы для СБИС А. Домич* (A. Domic) Лаборатория им. Линкольна Массачусетский технологический институт Кембридж, шт. Массачусетс
I. Введение В области проектирования, производства и тестирования цифровых ИС внимание специалистов продолжает привлекать автоматизация решения разнообразных задач. В условиях, когда достижения полупроводниковой технологии позволяют изготавливать ИС с сотнями тысяч активных элементов, невозможно обойтись без применения автоматических средств, помогающих разработчикам на различных этапах проектирования этих схем. Потребность в автоматических •средствах породила целую область деятельности, которую сегодня называют автоматизацией проектирования. Вместе •с развитием технологии растут и возможности автоматических средств, однако их рост практически не поспевает за ростом сложности ИС. В этой главе мы рассмотрим специализированную область автоматизации проектирования — генерацию топологии схем на основе схемных описаний высокого уровня. Использование средств, преобразующих схемные описания высокого уровня в гораздо более подробные описания, уже определяли термином «компиляция» на протяжении последних 15 лет [1]. Однако первые системы, «компилирующие до уровня кремния», появились всего несколько лет назад. Мы будем рассматривать эту проблему не абстрактно, а обратимся к системам, которые упоминались в литературе как действующие или разрабатываемые. Такой подход даст представление о существе обсуждаемой тематики, имеющихся трудностях, направлениях будущей работы. В то же время он позволит не рассматривать вопросы, которые сами по себе чрезвычайно интересны, но в ближайшем будущем вряд ли найдут применение [2]. Даже при таком ограничении перед нами открывается огромное поле деятельности и воистину безбрежное море литературы. Исчерпывающий обзор литературы сделать практически невозможно, поэтому мы попытались отобрать только те публикации, которые хорошо * В настоящее время работает в компании Digital Equipment Corporation, Хадсон, шт. Массачусетс, 01749.
154
А. домич
иллюстрируют обсуждаемые вопросы и могут непосредственно применяться для разработки и использования кремниевых компиляторов. Данная глава состоит из шести разделов. В разд. II и III в общих чертах описана «природа» кремниевой компиляции и некоторые ее преимущества и недостатки. Мы старались избегать строгих определений и классификаций, вызвавших полемику, но мало способствовавших прогрессу в этой области. В разд. IV подробно анализируется процесс кремниевой компиляции, описаны основные составляющие компилятора и различные ступени синтеза и автоматизации. В разд. V рассматриваются области исследований, результаты которых могут найти применение в будущих компиляторах. Опубликованные технические детали существующих компиляторов мы не повторяем. Зато в разд. VI дается краткая информация о статьях, касающихся кремниевых компиляторов. Читатель гораздо лучше разберется в вопросе, если познакомится с информацией хотя бы по одному компилятору. Мы намеренно не говорим о том, как можно будет разрабатывать ИС через 10—20 лет. Для этого есть более важная причина, чем очевидный риск, связанный с предсказанием будущего. Современный уровень знаний в области процессов проектирования ИС позволяет создавать кремниевые компиляторы, которые значительно превосходят описанные к настоящему времени. Большая часть работы по созданию современных компиляторов проделана весьма небольшими коллективами специалистов в научно-исследовательских организациях. В недавнем прошлом промышленность неохотно рассматривала возможности, которые могла бы создать такая степень автоматизации проектирования. Хорошо финансируемые и оснащенные группы специалистов с четко поставленными задачами могли бы разработать компиляторы,, способные проектировать серийные ИС. Сосредоточивая внимание на настоящем и ближайшем будущем, мы рассчитываем, что читатель лучше поймет современные возможности этих средств проектирования. II. Что такое кремниевый компилятор? Кремниевый компилятор — это система, которая автоматически вырабатывает топологию интегральных схем (ИС) на основе схемных описаний высокого уровня. Название дано по аналогии с программированием, где компиляторы генерируют машинные коды исходя из программы, написанной на языке высокого уровня. В этом общем определении содержатся только два важных требования: исходное описание
схемы обладает определенной степенью абстракции, а на выходе системы мы получаем реальную топологию. Под топологией понимается выходная информация, которая достаточно подробно описывает топологический чертеж оригинала фотошаблона, необходимого для изготовления ИС. Однако точное геометрическое представление, используемое на заключительном этапе проектирования ИС, нас интересовать не будет. Мы лишь будем иметь в виду, что его можно непосредственно преобразовать в текст на языке описания фотошаблонов, например на языке CIF (Caltech intermediate form [3, 4]). В оставшейся части этой главы подробно рассматривается требование абстракции описания схемы. Определяя термин «кремниевый компилятор», отметим еще одну особенность. Существует множество систем разработки специальных схем, например программируемых логических матриц (ПЛМ) или логических схем, подобных матрицам Уэйнбергера. Обычно в основе таких систем лежат входные языки, имеющие сходство с набором булевых уравнений [5—7]. Системы бывают весьма сложными — в них могут использоваться интересные методы оптимизации процессов генерации логики и топологии ИС. Эти методы превращают системы в нечто большее, чем просто «транслятор в кремний». Такие системы мы будем называть специальными генераторами модулей, а термин «кремниевый компилятор» оставим для более универсальных систем, в которых абстрактное понятие функциональности включено во входной язык высокого уровня. Генератор модулей может представлять собой как отдельную систему, так и часть компилятора. В литературе был описан ряд кремниевых компиляторов. Хотя большинство этих компиляторов можно считать экспериментальными, они дают хорошее представление о преимуществах их использования и связанных с их разработкой проблемах. Коммерческий интерес к кремниевым компиляторам связан с появлением нескольких компаний, работающих в области автоматизации проектирования [8, 9]. Такая высокоавтоматизированная система проектирования ИС, как кремниевый компилятор, имеет много преимуществ. Она существенно сокращает время и трудозатраты, необходимые для разработки сложной ИС, схемные изменения задаются на языке высокого уровня, поэтому их легко вводить и они реализуются автоматически; быстро подготавливаются и сравниваются альтернативные варианты; моделирование можно выполнять на нескольких уровнях детализации, но всегда в рамках одного унифицированного набора данных; в топологии будут отсутствовать ошибки, связанные с нарушением технологических проектных норм; при измене-
нии этих норм можно перекомпилировать систему, внося изменения только в программы топологического проектирования самого низкого уровня. Использование компиляторов может принести весьма существенные выгоды и благодаря значительному расширению контингента разработчиков» схем. За такие преимущества надо платить. Самый заметный недостаток кремниевых компиляторов — это неэффективность топологии. Приближенной мерой эффективности топологии служит число транзисторов в кристалле. Эта мера показывает, что по плотности упаковки «скомпилированным» кристаллам далеко до некоторых коммерческих изделий. Использование любого из описанных к настоящему моменту компиляторов означает выбор фиксированной архитектуры, которую он реализует. Следовательно, выбирая конкретный компилятор, мы сразу же ограничиваем себя разработкой схем только определенного типа. Допускается очень ограниченное вмешательство человека в работу компилятора или вмешательство вообще не допускается в основном из-за того^ что возникает проблема верификации промежуточных результатов при прерывании автоматического процесса генерации топологии. Поэтому нельзя реализовать преимущества тех решений, которые предложил бы опытный разработчик. Не следует считать, что эти недостатки непреодолимы, а тем более, что сама концепция неэффективна. Сообщения о положительном опыте использования отдельных компиляторов — в большинстве своем систем первого поколения — ясно показывают их возможности [7—13]. При анализе целесообразности использования и проектирования кремниевых компиляторов важно также иметь в виду, что ни один компилятор не предназначается для решения всего разнообразия задач разработки схем. Любой компилятор будет ориентирован лишь на определенные типы кристаллов, поэтому эффективность компилятора должна определяться всей совокупностью характеристик схемы, а не каким-то одним параметром» например общим числом транзисторов. III. Функционирование кремниевого компилятора Процесс генерации топологии кремниевым компилятором делится на несколько этапов. Сначала входное описание схемьг преобразуется в точное внутреннее представление, которое отображается в целевую архитектуру. В процессе преобразования одни базовые элементы (обычно параметризованные) могут выбираться из библиотек, а другие — разрабатываться (например, управляющие устройства, реализуемые в виде ПЛМ или других типов логических матриц). При
объединении базовых элементов вырабатывается список их межсоединений. Одно или несколько более детальных, чем исходное, описаний схемы обычно называют промежуточным кодом. Этот код может быть полностью независим от технологии, используемой для реализации схемы, поэтому он представляет большой интерес. После получения промежуточных описаний из одного из них вырабатывается компоновка в соответствии с установленным компилятором архитектурным планом и методологией генерации компоновки. Затем параметры базовых элементов фиксируются, определяется положение базовых элементов, выполняется оптимизация размещения и трассировка сигнальных цепей и цепей питания. Описывая работу кремниевого компилятора, мы предполагаем, что в топологии нет нарушений геометрических топологических норм. Мы не будем рассматривать задачи проверки топологических норм и извлечения схемы из топологии. Необходимо отметить, что неотъемлемой частью процесса проектирования является и моделирование. Моделирование может выполняться на различных уровнях проектирования с использованием компилятора. Основой его может служить входное описание, промежуточный код или — при проведении более детального моделирования — список базовых элементов (транзисторов, конденсаторов и т. д.) и их связей, извлеченных непосредственно из выходной топологии. Уровень моделирования зависит от его целей. Целями могут служить проверка реализуемости требуемых функций программой высокого уровня, проверка правильности функционирования на уровне элементарных переключательных схем г получение точной временной диаграммы работы на основании информации об электрических параметрах элемента. Экспериментальные компиляторы обеспечивают моделирование только высокого уровня. В интегрированной среде для выполнения всех перечисленных типов проверок необходимо иметь адекватное сопряжение между выходом различных уровней компилятора и программами моделирования. Хотя мы разделили процесс компиляции на этапы, имеется целый набор неявных предположений и соглашений, связывающих все фазы этого процесса. Компилятор работает с хорошо организованной, иерархически структурированной информацией, которая используется при решении строго ограниченного круга задач. При рассмотрении выхода компилятора возникает мысль, что фактически компилятор проектирует схемы, используя в качестве базовых элементов транзисторы. Конечно, это не так, и мы не вправе ожидать, что компиляторы будут работать с наборами данных, описывающих сотни тысяч элементов на компонентном уровне.
158
А. домич
IV. Составляющие кремниевого компилятора Рассмотрим теперь основные составляющие, являющиеся объектом разработки: язык, архитектуру, библиотечные элементы и генератор топологии. Уровень входного языка и исходные требования определяют начальные условия при выборе компилятора и ограничивают тип схем, которые можно с его помощью спроектировать. Используемая для реализации схемы архитектура должна быть достаточно универсальной, чтобы обеспечить синтез любого правильного описания, закодированного на входном языке. Здесь мы сталкиваемся с важной проблемой, так как одна-единственная архитектура не может обеспечить эффективную реализацию широкого спектра схем. Технология, по которой будет изготавливаться схема, определяет ряд общих решений в процессе компиляции. Некоторые схемные структуры лучше всего реализовывать в конкретной технологии изготовления СБИС. При конструировании библиотечных элементов компилятора уровень сложности этих базовых элементов определяет важные различия в стратегии синтеза схем и получения топологии. Наконец, достижение 100% трассировки может при генерации топологии вести к неэффективному использованию площади кристалла. А. Язык. Мы изучим некоторые альтернативы входного языка. Рассматриваются три его аспекта: уровень абстракции, соответствие между языковыми структурами и реализацией, специальные операторы, связанные с требованиями аппаратного проектирования. На основе этого анализа определяются некоторые необходимые свойства языка. Наконец, мы поясняем используемую в настоящее время для классификации языков терминологию и приводим несколько примеров. Фраза «на основе схемных описаний высокого уровня» в определении кремниевого компилятора нуждается в пояснении. Входные языки таких систем, как LBS [5] или SLAP [6], существенно ориентированы на описание стандартных булевых функций, например И, НЕ-ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ. Описание логики с помощью стандартных булевых функций проще, чем с помощью списка взаимосвязей транзисторов, но определить на таком уровне кристалл, состоящий приблизительно из 10 000 вентилей, затруднительно. Поэтому нельзя считать, что описание с помощью стандартных булевых функций соответствует требованиям проектирования на самом высоком уровне определения схемы, хотя оно и полезно при генерации определенных элементов схемы. Языки программирования высокого уровня допускают ис-
пользование большого набора типов данных и инструкций. Слишком большой набор типов усложняет эффективную аппаратную реализацию полностью эквивалентных версий программ. Однако в этой области уже ведутся исследования, их примером являются языки Ада Университета штата Юта и Паскаль Станфордского университета. Гораздо проще использовать язык программирования только как удобное средство описания функциональных возможностей. Ограниченное подмножество языка обычно содержит достаточное количество инструкций и избавляет пользователя от изучения ненужных ему конструкций и соглашений. Детальный анализ показывает, что при разработке аппаратуры возникает большое количество ситуаций, не рассматриваемых в современных языках программирования. При аппаратной реализации вычислений стандартным способом их ускорения является распараллеливание. Если не рассматривать векторно-ориентированных машин, то можно отметить, что средства распараллеливания не включаются в языки программирования. Ведь для описания параллельной работы должно быть доступно время, измеренное по отношению к некоторому базовому понятию, связанному с циклом процессора. При проектировании аппаратуры встречаются и другие общие ситуации: наличие разных синхропоследовательностей, временное разделение сигнальных линий или элементов, конвейерная обработка, преобразование пословного параллельного формата в битовый последовательный и наоборот. Учесть эти ситуации в традиционном языке программирования непросто, еще труднее сделать это эффективным и логичным способом. Мы не коснулись проблем, вытекающих из анализа электрических явлений, которые не имеют аналогов в программировании. Например, если на пути сигнала встречается большая емкость, то его нужно пропустить через неинвертирующий развязывающий буфер. Возникает вопрос, можно ли и нужно ли описывать это на языке высокого уровня? Такая ситуация может возникнуть не только из-за большого коэффициента нагрузки по выходу — это можно выявить на ранней стадии разработки схемы, — но и из-за слишком длинных связей, сгенерированных на этапе трассировки. Можно указать на множество подобных ситуаций. Языки описания аппаратуры (HDL), по-видимому, гораздо полнее удовлетворяют этим специфическим требованиям. Таких языков существует много [15]. Однако они больше походят на промежуточные описания, а не на язык описания высокого уровня. Не углубляясь в подробный анализ языков описания аппаратуры, заметим, что вследствие очень
большой детализации описания элементов схемы и их взаимосвязей они затрудняют понимание потоков данных в схеме, описываемых промежуточным кодом, в котором содержится спецификация выполняемых операций на уровне передач данных между регистрами. Эти соображения указывают на некоторые свойства, которыми должен обладать входной язык кремниевого компилятора, а также на уровень сложности аппаратуры и требования к ее проектированию, которые можно определять на таком уровне описания. Язык служит для подлежащей изготовлению аппаратуры описанием самого высокого уровня. Этот уровень должен быть настолько высоким, чтобы разработчик мог понять функциональные возможности ИС. Если это требование выполняется, то на самом высоком уровне гарантируется принципиальная простота описания, поэтому легко выполнять изменения в схеме. В языке должны присутствовать специальные конструкции для работы с аппаратными ресурсами. Среди них фундаментальной является конструкция, способная определять параллельную работу. В то же время такое описание имеет принципиальные ограничения. Оно не позволяет дать полную спецификацию схемы в смысле взаимно однозначного соответствия между свойствами выходной топологии и входными данными. Такое соответствие обеспечивается только в первой фазе процесса преобразований. Потеря прямого управления важными аспектами разработки схем дает серьезные аргументы в руки тем, кто утверждает, что разработка схем в корне отличается от процесса генерации программ при разработке программного •обеспечения. Для классификации типов описаний схем используются различные термины. Широко применяются такие характеристики описания, как поведенческое, функциональное, алгоритмическое, структурное, логическое. Заметим, что эти термины могут у разных авторов отличаться по смыслу, поэтому надо быть внимательным, когда они встречаются. Поведенческие или функциональные описания относятся к самым абстрактным описательным уровням. Они описывают схему через выполняемые ею функции. Эти функции имеют достаточный уровень сложности, например, умножение целых чисел; в описаниях не содержится сведений о том, как функции должны быть реализованы. Алгоритмические описания дают более подробную спецификацию схемы; эта спецификация уже аппаратно-зависимая. Основным свойством алгоритмического описания является точное определение выполняемых схемой действий во времени. Умножение, выполняемое с помощью сдвигов и сложений, может быть
именно таким образом и описано. Структурные языки очень похожи на подробную спецификацию схемы. В эту спецификацию входит полный перечень элементов и список их взаимосвязей. Связь элементов с функциональным описанием можно увидеть только в том случае, когда эти элементы непосредственно связаны с операциями. Термин «логический» несет много смысловых нагрузок: от элементарных логических элементов и триггеров до более сложных устройств, схожих с определяемыми в структурном описании. В логических спецификациях быстро теряется связь между описанием и функциональными возможностями. Система PLEX [13] генерирует схемы на основе алгоритмических описаний. Входной информацией служит выполняемая аппаратурой программа. Число циклов процессора, используемое при выполнении различных инструкций, явно не определяется. Входной язык компилятора MacPitts — еще один пример алгоритмического входного описания [16, 17]. В нем каждая инструкция выполняется строго за один цикл основной синхронизации. В языке имеется специальная инструкция, запрашивающая параллельное выполнение сегментов программы. Система FIRST [18], напротив, начинает работу со структурного описания, очень похожего на диаграммы, с помощью которых определяются цифровые фильтры. Фирмой IBM используется язык регистровых передач для генерации топологии вентильных матриц [19]. Язык описания регистровых передач DDL, используемый в качестве входного языка для генерации программируемых вентильных матриц, приведен в [20]. Логические описания посредством вентилей, формируемые в виде текстовых файлов или с помощью графических средств ввода, используются в большинстве генераторов модулей [5—7, 21]. Интересные примеры классификации языков приведены в [22]. Б. Архитектура. Термин «архитектура» применяется при разработке систем для обозначения общего описания базовых элементов (программных счетчиков, арифметико-логических устройств, регистров), их связей (шин, информационных и адресных линий) и ввода-выводы системы. Кремниевый компилятор отображает вычисления, описываемые программой на языке высокого уровня, в конкретную систему. Структура системы, которая при этом выбирается, называется целевой архитектурой. Мы предполагаем здесь, что все схемы, сгенерированные компилятором, имеют одинаковую общую структуру. В принципе компилятор мог бы выбирать одну из нескольких доступных архитектур, но мы ограничимся случаем, когда имеется только одна архитектура. 11—708
Выбор целевой архитектуры является одним из наиболее важных решений, принимаемых при разработке кремниевого компилятора. Он тесно связан с выбором языка, так как логическая основа, которую архитектура обеспечивает, должна быть достаточно широка для реализации в ней любого правильного входного описания. С самого начала разработки компилятора необходимо очень тщательно проанализировать допустимые структуры. Какие типы сигналов можно определять, к каким данным обеспечивается явный доступ, как реализуется управление вычислениями — все это примеры вопросов, которые необходимо подробно рассмотреть, так как абстрактные конструкции языка будут автоматически преобразовываться в кремниевый кристалл. Необходимо рассмотреть влияние на проектирование не только самих функциональных элементов, но и их взаимосвязей. На сегодняшний день в кремниевых компиляторах в качестве целевых применялись несколько архитектур. Наиболее распространенными являются варианты сочетания информационный канал/контроллер [4, 23], используемые в компиляторах PLEX, MacPitts и Bristle Blocks. Существенно конвейерная битовая последовательная реализация основных арифметических операций была предложена Лайоном [24] и использована в компиляторе FIRST. Поуп и Бродерсен [25] описали промежуточный подход на основе программируемых макроячеек. Модель информационный канал/контроллер в многочисленных вариантах широко использовалась для реализации конечных автоматов. Арифметические и логические устройства, регистры, мультиплексоры, а также связывающие их шины образуют информационный канал. В данном случае последовательность устройств и поток данных являются не только полезной абстрактной моделью, но и оказывают непосредственное влияние на топологию, так как связываемые каналом устройства можно расположить близко друг к другу. Данные передаются параллельно; шириной информационного канала является число битов в слове. Независимую обработку данных можно выполнять параллельно. Сигналы, управляющие взаимодействием устройств и распределяющие по ним вычислительный поток, задаются кодами операций устройств. Соответствующие микрокоды можно или сразу генерировать с помощью комбинационной логики, или «зашивать» в постоянную память. Заметим, что в основе этой модели лежит базовая схема синхронизации, обеспечивающая последовательность переходов системы из одного состояния в другое. Наиболее сложным является принятие решения о pea-
лизации ветвлений. Если каждая инструкция выполняется за один такт, то нет трудностей в ветвлении процесса вычислений. Но если инструкции выполняются за разное число тактов (например, используется какой-то тип конвейерной обработки), то совсем непросто условно разбить процесс обработки на части так, чтобы в регистрах находилась правильная информация. Такие проблемы типичны при кодировании на языке ассемблера: необходимо хранить сведения о событиях, происшедших в каждом машинном такте. Так как ИС конструируется из описания высокого уровня, необходимые для гарантии окончания определенных операций паузы можно определять автоматически. Однако при этом возникает проблема определения моментов времени, когда выходная информация правильна. Некоторые типичные приложения цифровой обработки сигналов лучше всего реализуются на основе битовых последовательных, а не пословных параллельных архитектур. Пословные параллельные умножители занимают слишком много места, поэтому трудно разместить на кристалле несколько устройств этого типа. Наличие только одного умножителя ведет к мультиплексному его использованию, для чего требуются дополнительные такты для загрузки сомножителей и сохранения промежуточных результатов. Применение битовой последовательной арифметики снижает скорость обработки слов, но ведет к существенному снижению занимаемой умножителем площади кристалла, что позволяет разместить на кристалле много устройств и выполнять обработку параллельно. В настоящее время можно получить скорость передачи информации порядка нескольких килогерц, что вполне достаточно для большого числа приложений. Необходимо разработать только несколько базовых устройств; элементами памяти служат сдвиговые регистры с сохранением выдвигаемых разрядов. Хотя с их помощью можно построить большое число полезных устройств, например фильтры с постоянными коэффициентами, ветвление в такой архитектуре реализовать непросто. Компилятор FIRST, использующий эту архитектуру, не принимает условных инструкций в какой бы то ни было форме. Система, описанная Поупом и Бродерсеном, не удовлетворяет в полной мере рассмотренным выше моделям. Она была специально спроектирована для приложений, связанных с разработкой блоков цифровых фильтров. Входной информацией является алгоритмическое описание функции, но в действующей версии пользователь должен ввести очень подробную спецификацию операций, написанную на специальном ассемблерном языке. Генерируемый кристалл состо-
ит из набора процессоров, построенных с помощью небольшого числа макроячеек. Каждый процессор можно рассматривать как конечный автомат, реализованный на основе трех базовых компонент: информационного канала, контроллера и памяти. Ввод информации в кристалл — пословный параллельный, но связь внутренних процессоров — битовая последовательная. Арифметическое устройство в каждом процессоре работает по конвейерному параллельно-последовательному принципу, каждой операции соответствует несколько микроинструкций. Внутри устройства можно определить переменную длину слова и использовать преимущества, связанные с возможностью оперировать коэффициентами малой точности. Каждый процессор содержит заметный объем памяти произвольного доступа, что позволяет более четко разделить три компонента процессора. Устройство управления использует микропрограммы в постоянной памяти и счетчики. Допускается применение специального типа условной инструкции. Описанные архитектуры хорошо известны и используются уже давно. Разработка заказных кристаллов СБИС способствовала исследованию новых возможностей. Появилось много интересных теоретических исследований по реализации алгоритмов в кремнии с использованием большого числа специальных процессоров и простых регулярных связей между ними. Самый типичный пример таких параллельных систем — это сисюлические матрицы [4]. Более широкое использование нестандартных архитектур до сих пор сдерживалось двумя обстоятельствами. Во-первых, большие трудозатраты на производство таких кристаллов не компенсируются спросом. Новые кремниевые компиляторы со специализированными целевыми архитектурами могут помочь в преодолении трудностей использования традиционных микропроцессоров в тех прикладных областях, в которых они неэффективны. Во-вторых, становится трудно объединять специальные архитектуры внутри систем, хотя в этом направлении и были проведены некоторые исследования [26, 27]. Только глобальный взгляд на проект системы в целом дает возможность реализовать преимущества новых подходов. В. Технология. Неудивительно, что большинство опубликованных работ по кремниевой компиляции связано с разработками на основе пМОП-технологии с обедненными вентильными нагрузками. Это объясняется ее простотой с точки зрения разработки схем и гибкостью получаемой топологии. Если сравнить схему на трехвходовых НЕ-И вентилях, для
которых требуется четыре элемента, и ее аналог в транзисторно-транзисторной логике, то мы убедимся в большей сложности биполярной схемы [28]. Для схем на КМОПтехнологии были разработаны генераторы модулей, и есть сообщения, что ведется работа по преобразованию иМОПкомпиляторов в компиляторы для КМОП-технологии. Биполярные технологии в кремниевых компиляторах не рассматривались, за исключением систем проектирования на основе вентильных матриц. При выборе технологии определяющими факторами являются мощность рассеяния кристалла, быстродействие схемы и плотность упаковки элементов. В любом методе автоматической генерации схем не менее важный фактор — возможность упрощения электрических и топологических норм. Представительные наборы небольшого числа правил, которые можно эффективно реализовать, позволяют автоматически разрабатывать схемы, работающие в приемлемых диапазонах производительности. После выбора технологии можно проектировать компилятор таким образом, чтобы он легко перестраивался при смене технологии. Мид и Конвей [4] предложили описывать топологию и проектные нормы не в абсолютных координатах, а в виде множителей базового масштабного элемента, называемого лямбда-параметром. Упрощенный набор геометрических проектных норм и их выражение в виде множителей базового элемента позволяют быстро модифицировать компилятор, когда масштаб норм изменяется одинаково. Даже если и не удается на любые новые нормы ответить изменением одного только базового элемента, все же хорошо параметризованное кодирование топологии ячеек остается исключительно полезным для упрощения такой настройки (см. ссылки в разд. 1У.Д). Сейчас все еще сохраняется необходимость в специальных правилах типа «при проведении перпендикуляра через три параллельные прямые, имеющие минимальную ширину и минимальный зазор между ними, ширину пересекающей линии берите не менее X микрон». Однако лучше такие правила рассматривать как предупреждения. Нарушения локальных норм (зазоров и минимальных размеров) приводят к непосредственным и ясным результатам, например к закорачиванию двух цепей, а предупреждения влияют на надежность и результаты проектирования так, что количественную оценку этому влиянию дать трудно. Мы уже упоминали о большой степени независимости от технологии, которую могут обеспечить входные языки высокого уровня и промежуточные коды. Поэтому было бы есте-
ственным для генерации схем в различных технологиях изменять зависящие от технологии секции компилятора. Однако получение приемлемых реализаций важнее, чем изменение базовых элементов схемы. Например, в статических КМОП-схемах элементов и их взаимосвязей больше, чем в их лМОП эквивалентах (разд. 1У.Д). Обычно электрические нормы, связанные с соотношением числа элементов схемы, в разных технологиях совершенно различны. Для правильной трактовки специальных характеристик сравниваемых технологий необходимо выполнять изменения некоторых промежуточных представлений схемы. Способность легко переходить при разработке интегральных схем от одной технологии к другой с целью выполнения требований к скорости или мощности рассеяния выглядит привлекательно. Однако существуют критерии оценки альтернатив этого процесса. Разрабатываемая ИС — это не изолированное изделие, а часть некоторой системы. Перевод схем из одной технологии изготовления в другую — не такой прямой процесс, как может показаться. Для эффективной реализации необходимо существенно изменять архитектуру всей системы. Это положение иллюстрируется интересным частным случаем [29] преобразования ТТЛ-системы в заказную пМОП-систему. Возможность генерации одних и тех же ИС в совершенно разных технологиях может не иметь большого практического значения. Полезным может оказаться преобразование из пМОП-технологии в КМОП-технологию с совместимым с «МОП-технологией вводом-выводом. Г. Выбор элементной базы. Мы использовали термин «базовые аппаратные элементы» без уточнения уровня сложности этих элементов. Часто для сравнения используются термины «микроячейка» и «макроячейка», но микроячейка одного пользователя может быть макроячейкой для другого. Выбор базового элемента может существенно влиять на структуру всего компилятора. Уровень сложности базового элемента не является семантическим понятием, его смысл значительно меняется при реализации компилятора. Предположим, например, что требуется складывать и вычитать целые числа. Мы хотим две эти операции выполнять аппаратно. В принципе существуют две возможности. Можно или спроектировать арифметико-логическое устройство и использовать его для выполнения обеих операций, или разработать две разные схемы для сложения и вычитания. Если операции сложения и вычитания всегда выполняются в разных тактах, то требуется только одно арифметикологическое устройство; это решение позволяет эффективнее
использовать площадь кристалла. В противном случае нужно иметь два арифметико-логических устройства, и часть каждого устройства не используется. Это ведет к ненужным затратам площади кристалла. Однако, если каждое арифметико-логическое устройство способно выполнять только одну операцию, мы должны использовать два устройства и при раздельном, и при совмещенном выполнении операций. Это плохое решение, если операции никогда не выполняются одновременно. Кроме того, в рассмотренных случаях различна скорость управления выполнением операций, так как универсальные устройства требуют больше управляющих сигналов. Разная «степень разрешения» базовых аппаратных элементов может вести к совершенно различным компиляторам. Нельзя начинать проектирование на уровне логических вентилей, так как из-за большого числа используемых элементов процесс разработки становится практически неуправляемым. Напротив, если в качестве базовых элементов используется небольшое число сложных структур специального назначения, то входная информация компилятора превращается в список ресурсов, которые необходимо связать между собой, а компиляция становится процессом генерации управляющих сигналов и автоматического получения топологии. В литературе описаны компиляторы для специальных приложений, в основе которых лежит небольшое число базовых элементов. Этому подходу хорошо удовлетворяют алгоритмы цифровой обработки сигналов, в которых некоторые операции — умножение, накопление, задержка — выполняются циклически [25]. Применялись и другие уровни детализации базовых элементов. Для выполнения вычислений можно использовать достаточно универсальный микрокомпьютер, который настраивается на конкретную обработку с помощью занесения в постоянную память микропрограммы, установки размера слова, определения нужного объема внутренней памяти и т. д. Так работает компилятор PLEX; компилятор MacPitts работает совершенно по-другому. Свой информационный канал он строит, выбирая только те операторы, которые совершенно необходимы для данной входной программы. Библиотека базовых элементов этого компилятора состоит из элементарных микропроцессорных секций. В качестве альтернативного подхода к сборке топологии кристалла было предложено объединить в одной системе генераторы модулей и универсальные системы размещения и трассировки. Компилятор «верхнего уровня» делит процесс получения топологии на совокупность более мелких задач и в конечном счете сводит их к множеству задач для очень
специализированных компиляторов. Эти менее универсальные системы применяют эффективные методы оптимизации к своим более простым задачам. Получаемая в результате экономия площади кристалла может компенсировать потери площади из-за универсальности процедуры размещения. Такой иерархический подход использует для каждой фазы обработки более простые программы и генерирует более гибкие топологии. Д. Генерация топологии. Здесь рассматривается процесс получения топологии. Имея полное описание аппаратных элементов схемы и их связей, необходимо сгенерировать топологию автоматически. Эта задача начала привлекать пристальное внимание в связи с автоматизацией проектирования печатных плат. Введенное тогда разделение между фазой размещения элементов и трассировкой связей продолжает оставаться полезным и сегодня. Было разработано много топологических систем для ИС, начиная с универсальных систем размещения и трассировки (хорошими примерами таких систем являются «сборщики кристаллов» [30, 31]) и кончая специальными генераторами для таких структур, как программируемые логические матрицы. Для сравнительно небольших схем были описаны специальные методологии разработки топологии на транзисторном уровне [32]. При использовании кремниевого компилятора необходимо выбрать метод компоновки базовых элементов. Тщательная архитектурная компоновка и детальные описания ограничений на геометрию элементов позволяют получить более эффективные топологии, чем универсальные системы трассировки и размещения. При этом значительно упрощаются топологические программы компилятора. Геометрические ограничения применяются во всех компиляторах, о которых к сегодняшнему дню есть публикации. В процессе архитектурной компоновки все доступное пространство кристалла делится на небольшое число областей, в которых размещаются крупные элементы и разводятся электрические цепи. Такие глобальные цепи, как цепи питания, земли и синхронизации, нельзя разводить по элементам произвольным образом, поэтому эти цепи разводятся в кристалле с помощью распределительной сетки. При разработке базовых элементов учитываются их будущие взаимосвязи. Элементы параметризуются, требование простоты реализации взаимосвязей элементов накладывает ограничения на их выводы. При этом обычно рассматриваются следующие варианты: размещение выводов только на
специальном слое, формируемом с помощью маски, «вытягивание» элементов по одной стороне, выделение свободного пространства на слое для перекрещивающихся сигналов. Большинство связей между такими элементами будут относительно локальными, т. е. связаны будут в основном непосредственные соседи. Эти методы существенно упрощают последующую трассировку и гарантируют ее завершение. Крупные элементы могут реализовываться и в виде структур, сгенерированных специально предназначенными для этого топологическими программами. Самым лучшим примером такого подхода являются управляющие элементы, для которых в разных вариантах генерируется комбинационная логика. Реализации программируемых логических матриц, матриц Уэйнбергера и других структур посвящено большое число статей. Еще один типичный пример — это топология структур памяти, встроенных в кристалл. В книге Ульмана [2] описано много специальных матриц и методов оптимизации при генерации их топологии. Элементы самого низкого уровня выбираются из библиотек. Их топологию лучше всего делать вручную, так как любая потеря площади на этом уровне будет многократно увеличиваться из-за частого использования элементов. Модульность обеспечивает детальное моделирование и проверку этих элементов. Использование библиотек упрощает и модификации, направленные на увеличение плотности упаковки и производительности схемы. Хранить такие маленькие схемы в виде полного геометрического описания неудобно. Поэтому библиотечные элементы описываются на топологических языках, которые позволяют вызывать элементы, определять их действительные размеры и транслировать в расширенную геометрическую форму. Это облегчает обработку элементов программами и значительно упрощает такие задачи, как модификация библиотек при изменении проектных норм. Несколько пригодных для этого языков описано в [33—35]. Технология влияет на топологию в большей степени, чем это кажется на первый взгляд. Если сравнить две похожие технологии — пМОП и объемную КМОП, — то мы убедимся, что топологические методы нельзя просто заменить один другим. Наличие карманов в КМОП-технологии порождает специфические проблемы, например эффект защелкивания [36]. После появления диссертации Уильямса [37] по системе STICKS для пМОП-схем стали применять алгоритмы сжатия, но в КМОП-схемах они не дают таких же хороших результатов. Сжатие исследовано в [21, 38]. Несмотря на технологическую независимость входных языков и промежу-
0
точных представлений, изменение технологии вызывает значительные изменения в стратегии генерации топологии. Нам не известен ни один компилятор, в котором возможен выбор технологии. V. Направления дальнейшего развития Кремниевая компиляция — это достаточно новая область исследований. В ней приходится рассматривать много задач — от нерешенных теоретических проблем до проблем включения в компилятор хорошо известных методов. Мы уже рассмотрели возможные дополнения и усовершенствования компиляторов. Не претендуя на полноту, назовем теперь области исследований, работа в которых могла бы способствовать реализации более совершенных компиляторов. В заключение в общих чертах указаны проблемы, которые трудно решить в рамках таких высокоавтоматизированных подходов к проектированию, как кремниевая компиляция. А. Тестируемость. С повышением сложности кристаллов вопросы тестируемости привлекают все большее внимание. Генерация тестовых векторов требует детального знания схемы на уровне вентилей. Полное тестирование схемы слишком дорого, так как для этого требуется слишком много тестовых векторов. Было развито несколько методов разработки схем, упрощающих тестирование. Работа в этой области сейчас ведется исключительно активно; подходы к этой проблеме можно найти в [39]. Задача тестирования ИС, сгенерированных кремниевым компилятором, принципиально гораздо проще этой же задачи в общей постановке. Вопросы тестируемости можно учесть в процессе проектирования на его ранних стадиях. В тестировании схем кремниевым компилятором два подхода представляются наиболее перспективными. Во-первых, вследствие фиксации целевой архитектуры можно включить в нее схемы, обеспечивающие определенный уровень самотестируемости. Заметим, что если тестовые векторы генерируются внутри кристалла с помощью встроенного генератора псевдослучайных чисел, то частота синхронизации порядка нескольких мегагерц позволяет выполнять за незначительное время большой объем проверок. Вместе с характеристическим анализом это позволяет добиться высокой степени самотестируемости. Во-вторых, знание реализуемых структур упрощает автоматическую генерацию множества тестовых векторов, обеспечивающего приемлемую степень покрытия неисправностей. На сегодняшний день еще не
создано компилятора с такими возможностями, хотя и опубликованы исследования этой проблемы для специальных компиляторов [40]. Б. Оптимизация. Мы предполагаем, что компиляторы программ выполняют не только простую трансляцию языка высокого уровня в языки низкого уровня. Для получения объектного кода, быстро выполняющегося и использующего эффективно оперативную память ЭВМ, компиляторы программ выполняют оптимизацию. Кремниевый компилятор также пытается получить «улучшенный» кристалл в соответствии с некоторыми критериями. В эти критерии входят взаимосвязанные и противоречивые характеристики. Уменьшение площади кристалла часто ведет к увеличению времени счета. Увеличение скорости может означать рост мощности рассеяния кристалла. Необходимо из этих характеристик выбрать наиболее важные. Упомянем работу, в которой предложены методы, отличные от традиционных методов сокращения площади кристаллов и увеличения скорости. Лейсерсон и др. [41] предложили метод восстановления временных интервалов для получения более высокого быстродействия синхронных схем. Он применяется к сети регистров и вычислительных элементов, в каждом из которых получение результата осуществляется за фиксированное число тактов. При перераспределении регистров вырабатывается эквивалентная схема, затрачивающая на работу меньшее число тактов. Таким образом, скорость схемы увеличивается путем уменьшения количества синхротактов, необходимых для завершения вычислений, независимо от реального периода синхронизации. Подобные способы оптимизации, изменяющие структурный уровень описания ИС без изменения ее функциональных характеристик, хорошо дополняют кремниевые компиляторы. Структурные модификации позволяют исследовать изменения во взаимосвязях аппаратных элементов, которые непросто обнаружить даже опытному разработчику. Кроме того, встраивание таких алгоритмов оптимизации в архитектуру компилятора может увеличить их эффективность. В. К компилятору систем. В конечном счете нам хотелось бы описывать на высоком уровне не только отдельную ИС, но и целую систему. Для этого существует несколько возможностей: реализовать все требуемые функции в одном кристалле; распределить функции по нескольким ИС; использовать, для реализации системы целую пластину. В любом случае,мы сталкиваемся с определенными трудностями. j
Если все требуемые функции в одном кристалле разместить не удается, нужно эффективно распределить их по набору кристаллов. Если не учитывать простые тракты обработки данных, то распределение оказывается более сложной задачей, чем это представляется на первый взгляд. Может появиться необходимость расщепить устройства и посылать сигналы с промежуточными результатами за пределы кристалла. Это ведет к увеличению числа выводов кристалла и значительным потерям быстродействия. Разделение функций по независимым процессорам даже внутри одного кристалла может создавать трудности из-за появления слишком большого числа связей. В существующих компиляторах задача компоновки решается только одним простейшим методом — вводится требо вание, чтобы все связи между процессорами были битовыми последовательными, т. е. чтобы для каждого сигнала в схеме имелся свой проводник. Такое решение естественно, если архитектура процессора является битовой последовательной. Однако из существующих компиляторов только компилятор FIRST [18] генерирует кристаллы с битовой последовательной архитектурой. Ясно, что необходимо продолжать работу по поиску решения этой проблемы для пословных параллельных систем, не прибегая к такому чрезмерному упрощению. В печати сообщалось о возможности использования целой пластины для построения в одном куске кремния систем, значительно более сложных, чем существующие. Продолжается работа по разрешению значительных вычислительных трудностей [42—44]. Одним из ограничивающих факторов в выборе размера ИС является наличие на пластине производственных дефектов. Чем больше площадь кристалла, тем меньше вероятность получить бездефектные кристаллы. Проблему выхода годных при интеграции в масштабе пластины пытаются решить размещением на пластине большого числа избыточных процессоров. После завершения процесса изготовления пластины процессоры тестируются и те из пах, которые оказываются работоспособными, связываются с помощью предварительно определенной матрицы шин. Танов процессоров немного, поэтому соединение можно форМЕ|)овать или разервать различными методами, например лкверной резкой и расплавом. Этот метод можно также применять для выполнения ограниченной реконфигурации внутри процессоров. Можно спроектировать специальные типы пластан, содержащих конкретные процессоры, а компилятор м т о м может отобразить систему в кремний, учитывая области использования процессоров и их взаимосвязи. Отмстим, <гто универсальный компилятор, способный вести проектирование
целой пластины, должен иметь дело с новыми понятиями — в том числе с оптимальной избыточностью числа процессоров, их размещением, конфигурацией шин, — основанными на вероятностных моделях выхода годных. Хотя теоретическое исследование этих проблем уже и проводилось [45, 46], но, прежде чем мы сможем применить эти идеи на практике, необходимы дальнейшие разработки в технологической сфере. Г. Экспертные компиляторы. Появилась публикация по разработке экспертных систем, способных решать задачи, начиная от разведки нефтяных месторождений до изменения цен на фондовой бирже. Были описаны интерактивные среды для исследования системных проектов, анализа целостности систем и общих системных требований (CMU Design Advisor — Система выработки рекомендаций по проектированию, автор— Палладио из Станфордского университета). Стейнберг и Митчелл [47] сообщают о программе выдачи рекомендаций по проектированию, в основе которой лежит база знаний. Начинают появляться экспертные системы для решения конкретных задач, например в [48] описана интерактивная система трассировки, управляемой набором правил. Для применения в кремниевых компиляторах методов проектирования, основанных на базах знаний, необходимо сначала определить, что подвергается экспертной оценке. Как только это определено, можно сказать, как и на каком уровне экспертная оценка может быть применена. Необходимо отметить, что при рассмотрении кремниевых компиляторов, концептуально соответствующих разработанным на сегодняшний день, большинство вопросов выбора высокого уровня учитывать не нужно, так как они уже включены по определению в компилятор. Наиболее яркое этому подтверждение — априорное определение архитектуры. По-видимому, анализ алгоритмического описания является перспективной областью применения методов искусственного интеллекта. Нам известен только один компилятор, в который планируется включить какие-то экспертные знания. Это CAPRI, грандиозная систем*, разрабатываемая в IMAG во Франции [49]. Используемая в этой системе методология основана на тщательном изучении существующих микропроцессоров, в CAPRI предполагается применять методы искусственного интеллекта при выборе устройств управления, но, по всей видимости, анализируется небольшое число возможностей. Целевая архитектура системы — пословная параллельная типа информационный канал/устройство управления.
Д. Взаимодействие с разработчиком. Генерация машинных кодов компилятором программ полностью автоматизирована. Неэффективность сгенерированного компилятором кода компенсируется преимуществами программирования на языках высокого уровня. Компиляторы и компьютеры прогрессируют настолько быстро, что неэффективность машинных кодов в большинстве случаев не вызывает беспокойства, за исключением некоторых специальных приложений. Кремниевые компиляторы еще не достигли такой степени развития. Несмотря на снижение предельных характеристик, позволяю1<ёе размещать в кристалле десятки тысяч транзисторов, мы удивительно легко приблизились к предельным параметрам кристаллов. По разным причинам автоматические системы вырабатывают много неприемлемых топологий. Часто кристаллы слишком велики для того, чтобы их можно было изготовить с удовлетворительным выходом годных, длинные связи снижают быстродействие, слишком велика мощность рассеяния. Все это делает необходимым вмешательство разработчика в процесс проектирования. Однако прервать автоматический процесс проектирования сложно. Мы рассматривали кремниевую компиляцию как последовательность преобразований менее подробных описаний интегральной схемы в более подробные. Если процесс преобразований полностью автоматический, то существует уверенность в корректности результатов на каждом шаге преобразований. Практическая необходимость вмешательства человека в этот процесс ставит серьезную проблему: если в цепочке преобразований модифицируется хотя бы одно описание, то необходимо убедиться, что функциональные возможности получившейся в результате схемы не изменились. Отметим, что мы рассматриваем здесь не обычную задачу верификации проекта, а более узкую задачу, так как входные данные компилятора считаются правильными. Наиболее элегантным решением этой проблемы является проведение процесса преобразований в обратном порядке до тех пор, пока мы не убедимся в эквивалентности описаний на каком-нибудь более высоком уровне. Этот обратный процесс называется функциональным абстрагированием [50]. К сожалению, не известны методы хорошего его выполнения. Функциональное абстрагирование требует выделения абстрактных характеристик из описания более низкого уровня и сравнения прямого и обратного описаний на одном уровне. Обе задачи — сложные. Для примера напомним, что задача определения эквивалентности булевых выражений является ЯР-полной. Некоторая надежда появляется, если рассматривать не общую ситуацию, а частные случаи, проявляющиеся
в рамках требуемой компилятором методологии проектирования. Интересное исследование [51] описывает выявление поведения из структурной информации. Рассматриваются только простые случаи; применяемые алгоритмы недостаточно эффективны при обработке больших наборов данных. Нам не известна никакая другая работа в этой области. Какой-то способ автоматического выявления иерархичности необходим, как только мы рассматриваем ручное вмешательство в процесс проектирования на самых низких уровнях преобразований, и даже непосредственно на уровне выходной топологии, но больших достижений в этой области нет. Поэтому функциональная абстракция остается интересным предложением, требующим значительной работы. Такие усилия необходимо применять в диапазоне приложений гораздо более широком, чем просто разработка аппаратуры. Можно предпринять определенные шаги для обеспечения ручного вмешательства в процесс проектирования. Например, влияние любого изменения при увеличении уровня детализации схемы можно с достаточной точностью ограничить иерархическим делением информации. Появляется возможность проверки функциональной эквивалентности гораздо меньших по размерам устройств путем сочетания таких стандартных процедур, как выделение узлов, моделирование на уровне переключательных схем, проверка проектных норм. Эффективность такого подхода зависит от адекватности сопряжения с внешними стандартными процедурами. Уровень автоматизации в этой области требуется значительно больший. Будут ли кремниевые компиляторы совершенствоваться так же быстро, как и программные компиляторы, в результате чего необходимость ручного вмешательства отпадет сама собой? Этот вопрос широко обсуждался, много аргументов было представлено и с той, и с другой стороны [8, 9, 52—54]. Конечно, компиляторы будут совершенствоваться, однако необходимость ручного вмешательства в работу компилятора исчезнет нескоро. Последствия малой скорости работы программного обеспечения могут существенно отличаться от последствий медленной работы аппаратуры. Существует большое различие между «медленной» подпрограммой внутри некоторой программы и медленной схемой внутри тракта обработки данных в интегральной схеме. Подпрограмма влияет на скорость выполнения программы только тогда, когда ее вызывают для выполнения, а медленная схема в синхронной системе заставляет разработчика уменьшать частоту синхронизации всей системы независимо от того, активна схема или нет. Не перестанут использоваться и эвристики в фазах размещения и трассировки при генерации
топологии схемы, так как многие задачи проектирования являются, по всей видимости, ^VP-полными [55]. Следовательно, нельзя целиком устранить ситуации, когда результаты полностью автоматического проектирования окажутся неприемлемыми. Е. Требования к быстродействию. Мы сосредоточили анализ на генерации топологии интегральной схемы, реализующей определенные функции. Хотя мы и упоминали мощность рассеяния кристалла и частоту синхронизации, но ничего не говорили о том, что они являются первичными данными для компилятора. Это критические характеристики схемы, формирующие важную часть комплекта спецификаций системы. Остается, однако, неясным, как ориентировать компилятор, чтобы он отдавал предпочтение уменьшению мощности рассеяния или увеличению скорости работы схемы. При рассмотрении компромиссов между параллельной и последовательной реализациями архитектуры ИС уже указывалось на некоторые возможности варьирования этими характеристиками. В этих же целях можно переупорядочить сигнальные цепи кристалла. Указанные подходы дают хороший результат при внесении изменений на достаточно высоком уровне в иерархии описаний. Однако выше отмечалось, что некоторые чрезмерные задержки в проводниках можно обнаружить только на заключительных стадиях процесса генерации топологии. Можно выявить критические цепи, но что делать с ними дальше? Изменением спецификаций высокого уровня от таких ситуаций избавиться нельзя, поэтому можно попытаться изменить описания более низкого уровня. Проблемы, вызываемые такими изменениями, мы уже рассмотрели. К этому можно добавить, что если компилятор генерирует топологию на основе строгой архитектуры, то изменения в базовом плане кристалла невозможно выполнить без существенных изменений программ генерации топологии. Для решения этой задачи мы обязаны или использовать полностью универсальную систему размещения и трассировки, или применять ручную разработку топологии. Возможно, это основной недостаток использования компиляторов для разработки интегральных схем. Трудности, которые обусловлены этим недостатком, необходимо сравнить с преимуществами, которые предоставляет кремниевая компиляция. Тщательное начальное архитектурное планирование и включение в компилятор основных электрических норм может значительно уменьшить число возникающих трудностей. Мы получаем уверенность, что компилятор гене-
рирует кристаллы с выходными параметрами, лежащими в требуемом диапазоне. Конечно, как и в любой системе, всегда имеются случаи выхода за этот диапазон. VI. Литература по кремниевым компиляторам Специальный выпуск «Трудов института инженеров по электронике и радиоэлектронике» (ТИИЭР) [56] посвящен проблемам проектирования СБИС. В нем приведен всесторонний обзор процесса проектирования ИС. Анализ использования кремниевых компиляторов и их общего влияния на разработку интегральных схем имеется в [8, 9, 52—54]. В этих работах рассмотрены перспективы и практические ограничения применения кремниевых компиляторов с разных точек зрения. В литературе были описаны с различной степенью детализации несколько кремниевых компиляторов. Знакомство с некоторыми из них может существенно повысить уровень понимания предмета. Достаточно полно были описаны два компилятора. О компиляторе MacPitts его авторы впервые сообщили в [16]; более подробная информация об использовании компилятора дана в [17]. Кроме детального описания характеристик компилятора приведены примеры файлов реальных входных описаний. В [10] содержится описание интегральной схемы, спроектированной с помощью компилятора MacPitts и выпускаемой промышленностью. В [57] рассказано о работе по модификации компилятора MacPitts с обзором приложений в области систем передачи данных. FIRST — второй хорошо описанный в литературе компилятор, информация о котором содержится в двух статьях его авторов. В [18] приведен обзор всей системы и анализ некоторых ситуаций проектирования, а в [11] дано более полное описание компилятора, включая входные файлы и примеры выходных топологий. В печати рассматривались также компиляторы Bristle Blocks, Генератор информационных каналов, PLEX, MODEL и Генератор пакетов фильтров. Целевая архитектура упоминавшегося выше компилятора для пакетов фильтров приведена в [25]. В статье архитектура сравнивается с другими архитектурами, ориентированными на приложения обработки сигналов. Примеры спроектированных с помощью этого компилятора интегральных схем приведены в [12]. Система PLEX описана в трудах конференции [13]. На этой конференции еще две работы тех же авторов были посвящены другим аспектам реализации их системы. В этих источниках не приведено примеров использования входного языка системы. 12—708
Первыми компиляторами, о которых появились печатные работы, были Bristle Blocks [58] и Генератор информационных каналов [59]. В описании компилятора Bristle Blocks подчеркнуто различие между жесткими и гибкими библиотечными элементами. Он строил сложные структуры путем вытягивания и ограничения своих сильно параметризованных библиотечных элементов. Компилятор вентильных матриц MODEL рассмотрен в [60, 61]. В этих работах описана методология разработки компилятора; в [60] приведены примеры схем его библиотечных элементов; в [61] дано описание исходного файла. Более традиционная САПР для вентильных матриц рассмотрена в [62]. Детальный анализ многих аспектов кремниевой компиляции представлен в книгах [2, 3]. Содержание всех перечисленных выше статей и книг прямо относится к тематике кремниевой компиляции. Их дополняют [7, 25, 35, 60, 63, 64], в которых рассмотрено много интересных вопросов, связанных с автоматическим проектированием аппаратуры. Несколько коммерческих компаний сообщили о разработке за очень короткое время сложных интегральных схем с помощью высокоавтоматизированных систем [8, 9]. К сожалению, представлено мало информации о деталях их систем проектирования. Поскольку системы запатентованы, мы вряд ли получим больше информации в ближайшем будущем. VII. Выводы Результаты, полученные к сегодняшнему дню с помощью кремниевых компиляторов, продемонстрировали осуществимость разработки сложных интегральных схем, начиная с описания высокого уровня. Приобретенный при использовании компиляторов первого поколения опыт более чем достаточен для дальнейшей работы. К использованию в компиляторах уже готово много усовершенствований и новых методов. Это позволит в компиляторах второго поколения добиться огромных преимуществ перед современными компиляторами. Нет сомнения в том, что высокоавтоматизированные средства проектирования будут играть все более важную роль во всех фазах разработки интегральных схем. Степень использования кремниевых компиляторов при этом будут определять экономические факторы. Высокий спрос на универсальные микропроцессоры продолжает оправдывать
расходы на тщательную проработку каждой детали ИС. Однако для выпускаемых в малом количестве заказных ИС сокращение времени проектирования может оказаться решающим фактором, достаточным для компенсации большего размера кристалла. Такие схемы представляют идеальный объект для использования кремниевых компиляторов. Более того, доступность надежных средств генерации этих схем будет способствовать расширению объемов разработки заказных ИС. Несмотря на преимущества проектирования кристаллов автоматическими методами, трудозатраты при разработке кристаллов среднего размера еще остаются значительными. Наконец, компиляторы систем позволят проводить анализ возможностей разработки на значительно более высоких уровнях иерархии проектирования. Способность быстро рассмотреть последствия архитектурных изменений, различной компоновки одних и тех же функциональных возможностей и другие вопросы проектирования систем высокого уровня помогут разработчикам полностью реализовать потенциал заказных СБИС. Выражение
признательности
Мы благодарим А. Андерсона, П. Бланкеншипа, Э. Хофстеттера и Ш. Хечта, прочитавших рукопись и сделавших много замечаний, улучшивших изложение данной работы. Эта работа субсидировалась Управлением перспективных оборонных разработок. Правительство США не несет ответственности за представленную информацию.
Литература 1. Friedman Т. D., Yang S-C. IEEE Transactions Computing, C - 1 8 ( 7 ) , 593— 614, 1969. 2. Ullman J. D. Computational Aspects of VLSI, Computer Science Press, Rockville, Maryland, 1984. 3. Ayres R. F. VLSI: Silicon Compilation and the Art of Automatic Microchip Design Prentice-Hall, E n g l e w o o d Cliffs, N e w Jersey, 1983. 4. Mead C„ Conway J. Introduction to V L S I Systems, Addson-Wesley, Reading, Massachusetts, 1980. 5. Southard J., Domic A., Crouch K. D i g e s t of Technical Papers of International Conference on Computer-Aided Design, Santa Clara, California (ICCAD-83), 192—193, 1983. 6. Reiss S„ Savage J. Proc. I E E E Int. Conf. Circuits Comput., N e w York, N e w York, 281—285, 1982. 7. Johnson S. C. Proc. ACM Symp. Princ. Program. Lang., 10th, Austin, Texas, 14—19, 1983. 8. The next semi-custom 1С step, Electron Data News, 94—95, 1984. 9. Wallich P. IEEE Spectrum, 28—34, 1984. 10. Feldman J., Beauchemin E. Proc. I C A S S P 1983, Boston, Massachusetts, 511—514, 1983.
11. Bergmann N. Third Caltech Conference on VLSI, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 413—430. 12. Reutz P. A., Pope S. P., Solberg В., Broderson R. W. Dig. Tech. Pap., Int. Conf. Comput.-Aided Des., IEEE Int. Solid State Circuits Conf. (ISSCC-84), 20—21, 1984. 13. Buric M. R„ Christensen C., Matheson T. G. Dig. Tech. Pap., Int. Conf. Comput.-Aided Des., Santa Clara, California (ICCAD-83), 49—50, 1983. 14. Organick E„ Lindstrom G„ Smith D. K„ Subrahmanyan P. A., Carter T. Tech. Rep. UTEC-82-020, Univ. of Utah, Salt Lake City, Utah, 19»2. 15. Van Cleemput W. S., Proc. Des. Autom. Conf., 16th, 554—560, 1979. 16. Siskind J., Southard J., Crouch K. MIT Conf. Adv. Res. VLSI, Cambridge, Massachusetts, 28—40, 1982. 17. Southard J. IEEE Comput. 16(12), 74—82, 1983. 18. Denyer P. В., Renshaw D. Proc. I C A S S P 1983, Boston, Massachusetts, 93g g,j2 1983 19. Joyner W. # . , Workshop Rep., VLSI S o f t w a r e Eng. Workshop, Pert Chester, N e w York, 134, 1982. 20. Kang S„ van Cleemput W. M. Proc. Des. Autom. Conf., 18th, 391—397, 1981. 21. Wolf W., Newkirk J., Mathews R., Dutton R. Third Caltech Conference on VLSI, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 379—391. 22. Mostow J. Workshop Rep., V L S I Software Eng. Workshop, Port Chester, N e w York, 117—125, 1982. 23. Harstenstein R. W. D e s i g n Methodologies for V L S I Circuits, eds. Jespers P., Sequin C., van de Wiele F. (NATO Advanced Study Institute, 1980), Sijthoff and Noordhoff, The Netherlands and Rockville, Maryland, 1982, 73—108. 24. Lyon R. F. VLSI 81 (Proc. Int. Conf. VLSI, 1th, Univ. of Edinburg), ed. Gray J. P., Academic Press, N e w York, 1981, 131—140. 25. Pope S. P., Broderson R. W. Third Caltech Conference on VLSI, P a s a dena, California, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 395—412. 26. Rattner J. R. VLSI S y s t e m s and Computations (Proc. CMU Conf. V L S I S y s t . ) , eds. Kung H. Т., Sproull R., Steele G., Computer Science Press, Rockville, Maryland, 50—51. 27. Kung H. Т., Yu S. Q. Proc. S P I E 341, Real Time S i g n a l Proc. V, 17—22, 1982. 28. Hodges D. A., Jackson H. G. Analysis and D e s i g n of Digital Integrated Circuits, McGraw-Hill, N e w York, 1983. 29. Evans W. H„ Allen J. Proc. I C A S S P , Paris, 703—706, 1982. 30. Rivest R. L. Proc. Des. Autom. Conf., 20th, 475—481, 1982. 31. Lauther U., Hardware and Software Concepts in VLSI, ed. Rabbat G., Van Nostrand-Reinhold, Princeton, New Jersey, 1983, 480—494. 32. Lopez A. D.. Law H. F. Dig. Tech. Pap., ISSCC 1980, 212—213, 1938. 33. Crouch K. W. Proj. Rep. RVLSI-5, MIT Lincoln Laboratory, Lexington, Massachusetts 1984 34. Rosenberg J. В.. Weste N. H. MCNC Tech. Rep. N o 4983-01, Microelectronics Center of North Carolina, Research Triangle Park, NC, 1983. 35. Feldman S. I. Proc. IEEE Int. Conf. Comput. Des., Port Chester, N e w York (ICCAD-83), 652—655, 1983. 36. Lee С. M.. Lin-Hendel C. G. Proc. IEEE COMPCON, 716—719 (Fall 1982). 37. Williams J. D. Master's thesis, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1977. 38. Rosenberg J. B. Proc. MIT Conf. Adv. Res. VLSI, Cambridge, Massachusetts, 213—223, 1984.
39. Williams Т. W„ Parker К. P. I E E E Trans. Comput., 2—15, Jan. 1982. 40. Srini V. P. Proc. IEEE Int. Conf. Comput. Des., Port Chester, N e w York (ICCD-83), 523—525, 1983. 41. Leiserson С. E„ Rose F. M„ Saxe J. D. Third Caltech Conference on VLSI, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 87—116. 42. Raffel J. /., Anderson A. H„ Chapman G. #., Garverick S. L„ Konkle K- #., Mathur В., Soares A. M. Proc. IEEE Int. Symp. Circuits Syst. May 1983 ( I S C S - 8 3 ) , 781—784, 1983. 43. Semiconductor International, Feb. 1984, 32. 44. Peltzer D. L. VLSI Des. I V ( 5 ) , 43—48, 1983. 45. Leigthon F. Т., Leiserson С. E. Proc. I E E E Symp. Found. Comput. Sci., 23th, 291—311, 1982. 46. Greene J., ElGamal A. Third Caltech Conference on VLSI, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 165—184. 47. Steinberg L., Mitchell Т. M. Proc. Des. Autom. Conf. 21st, 412—418, 1984. 48. Fujita Т., Goto S. Proc. IEEE Int. Conf. Comput. Des., Port Chester, N e w York (ICCD-83), 451—454, 1983. 49. Anceau F. Third Caltech Conference on VLSI, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, Maryland, 1983, 15—31. 50. Cory W. E., van Cleemput W. M. Proc. Des. Autom. Conf., 17th, 156— 164, 1980. 51. Leinwand S„ Lamdan T. Proc. Des. Autom. Conf., 16th, 353—359, 1979. 52. Werner J. VLSI Des. 3 ( 5 ) , 46—52, 1982. 53. Werner J. VLSI Des. 4 ( 6 ) , 78—81, 1983. 54. Mead C„ Lewicki G. Electronics, 107—111 (Aug. 11, 1982). [Имеется перевод: Электроника, т. 55, № 15, 1982.] 55. LaPaugh A. S. TR-248, Lab. for Computer Science, MIT, Cambridge, Massachusetts, 1980. 56. Special Issue on V L S I Design; problems and tools, IEEE Proc. 7 1 ( 1 ) , 1983. [Имеется перевод: Специальный выпуск по проектирманию СБИС: проблемы и средства, Т И И Э Р , т. 71, № 1, 1983.] 57. Fox J. R. V L S I Des., 4 ( 3 ) , 30—37, 1983. 58. Johannsen D. L. Proc. Des. Autom. Conf., 16th, 310—316, 1979. 59. Shrobe И. E. Proc. IEEE COMPCON, 340—344, Spring 1982. 60. Gray J. P., Buchanan /., Robertson P. S. Proc. Des. Autom. Conf., 19th, 377—382, 1982. 61. Gray J. P., Buchanan /., Robertson P. S. Proc. IEEE Int. Conf. Cemput. Des., Port Chester, New York (ICCD-83), 523—525, 1983. 62. Ishii J., Sugiura Y., Sueshiro Y. Symp. VLSI Tech., 3rd, Maul, 12—15, 1983. (IEEE Elect. Devices Soc. and Jpn. Appl. Phys.) 63. Frantz D„ Ramming F. J. Proc. IEEE Int. Conf. VLSI, 1st Comput. D e s , Port Chester, N e w York (ICCD-83), 173—176, 1983. 64. Rupp C. R. VLSI 81 (Proc. Int. Conf. VLSI, 1st, Univ. of Edinburgh), ed. Gray J. P., Academic Press, New York, 1981, 227—236.
Глава 5 Специализированный кремниевый компилятор и программируемый кристалл для распознавания языка М. Дж. Фостер (М. J. Foster) Отделение кибернетики, Колумбийский университет Нью-Йорк, шт. Нью-Йорк
I. Введение В проблеме эффективного решения задач с большим объемом вычислений большие надежды возлагают на заказные СБИС. Современная МОП-технология позволяет разместить на одном кристалле от 105 до 106 элементов; ожидается, что это число в следующем десятилетии увеличится еще на порядок. В некоторых приложениях несколько заказных кристаллов могут эффективно заменять большой суперкомпьютер при гораздо меньшей стоимости. Однако оправдаться эти надежды смогут только после устранения главного препятствия в использовании заказных СБИС — высокой стоимости разработки ИС из-за сложности этого процесса. Чтобы спроектировать эффективную ИС, разработчик должен продумать широкий спектр вопросов — от исходного алгоритма работы ИС до ее топологии на кристалле. При проектировании часто допускаются ошибки, их исправление может отнять несколько месяцев. Для широкого использования заказных ИС необходимо найти методы выбора процесса разработки СБИС различной сложности и обнаружения ошибок на ранней стадии проектирования. В идеале разработка и отладка эффективной заказной интегральной схемы должны быть не более трудоемким или дорогостоящим процессом, чем создание программного обеспечения, решающего ту же задачу. Для упрощения разработки заказных СБИС необходимы средства проектирования, которые автоматически генерируют топологию эффективной заказной ИС на основании описания ее поведения. Такие средства, часто называемые кремниевыми компиляторами, уже существуют, однако они, хотя и выполняют требование автоматической генерации топологии на основании спецификации поведения ИС, сгенерировать эффективные кристаллы не могут. При использовании кремниевых компиляторов спецификацию поведения кристалла можно написать на языке программирования высокого уровня. Эту спецификацию можно проверить и изменить до того, как будет сгенерирована топология кристалла. Автоматизация процесса генерации топологии гарантирует, что кристалл и
исходная программа ведут себя одинаково. Это упрощает разработку заказных ИС в двух аспектах: 1) исключаются процедуры разработки принципиальных электрических схем, разработки топологии и другие аналогичные процедуры низкого уровня; 2) сокращается число итераций процесса проектирования, так как сгенерированные ИС скорее всего будут удовлетворять своим поведенческим спецификациям. Хотя такой уровень автоматизации проектирования и желателен, все же эффективность сгенерированных ИС остается существенным требованием. Чтобы быть полезным средством проектирования, кремниевые компиляторы должны генерировать ИС, мало отличающиеся по размерам и по быстродействию от спроектированных вручную. Пользы от заказных СБИС станет больше, когда удастся сконструировать кремниевые компиляторы, генерирующие ИС на основании их поведенческих спецификаций. А. Специализированные
кремниевые
компиляторы.
Ана-
лиз задачи генерации эффективных заказных ИС в этой главе будет вестись на примере использования специализированных кремниевых компиляторов. Специализированный кремниевый компилятор генерирует ИС только для узкого круга задач. Для них он автоматически вырабатывает эффективные кристаллы на основе поведенческих спецификаций. За счет потери общности специализированные кремниевые компиляторы обеспечивают эффективность. Нашим вкладом в теорию проектирования заказных СБИС является определение универсальной структуры специализированных кремниевых компиляторов и описание конкретного компилятора в качестве примера. Общая структура специализированного кремниевого компилятора не зависит от области его применения. Компилятор содержит топологию элементарных компонентов или ячеек, а также методы использования этих ячеек для решения конкретных задач. Специализированный кремниевый компилятор для СБИС включает три составляющие: 1) прикладную область, состоящую из множества задач, для решения которых компилятор предназначен; 2) множество топологий элементарных ячеек-, 3) правила описания задач в прикладной области и правила объединения ячеек для решения конкретной задачи. Хотя конкретные ячейки, правила или прикладные области в разных компиляторах могут быть разными, три указанные составляющие входят в любой специализированный компилятор.
Именно благодаря им специализированные кремниевые компиляторы обладают большими возможностями. Тщательное проектирование элементарных ячеек и методов их взаимного связывания позволяют компиляторам генерировать эффективные ИС. В то же время может быть простым и сам процесс разработки ИС, так как преобразование спецификации задачи в топологию кристалла автоматизируется правилами. Работая со специализированным кремниевым компилятором, разработчик ИС может пользоваться небольшими быстродействующими схемами, затрачивая минимум усилий на проектирование. Сочетание хорошо спроектированных ячеек с ориентированными на конкретные приложения правилами проектирования способствует быстрой разработке эффективных кристаллов. Простота разработки и эксплуатации специализированного кремниевого компилятора — это другое достоинство трехкомпонентной структуры, включающей правила, ячейки и прикладные области. Компилятор с такой структурой делится на две части, одна из которых находится в сфере компетенции разработчиков СБИС (ячейки), а вторая — в сфере компетенции прикладных специалистов (правила). Таким образом, в создании средств разработки СБИС могут принять участие специалисты многих областей знаний, и каждая часть компилятора может быть сконструирована наиболее квалифицированными людьми. В результате такого разделения труда упрощается начальная разработка специализированного кремниевого компилятора. Более того, при модификации компилятора можно изменять только небольшое число правил или ячеек. Например, при изменении технологий изготовления кристаллов требуется изменять только элементарные ячейки компилятора. Набор правил можно не менять. Благодаря этим особенностям специализированные кремниевые компиляторы можно легко создавать или модифицировать. Еще одним достоинством трехкомпонентной схемы является возможность проверить правильность результатов работы специализированных кремниевых компиляторов. Корректность схем, генерируемых компилятором, можно проверить формальными методами. Каждую элементарную ячейку можно проверить независимо от других. После проверки корректности всех ячеек можно с помощью синтаксически ориентированных методов [1, 2] проверить правила преобразования задач прикладной области в соответствующие топологии. При этом мы убеждаемся, что генерируемые топологии отражают требуемое поведение. Таким образом, специализи-
рованные кремниевые компиляторы помогают получать гарантированно корректные кристаллы. В литературе рассматривалось несколько вариантов, альтернативных по отношению к специализированным кремниевым компиляторам. Эти варианты делят на две группы: универсальные кремниевые компиляторы и автом«тические топологические системы. Универсальные кремниевые компиляторы генерируют топологию, исходя из поведенческих спецификаций, а автоматические топологические системы вырабатывают топологию из логических схем или из аналогичных им структурных спецификаций. Ниже будет показано, что ни одна из этих групп не решает полностью проблему автоматического преобразования поведенческих спецификаций в эффективные заказные ИС. До настоящего времени сконструировано всего несколько универсальных кремниевых компиляторов [3—6], которые принимают на входе описание поведения схемы — обычно на языке программирования высокого уровня — и генерируют ИС, соответствующую этому описанию. Неэффективность генерируемых кремниевыми компиляторами ИС [7] препятствует использованию их в большом числе приложений, хотя они и обладают таким преимуществом, как полная автоматизация процесса проектирования. В некоторых прикладных областях необходимо использовать специализированные алгоритмы, схемотехнические и топологические методы. Универсальные кремниевые компиляторы не обладают достаточной базой знаний, позволяющей в любом случае использовать такие методы. Неспециализированные кремниевые компиляторы оказываются неспособными сгенерировать эффективные заказные интегральные схемы. Создавались и автоматические топологические системы, входную информацию которых составляет один из многочисленных вариантов структурного описания. Программы систем сборки кристаллов [8] генерируют топологию на основе заданного множества ориентированных на конкретную прикладную область исполнительных элементов и общей архитектуры кристалла. Системы размещения и трассировки [9—12] из описания кристалла на уровне вентилей вырабатывают топологию ИС путем объединения предварительно определенных библиотечных элементов, выполняющих функции вентилей и регистров. Системы уплотнения [13, 14] и матричные топологические системы [15, 16] помогают в получении топологии из принципиальных схем. Все эти типы автоматических топологических систем могут генерировать небольшие быстродействующие кристаллы (хотя и не для любых приложений). Однако все они требуют, чтобы разработчик
принял какие-нибудь структурные решения относительно разрабатываемой ИС. Они не преобразуют поведение в топологию. По уравнению с ними специализированный кремниевый компилятор объединяет достоинства и универсальных кремниевых компиляторов, и автоматических топологических систем. Время проектирования у них мало, так как поведение ИС описывается единственной спецификацией. Эффективность получаемого в результате проектирования кристалла может оставаться тем не менее высокой, так как в компилятор можно включить специальные знания о проблемной области. Используя преимущества специализации, эти компиляторы могут сделать СБИС пригодными для использования во многих новых задачах. Разработка специализированных кремниевых компиляторов для приложений, встречающихся в различных прикладных областях, поможет сократить время разработки ИС и осуществить надежды, возлагаемые на СБИС. Б. Предшествующая работа со специализированными кремниевыми компиляторами и компоновочные блоки СБИС. Хотя структура специализированных кремниевых компиляторов была определена совсем недавно [1], в ретроспективе несколько существующих систем проектирования СБИС можно рассматривать как специализированные кремниевые компиляторы. В этих системах имеются специализированные ячейки и правила их соединения при решении конкретных задач в некоторой предметной области. Кроме компиляторов, были также предложены и сконструированы несколько систем компоновочных блоков. Как и в специализированный кремниевый компилятор, в систему компоновочных блоков входит множество ячеек, которые специально спроектированы для применения в конкретной прикладной области. Однако в отличие от специализированного кремниевого компилятора система компоновочных блоков не включает явных правил для связывания ячеек. Пользователь системы компоновочных блоков должен знать, как скомпоновать ячейки для конкретного приложения. Работа системы строится на структурном описании конструируемой схемы. В данном подразделе приведен обзор специализированных кремниевых компиляторов и систем компоновочных блоков, предложенных на текущий день для разработки заказных СБИС. Компиляторы, по своим задачам аналогичные описываемому в данной главе, были разработаны Ульманом и его коллегами [17] и Филипсоном [18]. Входными данными этих компиляторов являются регулярные выражения; компи-
ляторы генерируют для выражений распознаватели, топология которых строится на основе программируемых логических матриц. Хотя область применения этих специализированных кремниевых компиляторов та же, что и у описываемого в этой главе, правила и ячейки у них другие. В этих системах в качестве ячеек берутся части программируемых логических матриц и регистров, а правила ориентированы на конструирование конечного автомата для регулярного входного языка и реализацию этого автомата на основе таких ячеек. Компилятор MacPitts — это еще одна система, которую можно рассматривать как специализированный компилятор для схем, соответствующих микропроцессорам [5, 6]. Он транслирует написанную на диалекте языка программирования Лисп программу в ИС, в основе которой лежит двухкомпонентная «целевая архитектура». В архитектуру входит поразрядно секционированный тракт обработки данных и управляющая секция, построенная на основе матричной логики. Такая целевая архитектура подходит для многих цифровых систем, хотя в некоторых приложениях ее и приходится расширять [19]. В некотором смысле MacPitts — это специализированный кремниевый компилятор для программ, которые можно эффективно реализовать на такой целевой архитектуре. У систем компоновочных блоков история более длинная, чем у специализированных кремниевых компиляторов, — они уже успешно использовались в нескольких приложениях. Цифровая обработка сигналов — это одна из областей, в которых компоновочные блоки — обычное явление. Лайон [20] представил архитектурную основу для разработки битовых последовательных обработчиков сигналов. Он приводит примеры полезных элементарных компонентов (мультипликаторов, сумматоров, фильтров второго порядка) и описывает простой метод определения их взаимодействия. Деньер и Майерс [21] показывают, как битовую последовательную арифметику можно реализовать в виде конвейера для того, чтобы сделать цифровые фильтры почти такими же быстродействующими, как и аналогичные фильтры, реализованные с помощью параллельной арифметики. Основываясь на этой работе, Бергман [22] строит компилятор, транслирующий диаграмму потоков сигналов в топологию. Однако это в какой-то мере все еще структурное описание, так как операция по обработке сигналов может описываться несколькими диаграммами потоков [23]. Второй областью применения компоновочных блоков является реализация комбинационной логики на таких регулярных массивах, как ПЛМ, матрицы Уэйнбергера и вентиль-
ные матрицы [24]. Элементарные ячейки в этих логических матрицах представляют части логических уравнений, например переменную, входящую в терм произведения. Ячейки размащают в соответствии с таблицей истинности, полученной из системы уравнений. Системы матричной логики относят к системам компоновочных блоков, а не к специализированным кремниевым компиляторам, так как используемые в качестве входных данных логические уравнения часто концептуально далеки от описания желаемого поведения. Правила генерации логических уравнений из поведенческой спецификации в эти системы не включаются. Третий тип компоновочных блоков используется в трактах обработки данных микропроцессоров [25]. Такие элементарные компоненты, как секционированные АЛУ, блоки регистров, размещаются в топологии с фиксированным форматом. Входной информацией для этой программы является спецификация на языке передач информации на уровне регистров, описывающем структуру тракта обработки данных. Хотя это описание и является структурным, оно соответствует высокому уровню абстракции. Дальнейшая разработка одного недавнего исследования [4, 26] может продемонстрировать, как преобразовать поведенческое описание тракта обработки данных в эффективную структуру. На основании этого исследования можно сгенерировать набор правил, которые требуются для преобразования системы компоновочных блоков в специализированный кремниевый компилятор. В. Содержание данной работы. В большей части этой главы описывается специализированный кремниевый компилятор. Он распознает регулярные языки с помощью небольшого набора элементарных ячеек и синтаксически-ориентированных правил связывания этих ячеек. Являясь макетом полезного на практике средства проектирования, этот пример служит еще и моделью для компиляторов, которые могут работать и в других прикладных областях. В разд. II описан схемный компилятор для систолических распознавателей. Представлены разработка элементарных ячеек на вентильном уровне и небольшой набор правил связывания этих ячеек. Приведены некоторые расширения распознавателей языков, которые могут расширить область применения этих схем без чрезмерного увеличения их сложности. В разд. III рассмотрена топология описанных в разд. II распознавателей языков. Выбор одного из методов генерации топологии, описанных в разд. III, обращает схемный компилятор в специализированный кремниевый компилятор. Внимание акцентируется на специализированных программируе-
мых топологиях для распознавателей языков. Специализированной программируемой топологией называется кристалл, специально спроектированный для работы с конкретным специализированным кремниввам компилятором. Элементарные ячейки размещаются заранее, а правила связывания используются для программирования топологии. Программируемые топологии могут увеличить преимущества специализированных кремниевых компиляторов. Раздел заканчивается описанием топологии, программируемой с помощью лазера. Эта топология реализована в лМОП-технологии. В разд. IV суммируются результаты, представленные в данной главе, и намечаются направления дальнейших исследований. II. Специализированный компилятор схем для распознавателей языков В этом разделе описан специализированный кремниевый компилятор, конструирующий систолические распознаватели для регулярных языков. В компилятор входят несколько элементарных ячеек и процедура их связывания. В результате работы компилятора создается распознаватель заданного регулярного выражения. Описаны несколько расширений компилятора, которые позволяют для некоторых языков построить распознаватели меньшего размера или включить в компилятор дополнительные схемные функции. Хотя регулярные языки можно характеризовать по-разному [27, 28], в этой главе регулярный язык определяется как множество строк (это множество может включать и пустую строку е) символов из конечного алфавита Б, которое можно определить с помощью регулярного выражения над 2. Регулярное выражение может представлять пустое множество 0 или любое множество строк, которое можно построить с помощью операций сцепления, объединения и повторения из пустой строки и одиночных символов из 2. Регулярное выражение над 2 может включать некоторые символы и не из алфавита 2, например операторы и скобки. Предполагая, что символы множества { 0 , ( ) , * , + } не входят в алфавит 2, синтаксически корректные регулярные выражения над 2 можно определить индуктивно следующим образом: 1) 0 — это регулярное выражение над 2; 2) Если а е 2 , то а — регулярное выражение над 2. 3) Если а и [} — регулярные выражения над 2, то регулярными выражениями над 2 являются оф, (а + ^) и (а)*. Значение регулярного выражения можно определить ин-
дуктивно, основываясь на его форме. Регулярное выражение р представляет следующее множество строк L (р); 1) пустое множество, если р есть 0 ; 2) {а}, если р есть а; ' 3) L(a)UMP), если р есть (а + |3); 4) {OIG2, где O i e L ( a ) и если р есть a|J; 5) {e}(J{oiG2, • • On, где п — произвольное положительное целое число и a ; e L ( a ) } , если р есть (а)*. В этой главе для сокращения записи 0 * будет обозначаться через X. Таким образом, L(A,) = {e}. В нашем изложении регулярное выражение используется для обозначения множества строк, которое оно представляет, например abc^(ab + c)*. Регулярные языки были первоначально введены для описания нервных сетей [29], а затем они нашли широкое применение в кибернетике. Регулярные языки использовались для определения лексических анализаторов языков программирования [30], контроллеров для последовательностных машин [31, 32], фильтров для оперативного поиска в базах данных [33], изображений при обработке образов [34], протоколов связи [35]. Расширенные различными путями регулярные выражения использовались в распознавателях речи [36], при синхронизации процессов [37, 38], в тестировании аппаратуры [39], в отладке программ [40]. Таким образом, схемы, которые можно определить с помощью регулярных выражений, формируют большую и интересную проблемную область, и специализированный кремниевый компилятор для этой предметной области должен быть весьма полезен. При описании схем необходимо определять их поведение на входе и на выходе. Все рассматриваемые в этом разделе алгоритмы сравнения с эталоном и распознавания образов будут вести себя одинаково. Все схемы будут работать в дискретных временных интервалах, называемых тактами. Описывающее некоторый эталон регулярное выражение будет определяться заранее, а затем в распознаватель будет вводиться строка по одному символу. Более одного символа за один такт вводиться не будет. Предполагается, что распознаватель выводит один бит после ввода каждого символа, определяя этим битом, является ли введенный символ последним в распознаваемой подстроке. Таким образом и входная строка, и выходной поток битов рассматриваются как временные последовательности, а не как символы, печатаемые на странице, которые можно увидеть все сразу. Если поведение схемы на входе и на выходе описывается с помощью представления строки в виде временной последовательности, то для нахождения всех совпадений в строке
О
О
Q
О
А
В
1
1
1
A
B
C
О
О
О
В
С
>
<
Такт /
Такт 2
Q
Такт 3
Рис. I. Несистолическая схема сравнения с эталоном для ABC.
длиной п произвольный алгоритм распознавания требует Q(n) тактов даже при использовании неограниченного параллелизма. Такое большое время нужно только для чтения строки. Напротив, если в самом начале работы алгоритма доступны все символы строки, то совпадающие подстроки можно найти за время 0(lg 2 n) параллельной композицией в синтаксическом моноиде [41, 42]. Схемы, описываемые в данном разделе, совмещают ввод-вывод с обработкой, поэтому они будут затрачивать на работу время О(п). А. Компилятор схем систолического распознавателя.
Описы-
ваемый в этом разделе компилятор генерирует систолический распознаватель регулярных языков путем объединения элементарных ячеек. Преимущества систолических алгоритмов в СБИС подробно рассмотрены в [43—45]. Среди них высокое быстродействие, малое время отзыва, простота получения топологии, хорошая расширяемость. Эти преимущества являются следствием регулярности топологии и локальных, нешироковещательных передач данных систолических алгоритмов. Для иллюстрации указанных преимуществ и мотивирования разработки систолического распознавателя регулярных языков сравним систолические и несистолические схемы, анализирующие совпадение простых текстовых строк. На рис. 1
Ряультат
< Текст
Рис. 2. Ячейка для несистолической схемы сравнения с эталоном.
показана несистолическая схема сравнения с эталоном [46]. На рис. 2 показано, что символы строки образуют вход в сдвиговый регистр, каждый каскад которого связан с некоторым сохраняемым в памяти символом эталона и с компаратором. (На рис. 2 и далее в этой главе каскады сдвигового регистра или устройства задержки на один такт изображаются в виде прямоугольников, содержащих символ Д.) Символ вводится на каждом такте; чтобы этот символ принять, информация сдвигового регистра перемещается влево. Затем параллельно выполняются все сравнения. Выходы схем сравнений объединяются с помощью схемы И и формируют результат сравнения эталона с одной подстрокой текста. В такой несистолической схеме сравнения с эталоном требуется большой коэффициент объединения по входу в схеме объединения результатов сравнения, что является недостатком. Для схемы И на рис. 1 необходимо столько входов, сколько каскадов в сдвиговом регистре. Неограниченный коэффициент объединения по входу в схемах этого типа или глобальная широковещательность других несистолических схем сравнения с эталоном [47] могут снизить быстродействие и вызвать трудности при проведении трасс в очень больших схемах. На рис. 3 для той же самой задачи показана систолическая схема сравнения с эталоном. Сдвиговый регистр попрежнему сдвигает символы влево на один каскад на каждом такте, но между символами имеется дополнительный разделитель, поэтому состояние ячеек становится попеременно то активным, то пассивным. Многовходовая схема И заменяется сдвиговым регистром для частичных результатов;
Tencm А 1
•
0
А
•
В
>
<—
Линия
Линия
'ВС... РЕЗУЛЬТАТ
Таит / СИМВОЛ
1 Тант 2 В О
•
1
в
•
С
Тант J Рис. 3. Систолическая схема сравнения с эталоном для
АБС.
Рис. 4. Ячейка для систолической схемы сравнения с эталоном.
сдвиги в нем проводятся слева направо на каждом такте. Как видно на рис. 4, каждая активная на данном такте ячейка сравнивает символ текста с хранящимся в ней символом эталона, включает результат этого сравнения во вводимый в ячейку результат и сдвигает модифицированный результат вправо. Каждая ячейка на рис. 3 связана только со своими ближайшими соседями. В такой схеме не требуется неограниченный коэффициент объединения по входу или широковещательность передач данных. Преимущества систолического алгоритма очевидны: 13—708
1) Упрощается генерация топологии, так как отсутствуют глобальные сигнальные цепи. 2) Проще достигается нужная скорость работы, так как нет времяемких широковещательных передач данных или больших коэффициентов объединения по входу. 3) Схему легко расширить, так как для новой ячейки нужно формировать лишь небольшое число соединений. У систолического алгоритма имеются и недостатки. Дополнительный элемент задержки в каждой ячейке может усложнять аппаратуру, а дополнительный разделитель между символами может снизить скорость передачи данных. К тому же половина ячеек в каждом такте пассивна. Эти недостатки можно устранить при реализации схемы. Если в пМОП-технологии используется динамическая память, то для сдвиговых регистров дополнительная аппаратура не нужна [43]: 1) Требующийся в систолическом алгоритме дополнительный инвертор замещает устройство управления шиной, необходимое в несистолическом алгоритме. 2) Смена активных и пассивных ячеек точно соответствует смене активных и пассивных инверторов в сдвиговых регистрах. 3) Схему совпадения можно совместно использовать двум соседним ячейкам. В совокупности преимущества систолического алгоритма, по-видимому, перевешивают его недостатки. В статье [48] показано, как систолическую схему сравнения с эталоном, приведенную на рис. 3, расширить до распознавателя регулярных выражений, сохраняя преимущества систолических алгоритмов. Прежде всего добавляется сигнал разрешения, заменяющий постоянный единичный вход слева на рис. 3. На рис. 5 показана ячейка для одного символа с дополнительным сигналом разрешения, который представляет собой однокаскадный сдвиговый регистр. (Показано также условное обозначение для буквенной ячейки.) Схема сравнения с эталоном строится из таких ячеек связыванием
их в линейку и формированием окончания в самой левой ячейке путем соединения выхода линии разрешения этой ячейки с входом линии результата этой же ячейки. На нечетных тактах значения на линии разрешения РАЗРЕШЕНИЕ являются входными значениями справа от схемы сравнения с эталоном, а значения линии результата РЕЗУЛЬТАТ являются выходами. На четных тактах символы являются входами в тракт обработки данных СИМВОЛ. В результате схема сравнения с эталоном выводит единицу на линии РЕЗУЛЬТАТ тогда и только тогда, когда на линии СИМВОЛ корректная строка вводится сразу же за вводом единицы на линии РАЗРЕШЕНИЕ. Более ясным взаимодействие сигналов РЕЗУЛЬТАТ, РАЗРЕШЕНИЕ и СИМВОЛ становится из поведенческого описания схем сравнения с эталоном, построенных из изображенных на рис. 5 ячеек. Схема сравнения с эталоном для текстового эталона длиной п представляет собой схему с двумя входами РАЗРЕШЕНИЕ и СИМВОЛ и одним выходом РЕЗУЛЬТАТ. На нечетных тактах активны сигналы РАЗРЕШЕНИЕ и РЕЗУЛЬТАТ, а на четных —сигнал СИМВОЛ. Выходным сигналом в момент времени t является значение РЕЗУЛЬТАТ?, равное 1 тогда и только тогда, когда значением сигнала РАЗРЕШЕНИЕ/_ 2 п является 1, а строка <СИМВОЛ,- 2 п + ь С И М В О Л Е Н , , . . . , СИМВОЛг_1> совпадает с эталоном. В табл. 1 приведена последовательность состояний схемы сравнения с эталоном за несколько тактов. Таблица
I
Значения сигналов на линиях схемы сравнения с эталоном для текста abc Такт
1 2 3 4 5 6 7 8 9 10 11 12 13
PA3PFTTIFНИЕ
СИМВОЛ
1
РЕЗУЛЬТАТ
Комментарий
0 а
1
0 Ь 0
0 с
1
0 а 0
0 Ь
0
0 с
0
0
Сравнение, разрешенное на такте 1 П о д с т р о к а Ьса не с о в п а д а е т с эталоном Нет разрешения на такте 5 и нет совпадения Н е т разрешения на такте 7
Jr
Поведенческое описание схем сравнения с эталоном можно перенести с описания простых эталонов на описание регулярных языков. Выходное значение РЕЗУЛЬТАТ; распознавателя регулярного выражения р будет равно 1 тогда и только тогда, когда существует некоторое 0, такое, что сигнал РАЗРЕШЕНИЕг_2п равен 1, а строка <СИМВОЛг-2П+1, СИМВОЛг-2(/!-1)+Ь . . . , С И М В О Л ^ Е Е / , ( р ) .
Ос-
тается только показать, как конструировать такой систолический распознаватель для произвольного регулярного выражения. Основная идея, заложенная в схемы систолических распознавателей,— это декомпозиция регулярного выражения на сцепление более простых подвыражений. Для каждого подвыражения строится распознаватель, а затем эти распознаватели связываются в конвейерную линейку, аналогичную изображенной на рис. 3. Автоматически конструировать распознаватели можно с помощью синтаксически ориентированного метода на основе генерирующей грамматики для регулярных выражений. Такой синтаксически ориентированный метод можно легко расширить добавлением в грамматику большего количества правил вывода; корректность этого метода можно проверить [1, 2]. Используя метод автоматической генерации распознавателя, можно построить корректный, гибкий специализированный компилятор. Синтаксически ориентированная процедура конструирования распознавателей использует грамматику, которая генерирует регулярные выражения путем отождествления отдельных фаз процедуры конструирования с некоторой частью грамматики. Каждый терминальный символ грамматики соответствует элементарной ячейке, каждый нетерминальный символ соответствует более сложному сочетанию ячеек, а каждое правило вывода соответствует правилу конструирования. Распознаватель строится путем синтаксического анализа регулярного выражения и выполнения правил конструирования, связанных с правилами вывода, используемыми при анализе. Если в ходе анализа получается терминальный символ, то в схему добавляется соответствующая элементарная ячейка. При конструировании систолических распознавателей используется следующая грамматика для регулярных выражений: R P\RP, Р —> 0 | <буква> | (R + R0 | (#)* Терминальными символами этой грамматики являются 0 (пустое множество), буквы алфавита 2 и символы + и *.
Линия РЕЗУЛЬТАТ < Линия СИМВОЛ <
Линия
РАЗРЕШЕНИЕ.
Рис. 6. Ячейка для символа
Рис. 7. Ячейка д л я оператора
0.
+.
Нетерминальными символами являются R, соответствующий регулярному выражению, и Р, соответствующий элементарному регулярному выражению (это выражение, для которого сцепление не является операцией самого верхнего уровня). Приведенная грамматика генерирует регулярное выражение в виде сцепления подвыражений, ни в одном из которых сцепление не является оператором самого верхнего уровня. Для каждого терминального символа грамматики требуется элементарная ячейка. Мы уже рассмотрели ячейку для буквы — она показана на рис. 5. Ячейка для 0 просто выводит на линии РЕЗУЛЬТАТ логический 0; это показано на рис. 6. Ячейка для оператора + , показанная на рис. 7, с помощью сигнала РЕЗУЛЬТАТ слева разрешает распознавателям работать со своими операндами, а затем с помощью операции ИЛИ объединяет результаты обработки этих операндов, вырабатывая свой собственный результат на линии РЕЗУЛЬТАТ. Операнды оператора + подключаются к изображенной на рис. 7 ячейке сверху и снизу.
Вход
-О-
г— Выход
[>-
Рис. 8. Задержка на один такт при использовании двухфазной синхронизации.
v А
н
Л
н
А
Hi • Выход
Вход Вход-
Рис. 9. Вентиль «синхронный И Л И » для двухфазной синхронизации.
Для ячейки оператора Клини * нужно использовать нестандартный логический элемент, который называется вентиль «синхронный ИЛИ». Этот вентиль выполняет логическую операцию ИЛИ над двумя входными сигналами, исключая короткий промежуток времени между тактами, когда на его выходе находится логический 0. Если использовать двухтактную несовмещенную схему синхронизации, часто встречающуюся в простых пМОП-схемах [49], то вентиль «синхронный ИЛИ» можно построить, используя всего на несколько транзисторов больше, чем в комбинационной схеме ИЛИ. Например, в макетном кристалле, описанном в п. III.В, такт состоит из одной фазы ф1 и одной фазы фг. Сдвиговые регистры, аналогичные изображенным на рис. 8, самовосстанавливаются в фазе ф1 и сдвигают данные в фазе фг. Заметим, что выход однотактовой задержки не меняется в фазе фг. Для такой системы синхронизации схема на рис. 9 работает как логическая схема «синхронный ИЛИ». Аналогичные схемы можно сконструировать и для других систем сихронизации.
Линия РЕЗУЛЬТАТ
>
Линия СИМВОЛ
<г
Линия РАЗРЕШЕНИЕ <г
/
Схема „синхронное
ИЛИ
Линия РЕЗУЛЬТАТ
Ъ-Линия РЕЗУЛЬТАТ
Линия СИМВОЛ <г
< Линия
СИМВОЛ
Линия РАЗРЕШЕНИС <г
< Линия
РАЗРЕШЕНИЕ
и
Рис. 10. Ячейка д л я оператора Клини
Используя вентиль «синхронный ИЛИ», можно построить ячейку оператора Клини *, как показано на рис. 10. Распознаватель операнда оператора » подключается к верхней части ячейки. Эта схема устанавливает сигнал на выходе, соответствующий операции логического ИЛИ над своим входным сигналом РЕЗУЛЬТАТвх и выходным сигналом РЕЗУЛЬТАТвых операнда оператора. Когда на выходе линии РЕЗУЛЬТАТвых ячейки имеется логическая 1, то она разрешает операнду искать следующий экземпляр. Вместо обычной комбинационной схемы ИЛИ используется схема «синхронный ИЛИ». Это позволяет устранить эффект защелкивания во взаимосвязанных ИЛИ-вентилях. Например, если операндом ячейки Клини * является другая ячейка Клини *, то схемы ИЛИ в обеих ячейках будут находиться в цепи обратной связи друг друга, как это показано на рис. 11. Фактически любое выражение вида (£)*, где е е £ , приводит к появлению цикла из вентилей ИЛИ [50]. Если использовать схемы «синхронный ИЛИ», то никаких трудностей при этом не возникает. Чтобы понять, как вентиль «синхронный ИЛИ» устраняет эффект защелкивания и в то же время не нарушает корректности работы схемы, рассмотрим самую правую ячейку * на рис. 11. Предположим, что входной сигнал РАЗРЕШЕНИЕ для этой ячейки равен 1 на такте 1 и равен 0 на всех последующих тактах. Тогда на такте 1 выходной сигнал РЕЗУЛЬТАТ равен 1 и он устанавливает выход РЕЗУЛЬТАТ' в средней ячейке * в 1. Вентили ИЛИ образуют защелку, которая остается в состоянии 1 даже тогда, когда сигнал РАЗРЕШЕНИЕ переходит в этом же такте в состояние 0. Но так как эти схемы являются схемами «синхронный ИЛИ», то их выходы сбрасываются в «0» перед началом такта 2. Сигнал РАЗРЕШЕНИЕ равен 0 на всех последующих тактах, поэтому сигнал РЕЗУЛЬТАТ может быть установлен в 1 только
Линия и РЕЗУЛЬТАТ
е
Линия СИМВОЛ " Линия „ РАЗРЕШЕНИЕ
п Схема „ синхронное ИЛИ Линия РЕЗУЛЬТАТ' Линия СИМВОЛ Схема линия синхронное ИЛИ РАЗРЕШЕНИЕ Линия РЕЗУЛЬТАТ < Линия СИМВОЛ < Линия РАЗРЕШЕНИЕ
Рис. 11. Распознаватель для выражения ( а * ) * .
тогда, когда сигнал РЕЗУЛЬТАТ' средней ячейки станет перед этим равен 1. Переход сигнала РЕЗУЛЬТАТ' в состояние 1 должен предшествовать переходу в 1 сигнала РЕЗУЛЬТАТ. Чтобы изменился сигнал РЕЗУЛЬТАТ', должен быть равен 1 сигнал РЕЗУЛЬТАТ" ячейки компаратора. Поэтому единственным способом, которым можно установить на некотором такте сигнал РЕЗУЛЬТАТ в 1, является такой, при котором сигнал РЕЗУЛЬТАТ" компаратора становится равным 1 в этом же такте. Но для этого должна быть распознана строка ненулевой длины. И обратно, когда распознается строка ненулевой длины, выходной сигнал РЕЗУЛЬТАТ будет принимать значение «истина». Таким образом, вентиль «синхронный ИЛИ» гарантирует корректность схемы, определяя, что между выдачей на линии РЕЗУЛЬТАТ единиц произошло совпадение ненулевых строк. Для соединения элементарных ячеек и получения из них распознавателей с правилами вывода грамматики связывается набор правил конструирования. Эти правила говорят о том, какие порты каждой схемы необходимо связать вместе, и какие порты необходимо завершить. Все ячейки на рис. 5— 10 имеют левые и правые порты. Некоторые ячейки имеют также верхние и нижние порты для подключения операндов операторов. Составные схемы, соответствующие нетерминальным символам грамматики Р и R, могут наследовать левые и правые порты составляющих их ячеек. Например, любой элементарный распознаватель (обозначаемый нетерминальным символом Р) имеет левый и правый порт, а распознава-
тель (обозначаемый символом R) имеет только правый порт. Шесть правил вывода с их семантическим описанием следующие: R—*-Р
R—+RP Р—»-0 Р—>-<буква> Р—>-(R + R) Р—>-(/?)*
Закрыть левый порт схемы для Р подключением линии Р А З Р Е Ш Е Н И Е ^ * к линии РЕЗУЛЬТАТА Подключить левый порт Р к правому порту R Использовать новую ячейку 0 в качестве схемы для Р Использовать новый компаратор для Р Присоединить правые порты схем R к верхнему и нижнему портам нового узла И Л И Соединить правый порт R с верхним портом нового узла для оператора*
На рис. 12 показано синтаксически ориентированное конструирование распознавателя для выражения (ab+(c)*). Синтаксический анализ выражения проводится сверху вниз, при этом выполняются описанные выше семантические действия и используются соответствующие им ячейки. Чтобы закончить рассмотрение систолических распознавателей, осталось рассмотреть только один вопрос: их инициализацию. Перед началом работы необходимо на все компараторы послать сигнал СБРОС. Сигнал СБРОС просто устанавливает все каскады сдвиговых регистров в нуль. Это гарантирует, что ни одна строка, не входящая в R, не будет распознаваться /^-распознавателем. Например, если линия РЕЗУЛЬТАТ каскада сдвигового регистра ячейки А распознавателя выражения ABC содержит 1 в начале работы, то схема может распознать строку ВС. Распознаватели, конструируемые с помощью описанной синтаксически ориентированной процедуры, удовлетворяют поведенческому описанию, введенному выше в этой главе. Если во входном потоке линии РАЗРЕШЕНИЕ инициализированного распознавателя подать 1, а затем подать распознаваемую строку, то в потоке выходной линии РЕЗУЛЬТАТ появится 1 сразу же за последним символом распознаваемой строки. В других случаях выходные значения линии РЕЗУЛЬТАТ будут равны 0. На рис. 13 показана работа систолического распознавателя в течение нескольких тактов. Заключенная в квадрат 1 означает успешное сравнение в процессе конвейерной обработки. Очевидна схожесть систолического распознавателя со схемой сравнения с эталоном, изображенной на рис. 3.
(ab + (c)*)
R :: = P
P :: = (R + R)
R:: = RP
R ::= P
>-CH Рис. 12. Формирование распознавателя для выражения ( а 6 + ( с ) * ) .
с • Линия РЕЗУЛЬТАТ (Результат)
• Линия СИМВОЛ (Текст) • Линия РАЗРЕШЕНИЕ (Разрешени
и
Тенет. А -В-С-
А
•
0
0
А
А
•
0
и
А 1 •
0 в
.У
И ш
Е-
Линия РЕЗУЛЬТАТ • Линия СИМВОЛ Линия РАЗРЕШЕНИЕ (=1) 0 в
Такт 2
1
0
0
в
в
ТаптЗ 1 0
в
с
1
0
и
0 С
с
Такт 4
0 0 с
0
Такт 5 1
0
•
•
0
[Т] Е
1
-
0
Рис.
13. Систолический
Результат =1
Такт 6
0 распознаватель
для выражения
A(BC+D)E.
Б. Расширения схем. Описанная выше процедура синтаксически ориентированного конструирования допускает прямое расширение набора выражений, которые можно распознавать. Ячейки для новых операторов можно использовать, просто добавив несколько правил вывода к грамматике, описывающей выражения. Хотя класс распознаваемых эта-
» Линия РЕЗУЛЬТАТ < Линия СИМВОЛ < Линия РАЗРЕШЕНИЕ Рис. 14. Ячейка X.
лонов эти новые операторы и не расширяют, они могут упростить необходимые для описания эталонов выражения путем сокращения часто используемых подвыражений. Так как систолический распознаватель регулярного выражения использует одну ячейку для каждого символа выражения (отличного от скобок), эти сокращения уменьшают размер схемы. Расширения набора выражений удобны при практической реализации [51] и используются во многих программных средствах сравнения регулярных выражений с эталоном [30]. На рис. 14 показана одна такая ячейка, которая распознает символ Я, представляющий сокращенную запись 0 * . Распознаватель можно использовать в компиляторе при добавлении к грамматике следующего правила вывода и его семантики: R —у X
Использовать новую ячейку X для R.
Ячейка просто связывает линию РЕЗУЛЬТАТ с линией РАЗРЕШЕНИЕ, при этом распознаются пустые строки, для которых есть разрешение распознавания. Такой же эффект можно получить, если разрешить заканчивать любой порт у произвольной ячейки. Оператор итерации «плюс» и условный оператор «штрих» также используются в качестве расширений. Выражение Е+ является сокращением выражения Е(Е*) и предназначено для сравнения с эталоном одного или нескольких повторов выражения Е. Выражение Е' обозначает выражение Х+Е и предназначено для сравнения с эталоном пустого выражения или выражения Е. Ячейки для этих операторов показаны на рис. 15 и 16. Их можно включить в схемы добавлением к грамматике следующих правил вывода: Р —> (/?)+ Р —v (/?)'
Соединить правый порт с верхним портом нового узла для оператора итерации + Соединить правый порт с верхним портом нового узла для условного оператора «штрих»
Линия РЕЗУЛЬТАТ ъ Линия СИМВОЛ Линия
Ячейка „ синхронное
ИЛИ '
разрешением
Линия РЕЗУЛЬТАТ >
ъ-Линия РЕЗУЛЬТАТ'
Линия
< Линия СИМВОЛ
СИМВОЛ
<
< Линия РАЗРЕШЕНИЕ
Линия РАЗРЕШЕНИЕМ
Рис. 15. Ячейка оператора итерации + . Линия РЕЗУЛЬТАТ
> —
Линия СИМВОЛ
< —
Линия РАЗРЕШЕНИЕ
< —
Линия РЕЗУЛЬТАТ
Линия РЕЗУЛЬТАТ
Линия СИМВОЛ
-С Линия СИМВОЛ
Линия РАЗРЕШЕНИЕ <г-
-а Линия РАЗРЕШЕНИЕ
Рис. 16. Ячейка оператора необязательного выражения.
Реже встречается оператор # , определяемый выражением ( а # Ь ) ==а(Ьа) *. Он часто используется в спецификациях языков программирования для описания списков лексем переменной длины с разделителями между лексемами [52]. Показанная на рис. 17 ячейка может использоваться при добавлении к грамматике следующего правила вывода: Соединить правый порт Ri с верхним портом нового #-узла и соединить правый порт Рг с нижним портом того же узла. Можно спроектировать и таким же образом добавить аналогичные ячейки и для других операторов. Так просто можно добавлять отнюдь не все нужные нам операторы [53]. Например, нет ячеек, которые могут реализовать операции пересечения (П) или дополнения Регулярные выражения с такими дополнительными операторами называются соответственно полурасширенными и расширенными
регулярными
выражениями.
Хант
показал,
что
раз-
мер внешней памяти машины Тьюринга, требуемой для распознавания строки в полурасширенном или расширенном регулярном выражении Е, больше полиномиального по отно-
Линия РЕЗУЛЬТАТ >• Линия СИМВОЛ
<г
Линия РАЗРЕШЕНИЕ <•
Линия РЕЗУЛЬТАТ
Ячейна „ синхронное ИЛИ
Линия
РЕЗУЛЬТАТ
Линия СИМВОЛ <г
< Линия СИМВОЛ
Линия РАЗРЕШЕНИЕ'
< Линия
РАЗРЕШЕНИЕ
Линия РЕЗУЛЬТАТ >Линия СИМВОЛ <г Линия РАЗРЕШЕНИЕ-*? Рис. 17. Ячейка оператора
*.
шению к длине выражения Е [54]. Таким образом, не существует единственной ячейки, которую можно добавить к распознавателю при обнаружении операторов П или ~ во время синтаксического анализа некоторого выражения. В противном случае такая ячейка позволила бы сконструировать распознаватель полиномиального размера, а машина Тьюринга могла бы эмулировать эту схему, используя внешнюю память полиномиального размера. Расширением регулярных выражений другого рода является группа операторов описания множеств символов. Например, расширенное выражение {xyz}ab является сокращенной записью выражения (x+y+z)ab. С помощью такого расширения можно убрать некоторые ячейки + из распознавателя, поскольку ячейку компаратора можно модифицировать так, чтобы она проверяла принадлежность символов, поступающих по линии СИМВОЛ, некоторому множеству символов. Символы обычно кодируются несколькими битами, которые в компараторе сравниваются с битами эталона параллельно. Если часть битов символа проверять на равенство О или 1 и игнорировать проверку для другой части, то такой тест может быть простой и полезной проверкой на принадлежность символа некоторому множеству. Компаратор, описанный в п. III.В, обладает таким свойством. Включение в него операторов объединения, пересечения и дополнения делает компаратор очень мощным. Например, множество заглавных букв кода ASCII (Стандартный американский код для обмена информацией) можно распознавать с помощью только четырех компараторов, используя выражение: <10ааааа>П~(<1000000> + < 10111 аа> + < 1011011; >)
Строки в угловых скобках — это спецификации отдельных битов символов, в которых буква а означает игнорируемый при сравнении бит. Первая строка определяет множество всех символов, у которых первыми двумя битами являются 10. Это расширение легко добавить к распознавателю, и оно определенно полезно. Ячейки, выполняющие операторы пересечения и дополнения множеств символов (в отличие от пересечения и дополнения множеств строк), конструируются легко и могут использоваться, если добавить к грамматике нетерминальный символ С (который обозначает множество символов) и следующие правила вывода: P—>-С С—>-<буква> С—>-(С+С)
С—>-(СПС)
С—>-(~С)
Использовать схему для С в качестве схемы для Р Использовать новый узел компаратора для С Сформировать окончания для всех С и присоединить элементы С к верхнему и нижнему портам нового узла + Сформировать окончания для элементов С и присоединить элементы С к верхнему и нижнему портам нового узла П Подключить к левому порту нового узла — .
На рис. 18 и 19 показаны ячейки для операций пересечения и дополнения множеств символов. Еще раз отметим, что эти ячейки не предназначены для работы с регулярными выражениями. Например, ячейка для оператора пересечения даст ошибку при обработке выражения А*{В[]АВ). Это выражение не дает положительного результата при сравнении с любой строкой, однако распознаватель, построенный в точном соответствии с этим выражением, будет распознавать строку АВ. Можно сконструировать несколько расширений, зависящих от приложения, и для систолических распознавателей. Кроме распознавания ими подстрок выражений они могут выполнять и другую обработку. Выбор в зависимости от приложения расширяющих операторов может превратить компилятор, предназначенный для распознавания регулярных языков, в компилятор для более узкой прикладной области. Этим можно добиться уменьшения площади и увеличения быстродействия сконструированной схемы при сохранении преимуществ компиляции на основе описания высокого уровня.
Лини* РЕЗУЛЬТАТ >Линия СИМВОЛ Линия РАЗРЕШЕНИЕ <Линия РЕЗУЛЬТАТ >• Линия СИМВОЛ Линия РАЗРЕШЕНИЕ <г
^/«ая РЕЗУЛЬТАТ _< Линия
СИМВОЛ
Линия РАЗРЕШЕНИЕ
Линия РЕЗУЛЬТАТ 5 Линия СИМВОЛ <Линия РАЗРЕШЕНИЕ Рис. 18. Ячейка оператора пересечения м н о ж е с т в символов.
Линия РЕЗУЛЬТАТ >-
Линия РЕЗУЛЬТАТ
Линия СИМВОЛ <г-
-С Линия СИМВОЛ
Линия РАЗРЕШЕНИЕМ-
-с. Линия РАЗРЕШЕНИЕ
Рис. 19. Ячейка оператора дополнения м н о ж е с т в а символов.
Среди расширений распознавателей широко используется ввод в распознаватель сигнала ЗАПРЕТ. Этот сигнал можно вводить в тех же тактах, в которых вводится сигнал РАЗРЕШЕНИЕ и выводится сигнал РЕЗУЛЬТАТ. С его помощью можно запрещать проводить сравнения в такте ввода этого сигнала. Если сигнал ЗАПРЕТ имеет значение «истина», то все сравнения подстроки, первый символ которой вводится до момента времени t, а последний символ вводится после момента t, не будут вырабатывать сигнал РЕЗУЛЬТАТ, равный «истина». Сигнал ЗАПРЕТ упрощает использование распознавателей в лексическом анализе, в фильтрах для баз данных и в других приложениях, в которых поток данных разделяется на лексемы, соответствующие регулярным выражениям. Сигнал ЗАПРЕТ выполняет функцию сигнала СБРОС, инициирующего распознаватель, но, кроме этого, он взаимодействует с сигналами РЕЗУЛЬТАТ и РАЗРЕШЕНИЕ, что позволяет расширить сферу применения распознавателей. В табл. II показано поведение распознавателя на входе и на выходе при наличии сигнала ЗАПРЕТ. Сигнал ЗАПРЕТ не влияет на сигнал РЕЗУЛЬТАТ, который выводится в том же такте, в котором вводится сигнал ЗАПРЕТ. Он не влияет также и на любые разрешенные в этом такте сравнения. За-
Таблица
II
Значения сигналов распознавателя, имеющего сигнал З А П Р Е Т , для выражения ( a b ) * Такт
1
2 3 4 5
ЗАПРЕТ
ШЕНИЕ
1
0 0
а 0
0
11 12 13 14 15
1
ее
(ab) *
1
а 0
0
0Ь
0
1
1 а
0
0
Сигнал ЗАПРЕТ не влияет на этот такт
0 Ъ
0
0
0
Запрещен на такте 9
1
Сигнал РАЗРЕШЕНИЕ перекрывает сигнал. ЗАПРЕТ
а 1
1
0
0
а
16 17 18 19
Комментарий
0
0
8 9 10
- У Л Ь .
Ъ
6 7
СИМВОЛ
О ъ
0
0
1
Р а з р е ш е н на такте 15
прещаются только частично законченные сравнения. Поэтому распознаватели с сигналом ЗАПРЕТ могут использоваться для разделения текстового потока на лексемы, если просто подавать значения линии РЕЗУЛЬТАТ обратно на входы РАЗРЕШЕНИЕ и ЗАПРЕТ. Когда распознается некоторая подстрока, сформированная таким образом обратная связь запускает поиск новой подстроки, подавляя в то же время все частичные сравнения, уже запущенные к данному моменту времени. Обработка значений атрибутов во время процесса сравнения —это еще одно зависящее от приложения расширение. Простейшим примером атрибутных вычислений является выделение значений сигнала РЕЗУЛЬТАТвых из ячеек, не являющихся корнем дерева вывода. Распознаватель для строки ABC*, например, мог бы выделить значение РЕЗУЛЬТАТвых. из ячейки Б и из ячейки * и проверить, имеет ли анализируемая строка в конце один или несколько символов С. Ульман [32] предположил, что этим методом можно эффективно* реализовать контроллеры с конечным числом состояний, если использовать несколько распознавателей^ которые выполняют 14—708
операции чтения и записи на множестве регистров состояния. Примерами более сложных атрибутов, которые можно вычислять во время распознавания, являются вероятности реализации путей в дереве при распознавании речи [36] и сгенерированные события, используемые в аппаратных мониторах. В. Альтернативные алгоритмы. До сих пор мы ограничивались анализом только одной схемы компиляции регулярного языка в распознаватель. Однако это не единственная схема такого рода. Для любого регулярного языка можно разработать удивительно большое число совершенно различных распознавателей. В зависимости от конкретного приложения та или иная схема может оказаться миниатюрнее или иметь большее быстродействие. Какая схема распознавателя для конкретного приложения окажется лучше, зависит от распознаваемого языка, от того, какие задачи выполняются помимо задачи распознавания, а также от других характеристик приложения. В этом разделе приведен обзор нескольких типов распознавателей регулярных языков, которые могут оказаться пригодными для реализации с помощью СБИС. Кремниевый компилятор с большими функциональными возможностями мог бы выбирать одну из представленных здесь схем в зависимости от прикладной области, распознаваемого языка, ограничений на быстродействие и размеры кристалла в целевой архитектуре. Представленный в этом разделе систолический алгоритм ориентирован на выражение, т. е. структура распознавателя зависит от структуры регулярного выражения, которое описывает распознаваемый язык. Другая ориентированная на выражение схема была независимо предложена несколькими исследователями [31, 47]. В распознавателях, использующих несистолические алгоритмы, требуется передавать входные символы во все ячейки сравнения в кристалле. Для выполнения этой передачи может потребоваться замедление работы кристалла. С другой стороны, ячейки в таком несистолическом алгоритме более просты, что позволяет уменьшить размер кристалла. Выбор между двумя ориентированными на выражение методами существенно зависит от конкретной технологии, в которой реализуется ИС. Второй тип схем распознавателей строится на конечных автоматах. Произвольный регулярный язык можно распознать с помощью конечного автомата, структура которого может совершенно отличаться от структуры любого регулярного выражения, записанного на этом языке. В классическом подходе для регулярного языка конструируется конечный автомат с минимальным числом состояний. Автомат с п состоя-
ниями можно построить, используя [lgn] триггеров для кодирования состояния и комбинационную логику для вычисления функции переходов. (Запись lg/г означает log2«.) Проблема приписывания состояний триггеров состояниям конечного автомата с целью минимизации комбинационной логики исследовалась достаточно широко [55]'. В современных реализациях часто используются микропроцессоры; в этом случае таблица состояний размером О (/г l g n ) хранится в основной памяти, а входные символы вводятся с помощью системы вьода-вывода. Микропроцессорная реализация позволяет легко запрограммировать функцию перехода состояний. Несколько исследователей предложили прямую реализацию недетерминированного конечного автомата [31, 33, 56]. Можно представлять себе, что недетерминированный автомат находится одновременно в нескольких состояниях или вообще не находится ни в каком состоянии. Недетерминированные конечные автоматы часто значительно проще соответствующих детерминированных автоматов и имеют меньше состояний и меньше переходов. Было предложено еще несколько алгоритмов на основе регулярных грамматик (57] или синтаксических моноидов [41]. Хотя эти методы представляют интерес, но современная технология, по-видимому, не позволяет реализовать их практически [1]. Какой метод компиляции схем нужно использовать? Можно сравнивать методы по отношению к площади кристалла, которую занимает распознаватель. Если самым важным критерием для распознавателя является небольшая площадь, кристалла, то ни один рассмотренный метод не позволяет добиться наилучших результатов во всех приложениях. Компилятор с большими функциональными возможностями должен в каждом конкретном случае выбирать наилучший метод. При разработке СБИС минимизация площади кристаллачасто не принимается во внимание. Площадь распознавателя зависит и от распознаваемого языка, и от типа распознавателя. Например, площадь распознавателя, построенного на основе конечного автомата, зависит от числа состояний автомата, выбранного для языка. Площадь ориентированного:, на выражения автомата зависит от длины выбранного регулярного выражения. С помощью двух теорем мы покажем, что для некоторых языков топологии, сгенерированные на основе конечных автоматов, занимают минимальную площадь, а для других языков минимальную площадь кристалла обеспечивают топологии, сгенерированные на основе выраже-
ний. Если необходимо минимизировать площадь кристалла, то специализированный кремниевый компилятор должен уметь выбрать как минимум между этими двумя подходами к конструированию кристалла. Теорема 5.1 показывает, что независимо от типа распознавателя для некоторых языков, реализованных детерминированным автоматом с s состояниями, требуемая для топологии схемы распознавателя площадь кристалла пропорциональна Q ( s l g s ) . Эта граница характеризует плотную упаковку, так как ее можно достигнуть, используя небольшой процессор с таблицей состояния, занимающей О ( s l g s ) бит. Для любого сочетания состояния автомата и входного символа таблица содержит следующее состояние, закодированное с помощью [lgs] бит. Процессор использует этот код в качестве индекса для входа в таблицу, определяющую следующий переход. Теорема 5.1 показывает, что площадь, занимаемая таким основанным на конечном автомате распознавателем, асимптотически оптимальна для некоторых языков. Теорема 5.1. Для любого алгоритма получения топологии распознавателей и для любого выбора числа состояний конечного автомата существует некоторый язык, минимальный детерминированный автомат для которого имеет s состояний, а топология распознавателя занимает площадь Q ( s l g s ) . Доказательство. Доказательство этой теоремы основано на нахождении множества s s различных языков с автоматом, имеющим s состояний над алфавитом {0, 1}. Конструирование распознавателя для произвольного языка из этого множества, размещающегося на кристалле некоторой площади, эквивалентно записи s lg s бит на этой площади. Биты могут читаться подачей на распознаватель строк и тем самым определять, какой язык распознается. Следовательно, любой метод генерации топологии распознавателей должен использовать площадь, пропорциональную Q(slgs) как минимум для одного из языков. Рассмотрим следующее семейство Fs автоматов с s состояниями и с входным алфавитом {0, 1}. Пусть состояния некоторого автомата в семействе Fs пронумерованы числами О, 1, 2, ,s—1, причем состояние 0 является и начальным, и конечным. Семейство Fs состоит из всех таких автоматов над {О, 1}, у которых для каждого состояния i ввод 0 ведет к переходу из состояния i в состояние (i+1) mods. Любая строка нулей, длина которой кратна s, принимается любым входящим в Fs автоматом. Для завершения доказательства покажем, что множество
Fs содержит s s автоматов и каждый автомат в Fs представляет свой собственный язык, отличающийся от языков других автоматов. Этим мы докажем, что метод размещения распознавателей для автоматов из Fs должен размещать одну из s s различных схем и поэтому требует площадь кристалла Q (slgs). Чтобы убедиться, что множество Fs содержит s s автоматов, рассмотрим эффект от ввода 1 в каждом возможном состоянии автомата. Каждый автомат из Fs может быть представлен вектором длины s, в котором компонент i — это имя состояния, в которое переходит автомат из состояния i при вводе 1. Для каждого компонента имеется s возможностей, всего имеется s компонентов, поэтому число различных автоматов равно s s . Для доказательства того, что каждый автомат из Fs распознает свой язык, отличающийся от языков других автоматов из Fs, выберем пару автоматов и подадим на их входы строку, написанную на языке одной из машин, но не соответствующую другому языку. Пусть Р и Q — разные автоматы. Тогда существует некоторое состояние i, такое, что ввод 1 вызовет в этих автоматах переходы в разные состояния. Пусть автомат Р перешел при вводе 1 из состояния i в состояние р, а автомат Q в это состояние не перешел. Тогда автомат Р распознает строку 0'10s~p, а автомат Q эту строку не распознает, т. е. автоматы соответствуют разным языкам, и поэтому существует s s языков в Fs, один для каждого отображения из одной совокупности состояний в другую. Число битов, необходимых для спецификации конкретного языка в множестве Fs, равно l g ( s s ) = s l g s . Любой метод размещения распознавателя, использующий площадь менее Q ( s l g s ) для каждого языка в Fs, мог бы использоваться для хранения п битов в области, меньшей, чем Q(n). Поэтому ни одного такого метода не существует. Конец доказательства. Распознаватели на основе конечных автоматов не всегда меньше распознавателей на основе выражений. Существуют регулярные языки, для которых распознаватели на основе выражений занимают минимальную площадь кристалла. Теорема 5.2. Для любого алгоритма размещения распознавателей и для любого числа п существует некоторый язык с регулярным выражением из п символов, распознаватель для которого занимает площадь Q(n). Доказательство. Пусть Еп — множество регулярных выражений, состоящих из п символов над алфавитом {0, 1}, сцепленных друг с другом. Так, множество Е2 имеет вид {00,
01, 11, 10}. Каждое из 2" выражений в Еп определяет свой язык (каждый язык состоит из одной строки символов). Как и при доказательстве теоремы 5.1, алгоритм размещения каждого распознавателя из Еп на площади кристалла, меньшей £2, можно было бы преобразовать так, чтобы записывать п битов на площади, меньшей Q{n). Поэтому ни одного такогоалгоритма не существует. Конец доказательства. Границы области О(п) можно достичь или с помощью систолического распознавателя, или с помощью распознавателя на основе дерева выражений, описанного выше. Из теоремы 5.2 следует, что занимаемые этими распознавателями площади асимптотически оптимальны для некоторых языков. В этом разделе дан обзор методов распознавания регулярных языков. Кремниевый компилятор, ориентированный на распознавание языков, мог бы использовать несколько таких методов. В зависимости от конкретных условий приложения специализированный компилятор мог бы выбрать метод, удовлетворяющий требованиям к площади кристалла, к скоростным характеристикам и к дополнительным функциям. Включение в компилятор знаний о предметной области приведет к выбору хороших методов и к проектированию эффективных кристаллов. Г. Выводы. В данном разделе представлен специализированный компилятор для конструирования схем систолических распознавателей регулярных языков. Компилятор использует библиотеку специализированных ячеек — одну для каждого оператора, который может появиться в выражении. Контекстно-свободная грамматика для регулярных выражений управляет установкой связей между этими ячейками в распознавателях. Преимущества структуры компилятора, в котором правила и ячейки отделены друг от друга, заключаются в гибкости и расширяемости. Например, новые технологии изготовления ИС можно использовать с этим компилятором, просто перепроектировав элементарные ячейки. Вносить изменения в процедуру установки связей не требуется. Структура позволяет также систематически расширять набор операторов, используемых в регулярных выражениях. Ячейки для новых операторов можно включить в конструирование добавлением всего нескольких строк в грамматику. Компилятор можно расширить еще и так, чтобы он мог выбирать один из методов, рассмотренных в п. II.В. Рассмотренный в данном разделе специализированный компилятор должен стать полезным и гибким инструментом проектирования ИС.
Ш. Топология систолических распознавателей В разд. II был описан схемный компилятор и определена синтаксически ориентированная процедура построения схем распознавателей, имеющих структуру дерева. Кремниевый компилятор должен не только конструировать схему, но после конструирования сгенерировать ее эффективное размещение на кристалле кремния. В данном разделе описываются различные методы размещения схем распознавателей на кремниевом кристалле. Сначала описывается несколько подходов к размещению, а затем их применение при проектировании специализированных программируемых топологий распознавателей языков. При генерации кристаллов в ограниченной прикладной области используется сочетание специализированной программируемой топологии и специализированного кремниевого компилятора. При этом фиксируются части топологии, общие для всех задач проблемной области, а изменяющиеся части делаются программируемыми. Специализация топологий может привести к снижемию размеров заказных кристаллов и сокращению времени их проектирования. Рассматриваются несколько типов специализированных программируемых топологий распознавателей языков. Раздел завершается описанием макетной специализированной программируемой топологии языкового распознавателя. В топологию входят ячейки компараторов, аналогичных ячейке, изображенной на рис. 5. Логика ячеек не меняется, однако символы в ячейках и связи между ячейками могут изменяться после изготовления кристалла. Топология выполняется в пМОП-технологии и программируется разрывом металлических соединений с помощью лазера. А. Методика генерации топологии. Кремниевые компиляторы, которые мы будем рассматривать в этом разделе, вырабатывают топологии, удовлетворяющие определенным ограничениям. В п. II.А описан метод частичного проектирования схем, в котором проектирование ведется на основе набора предварительно разработанных ячеек. В данном разделе будут описаны несколько аналогичных методик частичного проектирования топологии, каждая из которых включает алгоритм генерации топологии и архитектуру базового кристалла. Связанная с методикой генерации топологии архитектура кристалла реализует такие аспекты генерируемой топологии, которые не зависят от разрабатываемой электрической схемы. Она определяет, какие методы размещения и какие виды трактов обработки данных будут рассматриваться. Соответ-
ствующий методике генерации топологии алгоритм размещает ячейки конкретного распознавателя в разрешенных для этого позициях базового кристалла и производит разводку связей ячеек в трактах передачи данных. Архитектура кристаллов может отличаться одна от другой ограничениями на степень свободы размещения ячеек и трактов передачи данных. Следствием большой свободы размещения компонентов архитектуры кристалла может стать ограничение на свободу разработки самих этих компонентов. Если на положение компонентов накладываются большие ограничения, то сами компоненты можно сделать очень небольшого размера, хотя алгоритм генерации топологии может разместить их очень неэффективно. С другой стороны, если не накладывать ограничений на положение компонентов, то алгоритм генерации топологии может работать очень эффективно, однако может потребоваться увеличение размеров самих компонентов для того, чтобы увеличить число вариантов их взаимных стыковок. Если, например, тракты передачи данных разместить заранее, то на размещение ячеек накладывается ограничение, зато упаковка трактов передачи данных может быть более плотной. В данном разделе рассматриваются несколько методик генерации топологии для архитектур кристаллов, обеспечивающих различную гибкость генерации. Представленные в данном разделе алгоритмы генерации топологии используют иерархический подход. Размещаемая схема делится на две подсхемы меньшего размера, которые независимо размещаются в разных частях базового кристалла. Затем топологии подсхем связываются друг с другом, образуя топологию целой схемы. Главная трудность алгоритма иерархического деления заключается в нахождении такого метода деления большой задачи на независимые подзадачи, который обеспечивал бы объединение решений подзадач друг с другом и, таким образом, решение исходной задачи. При генерации топологии распознавателей метод разделения схем определяется самой структурой этих схем. Схемы, генерируемые синтаксически ориентированной процедурой, являются деревьями ограниченной степени. Если используются только узлы, описанные в пп. II.А и II.Б, то максимальная степень дерева равна трем. Приводимая здесь без доказательства хорошо известная лемма позволяет сформировать процедуру деления деревьев ограниченной степени на поддеревья с одинаковым числом узлов. (Доказательство дается Валиантом [58].) Лемма показывает, что удалением одного ребра дерево можно разбить на два дерева примерно одинаковой величины.
Лемма 5.3. В любом дереве Т степени г с п ребрами имеется ребро, удаление которого образует деревья Т\ и Т2, такие, что для некоторого числа х в диапазоне 1 / л с х с <(г—1)/г | Т\ I <хп и I Т2 I < (1 — х)п, где | Г | —число ребер в Т. Лемма 5.3 дает метод разделения схемы распознавателя приблизительно пополам удалением одного тракта передачи данных. Этот метод можно использовать при генерации топологии схем распознавателей для различных архитектур кристаллов. В наиболее гибкой архитектуре кристалла ячейки и тракты передачи данных топологии можно размещать произвольно. Основанный на лемме 5.3 алгоритм, генерирующий в прямоугольной области размером О(п) топологию распознавателя, состоящего из п узлов, был независимо разработан несколькими исследователями [31, 58, 59]. Хотя этот алгоритм генерации топологии и эффективно использует площадь кристалла, он не позволяет проводить реструктуризацию решения — различные структуры деревьев требуют использования совершенно различных топологий. Реструктуризируемые топологии имеют преимущества перед топологиями, не обладающими таким свойством. Реструктуризируемую топологию можно использовать в кристаллах, окончательная конфигурация которым будет придаваться после их изготовления. Примером является кристалл ЕТ, описанный в п. III.В. Кристаллы с перестраиваемой конфигурацией имеют преимущество перед кристаллами с неперестраиваемой конфигурацией, так как являются более экономичными и позволяют быстрее вести проектирование изделий, поэтому изучение реструктуризируемых топологий оправдано. Реструктуризируемые топологии полезны также и при разработке кристаллов с неперестраиваемой конфигурацией. Если топология распознавателя реструктуризируемая, то проектирование кристалла, содержащего распознаватель, можно выполнить до того, как будет определено распознаваемое выражение. Это позволяет разделить этапы работы по проектированию схемы и облегчить исправление ошибок. Поэтому в данном разделе внимание будет сосредоточено на реструктуризируемых топологиях. В реструктуризируемых топологиях на архитектуру кристалла накладывается больше ограничений, чем в нереструктуризируемых. Ячейки можно располагать только в определенных позициях, а тракты передачи данных между
ними размещаются в каналах. Это может снизить эффективность размещения ячеек и трактов передачи данных, хотя и позволяет уменьшить их размеры и увеличить быстродействие. Бхатт и Лейсерсон [60] разработали реструктуризируемую топологию, в которой для дерева из п узлов нужен кристалл размером только 0(п). Ячейки и тракты передачи данных размещаются в фиксированных позициях, а топология для конкретного дерева формируется программированием набора межканальных переключателей. В рассматриваемых здесь распознавателях эти переключатели могут приводить к нежелательным явлениям; они могут занимать слишком много места в кристалле и вносить задержку в проходящие через них сигналы. Опыт проектирования с использованием рассмотренного в п. III.В кристалла ЕТ подтверждает, что в обозримом будущем в нем можно будет размещать только несколько сотен узлов. При таком малом числе узлов пропорциональная О (lg2rc) площадь кристалла, которую занимают межканальные переключатели и тракты передачи данных, разводящие сигналы между узлами и переключателями, может быть соизмерима с площадью кристалла, занимаемой самими узлами. Кроме потери площади при размещении деревьев малого размера, такая топология может вызывать задержки сигналов, так как некоторые ребра могут проходить через межканальные переключатели, количество которых пропорционально O ( l g n ) . В некоторых реструктуризируемых топологиях, как например, в рассматриваемых в п. III.Б программируемых топологиях, каждый переключатель может вносить задержку в проходящие через него сигналы. Из-за этих потенциальных трудностей необходимо рассматривать и другие методы генерации топологии. Существуют несколько реструктуризируемых топологий, которые используют компактные схемы ячеек и трактов передачи данных и занимают при генерации топологии «-узлового дерева площадь кристалла, пропорциональную 0(n\ghn). Это так называемые коллинеарные топологии, в которых все узлы размещаются линейно, а все ребра дерева разводятся в каналах, параллельных линии размещения узлов. Схемы узлов можно спроектировать очень компактными и так, чтобы все порты располагались с одной стороны линейки узлов. Если трассировку можно проводить в двух слоях, то можно сделать компактными и тракты передачи данных. Соединение двух узлов выполняется простым подключением портов к общему каналу в одном слое и проведением связи в канале в другом слое. Такие
топологии помогают снизить также остроту проблемы задержек сигналов. При использовании описанной в п. III.Б шины с разрывами можно разрабатывать такие топологии, в которых каждое ребро проходит через постоянное число переключателей. Если коллинеарность топологии — это единственное ограничение архитектуры кристалла, то наименьшую площадь из всех известных топологий занимают топологии системы Диоген (Diogenes) [61]. Чтобы разместить с помощью такой топологии дерево, заранее определяется порядок прохождения его узлов; при этом для моделирования стека используются трассировочные каналы. Дерево степени г с п узлами использует [г/2] • [lgn] каналов [62]. Введение кроме коллинеарности еще одного ограничения на топологию может принести выигрыш в скорости. В топологиях Диоген тракт передачи данных между двумя портами может трассироваться с переходом трассы из канала в канал. Если потребовать, чтобы трасса оставалась в одном канале, то можно устранить задержки, так как при каждой смене канала трасса должна пройти через переключатель. Если запретить соединение между каналами, то алгоритм. Лейсерсона [59] будет асимптотически оптимальным. Этот алгоритм раскладывает n-узловое дерево степени г так, чтобы все его ребра разводились в [lgn/lg(r/(r—1))1 каналах. Так как этот алгоритм обладает свойствами, общими всем иерархическим алгоритмам, мы воспроизводим •его здесь в виде алгоритма CL. Алгоритм CL. Этот алгоритм размещает дерево Т в линейке из Т или большего числа узловых ячеек. 1) Если | У | = 1, то разместить единственный узел в ячейке и закончить алгоритм. В противном случае перейти к следующему шагу. 2) Используя лемму 5.3, удалить ребро Е и разделить дерево Т на два поддерева Т\ и Т2 примерно одинакового размера. 3) Разбить l^l ячеек на два блока из |7"i| и |Г 2 | ячеек. 4) Разместить деревья Т\ и Т2 в выделенных для них блоках. 5) Провести трассу для ребра Е, используя сегмент одного канала, который проходит вдоль всей линейки узловых ячеек. На рис. 20 показана работа этого алгоритма на примере небольшого дерева. Разделяющее ребро выделено жирной линией, на каждом шаге показано распределение поддеревьев по блокам узлов. Трассировочные каналы разрыва-
ЕН<Я Eh Eh
Т1
тг
Т2Ь
а
*
Т2а
Т2Ь
Т2а
Е> Eh"' Е>
DHJ)-
ЕН£)
Т2ЬЬ
Г
I
ЕНгИ
а
*
с
d
ь
+
Рис. 20. Коллинеарная топология распознавателя выражения a*
е
(b-\-cd)e.
ются при пересечении ими границы блоков узлов, поэтому несколько узлов могут использовать один и тот же канал. При использовании этого алгоритма для размещения n-узлового распознавателя требуется площадь 0(n\gn). Хотя для коллинеарных топологий некоторых распознавателей
может требоваться площадь, пропорциональная числу узлов, существуют деревья, коллинеарная топология которых требует площадь n\gn [63]. Если топологии должны быть коллинеарны, то при произвольном размещении ячеек в линейке и произвольном разбиении каналов этот иерархический алгоритм является асимптотически оптимальным. Может оказаться полезной топологическая схема даже о еще большими ограничениями. Узлы, используемые при конструировании распознавателей, можно отнести к двум типам: 1) компараторы, имеющие мало портов, но много вентилей; 2) объединители, имеющие много портов, но только один или два вентиля. Может оказаться, что выгодно зарезервировать узловые ячейки для того или другого типов узлов. Тогда можно разработать коллинеарную топологию, содержащую только 0 ( n \ g 2 n ) каналов даже при резервировании узловых ячеек. Топология определяется леммой Бхатта и Лейсерсона [60]. Лемма 5.4. Пусть Т — дерево с п узлами степени г, узлы — двух цветов, белого и черного. Тогда существует множество из 2 - [ I g n / l g (г/(г—1))] ребер, удаление которых делит все множество узлов, а также множества белых и черных узлов пополам. Ни в одном множестве количество узлов одного типа не будет превышать больше чем на единицу количество узлов этого же типа в другом множестве. Лемма 5.4 позволяет построить иерархический алгоритм генерации топологии TCL, аналогичный алгоритму CL. Этот двухцветный алгоритм генерации топологии размещает пузловой распознаватель степени г по зарезервированным узловым ячейкам, используя максимум 2-[lgn] • \\gn/\g(r/(r— — 1))] каналов. TCL. Этот алгоритм раскладывает распознаватель Т с W(T) компараторами в линейке из | Г | узловых ячеек с W(T) ячейками для компараторов, равномерно распределенных вдоль линейки. Равномерное распределение означает, что любая непрерывная линейка из [ J 7" | / IW(T)\ узловых ячеек содержит максимум один узел для компаратора и что любая непрерывная линейка из \\Т\/ IW(T)] узлов содержит как минимум один узел для компаратора. 1) Используя лемму 5.4, исключить множество S из 2-[lg«/lg (г/(г— 1) ) ] ребер для разделения дерева Т на
Алгоритм
распознаватели и w(T\)
— [(w(T)/2ji.
и Т2 с количеством узлов | Т\ \ = [ | Г|/2] •
2) Разделить линейку узлов на блоки из | r i | и \Т2\ узловых ячеек соответственно с w(T\) и w(T2) компараторными узлами. 3) Разместить деревья Т\ и Т2 в предназначенных для них линейках узлов. 4) Развести множество S ребер, используя 2-[lgn/lg(r/ /(г—1))] сегментов, которые проходят по всей длине Т. В данном разделе представлена методика генерации топологии с асимптотически оптимальной площадью и для реструктуризируемых, и для нереструктуризируемых топологий, в которых имеются различные типы ограничений. Выбирая одну из этих методик, можно разработать эффективные по занимаемой площади топологии для любого класса схем распознавателей. Имея в качестве входных данных регулярное выражение, компилятор затем может сконструировать и разместить в кристалле эффективный систолический распознаватель языка. Б. Программируемые топологии для распознавателей. При использовании специализированных кремниевых компиляторов с программируемыми топологиями ценность компиляторов возрастает. Программируемая топология — это частично определенная топология схемы, принадлежащей области приложения компилятора. Полную спецификацию схемы, которую нужно сконструировать, можно преобразовать в программу, или полную спецификацию топологии. Таким образом, программируемая топология выступает как целевая архитектура для специализированного кремниевого компилятора. Программируемые топологии обладают рядом преимуществ перед непрограммируемыми: 1) Экономичность. Можно изготовить большую партию кристаллов до того, как они потребуются. Отдельные кристаллы можно затем программировать по мере необходимости. 2) Предсказуемость. Требования к скоростным, размерным и тепловым характеристикам кристаллов можно точно определить до того, как кристаллы будут программироваться. Минимизируется разброс из-за разработки и изготовления. 3) Быстрая оборачиваемость. Разработка конфигурации программируемого кристалла проходит быстрее, чем проектирование и изготовление заказного кристалла. Исключаются этапы изготовления масок и травления, а кристаллы часто можно конфигурировать после размещения в корпусе.
Разработчики и изготовители ИС давно осознали эти преимущества и уже сконструировали программируемые топологии постоянной памяти, программируемых логических матриц, однокристальных микропроцессоров [64]. Здесь описывается программируемая топология, которую называют программируемой матрицей распознавателей (PRA), используемой для построения распознавателей языков. Рассмотрено несколько реализаций таких матриц, представлены проектирование и тестирование макетного программируемого распознавателя. Реструктуризируемые топологии распознавателей, рассмотренные в п. III.А, можно использовать в качестве программируемых топологий. Размещение ячеек и трактов передачи данных можно определять до того, как станет известна конкретная структура дерева. Заранее определенные позиции ячеек и каналов можно рассматривать как области программирования этих топологий. Топология программируется размещением в областях программирования подходящих структур. Здесь программируемые распознаватели рассматриваются подробно. Топологии данного раздела ориентируются на стандартную архитектуру кристалла, в которой используются коллинеарные топологии, изученные в п. III.А. Ячейки располагаются в ряд, трассировочные каналы проходят вдоль ряда ячеек. С точки зрения современных технологий такие топологии наиболее практичны, так как необходимые в топологиях с площадью кристалла, пропорциональной числу узлов, межканальные переключатели могут занимать слишком много места и в некоторых случаях вносить большие задержки. Для всех программируемых топологий, описываемых в данном разделе, можно использовать базовую архитектуру, показанную на рис. 21. Контактные площадки размещаются на периферии кристалла. Внутри кольца контактных площадок размещаются один или два ряда ячеек с трассировочными каналами вдоль рядов. (Хотя на рисунке показаны два ряда ячеек, можно использовать только один ряд, если ячейки имеют большой размер.) Программируются и ячейки, и каналы. По мере роста числа изделий, для конструирования которых пригоден кристалл, эту архитектуру можно расширять дополнительными рядами ячеек с трассировочными каналами между рядами. В данном подразделе рассматриваются три типа программируемых топологий: 1) топологии, программируемые с помощью масок, которые можно программировать изменением одной или двух масок во время изготовления;
• • и ' •' и I
I Контактные площадки
а
•
а
Ячейки —
Контактные площадки
•
а
а hканалы •
а
а в
Ячейки Контактные площадки
. . .
Г"
"1
п
L J
Рис. 21. Общая архитектура программируемых топологий распознавателей.
2) топологии с плавкими соединениями, которые программируются после изготовления установкой или разрывом соединений (например, с помощью лазера); 3) мягкопрограммируемые топологии, которые программируются и перепрограммируются установкой переключателей (например, проходных транзисторов), которые создают или разрывают соединения. Эти типы топологий отличаются областью применения; выбор конкретного типа зависит от предполагаемой области использования. Аналогичная проблема возникает при выборе между постоянной памятью ПЗУ, программируемой постоянной памятью ППЗУ и памятью с произвольным доступом ЗУПВ в приложениях оперативной памяти. Топологии, программируемые с помощью масок, лучше использовать в приложениях, в которых большое число кристаллов имеют одинаковую конфигурацию. Стоимость изготовления маски высока, но в кристаллах эффективно используется площадь, и они обладают хорошими скоростными характеристиками. Топологии с плавкими соединениями предпочтительны, когда конфигурация кристаллов постоянно изменяется,
но количество реализуемых в каждом кристалле программ невелико. Плавкие соединения занимают в кристалле дополнительную площадь и могут ухудшить его скоростные характеристики. Мягкопрограммируемые кристаллы идеальны в распознавателях, которые можно использовать повторно с различными выражениями. Хотя мягкопрограммируемая топология весьма гибкая, требуемая площадь оказывается больше, чем в двух других топологиях. Рассмотренные в разд. II распознаватели формировались из компонентов двух типов: ячеек, которые выполняли обработку информации, и трактов передачи данных, которые передавали данные между ячейками. Программируемая топология для некоторого класса распознавателей должна давать возможность конфигурировать и ячейки, и тракты передачи данных. В следующих двух подразделах рассматриваются методы, которые можно использовать в архитектуре, показанной на рис. 21. 1. Программируемые ячейки. Отдельные ячейки топологии необходимо запрограммировать на выполнение различных функций. Например, компараторы необходимо запрограммировать на распознавание произвольного символа. Фактически они должны быть даже еще гибче, так как встречающиеся на практике регулярные выражения часто содержат подвыражения, в которых проводится сравнение не с одиночным символом, а с целым множеством символов. Такие программы, как LEX [30], позволяющие пользователю определять эталоны с помощью регулярных выражений, почти всегда включают операторы для множеств одиночных символов. С помощью программируемых топологий можно реализовать аналогичные операторы, так как ячейки компараторов могут выполнять сравнение не только с одиночными символами, но и с множеством символов. Например, компаратор можно запрограммировать на фиктивный символ, который совпадает с любым символом. Если нужна еще большая гибкость, то можно фиктивными битами запрограммировать отдельные биты эталонного символа; эти биты сравниваются и с нулем, и с единицей. Если, например, символы представлены в коде ASCII (Американский стандартный код для обмена информацией), то фиктивные биты позволяют одному компаратору проводить сравнение с любым управляющим символом. Сходство комбинационных ячеек позволяет и их делать программируемыми. Каждая из ячеек, рассмотренных в разд. II, использует один вентиль для формирования сигнала РАЗРЕШЕНИЕ или РЕЗУЛЬТАТ и передает сигнал 15—708
СИМВОЛ со входа на выход без изменения. Используемый в ячейках замыкания вентиль «синхронный ИЛИ» можно без изменений включать и в другие комбинационные ячейки,, поэтому при программировании ячейки на конкретную комбинационную функцию требуется изменять только несколько соединений. Если использовать архитектуру, представленную на рис. 21, то комбинационные ячейки необходимо немного изменить. Другая разводка сигнала СИМВОЛ позволяет сэкономить площадь кристалла. В новой разводке линия СИМВОЛ проводится полностью в трассировочных каналах над ячейками, поэтому сигнал СИМВОЛ на комбинационные ячейки не поступает. Вместо этого линии СИМВОЛ канала, связанного с правым портом ячейки, непосредственно соединяются с каналами, связанными с другими портам» этой ячейки. Это позволяет исключить сигнал СИМВОЛ из. числа портов комбинационных ячеек и сэкономить значительную площадь кристалла, так как ячейка имеет как минимум такую же ширину, как ширина входящих в нее портов. Сигнал СИМВОЛ обычно кодируется несколькими битами, поэтому удаление этих битов из состава трех или четырех портов уменьшает ширину комбинационной ячейки. Программируемым должны быть и комбинационные, и компараторные ячейки. Надо ли делать так, чтобы каждая ячейка топологии могла программироваться в любой тип? ячеек, или ячейки нужно разбить на типы до программирования? Необходимо выбирать тот вариант, который позволяет разместить в кристалле наибольшее число ячеек. Количество ячеек, которые формируются в кристалле с архитектурой, изображенной на рис. 21, зависит от числа ячеек, которое можно включить в каждый ряд. Все ячейки архитектуры имеют одинаковую высоту, но могут отличаться по ширине, которая зависит от числа портов ячейки. Таким образом, число реализуемых в каждом ряду ячеек зависит от полноты использования портов ячеек. Удобно рассматривать программирование ячеек как программирование портов, которые затем группируются в ячейки. Можно представить себе несколько методов программирования портов с целью формирования ячеек. 1) Каждый отдельный порт можно запрограммировать как универсальный порт и для ячейки сравнения, и для комбинационной ячейки. Затем два смежных порта нужно запрограммировать для формирования компаратора или три порта — для формирования ячейки оператора Клини ». 2) Группу из четырех портов можно приписать ячейке, которая программируется как универсальная ячейка и для
компаратора, и для выполнения комбинационной функции. 3) Порты можно разбить на группы по два и четыре, причем группы по два порта можно запрограммировать как компараторы, а группы по четыре порта — как комбинационные ячейки. 4) В каждую ячейку может входить набор соединений, который можно запрограммировать или как два полных порта (с линией СИМВОЛ), или как четыре модифицированных порта (без линии СИМВОЛ). В этом случае каждую ячейку можно программировать и как произвольный компаратор, и как произвольную комбинационную ячейку. Использование методов 1 и 2 рассматриваться не будет. В методе 1 для каждого порта нужна большая сложная топология, которая позволяет эмулировать восемь различных типов портов в ячейках. В методе 2 не используется половина портов каждого компаратора. Так как компараторы составляют существенную часть всех ячеек распознавателя, суммарная неиспользуемая площадь кристалла оказывается неприемлемо большой. Напротив, методы 3 и 4 есть смысл рассмотреть. В методе 3 все ячейки делятся на два типа. Можно разместить распознаватель в линейке, составленной из ячеек разного типа, с помощью алгоритма TCL. Если соотношение компараторов и комбинационных ячеек можно предсказать, то, по-видимому, этот метод позволяет сформировать ячейки минимального размера. Если соотношение типов ячеек определить заранее нельзя, то, по всей вероятности, лучше подходит метод 4. Относительно малое число логических функций, реализуемых в комбинационной ячейке, можно добавить в компаратор без заметных потерь в площади. Если символы кодируются пятью-десятью битами, то число соединений, связывающих отдельный порт с линией СИМВОЛ, будет примерно таким же, как для двух или трех модифицированных портов без линии СИМВОЛ. Следовательно, этот метод не увеличивает ни ширину ячеек, ни их площадь и применять двухцветные алгоритмы размещения не нужно. В каждом из этих методов для более эффективного использования площади кремниевой подложки необходимо расширить функции комбинационных ячеек. Логика комбинационных ячеек, реализующих функцию ИЛИ и оператор Клини *, занимает значительно меньше места, чем логика компаратора, хотя площадь в архитектуре кристалла, выделяемая под комбинационные ячейки, сравнима с площадью компараторов. Следовательно, большая часть площади в рограммируемых комбинационных ячейках не используется. 15*
Эту площадь можно использовать более эффективно, если увеличить набор операторов, которые можно запрограммировать в каждой комбинационной ячейке. Легко добавить такие широко применяемые операторы, как операция Клини + , фиксирующая повторение подвыражения один или несколько раз, или знак апостроф, определяющий необязательное подвыражение. Комбинационные ячейки можно также легко запрограммировать на выполнение таких операторов над множествами строк постоянной длины, как пересечение и дополнение (см. п. II.Б). Эти ячейки можно сочетать с программируемыми компараторами с фиктивными битами, что позволяет распознавать любые множества символов, используя очень небольшое число ячеек. Хорошо определенное множество операторов может уменьшить размер практически реализуемой программируемой топологии. 2. Программируемые каналы. Программируемый набор каналов для соединений должен давать возможность соединять порты, как было описано в разд. II. Необходимо обеспечить возможность соединения любого порта с любым каналом, а также возможность проведения в одном канале неперекрывающихся соединений между парами портов так, чтобы соединения не влияли друг на друга. В приведенной на рис. 21 архитектуре порты подключаются к проводникам, проходящим перпендикулярно каналам. Если программируемые соединения размещаются там, где порты пересекают каналы, то любой порт можно соединить с любым каналом. Чтобы обеспечить возможность проведения в канале неперекрывающихся соединений, каналы нужно разбить на части так, чтобы соединения были электрически изолированы друг от друга. Программируемые точки разрыва можно разместить вдоль канала в таких местах, где его можно разорвать. Обычно достаточно помещать точку разрыва между каждой парой портов в канале, хотя для некоторых каналов может оказаться достаточным и меньшее количество точек разрыва. Один из подходов к проектированию программируемых каналов заключается в том, что в области пересечения портов и каналов планируется использование точки пересечения. Точка пересечения позволяет связать порт с каналом и разорвать канал с одной стороны порта. На рис. 22 показана концептуальная схема точки пересечения, в которой необязательные соединения показаны тонкими линиями. Обычно порт или канал содержат больше одного проводника, поэтому каждая линия на рис. 22 соответствует нескольким проводникам. При программировании топологии можно
Точка разрыва
Канал
канала
Точка разрыва порта
Порт Рис. 22. Концептуальная схема точки пересечения в программируемой топологии.
устанавливать необязательные соединения для связи порта с каналом или для разрыва канала слева от порта. Такую точку соединения легко реализовать во всех трех типах программируемых топологий. При любой реализации канал можно размещать в одном соединительном слое, например в слое металлических соединений, а порт — в другом слое, например в слое поликремния. Возможны следующие подходы к разработке необязательных соединений: 1) В топологии, программируемой масками, нужные соединения можно занести на маску, а ненужные соединения опустить. Для такой реализации нужны только одна или две маски. 2) В топологии, программируемой плавкими соединениями, в качестве необязательных можно использовать плавкие соединения. Ненужные соединения можно разрушить. 3) В мягкопрограммируемых топологиях необязательные соединения могут образовываться канальными МОП-транзисторами, которые используются как проходные транзисторы. На затворе проходного транзистора устанавливается высокий уровень для установки соединения и низкий для разрыва соединения. Состояние каждого необязательного соединения хранит имеющийся в кристалле специальный регистр. Топологии, программируемые с помощью масок или плавких соединений, просты в реализации. Реализация же мягкопрограммируемой топологии связана с некоторыми трудное-
Рис. 23. Длинное ребро пересекает я + 2 транзистора
(черные квадраты).
тями. Проходные транзисторы и регистр состояния не только занимают место в кристалле. Прохождение сигналов через большое число проходных транзисторов может существенно снизить быстродействие схемы. Например, при изготовлении кристаллов по типичной пМОП-технологии каждый проходной транзистор добавляет в проходящую через него линию сопротивление, эквивалентное 10" Ом [49]. В пМОП-технологии вентильные входы носят в основном емкостной характер, поэтому вносимое сопротивление снижает скорость распространения сигнала по каналу. Моделирование с помощью программы SPICE [65], например, показывает, что время распространения сигнала в поликремнии от большого стекового драйвера до входа инвертора на расстоянии 2 мм увеличивается с 5 до 70 не при добавлении 20 проходных транзисторов. Если в каждой точке пересечения есть точка разрыва, реализованная на проходном транзисторе, то ребро дерева, пересекающее п портов, должно пройти через п+2 транзистора, как показано на рис. 23. Так как коллинеарные топологии n-узлового дерева могут включать ребра длиной Q(n) [63], скоростные характеристики распознавателей на основе дерева будут ограничиваться паразитными задержками в программируемом канале. Эти задержки ведут к определенным трудностям при реализации распознавателей в одном кристалле и становятся значительно более существенными при конструировании ИС на целой пластине. Если размер распознавателя соответствует размеру пластины, то некоторые сигналы могут проходить через сотни точек пересечения. Необходимо уменьшать паразитные задержки и в современных технологиях, и в технологиях, которые будут разрабатываться в будущем. Для устранения трудностей, связанных со скоростными характеристиками мягкопрограммируемых топологий, используют меньшее, чем в других топологиях, число точек разрыва. Некоторое количество каналов резервируется для
Рис. 24. Длинный сегмент без точек разрыва.
Группа О
Группа 1
•
Группа 2
Группа 3
Рис. 25. Пример структуры шины с разрывами,
длинных связей, а остальные используются для коротких. Размещение в каналах для длинных связей меньшего числа точек разрыва гарантирует, что во все связи входит небольшое число проходных транзисторов. В идеале точки разрыва надо размещать так, чтобы через произвольную точку разрыва в канале не проходила ни одна связь. В этом случае каналы можно разрывать с помощью соединительных линий, а не с помощью транзисторов. Как видно из рис. 24, каждое ребро дерева проходило бы в этом случае только через два транзистора. На рис. 25 показана шина с разрывами, которая резервирует длинные сегменты для длинных связей и короткие сегменты для коротких связей. В шине с разрывами каналы
разделены на группы по количеству разрывов в канале. Каналы группы 0 не имеют разрывов и используются для очень длинных связей. Каждый канал группы 0 может реализовать одно соединение произвольной длины. Каналы группы 1 имеют только один разрыв и могут реализовывать два независимых соединения (по одному в каждом сегменте). Число разрывов в группе увеличивается до тех пор, пока каждый сегмент группы не будет иметь длину, позволяющую провести соединение между соседними ячейками. На основе такой шины с разрывами можно разместить дерево так, чтобы каждая связь проходила через небольшое постоянное число точек разрыва. Очевидным недостатком шины с разрывами является рост числа трассировочных каналов, так как число соединений, которые можно проводить в каждом канале, ограниченно. Однако, вопреки очевидности, потери составляют лишь небольшой постоянный процент. Любое дерево степени г с п узлами можно разместить, используя только 3 - [ l g n ] X X [T/lgr/(r—1))] каналов, даже если запретить прохождение любого соединения через точку разрыва. Идея заключается в том, чтобы начать разводку с помощью алгоритма CL для коллинеарной топологии, описанного в п. III. А, и показать, что необходим постоянный процент избыточности в каналах, чтобы вести трассировку в шине с разрывами. В алгоритме CL дерево Т делится на два примерно равных поддерева 7\ и Т2 удалением одного ребра. Затем дерево Т1 размещается в левой половине линейки, дерево Т2 — в правой, а соединяющее их ребро проводится в одном из каналов. Назовем последовательные группы узлов, используемых для размещения поддеревьев, назначенными блоками или просто блоками. Таким образом, в начале работы алгоритма имеется один назначенный блок для всего дерева. В каждом цикле алгоритма каждый назначенный блок делится на два блока. В результате формируемые во время размещения назначенные блоки образуют дерево с корнем. В этом дереве сыновья некоторого блока — это два блока, сформированные из него. Назначенные блоки разъединены, если только один блок не является потомком другого блока (в этом случае потомок содержится в своем предке). Каждое размещаемое ребро дерева соответствует одному назначенному блоку, связывая две его половины в один блок. Ребра размещаются в каналах-, каждый канал может включать несколько точек разрыва, которые делят его на разъединенные сегменты. Заметим, что ни одно ребро не длиннее соответствующего ему назначенного блока. Следовательно, если сегмент включает обе конечные точки назна-
Сегмент
Канал Сегмент
Сегмент
Назначенный
блон
Канал
Назначенный блон
Ребро Рис. 26. Определение терминов.
ченного блока, то он может использоваться для трассировки этого блока. Эти определения проиллюстрированы на рис. 26. Показанное на рисунке ребро можно провести в одном сегменте верхнего канала и объединить этим соединением два назначенных блока в один. Чтобы получить формулу ограничения на число каналов, необходимых для размещения дерева размером п узлов и степени г, мы сначала доказываем, что множество разъединенных блоков, размер которых примерно одинаков, можно оттрассировать в трех каналах. Затем мы показываем, что все назначенные блоки, формируемые при размещении любого дерева, можно разбить на [lgn] • [l/lg(r/(r—1))] множеств. Так как каждое такое множество можно развести в трех каналах, всего требуется только 3-[lgn] • [l/lg(r/(r— —1))] каналов. Лемма 5.5. Для любых натуральных чисел п и k существует множество из трех каналов с сегментами длиной 3k, которые пригодны для проведения ребер между п коллинеарными узлами, если только ребра имеют следующие два свойства: 1) для любого k ребро пересекает более k узлов, но не более 2k узлов; 2) никакие два ребра не пересекают один и тот же узел. Доказательство. Сегменты в трех каналах имеют различные смещения по отношению к левому краю линейки узлов, как видно на рис. 27. Одно множество ребер выровнено по левому краю, другое сдвинуто вправо на k узлов, а третье сдвинуто вправо на 2k узлов. Трассировка с помощью множества сегментов — это включающая функция от ребер к сегментам, в которой каждому ребру назначается сегмент, в который входят конеч-
<
ЗН
> Каналы
к
2к> < —
Узлы Минимальный блок
Максимальный блоп Рис. 27. Смещение сегментов в трех каналах.
ные точки ребра. В силу того что функция является включающей, ни одному ребру не назначается больше одного сегмента. Каждое включение отображает одно ребро Е в единственный сегмент S, такой, что левый конец ребра Е содержится в S и не выходит за границу k узлов, считая от левого конца сегмента S. Другими словами, Е отображается в 5 тогда и только тогда, когда левый конец Е находится в границах самых левых k узлов S. Это отображение является функцией, так как каждая точка линейки узлов находится в границах самых левых k узлов точно в одном сегменте. Ребро Е будет входить целиком в сегмент 5, так как правый конец Е удален от его левого конца не более чем на 2k. Можно сказать, что или правый конец сегмента S удален как минимум на 2k от левого конца ребра Е, или правый конец сегмента 5 является также правым концом линейки узлов. Так как длина каждого такого ребра больше k и ребра разъединены, то левые концы любых двух ребер удалены друг от друга более чем на k. Таким образом, никакие два ребра не отображаются в один сегмент, поэтому функция является включающей. Так как функция находит сегмент для произвольного ребра дерева и проводит в любом сегменте только одно ребро, она разводит все множество ребер без конфликтов. Конец леммы. Эту лемму можно использовать при доказательстве того, что для разводки ребер произвольного дерева нужно не более 3-flg«l • [l/lg(r/(r—1))] каналов, даже если точки разрыва размещены заранее. Этим доказывается, что шину с
разрывами можно использовать для размещения дерева кристаллах с мягкопрограммируемой топологией.
в
Теорема 5.6. Для любых целых чисел п и г можно сформировать такое множество из 3-[lg'tHl/lg( / '/(''—1))1 разбитых на сегменты каналов, в которых можно развести коллинеарную топологию любого дерева степени г с п узлами так, чтобы у сегментов не было дополнительных разрывов. Доказательство. Каналы необходимо разбить на [lgn] множеств так, чтобы сегменты каждого множества имели одинаковую длину. Для i > l сегменты множества i имеют длину 3-2~'п узлов, в первом множестве они имеют длину п узлов. Каждое из множеств содержит [l/lgWC''—1))1 групп по три канала, причем сегменты каналов в группе смещены относительно друг друга, как в лемме 5.5. Это множество из 3 - f l g n | • f l/lg(r/(r—1))] каналов удовлетворяет условиям трассировки узлов дерева. Для размещения узлов и формирования назначенных блоков используется алгоритм CL. Ни одно ребро не превышает длину назначенного блока, в котором оно содержится, поэтому достаточно показать, что можно развести множество ребер, каждое из которых имеет длину одного из назначенных блоков. Таким образом, вместо того, чтобы размещать ребро, изображенное на рис. 26, мы можем размещать ребро, которое имеет такую же длину, как и включающий его сегмент. Как отмечено выше, назначенные блоки образуют дерево с корнем, в котором сыновья некоторого блока — это те два блока, на которые блок разбивается алгоритмом CL. Мы разобьем исходное дерево на [lgn] подлесов, каждый из которых можно оттрассировать с помощью 3 - f l / l g ( r / /(г—1))] каналов. Этим теорема будет доказана. Подлее i — это множество блоков, размер которых лежит в интервале (2~'п, 2 1-< п]. Имеется flg«l таких подлесов. Каждый подлее можно разбить на большое число «уровней» так, что каждый уровень состоит из неперекрывающихся блоков. Первый уровень в подлесе i — это множество корней поддеревьев в подлесе, т. е. блоков, отцы которых имеют длину более 21~'п и, следовательно, не входят в лес. Уровень / — это множество сыновей блоков / — 1 уровня, которые еще недостаточно малы по размеру. Существует максимальное число [l/(lg(r/(r—1)))1 уровней, так как в лемме 3.1 показано, что размер блоков каждого уровня уменьшается как минимум в г/ (г—1) раз. Чтобы показать, что никакие два блока в любом уровне не перекрываются, напомним, что два назначенных блока
перекрываются только в том случае, когда один из них является потомком другого. Следовательно, на уровне 1 никакие блоки не перекрываются, так как ни один из них не имеет в лесу предков. Аналогично блоки на уровне / не могут перекрываться, так как все их отцы расположены в уровне /—1. Поэтому каждый уровень состоит из неперекрывающихся блоков, размеры которых лежат в интервале ( 2 2 1 _ ' п ] . Согласно лемме 5.5, каждый уровень можно развести с помощью трех каналов, сегменты которых имеют длину 3-2~ 1 п. Каждый подлее можно, таким образом, отрассировать с помощью 3-[lgnl-[l/lg(r/(r—1))1 каналов. Так как существует lgn подлесов, для разводки всего леса требуется 3-[lgn] • [l/lg(r— 1)) ] каналов. Конец теоремы. В теореме 5.6 показано, что с точностью до малого постоянного коэффициента для шины с разрывами требуется в худшем случае каналов не больше, чем это необходимо, если алгоритм CL используется с точками разрыва во всех точках разводимого массива. Более того, относительное увеличение длины соединений не превышает некоторого постоянного значения. Это показывает, что мягкопрограммируемые распознаватели можно строить без ухудшения скоростных характеристик, вызванного длинными цепочками проходных транзисторов. Однако ход доказательства теоремы 5.6 требует, чтобы любой узел можно было разместить в любой ячейке, предназначенной для узлов дерева, так как для размещения используется алгоритм CL. Следующая теорема показывает, что возможно также двухцветное размещение в шине с разрывами с помощью алгоритма TCL, так что одни ячейки узлов можно зарезервировать для компараторов, а остальные — для комбинационных схем. Число каналов, необходимых для размещения в такой шине с разрывами, то же самое, что требуется для алгоритма TCL и равно 2- [lgn] • [lgn/lg(r/(г—1)) ]. Теорема 5.7. Для любых целых п иг множество 2 х X [lgn] • [lgn/lg(r/(r—1))] каналов, разделенных на сегменты, можно сконструировать так, что любое дерево степени г е п узлами двух цветов, белого и черного, имеет коллинеарную двухцветную топологию, в которой ребра размещаются с помощью сегментов, не имеющих дополнительных разрывов, а белые узлы распределены равномерно вдоль линейки. Доказательство. Множество каналов разделено на [lgn] групп, каждая группа содержит 2-[lgn/lg(r/(r—1))] каналов. Каналы в каждой группе разделены одинаково на сегменты. Каналы из группы 0 включают каждый по одному
сегменту. Каналы из группы 1 содержат два сегмента, каждый из них лежит в границах п/2 узлов. Каналы из группы i содержат 2' сегментов, каждый сегмент лежит в границах л/21' узлов. Алгоритм TCL можно использовать для размещения узлов, которые необходимо трассировать с помощью шины с разрывами, имеющей такую конструкцию. Алгоритм TCL — рекурсивный, с глубиной На каждом вызове алгоритма дерево Т делится точно пополам по отношению к множеству белых узлов путем удаления 2-[lgn/lg(r/(r—1))] ребер, затем производится трассировка этих ребер в множестве сегментов, которые простираются на длину дерева. Сегменты, требуемые на глубине i, не превышают по длине половину длины сегментов, необходимых на глубине i—1. Следовательно, на глубине 1 требуется одно множество сегментов длины п. На глубине 2 необходимо иметь два множества сегментов длины п/2. На глубине i необходимо иметь 2' сегментов длиной п/21'. Это точно соответствует тому, что обеспечивает описанная выше шина с разрывами, поэтому она позволяет выполнить трассировку для алгоритма TCL. Конец доказательства. Теоремы 5.6 и 5.7 показывают, что мягкопрограммируемые топологии могут конструироваться так, чтобы избежать задержек, вносимых длинными цепочками проходных транзисторов. Используя эти теоремы, можно строить шины с небольшим числом точек разрыва, размер которых лишь на небольшой постоянный коэффициент больше, чем в программируемых топологиях с точками разрыва между каждой парой ячеек. Таким образом, для использования в программируемых топологиях распознавателей пригодны все три типа конфигурируемых топологий. 3. Размещение и трассировка. Конструирование матрицы программируемого распознавателя — это только половина всей работы. Необходимо еще иметь метод программирования матрицы для любого регулярного выражения. Учитывая, что схемы распознавателей, которые мы рассматриваем, имеют структуру дерева, задача программирования сводится к размещению дерева в матрице. Хотя в теоремах 5.6 и 5.7 показано существование программируемых топологий, позволяющих реализовать в них произвольное дерево с п узлами, может оказаться более выгодным использовать меньше каналов, чем это требуется в самом общем случае. Многие соответствующие регулярным выражениям деревья имеют большую глубину, но не являются «раскидистыми». Подсчитано [33], что более 90% пе-
реходов состояний в приложениях регулярных языков приходится на простые сцепления. В распознавателях, имеющих структуру дерева, такие сцепления образуют длинные цепи коротких ребер, которые можно разместить, используя только один или два канала. Если распознаватели используют лишь небольшое число каналов, то и программируемые топологии должны включать небольшое число каналов. Нет смысла включать в матрицу каналы, которые никогда не будут нужны. Однако использование меньшего числа каналов, чем максимально возможно, приводит к трудностям. Простой иерархический алгоритм для коллинеарных топологий типа дерева может оказаться больше непригодным для выполнения размещения. Необходима более качественная методика получения топологии типа дерева, реализующая размещение узлов и проведение соединений между ними. Методика размещения и трассировки для мягкопрограммируемых топологий отличается от соответствующих методик для топологий с плавкими соединениями и топологий, программируемых с помощью масок, так как для этих топологий различна трассировка каналов. Как и при разработке каналов, задачи размещения и трассировки более трудны в мягкопрограммируемой топологии, чем в двух других типах топологий. В топологиях с плавкими соединениями и масочных программируемых топологиях задача реализации дерева аналогична обычной задаче планарного размещения. Дерево можно реализовать в программируемой топологии тогда и только тогда, когда ширина сечений дерева меньше, чем число доступных каналов. Поскольку топологию минимального сечения можно определить в полиномиальное время [66], ее реализацию в матрице в случае существования топологии можно найти быстро. Однако получение топологии шины с разрывами, требующейся для мягкопрограммируемой топологии, является новой задачей. В шине с разрывами трассировка более проста, чем размещение. Размещение заключается в приписывании узлов ячейкам линейки, а трассировка — в приписывании ребер дерева сегментам шины. Если первым выполняется размещение, то трассировка превращается в задачу простого сопоставления множеств узлов в двудольном графе, которая имеет полиномиальное по времени решение [67]. Здесь одно множество узлов состоит из ребер дерева, а второе — из сегментов шины. Сопоставление узла графа для ребра дерева узлу для сегмента шины означает, что ребро можно
провести в сегменте. Трудной задачей для мягкопрограммируемой топологии является размещение. Задача размещения для раскладки произвольного дерева в произвольной шине с разрывами является МР-полной, так как к ней сводится задача получения заданного размаха графа [68]. Задача получения заданного размаха графа состоит в нахождении для заданного графа G и заданного целого числа k такой функции f , отображающей узлы графа О в натуральный ряд чисел, что для произвольного ребра (u, v) из G разность \f(u)—f(v) | меньше k. Другими словами, узлы необходимо разместить в линейке так, чтобы расстояние между любыми двумя связанными узлами было меньше k. Эта задача является А/Р-полной, даже если граф G имеет вид дерева. Как частный случай общей задачи получения заданного размаха графа можно сконструировать шину с разрывами, в которой k сегментов длины k располагаются справа от каждой узловой ячейки. Граф G можно реализовать в шине с разрывами, когда размах графа меньше k и топология шины с разрывами будет реализовывать •функцию f . Если, однако, заранее фиксировать k, то задача заключается в определении, имеет ли граф G размах, не превышающий некоторое постоянное число, а эта задача имеет полиномиальное время решения [69]. Аналогично задача размещения графа в шине с разрывами фиксированной глубины является полиномиалвной; здесь глубина шины с разрывами — это число сегментов, которое можно подключить к произвольному узлу. Хорошо известным алгоритмом размещения в шине с разрывами является алгоритм динамического программирования, который для решения задачи требует время, экспоненциально зависящее от глубины шины. Узловые ячейки шины с разрывами сканируются слева направо, при этом реализуется множество частичных топологий. Частичные топологии в узловых ячейках с первой по i-ю эквивалентны, если первый сегмент, пересекающий границу между 1-й и t + 1-й ячейками, оставляет одно и то же ребро дерева с одним и тем и же узлом слева от границы. Если глубина шины с разрывами равна k, a G — это дерево с п узлами, то существует максимум (2п) к классов эквивалентности частичных топологий на границе i-й ячейки. Классы эквивалентности на границе i+1-й ячейки можно определить просмотром каждого класса на границе i-й ячейки один раз для каждого оставшегося узла, так что для каждой узловой ячейки требуется только О (пк+1) операций. Таким образом, этот алгоритм для размещения всего дерева требует времени 0(nk+2). Заметим, что его можно использо-
вать также и в случае двух цветов: необходимо добавить только проверку, являются ли частичные топологии приемлемыми. Таким образом, топология шины с разрывами фиксированной глубины, по-видимому, приемлема и при резервировании узловых ячеек, и без их резервирования. В. Макетный распознаватель, программируемый с помощью лазера. Чтобы продемонстрировать пригодность процедуры конструирования и конфигурирования программируемой топологии для распознавания регулярных языков, летом и осенью 1982 г. был разработан макетный кристалл ЕТ (кристалл проверки выражения), программируемый с помощью лазера. Кристаллы разрабатывались на основе масштабируемых логических ячеек со статическими коэффициентами [49] и изготавливались фирмой MOSIS [70] с использованием «МОП-технологии и канальными областями 4 мкм. В течение января 1983 г. были конфигурированы и оттестированы пять кристаллов. Один из этих кристаллов был полностью работоспособен после конфигурирования, у остальных четырех работоспособность была частичной. Усовершенствованная версия кристалла ЕТ была разработана и запрограммирована в конце 1983 г.; ошибок из-за некорректности процесса программирования не было. Этот эксперимент показывает, что можно разрабатывать компактные программируемые топологии распознавателей. Кристалл ЕТ настраивается на выражение разрывом металлических сигнальных линий. Кристаллы изготавливаются так, что все возможные соединения в нем уже выполнены: все элементы топологии соединены друг с другом. Используемый для конфигурирования кристалла компилятор регулярных выражений выбирает, какие линии разорвать, а какие оставить нетронутыми. Корректируемые линии затем разрываются импульсами лазера. Если использовать такой способ лазерного конфигурирования, то распознаваемое кристаллом выражение можно выбрать гораздо позднее изготовления и распайки кристалла. Металлические линии разрываются в особых позициях,, которые называются точками программирования. Каждая точка программирования в кристалле ЕТ состоит из одной или нескольких металлических линий, которые можно разорвать. Над этими линиями в стеклянном защитном покрытии кристалла сделано окно. Металлические линии имеют ширину 8 мкм, линии можно разрывать независимо друг от друга, зазор между линиями 16 мкм. Окно в защитном покрытии имеет размер вдоль линий 16 мкм, выходит за края
линий на 10 мкм о каждой стороны и отстоит на 10 мкм от других топологических элементов. Поскольку кристалл ЕТ является макетом, был разработан только один тип ячейки. Кристалл ЕТ включает только ячейки компараторов, каждая имеет высоту около 1 мм и ширину около 200 мкм. (Промышленный кристалл должен, конечно, включать дополнительные ячейки для объединения и замыкания.) Каждая ячейка сравнивает символы, кодируемые четырьмя битами, причем каждый бит может программироваться значениями 1, 0 или «безразличное», которое сравнивается с любым входным значением. Точки программирования в ячейке позволяют запрограммировать символ и сделать ячейку оконечной. Кристалл ЕТ содержит две структуры, которые формируются из компараторных ячеек: одиночная заранее сконфигурированная компараторная ячейка и конфигурируемый массив из четырех ячеек. Заранее сконфигурированная ячейка включена в кристалл по двум причинам: она позволяет проверить схему компаратора без программирования с помощью лазера, а также позволяет любой кристалл проверить до программирования, чтобы убедиться, что схемы данного кристалла работоспособны. Все входы и выходы этой ячейки подключены к контактным площадкам. Конфигурируемый массив содержит четыре компараторных ячейки, связанные с переключательным массивом, который включает в себя по ширине восемь портов и по высоте— два канала. Канал в массиве состоит из семи проводников, соответствующих семи проводникам в порте. В каждом пересечении порта и канала находится точка программирования, в которую входит 14 проводников, как показано на рис. 28. Каналы на рис. 28 проходят в горизонтальном слое металлических проводников, а порты проходят вертикально в слое поликремния и изображены в левой части рисунка. Длинный узкий прямоугольник в правой части рис. 28 — это окно в защитном покрытии. Канал можно отключить от соединения, разорвав семь проводников в точке программирования (проводники) 2, 3, 6, 7, 10, 11 и 14, считая сверху). Разорвав другие семь проводников (1, 4, 5, 8, 9, 12 и 13), канал можно разорвать слева от порта. В п. III.Б.2 показано, как использовать плавкие соединения этого типа для конфигурации распознавателя. На рис. 29 приведена фотография второй версии кристалла, размер стороны которого равен примерно 2,8 мм. Конфигурируемый массив — это большая структура слева or центра кристалла, а тестовая ячейка — это структура меньшего размера справа от центра. Контактные площадки раз16—708
мещены по краям кристалла и соединены проводниками с двумя внутренними структурами. Две полоски ло л лNNN .\\N \\ \>•> ЛnNч\ лч\ N NX AN• КN*. 4N л около верхнего правого уг• К*.*.**.ла кристалла — это метки, ^ NЧл\ Nч •>• . М АМ,.' e l отличающие данную верV Л о I 's \ ч sS N сию кристалла от более ранних. iN p V" Кроме линии земли, пил \Л\ S.ч4 Sл ч\ N члСч лN тания Vdd и двух синхрофаз в обеих структурах .к*.*,»*.-, имеется несколько сигvi4 -tл лл- Ч >. N N нальных линий, выведен> ; ЛS Л $ ных на контактные плоV V -С:ч j. < < щадки. К контактным плоЛ \ , . Л л • N л> S\ щадкам также подключены ft > все входы и выходы тесто'NN К**. •Л.-. вой ячейки. Кроме того, 4 верхний канал матрицы S х \V\ V V >.••< \V \ч \V V \ чЧvV V* : Канал \N чЧ чЧ \ подключен к двум группам V VV\ V V Ч ><•••< к >«•»<. (металл) V *" V Ч \V \ \.уЧ Ч\ чЧVч .V * контактных площадок. ЛеЧ вый конец канала подклюЩч. ч. \ S liiti чен к контактным площадкам левого порта матрицы программируемых распозРис. 28. Программируемая точка и навателей, а правый косеть связей. нец — к контактным площадкам правого порта этой матрицы. При конфигурации кристалла ЕТ эти контактные площадки могут подключаться к портам любой ячейки. Входная контактная площадка подключена к диодам вдоль верхнего края матрицы, так что она может быть заранее загружена во время фазы <рь Если считать от самой левой контактной площадки по верхнему краю кристалла по часовой стрелке, то контактные площадки имеют следующее назначение: Порт(поликристал- Окно 8 защитном лический кремний) покрытии
S
II
.к*
1) предварительная загрузка, 2) правый порт конфигурируемой матрицы (семь контактных площадок): вход разряда 3, вход разряда 2, вход разряда 1, вход разряда 0, выходная линия РЕЗУЛЬТАТ, входная линия ЗАПРЕТ, входная линия РАЗРЕШЕНИЕ, 3) земля, 4) питание Vdd, 5) левый порт тестовой ячейки (семь контактных площадок): выходная линия РАЗРЕШЕНИЕ, выходная линия
тмтшшттшшттш
пи
Ш
^••тиитД1
J" *"*
" S ТтМНШИМ
щ
*«
И
Н
И
Н
Ы
Рис. 29. Кристалл, программируемый с помощью лазера.
ЗАПРЕТ, входная линия РЕЗУЛЬТАТ, выход разряда 0; выход разряда 1, выход разряда 2, выход разряда 3, 6) структура для калибровки лазера (две контактные площадки, отсутствующие в первой версии кристалла), 7) правый порт тестовой ячейки (семь контактных площадок): входная линия РАЗРЕШЕНИЕ, входная линия ЗАПРЕТ, выходная линия РЕЗУЛЬТАТ, вход разряда 0„ вход разряда 1, вход разряда 2, вход разряда 3, 8) линия фазы срь 9) линия фазы фг, 10) структура калибровки лазера (две контактные площадки, отсутствующие в версии 1 кристалла), 11) левый порт конфигурируемого массива (семь контактных площадок): выходная линия РАЗРЕШЕНИЕ, выходная линия ЗАПРЕТ, входная линия РЕЗУЛЬТАТ, выход разряда 0, выход разряда 1, выход разряда 2, выход разряда 3. Мы разработали две версии кристалла ЕТ. В первой версии отсутствовали калибровочные структуры, показанные
на рис. 29. Кристаллы первой версии были изготовлены и распаяны фирмой MOSIS в конце 1982 г., тестовая ячейка каждого кристалла была проверена на установке CMU. Все восемь корпусов, полученных из MOSIS, были работоспособны на частоте синхронизации 100 не на такт. Пять кристаллов были затем запрограммированы с помощью лазера на аппаратуре RVLSI в Лаборатории Линкольна Массачусетского технологического института в январе 1983 г. Использованный для программирования лазер фокусируется па размер пятна в 4 мкм, для проверки одновременно с работой лазера используется объектив микроскопа. Кристалл закрепляется на управляемой компьютером передвижной платформе, так что образцы лазерной резки можно получить и проверить до того, как будет конфигурироваться реальный кристалл. Хотя были разработаны и другие кристаллы, программируемые с помощью лазера [71—74], наш кристалл был первым изготовленным MOSIS. Поэтому первым этапом программирования стала калибровка лазера, так как небольшие отклонения в параметрах лазера могут вызвать большие различия в результатах его работы. В идеале металлический проводник должен надежно разрушаться и не должен наноситься ущерб нижележащему слою оксида кремния. Проведенные предварительно эксперименты с кристаллами, изготовленными в Лаборатории Линкольна, позволили разработать метод резки, в котором каждый проводник в точке программирования разрезался несколькими хорошо сфокусированными лазерными импульсами. Так как в кристалле ЕТ не было отдельных калибровочных структур, мы испытали этот метод на одной из линеек переключательной матрицы, связывающей входную контактную площадку с выходной. Мы сначала попытались изолировать эту линейку от остальной матрицы разрезкой восьми линий. Так как выходной площадкой можно было управлять со стороны входной контактной площадки только после разрезания, то операцию изоляции мы посчитали успешной. Этот эксперимент мы подтвердили разрезкой изолированной линейки и проверкой того, что выходной контактной площадкой управлять со стороны входной площадки больше было нельзя. Для конфигурации пяти кристаллов использовались два различных выражения; каждый кристалл конфигурировался около 18 мин. Два кристалла конфигурировались для односимвольного эталона, а остальные три — для трехеимвольного эталона. После конфигурирования кристаллы проверялись на функционирование. Один кристалл оказался пол-
Потенциал +5 В
"t Возможное короткое I
замыкание
10 МОм
Измеряемое напряжение
V Рис. 30. Установка для обнаружения закорачивающих неисправностей.
ностью работоспособным, а остальные четыре — частично работоспособными. Так как тестовые ячейки во всех кристаллах были работоспособны, можно заключить, что большинство неисправностей в конфигурированных кристаллах были вызваны лазерной резкой. Могут произойти два типа неисправностей: мостиковые неисправности, в которых линии разрезаются неполностью, и закорачивающие неисправности, в которых разрезанные линии замыкаются накоротко с другими частями кристалла (например, с подложкой). На конфигурируемых кристаллах были обнаружены оба типа неисправностей. Электрические проверки, проведенные после конфигурирования, показывают, что замыкающие неисправности присутствовали на всех кристаллах, кроме одного. Подложка на кристаллах MOSIS соединена с контактом корпуса. Так как все линии переключательной матрицы управляются парами входа в синхронизацию и выхода из синхронизации, то закорачивание на подложку можно обнаружить, подавая потенциал 5 В на линию Vdd, потенциал 0 В на линию «земля», и потенциал 0 В на резистор, подключенный к подложке, как показано на рис. 30. Любое положительное напряжение на контакте подложки указывает на закорачивающую неисправность. Во всех неконфигурированных кристаллах напряжение на подложке оставалось равным нулю, а четыре из пяти конфигурированных кристалла имели потен-
циал подложки около 0,1 В, что указывает на закорачивающие неисправности в этих кристаллах. Для более точного определения причин неисправностей" кристаллы исследовались с помощью электронного микроскопа с рентгеноспектрометром. Были обнаружены несколько' мостиковых неисправностей, в которых между двумя половинками разрезанной линии оставался материал. Рентгеноанализ показал, что материал в разрезах содержал значительное количество аллюминия. Были найдены также несколько неисправностей, похожих на закорачивающие. Во< всех разрезах был нарушен слой оксида; это нарушение показывает, что мощность лазера была слишком велика. Причиной мостиковых неисправностей было, вероятно, слипание материала во время повторных импульсов. Это, повидимому, показывает, что импульсы, используемые при конфигурировании кристаллов ЕТ, несли слишком большую энергию на единицу площади и их однородность была недостаточна. После экспериментов с первым макетным кристаллом мы спроектировали вторую версию кристалла. Во вторую версию были включены калибровочные структуры, которые состоят из 15 точек программирования, связанных с двумя контактными площадками. Используя калибровочные структуры, мы разработали новую процедуру лазерной резки, вкоторой каждая точка программирования разрезалась только одним диффузным импульсом лазера. Этот импульс подавался прямо через изолирующее покрытие, а не через: окно в покрытии. С помощью нового метода резки удалось, сделать около 300 разрезов на двух кристаллах, не допустив ни одной мостиковой или закорачивающей неисправности. Первый кристалл оказался после конфигурирования неработоспособным, но исследование с помощью микроскопапозволило обнаружить несколько несформированных поликремниевых линий, вызванных, вероятно, дефектами маски. Второй кристалл был затем запрограммирован на эталон,, позволивший проверить все элементы топологии, кроме тех,, которые находились в дефектной области. Все части второгокристалла вне дефектной области были работоспособны. Эксперименты с макетными кристаллами позволяют сделать вывод, что конфигурация кристаллов после изготовления является приемлемой, хотя необходимо дополнительно исследовать методы конфигурирования. Необходимо провести эксперименты с целью поиска приемлемых лазерных экспозиций для кристаллов фирмы MOSIS. Кристаллы, изготовленные по и МОП-технологии, чувствительны к закорачивающим неисправностям; лазерные импульсы специально^
использовались для выполнения соединений между металлическими проводниками и подложкой [71]. Необходимо также оценить новые структуры соединений. По-видимому, особенно важно то, что окна в изолирующем покрытии необходимо убрать. В фазе травления, используемой при формировании окон, может также вытравливаться защитный •слой оксида, который изолирует слой металла от подложки, что делает закорачивающие неисправности более вероятными. Неопределенность лазерной резки через защитное покрытие, по-видимому, менее страшна, чем это неконтролируемое вытравливание. Для исследования структур соединений и параметров лазера необходимо изготовить и запрограммировать набор тестовых кристаллов. В будущие кристаллы, программируемые с помощью лазера, необходимо, как и во второй версии кристалла ЕТ, включить калибровочные структуры для выполнения процесса конфигурации. Линии можно резать лазером различной мощности, а затем проверить их на закорачивающую и мостиковую неисправности для определения приемлемой мощности экспозиции. Включение калибровочных структур в кристалл и возможность экспериментирования с ними позволят повысить интерес к конфигурируемым топологиям во многих приложениях. Используя ячейки, аналогичные компараторам кристалла ЕТ, можно строить отдельные кристаллы, конфигурируемые для регулярных выражений длиной от 30 до 70 символов. Можно сделать вывод, что программируемые топологии перспективны в сочетании со специализированными кремниевыми компиляторами. IV. Выводы и перспективы В этой главе рассмотрено конструирование специализированных кремниевых компиляторов. Рассмотрение велось на примере разработки компилятора для регулярных выражений. Исследование показало возможность и полезность разработки специализированных кремниевых компиляторов. Полезность компиляторов определяется тем, что они способны автоматически генерировать эффективные кристаллы, а возможность построения компиляторов была продемонстрирована разработкой компилятора и программируемой топологии, служащей для этого компилятора целевой архитектурой. Продемонстрированные в этой главе преимущества специализации говорят о необходимости использования описанных методов при построении специализированных кремниевых компиляторов для других прикладных областей.
Специализация кремниевых компиляторов может существенно повысить качество генерируемых ими кристаллов. Так как компиляторы предназначены для работы в конкретной прикладной области, сгенерированные схемы можно сделать эффективными и по занимаемой площади кристалла, и по быстродействию. Например, рассмотренный в этой главе компилятор регулярных выражений использует тщательно спроектированные ячейки, предназначенные для применения в области распознавания образов. Генерируемые компилятором кристаллы используют новый систолический алгоритм, который существенно зависит от описания распознаваемых эталонов с помощью регулярных выражений. Наконец, он использует методику генерации топологии, которая особенно эффективна для вырабатываемых компилятором кристаллов. Ни один из этих методов, повышающих временную или пространственную эффективность кристалла, нельзя использовать без специализации в какой-то одной области применения. Таким образом, специализация — это перспективный метод, позволяющий при использовании кремниевых компиляторов выбрать нужное компромиссное решение между методами проектирования и генерировать топологии, конкурирующие с разработанными вручную. Выгодна также и специализация в разработке программируемых топологий. И ячейки, и соединения, используемые в программируемых топологиях, можно сделать более эффективными, если ограничить область их применения. Можно спроектировать компактные ячейки, которые программируются только на те функции, которые нужны в данной прикладной области. Программируемые соединения тоже можно сделать более компактными, если четко определить прикладную область, так как это может привести к уменьшению числа типов соединений. Такая программируемая структура, как шина с разрывами, описанная в разд. III и заменяющая транзисторы с фиксированными соединениями, может использоваться только тогда, когда вид соединений известен заранее. Знание прикладной области позволяет реализовать выгоды программируемых топологий без больших потерь в площади кристалла и быстродействии. Применение данного подхода в других специализированных кремниевых компиляторах требует дальнейших исследований. Такие компиляторы, как FIRST [22], необходимо расширить так, чтобы они воспринимали поведенческую, а не структурную спецификацию схемы, предназначенной для обработки сигналов. В идеале спецификация могла бы транслироваться с использованием контекстно-свободной грамматики, как это делалось в данной главе. Тогда можно
было бы разработать модульный, расширяемый и проверяемый компилятор. Дальнейшая специализация может породить компиляторы для таких приложений, как обработка изображений, обработка речи, обработка радиолокационных сигналов. Во всех этих прикладных областях требуются несколько различающиеся типы операторов обработки сигналов. Вне прикладной области обработки сигналов возможно построение нескольких типов кремниевых компиляторов. Например, для тактируемых счетных схем можно построить очень простой компилятор. Можно было бы автоматически генерировать такие интегральные схемы, как универсальные асинхронные приемопередатчики, реле времени, контроллеры частоты, генераторы частот. Эти типы схем являются первоочередными кандидатами на реализацию в СБИС [75], поэтому генерирующий их кремниевый компилятор может оказаться полезным. Еще одна область, в которой можно было бы использовать специализированный кремниевый компилятор, — это разработка микропроцессоров. Обещающим началом является компилятор MacPitts [5, 6]; его можно рассматривать как специализированный кремниевый компилятор для микропроцессоров. Современные исследования в области генерации высококачественных трактов обработки данных и контроллеров необходимо объединить с разработкой трансляторов описаний высокого уровня, аналогичных компилятору MacPitts. Можно было бы построить компилятор для аналоговых схем, который позволил бы неопытному разработчику создавать аналоговые подсистемы, объединяя друг с другом операционные усилители, датчики, цифро-аналоговые и аналого-цифровые преобразователи. Любой из этих видов специализированных кремниевых компиляторов мог бы значительно облегчить проектирование кристаллов СБИС, так что связанные с их разработкой исследования без сомнения приносят пользу. Для некоторых видов специализированных компиляторов могут потребоваться правила конструирования, по форме отличающиеся от атрибутных контекстно-свободных грамматик, рассматривавшихся в этой главе. Необходимо определить и изучить другие методы спецификации преобразования поведенческих описаний в топологии. В них необходимо сохранить преимущества рассмотренного здесь метода — модульность и постижимость. Программируемые топологии для распознавания языков также заслуживают дальнейших исследований. Остаются открытыми многие проблемы, связанные с топологией шин с разрывами. Например, не известны эффективные алгоритмы для топологий шин с разрывами, в которых ребро может
проходить через конечное число разрывов в канале. Не известны также аналогичные структуры, позволяющие проводить каждое ребро через постоянное число переключателей и не требовать, чтобы узлы были коллинеарными. Если такие структуры будут найдены, то они смогут значительно уменьшить площадь кристаллов при использовании мягкопрограммируемых топологий. При решении указанных проблем мягкопрограммируемая топология станет сама по себе полезным изделием. Можно сконструировать программируемые ячейки и каналы для использования в таких специфических приложениях, как контроль работы аппаратуры. Мягкопрограммируемые кристаллы этого типа могли бы при известных обстоятельствах взять на себя многие функции, для которых в настоящее время используется заказная аппаратура. Даже с учетом будущих исследований в области специализированных кремниевых компиляторов они не смогут решить все проблемы разработки СБИС. Одна такая проблема заключается в том, что специализированные компиляторы являются большими сложными программными системами. Специализированные компиляторы применимы только в таких прикладных областях, в которых требуется разработка большого количества разнообразных кристаллов, так что время проектирования компилятора можно компенсировать при разработке большого числа кристаллов. Если нужно разработать один или два кристалла, то целесообразно использовать более универсальные средства, даже если время проектирования кристаллов будет больше. Вторая проблема заключается в том, что во многих приложениях эффективность кристалла не является превалирующей характеристикой. Для таких прикладных областей в качестве средствпроектирования, возможно, лучше выбрать более универсальные кремниевые компиляторы или полузаказные топологии. Специализированные кремниевые компиляторы приемлемы только в таких прикладных областях, в которых необходимо быстро спроектировать много эффективных заказных кристаллов. Третьей проблемой все еще является интеграция систем. Специализированные кремниевые компиляторы могут генерировать эффективные компоненты некоторой системы, но для связи этих компонентов требуются другие средства. Следовательно, для построения законченных систем специализированные кремниевые компиляторы необходимо использовать совместно с другими средствами проектирования. Несмотря на эти недостатки, специализированные кремниевые компиляторы могут стать полезным средством про-
ектирования. Используя специальные характеристики конкретных прикладных областей, эти компиляторы могут вырабатывать эффективные автоматически спроектированные кристаллы. Снижение сложности задачи проектирования и увеличение эффективности, обеспечиваемые кремниевыми компиляторами, помогут реализовать потенциал заказных СБИС.
Литература 1. Foster М. J. PhD. thesis, Carnegie-Mellon Univ., Pittsburg, P e n n s y l v a nia, 1984. 2 . Foster M. J. Syntax Directed Verification of Circuit Function, V L S I S y s t e m s and Computations, Computer Science Press, Rockville, MD, 1981. 3. Feldman S. I. Proc. IEEE Int. Conf. Comput. Des., October, 1983, 652— 655. 4. Kowalski T. J., Thomas D. E. Proc. Des. Autom. Conf. 20th, IEEE, June, 1983. 5. Siskind J. M„ Southard J. R., Crouch K. W. Proc. Conf. Adv. Res. V L S I M.I.T., January, 1982, 28—40. 6. Southard J. R. Computer, 16, No. 12, 74—82, 1983. 7. Werner J. VLSI Des., 3, No. 5, 46—55, 1982. 8. Johannsen D. Proc. Caltech Conf. VLSI, January, 1979, 303—310. 9. Beke H„ Sansen W. Des. Autom. Conf., I E E E 16th, June, 1979. 10 Dome R. L., Sprozynski G. Computer, 16, No. 12, 18—25, 1983. 11. Roller K. W„ Lauther U. Des. Autom. Conf., IEEE 14th, June, 1977. 12 Per sky G„ Deutch D. N„ Schweikert D. J. J. Des. Autom. Fault-Tolerant Comput., 1, No. 3, 217—255, 1977. 13. Hardage K. Lambda, 1, No. 3, 32—39, 1980. 14. Wolf W„ Newkirk J., Mathews R., Dutton R. Proceedings of the Third CalTech Conference on Very Large Scale Integration, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, M.D., 1983, 379— 393 15. Lopez A. D„ Law H.-F. S. IEEE J. Solid-State Circuits, SC-15, No. 4, 736—740, 1980. 16. Weinberger A. IEEE J. Solid-State Circuits, SC-2, 1967. 17 Karlin A. R. Trickey H. W., LJllman J. D. Proc. Int. Conf. Comput. Des. IEEE, 1983, 656—665. 18. Philipson L. Частное сообщение, 1982. 19. Fox J. R. VLSI Des., 4, No. 3, 30—37, 1983. 2 0 Lyon R. F. V L S I 81, ed. Gray J. P., Univ. of Edinburgh, Edinburgh, 1981. 131—140. 21. Denyer P. В., Myers D. J. V L S I 81, ed. Gray J. P., Univ. of Edinburgh, Edinburgh, 1981, 151—160. 22. Bergmann N. Proceedings of the Third Caltech Conference on Very Large Scale Integration, Pasadena, California, ed. Bryant R., Computer Science Press, Rockville, MD, 1983. 413—430. 2 3 . Crochiere R. E., Oppenheim A. V. Proc. IEEE, 63, No. 4, 581—595, 1975 2 4 . Savage J. E. Tech. Rep. CS-82-24, Brown Univ., Providence, Rhode Island, 1982. 2 5 . Anceau F. Proceedings of the Third Caltech Conference on Very Large Scale Integration, Pasadena, California, ed. Bryant R., 1983, 15—32.
26. Hitchcock С. У., Thomas D. Е. Proc. Des. Autom Conf. IEEE, 20th; (June, 1983). 27. Hopcroft J. E., Ullman J. D. Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, Reading, Massachusetts, 1979. 28. Arto Salomaa. Jewels of Formal L a n g u a g e Theory, Computer Science Press, Rockville, Maryland, 1981. 29. Kleene S. C. Automata Studies, ed. Shannon C., Prinston Univ. Press, Princeton, N e w Jersey, 1956, Ch. 1, 3—41. 30. Lesk M. E., Schmidt E. U N I X Programmer's Manual: Supplementary Documents, Univ. of California, Ch. 14. 31. Floyd R. W„ Ullman J. D. J. ACM, 29, No 3, 1982, 603—622. 32. Ullman J. D. Tech. Rep. CS-82-927, Stanford Univ., Stanford, California, 1982. 33. Haskin Roger Lee. PhD thesis, University of Illinois, Urbana-Champaign, 1980. 34. Jarvis J. V. Int. Joint Conf. Pattern Recogn., IEEE, 3rd, 1976. 35. Holzmann G. J. Comput. Sci. Tech. Rep. 93, Bell Laboratories, 1981. 36. Lowerre B. PhD. Thesis, Carnegie-Mellon Univ. Pittsburgh, Pennsilvania, 1976. 37. Campbell R. H., Habermann A. N. Lecture Notes in Computer Science, eds. Goos G., Harmanis J., Springer-Verlag, N e w York, 1974, 89—102. 38. Anantharaman T. S., Clarke E. M., Foster M. J., Mishra B. Proc. Symp. Princ. Progr. Lang. 12th, ACM, January, 1985. Также опубликовано в Distrib. Comput. 39. Bisiani R., Annaratone M., Foster M. J. Int. Symp. V L S I Tech. Syst. Appl., March, 1983, 211—220. 40. Bruegge В., Hibbard P. Proc. ACM S I G S O F T / S I G P L A N Software Eng. Symp. High-Level D e b u g g i n g , March, 1983, 34—44. Также опубликовано в S I G P L A N Not., August, 1983. 41. Culik K-, Jurgensen H. Int. J. С о т р . Math., 14, 259—275, 1983. См. т а к ж е Tech. Rep. CS-82-84, Comput. Sci. Depart., Univ. of Waterloo. 42. Culik K.. Salomaa A., Wood D. Tech. Rep. CS-81-32, Faculty of Math., Univ. of Waterloo, 1981. 43. Foster M. J., Kung H. T. Computer, 13, No 1, 26—40, 1980. Работа перепечатана также в Digital MOS Integrated Circuits, ed. Elmasry M. I., IEEE Press Selected Reprint Series, 1981, 204—217. Предварительная версия работы имеется также в D e s i g n of Special-Purpose V L S I Chips: Example and Opinions, Proc. Int. Symp. Comput. Archit. 7th, May, 1980, 300—307. 44. Kung H. Т., Leiserson С. E. Sparse Matrix Proceedings 1978, eds. Stewart G. F„ Duff I. S„ SIAM, 1979, 256—282. Introduction to V L S I Systems, eds. Mead A., Convay L. A., Addison-Wesley, Readings, Massachusetts, 1980, Sec. 83. 45. Kung H. T. Comput. Mag., 15, No. 1, 1982, 37—46. 46. Mead C. A., Pashley R. D., Britton L. D., Daimon Y. Т., Sando S. F„ IEEE J. Solid State Circuits, SC-11, No. 5, 692—695, 1976. 47. Mukhopadhyay A. IEEE Trans. Comput., C-28, No. 6, 384—394, 1979. 48. Foster M. ]., Kung H. T. J. Digital Syst., 6, No. 4, 323—332, 1982. Предварительную версию см. в VLSI 81 Proc., ed. Gray J. P., 1981. 49. Mead C. A., Conway L. A. Introduction to V L S I Systems, Addison-Wesley, Reading, Massachusetts, 1980. 50. Backhouse R. C. Tech. Rep. CSM-53, Univ. of Essex, 1983. 51. Aho A. V. Formal L a n g u a g e Theory: Perspectives and Open Problems, ed. Book R. V., Academic Press, N e w York, 1980, 325—348. 52. Steele G. L. Частное сообщение, 1984. 53. Muller D. Частное сообщение, 1983.
54. Hunt Н. В. Tech. Rep. TR 73-156, Depart, of Comput. Sci., Cornell Univ., Uthaca, N e w York, 1973. 55. Kohavi Zwl. Switching and Finite Automata Theory, McGraw-Hill, N e w York, 1970. 56. Trickey H. W. IEEE Trans. Comput., C-31, No. 6, 514—520, 1982. 57. Chu К. H„ Fu K. S. Tech. Rep. TR-EE 81—42, Purdue Univ., Lafayette, Indiana, 1981. 58. Valiant L. G. IEEE Trans. Comput., C-30, No. 2, 135—140, 1981. 59. Leiserson С. E. PhD. thesis, Carnegie-Mellon Univ., Pittsburgh, Pennsylvania, 1981. 60. Bhatt S. N„ Leiserson С. E. Proc. Ann. ACM Symp. Theory Comput. 14th, 1982, 77—84. 61. Rosenberg A. L. IEEE Trans. Comput., C-32, No. 10, 902—910, 1983. 62. Chung F. R. K.. Leighton F. Т., Rosenberg A. L. Tech. Rep. CS-1983-5, Depart, of Comput. Sci., Duke Univ., Durham, North Carolina, 1983. 63. Brent R. P., Kung H. T. Inform. Process. Lett., 11, No. 1, 1980, 46—48. 64. Budzinski R., Linn J., Thatte S. Proceedings of the Second Caltech Conference on Very Large Scale Integration, ed. Seitz C. L., Caltech, P a s a dena, California, 1981, 481—508. 65. Dowell R., Newton A. R„ Pederson D. O. S P I C E VAX User's Guide, Univ. of California, Berkley, 1979. 66. Yannakakis M. Proc. Ann. Symp. Found. Comput. Sci. 24th IEEE, 1983, 274—281. 67. Kuhn H. W. Nav. Res. Log. Q, 2, No. 1, 2, 83—97, 1955. 68. Garey M. R., Graham R. L., Johnson D. S., Knuth D. E. SIAM J. Appl. Math., 34, 477—495, 1978. 69. Saxe J. B. Tech. Rep. CS-80-102, Comput. Sci. Depart., Carnegie-Mellon Univ., Pittsburgh, Pennsylvania, 1980. 70. Cohen D., Lewicki G. Proceedings of the Second Caltech Conference on VLSI, ed. Seitz C. L., Caltech, Pasadena, California, 1981. 71. Kuhn L„ Schuster S. E„ Zory P. S„ Lynch G. W„ Parrish J. T. IEEE J. Solid-State Circuits, SC-10, No. 4, 219—228, 1975. 72. North J. C„ Weick W. W. IEEE J. Solid-State Circuits, S C - U , No. 4, 500—505, 1976. 73 Smith R. Т., Chipala J. D„ Bindels J. F. M„ Nelson R. G„ Fischer F. Т., Mantz T. F. IEEE J. Solid-State Circuits, SC-16, No. 5, 506—513, 1981. 74 Syphard A. D., Salman N. D. Proceedings of the National Electronics Conference, ed. Thurston M. O , v. XXIV, Illinois Inst, of Tech., 1968, 206—209. 75. Conway L., Bell A., Newell M., Lyon R., Paskco R., Filed on Parc-Marxc C o n w a y MPC79imp. doc., 1980.
Предметный указатель
Алгоритм иерархического деления 216 -Аппаратно-реализованное управление 27 .Арифметико-логическое устройство (АЛУ) 167 Архитектура 161 — регистровая 80 — стековая 80 •Бездефектность 10 Быстродействие 11, 176 Восходящая адресация 70 Генерация модулей 155 — топологии 168, 215 Гибкость проектирования 11 Глубина конвейера 23 Групповая пересылка 77
Переполнение 73 Принцип четности 133 Программируемая логическая матрица (ПЛМ) 29, 155 — матрица распознавателей 223 — топология 222 Программируемые каналы 228 — ячейки 225 Проектирование логическое 11 — физическое 12 — электрическое 12 Профиль выполнения 59 Процессоры однокристальные 10 Расширение набора выражений 204 Регистровый блок 64, 66, 67—68 Режим адресации 83 Реструктуризируемые топологии 217, 223 RISC-архитектура 21, 56
Двураздельное преобразование 132 Иерархия памяти 66 Имитатор ошибок 120 Коллинеарные топологии 218, 223 Компоновочные блоки 186 Конвейеризация 23 Кремниевый компилятор 155, 182 специализирванный 183 Кэш-память 66, 67—68 Локальность процедур 71
глубины
вложенности
Микропрограммирование 27 Моделирование 157 Назначенный блок 232 Неисправность закорачивающая 245 — мостиковая 245 Описание алгоритмическое 160 — логическое 161 — поведенческое 160 Оптимизация 171 Основная память 66, 67
Самотестируемость 170 Сжатие данных 129 Систолические матрицы 164 Систолический распознаватель 191 Скаляр глобальный 83 — локальный 83 Спецификация архитектуры 11 Такт 190 Тестирование 170 — верификационное 111 — логическое 113 — эксплуатационное 113 — электронно-лучевое 149 Точка пересечения 228 — разрыва 228 Указатель текущего окна 72 Эффективность конвейера 26 Языки высокого уровня 158—159 — описания аппаратуры 159 Ячейка оператора Клини 198, 199, 226
Оглавление
От редактора перевода Предисловие
Глава 1, Методология проектирования СБИС Дж. Л. Хеннесси и С. Э. Пшибилски
5 8
процессорных 10
I. Введение II. Методология организационного проектирования III. Методология архитектурного проектирования IV. Методология физического проектирования V. Проблемы электрического проектирования VI. Заключение Литература
10 14 21 32 45 52 53
Глава 2. RISC: Эффективные архитектуры для СБИСкомпьютеров М. Г. X. Катеневис, К. X. Секуин, Д. Э. Паттерсон и Р. У. Шербурн-мл
55
I. Введение II. Вычисления общего характера на машинах с фон-неймановской архитектурой III. Быстрый доступ к операндам IV. Наборы команд, ориентированные на регистровую архитектуру V. Микроархитектура процессора RISC II VI. СБИС, реализующие RISC-архитектуры VII. Оценка характеристик RISC-архитектуры VIII. Заключение Литература
79 88 97 101 107 108
Глава 3. Проектирование СБИС с учетом тестируемости Дж. У. Ганнет
ill
I. Проблема тестирования С Б И С — общие сведения II. Методы проектирования с учетом тестируемости III. Методы самотестирования IV. Заключение Литература
.
.
.
.
55 58 65
111 123 140 148 150
Глава 4. Кремниевые компиляторы для СБИС А. Домич
15»
I. Введение II. Что такое кремниевый компилятор? III. Функционирование кремниевого компилятора IV. Составляющие кремниевого компилятора . . V. Направления дальнейшего развития VI. Литература по кремниевым компиляторам VII. Выводы Литература
153 154 156 158 170 177 178 17<>
.
.
.
.
.
Глава 5. Специализированный кремниевый компилятор и программируемый кристалл для распознавания языка М. Дж. Фостер I. Введение II. Специализированный компилятор схем для языков III. Топология систолических распознавателей IV. Выводы и перспективы Литература Предметный указатель . . . .
распознавателей
.
.
Научное издание ЭЛЕКТРОНИКА СБИС Проектирование микроструктур Под редакцией Нормана Айнспрука Заведующий редакцией Ю. А. Кузьмин Ст. научный редактор М. Я. Рутковская Художник А. И. Захаров Художественный редактор В. И. Шаповалов Технический редактор О. Г. Лапко Корректор H. А. Гиря ИБ № 6S13 Сдано в набор 30.11.88. Подписано к печати 17.02.89. Формат 60X90Vis. Бумага тип. № 1. Печать высокая. Гарнитура Литературная. Объем 8,00 бум. л. Усл. печ. л. 16,00. Усл. кр.-отт. 16,00. Уч.-изд. л. 15,81. Изд. № 8/6200. Тираж 14 500 экз. Зак. 708. Цена 1 р. 70 к. Издательство «МИР» В/О «Совэкспорткнига» Государственного комитета СССР по делам издательств, полиграфии и книжной торговли. 129820, ГСП, Москва, И-110, 1-й Рижский пер., 2. Московская типография № 11 Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и книжной торговли. 113105, Москва, Нагатинская ул., д. 1.