Операционное устройство для процессора с ассоциативной матрицей однородной структуры
Изобретение относится к матричному процессору с однородной структурой или к структуре матрицы ассоциативной обработки с переменной длиной слова, управляемой битами конфигурации, содержащимися в отдельных ассоциативных ячейках. При этом достигается улучшение гибкости применения ассоциативной матрицы благодаря тому, что длина слова может быть произвольно расширена, желаемые функции могут произвольно выполняться внутри матрицы, например, функции пропуска или запрета. Кроме того, исключается необходимость во внешней маске для определенных ячеек, которые должны работать определенным образом. 1 з.п. ф-лы, 25 ил., 7 табл.
Изобретение относится к матричному процессору с однородной структурой или к ассоциативной обработке, а более конкретно к структуре матрицы ассоциативной обработки с переменной длиной слова, управляемой битами конфигурации, содержащимися в отдельных ассоциативных ячейках. Биты конфигурации могут обозначать, например, старший значащий и младший значащий бит в слове.
Битами конфигурации могут обозначаться и другие функции в слове, такие, как запирание или пропуск. Кроме того, любая ассоциативная ячейка в матрице может быть исключена из слова. Матрица содержит также расширенный набор команд, включающих булевское умножение, деление, а также все комбинации одинарной и двоичной точности, сдвига или поворота, левосторонних или правосторонних операций. Матрица ассоциативной обработки по данному изобретению дает особые преимущества при реализации его с использованием больших интегральных схем (БИС) или очень больших интегральных схем (ОБИС), которые позволяют повысить степень универсальности системы без увеличения количества схем и штыревых соединений. Ассоциативные процессоры с изменяемой с помощью битов конфигурации длиной слова, с возможностью исключения битов и выполнения арифметических операций и сдвига могут быть использованы не только в ассоциативных ЭВМ, но и в системах, к которым предъявляются требования отказоустойчивости, быстродействия и приспосабливаемости к различным вычислениям. К таким системам могут быть отнесены, например, конструкторские рабочие станции, системы управления базами данных, топологические анализаторы, графические дисплеи, системы распознавания речи, системы улучшения изображения, элементы радиолокационных систем, такие, как сфазированные решетки, синтетические апертуры, устройства слежения и анализа эхосигналов, системы обработки текста, телекоммуникационные системы, а также системы цифровой фильтрации. Ассоциативные процессоры можно рассматривать как матрицы из однобитовых процессоров, в которых каждая отдельная ячейка имеет доступ только к соседней ячейке. Доступ в ассоциативные процессоры осуществляется с помощью взаимно параллельных потоков данных, а память таких процессоров адресуется по содержанию и структуре данных на основе признаков. Если обычный процессор в каждый момент времени оперирует одним элементом данных, то ассоциативный процессор работает со множеством объектов данных одновременно. С этой точки зрения полезно, чтобы объекты данных для каждой отдельной команды были однотипны, с тем чтобы имело смысл использовать один и тот же поток последовательных команд для одновременных операций над этими объектами данных. Процессор такого класса известен под названием SIMD "Одна команда много потоков данных". Такой ассоциативный процессор может состоять из прямоугольной матрицы из реализованных на БИС однобитовых компьютеров, каждый из которых может иметь память объемом от 2 К до 64 К бит. Эти компьютеры, представляющие собой ячейки однородной структуры, одновременно подчиняются одной команде, однако каждый оперирует своими данными. Эти ячейки могут связываться со своими соседями по всем четырем направлениям, а также с входными и выходными регистрами внешних данных. Ячейки в строке матрицы ассоциативного процессора могут быть динамически (от одной команды до другой) организованы в произвольное число полей произвольной длины (ограниченной шириной матрицы). После этого каждое поле работает самостоятельно как отдельный компьютер с данной длиной слова, который может выполнять арифметические и логические операции. Эти поля могут либо одновременно подчиняться одной и той же команде, либо быть селективно заперты по программе. В итоге набор компьютеров с произвольной длиной слова, которые оказываются включенными, выполняют одновременно одинаковые арифметические или логические операции над различными данными. Такой набор компьютеров может быть использован для решения задач, требующих использования матричной арифметики, алгебры, векторных расчетов, обработки изображения, задач поиска и распознавания образа и распознавания речи. Арифметические операции заданной точности при этом могут выполняться как с фиксированной, так и с плавающей запятой. Пропускная способность такого набора процессоров зависит от размера матрицы, длины и количества полей и соотношения матрицы, используемой для конкретной операции. Например, матрица из 128



