Способ и устройство для параллельной обработки цифровой информации в вычислительной системе



Способ и устройство для параллельной обработки цифровой информации в вычислительной системе
Способ и устройство для параллельной обработки цифровой информации в вычислительной системе
Способ и устройство для параллельной обработки цифровой информации в вычислительной системе
Способ и устройство для параллельной обработки цифровой информации в вычислительной системе

 


Владельцы патента RU 2571376:

Открытое акционерное общество "Информационные технологии и коммуникационные системы" (RU)

Изобретение относится к вычислительной технике. Технический результат - повышение скорости обработки цифровой информации. Для этого принимают в первом блоке указатель, дескриптор и данные для обработки из общесистемной шины; передают принятые указатель и дескриптор во второй блок по локальной шине; проводят поиск во втором блоке свободного блока обработки; передают выбранному свободному блоку обработки указатель, дескриптор и данные для обработки; выполняют обработку данных в выбранном блоке обработки по алгоритму, заданному в дескрипторе; передают обработанные данные из блока обработки во второй блок по локальной шине; модифицируют указатель во втором блоке; формируют во втором блоке сигнал для формирования запроса на прерывание; передают модифицированный указатель и сигнал для формирования запроса на прерывание из второго блока в первый блок; получают в первом блоке сигнал запроса на прерывание, модифицированный указатель и обработанные данные от второго блока; формируют в первом блоке запрос на прерывание; передают из первого блока в процессор запрос на прерывание, модифицированный указатель и обработанные данные по общесистемной шине. 2 н.п. ф-лы, 4 ил.

 

Область техники, к которой относится изобретение

Предлагаемое изобретение относится к вычислительной технике, в частности к способам и устройствам параллельной обработки нескольких потоков цифровых данных в вычислительной системе, где под потоками цифровых данных понимается последовательность дискретных наборов данных, например сообщений, сетевых пакетов или других массивов информации.

Уровень техники

Важным параметром, характеризующим вычислительную систему, используемую для выполнения обработки цифровых данных, является ее производительность. При этом часто возникает задача, связанная с повышением скорости обработки потоков данных в данной вычислительной системе. Эффективным путем повышения производительности при выполнении обработки данных является увеличение числа блоков, выполняющих обработку, а также повышение вычислительной мощности этих блоков.

Существенное влияние на производительность системы оказывает выбранный способ организации взаимодействия между обрабатывающими блоками.

Характер выполняемой обработки может быть различным, например, это может быть выполнение операций по шифрованию/расшифрованию сетевого трафика, сложные вычисления и др.

Известны способ и устройство для параллельной обработки информации в вычислительной системе, описанные в патенте США №7853775, причем способ заключается в том, что

- формируют в процессоре инструкцию и данные из потока, связанного с первым контекстом, для посылки в устройство;

- причем сформированная инструкция запрашивает устройство выполнить команду и возвратить данные в процессор;

- сохраняют признак в упомянутом первом контексте, который идентифицирует адрес назначения упомянутых возвращаемых данных;

- выполняют в процессоре переключение контекста, чтобы перейти от обработки первого контекста ко второму до получения возвращаемых данных;

- выполняют в контроллере шины операцию на системной шине для посылки сформированной инструкции и данных вместе с идентификатором потока в устройство;

- причем идентификатор содержит адрес регистра назначения;

- выполняют в устройстве операцию в соответствии с инструкцией и данными;

- выгружают возвращаемые результирующие данные и идентификатор потока на системную шину;

- получают возвращаемые результирующие данные и идентификатор потока в контроллере шины;

- инициируют в процессоре операцию на системной шине перед переключением контекста;

- получают идентификатор второго контекста;

- выполняют следующую инструкцию в первом контексте;

- изменяют программный счетчик в процессоре из значения, связанного с первым контекстом, в значение, связанное со вторым контекстом;

- получают соответствие первого контекста из идентификатора потока;

- определяют адрес назначения с помощью доступа к первому контексту;

- записывают, по крайней мере, часть возвращаемых данных по адресу назначения.

