Главная     Лента технологий     Каталог технологий     Форум
Навигация






Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Контекстный сопроцессор
ИдеяКомпьютеры

Включая в начале рабочего дня на своем рабочем месте обычную для нашего времени «навороченную» вычислительную систему под названием персональный компьютер, мы никогда не задумываемся, сколько машинного времени пропадает зря не просто из-за его простоя, а из-за не рациональных алгоритмов программ и вирусной «братвы», постоянно копошащейся в нем, особенно при постоянном подключении к локальной сети и Интернет. К примеру на моем рабочем месте уже давно стоит Celeron 2.6 ГГц с 1 Гигабайтом оперативной памяти, но порой возникает впечатление, что там остался Celeron 533. Вроде все тот же самый Windows XP…, в результате всю вину приходится сваливать на антивирусную программу Касперского на этот раз уже 6-й версии да еще с какими-то таинственными буковками «mp3». Был крайне недоволен, когда администратор заставил перейти с 5-й версии, тогда все было хорошо. Не редко замечал странное поведение мыши, когда ее указатель вдруг спонтанно, сбесившись убегает в левый верхний угол экрана, непонятные обращения к пустому 3-х дюймовому дисководу, особенно при выключении, слава богу сейчас прекратились. Все это на мой взгляд является доказательством присутствия в памяти машины массы безвредных «козявок», допустим пока, которые выковыривать производителям антивирусного обеспечения просто нет времени или по причине того, что при введении их всех в антивирусную базу производительность любой вычислительной системы резко упадет. В данном предложении я употребил слово «пока», это значит что возможен вариант дружных «боевых действий» разных безвредных «тараканов», результаты которых для системы будут не совсем безвредны, но не будем углубляться в посторонние темы. Обдумывая подобные перспективы, я решил, что данные процессы поиска сигнатур в потоке информации можно было бы значительно упростить и облегчить введя в вычислительную систему некоторые средства аппаратной поддержки с довольно простым принципом действия, о которых я дальше поведу речь.


Предлагаемое мной устройство я назвал «Контекстный сопроцессор», т.е. сопроцессор поиска содержания, еще его можно было бы назвать сопроцессором поиска сигнатур. Названий для данного устройства можно придумать множество. Принцип работы данного устройства состоит в отслеживания потока информации по стандартной системной магистрали микропроцессора, в состав которой входят линии адреса/данных/управления, и в выдаче сигнала прерывания и сопутствующих данных в контрольные регистры при совпадении сигнатуры из внутренней памяти сигнатур и в стековой памяти, куда в режиме отслеживания, т.е. в режиме, невидимом для центрального процессора, а значит и для программиста, помещаются данные с системной магистрали. Естественно физическая форма магистрали адреса/данных/управления не имеет значения, она может быть выполнена как в обычном виде совокупности специализированных линий, характерной для системного интерфейса микропроцессора, так и в виде группы линий с комбинированной специализацией, как в интерфейсе PCI-Е, так и в виде линий последовательной передачи, как в интерфейсе SATA. Протокол для нас пока тоже не имеет значения. То есть будем исходить из того, что используется любой канал передачи информации, в состав которой входит информация управления, адресная информация и конкретно данные, поэтому будем оперировать просто с названием магистраль адреса/данных/управления. Кстати, что бы не углубляться в лишние объяснения о стандартных и тривиальных на сегодняшний день функциональных частях вычислительных систем, не показываем схемы генерации сигналов выборки устройств и прошу считать, что сигналы арбитража активных устройств, подключаемых к данной магистрали, входят в состав сигналов управления. Структурная схема предлагаемого устройства показана на фиг. 1. Оно подключается к магистрали вычислительной системы с помощью сигналов магистрали адреса/данных/управления ADC 2, из состава которой обособленно выделены сигналы 26, 27, 28, это сигнал прерывания INT, базовый сигнала выборки контрольных регистров CSCREG и сигнал внешнего сброса RST.