Биты "перенос", "отрицательный", "нулевой" и "переполнение" составляют регистр состояния. Входами к каждому биту является шина ALU D, которая используется при выборе бита адресом считывания/записи и другими источниками, выбранными командой PLA. Запись в эти ячейки управляется отдельно от записи в ячейки, выбираемые адресом считывания/записи. Такое независимое управление осуществляется по линиям отпирания памяти. Входами к битам регистра состояния для арифметической и логической команд являются: бит переноса вывод ALU, отрицательный бит ALUD BUS, нулевой бит мультиплексор состояния влево/вправо, бит переполнение переполнение ALU. Бит "нулевой", фактически бит "ненулевой" называется также триггером состояния и используется всеми зависящими от данных командами, такими, как уплотнение и деление и, следовательно, его значения изменяются от команды и команде. Триггер нуля является инвертированным, поскольку арифметическая и логическая команды являются действительными, когда результат является ненулевым. 3.2.4. Стойкое переполнение (Sticky Over flow). Бит стойкого переполнения управляется отдельно от регистра состояния. Он реализует логическую операцию ИЛИ между собой и переполнением ALU и может быть использован для текущей проверки наличия или отсутствия состояния ошибки. Обычно загружается, когда действительным становится младший значений бит слова, например, последний цикл последовательности умножения. 3.2.5. Шина и линия
Четыре регистра, а именно: регистры горизонтальной шины, вертикальной шины, линии вверх и линии вниз обеспечивают вход и выход ячейки. Каждый регистр может загружаться от шины или линии, имеющей такое же название, и наоборот, каждая шина или линия может непосредственно управляться от одноименного регистра. Кроме того, эти регистры обеспечивают выполнение трехадресных операций, а именно A PLUS B__