Этот способ имеет недостатки, среди которых необходимость использования процессора для обеспечения обмена данными с устройством, при этом выполнение процессором задачи задерживается до завершения обмена. Дополнительно следует отметить необходимость сохранять информацию о переданной задаче, а также расположении данных в регистрах процессора.

В устройстве для обработки информации для реализации описанного способа обрабатывающие элементы сгруппированы в многопоточные наборы, каждый из которых выполняет операции в режиме одного потока под управлением блоков памяти, как хранилищ инструкций, и регистров - для соответствующих указателей.

Устройство содержит

- N узлов обработки, выполняющих параллельные операции в один поток (SIMD);

- N узлов обработки, сгруппированных в M наборов блоков обработки, состоящих из S узлов обработки, где каждый из S узлов содержит память и регистры, при этом M наборов блоков обработки выполняют параллельные операции друг с другом, и S узлов обработки выполняют операции друг с другом, где при работе с множеством потоков (MIMD) часть блоков памяти каждого набора M блоков обработки используется для хранения инструкций, причем часть регистров в каждом блоке обработки функционирует как хранилище указателей на инструкции;

- каждый из блоков обработки содержит схему контроля, выполняющую для S узлов обработки этого блока управление инструкциями и их последовательностью,

- блок управления обработкой, управляющий системой в целом, при этом в каждом блоке обработки один из узлов обработки, имеющий блок памяти, функционирует как хранилище инструкций при работе с множеством инструкций (MIMD) и содержит:

- схему управления;

- выборщик инструкций, выбирающий инструкции из блока управления либо из хранилища инструкций;

- узел обработки из S узлов обработки, не содержащий хранилище инструкций, получающий и исполняющий инструкцию от выборщика инструкций при работе с множеством инструкций (MIMD),

- блок управления обработкой для глобального контроля, причем в каждом из блоков обработки каждый узел обработки содержит

- схему управления;

- выборщик инструкций, причем при работе с множеством инструкций (MIMD) выборщик инструкций одного из узлов обработки, содержащего хранилище инструкций, выбирает инструкцию от блока управления либо из хранилища инструкций;

- оставшиеся узлы обработки, не содержащие хранилище инструкций, получающие и исполняющие инструкции от выборщика инструкций единственного узла обработки, содержащего хранилище инструкций.

Описанные способ и устройство приняты за прототипы.

Однако в известном устройстве также есть недостатки, заключающиеся в том, что весь обмен между узлами обработки, а также между узлами обработки и управляющим блоком выполняются по системной шине, что снижает производительность системы. Хранение исполняемых инструкций в соседних элементах в пределах одного блока обработки затрудняет доступ к этим инструкциям, а также приводит к замедлению в работе элемента обработки, хранящего эти инструкции.

Раскрытие изобретения

Техническим результатом является повышение скорости обработки цифровой информации.

Для этого предлагается устройство параллельной обработки цифровой информации в вычислительной системе, содержащей

- по крайней мере, один процессор;

- оперативную память;

- общесистемную шину, связывающую процессор, оперативную память и устройство;

- прикладное ПО, обеспечивающее

- настройку и управление устройством;

- формирование и размещение в оперативной памяти дескрипторов, содержащих

- информацию о расположении обрабатываемых данных в оперативной памяти системы;

- информацию об алгоритме обработки данных;

- формирование и передачу устройству указателей на дескрипторы в соответствии с порядком поступления данных в систему;

- прием и обработку запроса на прерывание, полученного по общесистемной шине от устройства;

причем устройство содержит

- локальную шину

- первый блок, обеспечивающий

- прием данных из общесистемной шины и их передачу по локальной шине;

- передачу по общесистемной шине данных, полученных из локальной шины;

- формирование и выдачу в общесистемную шину запроса на прерывание;

- второй блок, обеспечивающий

- обмен данными по локальной шине с первым блоком;

- хранение данных в локальной памяти;

- обмен данными по локальной шине с блоками обработки;

- управление блоками обработки;

- поиск свободных блоков обработки;

- управление очередью обработки;

- передачу первому блоку сигнала для формирования запроса на прерывание;