В состав устройства CoCPU 1 или далее сопроцессора входят блоки интерфейса магистрали BIU 3, управления выборкой CSU 4, контрольных или управляющих регистров CREG 6, памяти сигнатур 9, компараторов 11, стековой памяти 13 и главный блок управления CEXU 8, необходимый всегда в любом устройстве. Блок BIU 3 служит для подключения к системной магистрали вычислительной системы с помощью сигналов магистрали ADC 2 и обеспечения буферирования или трансляции этих сигналов на внутреннюю магистраль адреса/данных/управления IADC 7 или с нее и необходимых для этого их преобразований, а так же для передачи по линиям управления 15 в блок CSU 4 сигналов управления. Внутренняя магистраль адреса/данных/управления IADC 7 необходима для доступа от блока BIU 3 к блокам CSU 4, где производится дешифрация адреса для доступа к блоку контрольных регистров CREG 6 для записи в них информации управления и считывания из них информации о состоянии сопроцессора, для доступа к блоку памяти сигнатур 9 соответственно для их записи и возможно чтения для повышения удобства, для доступа к блоку 13 стековой памяти, куда помещаются данные проверяемого промежутка информационного потока. Блок CSU 4, дешифрируя управляющие сигналы с линий 15 и адрес с шины IADC 7 управляет чтением/записью в блок CREG 6 по линиям 18, в блок памяти сигнатур 9 по линиям 16, в блок стека 13 по линиям 19, а так же выдает вспомогательные управляющие сигналы для блока управления CEXU 8. Блок CEXU 8 осуществляет общую координацию работы сопроцессора по линиям управления 21, 23, 24, 14. При совпадении данных из блока памяти сигнатур 9 и блока стековой памяти 13 блок компараторов 11 генерирует сигнал прерывания 25 и сигналы 25а для регистров состояния из блока CREG 6. Контролируемая информация может в себя включать поля не только данных, но и адреса, и типа операции по магистрали ADC 2, по этому в состав магистрали IADC 7 мне пришлось включить все сигналы с нее. Необходимый их состав может определяться проектировщиком сопроцессора. Сигнал 25 через буферную схему из состава блока BIU 3 выдается на внешнюю магистраль адреса/данных/управления ADC 2. При активном состоянии сигнала INT 26 в вычислительной системе запускается программа обработки прерывания, действия которой определяются программистом, но априори предполагаю, что это будет какая то конкретная реакция на найденную сигнатуру, например останов процесса, анализ ситуации и выполнение возврата к его выполнению.

Хотелось бы сказать, что проектировщиком могут быть заложены в сопроцессор функции отслеживания циклов системной магистрали не только строго по порядку, но и с учетом специфики команд центрального процессора. Это безусловно сделает в будущем структуру блока CSU 4 сложнее предполагаемой мной. Не хотелось бы углубляться в данную тему описания грядущих улучшений сервиса для пользователя, но хотелось бы описать метод, при котором отслеживается последовательность циклов операций только в определенном промежутке адресов или например отслеживание окна памяти. Структура блока CSU 4 для сопроцессора с подобной функцией показана на фиг. 2.







