Устройство для определения длины строки символов
Иллюстрации
Показать всеРеферат
Союз Советских
Социвпистичвских
Республик
К АВТОРСКОМУ СВИДЕТЕЛЬСТВУ (61) Дополнительное к авт. свид-ву (22) Заявлено 04. 08. 80 (21) 3pp0444/18-24 (s>)h%. Кл.
6 06 Г 3/153 с орисоедннеикеи заявки йе
9кударстееньа коинтет
CCCP ю далем нзебретаннй в юткрытнй (23) Лриоритет
Опубликовано 23 11 82, Бюллетень М43
Дата опубликования описания 23 . 1 1 .82 (53) УдК 6" 1 32 (088.8) (72) Авторы мэобретения
И. П. Селезнев и Е. В. Бычков (71) Заявитель (54) УСТРО1СТВО ДЛЯ ОПРЕДЕЛЕНИЯ ДЛИНЫ
СТРОКИ СИМВОЛОВ
Изобретение относится к вычислительной технике и может быть использовано при построении быстродействующих устройств, ориентированных на обработку символьной информации.
В таких устройствах возникает необходимость в выполнении операции определения длины L строки символов, которая равна количеству символов, размещенных между началом строки и определенным терминальным {, фиксирующим
1О конец строки) символом. Указанная операция употребляется в языках программирования высокого уровня. Строка символов, в общем. случае, может разме15 щаться в нескольких машинных словах.
Одно полное машинное слово содержит и символов. Строка может начинаться с любой символьной позиции в машинном слове. Положение первого символ стро- п ки задается его адресом Ь в слове(базой строки ), Адрес отсчитывается от левой границы слова, причем 0 Ь— п-1.
Известно устройство, содержащее регистр машинного слова, регистр тер» минального символа, регистр промежуточного результата, арифметико-логический узел и блок управления. Выходы регистров подсоединены к входам арифметико-логического узла, выход которого подключен к входу регистра промежуточного результата. Выход блока управления связан с управляющим входом арифметико-логического узла.
B этом устройстве операция определения длины строки может быть выполнена путем последовательного выделения символов строки из машинных слов, сравнения их с терминальным символом и подсчета числа операций сравнения, для которых зафиксировано неравенство символов fl) .
Наиболее близким к предлагаемому устройству техническим решением является устройство, ориентированное на обработку символов (байтов) и содержащее регистр машинного слова, 976438 сумматор, регистр терминального сим" вола, регистр промежуточного результата, узел сравнения двух байтов и блок управления, причем вход регистра терминального символа соединен с входом терминального символа устройства, а информационный вход регистра машинного слова соединен с входом машинного слова устройства, входы узла сравнения двух байтов подключены к выхо- ф дам регистра машинного слова и регистра терминального символа, à его выход - к входу блока управления. Выход регистра промежуточного результата связан с входом сумматора, выход 1 которого объединен с входом регистра промежуточного результата и подключен к первому выходу -устройства. Первый выход блока управления соединен с управляющим входом регистра промежуточ- 20 ного результата, второй выход - с управляющим входом регистра машинного слова, а третий выход подключен к второму выходу устройства. Функции узла сравнения в этом устройстве выполняет 23 блок пересылки при реализации.логической функции неравнозначности. При выполнеь ии операции определения длины .строки символов в регистр машинного слова заносятся последовательные Фраг-3 менты строки символов. Из этого регистра символы последовательно передаются на один из входов узла сравне- . ния, на второй вход которого постоянно подан терминальный символ. Если
3S
:символы не равны, то с помощью сумматора на единицу увеличивается содержимое регистра промежуточного результата. При равенстве символов выполнеО ние операции завершается, регистр результата содержит результирующее значение L (21 .
Последовательный характер анализа символов строки и подсчета количества символов в ней обуславливают низкое
43 быстродействие известного устройства, что является его недостатком.
Цель изобретения — повышение быст родействия.
Эта цель достигается тем, что в устройство, содержащее сумматор, регистр машинного слова, регистр терминального символа, регистр промежуточного результата, узел сравнения и .блок управления, причем информационный вход регистра терминального символа соединен с входом терминального символа устройства, а информационный вход регистра машинного слова соединен с входом машинного слова устройства, введены блок формирования маски и блок формирования адреса крайней единицы, а количество узлов сравнения равно числу символов в машинном слове, первый вход каждого узла сравнения соединен с выходом регистра машинног слова, второй вход — с выходом блока формирования маски, третий вход — с выходом регистра терминального символа; а выход - с входом блока формирования адреса крайней единицы, первый выход которого подключен к первому входу сумматора, а второй выход соединен с первым входом блока управления и выходом окончания операции устройства, второй вход блока управления, управляющий вход регистра терминального символа и первый управляющий вход регистра промежуточного результата подключены к первому входу .синхронизации устройства третий вход блока управления, управляющий вход регистра машинного слова и второй управляющий вход регист- ра промежуточного результата подключены к второму входу синхронизации устройства, третий управляющий вход регистра промежуточного результата, управляющий вход блока формирования маски и управляющий вход сумматора подключены к выходу блока управления, первый информационный вход регистра промежуточного результата подключен к входу установки базы строки устройства, а .выход связан с информационным входом блока формирования маски и вторым входом сумматора, выход которого соединен с вторым информационным входом регистра промежуточного результата и подключен к выходу значения длины строки устройства.
Кроме того, блок управления содержит двухразрядный счетчик, элемент НЕ и элемент И, причем счетный вход сче-чика соединен с выходом элемента И, первый вход которого соединен с третьим входом блока, второй вход элемента И соединен с инверсным выходом старшего разряда счетчика, который подключен к выходу блока, третий вход элемента И соединен с выходом элемента НЕ, вход которого подключен к первому входу блока, вход -установки начального значения счетчика соединен с вторым входом блока.
Блок формирования адреса крайней единицы содержит два коммутатора, два элемента ИЛИ-НЕ, элемент ИЛИ, два эле9764 мента НЕ и три элемента И, причем вход блока подключен к входам первого элемента ИЛИ-НЕ, элемента ИЛИ, информационным входам первого коммутатора, выход которого соединен с входом вто- 3 рого элемента ИЛИ-НЕ и с информационными входами второго коммутатора, выход которого подключен к входу первого элемента НЕ, выход элемента ИЛИ соединен с первыми входами элементов
И и входам второго элемента НЕ, второй вход первого элемента И соединен с выходом первого элемента ИЛИ-НЕ, который соединен с управляющим входом первого коммутатора, второй вход вто- 1 рого элемента И соединен с выходом второго элемента ИЛИ-НЕ, который соединен с управляющим входом второго коммутатора, второй вход третьего элемента И подключен к выходу первого эле- 20 мента НЕ, выходы элементов И и второго элемента НЕ соединены с выходами блока.
Блок формирования маски содержит семь элементов ИЛИ, четыре элемента
И и элемент НЕ, причем вход элемента 2s
НЕ соединен с управляющим входом блока, а его выход подключен к первым входам первого, второго и третьего элементов ИЛИ, вторые входы которых соединены с информационными входами щ блока, выход первого элемента ИЛИ соединен с первыми входами четвертого элемента ИЛИ и первого элемента И, вторые входы которых и первые входы второго элемента И и пятого элемента
ИЛИ подключены к выходу второго эле— мента ИЛИ, первые входы третьего элемента И и шестого элемента ИЛИ подключены к выходу четвертого элемента
ИЛИ, первые входы четвертого элемента И и седьмого элемента ИЛИ подключены к выходу первого элемента И, вторые входы второго, третьего, четвертого элементов И, пятого, шестого, седьмого элементов ИЛИ подключены к выходу третьего элемента ИЛИ, а их выходы соединены с выходами блока.
На фиг. 1 показана блок-схема устройства ; на фиг. 2 - блок-схема блока формирования адреса крайней единиИ цы; на фиг,. 3 - блок-схема блока фор мирования маски; на- фиг. 4 — принцип работы устройства.
Устройство для определения длины строки символов содержит регистр 1 машинного слова, регистр 2 терминаль$$ ного символа, регистр 3 промежуточного результата, блок 4 формирования маски, однотипные узлы 5 сравнения, 38 6 блок 6 формирования адреса крайней единицы, сумматор 7, блок 8 управления.
Блок 6 формирования адреса крайней единицы содержит первый коммутатор 10, первый элемент ИЛИ-НЕ 11, второй элемент ИЛИ-НЕ 12, элемент ИЛИ 13, первый элемент НЕ 14, второй элемент
НЕ 15, первый, второй и третий элементы И 16-18 соответственно.
Блок 4 формирования маски содержит первый, второй, третий, четвертый, пятый, шестой и седьмой элементы ИЛИ19 — 25, первый, второй, третий, четвертый элементы И 26 -29, элемент HE 3Q
Регистр машинного слова обеспечивает хранение и символов 5, 5л,...
Б,символы в регистре нумеруются слева направо), причем п=2 К. Каждый символ (в том числе и хранящийся в регистре 2 терминального символа) содержит 1 двоичных разрядов.
Блок 4 формирования маски обеспечивает формирование и-разрядного двоичного слова M=m» m<, л „(маски), содержащего единственную группу двоичных разрядов, имеющих единичное значение (разряды в маске нумеруются слева направо). Номер разряда слова М, соответствующего положению крайней левой единицы в указанной группе, определяется обратным кодом К-разрядного двоичного числа С, поступающего на информационный вход блока 4, а положение крайней правой единицы постоянно и совпадает с крайним правым разрядом
I f слова M,m и q =1) . Например, если С =
=100, то M= 00011111, так как (С)
= 011. Блок 4 работает указанным образом при единичном значении сигнала
P на его управляющем входе. Если P=O, то mz=m = ...=m „=1. Число С снимаI о л ил ется с К младших разрядов регистра 3 промежуточного результата.
Блок 4 формирования маски представляет собой многовыходную комбинационную логическую схему, аргументами коI торой являются разряды Со, Сл,..., Ск двоичного числа С С - старший разряд) и признак р. На входе, блока формируются сигналы С =С. 1=0, k-1.
4л
Логические функции, определяющие значения сигналов на выходах блока, могут бь ть представлены в общем виде
> о .! i=O и-2; m>-ë =1
Здесь К.= С о Св .. С -" о 11
1 при G = 0 (сл при G=1
976438 причем
i4.О +9< +" С
Логические выражения для m можно
1 упростить, используя методы минимизации логических- функций. В частности, если С является трехразрядным числом, то
m = С. о фф, п)„= С.ц, /С„1 С1
m„= С о С„„m m t:„, Ñ, гп = С С„„С, m = С С1 С, mq = С о m = 1 т
Структура блока 4, реализующая данные выражения, показана на фиг. 3.
Блок 6 формирования адреса крайней единицы также представляет собой многовыходную комбинационную логическую схему. При n=e работа блока определяется логическими выражениями ао о Ъс " " .
ЪФЛ .Ф ФбЧ Ч
Е, =,с „Я, ч й;> ч,Д„4г Ф 4 ф,(q ÷9.) y= qo (q« %д.ЪР Ьо%аЬМьйа(йуЬьс т
Пример реализации блока 6 показан на фиг. 2. Этот блок работает в соответствии с приведенными выражениями.
В этом блоке при подаче на управляющий вход первого коммутатора логичес- кого "0" яа выход коммутатора подаются сигналы g© — g, а при подаче лоГической 1 - сиГнали ) -, gg При подаче на управляющий вход второго
-.коммутатора логического 0" íà его M выход коммутируются сигналы и, а при
I подаче логической "1" - сигналы g .
В соответствии с количеством символов в регистре 1 в состав устройства входит и узлов 5 сравнения. В i-м 6 узле производится сравнение терминального символа S из регистра 2 и символа S из регистра 1, причем результат сравнения определяется также значени- ем сигнала m„-, поступающего из блока 4<5 формирования маски. Сигнал q на выходе i-го узла вырабатывается в соответствии с выражением
Е -1 сЦ g о в ъ ч а "s I )3m„ где S„>, S - значения 3-ro разряда символов 5 и S соответственно.Т
1
На выходах узлов 5 сравнения в целом вырабатывается и-разрядное двоич- ное слово 0 = q „ v „... q„ „, поступаю щее на вход блока 6 формирования адре са крайней единицы. Блок 6 преобразует слово Q в (К + 1)-разрядное двоичное число E = 1 1 ... 1„, определяющее номер крайнего левого разряда слова Q, имеющего единичное значение. Если ц = q ... = q„ < О, то Е=2 и
1=1. В остальных случаях А» Е» 2 " — 1
1О =О, Единичное значение признака F на первом выходе устройства указывает
На окончание операции определения длины строки символов. Значение этого признака определяется соотношением
F=1 .
В сумматоре 7 производится суммирование числа С, хранящегося в регистре 3 промежуточного результата, и числа Е с выхода блока 6. Сигнал р, также поступающий в сумматор, используется в качестве сигнала переноса в младший разряд. При завершении операции на втором выходе сумматора формируется результирующее значение длины L строки символов. Разрядность v сумматора 7 в регистре 3 определяется допустимым значением параметра 1 .
В предлагаемом устройстве структура блока 8 проста: он представляет собой двухразрядный счетчик, элемент
НЕ и логический элемент И. На вход . начальной установки счетчика подан сигнал с третьего входа устройства, а счетный вход подключен к выходу элемента И, на входы которого поступают сигналы с четвертого входа устO ройства, с инверсного выхода старшего разряда счетчика, и через элемент НЕ с второго блока формирования адреса крайней единицы. Выход блока подключен к инверсному выходу старшего разряда счетчика.
Устройство работает следующим образом.
Сигналом начальной установки поступающим с третьего входа устройства, производится занесение терми.— нального символа в регистр 2 и обратного кода базы строки I b)о О в регистр
3. Под действием сигнала Ь блок 8 управления переходит в состояние, при котором р=1..Импульсным сигналом, возбуждаемым на четвертом входе устройства, в регистр 1 заносится машинное слово, содержащее начальный фрагмент строки символов. На выходе блока 4 формирования маски вырабатывает-. ся слово И, для которого m =m в =1, а остальные разряди ймеют
yl=1 нулевое значение. Вследствие этого
q =q =...=q О, а значения остальО 4 Ь1 ных разрядов слова 0 определяются pe\
97643
9 зультатам сравнения символов Sb, S +q, ..., S< „ с терминальным символом 3
Пусть терминальный символ для рассматриваемой строки символов расположен на символьной позиции d в регистре 1 (d > b). В этом случае Я -S вследствие чего q<=1 (крайняя левая единица в слове 0), и на выходе бло ка 6 формирования адреса крайней еди- 10 ниЦы устанавливаются значения E=d, 10
Сумматором 7 вырабатывается значение 1-=/С+Е+Р/ mod=2 = JEblogpd+1/ pg=
2 = /2 -Ь + 0 „„8=2 = d-b, опреде- 1s ляющее результирующее значение длины строки символов, и выполнение операции заканчивается (F=1).
Если терминальный символ для рассматриваемой строки в регистре 1 отсутствует, то все разряды слова Q имеют нулевое значение, Е=2 ", и на выходе сумматора вырабатывается чис" " tt) " " l .a=av= l "- < l a, а, к @ определяющее количество символов заданной строки содержащихся в регистре 1. Признак F = 1 =О, и выполнение операции продолжается. Импульсным сиг-зо налом о(производится .занесение в регистр 1 очередного фрагмента стро.ки символа. В результате воздействия этого сигнала на блок 8 управления на . его выходе устанавливается значение р = О. В регистр 3 переносится значение 1 с выхода сумматора 7. Все раз/ ряды маски M теперь имеют единичное значение. Если в принятом фрагменте отсутствует терминальный символ, то щ все разряды слова Q имеют нулевое значение, Е=2", а в сумматоре 7 производится сложение числа символов, зафиксированных в предыдущем фрагменте строки (С), и числа Е, определяющего аз количество символов в слове, которое хранится в регистре 1. Выполнение операции продолжается (Г=1 =О), причем сигналом в регистр 1 заносится очередной фрагмент строки символов, а в р регистр 3 передается значение L с выхода сумматора. Если в последующих машинных словах, заносимых в регистр 1, отсутствует терминальный символ, то описанный цикл работы устройства . повторяется для каждого из этих слов, 1 вследствие чего в регистре 3 накапливается число, соответствующее количест
8 10 ву переданных в устройство символов строки. Наконец, если в регистр 1 за" несен фрагмент, содержащий терминальный символ (например, на позиции а, 0 а с п-1), то на выходе блока 6 фор" мирования адреса крайней единицы вырабатывается значение Е = а, на выходе сумматора 7 устанавливается результирующее значение параметра L, и выполнение операции завершается (Г=1)..
Работу устройства продемонстрируем на примере определения длины строки символов (фиг. 2). Здесь принято n=v
=4, база строки b=2 (двоичный код 10) .
В качестве терминального символа использован пробел. В таблице указаны значения сигналов в устройстве для трех машинных слов и, и, из, последовательно помещаемйх в регистр машинного слова 1. Значение L=j, вырабатываемое в третьем цикле работы устройства, определяет результат операции. . Если длина 1 строки символов, определяемая с помощью устройства, должна быть на единицу меньше количества символов в ней, сигнал р, поступающий в сумматор 7, должен постоянно иметь нулевое значение (этот сигнал можно в сумматор не подавать).
Если строки, длина которых должна быть определена, всегда выравнена по границе машинного слова (в этом случае Ь=О), то из оассмотренного устройства можно исключить формирователь 4 маски и блок 8 управления. При начальной ус- ановке в этом случае регистр 3 промежуточного результата устанавливается в "0".
Кроме операции определения длины строки символов, на основе предлагаемого устройства можно обеспечить эффективное выполнение следующих операций, используемых в задачах обработ- ки строк символов.
1. Определение номера позиции в строке, содержащей заданный символ.
2. Определение индекса вхождения заданной подстройки у в строку x (on" ределяется номер позиции самого левого символа строки х, начиная с которой х входит в у). Эту операцию можно выполнить следующим образом сначала определить номер позиции строки х, содержащий первый символ подстройки у(это делается с помощью предлагаемого устройства), а затем, если такой символ в х действительно содержится, произвести сравнение подстроки у с l1 9764 фрагментом строки х, начинающимся с указанного символа.
3. Определение числа повторений заданного символа в строке.
С целью технико-экономического обоснования изобретения сравним быстродействие известного и предлагаемого устройств. В известном устройстве для каждого символа строки выполняется операция сравнения и операция измене- 16 ния на единицу содержимого регистра промежуточного результата. Следователь но, если строка содержит М в символов, то время Т выполнения всей операции определяется выражением 13
Т, -" 2N t gq, где t - длительность типового цикла обработки информации в устройстве (чтение данных из регистров и выполнение ариф;26 метической/логической операции).
Время Т выполнения операции в предлагаемом устройстве определяется выражением 25
Тх = N töi где М - количество машинных слов, в 4/ которых размещена строка., — длительность типового цикла ц обработки информации.
В предлагаемом устройстве в связи с введением узлов сравнения и блока формирования адреса крайней единицы на 4-5 уровней увеличивается глубина логических цепей, что может привести
3S к увеличению на 10-20 длительности типового цикла обработки,t> Ы1,2 ц ) .
Полагая для достаточно длинных строк символов N = и 1и,,и — число символов в машинном слове), получим
Т т, =1,7И .
Следовательно, быстродействие предлагаемого устройства при п=4 в 6 раз,, а при п=8 в 12 раз выше, чем у извест45 ного устройства.
Формула изобретения
1. Устройство для определения длиSO ны строки символов, содержащее сумма-. тор, регистр машиннопо слова, регистр терминального символа, регистр промежуточного результата, узел сравнения и блок управления, причем информацион
SS ный вход регистра терминального симво.ла соединен с входом терминального символа устройства, информационный
12 вход регистра машинного слова соединен с входом машинного слова устройства. о т л и ч а ю щ е е с я тем, что. с целью повышения быстродействия устройства. оно дополнительно содержит блок Формирования маски и блок формирования адреса крайней единицы и и узлов сравнения (где n — число символов в машинном слове), первый вход каждого узла сравнения соединен с выходом регистрз машинного слова, второй вход — с выходом блока формирования маски, третий вход - с выходом регистра терминального символа, а выход — с входом блока формирования адреса крайней единицы, первый выход которого подключен к первому входу сумматора, а второй выход соединен с первым входом блока управления и выходом окончания операции устройства, второй вход блока управления, управляющий вход регистра терминального символа и первый вход регистра промежуточного результата подключены к первому входу синхронизации устройства, третий вход блока управления, управляющий вход регистра машинного слова и второй управляющий вход регистра промежуточного результата подключены к к второму входу синхронизации устройства, третий управляющий вход регист ра промежуточного результата, управляющий вход блока ф рмирования маски и управляющий вход сумматора подключены к выходу блока управления, первый информационный вход регистра промежуточного результата подключен к входу установки базы строки устройства, а выход связан с информационным входом блока формирования маски и вторым входом сумматора, выход которого соединен с вторым информационным входом.регистра промежуточного результата и подключен к выходу значения длины строки устройства.
2. Устройство по и. 1, о т л и ч а ю щ е е с я тем, что блок управления содержит двухразрядный счетчик, элемент НЕ и элемент И, причем счетный вход счетчика соединен с выходом элемента И, первый вход которого соединен с третьим входом блока, второй вход элемента И соединен с инверсным выходом старшего разряда счетчика, который подключен к выходу блока, третий вход элемента И соединен с выходом элемента HE,вход, которого подключен к первому входу блока, вход уста13 9764 новки начального значения счетчика соединен с вторым входом блока.
3. Устройство по п.1, о т л и ч а ю щ е е с я тем, что блок форми.рования адреса крайней единицы содержит первый и второй коммутаторы, два элемента ИЛИ-НЕ, элемент ИЛИ, два элемента НЕ, три элемента И, причем вход блока подключен к входам первого элемента ИЛИ-НЕ, элемента ИЛИ, информа- 10 ционным входом первого коммутатора, выход которого соединен с входом второго элемента ИЛИ-НЕ и с информационными входами второго коммутатора, выход которого подключен к входу перво- м го элемента НЕ, выход элемента ИЛИ соединен с первыми входами элементов
И и входом второго элемента НЕ, второй вход первого элемента И соединен с выходом первого элемента ИЛИ-НЕ, ко р0 торый также соединен с управляющим входом первого коммутатора, второй вход второго элемента И соединен с выходом второго элемента ИЛИ-НЕ, который также соединен с управляющим вхо- 2s дом второго коммутатора, второй вход третьего элемента И подключен к выходу первого элемента НЕ., выходы элементов И и второго элемента НЕ соединены с выходами блока. 30
4. Устройство по и. 1, о т л и— ч а ю щ е е с я тем, что блок Формирования маски содержит семь элементов
38
14
ИЛИ, четыре элемента И, элемент НЕ, причем вход элемента НЕ соединен с управляющим входом блока, а его выход подключен к первым входам первого, второго и третьего элементов ИЛИ, вторые входы которых соединены с информационными входами блока, выход первого элемента ИЛИ соединен с первыми вход ми четвертого элемента ИЛИ и первого элемента И, вторые входы которых и первые входы второго элемента И и пятого . элемента ИЛИ подключены к выходу второго элемента ИЛИ, первые входы третьего элемента И и шестого элемента
ИЛИ подключены к выходу четвертого элемента ИЛИ, первые входы четвертого элемента И и седьмого элемента ИЛИ подключены к выходу первого элемента
И, вторые входы второго, третьего и четвертого элементов И, пятого, шестого, седьмого элементов ИЛИ подключены к выходу третьего элемента ИЛИ, а их выходы соединены с выходами блока.
Источники информации, принятые во внимание при экспертизе
1. Каган Б. M., Каневский М. М.
Цифровые вычислительные машины и системы. М., "Энергия", 1980, с. 353-354
2. Флорес А. Организация вычислительных машин. М., "Мир", 1972, с.308 (прототип) .
976438
Фиг. 5
Фиг. Ф
Составитель А. Чеканов
Редактор Т. Кугрышева Техред З.Палий Корректор М. Демчик
Заказ 9004/75 Тираж 731 Подписное
ВНИИПИ Государственного комитета СССР по делам изобретений и открытий
113035, Москва, Ж-35, Раушская наб., д. 4/5 филиал ППП "Патент", г. Ужгород, ул. Проектная, 4