- совокупность блоков обработки, каждый из которых обеспечивает

- прием и передачу по локальной шине указателей, дескрипторов и данных для обработки из второго блока;

- обработку данных в соответствии с заданным в дескрипторе алгоритмом;

- передачу по локальной шине второму блоку указателей и обработанных данных;

причем

первый блок связан с вычислительной системой по общесистемной шине,

второй блок и совокупность блоков обработки связаны с первым блоком по локальной шине.

Для использования совместно с устройством предлагается способ параллельной обработки цифровой информации, заключающийся в том, что

- принимают в первом блоке указатель, дескриптор и данные для обработки из общесистемной шины;

- передают принятые указатель и дескриптор во второй блок по локальной шине;

- проводят поиск во втором блоке свободного блока обработки;

- передают выбранному свободному блоку обработки указатель, дескриптор и данные для обработки;

- выполняют обработку данных в выбранном блоке обработки по алгоритму, заданному в дескрипторе;

- передают обработанные данные из блока обработки во второй блок по локальной шине;

- модифицируют указатель во втором блоке;

- формируют во втором блоке сигнал для формирования запроса на прерывание;

- передают модифицированный указатель и сигнал для формирования запроса на прерывание из второго блока в первый блок;

- получают в первом блоке сигнал запроса на прерывание, модифицированный указатель и обработанные данные от второго блока;

- формируют в первом блоке запрос на прерывание;

- передают из первого блока в процессор запрос на прерывание, модифицированный указатель и обработанные данные по общесистемной шине.

Повышение производительности вычислительной системы достигается за счет освобождения процессора от выполнения множества текущих операций по

- управлению блоками обработки,

- загрузке и выгрузке данных из блоков обработки,

- непосредственной обработке данных,

- управлению очередью обработки и

- организации обмена между отдельными блоками устройства.

Для реализации такой работы процессора предлагается организовать внутреннюю локальную шину, связывающую блоки обработки между собой, а также обеспечить выполнение блоками обработки загрузки и выгрузки данных.

В результате основной обмен данными будет производиться по локальной шине, что снизит нагрузку на процессор и системную шину и, соответственно, повысит производительность вычислительной системы в целом.

Краткое описание чертежей

На фиг. 1 показана структурная схема устройства.

На фиг. 2 показана схема взаимодействия регистров задач второго блока.

На фиг. 3 показана структурная схема блока обработки.

На фиг. 4 показана структура дескриптора.

Осуществление изобретения

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

В качестве линии обмена, связующей составные блоки, в устройстве используется локальная шина, обеспечивающая взаимодействие между первым блоком, вторым блоком и блоками обработки, при этом обмены по локальной шине могут выполняться по инициативе любого блока, входящего в состав устройства (фиг. 1).

Для обеспечения взаимосвязи внутренних блоков устройства с вычислительной системой используется первый блок, являющийся промежуточным элементом между общесистемной шиной и локальной шиной. Этот блок обеспечивает возможность передачи сообщений из общесистемной шины в локальную шину и из локальной шины в общесистемную. Для выполнения передачи в первом блоке реализованы функции по сопряжению интерфейсов обмена в соответствии с требованиями общесистемной и локальной шин. Также данный блок содержит таблицы коммутации, обеспечивающие маршрутизацию пересылки сообщений в устройстве между вычислительной системой и блоками устройства. При этом обмены с вычислительной системой по локальной шине выполняются в формате общесистемной шины, что обеспечивает простой способ ретрансляции сообщений через первый блок при помощи лишь модификации полей заголовка.

При отправке сообщений от составных узлов устройства через первый блок в общесистемную шину используется замена в заголовке сообщения поля Tag, содержащего идентификатор последовательности сообщений для выдающего узла, новым полем Tag_new, соответствующим номеру последовательности сообщений от устройства в целом. При этом в таблице коммутации по адресу Tag_new сохраняется запись, содержащая исходный Tag и индивидуальный номер узла Node_ID, отправившего сообщение. В ответ на сообщение с запросом данных из оперативной памяти системы контроллер памяти выдает сообщение, содержащее в своем заголовке исходный Tag_new как идентификатор обмена. Это поле используется в первом блоке для поиска в таблице коммутации идентификатора узла Node_ID на локальной шине, запросившего данные, и определения исходного поля Tag в передаваемом узлу сообщении для идентификации обмена для данного узла.