В блок CSU 4 мной включен блок управления CU 30, куда входят стандартные дешифраторы адреса и другие системы управления выборкой, а так же из двух компараторов старшего адреса CMPHA 31 и младшего адреса CMPLA 32. На все эти блоки поступает необходимая для управления и сравнения информация с магистрали IADC 7 и управляющая информация, например информация о запрете работы компараторов, и информация о начальном и конечном адресах отслеживаемого пространства памяти или портов ввода/вывода с блока CREG 6 по магистрали 5. Выходные сигналы 34а, 34b, 34c разрешения выборки ячеек объединяются блоком 33 управления записью в стек и следуют к блоку стека 13 по линиям управления 19. В итоге можно реализовать режим, когда при попадании адреса с магистрали IADC 7 в окно между адресами, поданными на входы вышеописанных компараторов, происходит запись в блок памяти стека 13. Кроме того блок CU 30 выдает остальные сигналы управления по линям 16 и 18, необходимые, для правильной работы сопроцессора. Хотелось бы заметить, что групп из двух компараторов 31 и 32 может быть несколько для увеличения удобства работы с сопроцессором и гибкости системы, соответственно с учетом этого должен быть расширен блок CREG 6. После инициализации сопроцессора, т.е. после подачи сигнала сброс я предполагаю, что этот режим должен быть отключен посредством принудительной установки регистров блока CREG 6 в начальное состояние, которое назовем «по умолчанию».
При проектировании в структуру сопроцессора может быть заложен программный и микропрограммный принцип работы, а так же принцип работы автомата с жесткой логикой. В связи с этим я хотел бы более подробно рассмотреть работу отдельно блоков 9, 11, 13 в совокупности, для этого представлена схема на фиг. 3.






На данном рисунке изображен блок стековой памяти Stack Memory из n+1 регистров REG0-REGn, в которые с помощью управляющих линий 19 заносится информация о циклах обмена данными на магистрали ADC 2 через блок BIU 3 по магистраль IADC 7 под управлением сигналов с линии CSStack 19. Первоначально я предполагал ограничить состав информационных полей регистров REG0-REGn только для фиксации данных, но все же необходимо предполагать использование их для фиксации полной информации о цикле, соответственно возможно при проектировании введение в данные регистры информационных полей так же для фиксации адреса и управляющих сигналов, как уже было сказано выше. Необходимое число разрядов для данных регистров я обозначил, как m. Выходы данных регистров REG0-REGn по магистрали 12 из n+1 групп шин по m линий подаются для сравнения на блоки компараторов CMP Block i . При наличии блоков памяти Signature Memory Block для k сигнатур нам необходимо k таких блоков компараторов, каждый из которых имеет в своем составе n+1 отдельных компараторов CMPij и схему объединения их выходов «=» по «И» (на рисунке не показаны) с выходом EQi. Каждый компаратор CMPij имеет m-разрядный вход для подсоединения к регистру стековой памяти Stack Memory и m-разрядный вход для подключения к своему блоку памяти сигнатур Signature Memory Block i с дополнительными битами сигнала EQ, активный уровень которых блокирует соответствующий компаратор с принудительной выдачей сигнала «=». Данные линии EQ предназначены для организации поиска сигнатур, некоторые промежутки которых могут принимать все возможные или произвольные значения. Регистры блоков памяти сигнатур REGij соответственно в своем составе тоже должны иметь дополнительное однобитное поле EQ. В результате каждый блок памяти сигнатур Signature Memory Block i соединяется с каждым своим блоком компараторов CMP Block i магистралью 10i из n+1 шин по m+1 линий. Запись и возможно чтение информационных полей вместе с битом EQ регистров REGij блоков памяти сигнатур производится с магистрали IADC 7 под управлением управляющих сигналов WRMBi, RDMBi из состава управляющих линий 16. При установке всех выходов «=» компараторов CMPlj в блоке компараторов CMP Block l активизируется выход EQl, который через схемы запрета 35 подается по линиям 25а на входы блока CREG 6 как биты состояния сопроцессора. Схемы запрета 35 управляются сигналами EEQl, входящими в состав магистрали 5 с блока CREG 6 (по линиям управления 17 и 21) и предполагают включение или выключение по отдельности каждой пары из блока памяти сигнатур Signature Memory Block l со своим блоком компараторов CMP Block l по инициативе пользователя или управляющего процесса посредством изменения содержимого регистров блока CREG 6. После сброса сопроцессора в состоянии «по умолчанию» они должны быть не активны, т.е. прохождение сигналов EQl будет блокировано во избежание нежелательной реакции на сигнатуры, представленные случайным состоянием блока памяти сигнатур сразу после включения питания. В рабочем же состоянии при разрешении выхода EQl с выхода схемы ИЛИ 36 выдается сигнал INT 25 для формирования блоком BIU 3 сигнала INT 26 и сигналы 25a для возможности определения пользователем номера блока памяти сигнатур Signature Memory Block l или в итоге номера найденной сигнатуры. Эти данные в регистрах блока CREG 6 будут представлены в унитарном коде, так как на мой взгляд необходимо предусмотреть ситуацию, когда содержимое блока стековой памяти совпадает с сигнатурами из нескольких блоков памяти сигнатур. Из-за возможно слишком большого количества регистров, занимаемых этими данными в данном блоке, допускаю введение в нем дополнительных регистров, содержащих более обобщенную и занимающую меньший объем информацию, например один или несколько номеров блоков памяти сигнатур, сигнатуры из которых были найдены последними, а так же блок формирования этих данных из сигналов с линий 25а (не показан). Можно так же для удобства при обычных операциях поиска или сортировки ввести режим, при котором сигнал прерывания INT 25, будет формироваться только при заполнении области памяти этих регистров номеров сигнатур на 75%, а не сразу при срабатывании какого-либо сигнала EQl. После формирования сигнала INT 26 естественно, как в любой стандартной вычислительной системе, центральным процессором будет начато выполнение подпрограммы обработки прерывания с вектором, соответствующим входу прерывания, его или контроллера прерываний, на который согласно электрической принципиальной схеме вычислительной системы, в состав которой находится сопроцессор, подается сигнал INT 26. Первым пунктом в данной подпрограмме будет запрет данного сигнала, проверка вышеупомянутых битов состояния и сброс их для восстановления готовности сопроцессора к дальнейшему поиску. Дальнейшее содержание подпрограммы обработки прерывания, о функциях которой мы говорили выше и которое определяет работоспособность и необходимость применения устройства, определяется пользователем и к сожалению нас на этом этапе не касается, таков принцип построения программируемых систем. Мы можем только позаботиться о дополнительных ресурсах и резервах для обеспечения гибкости и удобства работы пользователя с предлагаемым устройством.
Наверное я все таки поступаю беспечно, игнорируя стандартную концепцию сопроцессора для вычислительной системы, т.е. все максимальные функции в одном блоке. При недостатке ресурсов сопроцессора возможна неоднократная перегрузка сигнатур без изменения информационного массива, в котором производится поиск, и его положения в памяти. Здесь будет оптимально включение его по схеме на фиг. 4 на локальной шине в группе с контроллером прямого доступа к памяти DMAC и блоком памяти RAM для обрабатываемых массивов с помощью буферного блока BF.