Маска восстановления импеданса используется пятью арифметическими линиями для сведения к минимуму времени распределения сигналов в чипе. Эта маска не имеет специальных входов и должна обеспечить уменьшение выдержки в чипе на 50 Использование маски восстановления импеданса в линии переноса описано в ранее поданной заявке Мортона N 452592 от 23 декабря 1982 г. 3.2.7. Горизонтальная маска ALUP
Три горизонтальных маски ALUP организуют ячейки в слова. См. "Типы слоев". 3.2.8. Вертикальные маски ALUP
Три вертикальные маски ALUP управляют потоком информации по линиям вверх и вниз. Маски 0 и 1 дешифрируются для управления информацией, подводимой к строке, а маска 2 выбирает данные, которые выводятся из строки (см. табл. 2). Если вертикальная маска 2 действительна, то выход ALU может стать выходом из строки, а использование команды прямого ввода позволяет этому выходу стать входом ALU следующей строки. Эти операции являются многострочными или "бортовыми". Таким образом, множество строк может оперировать данными, накопленными поперек строк. Таким образом, сумма данных от всех строк может быть вычислена в одном цикле. Кроме того, данные могут перемещаться вверх и вниз в соответствии с выбором, который осуществляется сигналами выбора ввода/вывода. 3.3. Арифметический и логический блок
Арифметический и логический блок (ALU) выполняет семь арифметических, семь логических и две постоянные функции. Эти функции отражены в табл. 3 и в первых семи командах в табл. 4. Эти функции явно выполняются логическими командами и некоторыми из арифметических команд и неявно выполняются другими командами. 3.4. Горизонтальные линии данных
Между соседними ячейками имеется пять основных горизонтальных линий данных. Эти линии, а именно ALU, "перенос", MQ "цикл" и "состояние" поддерживают арифметические операции. Эти линии являются существенными для работы чипа и обеспечивают возможность реализации произвольной длины слова, перекрытия диапазона от множества слов в одном чипе до множества чипов на одно слово. Эти линии выводятся из чипа из каждой строки с левой стороны самого левого столбца и с правой стороны крайнего правого столбца, четыре из этих линий, а именно ALU, MQ, "цикл" и "состояние" являются двунаправленными, а их работа зависит от поперечных горизонтальных мультиплексоров. Линия переноса является однонаправленной и описана в патентной заявке Мортона "Восстановление импеданса для распределения быстрого переноса". Основной проблемой обеспечения произвольной длины слова является проблема связи противоположных концов слова между собой. В обычных ЭВМ с фиксированной длиной слова младший значащий слой связан со старшим значением слоев одним проводом. Это соединение используется для операций с одиночным словом, таких, как поворот, и операций со сдвоенным словом, таких, как умножение и деление. Один 16-ти битовый чип ассоциативного процесса может потребовать сотен проводов, если каждый возможный старший значащий слой непосредственно связывать с каждым возможным младшим значащим слоем. Произвольной является не только длина слова, но и положение слова в последовательности ячеек. Проблема осложняется также тем, что необходимо обеспечить возможность соединения произвольного количества чипов ассоциативного процесса в матрицу различных размеров. Число возможных соединений при этом оказывается очень большим. 3.4.1. Поперечный горизонтальный мультиплексор
Поперечный горизонтальный мультиплексор перемещает бит из ячейки к ее левому или правому соседу или перемещает бит от левого или правого соседа к другому соседу, обходя ячейку. Таким образом, последовательность ячеек может быть произвольно разделена в слова путем выбора некоторых мультиплексоров для связи битов в группы, образующие собственно слова, а мультиплексоров в других ячейках для формирования граничных битов, т.е. в младшем и старшем значащих слоях, разделяющих слова. Команда PLA использует горизонтальные маски ALUP, которые идентифицируют типы слоев, а также коды команды для надлежащего управления различными горизонтальными мультиплексорами. Поперечные горизонтальные мультиплексоры в основном реализуются в виде интегральных схем с МОП-транзисторами и ДМОП-транзисторами. Настоящее изобретение направлено на использование таких устройств в матрице. При этом облегчается связь между тремя соседними устройствами (см. фиг. 12). Сигнал "влево" от поперечного горизонтального мультиплексора, расположенного в середине, т. е. ячейки М, проходит к контакту "вправо" ячейки М+1, а сигнал "вправо" от ячейки М проходит к контакту "влево" ячейки М-1. На фиг. 13 показаны потоки данных, которые могут иметь место при наличии поперечного горизонтального мультиплексора. Каждый мультиплексор имеет четыре сигнальных узла, из каждого из которых выходит однобитовая линия, а также управляющие коды. Имеется однонаправленный вход данных и однонаправленный выход данных. Линия сигнала "влево" к контакту "вправо" левого соседа, как и линия сигнала "вправо" к контакту "влево" правого соседа, являются двунаправленными. Управляющие входы позволяют выбрать пять потоков данных:
1. от ячейки M к ячейке M+1 линия 1A связывает вход данных с контактом "влево", а линия 2B связывает контакт "вправо" с выходом данных;
2. от ячейки M к ячейке M+1 линия 2A связывает вход данных с контактом "вправо", а линия 2B связывает контакт "влево" с выходом данных;
3. от ячейки М-1 к ячейкам М+1 линия 3 обеспечивает однонаправленное соединение от контакта "вправо" к контакту "влево", а линия 1B обеспечивает соединение контакта "вправо" с выходом данных;
4. от ячейки М+1 к ячейке М-1 линия 4 обеспечивает однонаправленное соединение контакта "влево" с контактом "вправо", а линия 2B обеспечивает соединение контакта "влево" с выходом данных;
5. между ячейками М+1 и М-1 линия 5 обеспечивает двунаправленное соединение между контактами "влево" и "вправо". Преимущество поперечного горизонтального мультиплексора состоит в том, что он позволяет строить упорядоченные структуры, обеспечивающие произвольную длину слова, используя связи данных только между соседними ячейками. Кроме того, находящиеся в ячейке данные могут не использоваться в операции, а количество соединений между ячейками сводится к минимуму без обращения к мультиплексированию соединений с разделением времени. Поперечный горизонтальный мультиплексор состоит из трех двухвходовых мультиплексоров, двух буферов, имеющих три состояния, и двунаправленного вентиля передачи. Мультиплексор М3 называется "Мультиплексор влево/вправо", поскольку он осуществляет выбор между сигналами влево и вправо. Требуется лишь по одному соединению с левым и правым соседями (см. фиг.14). Существуют пять управляющих сигналов: "обход", "выбор влево/вправо", "выбор выхода", "стрелка влево" и "стрелка вправо". Логика, показанная на фиг. 15, позволяет использовать только три управляющих сигнала, а сигналы "стрелка влево", "стрелка вправо" и "выбор выхода" вырабатываются из сигнала направления. Использование такой логики предполагалось и выше и обеспечивает протекание входных данных либо вправо, либо влево, но не в оба направления одновременно, а входные данные выходят из входных данных справа и слева, но не из выходных. Далее используется следующее определение:
1. вентиль передачи вход и выход взаимозаменяемы, между входом и выходом имеет место большой импеданс, если сигнал на линии управления соответствует логическому нулю, и малый импеданс, если сигнал на линии управления соответствует логической единице;
2. буфер выход повторяет вход, малый импеданс по отношению к линии питания или земле имеет место, когда сигнал на линии управления соответствует логической единице, и высокий выходной импеданс, если сигнал на линии управления соответствует логическому нулю;
3. двухвходовый мультиплексор выход Y повторяет вход "0", если сигнал на линии выбора соответствует логическому нулю; выход повторяет вход "1", если сигнал на линии выбора соответствует логической единице. Далее приводится подробное описание работы поперечного горизонтального мультиплексора. 1. Данные проходят от входа данных к выходу влево: сигнал "обход" на Т1 соответствует логическому нулю. "Выбор влево/ вправо" устанавливается соответствующим логическому нулю для "выбора ввода данных", "стрела влево" устанавливается на логическую единицу, так что контакт "влево" принимает выбранные данные от М1, а "стрела вправо" устанавливается на логический нуль, так что данные могут входить справа. Выбор выхода устанавливается на логическую единицу, так что данные на контакте "вправо" посылаются к выходу данных на М3. 2. Данные проходят от ввода данных к контакту "вправо": то же самое, что в случае 1, за исключением того, что "стрелка вправо" соответствует логической единице, а "стрелка влево" и выбор выхода логическому нулю. 3. Данные проходят от контакта "вправо" к контакту "влево": "обход" устанавливается на логический нуль, а ввод данных не используется. "Выбор влево/вправо" устанавливается на логическую единицу, так что данные от контакта "влево" проходят к выходу М2. "Стрелка вправо" устанавливается на логическую единицу, так что выход М2 проходит через В2 к контакту "вправо". Стрелка "влево" устанавливается на логический нуль, как и "выбор выхода", так что управляющий вход проходит через М3 к выходу данных. 4. Данные проходят от контакта "влево" к контакту "вправо" то же, что и в случае 3, за исключением того, что "стрелка вправо" и "выбор выхода" соответствуют логической единице, а "стрелка" вправо" логическому нулю. 5. Данные проходят между левой и правой ячейками: сигналы "выбор входа", "выбор выхода" и "выбор приема" не используются. "Стрелка влево" и "стрелка вправо" устанавливаются на логический нуль. "Обход" устанавливается на единицу, так что между контактом "влево" и контактом "вправо" устанавливается двунаправленное соединение со сравнительно малым импедансом. Это состояние используется при отказе ячейки, поскольку для протекания данных через ячейку требуется минимальное количество работающей логики. Другим признаком изобретения является то, что оно позволяет динамически создавать линии с минимальной задержкой распространения. Отметим, что сигнал должен пройти через набор поперечных горизонтальных мультиплексоров, чтобы пройти от одного конца слова к другому, как в команде левого или правого состояния. Существуют два пути сигнала через ячейку, через мультиплексор и буфер (М1 и В1 или М2 и В2 на фиг.14) или через вентиль передачи (Т1 на фиг. 14). Трудность состоит в том, что даже в активном состоянии вентиль передачи имеет сравнительно большой импеданс. Поскольку количество мультиплексоров, через которые проходят данные, увеличивается, то работа схемы замедляется из-за наличия распределенной емкости и увеличения импеданса цепочки вентилей передачи. На фиг. 16А показана схема вентиля передачи на ДМОП-транзисторе. Вентиль передачи состоит из двух последовательных транзисторов, одного p-канального, а другого n-канального. Если в линии управления имеет место высокий уровень, то в зависимости от состояния входного сигнала проводит либо один, либо другой транзистор, представляющие сравнительно низкий импеданс между входом и выходом. При этом вентиль считается активным. Если на линии управления имеет место низкий уровень, то ни один из транзисторов не проводит, и вход отключен от выхода. На фиг. 16В показана эквивалентная схема вентиля передачи с сосредоточенными постоянными. Для активного вентиля минимальных размеров в соответствии с правилом конструирования 4 и при рабочем напряжении схемы 5 B C0 + C1 0,5 n ф, R 1, к Ом. На фиг. 17 показан набор последовательно соединенных эквивалентных схем с сосредоточенными постоянными, образующих длинную цепочку. Активное сопротивление, через которое заряжается емкость C, связанная с узлом 1, равно R плюс S, где S сопротивление источника. Подобно этому активное сопротивление, через которое заряжается емкость C, связанная с узлом 4, составляет 4R плюс S и т.д. Таким образом, быстродействие схемы ухудшается с увеличением последовательно соединенных вентилей передачи. Если каждый вентиль передачи заменить буфером, то управление каждым узлом будет осуществляться через одинаковое сопротивление. Однако задержка сигнала при прохождении через буфер значительно больше, чем через одиночный вентиль передачи. Оптимальное функционирование обеспечивается некоторой комбинацией вентилей передачи и буферов. Задержка при минимальных размерах схем на базе ДМОП-транзисторов, напряжении питания 5 В и минимальной нагрузке составляет примерно:
1. мультиплексор и буфер 10 нс,
2. вентиль передачи (3+N) нс для небольших значений N, где N индекс вентиля в цепочке вентилей. Таким образом, четыре поперечных горизонтальных мультиплексора, соединенных последовательно, создают задержку 40 нс для четырех последовательных буферов, и только 22 нс при последовательном соединении трех вентилей передачи и одного буфера. Таким образом, быстродействие схемы, в которой используется комбинация вентилей передачи и буфером, почти в два раза выше, чем схемы, состоящей только из буферов. Для обеспечения малого импеданса следует использовать буфер, если паразитные задержки не перевешивают выгоды от соединения через вентиль передач. В общем, набор уровней для сигналов "обход", "стрелка влево" и "стрелка вправо" выбирается из соображений минимизации времени распространения. Этот выбор зависит от технологии изготовления схем, характеристик интерфейса между ячейками (которые могут быть на различных чипах) и размера слова. В предыдущем примере предполагалось, что следует задействовать лишь каждый четвертый буфер, оставляя три взаимосвязанных вентиля передачи потенциально активными. Программист устанавливает маску восстановления импеданса на логическую единицу в тех ячейках, где используется буфер, а не вентиль передач. Если команда PLA специфицирует связи от контакта "влево" к контакту "вправо" или наоборот, то маска восстановления импеданса устанавливается на логический нуль, сигнал "обход" устанавливается на логическую единицу, а сигналы "стрелка влево" и "стрелка вправо" на логический нуль. При этом используется вентиль передачи. Подобно этому, если маска восстановления импеданса установлена на логическую единицу, то сигнал "обход" останавливается на логический нуль, задействуется буфер, выбираемый сигналом "стрелка влево" или "стрелка вправо". Подобно этому, если данные в ячейке должны быть исключены из операции, то сигнал "обход" может быть установлен на логическую единицу, а сигналы "стрелка влево" и "стрелка вправо" на логический нуль. 3.4.2. Использование линии
Система с динамической конфигурацией размера слова требует для поддержки большого набора команд лишь пяти горизонтальных линий связи между соседними ячейками. Эти линии используются следующим образом:
"Перенос" транслирует арифметический перенос от выхода переноса ALU влево или перемещает перенос справа налево. ALU перемещает бит из одной ячейки в следующую. Это перемещение может совершаться влево, вправо, справа налево или слева направо. Типовым входом для этой линии является шина C ALU, т.е. выход ALU, и типовым местом назначения является многопортовая память с произвольным доступом. MQ множитель/частное перемещает бит от одной ячейки к следующей. Это перемещение может совершаться влево, вправо, справа налево или слева направо. Типовым входом для этой линии является триггер MQ и типовым местом назначения триггер MQ. "Цикл" перемещает бит из одной ячейки к следующей. Типовым входом этой линии является шина C ALU, т.е. выход ALU, а типовым местом назначения -триггер MQ. С помощью этой линии обычно обеспечивается связь концов при операциях с удвоенным словом. "Состояние" перемещает бит из одной ячейки в другую. Это перемещение может совершаться влево, вправо, справа налево или слева направо. Кроме того, с использованием логики, расположенной вне поперечного горизонтального мультиплексора, могут выполняться операции OR и XOR, благодаря чему проверка нуля или четкости может совершаться на полном слове в ходе одной операции. Типовым входом этой линии является шина D ALU, а типовым местом назначения - регистр состояния. В отличие от других линий, точкой назначения которых обычно является один триггер, линия состояния является широко используемой линией. Команды умножения и деления используют эту линию для передачи одного бита состояния ко всем триггерам состояния в слове, в результате чего координируется работа слова. Использование этих линий в ключевых командах показано на фиг. 18-25. В этих фигурах используются следующие термины: A/S определяется линией выбора последовательного входа; A выход ALU мультиплексора влево/вправо; D шина D ALU; L выход "цикл" мультиплексора влево/вправо; M выход MQ мультиплексора влево-вправо; S выход "состояние" мультиплексора влево/вправо; MPR - многопортовая память с произвольным доступом; MUX мультиплексор; THMUX - поперечный горизонтальный мультиплексор; MULMSB старший значащий бит множителя. На фиг. 18 показано использование линии в команде ADD. Линия переноса перемещает выход переноса ALU каждого слоя, за исключением MSS, к следующему слою влево. Линия состояния с логическими схемами ИЛИ, расположенными вне поперечных горизонтальных мультиплексоров, обеспечивает выполнение операции ИЛИ над каждым битом суммы, справа налево, так что триггер "нуль/состояние" в MSS имеет нулевой логический уровень только в том случае, если все биты суммы имеют нулевые логические уровни. Перенос в LSS выбирается линиями последовательного ввода, которые выбирают из нуля, единицы и других. На фиг. 19 показано использование линий в команде ARITHMETIC/LOGIC SHIFT RIGHT (арифметическо-логический сдвиг вправо). Линия ALU переносит бит шина C ALU каждого слоя, за исключением LSS, на один бит вправо, где он запоминается в многопортовой памяти с произвольным доступом. Линия состояния переносит сдвинутый из LSS бит ко всем триггерам состояния для использования в сдвигах множеств слов. Вход в MSS выбирается линиями выбора последовательного входа, которые выбирают между нулем и шиной G ALU, причем последняя используется для копирования знакового бита в арифметических сдвигах. На фиг. 20 показано использование линий на примере операции пропуска поля. Выполняется команда арифметическо-логического сдвига вправо, однако ячейки в середине слова устанавливаются в неактивное состояние. Данные из третьей ячейки слева проходят в линию ALU, минуя три неактивные ячейки, и запоминаются в третьей ячейке справа. Количество ячеек, находящихся в неактивном состоянии, тип слоя источника и ячейки приема данных, а также направление потока данных являются произвольными. На фиг. 21 показано использование линий на примере операции, в которой используется горизонтальный пропуск. Если при выполнении команды арифметическо-логического сдвига вправо все ячейки, за исключением MSS и LSS, установлены в состояние горизонтального пропуска, бит из MSS проходят по линии ALU ко всем другим ячейкам слова и в них запоминается. На фиг. 22 показано использование линий в команде поворот влево. Адрес считывания выбирает ячейку в многопортовой памяти. Содержимое ячейки в LSS и всех ISS сдвигается на один бит влево через линию AI. Содержимое ячейки MSS входит в линию цикла, которая переносит его к LSS. Сдвинутые данные записываются в ячейку многопортовой памяти, выбранную адресом считывания записи. На фиг. 23 показано использование линий в команде DOUBLE ROTA TE LEFT. Эта операция подобна повороту влево, за исключением того, что сдвигается пара слов. Слово в ячейке многопортовой памяти выбирается адресом считывания и сдвигается на один бит влево через линию ALU, а бит, сдвинутый из MSS, вводится в LSS специальной ячейки многопортовой памяти, в регистр MQ по линии состояния. Регистр MQ сдвигается на один бит влево через линию MQ, а бит, сдвинутый из MSS, вводится в LSS ячейки, выбранной адресом считывания, через линию цикла. На фиг. 24 показано использование линии в команде MULTIPLY INTERMEDIATE. Используемый алгоритм предназначен для суммирования множимого с частичным произведением, если текущий младший значащий бит множителя соответствует логической единице. После этого частичное произведение сдвигается вместе с множителем на один бит вправо. Триггер состояния определяет, следует или нет суммировать множимое с частичным произведением. Линия переноса перемещает выход переноса ALU каждого слоя, за исключением MSS, к следующему слою влево. Линия ALU перемещает каждый бит суммы частичного произведения на один бит вправо, за исключением MSS, который получает старший значащий бит множителя, знаковый бит, который скорректирован на переполнение. Сдвинутая сумма загружается в многопортовую память с произвольным доступом. Линия MQ перемещает каждый бит множителя в триггер MQ на один бит вправо, за исключением MSS. Сдвинутый результат загружается в триггер MQ. Линия цикла перемещает сумму частичного произведения в MSS, минуя остальные слои, к MSS триггера MQ. Триггер состояния в LSS принимает бит множителя, сдвинутый из второго LSS триггера MQ. Линия состояния переносит этот же бит из второго LSS триггера MQ влево ко всем триггерам состояния, кроме LSS. Этот бит состояния используется в следующем цикле. Эта команда выполняется для каждого бита множителя, за исключением последнего бита, если данные представлены в виде второго дополнения. На фиг. 25 показано использование линии для команды DIVIDE INTERMEDIATE. Используется алгоритм деления без восстановления. Операция ALU зависит от триггера состояния, который запоминает результат предыдущего цикла. Линия ALU сдвигает частичный остаток, вначале старшую значащую половину числителя на один бит влево, в то время как линия MQ сдвигает младшую значащую половину числителя, а иногда и частное на один бит влево. Половинки числителя связаны линией цикла. Линия состояния переносит сравнение знака их MSS ко всем слоям памяти в регистр состояния для использования в следующем цикле. Сравнение знака определяет, следует ли прибавлять знаменатель к частичному остатку или вычитать. 3.5 Горизонтальные шины
Горизонтальная шина и шина ИЛИ (ORed BuS) включены параллельно всем ячейкам в строке и выводятся из чипа. Горизонтальная шина является двунаправленной и может загружаться непосредственно в триггер горизонтальной шины в каждой ячейке или может быть использована непосредственно в качестве входа в ALU. Горизонтальная шина может управляться триггером горизонтальной шины выбранной ячейки. В каждой стоке одна ячейка выбирается путем ввода линии вертикальной шины. Работой горизонтальной шины управляют линии функции ввода/вывода и выбора ввода/вывода. Шина ИЛИ, вырабатывающая инвертированный выход, является однонаправленной. Выход этой линии подлежит операции ИЛИ наряду с подобными выходами других чипов в строке, причем операция ИЛИ выполняется логической схемой ИЛИ. Драйвер шины всегда работает. Шиной, представляющей собой внутренний разомкнутый коллектор, управляет одна или более ячеек, если вводится одна или более линий вертикальной шины. Источником данных для этой шины является триггер горизонтальной шины. 3.6 Вертикальные соединения
Между ячейками имеются три вертикальные связи, линия вверх, линия вниз и вертикальная шина. В пределах чипа ассоциативного процессора вертикальная шина включена параллельно всем ячейкам столбца, а линии вверх и вниз соединяют все ячейки столбца последовательно. Работой этих линий управляют сигналы "функция ввода/вывода" и "выбор ввода/вывода". Каждая линия может управляться конкретным битом могопортовой памяти, и каждая линия может непосредственно загружаться в этот бит или может быть непосредственно связано со входом ALU, причем управление осуществляется адресом считывания и адресом считывания/записи. Кроме того, загрузкой битов многопортовой памяти, управляющих этими линиями, управляют отдельно от адресов считывания/записи линии функции ввода/вывода. Существует трехадресный механизм, позволяющий выполнять операцию вида
A OPERATION B__