Также первый блок содержит всю информацию, определяющую характеристики устройства, как оконечного узла на общесистемной шине в вычислительной системе, а именно конфигурационные регистры, идентификаторы устройства на шине DeviceID и VendorID и другие параметры, используемые вычислительной системой для настройки доступа к устройству как элементу системы.

Первый блок осуществляет выдачу запроса на прерывание в общесистемную шину после получения требования на прерывание Interrupt от второго блока.

Управление функционированием устройства осуществляется с помощью второго блока, подключенного к локальной шине в устройстве и содержащего регистры, используемые для управления работой блоков обработки. Программный доступ к регистрам осуществляется с помощью специализированного программного обеспечения, исполняемого на процессоре и отвечающего за взаимодействие вычислительной системы с устройством.

С учетом состояния регистров второго блока устройство подготавливается к выполнению задач по обработке, а также определяет условия формирования требования на прерывание Interrupt.

Перед началом выполнения обработки на устройстве прикладное программное обеспечение задает в регистрах второго блока базовый адрес Base_Address положения буфера дескрипторов задач в оперативной памяти вычислительной системы. Все условия задач по обработке данных, поступающих в устройство, описываются в дескрипторе, хранящемся в буфере дескрипторов. Прикладное программное обеспечение собирает и заносит в дескриптор информацию о расположении обрабатываемых данных, алгоритму обработки и другие данные, необходимые для выполнения задачи. Размер дескриптора Size фиксирован.

Постановка новой задачи либо чтение завершенной задачи из регистров выполняется по инициативе программного обеспечения. Обмен задачами между вычислительной системой и устройством ведется в виде указателей на положение дескрипторов в буфере дескрипторов. Адрес положения очередного дескриптора с номером i, содержащего задачу для обработки на устройстве, определяется по следующему соотношению:

Addressi=Base_Address+i*Size

Для постановки задач используется регистр TIB (Task Input Buffer) второго блока, где каждый бит регистра означает номер задачи (дескриптора) из буфера дескрипторов, подлежащей обработке (фиг. 2). Логическая единица в битах регистра соответствует появлению новой задачи.

Завершенные задачи отображаются в регистре ТОВ (Task Output Buffer) второго блока, где каждый бит регистра означает номер выполненной задачи (дескриптора) из буфера дескрипторов. Логическая единица в битах регистра соответствует завершению очередной задачи. После считывания состояния регистра ТОВ с завершенными задачами первый блок получает указатели на обработанные дескрипторы. С учетом этого, второй блок затем автоматически обнуляет соответствующие биты регистра ТОВ.

Во втором блоке реализована функция генерации сигнала Interrupt, вызывающего выдачу из первого блока в общесистемную шину запроса на прерывание при появлении хотя бы одной завершенной задачи в регистре ТОВ.

В состав второго блока входят локальная память для хранения информационных массивов и регистры, управляющие работой блоков обработки, отображающие состояние блоков обработки и другие регистры, относящиеся к контролю и управлению узлов устройства, а также функционал по поиску свободных блоков обработки по определенному алгоритму и управлению очередью обработки.

Второй блок, получив сообщение с указателем на новую задачу от первого блока, формирует и выдает по локальной шине первому блоку запросы на чтение дескриптора и обрабатываемых данных из оперативной памяти вычислительной системы в локальную память устройства.

Если состояние регистров второго блока указывает на наличие в устройстве хотя бы одного блока обработки, способного взять на себя выполнение задачи, то второй блок передает по локальной шине сообщение с номером дескриптора одному из свободных блоков. Затем второй блок отправляет по локальной шине в первый блок запрос на чтение дескриптора и соответствующих ему обрабатываемых данных из оперативной памяти вычислительной системы. Данные, входящие в устройство по общесистемной шине, сохраняются в локальной памяти второго блока и частями передаются по локальной шине блоку обработки, выполняющему их обработку, по мере необходимости.