Соответственно из схемы на фиг.1 следует схема на фиг.5 сопроцессора 1 со встроенным блоком памяти RAM 37 для обрабатываемых массивов, управляемым по линии 38 через блок CSU 4 для записи данных массива центральным процессором с системной магистрали через магистраль ADC 2 и по линиям 39 для перебора их во время поиска управляющим блоком CEXU 8. И если уж мы взвалили функции контроллера прямого доступа к памяти DMAC на внутренний блок, почему бы нам не расширить эти функции









на внешнюю магистраль ADC 2. В результате получаем схему с максимальными аппаратными затратами, как на фиг. 4, но без контроллера DMA. Блок памяти RAM можно использовать для дополнения блока внутренней памяти 37 и увеличения объема памяти, используемой сопроцессором 1.
Хотелось бы упомянуть, что для упрощения работы с сопроцессором мной представлена его схема с единой магистралью для управляющей и отслеживаемой информации. Естественно, управление устройством может производиться с другой магистрали, для этого необходимо будет ввести второй блок BIU 3 с такими же выводами, как и ADC 2, и наверняка разделить магистраль IADC 7 на магистрали для доступа к управляющей информации и информации, записываемой в блок стековой памяти 13, сигналы которой так же придется направить на входы блока CSU 4. Возможен так же вариант с несколькими отслеживаемыми магистралями ADC 2, а соответственно и с несколькими блоками стековой памяти 13 и компараторов 11. Практичность данных вариантов лично для меня пока сомнительна, но это только пока, не дай бог какой-нибудь из них понравится проектировщику… , так что не желаю попасть впросак.
Работа пользователя по программированию данного устройства будет включать в себя первоначальную процедуру инициализации сопроцессора в общем, т.е. установку начального состояния регистров из блока CREG 6 для того, чтобы он не влиял на работу системы, и последующие инициализации для поисков сигнатур, которые наверняка будут иметь возможность организовываться из разных процессов при достаточном количестве блоков памяти сигнатур. Для подобных инициализации необходимо запрограммировать соответствующий вектор прерывания, загрузить в память подпрограмму его обработки, заполнить память сигнатур и разрешить формирование ей сигнала прерывания. В любом случае для произведения поиска пользователю или процессу необходимо загрузить или транспортировать первоначальный массив информации в память, этой процедуры им не избежать при любом методе организации поиска, дальше в процессе загрузки необходимо просто ожидать сигнала прерывания. Если же массив информации находится уже в памяти, то вместо его транспортировки необходимо организовать простой просмотр данного массива с помощью выборки его элементов по порядку посредством выдачи задания контроллеру прямого доступа к памяти или тривиальной строки в программе типа:
for (i = 0; i < = k; i++) a = dim(i);
Как уже было сказано выше, от подобных операций нам не уйти ни при каких видах поиска и методах его ускорения, так что на этом придется остановиться.
Хотелось бы упомянуть, что применение вышеописанного устройства для поиска вирусов, поиска в базах данных, сортировки массивов и т.п. может оказаться не настолько значительным, как еще один способ применения. Своевременную реакцию на сигнатуры с системной магистрали можно использовать для отладки программ и ловли других «букашек» под названием «bugs» или «блохи». Кроме того возможен и еще один вариант. Осциллографом к шине данных современного микропроцессора не подцепишься, а если подцепишься, то ничего не увидишь, для этого необходим логический анализатор. Если иметь возможность останавливать запись в стековую память, т.е. делать стоп-кадр, и просматривать его содержимое, естественно с магистрали IADC 7 под управлением линий 19, то получим вычислительную систему сразу со встроенным логическим анализатором. Затраты не большие, просто заранее вводим на выходы регистров блока стековой памяти порты для их чтения с произвольным доступом с магистрали IADC 7 и дешифратор адреса с нее для генерации сигналов выборки, управляемый по линиям 19, а в блок CSU 4 добавить отключаемые из блока CREG 6 функции записи в блок памяти стека пустых машинных циклов, что бы не терялась привязка полученных диаграмм к времени. Зато какой эффект! Одним выстрелом убиваем сразу двух зайцев.
Ну вот еще один кирпич положен в «Великую стену» из ускорителей для стандартной микропроцессорной системы. Вспоминаю, о своем возмущении, когда мы ради шутки в перерыве между парами в институте, воспитанные на спартанской схеме компьютера «ZX-Spectrum», подсчитали количество микропроцессоров в IBM PC XT. То, что наше обучение велось на вычислительных комплексах СМ-4 (аналог PDP-11) из семейства малых ЭВМ - не важно, сделать самому для себя можно было только компьютер класса «Радио-86РК», «Специалист», «ZX-Spectrum» и т.д., причем лишняя микросхема К555ЛА3 (аналог 74LS00) в схеме вызывала крайне неодобрительную реакцию. А когда выяснилось, что у PC даже в клавиатуре стоит микропроцессор… В общем гарантирую , что это был самый черный день для PC. Это было тогда, а сейчас время идет и точка зрения о том, что центральный процессор все делает, нашими стараниями плавно переходит в истину, что бездействие системы, а значит и всех центральных процессоров – 99%.

Опубликовал mer January 30 2010 02:53:22 · Для печати