где C является одним из регистров вертикальной шины, регистром "вверх" и регистром "вниз". Для ускорения попеременного перемещения данных как вверх, так и вниз по линиям "вверх" и "вниз" предусмотрены отдельные регистры, т.е. биты многопортовой памяти. Лишь небольшое количество логики каждой строки чипов предназначено для общего пользования. Двунаправленные буферы предназначены для горизонтальной шины. Выходной буфер горизонтальной шины отпирается, когда линии выбора ввода/вывода и функции ввода/вывода находятся в состоянии разрешения выхода горизонтальной шины, а вертикальная шина введена. Управление входом/выходом в каждый момент вращения может осуществляться только одной ячейкой. Входной буфер горизонтальной шины отпирается, когда линии выбора ввода/вывода и функции ввода/вывода не находятся в состоянии разрешения выхода горизонтальной шины. Каждый столбец чипа имеет общий двунаправленный буфер. Выходной буфер отпирается, когда линии выбора ввода/вывода и функции ввода/вывода находятся в состоянии разрешения выхода вертикальной шины и когда введена любая горизонтальная шина. Входной буфер отпирается, когда линии выбора ввода/вывода и функции ввода /вывода не находятся в состоянии разрешения выхода вертикальной шины. 3.7. Логическая матрица, программируемая командой
Конфигурация каждой ячейки определяется собственным набором масок ячейки, и следовательно, каждая ячейка должна иметь свой собственный дешифратор команд. Такой дешифратор представляет собой программируемую логическую матрицу (PLA). Эта матрица является упорядоченной структурой, которая облегчает изменение определения или корректировку функций. Она имеет небольшое количество входов 10, но сравнительно большое количество выходов 40, из которых одновременно используются только немногие. Коды операций команд, нумерация слоев, а также коды выбора внутреннего мультиплексора выбираются таким образом, чтобы свести к минимуму размер PLA. Чем больше входов в мультиплексор используется, тем меньше их число в коде выбора. Некоторые выходы PLA модифицируются триггером состояния с тем, чтобы команды могли зависеть от данных. Архитектура сравнительно проста с той точки зрения, что зависимым от данных является лишь выбор операции ALU, но не работа линии. Команды умножения и деления используют это свойство зависимости от данных и могут применяться в варианте, специально приспособленном для быстрых операций. Мультиплексор ALU OP на фиг. 10 выбирает один из двух наборов по четыре бита ALU OP в зависимости от состояния триггера состояния. Если состояние не соответствует конкретной команде, то наборы битов ALU OP одинаковы. 4. Сигналы арифметического процессора
Управление линией данных внутри арифметически-логического единичного процессора осуществляется регистрами магистрали команды. Сигналы чипа сведены в таблицу 7. 4.1.Управление линией данных
Далее перечислены все входы:
1. Код команды 5-0 эти сигналы определяют подлежащую выполнению команду. Перечень таких команд приведен в табл. 3, 4 и 5. 2. Выбор последовательного ввода 1,0 эти сигналы выбирают один из четырех входов схемы переноса LSS ALU в арифметической команде. Этими входами являются: перенос вправо; логический нуль; логическая единица; триггер переноса. Эти сигналы выбирают также один из четырех входов в регистр сдвига LSS или MSS в команде сдвига и поворота. Входами являются: логический нуль; ALU вправо или ALU влево в линию ALU или MQ вправо или MQ влево в линию MQ; триггер переноса; шина C ALU. 3. Адрес считывания 5-0 эти сигналы выбирают один из 64 входов ко входу "A" ALU, как показано в табл. 1. 4. Адрес считывания/записи 5-0 эти сигналы выбирают один из 64 входов ко входу "B" ALU, как показано в табл. 1. Если запись осуществляется в многопортовую память, то эти же входы выбирают ячейку, в которую запись должна быть произведена. 5. Выбор ввода/вывода 1,0 ввод или вывод в арифметический процессор выбирается из: вертикальной шины; горизонтальной шины; линии вниз; линии вверх. 6. Функции ввода/вывода 1,0 операции шины, линии или ячейки связанной памяти с произвольным доступом выбираются посредством выбора ввода/вывода. Этими операциями являются:
разрешение вывода (управление выбранной шиной или линией от связанной ячейки памяти);
прямой ввод (разрешение на использование внешней шины или линии в качестве входа ALU);
загрузка извне (загрузка связанной ячейки памяти из выбранной внешней шины или линии);
загрузка изнутри (загрузка связанной ячейки памяти от шины D ALU). Если с помощью функции разрешения вывода выбирается вертикальная шина, то осуществляется вывод из строки, в горизонтальной шине которой имеет место сигнал логической единицы. Если с помощью функции разрешения вывода выбирается горизонтальная шина, то осуществляется вывод из столбца, в вертикальной шине которого имеет место сигнал логической единицы. Выбор линии вверх или линии вниз разрешает вывод независимо от функции ввода/вывода. 4.2. Управление состоянием
Эти входы управляют загрузкой многопортовой памяти, регистратора состояния и триггера стойкого переполнения. Все операции выполняются последовательно, ячейка за ячейкой. Загрузка памяти зависит от: (1) разрешения ALUP, (2) команды, (3) разрешения памяти и (4) горизонтальной маски ALUP. Отметим, что триггер нуля имеет различные применения и называется также "Триггер нуль/состояние" и "Триггер состояния". 1. Разрешение памяти 1,0 загрузка триггеров состояния, триггера стойкого переполнения и многопортовой памяти разрешается в следующих комбинациях: может загружаться только многопортовая память; может загружаться только регистр состояния и многопортовая память; может загружаться только регистр состояния; может загружаться все. 2. Разрешение, зависящее от состояния, 2,1,0-память может загружаться по условию, только если специфицированы выбранные условия: горизонтальная шина должна соответствовать логической единице; триггер переноса должен соответствовать логической единице; отрицательный триггер должен соответствовать логической единице; триггер нуль/состояние должен соответствовать логической единице; загрузка имеет место; триггер переноса должен соответствовать логическому нулю; отрицательный триггер должен соответствовать логическому нулю; триггер нуль/состояние должен соответствовать логическому нулю. 4.3. Сигналы для ячейки
1. Внешняя память вход или выход с тремя состояниями. На контакте имеется выходной сигнал, если "направление" соответствует логической единице. В противном случае контакт является входным. 4.4 Сигналы для строки
Если нет других указаний, то выходы имеют три состояния. 1. Шина ИЛИ инвертированный выход, имеющий два состояния. Сигнал является логическим НЕ-ИЛИ от (данные (N) И вертикальная шина (N)) для всех столбцов. 2. Горизонтальная шина вход или выход. Сигнал является результатом логической операции ИЛИ от (триггер горизонтальной шины (N) И вертикальная шина (N)) для всех столбцов. Единовременно во всю строку чипов может быть введено не более одной линии вертикальной шины. Эта шина управляется только в том случае, если она выбрана выбором ввода/вывода, выход функции ввод/вывод разрешен, а также любая вертикальная линия в чипе соответствует логической единице. Данные поступают через регистр горизонтальной шины. 3. ALU влево, ALU вправо вход и выход или выход и вход соответственно. Сигналы используются для операций сдвига. 4. MQ влево, MQ вправо вход и выход или выход и вход соответственно. Эти сигналы используются для операций, в которых одновременно сдвигаются два слова. 5. Перенос влево, перенос вправо выход и вход соответственно. Данные проходят справа налево для распространения переноса через ALU. 6. Состояние влево, состояние вправо вход и выход или выход и вход соответственно. Сигналы используются для определения нуля логическими и некоторыми из арифметических команд, а также для специальных функций сдвигов двойного слова и команд циркулярного состояния. 7. Цикл влево, цикл вправо вход и выход или выход и вход соответственно. Эти сигналы используются во многих операциях для соединения старшего значащего слоя с младшим значащим слоем. 4.5 Сводка сигналов для столбца
1. Вертикальная шина вход или выход. Выход вертикальной шины является активным, если он выбран с помощью выбора ввода/вывода, выход функции ввод/вывод разрешен, а горизонтальная шина введена. Данные выдаются регистром вертикальной шины. 2 и 3. Вверх, вниз могут быть входом и выходом или выходом и входом в зависимости от того, что определено вертикальной маской ALUP 0 и 1, выбором ввода/вывода и функцией ввода/вывода. Источник данных выбирается вертикальной маской ALU P 2.
Формула изобретения


РИСУНКИ
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10, Рисунок 11, Рисунок 12, Рисунок 13, Рисунок 14, Рисунок 15, Рисунок 16, Рисунок 17, Рисунок 18, Рисунок 19, Рисунок 20, Рисунок 21, Рисунок 22, Рисунок 23, Рисунок 24, Рисунок 25, Рисунок 26, Рисунок 27, Рисунок 28, Рисунок 29