Блоки обработки, входящие в состав устройства, состоят из регистров для хранения информации о выполняемой задаче, буферов памяти типа FIFO для хранения частей обрабатываемых и обработанных информационных массивов, а также набор арифметико-логических элементов, выполняющих непосредственную обработку данных (фиг. 3).

Выполнение задач в блоках обработки в зависимости от аппаратных возможностей каждого блока обработки может осуществляться в несколько параллельных потоков. При этом доступ каждого потока обработки к локальной шине осуществляется с равным приоритетом. Каждый поток блока обработки в любой момент времени может выполнять только одну задачу, причем второй блок сохраняет на своих регистрах запись о номере потока и соответствующем блоке обработки, где ведется обработка определенной задачи.

Получив по локальной шине сообщение с задачей от второго блока, блок обработки начинает загрузку дескриптора и данных по локальной шине из второго блока и сохраняет их во входном буфере типа FIFO для определенного потока обработки. Структура дескриптора показана на фиг. 4.

При наличии хотя бы части данных в буфере типа FIFO в блоке обработки запускается обработка этих данных. Обработанные данные передаются в выходной буфер типа FIFO блока обработки и выдаются по локальной шине второму блоку при накоплении массива заранее заданного размера.

По завершении выполнения задачи, а именно обработки всего массива данных, размер которого указан в дескрипторе, либо при возникновении ошибок в процессе выполнения задачи, блок обработки отправляет по локальной шине второму блоку номер обработанного дескриптора.

Второй блок, получив по локальной шине от блоков обработки в своей локальной памяти полный массив обработанных данных, выдает по локальной шине первому блоку этот массив данных для его сохранения в оперативной памяти вычислительной системы, а также дескриптор для записи в буфер дескрипторов, содержащий информацию об обработанных данных, переданных вычислительной системе.

1. Устройство параллельной обработки цифровой информации в вычислительной системе, содержащее
по крайней мере, один процессор;
оперативную память;
общесистемную шину, связывающую процессор, оперативную память и устройство;
прикладное ПО, обеспечивающее
настройку и управление устройством;
формирование и размещение в оперативной памяти дескрипторов, содержащих
информацию о расположении обрабатываемых данных в оперативной памяти системы;
информацию об алгоритме обработки данных;
формирование и передачу устройству указателей на дескрипторы в соответствии с порядком поступления данных в систему;
прием и обработку запроса на прерывание, полученного по общесистемной шине от устройства;
причем устройство содержит
локальную шину;
первый блок, обеспечивающий
прием данных из общесистемной шины и их передачу по локальной шине;
передачу по общесистемной шине данных, полученных из локальной шины;
формирование и выдачу в общесистемную шину запроса на прерывание;
второй блок, обеспечивающий
обмен данными по локальной шине с первым блоком;
хранение данных в локальной памяти;
обмен данными по локальной шине с блоками обработки;
управление блоками обработки;
поиск свободных блоков обработки;
управление очередью обработки;
передачу первому блоку сигнала для формирования запроса на прерывание;
совокупность блоков обработки, каждый из которых обеспечивает
прием и передачу по локальной шине указателей, дескрипторов и данных для обработки из второго блока;
обработку данных в соответствии с заданным в дескрипторе алгоритмом;
передачу по локальной шине второму блоку указателей и обработанных данных;
причем
первый блок связан с вычислительной системой по общесистемной шине,
второй блок и совокупность блоков обработки связаны с первым блоком по локальной шине.

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



 

Похожие патенты:

Группа изобретений относится к устройству управления двигателем, которое вычисляет целевое значение управления актуатора с помощью многоядерного процессора, имеющего множество ядер.

Изобретение относится к матричному процессору с однородной структурой или к структуре матрицы ассоциативной обработки с переменной длиной слова, управляемой битами конфигурации, содержащимися в отдельных ассоциативных ячейках.

Изобретение относится к автоматике и вычислительной технике и может быть использовано для программной реализации быстродействующих дискретных устройствуправления технологическим оборудованием, в частности в системах дозирования, управления испытательным оборудованием, в технике научного эксперимента, а такжедля управления автоматическими линиями и робототехнологическими комплексами и т.п.

Изобретение относится к вычислительной технике и может быть использовано при построении системы обмена данными между ЭВМ или между модулями многопроцессорных вычислительных комплексов.

Изобретение относится к вычислительной технике и может быть использовано для коммутации ресурсов в отказоустойчивых вычислительных системах. .

Изобретение относится к вычислительной технике и, в частности, к многопроцессорным вычислительным системам. .

Изобретение относится к вычислительной технике и может быть использовано для построения высокопроизводительных вычислительных систем. .

Изобретение относится к средствам конструирования компьютера. Технический результат заключается в осуществлении одновременного приема множественных заданий, или команд, и одновременной загрузки множественных данных от множества пользователей без организации сети. Общественный компьютер, представляющий собой многопроцессорную вычислительную машину с возможностью одновременного подключения множества удаленных устройств ввода и вывода информации, собирается из одного или более типовых аппаратных блоков, каждый из которых состоит из размещенных на одной системной плате модуля внутреннего взаимодействия и управления, модуля параллельной обработки данных, одного или более модулей внешнего взаимодействия и управления, где модуль внутреннего взаимодействия и управления содержит массив связанных между собой процессорных узлов и чипсет; каждый модуль внешнего взаимодействия и управления содержит один процессорный узел или массив связанных между собой процессорных узлов и чипсет; модуль параллельной обработки данных содержит массив связанных между собой процессорных узлов, который интегрирован в массив процессорных узлов модуля внутреннего взаимодействия и управления. 4 з.п. ф-лы, 9 ил.

Изобретение относится к области радиотехники. Техническим результатом изобретения является существенное сокращение количества контролируемых системой контроля параметров. Способ заключается в формировании модели системы связи, имитировании нагрузки, моделировании появления демаскирующих признаков элементов сети связи. Способ включает в себя фиксирование полученных демаскирующих признаков и расчет их информативности. Далее по способу рассчитывают долю времени, в течение которого демаскирующий признак доступен средствам контроля (разведки), рассчитывают совокупность содержательной меры информации. Упорядочивают демаскирующие признаки, записывают результат в матрицу. Присваивают каждому зафиксированному демаскирующему признаку значение стоимости создания канала измерения, рассчитывают относительную стоимость создания канала измерения. Выбирают элементы матрицы и соответствующие им значения стоимости создания канала измерения, рассчитывают вероятность вскрытия системы связи, сравнивают с требуемой вероятностью вскрытия. Последовательно извлекая из матрицы демаскирующие признаки, определяют множество наиболее значимых ДМП. 1 ил.

Изобретение относится к области электроники и вычислительной техники. Технический результат - повышение надежности работы устройства и сохранение работоспособности устройства при возникновении отказов/повреждений в его оборудовании. Устройство содержит n-е количество единых монтажных вычислительных приборов (ЕМП), каждый из которых функционально разделен на взаимодействующие между собой три блока: блока автономных вычислений (БАВ), блока передачи команд (ВПК) и блока операционной системы (БОС), при этом БАВ обеспечивает взаимодействия с другими БАВ, установленными на других ЕМП; проверки сетевых линий связи на предмет наличия других ЕМП, доступных для связи; установки видов приоритета между доступными ЕМП, какие ЕМП будут в управлении по отношению к данному ЕМП; ведения реестра доступных других БАВ для составления описания этих БАВ и ЕМП, содержащие сведения о вычислительных мощностей, загруженности ЕМП, и проверки актуальности и доступности других БАВ и целостности данных, переданных другим БАВ, и выполнения заданий; и передачи указанной информации в БПК, который выполнен с возможностью передачи сигналов управления и данных доступным ЕМП; БПК выполнен с возможностью создания из информации, полученной от БАВ, единого виртуального процессора (ЕВП), и передачи информации о ЕВП в БОС. 14 з.п. ф-лы, 5 ил., 1 табл.
Наверх