[go: up one dir, main page]

RU2813618C1 - Hardware acceleration for processing functions - Google Patents

Hardware acceleration for processing functions Download PDF

Info

Publication number
RU2813618C1
RU2813618C1 RU2022108034A RU2022108034A RU2813618C1 RU 2813618 C1 RU2813618 C1 RU 2813618C1 RU 2022108034 A RU2022108034 A RU 2022108034A RU 2022108034 A RU2022108034 A RU 2022108034A RU 2813618 C1 RU2813618 C1 RU 2813618C1
Authority
RU
Russia
Prior art keywords
function
hardware
code
hardware acceleration
perform
Prior art date
Application number
RU2022108034A
Other languages
Russian (ru)
Inventor
Пратик ТАНДОН
Брайан Джейкоб КОРЕЛЛ
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Application granted granted Critical
Publication of RU2813618C1 publication Critical patent/RU2813618C1/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: invention relates to methods of configuring a hardware circuit to perform a function. Method comprises receiving, in a function processing service, a request to execute a source code, wherein the request is received from a requesting entity, and wherein the source code contains instructions for executing the function; determining that the hardware acceleration condition has been satisfied for the function, wherein determining that the hardware acceleration condition has been met comprises counting the number of requests corresponding to one or more functions and received by the function processing service during the time interval, and determining whether that number of requests exceeds a threshold value; source code instructions are translated into a hardware-dependent code corresponding to the hardware circuit; configuring the hardware circuit based on the hardware-dependent code; instructing the hardware circuit to perform the function and providing the result obtained from the hardware circuit to a requesting entity.
EFFECT: providing more efficient execution of a function processing service.
20 cl, 18 dwg

Description

Уровень техникиState of the art

[0001] Облачные вычисления представляют собой доставку вычислительных служб (например, серверов, устройств хранения данных, баз данных, организации сетей, программного обеспечения, аналитики) по Интернету. Вообще говоря, облачная вычислительная система включает в себя две секции, внешний интерфейс и внутренний интерфейс, которые поддерживают электронную связь друг с другом через Интернет. Внешний интерфейс включает в себя интерфейс, с которым пользователи взаимодействуют через клиентское устройство. Внутренний интерфейс включает в себя ресурсы, которые доставляют облачные вычислительные службы, включающие в себя процессоры, запоминающее устройство, устройство хранения данных и сетевые аппаратные средства. Внутренний интерфейс облачной вычислительной системы типично включает в себя один или более центров обработки и хранения данных, которые могут быть расположены в различных географических областях. Каждый центр обработки и хранения данных типично включает в себя большое число (например, сотни или тысячи) вычислительных устройств, которые могут называться "хост-машинами".[0001] Cloud computing is the delivery of computing services (eg, servers, storage devices, databases, networking, software, analytics) over the Internet. Generally speaking, a cloud computing system includes two sections, a front-end and a back-end, which support electronic communication with each other via the Internet. The frontend includes the interface that users interact with through the client device. The backend includes the resources that deliver cloud computing services, including processors, memory, storage, and network hardware. The back-end of a cloud computing system typically includes one or more data processing and storage centers, which may be located in different geographic areas. Each data center typically includes a large number (eg, hundreds or thousands) of computing devices, which may be referred to as "host machines."

[0002] Множество различных типов служб могут предоставляться посредством облачной вычислительной системы. Служба обработки функций представляет собой облачную вычислительную службу, которая обеспечивает возможность пользователям выполнять исходный код без сложности создания и поддержки инфраструктуры, которая типично ассоциирована с разработкой и запуском приложения. Служба обработки функций автоматически управляет вычислительными ресурсами, которые требуются для того, чтобы выполнять исходный код. Следовательно, служба обработки функций позволяет разработчикам программного обеспечения выполнять исходный код без необходимости волноваться в отношении инициализации или управления серверами.[0002] Many different types of services can be provided through a cloud computing system. A function processing service is a cloud computing service that enables users to execute source code without the complexity of creating and maintaining the infrastructure that is typically associated with developing and running an application. The function processing service automatically manages the computing resources required to run the source code. Hence, the function processing service allows software developers to execute source code without having to worry about provisioning or managing servers.

[0003] Как подразумевает название "обработка функций", служба обработки функций может использоваться для того, чтобы выполнять исходный код, который включает в себя инструкции для того, чтобы выполнять одну или более функций. Обработка функций иногда называется "внесерверным вычислением" или "функцией-как-служба (FaaS)".[0003] As the name "function processing" implies, a function processing service may be used to execute source code that includes instructions to perform one or more functions. Function processing is sometimes called "serverless computing" or "function-as-a-service (FaaS)".

[0004] По мере того, как службы обработки функций становятся популярнее, исходный код, который выполняется, становится более сложным и информационно емким. Например, приложения на основе машинного обучения или искусственного интеллекта могут использовать информационно емкие сценарии, которые обрабатывают огромные объемы данных. Эти информационно емкие сценарии могут значительно увеличивать время обработки и потреблять существенные объемы вычислительных ресурсов. Тем не менее, пользователи ожидают, что службы обработки функций должны выполняться эффективно и быстро. Соответственно, преимущества могут реализовываться посредством технологий для повышения эффективности службы обработки функций в облачной вычислительной системе.[0004] As function processing services become more popular, the source code that is executed becomes more complex and information intensive. For example, applications based on machine learning or artificial intelligence can use information-intensive scripts that process huge volumes of data. These information-intensive scenarios can significantly increase processing time and consume significant amounts of computing resources. However, users expect function processing services to run efficiently and quickly. Accordingly, benefits can be realized through technologies to improve the efficiency of a function processing service in a cloud computing system.

Сущность изобретенияThe essence of the invention

[0005] В соответствии с одним аспектом настоящего раскрытия сущности, раскрывается реализуемый компьютером способ, который включает в себя прием, в службе обработки функций, запроса на то, чтобы выполнять исходный код. Запрос принимается из запрашивающего объекта. Исходный код включает в себя инструкции для того, чтобы выполнять функцию. Способ дополнительно включает в себя определение того, что условие аппаратного ускорения было удовлетворено для функции, трансляцию инструкций на исходном коде в аппаратно-зависимый код, соответствующий аппаратной схеме, конфигурирование аппаратной схемы на основе аппаратно-зависимого кода, инструктирование аппаратной схеме выполнять функцию и предоставление результата, полученного из аппаратной схемы, в запрашивающий объект.[0005] In accordance with one aspect of the present disclosure, a computer-implemented method is disclosed that includes receiving, at a function processing service, a request to execute source code. The request is received from the requesting entity. The source code includes instructions for executing the function. The method further includes determining that a hardware acceleration condition has been satisfied for the function, translating instructions in the source code into hardware-dependent code corresponding to the hardware circuit, configuring the hardware circuit based on the hardware-dependent code, causing the hardware circuit to execute the function, and providing the result. , obtained from the hardware circuit, into the requesting object.

[0006] В качестве примера, аппаратная схема может включать в себя программируемую пользователем вентильную матрицу (FPGA), и аппаратно-зависимый код может включать в себя код на языке описания аппаратных средств (HDL), соответствующий FPGA. В качестве другого примера, аппаратная схема может включать в себя графический процессор (GPU), и аппаратно-зависимый код может включать в себя GPU-код. В качестве другого примера, аппаратная схема может включать в себя процессор цифровых сигналов (DSP), и аппаратно-зависимый код может включать в себя DSP-код. В качестве другого примера, аппаратная схема может включать в себя специализированную интегральную схему (ASIC), и аппаратно-зависимый код может включать в себя код на языке описания аппаратных средств (HDL).[0006] As an example, the hardware circuit may include a field programmable gate array (FPGA), and the hardware-specific code may include hardware description language (HDL) code corresponding to the FPGA. As another example, the hardware circuit may include a graphics processing unit (GPU), and the hardware-dependent code may include GPU code. As another example, the hardware circuit may include a digital signal processor (DSP), and the hardware-dependent code may include the DSP code. As another example, the hardware circuit may include an application specific integrated circuit (ASIC), and the hardware-specific code may include hardware description language (HDL) code.

[0007] Определение того, что условие аппаратного ускорения было удовлетворено, может включать в себя подсчет числа запросов на то, чтобы выполнять функцию, которую служба обработки функций принимает в течение временного интервала, и определение того, что число запросов превышает пороговое значение.[0007] Determining that the hardware acceleration condition has been satisfied may include counting the number of requests to perform a function that the function processing service receives during the time interval and determining that the number of requests exceeds a threshold.

[0008] В некоторых вариантах осуществления, функция может принадлежать семейству функций. В таких вариантах осуществления, определение того, что условие аппаратного ускорения было удовлетворено, может включать в себя подсчет числа запросов на то, чтобы выполнять любую функцию в семействе функций, которые служба обработки функций принимает в течение временного интервала, и определение того, что число запросов превышает пороговое значение.[0008] In some embodiments, a function may belong to a family of functions. In such embodiments, determining that a hardware acceleration condition has been satisfied may include counting the number of requests to perform any function in a family of functions that the function processing service accepts during the time interval, and determining that the number of requests exceeds the threshold value.

[0009] В некоторых вариантах осуществления, определение того, что условие аппаратного ускорения было удовлетворено, может включать в себя определение оцененного снижения затрат, ассоциированного с выполнением функции через аппаратную схему, по сравнению с выполнением функции через процессор общего назначения, и определение того, что оцененное снижение затрат превышает пороговое значение.[0009] In some embodiments, determining that the hardware acceleration condition has been satisfied may include determining an estimated cost reduction associated with executing the function through the hardware circuit compared to executing the function through a general purpose processor, and determining that the estimated cost reduction exceeds the threshold.

[0010] В некоторых вариантах осуществления, определение того, что условие аппаратного ускорения было удовлетворено, может включать в себя определение того, что функция включается в библиотеку функций, и дополнительно может включать в себя добавление новых функций в библиотеку функций.[0010] In some embodiments, determining that the hardware acceleration condition has been satisfied may include determining that the function is included in the function library, and may further include adding new functions to the function library.

[0011] В соответствии с другим аспектом настоящего раскрытия сущности, раскрывается реализуемый компьютером способ, который включает в себя определение того, что условие аппаратного ускорения было удовлетворено для первой функции, конфигурирование аппаратной схемы с возможностью выполнять первую функцию и добавление первой функции в библиотеку функций, которая реализуется в аппаратных схемах. Способ дополнительно включает в себя прием, в службе обработки функций, запроса на то, чтобы выполнять исходный код. Исходный код включает в себя инструкции для того, чтобы выполнять первую функцию. Способ дополнительно включает в себя инструктирование первой функции выполняться через аппаратную схему.[0011] In accordance with another aspect of the present disclosure, a computer-implemented method is disclosed that includes determining that a hardware acceleration condition has been satisfied for a first function, configuring a hardware circuit capable of executing the first function, and adding the first function to a library of functions. which is implemented in hardware circuits. The method further includes receiving, at the function processing service, a request to execute the source code. The source code includes instructions for performing the first function. The method further includes causing the first function to be performed via the hardware circuitry.

[0012] В некоторых вариантах осуществления, способ дополнительно может включать в себя конфигурирование аппаратной схемы с возможностью выполнять вторую функцию параллельно с первой функцией. Вторая функция может отличаться от первой функции. В других вариантах осуществления, способ дополнительно может включать в себя конфигурирование аппаратной схемы с возможностью выполнять множество экземпляров аппаратной схемы параллельно.[0012] In some embodiments, the method may further include configuring the hardware circuit to perform the second function in parallel with the first function. The second function may be different from the first function. In other embodiments, the method may further include configuring the hardware circuit to be capable of executing multiple instances of the hardware circuit in parallel.

[0013] В соответствии с другим аспектом настоящего раскрытия сущности, реализуемый компьютером способ включает в себя анализ первой статистической информации, связанной с первым множеством запросов, принимаемых посредством службы обработки функций в течение первого временного интервала, конфигурирование набора аппаратных схем с возможностью выполнять первый набор функций в течение первого временного интервала на основе первой статистической информации и анализ второй статистической информации, связанной со вторым множеством запросов, принимаемых посредством службы обработки функций в течение второго временного интервала. Второй временной интервал отличается от первого временного интервала. Способ дополнительно включает в себя конфигурирование набора аппаратных схем с возможностью выполнять второй набор функций в течение второго временного интервала на основе второй статистической информации. Второй набор функций отличается от первого набора функций.[0013] According to another aspect of the present disclosure, a computer-implemented method includes analyzing first statistical information associated with a first set of requests received by a function processing service during a first time interval, configuring a set of hardware circuits to perform the first set of functions during a first time interval based on the first statistical information; and analyzing second statistical information associated with a second plurality of requests received by the function processing service during the second time interval. The second time interval is different from the first time interval. The method further includes configuring a set of hardware circuits to perform a second set of functions during a second time interval based on the second statistical information. The second set of functions is different from the first set of functions.

[0014] Способ дополнительно может включать в себя прием первого запроса на то, чтобы выполнять первый исходный код. Первый запрос может приниматься в течение первого временного интервала. Первый исходный код дополнительно может включать в себя первые инструкции для того, чтобы выполнять первую функцию. Первый набор функций может включать в себя первую функцию. Способ дополнительно может включать в себя инструктирование первой функции выполняться через первую аппаратную схему в наборе аппаратных схем и прием второго запроса на то, чтобы выполнять второй исходный код. Второй запрос может приниматься в течение второго временного интервала. Второй исходный код может включать в себя вторые инструкции для того, чтобы выполнять вторую функцию. Второй набор функций может включать в себя вторую функцию, выполняющую вторую функцию в течение второго временного интервала через вторую аппаратную схему в наборе аппаратных схем.[0014] The method may further include receiving a first request to execute the first source code. The first request may be received during the first time slot. The first source code may further include first instructions for performing the first function. The first set of functions may include the first function. The method may further include causing a first function to be executed through a first hardware circuit in the set of hardware circuits and receiving a second request to execute the second source code. The second request may be received during the second time slot. The second source code may include second instructions to perform the second function. The second set of functions may include a second function performing the second function during a second time interval through a second hardware circuit in the set of hardware circuits.

[0015] Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного предмета изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявленного предмета изобретения.[0015] This summary is provided to present in a simplified form a selection of concepts that are further described below in the detailed description. This essence is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used as an aid in defining the scope of the claimed subject matter.

[0016] Дополнительные признаки и преимущества должны быть изложены в нижеприведенном описании. Признаки и преимущества раскрытия сущности могут реализовываться и получаться посредством систем и способов, которые конкретно указываются в прилагаемой формуле изобретения. Признаки настоящего раскрытия сущности должны становиться более очевидными из нижеприведенного описания и прилагаемой формулы изобретения или могут изучаться при практическом использовании раскрытого предмета изобретения, как изложено далее.[0016] Additional features and advantages will be set forth in the description below. The features and advantages of the disclosure may be realized and obtained through systems and methods that are specifically set forth in the appended claims. Features of the present disclosure will become more apparent from the following description and the appended claims or may be learned by practice of the disclosed subject matter as set forth below.

Краткое описание чертежейBrief description of drawings

[0017] Чтобы описывать способ, которым могут получаться вышеизложенные и другие признаки раскрытия сущности, более подробное описание приводится в отношении его конкретных вариантов осуществления, которые проиллюстрированы на прилагаемых чертежах. Для лучшего понимания, аналогичные элементы обозначаются посредством аналогичных ссылок с номерами на всех различных прилагаемых чертежах. С пониманием того, что чертежи иллюстрируют некоторые примерные варианты осуществления, варианты осуществления описываются и поясняются в дальнейшем конкретнее и подробнее и с помощью прилагаемых чертежей, на которых:[0017] In order to describe the manner in which the foregoing and other features of the disclosure can be obtained, more detailed description is provided with respect to specific embodiments thereof, which are illustrated in the accompanying drawings. For better understanding, like elements are designated by like numbered references throughout the various accompanying drawings. With the understanding that the drawings illustrate certain exemplary embodiments, the embodiments are described and explained in further particularity and detail with reference to the accompanying drawings, in which:

[0018] Фиг. 1 иллюстрирует пример службы обработки функций, которая выполнена с возможностью избирательно использовать аппаратное ускорение в соответствии с настоящим раскрытием сущности.[0018] FIG. 1 illustrates an example of a function processing service that is configured to selectively use hardware acceleration in accordance with the present disclosure.

[0019] Фиг. 2 иллюстрирует аспекты службы обработки функций, которая реализует условие аппаратного ускорения на основе числа запросов на то, чтобы выполнять функцию, которые приняты.[0019] FIG. 2 illustrates aspects of a function processing service that implements a hardware acceleration condition based on the number of requests to execute a function that are accepted.

[0020] Фиг. 3 иллюстрирует аспекты службы обработки функций, которая реализует условие аппаратного ускорения на основе числа запросов, которые приняты в течение заданного временного интервала, причем счетчики используются для того, чтобы отслеживать число запросов, которые приняты в связи с различными функциями.[0020] FIG. 3 illustrates aspects of a feature processing service that implements a hardware acceleration condition based on the number of requests that are received during a given time interval, with counters being used to keep track of the number of requests that are received in connection with various functions.

[0021] Фиг. 4 иллюстрирует аспекты службы обработки функций, которая реализует условие аппаратного ускорения на основе числа запросов, которые приняты в течение заданного временного интервала, причем статистическая информация сохраняется относительно предыдущих запросов, которые приняты.[0021] FIG. 4 illustrates aspects of a function processing service that implements a hardware acceleration condition based on the number of requests that are received during a given time interval, with statistical information maintained regarding previous requests that are received.

[0022] Фиг. 5 иллюстрирует аспекты службы обработки функций, которая реализует условие аппаратного ускорения на основе числа запросов на то, чтобы выполнять функцию, которые приняты в связи с любой функцией в семействе связанных функций.[0022] FIG. 5 illustrates aspects of a function processing service that implements a hardware acceleration condition based on the number of requests to execute a function that are received in connection with any function in a family of related functions.

[0023] Фиг. 6 иллюстрирует аспекты службы обработки функций, которая реализует условие аппаратного ускорения на основе оцененного снижения затрат, ассоциированного с использованием аппаратного ускорения для того, чтобы выполнять функцию.[0023] FIG. 6 illustrates aspects of a function processing service that implements a hardware acceleration condition based on the estimated cost savings associated with using hardware acceleration to perform a function.

[0024] Фиг. 7 иллюстрирует аспекты службы обработки функций, которая поддерживает библиотеку функций, и которая реализует условие аппаратного ускорения на основе того, включается уже или нет конкретная функция в библиотеку функций.[0024] FIG. 7 illustrates aspects of a function processing service that maintains a function library, and which implements a hardware acceleration condition based on whether or not a particular function is already included in the function library.

[0025] Фиг. 8 иллюстрирует пример службы обработки функций, для которой множество условий аппаратного ускорения задаются.[0025] FIG. 8 illustrates an example of a function processing service for which a plurality of hardware acceleration conditions are specified.

[0026] Фиг. 9 иллюстрирует пример способа, который может осуществляться посредством модуля оценки условий в системе обработки функций.[0026] FIG. 9 illustrates an example of a method that may be implemented by a condition evaluation module in a function processing system.

[0027] Фиг. 9A иллюстрирует пример альтернативного способа, который может реализовываться посредством модуля оценки условий в варианте осуществления, в котором пользователю обеспечивается возможность выбирать то, может или нет выполняться аппаратное ускорение.[0027] FIG. 9A illustrates an example of an alternative method that may be implemented by a condition evaluation module in an embodiment in which the user is provided with the ability to select whether or not hardware acceleration can be performed.

[0028] Фиг. 10 иллюстрирует пример службы обработки функций, которая поддерживает библиотеку функций.[0028] FIG. 10 illustrates an example of a function processing service that maintains a function library.

[0029] Фиг. 11 иллюстрирует пример способа, который может осуществляться посредством службы обработки функций, показанной на фиг. 10.[0029] FIG. 11 illustrates an example of a method that can be implemented by the function processing service shown in FIG. 10.

[0030] Фиг. 12 иллюстрирует пример аппаратной схемы, которая выполнена с возможностью выполнять две различных функции.[0030] FIG. 12 illustrates an example of a hardware circuit that is configured to perform two different functions.

[0031] Фиг. 13 иллюстрирует пример аппаратной схемы, которая выполнена с возможностью выполнять два различных экземпляра идентичной функции.[0031] FIG. 13 illustrates an example of a hardware circuit that is configured to perform two different instances of an identical function.

[0032] Фиг. 14A-B иллюстрируют пример службы обработки функций, которая периодически переконфигурирует набор аппаратных схем на основе ожидаемой потребности.[0032] FIG. 14A-B illustrate an example of a function processing service that periodically reconfigures a set of hardware circuits based on expected demand.

[0033] Фиг. 15 иллюстрирует пример способа, который может осуществляться посредством службы обработки функций на фиг. 14A-B.[0033] FIG. 15 illustrates an example of a method that may be implemented by the function processing service of FIG. 14A-B.

[0034] Фиг. 16 иллюстрирует определенные компоненты, которые могут включаться в вычислительную систему.[0034] FIG. 16 illustrates certain components that may be included in a computing system.

Подробное описание изобретенияDetailed Description of the Invention

[0035] Настоящее раскрытие сущности, в общем, относится к повышению эффективности службы обработки функций в облачной вычислительной системе. В соответствии с одним аспектом настоящего раскрытия сущности, служба обработки функций может быть выполнена с возможностью избирательно использовать аппаратное ускорение. Более конкретно, служба обработки функций может быть выполнена с возможностью использовать аппаратное ускорение для того, чтобы выполнять функцию, когда выполняется определение в отношении того, что должно быть преимущественным достигать этого. Это определение может выполняться на основе различных факторов, таких как то, насколько часто принимаются запросы на то, чтобы выполнять функцию, то, может или нет скорость обработки увеличиваться на значительную величину, и/то, или могут или нет затраты на обработку уменьшаться на значительную величину.[0035] The present disclosure generally relates to improving the efficiency of a function processing service in a cloud computing system. In accordance with one aspect of the present disclosure, a function processing service may be configured to selectively use hardware acceleration. More specifically, the function processing service may be configured to use hardware acceleration in order to execute a function when a determination is made as to what should be advantageous to achieve it. This determination may be made based on various factors, such as how frequently requests to perform a function are received, whether or not processing speed may or may not increase by a significant amount, and/or whether or not processing costs may be reduced by a significant amount. size.

[0036] В этом контексте, термин "аппаратное ускорение" может означать использование аппаратной схемы для того, чтобы выполнять функцию, причем аппаратная схема специально проектируется или программируется с возможностью выполнять функцию таким образом, что функция может выполняться быстрее, чем если она указывается в программном обеспечении и выполняется на процессоре общего назначения. Термин "аппаратная схема" может в общем означать любую конфигурацию электрически или электромагнитно соединенные компоненты или устройства, отличные от процессора общего назначения. Аппаратная схема может представлять собой интегральную схему. Некоторые примеры аппаратных схем, которые могут использоваться в соответствии с настоящим раскрытием сущности, включают в себя программируемые пользователем вентильные матрицы (FPGA), графические процессоры (GPU), процессоры цифровых сигналов (DSP) и специализированные интегральные схемы (ASIC).[0036] In this context, the term "hardware acceleration" may mean the use of hardware circuitry to perform a function, wherein the hardware circuitry is specifically designed or programmed to perform the function in such a way that the function can be executed faster than if specified in software. software and runs on a general purpose processor. The term "hardware circuit" can generally mean any configuration of electrically or electromagnetically coupled components or devices other than a general purpose processor. The hardware circuit may be an integrated circuit. Some examples of hardware circuits that may be used in accordance with the present disclosure include field programmable gate arrays (FPGAs), graphics processing units (GPUs), digital signal processors (DSPs), and application specific integrated circuits (ASICs).

[0037] Предусмотрено множество различных типов функций, для которых аппаратное ускорение может быть полезным. Некоторые примеры включают в себя обработку, сжатие или шифрование данных, отслеживание местоположения, видеообработку, финансовые транзакции, анализ журналов регистрации, обработку текстов, быструю фильтрацию потоковых данных, веб-хостинг, тренировку машинного обучения (например, линейную регрессию), логический вывод на основе машинного обучения (например, распознавание изображений), обработку сигналов (например, с использованием DSP) и т.д.[0037] There are many different types of functions that can benefit from hardware acceleration. Some examples include data processing, compression or encryption, location tracking, video processing, financial transactions, log analysis, word processing, fast filtering of streaming data, web hosting, machine learning training (e.g. linear regression), inference based on machine learning (for example, image recognition), signal processing (for example, using DSP), etc.

[0038] В некоторых вариантах осуществления, могут задаваться одно или более условий, которые указывают, когда аппаратное ускорение должно использоваться для того, чтобы выполнять функцию. Такие условия могут называться в данном документе "условиями аппаратного ускорения". Когда служба обработки функций принимает запрос на то, чтобы выполнять исходный код, который включает в себя инструкции для того, чтобы выполнять функцию, служба обработки функций может определять то, удовлетворяется или нет какое-либо из заданных условий аппаратного ускорения. Если по меньшей мере одно условие аппаратного ускорения удовлетворяется, то аппаратное ускорение может использоваться для того, чтобы выполнять функцию.[0038] In some embodiments, one or more conditions may be specified that indicate when hardware acceleration should be used in order to perform a function. Such conditions may be referred to herein as “hardware acceleration conditions.” When a function processing service receives a request to execute source code that includes instructions for executing a function, the function processing service may determine whether or not any of the specified hardware acceleration conditions are satisfied. If at least one hardware acceleration condition is satisfied, then hardware acceleration can be used to perform the function.

[0039] В некоторых вариантах осуществления, аппаратное ускорение может выполняться автоматически, без необходимости от пользователя конкретно запрашивать аппаратное ускорение или предоставлять аппаратно-зависимый код, такой как код логики межрегистровых пересылок (RTL) для FPGA. Например, запрос пользователя на то, чтобы выполнять конкретную функцию, может принимать форму запроса на то, чтобы выполнять исходный код. Исходный код типично пишется на высокоуровневом языке программирования, таком как Java, C++, Python и т.п. Система обработки функций, которая принимает такой запрос, может автоматически определять то, должно или нет быть преимущественным использовать аппаратное ускорение для того, чтобы выполнять функцию. Если определяется то, что аппаратное ускорение должно быть полезным, то исходный код может автоматически транслироваться в аппаратно-зависимый код без необходимости дополнительного ввода от пользователя.[0039] In some embodiments, hardware acceleration may be performed automatically, without the user having to specifically request hardware acceleration or provide hardware-dependent code, such as inter-register transfer logic (RTL) code for the FPGA. For example, a user's request to execute a particular function may take the form of a request to execute source code. The source code is typically written in a high-level programming language such as Java, C++, Python, etc. A function processing system that receives such a request may automatically determine whether or not it should preferentially use hardware acceleration in order to execute the function. If it is determined that hardware acceleration would be beneficial, then the source code can be automatically translated into hardware-dependent code without requiring additional input from the user.

[0040] В некоторых вариантах осуществления, до того, как служба обработки функций использует аппаратное ускорение для того, чтобы выполнять функцию, пользователь может уведомляться в отношении возможности использования аппаратного ускорения и иметь возможность выбирать то, может или нет выполняться аппаратное ускорение.[0040] In some embodiments, before the function processing service uses hardware acceleration to perform a function, the user may be notified of the possibility of using hardware acceleration and be able to select whether or not hardware acceleration can be performed.

[0041] Фиг. 1 иллюстрирует пример службы 102 обработки функций, которая выполнена с возможностью избирательно использовать аппаратное ускорение в соответствии с настоящим раскрытием сущности. Служба 102 обработки функций показывается с приемом запроса 104 на то, чтобы выполнять конкретную функцию. Тем не менее, запрос 104 не представляет собой запрос на то, чтобы выполнять функцию через аппаратную схему. Вместо этого, запрос 104 заключается в том, чтобы выполнять исходный код 106. Запрос 104 может приниматься из клиентского устройства 108. Исходный код 106 включает в себя инструкции 110, которые, если выполняются посредством процессора 112 общего назначения, инструктируют конкретной функции выполняться.[0041] FIG. 1 illustrates an example of a function processing service 102 that is configured to selectively use hardware acceleration in accordance with the present disclosure. The function processing service 102 is shown receiving a request 104 to perform a particular function. However, request 104 is not a request to perform a function through hardware circuitry. Instead, request 104 is to execute source code 106. Request 104 may be received from client device 108. Source code 106 includes instructions 110 that, if executed by general purpose processor 112, instruct a particular function to be executed.

[0042] В проиллюстрированном примере, множество условий 114 аппаратного ускорения задаются для службы 102 обработки функций. Помимо этого, служба 102 обработки функций включает в себя компонент, который выполнен с возможностью определять то, удовлетворяется или нет какое-либо из условий 114 аппаратного ускорения. Этот компонент может называться в данном документе "модулем 116 оценки условий".[0042] In the illustrated example, a plurality of hardware acceleration conditions 114 are specified for the function processing service 102 . In addition, the function processing service 102 includes a component that is configured to determine whether or not any of the hardware acceleration conditions 114 are satisfied. This component may be referred to herein as “condition evaluation module 116.”

[0043] В ответ на прием запроса 104, модуль 116 оценки условий определяет то, удовлетворяется или нет какое-либо из условий 114 аппаратного ускорения относительно функции, которая указывается посредством инструкций 110 на исходном коде 106. Если ни одно из условий 114 аппаратного ускорения не удовлетворяется, то служба 102 обработки функций осуществляет запрос 104 посредством инструктирования инструкциям 110 на исходном коде 106 выполняться посредством процессора 112 общего назначения.[0043] In response to receiving request 104, condition evaluator 116 determines whether or not any of the hardware acceleration conditions 114 are satisfied with respect to a function that is specified by instructions 110 in the source code 106. If none of the hardware acceleration conditions 114 are satisfied is satisfied, then the function processing service 102 makes the request 104 by causing instructions 110 on the source code 106 to be executed by the general purpose processor 112.

[0044] Тем не менее, если по меньшей мере одно из условий 114 аппаратного ускорения удовлетворяется, то аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Служба 102 обработки функций включает в себя компонент, который выполнен с возможностью упрощать использование аппаратного ускорения. Этот компонент может называться в данном документе "компонентом 124 аппаратного ускорения". Компонент 124 аппаратного ускорения может быть выполнен с возможностью транслировать инструкции 110 на исходном коде 106 в аппаратно-зависимый код 120, соответствующий аппаратной схеме 122. После того как аппаратно-зависимый код 120 формировался, компонент 124 аппаратного ускорения затем может конфигурировать аппаратную схему 122 на основе аппаратно-зависимого кода 120 и инструктировать аппаратной схеме 122 выполнять функцию. Аппаратная схема 122 затем может выполнять функцию и формировать конкретный результат 126. Служба 102 обработки функций затем может предоставлять этот результат 126 в запрашивающий объект, который представляет собой клиентское устройство 108 в проиллюстрированном примере.[0044] However, if at least one of the hardware acceleration conditions 114 is satisfied, then hardware acceleration can be used to perform the function. The function processing service 102 includes a component that is configured to facilitate the use of hardware acceleration. This component may be referred to herein as “hardware acceleration component 124.” Hardware acceleration component 124 may be configured to translate instructions 110 on source code 106 into hardware-dependent code 120 corresponding to hardware circuit 122. After hardware-dependent code 120 has been generated, hardware acceleration component 124 can then configure hardware circuit 122 based on hardware-dependent code 120 and instruct hardware circuit 122 to perform the function. The hardware circuit 122 can then execute the function and generate a particular result 126. The function processing service 102 can then provide this result 126 to the requesting entity, which is the client device 108 in the illustrated example.

[0045] Предусмотрено множество различных типов условий аппаратного ускорения, которые могут задаваться в соответствии с настоящим раскрытием сущности. Например, условие аппаратного ускорения, связанное с конкретной функцией, может быть основано на том, сколько запросов на то, чтобы выполнять функцию, принято. В некоторых вариантах осуществления, условие аппаратного ускорения может задаваться с точки зрения порогового значения, которое указывает минимальное число запросов на то, чтобы выполнять конкретную функцию, которая должна приниматься, чтобы оправдывать использование аппаратного ускорения для этой функции. Число таких запросов, которые принимаются посредством службы обработки функций, затем может подсчитываться и сравниваться с пороговым значением. Если число таких запросов, которые принимаются, превышает пороговое значение, то условие аппаратного ускорения удовлетворяется, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию.[0045] There are many different types of hardware acceleration conditions that can be set in accordance with the present disclosure. For example, the hardware acceleration condition associated with a particular function may be based on how many requests to execute the function are accepted. In some embodiments, the hardware acceleration condition may be specified in terms of a threshold value that specifies the minimum number of requests to perform a particular function that must be accepted to justify the use of hardware acceleration for that function. The number of such requests that are received by the function processing service can then be counted and compared to a threshold. If the number of such requests that are received exceeds the threshold, then the hardware acceleration condition is satisfied and hardware acceleration can be used to execute the function.

[0046] Фиг. 2 иллюстрирует аспекты службы 202 обработки функций, которая реализует условие 214 аппаратного ускорения на основе числа запросов на то, чтобы выполнять функцию, которые приняты.[0046] FIG. 2 illustrates aspects of a function processing service 202 that implements a hardware acceleration condition 214 based on the number of requests to execute a function that are accepted.

[0047] Служба 202 обработки функций может задавать пороговое значение 228, которое указывает минимальное число запросов на то, чтобы выполнять конкретную функцию, которая должна приниматься, чтобы оправдывать использование аппаратного ускорения для функции. Служба 202 обработки функций также может отслеживать число запросов, которые приняты в связи с различными функциями. В проиллюстрированном варианте осуществления, служба 202 обработки функций использует счетчики 232, соответствующие множеству функций, которые могут выполняться посредством службы 202 обработки функций. Фиг. 2 показывает службу 202 обработки функций со счетчиком 232a, указывающим число запросов, которые приняты для того, чтобы выполнять функцию A, счетчиком 232b, указывающим число запросов, которые приняты для того, чтобы выполнять функцию B, и счетчиком 232c, указывающим число запросов, которые приняты для того, чтобы выполнять функцию C.[0047] Function processing service 202 may define a threshold 228 that specifies the minimum number of requests to execute a particular function that must be accepted to justify using hardware acceleration for the function. The function processing service 202 may also keep track of the number of requests that are received in connection with various functions. In the illustrated embodiment, function processing service 202 uses counters 232 corresponding to a plurality of functions that can be performed by function processing service 202. Fig. 2 shows a function processing service 202 with a counter 232a indicating the number of requests that are received to perform function A, a counter 232b indicating the number of requests that are received to perform function B, and a counter 232c indicating the number of requests that adopted in order to perform the function C.

[0048] Служба 202 обработки функций также может включать в себя компонент, который выполнен с возможностью обновлять счетчики 232, когда запросы на то, чтобы выполнять конкретные функции, принимаются. Этот компонент может называться в данном документе "компонентом 234 обновления счетчиков". Когда служба 202 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), компонент 234 обновления счетчиков может постепенно увеличивать соответствующий счетчик (например, счетчик 232a выполнения функции A).[0048] The function processing service 202 may also include a component that is configured to update the counters 232 when requests to perform specific functions are received. This component may be referred to herein as the “counter update component 234.” When function processing service 202 receives a request to perform a particular function (eg, function A), counter update component 234 may increment the corresponding counter (eg, function A execution counter 232a).

[0049] Служба 202 обработки функций включает в себя модуль 216 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет условие 214 аппаратного ускорения. Условие 214 аппаратного ускорения может задаваться таким образом, что аппаратное ускорение выполняется для конкретной функции, если значение соответствующего счетчика 232 превышает заданное пороговое значение 228. Таким образом, когда служба 202 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), модуль 216 оценки условий может сравнивать значение счетчика 232, соответствующего этой функции (например, счетчика 232a выполнения функции A), с пороговым значением 228. Если значение соответствующего счетчика 232 превышает пороговое значение 228, модуль 216 оценки условий может приходить к заключению, что условие 214 аппаратного ускорения удовлетворяется, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Тем не менее, если значение соответствующего счетчика 232 меньше порогового значения 228, модуль 216 оценки условий может приходить к заключению, что условие 214 аппаратного ускорения не удовлетворяется. Если отсутствует другое условие аппаратного ускорения, которое было удовлетворено для функции, то функция может выполняться с использованием процессора общего назначения.[0049] The function processing service 202 includes a condition evaluation module 216, which is configured to determine whether the hardware acceleration condition 214 is satisfied or not. The hardware acceleration condition 214 may be set such that hardware acceleration is performed for a particular function if the value of the corresponding counter 232 exceeds a predetermined threshold 228. Thus, when the function processing service 202 receives a request to perform a specific function (for example, function A ), condition evaluator 216 may compare the value of a counter 232 corresponding to the function (eg, function A execution counter 232a) with a threshold value 228. If the value of the corresponding counter 232 exceeds threshold 228, condition evaluator 216 may conclude that hardware acceleration condition 214 is satisfied and hardware acceleration can be used to execute the function. However, if the value of the corresponding counter 232 is less than the threshold value 228, the condition evaluator 216 may conclude that the hardware acceleration condition 214 is not satisfied. If there is no other hardware acceleration condition that has been satisfied for the function, then the function can be executed using a general purpose processor.

[0050] В некоторых вариантах осуществления, условие аппаратного ускорения может задаваться таким образом, что аппаратное ускорение выполняется для конкретной функции, только если определенное число запросов на то, чтобы выполнять функцию, принято в течение заданного временного интервала. В таких вариантах осуществления, служба обработки функций может задавать как пороговое значение, так и релевантный временной интервал. Пороговое значение может указывать минимальное число запросов на то, чтобы выполнять конкретную функцию, которая должна приниматься в течение временного интервала, с тем чтобы оправдывать использование аппаратного ускорения для функции.[0050] In some embodiments, a hardware acceleration condition may be set such that hardware acceleration is performed for a particular function only if a certain number of requests to execute the function are received within a given time interval. In such embodiments, the function processing service may specify both the threshold value and the relevant time interval. The threshold may specify the minimum number of requests to execute a particular function that must be accepted during a time interval in order to justify the use of hardware acceleration for the function.

[0051] Например, предположим, что пороговое значение составляет N (где N представляет положительное целое число), и временной интервал составляет одну неделю. В том случае, если более N запросов на то, чтобы выполнять конкретную функцию, принимаются в течение идентичной недели, то может считаться, что условие аппаратного ускорения было удовлетворено, и аппаратное ускорение может выполняться. Тем не менее, если более N запросов на то, чтобы выполнять конкретную функцию, принимаются, но не в течение идентичной недели, то можно приходить к выводу, что условие аппаратного ускорения не удовлетворяется.[0051] For example, assume that the threshold value is N (where N represents a positive integer) and the time interval is one week. In the event that more than N requests to perform a particular function are received during the same week, then the hardware acceleration condition can be considered to have been satisfied and hardware acceleration can be performed. However, if more than N requests to perform a particular function are accepted, but not within the same week, then we can conclude that the hardware acceleration condition is not satisfied.

[0052] Предусмотрены различные способы того, что такое временное ограничение может реализовываться. В некоторых вариантах осуществления, служба обработки функций может использовать счетчики, соответствующие функциям, которые могут выполняться посредством службы обработки функций, и счетчики могут периодически сбрасываться на основе временного интервала, который задается для условия аппаратного ускорения. Например, если заданный временной интервал составляет одну неделю, то счетчики могут сбрасываться один раз в неделю.[0052] There are various ways in which such a time limit can be implemented. In some embodiments, the function processing service may use counters corresponding to functions that can be executed by the function processing service, and the counters may be reset periodically based on a time interval that is set for the hardware acceleration condition. For example, if the specified time interval is one week, then the counters can be reset once a week.

[0053] В некоторых вариантах осуществления, служба обработки функций может сохранять статистическую информацию, которая включает в себя информацию относительно предыдущих запросов, которые приняты. Информация, которая сохраняется относительно конкретного запроса, может включать в себя информацию, идентифицирующую запрашиваемую функцию, а также временную метку, указывающую то, когда принят запрос. В таких вариантах осуществления, сохраненная статистическая информация может запрашиваться, чтобы определять то, сколько запросов на то, чтобы выполнять конкретную функцию, принято в течение определенного периода времени. Например, если запрос на то, чтобы выполнять конкретную функцию, принимается во время t, статистическая информация может запрашиваться, чтобы определять то, сколько запросов на то, чтобы выполнять эту функцию, принято в течение периода времени, соответствующего заданному временному интервалу (например, заданному временному интервалу, непосредственно предшествующему времени t). Результат этого запроса затем может сравниваться с пороговым значением, чтобы определять то, удовлетворяется или нет условие аппаратного ускорения.[0053] In some embodiments, the function processing service may store statistical information that includes information regarding previous requests that were accepted. Information that is stored regarding a particular request may include information identifying the requested function as well as a timestamp indicating when the request was received. In such embodiments, stored statistical information may be queried to determine how many requests to perform a particular function are received during a certain period of time. For example, if a request to perform a particular function is received at time t, statistical information may be requested to determine how many requests to perform that function are received during a time period corresponding to a given time interval (e.g., a given time interval immediately preceding time t). The result of this query can then be compared to a threshold to determine whether the hardware acceleration condition is satisfied or not.

[0054] Фиг. 3 иллюстрирует аспекты службы 302 обработки функций, которая реализует условие 314 аппаратного ускорения на основе числа запросов, которые приняты в течение заданного временного интервала 330, причем счетчики 332 используются для того, чтобы отслеживать число запросов, которые приняты в связи с различными функциями. Фиг. 3 показывает службу 302 обработки функций со счетчиком 332a, указывающим число запросов, которые приняты для того, чтобы выполнять функцию A, счетчиком 332b, указывающим число запросов, которые приняты для того, чтобы выполнять функцию B, и счетчиком 332c, указывающим число запросов, которые приняты для того, чтобы выполнять функцию C. Служба 302 обработки функций включает в себя компонент 334 обновления счетчиков, который выполнен с возможностью обновлять счетчики 332, когда запросы на то, чтобы выполнять конкретные функции, принимаются.[0054] FIG. 3 illustrates aspects of a function processing service 302 that implements a hardware acceleration condition 314 based on the number of requests that are received during a given time interval 330, with counters 332 being used to keep track of the number of requests that are received in connection with various functions. Fig. 3 shows a function processing service 302 with a counter 332a indicating the number of requests that are received to perform function A, a counter 332b indicating the number of requests that are received to perform function B, and a counter 332c indicating the number of requests that are received in order to perform function C. The function processing service 302 includes a counter update component 334 that is configured to update the counters 332 when requests to perform specific functions are received.

[0055] В проиллюстрированном варианте осуществления, пороговое значение 328 указывает минимальное число запросов на то, чтобы выполнять конкретную функцию, которая должна приниматься в течение заданного временного интервала 330, чтобы оправдывать использование аппаратного ускорения для функции. Счетчики 332 могут периодически сбрасываться на основе временного интервала 330, который задается для условия 314 аппаратного ускорения.[0055] In the illustrated embodiment, threshold 328 indicates the minimum number of requests to execute a particular function that must be received within a given time interval 330 to justify using hardware acceleration for the function. The counters 332 may be reset periodically based on a time interval 330 that is set for the hardware acceleration condition 314 .

[0056] Служба 302 обработки функций может использовать таймер 336 для того, чтобы отслеживать то, когда должны сбрасываться счетчики 332. В некоторых вариантах осуществления, таймер 336 может представлять собой таймер обратного отсчета, и значение таймера обратного отсчета может задаваться равным заданному временному интервалу 330. Счетчики 332 могут сбрасываться каждый раз, когда истекает таймер обратного отсчета. Альтернативно, таймер 336 может представлять собой таймер прямого отсчета, и счетчики 332 могут сбрасываться каждый раз, когда таймер прямого отсчета достигает значения, которое является эквивалентным заданному временному интервалу 330.[0056] Function processing service 302 may use timer 336 to keep track of when counters 332 should be reset. In some embodiments, timer 336 may be a countdown timer, and the value of the countdown timer may be set to a predetermined time interval 330 The counters 332 can be reset each time the countdown timer expires. Alternatively, timer 336 may be an up timer, and counters 332 may be reset each time the up timer reaches a value that is equivalent to a predetermined time interval 330.

[0057] Когда служба 302 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), модуль 316 оценки условий может сравнивать значение счетчика 332, соответствующего этой функции (например, счетчика 332a выполнения функции A), с пороговым значением 328. Если значение соответствующего счетчика 332 превышает пороговое значение 328, аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Тем не менее, если значение соответствующего счетчика 332 меньше порогового значения 328, функция может выполняться с использованием процессора общего назначения.[0057] When function processing service 302 receives a request to perform a particular function (e.g., function A), condition evaluator 316 may compare the value of a counter 332 corresponding to that function (e.g., function A execution counter 332a) with a threshold value 328 If the value of the corresponding counter 332 exceeds the threshold 328, hardware acceleration can be used to perform the function. However, if the value of the corresponding counter 332 is less than the threshold 328, the function can be executed using a general purpose processor.

[0058] Фиг. 4 иллюстрирует аспекты службы 402 обработки функций, которая реализует условие аппаратного ускорения 414 на основе числа запросов, которые приняты в течение заданного временного интервала 430, причем статистическая информация сохраняется относительно предыдущих запросов, которые приняты.[0058] FIG. 4 illustrates aspects of a function processing service 402 that implements a hardware acceleration condition 414 based on the number of requests that are received during a given time interval 430, with statistical information stored regarding previous requests that are received.

[0059] Как указано выше, служба 402 обработки функций может задавать пороговое значение 428, которое указывает минимальное число запросов на то, чтобы выполнять конкретную функцию, которая должна приниматься в течение заданного временного интервала 430, чтобы оправдывать использование аппаратного ускорения для функции.[0059] As discussed above, function processing service 402 may define a threshold 428 that specifies the minimum number of requests to execute a particular function that must be received within a given time interval 430 to justify using hardware acceleration for the function.

[0060] Статистическая информация может сохраняться в базе 448 данных. Статистическая информация может включать в себя множество записей 440, и каждая запись 440 может соответствовать конкретному запросу, который служба 402 обработки функций принимает. Более конкретно, каждая запись 440 может включать в себя информацию, идентифицирующую запрашиваемую функцию, а также временную метку, указывающую то, когда принят запрос. Фиг. 4 показывает статистическую информацию с записью 440a, соответствующей запросу на то, чтобы обрабатывать функцию A, записью 440b, соответствующей запросу на то, чтобы обрабатывать функцию B, записью 440c, соответствующей другому запросу на то, чтобы обрабатывать функцию A, и записью 440d, соответствующей запросу на то, чтобы обрабатывать функцию C. Записи-440a-d включают в себя временные метки. Временная метка в конкретной записи 440 указывает время, в которое принят соответствующий запрос.[0060] Statistical information may be stored in the database 448 . The statistical information may include a plurality of entries 440, and each entry 440 may correspond to a particular request that the function processing service 402 receives. More specifically, each entry 440 may include information identifying the requested function as well as a timestamp indicating when the request was received. Fig. 4 shows statistical information with an entry 440a corresponding to a request to process function A, an entry 440b corresponding to a request to process function B, an entry 440c corresponding to another request to process function A, and an entry 440d corresponding to request to process function C. Records-440a-d include timestamps. The timestamp in a particular entry 440 indicates the time at which the corresponding request was received.

[0061] Служба 402 обработки функций включает в себя модуль 416 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет условие 414 аппаратного ускорения. Модуль 416 оценки условий может включать в себя компонент 446 выполнения запросов, который допускает выполнение запроса в базу 448 данных, чтобы определять то, сколько запросов на то, чтобы выполнять конкретную функцию, принято в течение определенного периода времени. Например, если запрос на то, чтобы выполнять конкретную функцию, принимается во время t, компонент 446 выполнения запросов может выполнять запрос в базу 448 данных, чтобы определять то, сколько запросов на то, чтобы выполнять эту функцию, принято в течение периода времени, соответствующего заданному временному интервалу 430 (например, заданному временному интервалу 430, непосредственно предшествующему времени t). Результат этого запроса затем может сравниваться с пороговым значением 428, чтобы определять то, удовлетворяется или нет условие аппаратного ускорения 414.[0061] The function processing service 402 includes a condition evaluation module 416, which is configured to determine whether the hardware acceleration condition 414 is satisfied or not. The condition evaluation module 416 may include a query execution component 446 that allows a query to be made to the database 448 to determine how many requests to perform a particular function are accepted during a certain period of time. For example, if a request to perform a particular function is received at time t, request fulfillment component 446 may query database 448 to determine how many requests to perform that function are received during the time period corresponding a given time interval 430 (eg, a given time interval 430 immediately preceding time t). The result of this query may then be compared to a threshold 428 to determine whether or not the hardware acceleration condition 414 is satisfied.

[0062] Вместо задания условия аппаратного ускорения с точки зрения порогового значения для конкретной функции, условие аппаратного ускорения вместо этого может задаваться с точки зрения порогового значения для семейства связанных функций. Другими словами, условие аппаратного ускорения может задаваться таким образом, что каждый раз, когда принимается запрос для того, чтобы выполнять любую функцию в семействе связанных функций, оно подсчитывается к удовлетворению пороговому значению. Если число таких запросов, которые принимаются в течение временного интервала, превышает пороговое значение, то может считаться, что условие аппаратного ускорения было удовлетворено, и аппаратное ускорение может использоваться для того, чтобы выполнять любую функцию в семействе связанных функций.[0062] Instead of specifying the hardware acceleration condition in terms of a threshold value for a particular function, the hardware acceleration condition may instead be defined in terms of a threshold value for a family of related functions. In other words, the hardware acceleration condition can be set such that each time a request is received to perform any function in a family of related functions, it counts toward satisfying the threshold. If the number of such requests that are received during a time interval exceeds a threshold, then the hardware acceleration condition can be considered to have been satisfied, and hardware acceleration can be used to perform any function in a family of related functions.

[0063] В вариантах осуществления, в которых условие аппаратного ускорения задается с точки зрения порогового значения для семейства связанных функций, условие аппаратного ускорения может реализовываться с или без временного ограничения. Другими словами, в некоторых вариантах осуществления пороговое значение может задаваться с точки зрения общего числа запросов, которые приняты в связи с любой функцией в семействе связанных функций, независимо от того, когда эти запросы принимаются. Альтернативно, в других вариантах осуществления пороговое значение может задаваться с точки зрения общего числа запросов, которые приняты в связи с любой функцией в семействе связанных функций в течение заданного временного интервала. В вариантах осуществления, в которых условие аппаратного ускорения задается с точки зрения порогового значения для семейства связанных функций, и временное ограничение используется, временное ограничение может реализовываться множеством способов, в том числе способами, поясненными выше (например, как счетчики и статистическая информация).[0063] In embodiments in which the hardware acceleration condition is specified in terms of a threshold value for a family of related functions, the hardware acceleration condition may be implemented with or without a time limit. In other words, in some embodiments, the threshold may be set in terms of the total number of requests that are received in connection with any function in a family of related functions, regardless of when those requests are received. Alternatively, in other embodiments, the threshold may be set in terms of the total number of requests that are received in connection with any function in a family of related functions during a given time interval. In embodiments in which a hardware acceleration condition is specified in terms of a threshold value for a family of related functions and a timing constraint is used, the timing constraint may be implemented in a variety of ways, including the methods explained above (eg, as counters and statistics).

[0064] Фиг. 5 иллюстрирует аспекты службы 502 обработки функций, которая реализует условие 514 аппаратного ускорения на основе числа запросов на то, чтобы выполнять функцию, которые приняты в связи с любой функцией в семействе связанных функций. Для простоты, временные ограничения не используются в проиллюстрированном варианте осуществления.[0064] FIG. 5 illustrates aspects of a function processing service 502 that implements a hardware acceleration condition 514 based on the number of requests to execute a function that are received in connection with any function in a family of related functions. For simplicity, timing restrictions are not used in the illustrated embodiment.

[0065] Служба 502 обработки функций может задавать пороговое значение 528, которое указывает минимальное число запросов на то, чтобы выполнять любую функцию в семействе связанных функций, которые должны приниматься, чтобы оправдывать использование аппаратного ускорения для функций в этом семействе. Служба 502 обработки функций также может отслеживать число запросов, которые приняты в связи с различными семействами функций. В проиллюстрированном варианте осуществления, служба 502 обработки функций использует счетчики 532, соответствующие различным семействам функций, которые могут выполняться посредством службы 502 обработки функций. Предполагается, что задаются, по меньшей мере, два семейства функций: (i) первое семейство функций, которое включает в себя функцию A, функцию B и функцию C, и (ii) второе семейство функций, которое включает в себя функцию D, функцию E и функцию F. Фиг. 5 показывает службу 502 обработки функций с первым счетчиком 532a и вторым счетчиком 532b. Первый счетчик 532a указывает число запросов, которые приняты для того, чтобы выполнять любую из функций в первом семействе функций (функцию A, функцию B или функцию C). Второй счетчик 532b указывает число запросов, которые приняты для того, чтобы выполнять любую из функций во втором семействе функций (функцию D, функцию E или функцию F).[0065] Function processing service 502 may define a threshold 528 that specifies the minimum number of requests to execute any function in a family of related functions that must be accepted to justify the use of hardware acceleration for functions in that family. The feature processing service 502 may also track the number of requests that are received in connection with various feature families. In the illustrated embodiment, function processing service 502 uses counters 532 corresponding to different families of functions that can be performed by function processing service 502. It is assumed that at least two families of functions are specified: (i) a first family of functions which includes function A, function B and function C, and (ii) a second family of functions which includes function D, function E and function F. FIG. 5 shows a function processing service 502 with a first counter 532a and a second counter 532b. The first counter 532a indicates the number of requests that are received to perform any of the functions in the first family of functions (function A, function B, or function C). A second counter 532b indicates the number of requests that are received to perform any of the functions in the second family of functions (function D, function E, or function F).

[0066] Служба 502 обработки функций также может включать в себя компонент 534 обновления счетчиков, который выполнен с возможностью обновлять счетчики 532, когда запросы на то, чтобы выполнять конкретные функции, принимаются. Когда служба 502 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию, компонент 534 обновления счетчиков может постепенно увеличивать соответствующий счетчик 532. Поскольку счетчики 532 соответствуют конкретным семействам функций, запросы на то, чтобы выполнять различные функции, могут инструктировать идентичному счетчику 532 обновляться. Например, если служба 502 обработки функций принимает запрос на то, чтобы выполнять функцию A, первый счетчик 532a может обновляться, поскольку первый счетчик 532a соответствует идентичному семейству функций, которым принадлежит функция A. Если служба 502 обработки функций затем принимает запрос на то, чтобы выполнять функцию B, первый счетчик 532a может еще раз обновляться, поскольку функция B принадлежит идентичному семейству с функцией A. Тем не менее, если служба 502 обработки функций затем принимает запрос на то, чтобы выполнять функцию D, другой счетчик (в частности, второй счетчик 532b) может обновляться, поскольку функция D принадлежит семейству, отличному от семейства для функции A и функции B.[0066] The function processing service 502 may also include a counter update component 534 that is configured to update the counters 532 when requests to perform specific functions are received. When function processing service 502 receives a request to perform a particular function, counter update component 534 may incrementally increment the corresponding counter 532. Because counters 532 correspond to specific families of functions, requests to perform different functions may cause an identical counter 532 to be updated. For example, if function processing service 502 receives a request to perform function A, the first counter 532a may be updated because the first counter 532a corresponds to an identical family of functions to which function A belongs. If function processing service 502 then receives the request to perform function B, the first counter 532a may be updated once again because function B belongs to the same family as function A. However, if function processing service 502 then receives a request to perform function D, another counter (specifically, second counter 532b ) can be updated because feature D belongs to a different family than feature A and feature B.

[0067] Служба 502 обработки функций включает в себя модуль 516 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет условие 514 аппаратного ускорения. Условие 514 аппаратного ускорения может задаваться таким образом, что аппаратное ускорение выполняется для конкретной функции, если значение релевантного счетчика 532 (т.е. счетчика 532, соответствующего семейству функций, которым принадлежит указанная функция), превышает заданное пороговое значение 528. Таким образом, когда служба 502 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), модуль 516 оценки условий может сравнивать значение счетчика 532, соответствующего семейству функций, которым принадлежит указанная функция (например, первого счетчика 532a), с пороговым значением 528. Если значение соответствующего счетчика 532 превышает пороговое значение 528, модуль 516 оценки условий может приходить к заключению, что условие 514 аппаратного ускорения удовлетворяется, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Тем не менее, если значение соответствующего счетчика 532 меньше порогового значения 528, модуль 516 оценки условий может приходить к заключению, что условие 514 аппаратного ускорения не удовлетворяется. Если другое условие аппаратного ускорения не было удовлетворено для функции, функция может выполняться с использованием процессора общего назначения.[0067] The function processing service 502 includes a condition evaluation module 516, which is configured to determine whether the hardware acceleration condition 514 is satisfied or not. The hardware acceleration condition 514 may be specified such that hardware acceleration occurs for a particular function if the value of the relevant counter 532 (i.e., the counter 532 corresponding to the family of functions to which the specified function belongs) exceeds a predetermined threshold value 528. Thus, when Function processing service 502 receives a request to perform a specific function (eg, function A), condition evaluator 516 may compare the value of a counter 532 corresponding to the family of functions to which the specified function belongs (eg, first counter 532a) with a threshold value 528 If the value of the corresponding counter 532 exceeds the threshold 528, the condition evaluation module 516 may conclude that the hardware acceleration condition 514 is satisfied, and the hardware acceleration can be used to perform the function. However, if the value of the corresponding counter 532 is less than the threshold 528, the condition evaluator 516 may conclude that the hardware acceleration condition 514 is not satisfied. If another hardware acceleration condition has not been met for a function, the function can be executed using a general purpose processor.

[0068] В некоторых вариантах осуществления, условие аппаратного ускорения может быть основано на оцененном снижении затрат, ассоциированном с использованием аппаратного ускорения для того, чтобы выполнять функцию, по сравнению с выполнением функции через процессор общего назначения. Вообще говоря, меньше энергии требуется для того, чтобы выполнять функцию через аппаратное ускорение, чем для того, чтобы выполнять функцию через процессор общего назначения. Это энергосбережение также может приводить к снижению затрат. Если снижение затрат является достаточно высоким, то это может оправдывать использование аппаратного ускорения для того, чтобы выполнять функцию.[0068] In some embodiments, the hardware acceleration condition may be based on an estimated cost reduction associated with using hardware acceleration to perform a function compared to executing the function through a general purpose processor. Generally speaking, less power is required to execute a function through hardware acceleration than to execute a function through a general purpose processor. These energy savings can also lead to lower costs. If the cost savings are high enough, then it may justify using hardware acceleration to perform the function.

[0069] В некоторых вариантах осуществления, условие аппаратного ускорения может задаваться с точки зрения порогового значения, которое указывает минимальное оцененное снижение затрат, которое должно оправдывать использование аппаратного ускорения. Когда аппаратное ускорение рассматривается для конкретной функции, снижение затрат для использования аппаратного ускорения может оцениваться. Это оцененное снижение затрат затем может сравниваться с пороговым значением. Если оцененное снижение затрат превышает пороговое значение, то можно приходить к выводу, что условие аппаратного ускорения было удовлетворено, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию.[0069] In some embodiments, the hardware acceleration condition may be specified in terms of a threshold value that indicates the minimum estimated cost reduction that must justify the use of hardware acceleration. When hardware acceleration is considered for a specific function, the cost savings for using hardware acceleration can be assessed. This estimated cost reduction can then be compared to a threshold value. If the estimated cost reduction exceeds the threshold, then it can be concluded that the hardware acceleration condition has been satisfied and hardware acceleration can be used to perform the function.

[0070] Некоторые примеры факторов, которые могут рассматриваться в связи с определением снижения затрат для использования аппаратного ускорения, включают в себя (i) затраты процессора общего назначения в секунду выполнения, (ii) затраты энергии, которая потребляется, и (iii) произведение энергии и задержки. Каждый из этих факторов может взвешиваться независимо в модели затрат.[0070] Some examples of factors that may be considered in connection with determining the cost savings for using hardware acceleration include (i) the cost of a general purpose processor per second of execution, (ii) the cost of the energy that is consumed, and (iii) the product of energy and delays. Each of these factors can be weighted independently in a cost model.

[0071] В качестве примера, допустим, что базовая функция требует I инструкций и T секунд для завершения на процессоре общего назначения, затраты процессора составляют C, и энергия, требуемая для того, чтобы завершать операцию, составляет E джоулей. С использованием аппаратного ускорения, операции могут завершаться за Ta=T/k1 секунд и используют E/k2 джоулей энергии. Кроме того, затраты времени ускорителя могут составлять C/(k3*Ta). Параметр k1 указывает то, насколько быстрее функция может выполняться с использованием аппаратного ускорения по сравнению с использованием процессора общего назначения. Параметр k2 указывает то, сколько энергии может экономиться с использованием аппаратного ускорения по сравнению с использованием процессора общего назначения. Параметр k3 указывает то, насколько менее дорогим является использование аппаратного ускорения по сравнению с использованием процессора общего назначения. Параметры k1, k2 и k3 могут измеряться для определенных операций, и эти измерения могут использоваться для того, чтобы оценивать эти параметры для других операций.[0071] As an example, assume that a basic function requires I instructions and T seconds to complete on a general purpose processor, the processor overhead is C, and the energy required to complete the operation is E joules. Using hardware acceleration, operations can be completed in Ta=T/k1 seconds and use E/k2 joules of energy. In addition, the accelerator time consumption can be C/(k3*Ta). The k1 parameter indicates how much faster the function can be executed using hardware acceleration compared to using a general purpose processor. The k2 parameter indicates how much power can be saved using hardware acceleration compared to using a general purpose processor. The k3 parameter indicates how much less expensive it is to use hardware acceleration compared to using a general purpose processor. The parameters k1, k2 and k3 can be measured for certain operations, and these measurements can be used to estimate these parameters for other operations.

[0072] Фиг. 6 иллюстрирует аспекты службы 602 обработки функций, которая реализует условие 614 аппаратного ускорения на основе оцененного снижения затрат, ассоциированного с использованием аппаратного ускорения для того, чтобы выполнять функцию. Как указано выше, служба 602 обработки функций может задавать пороговое значение 628, которое указывает минимальное оцененное снижение затрат, которое должно оправдывать использование аппаратного ускорения.[0072] FIG. 6 illustrates aspects of a function processing service 602 that implements a hardware acceleration condition 614 based on the estimated cost savings associated with using hardware acceleration to perform a function. As discussed above, function processing service 602 may set a threshold 628 that indicates the minimum estimated cost reduction that must justify the use of hardware acceleration.

[0073] Служба 602 обработки функций может включать в себя компонент, который выполнен с возможностью получать оценки 654 снижения затрат для использования аппаратного ускорения в связи с конкретными функциями. Этот компонент может называться в данном документе "модулем 652 оценки снижения затрат". Фиг. 6 показывает несколько примеров оценок 654 снижения затрат, включающих в себя оценку 654a снижения затрат для функции A, оценку 654b снижения затрат для функции B и оценку 654c снижения затрат для функции C.[0073] The function processing service 602 may include a component that is configured to obtain cost reduction estimates 654 for the use of hardware acceleration in connection with specific functions. This component may be referred to herein as “cost reduction evaluation module 652.” Fig. 6 shows several examples of cost reduction estimates 654, including cost reduction estimate 654a for function A, cost reduction estimate 654b for function B, and cost reduction estimate 654c for function C.

[0074] Служба 602 обработки функций включает в себя модуль 616 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет условие 614 аппаратного ускорения. Условие 614 аппаратного ускорения может задаваться таким образом, что аппаратное ускорение выполняется для конкретной функции, если значение соответствующей оценки 654 снижения затрат превышает заданное пороговое значение 628. Таким образом, когда служба 602 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), модуль 616 оценки условий может сравнивать значение оценки 654 снижения затрат, соответствующей этой функции (например, оценки 654a снижения затрат, соответствующей функции A), с пороговым значением 628. Если значение соответствующей оценки 654 снижения затрат превышает пороговое значение 628, модуль 616 оценки условий может приходить к заключению, что условие 614 аппаратного ускорения удовлетворяется, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Тем не менее, если значение соответствующей оценки 654 снижения затрат меньше порогового значения 628, модуль 616 оценки условий может приходить к заключению, что условие 614 аппаратного ускорения не удовлетворяется. Если другое условие аппаратного ускорения не было удовлетворено для функции, функция может выполняться с использованием процессора общего назначения.[0074] The function processing service 602 includes a condition evaluation module 616, which is configured to determine whether the hardware acceleration condition 614 is satisfied or not. The hardware acceleration condition 614 may be set such that hardware acceleration is performed for a particular function if the value of the corresponding cost reduction estimate 654 exceeds a predetermined threshold 628. Thus, when the function processing service 602 receives a request to perform a specific function (e.g. function A), the condition evaluation module 616 may compare the value of the cost reduction estimate 654 corresponding to that function (eg, the cost reduction estimate 654a corresponding to function A) with a threshold value 628. If the value of the corresponding cost reduction estimate 654 exceeds the threshold 628, the module Condition evaluation 616 may conclude that hardware acceleration condition 614 is satisfied, and hardware acceleration can be used to perform the function. However, if the value of the corresponding cost reduction estimate 654 is less than the threshold 628, the condition evaluation module 616 may conclude that the hardware acceleration condition 614 is not satisfied. If another hardware acceleration condition has not been met for a function, the function can be executed using a general purpose processor.

[0075] В некоторых вариантах осуществления, библиотека функций может поддерживаться. Функции могут добавляться в библиотеку функций на постоянной основе. В этом контексте, термин "библиотека функций" может означать библиотеку функций, которые реализуются в аппаратных схемах. В таких вариантах осуществления, условие аппаратного ускорения может быть основано на том, включается уже или нет конкретная функция в библиотеку функций. Например, когда аппаратное ускорение рассматривается для конкретной функции, определение может выполняться в отношении того, включается уже или нет эта функция в библиотеку функций. Если включается, то можно приходить к выводу, что условие аппаратного ускорения было удовлетворено, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию.[0075] In some embodiments, a library of functions may be maintained. Functions can be added to the function library on an ongoing basis. In this context, the term "function library" may mean a library of functions that are implemented in hardware circuits. In such embodiments, the hardware acceleration condition may be based on whether or not a particular function is already included in the function library. For example, when hardware acceleration is being considered for a particular feature, a determination may be made regarding whether or not that feature is already included in the feature library. If enabled, we can conclude that the hardware acceleration condition has been satisfied and hardware acceleration can be used to perform the function.

[0076] Фиг. 7 иллюстрирует аспекты службы 702 обработки функций, которая поддерживает библиотеку функций, и которая реализует условие 714 аппаратного ускорения на основе того, включается уже или нет конкретная функция в библиотеку функций.[0076] FIG. 7 illustrates aspects of a function processing service 702 that maintains a function library, and which implements a hardware acceleration condition 714 based on whether or not a particular function is already included in the function library.

[0077] В проиллюстрированном варианте осуществления, служба 702 обработки функций поддерживает индекс 756 библиотеки функций, который включает в себя информацию относительно функций, которые в настоящее время включаются в библиотеку функций. Индекс 756 библиотеки функций может включать в себя множество записей 758, и каждая запись 758 может идентифицировать конкретную функцию в библиотеке функций, а также аппаратную схему, которая выполнена с возможностью выполнять эту функцию. Фиг. 7 показывает индекс 756 библиотеки функций с первой записью 758a, второй записью 758b и третьей записью 758c. Первая запись 758a включает в себя идентифицирующую информацию 764a относительно функции A, а также идентификатор 762a, соответствующий первой аппаратной схеме 722a, которая выполнена с возможностью выполнять функцию A. Аналогично, вторая запись 758b включает в себя идентифицирующую информацию 764b относительно функции B, а также идентификатор 762b, соответствующий второй аппаратной схеме 722b, которая выполнена с возможностью выполнять функцию B. Третья запись 758c включает в себя идентифицирующую информацию 764c относительно функции C, а также идентификатор 762c, соответствующий третьей аппаратной схеме 722c, которая выполнена с возможностью выполнять функцию C.[0077] In the illustrated embodiment, function processing service 702 maintains a function library index 756 that includes information regarding functions that are currently included in the function library. The function library index 756 may include a plurality of entries 758, and each entry 758 may identify a particular function in the function library as well as hardware circuitry that is configured to perform that function. Fig. 7 shows a function library index 756 with a first entry 758a, a second entry 758b, and a third entry 758c. The first record 758a includes identifying information 764a regarding function A, as well as an identifier 762a corresponding to the first hardware circuit 722a that is configured to perform function A. Likewise, the second record 758b includes identifying information 764b regarding function B, as well as an identifier 762b corresponding to a second hardware circuit 722b that is configured to perform function B. A third entry 758c includes identifying information 764c regarding function C, as well as an identifier 762c corresponding to a third hardware circuit 722c that is configured to perform function C.

[0078] Служба 702 обработки функций включает в себя модуль 716 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет условие 714 аппаратного ускорения. Условие 714 аппаратного ускорения может задаваться таким образом, что аппаратное ускорение выполняется для конкретной функции, если эта функция уже включается в библиотеку функций. Чтобы определять то, включается уже или нет конкретная функция в библиотеку функций, модуль 716 оценки условий может быть выполнен с возможностью определять то, включается или нет идентифицирующая информация относительно этой функции в индекс 756 библиотеки функций. Таким образом, когда служба 702 обработки функций принимает запрос на то, чтобы выполнять конкретную функцию (например, функцию A), модуль 716 оценки условий может выполнять поиск идентифицирующей информации относительно функции (например, идентифицирующей информации 764a функции A) в индексе 756 библиотеки функций. Если модуль 716 оценки условий находит идентифицирующую информацию относительно запрашиваемой функции в индексе 756 библиотеки функций, модуль 716 оценки условий может приходить к заключению, что условие 714 аппаратного ускорения удовлетворяется, и аппаратное ускорение может использоваться для того, чтобы выполнять функцию. Тем не менее, если модуль 716 оценки условий не находит идентифицирующую информацию относительно функции в индексе 756 библиотеки функций, модуль 716 оценки условий может приходить к заключению, что условие 714 аппаратного ускорения не удовлетворяется. Если другое условие аппаратного ускорения не было удовлетворено для функции, функция может выполняться с использованием процессора общего назначения.[0078] The function processing service 702 includes a condition evaluation module 716, which is configured to determine whether the hardware acceleration condition 714 is satisfied or not. The hardware acceleration condition 714 may be specified such that hardware acceleration is performed on a particular function if that function is already included in the function library. To determine whether or not a particular function is already included in the function library, the condition evaluation module 716 may be configured to determine whether or not identifying information regarding that function is included in the function library index 756 . Thus, when function processing service 702 receives a request to perform a particular function (eg, function A), condition evaluator 716 may search the function library index 756 for identifying information regarding the function (eg, function A identifying information 764a). If condition evaluator 716 finds identifying information regarding the requested function in function library index 756, condition evaluator 716 may conclude that hardware acceleration condition 714 is satisfied and hardware acceleration can be used to execute the function. However, if the condition evaluator 716 does not find identifying information regarding a function in the function library index 756, the condition evaluator 716 may conclude that the hardware acceleration condition 714 is not satisfied. If another hardware acceleration condition has not been met for a function, the function can be executed using a general purpose processor.

[0079] Как указано выше, функции могут добавляться в библиотеку функций на постоянной основе. В некоторых вариантах осуществления, каждый раз, когда аппаратное ускорение используется для того, чтобы выполнять функцию, функция может добавляться в библиотеку функций при условии, что имеется пространство для того, чтобы реализовывать функцию на доступных аппаратных схемах. Когда доступное пространство становится ограниченным, то функция с более высоким приоритетом (например, на основе объема использования) может сохраняться в библиотеке функций.[0079] As stated above, functions may be added to the function library on an ongoing basis. In some embodiments, each time hardware acceleration is used to perform a function, the function may be added to the function library provided that there is space to implement the function on available hardware circuits. When available space becomes limited, a function with higher priority (eg, based on usage) can be stored in the function library.

[0080] Как указано выше, служба обработки функций может использоваться для того, чтобы выполнять исходный код, который включает в себя инструкции для того, чтобы выполнять одну или более функций. Когда служба обработки функций принимает запрос на то, чтобы выполнять исходный код, который включает в себя инструкции для того, чтобы выполнять конкретную функцию, определение может выполняться в отношении того, удовлетворяется или нет условие аппаратного ускорения. В некоторых вариантах осуществления, множество условий аппаратного ускорения могут задаваться. В вариантах осуществления, в которых множество условий аппаратного ускорения задаются, аппаратное ускорение может использоваться в связи с конкретной функцией, если удовлетворяется какое-либо из условий аппаратного ускорения. Тем не менее, если ни одно из условий аппаратного ускорения не удовлетворяется, функция может выполняться с использованием процессора общего назначения.[0080] As stated above, a function processing service may be used to execute source code that includes instructions to perform one or more functions. When a function processing service receives a request to execute source code that includes instructions to perform a particular function, a determination may be made regarding whether or not a hardware acceleration condition is satisfied. In some embodiments, a plurality of hardware acceleration conditions may be specified. In embodiments in which multiple hardware acceleration conditions are specified, hardware acceleration may be used in connection with a particular function if any of the hardware acceleration conditions are satisfied. However, if none of the hardware acceleration conditions are met, the function can be executed using a general purpose processor.

[0081] Фиг. 8 иллюстрирует пример службы 802 обработки функций, для которой множество условий 814 аппаратного ускорения задаются. Например, условие 814a аппаратного ускорения задается на основе того, включается уже или нет конкретная функция в библиотеку функций. В нижеприведенном пояснении, этот тип условия 814a аппаратного ускорения может называться "условием 814a аппаратного ускорения на основе библиотеки функций". Пример условия 814a аппаратного ускорения на основе библиотеки функций пояснен выше в связи с фиг. 7.[0081] FIG. 8 illustrates an example of a function processing service 802 for which a plurality of hardware acceleration conditions 814 are specified. For example, hardware acceleration condition 814a is set based on whether or not a particular function is already included in the function library. In the following explanation, this type of hardware acceleration condition 814a may be referred to as a “function library-based hardware acceleration condition 814a.” An example of a function library-based hardware acceleration condition 814a is explained above in connection with FIG. 7.

[0082] Помимо этого, условие 814b аппаратного ускорения задается на основе числа запросов на то, чтобы выполнять функцию, которые приняты. В нижеприведенном пояснении, этот тип условия 814b аппаратного ускорения может называться "условием 814b аппаратного ускорения на основе потребности". Несколько примеров условий 814b аппаратного ускорения на основе потребности пояснены выше в связи с фиг. 2-5. Хотя только одно условие 814b аппаратного ускорения на основе потребности показано на фиг. 8, в некоторых вариантах осуществления более одного условия 814b аппаратного ускорения на основе потребности могут задаваться.[0082] In addition, the hardware acceleration condition 814b is set based on the number of requests to execute the function that are accepted. In the following explanation, this type of hardware acceleration condition 814b may be referred to as a “demand-based hardware acceleration condition 814b.” Several examples of demand-based hardware acceleration conditions 814b are explained above in connection with FIG. 2-5. Although only one demand-based hardware acceleration condition 814b is shown in FIG. 8, in some embodiments, more than one demand-based hardware acceleration conditions 814b may be specified.

[0083] Помимо этого, условие 814c аппаратного ускорения задается на основе оцененного снижения затрат, ассоциированного с использованием аппаратного ускорения для того, чтобы выполнять функцию. В нижеприведенном пояснении, этот тип условия 814c аппаратного ускорения может называться "условием 814c аппаратного ускорения на основе затрат". Пример условия 814c аппаратного ускорения на основе затрат пояснен выше в связи с фиг. 6.[0083] In addition, hardware acceleration condition 814c is set based on the estimated cost savings associated with using hardware acceleration to perform the function. In the following explanation, this type of hardware acceleration condition 814c may be referred to as a “cost-based hardware acceleration condition 814c.” An example of cost-based hardware acceleration condition 814c is explained above in connection with FIG. 6.

[0084] Служба 802 обработки функций включает в себя модуль 816 оценки условий, который выполнен с возможностью определять то, удовлетворяется или нет какое-либо из условий 814a-c аппаратного ускорения. Служба 802 обработки функций также включает в себя компонент 824 аппаратного ускорения, который выполнен с возможностью упрощать использование аппаратного ускорения. Фиг. 9 иллюстрирует пример способа 900, который может осуществляться посредством модуля 816 оценки условий и компонента 824 аппаратного ускорения.[0084] The function processing service 802 includes a condition evaluation module 816, which is configured to determine whether or not any of the hardware acceleration conditions 814a-c are satisfied. The function processing service 802 also includes a hardware acceleration component 824 that is configured to facilitate the use of hardware acceleration. Fig. 9 illustrates an example of a method 900 that may be implemented by a condition evaluation module 816 and a hardware acceleration component 824.

[0085] Способ 900 включает в себя прием 902 запроса 804 на то, чтобы выполнять функцию. Более конкретно, модуль 816 оценки условий может принимать запрос 804 на то, чтобы выполнять исходный код 806, и исходный код 806 может включать в себя инструкции 810, которые, если выполняются посредством процессора 812 общего назначения, инструктируют конкретной функции выполняться.[0085] Method 900 includes receiving 902 a request 804 to perform a function. More specifically, condition evaluator 816 may receive a request 804 to execute source code 806, and source code 806 may include instructions 810 that, if executed by general purpose processor 812, instruct a particular function to be executed.

[0086] В ответ на прием 902 запроса, модуль 816 оценки условий может определять то, удовлетворяется или нет какое-либо из заданных условий 814 аппаратного ускорения. В проиллюстрированном примере, модуль 816 оценки условий первоначально определяет 904 то, удовлетворяется или нет условие 814a аппаратного ускорения на основе библиотеки функций. Если модуль 816 оценки условий определяет 904 то, что условие 814a аппаратного ускорения на основе библиотеки функций удовлетворяется, это означает то, что аппаратная схема 822 уже выполнена с возможностью выполнять функцию. Следовательно, способ 900 затем может включать в себя инструктирование 906 аппаратной схеме 822 выполнять функцию.[0086] In response to receiving the request 902, the condition evaluation module 816 may determine whether any of the specified hardware acceleration conditions 814 are satisfied or not. In the illustrated example, condition evaluator 816 initially determines 904 whether hardware acceleration condition 814a is satisfied or not based on the function library. If the condition evaluator 816 determines 904 that the function library-based hardware acceleration condition 814a is satisfied, this means that the hardware circuit 822 is already configured to execute the function. Therefore, method 900 may then include instructing 906 hardware circuit 822 to perform a function.

[0087] Тем не менее, если модуль 816 оценки условий определяет 904 то, что условие 814a аппаратного ускорения на основе библиотеки функций не удовлетворяется, модуль 816 оценки условий затем может определять то, удовлетворяется или нет другое из заданных условий 814 аппаратного ускорения. В проиллюстрированном примере, модуль 816 оценки условий затем определяет 908 то, удовлетворяется или нет условие 814b аппаратного ускорения на основе потребности. Если условие 814b аппаратного ускорения на основе потребности удовлетворяется, то способ 900 может включать в себя конфигурирование 910 аппаратной схемы 822 с возможностью выполнять функцию (поскольку заранее определено, в качестве части условия 814a аппаратного ускорения на основе библиотеки функций, то, что аппаратная схема 822 уже не выполнена с возможностью выполнять функцию). Способ 900 затем может включать в себя инструктирование 912 аппаратной схеме 822 выполнять функцию.[0087] However, if the condition evaluator 816 determines 904 that the function library-based hardware acceleration condition 814a is not satisfied, the condition evaluator 816 can then determine whether another of the predetermined hardware acceleration conditions 814 is satisfied or not. In the illustrated example, the condition evaluation module 816 then determines 908 whether or not the hardware acceleration condition 814b is satisfied based on the demand. If demand-based hardware acceleration condition 814b is satisfied, then method 900 may include configuring 910 hardware circuit 822 to perform a function (since it is predetermined, as part of function library-based hardware acceleration condition 814a, that hardware circuit 822 already not configured to perform the function). Method 900 may then include instructing 912 hardware circuit 822 to perform a function.

[0088] Тем не менее, если модуль 816 оценки условий определяет 908 то, что условие 814b аппаратного ускорения на основе потребности не удовлетворяется, модуль 816 оценки условий затем может определять то, удовлетворяется или нет другое из заданных условий 814 аппаратного ускорения. В проиллюстрированном примере, модуль 816 оценки условий затем определяет 914 то, удовлетворяется или нет условие 814c аппаратного ускорения на основе затрат. Если условие 814b аппаратного ускорения на основе потребности удовлетворяется, то способ 900 может включать в себя конфигурирование 910 аппаратной схемы 822 с возможностью выполнять функцию и инструктирование 912 аппаратной схеме 822 выполнять функцию.[0088] However, if the condition evaluator 816 determines 908 that the demand-based hardware acceleration condition 814b is not satisfied, the condition evaluator 816 can then determine whether another of the predetermined hardware acceleration conditions 814 is satisfied or not. In the illustrated example, condition evaluator 816 then determines 914 whether or not hardware acceleration condition 814c is satisfied based on cost. If demand-based hardware acceleration condition 814b is satisfied, then method 900 may include configuring 910 hardware circuit 822 to perform a function and causing 912 hardware circuit 822 to perform the function.

[0089] Тем не менее, если модуль 816 оценки условий определяет 914 то, что условие 814c аппаратного ускорения на основе затрат не удовлетворяется, это означает то, что ни одно из заданных условий 814a-c аппаратного ускорения не удовлетворяется. В этом случае, способ 900 затем может заключать в себе инструктирование 916 функции выполняться с использованием процессора 812 общего назначения.[0089] However, if the condition evaluator 816 determines 914 that the cost-based hardware acceleration condition 814c is not satisfied, this means that none of the predetermined hardware acceleration conditions 814a-c are satisfied. In this case, the method 900 may then include causing the function 916 to be executed using the general purpose processor 812.

[0090] В некоторых вариантах осуществления, служба обработки функций может иметь такую конфигурацию, в которой пользователь (т.е. человек или объект, который отправляет запрос(ы) на то, чтобы выполнять исходный код) имеет возможность выбирать то, реализуется или нет вариант аппаратного ускорения. Когда пользователь отправляет запрос на то, чтобы выполнять функцию, в службу обработки функций, пользователь типично предполагает то, что функция должна выполняться с использованием процессора общего назначения. В некоторых вариантах осуществления, до того, как служба обработки функций использует аппаратное ускорение для того, чтобы выполнять функцию, пользователь может уведомляться в отношении возможности использования аппаратного ускорения и иметь возможность выбирать то, может или нет выполняться аппаратное ускорение.[0090] In some embodiments, the function processing service may be configured such that the user (i.e., the person or entity that makes the request(s) to execute the source code) has the ability to choose whether or not to implement hardware acceleration option. When a user submits a request to execute a function to a function processing service, the user typically assumes that the function should be executed using a general purpose processor. In some embodiments, before the function processing service uses hardware acceleration to perform a function, the user may be notified of the possibility of using hardware acceleration and be able to select whether or not hardware acceleration can be performed.

[0091] Фиг. 9A иллюстрирует пример альтернативного способа 900A, который может реализовываться посредством модуля 816 оценки условий в варианте осуществления, в котором пользователю обеспечивается возможность выбирать то, может или нет выполняться аппаратное ускорение. Способ 900A является аналогичным способу 900, показанному на фиг. 9, за исключением того, что указывается ниже.[0091] FIG. 9A illustrates an example of an alternative method 900A that may be implemented by condition evaluation module 816 in an embodiment in which the user is provided with the ability to select whether or not hardware acceleration can be performed. Method 900A is similar to method 900 shown in FIG. 9, except as provided below.

[0092] Как указано выше, способ 900A включает в себя прием 902 запроса 804 на то, чтобы выполнять функцию. Тем не менее, способ 900A также включает в себя определение 903 того, указывает или нет пользователь предпочтение использованию аппаратного ускорения, когда должно быть преимущественным достигать этого (например, когда одно или более условий 814a-c аппаратного ускорения удовлетворяются). В некоторых вариантах осуществления, определение 903 того, указывает или нет пользователь предпочтение использованию аппаратного ускорения, может заключать в себе осуществление доступа к сохраненной информации относительно пользовательских предпочтений. В качестве другого примера, определение 903 того, указывает или нет пользователь предпочтение использованию аппаратного ускорения, может заключать в себе выдачу инструкций пользователю на предмет авторизации на то, чтобы выполнять аппаратное ускорение.[0092] As stated above, method 900A includes receiving 902 a request 804 to perform a function. However, method 900A also includes determining 903 whether or not the user indicates a preference for using hardware acceleration when it should be preferable to achieve it (eg, when one or more hardware acceleration conditions 814a-c are satisfied). In some embodiments, determining 903 whether or not a user indicates a preference for using hardware acceleration may involve accessing stored information regarding the user's preferences. As another example, determining 903 whether or not the user indicates a preference for using hardware acceleration may involve issuing instructions to the user for authorization to perform hardware acceleration.

[0093] Если определяется 903 то, что пользователь не указывает предпочтение использованию аппаратного ускорения, в таком случае способ 900A может переходить к действию инструктирования 916 функции выполняться с использованием процессора 812 общего назначения. Тем не менее, если определяется 903 то, что пользователь указывает предпочтение использованию аппаратного ускорения, в таком случае способ 900A заключает в себе определение того, удовлетворяются или нет условия 814a-c аппаратного ускорения, способом, описанным выше.[0093] If it is determined 903 that the user does not indicate a preference for using hardware acceleration, then the method 900A may proceed to the act of causing the function 916 to be executed using the general purpose processor 812. However, if it is determined 903 that the user indicates a preference for using hardware acceleration, then the method 900A involves determining whether or not the hardware acceleration conditions 814a-c are satisfied in the manner described above.

[0094] Конкретный порядок, в котором условия 814a-c аппаратного ускорения оцениваются в способах 900A, показанных на фиг. 9 и 9A, предоставляется только для примера и не должен интерпретироваться в качестве ограничения объема настоящего раскрытия сущности. В альтернативных вариантах осуществления, условия 814a-c аппаратного ускорения могут оцениваться в другом порядке. В некоторых вариантах осуществления, после того как выполнено определение то, что условие аппаратного ускорения было удовлетворено, и аппаратное ускорение должно использоваться в связи с функцией, то определение может выполняться в отношении того, уже сконфигурирована или нет аппаратная схема для функции.[0094] The specific order in which hardware acceleration conditions 814a-c are evaluated in methods 900A shown in FIG. 9 and 9A are provided by way of example only and should not be interpreted as limiting the scope of this disclosure. In alternative embodiments, hardware acceleration conditions 814a-c may be evaluated in a different order. In some embodiments, after a determination is made that a hardware acceleration condition has been satisfied and hardware acceleration is to be used in connection with a function, a determination may be made as to whether or not hardware circuitry has already been configured for the function.

[0095] Чтобы конфигурировать аппаратную схему с возможностью выполнять конкретную функцию, исходный код, который включает в себя инструкции для выполнения функции, может транслироваться в аппаратно-зависимый код, соответствующий типу аппаратной схемы, которая должна использоваться. Например, если FPGA должна использоваться для того, чтобы выполнять аппаратное ускорение, то исходный код может транслироваться в код на языке описания аппаратных средств (HDL), соответствующий FPGA. Если GPU должен использоваться для того, чтобы выполнять аппаратное ускорение, то исходный код может транслироваться в GPU-код. Если программируемая ASIC должна использоваться для того, чтобы выполнять аппаратное ускорение, то пользовательский компилятор может принимать исходный код и формировать машинный код, который является конкретным для программируемой ASIC. Если DSP должен использоваться для того, чтобы выполнять аппаратное ускорение, то исходный код может транслироваться в DSP-код.[0095] To configure a hardware circuit to perform a particular function, source code that includes instructions to perform the function may be translated into hardware-specific code corresponding to the type of hardware circuit to be used. For example, if an FPGA is to be used to perform hardware acceleration, then the source code can be translated into hardware description language (HDL) code corresponding to the FPGA. If the GPU is to be used to perform hardware acceleration, then the source code can be translated into GPU code. If a programmable ASIC is to be used to perform hardware acceleration, then a custom compiler can take the source code and generate machine code that is specific to the programmable ASIC. If the DSP is to be used to perform hardware acceleration, then the source code can be translated into DSP code.

[0096] После того как исходный код транслируется в аппаратно-зависимый код, соответствующий типу аппаратной схемы, которая должна использоваться, аппаратно-зависимый код затем может предоставляться в аппаратную схему. Функция затем может выполняться через аппаратную схему. Результат, который получается из выполнения функции, затем может предоставляться в объект, который запрашивает функцию, которая должна выполняться.[0096] After the source code is translated into hardware-specific code corresponding to the type of hardware circuit to be used, the hardware-specific code can then be provided to the hardware circuit. The function can then be performed through hardware circuitry. The result that is obtained from executing the function can then be provided to an object that requests the function to be executed.

[0097] Как указано выше, служба обработки функций может поддерживать библиотеку функций. В некоторых вариантах осуществления, служба обработки функций может добавлять функцию в библиотеку каждый раз, когда выполняется определение в отношении того, что удовлетворяется условие аппаратного ускорения, соответствующее функции. Другими словами, после того как выполнено определение то, что условие аппаратного ускорения было удовлетворено для конкретной функции, аппаратная схема может быть выполнена с возможностью выполнять эту функцию, и функция может добавляться в библиотеку. После этого, при последующем приеме запроса на то, чтобы выполнять исходный код, который включает в себя инструкции для того, чтобы выполнять функцию, функция может выполняться через аппаратную схему.[0097] As stated above, the function processing service may maintain a library of functions. In some embodiments, the function processing service may add a function to the library whenever a determination is made that a hardware acceleration condition corresponding to the function is satisfied. In other words, once a determination is made that a hardware acceleration condition has been satisfied for a particular function, the hardware circuit may be configured to perform that function, and the function may be added to the library. Thereafter, when subsequently receiving a request to execute the source code that includes instructions for executing the function, the function may be executed through the hardware circuit.

[0098] Фиг. 10 иллюстрирует пример службы 1002 обработки функций, которая поддерживает библиотеку функций. Фиг. 11 иллюстрирует пример способа 1100, который может осуществляться посредством службы 1002 обработки функций в соответствии с настоящим раскрытием сущности. В дальнейшем описываются различные компоненты службы 1002 обработки функций в связи со способом 1100.[0098] FIG. 10 illustrates an example of a function processing service 1002 that maintains a function library. Fig. 11 illustrates an example of a method 1100 that may be performed by a function processing service 1002 in accordance with the present disclosure. The following describes various components of the function processing service 1002 in connection with the method 1100.

[0099] Способ 1100 включает в себя определение 1102 того, что условие 1014 аппаратного ускорения удовлетворяется для конкретной функции. Это определение может выполняться посредством модуля 1016 оценки условий в службе 1002 обработки функций. В некоторых вариантах осуществления, это определение может выполняться в ответ на прием запроса на то, чтобы выполнять исходный код. Альтернативно, в других вариантах осуществления, это определение может выполняться независимо от приема конкретного запроса на то, чтобы выполнять исходный код. Например, служба 1002 обработки функций может определять то, что условие аппаратного ускорения на основе затрат удовлетворяется для конкретной функции, перед приемом запроса на то, чтобы выполнять эту функцию.[0099] Method 1100 includes determining 1102 that a hardware acceleration condition 1014 is satisfied for a particular function. This determination may be made by the condition evaluation module 1016 in the function processing service 1002 . In some embodiments, this determination may be made in response to receiving a request to execute the source code. Alternatively, in other embodiments, this determination may be made regardless of receipt of a specific request to execute the source code. For example, function processing service 1002 may determine that a cost-based hardware acceleration condition is satisfied for a particular function before receiving a request to perform that function.

[00100] В ответ на определение 1102 того, что условие 1014 аппаратного ускорения удовлетворяется для конкретной функции, аппаратная схема 1022 может конфигурироваться 1104 с возможностью выполнять эту функцию. Эта операция может выполняться посредством компонента 1024 аппаратного ускорения в службе 1002 обработки функций. Помимо этого, функция может добавляться в библиотеку функций, которая поддерживается посредством службы 1002 обработки функций. Это может заключать в себе добавление записи 1058 в индекс 1056 библиотеки функций. Запись 1058 может включать в себя идентифицирующую информацию 1064 относительно функции, а также идентификатор 1062, соответствующий аппаратной схеме 1022, которая выполнена с возможностью выполнять функцию.[00100] In response to determination 1102 that a hardware acceleration condition 1014 is satisfied for a particular function, hardware circuitry 1022 may be configured 1104 to perform that function. This operation may be performed by a hardware acceleration component 1024 in the function processing service 1002 . In addition, the function may be added to a function library that is maintained by the function processing service 1002. This may involve adding entry 1058 to function library index 1056. Record 1058 may include identifying information 1064 regarding the function, as well as an identifier 1062 corresponding to hardware circuit 1022 that is configured to perform the function.

[00101] В некоторый момент после того, как функция добавлена в библиотеку функций, запрос 1004 может приниматься 1108 на то, чтобы выполнять функцию. Более конкретно, запрос 1004 на то, чтобы выполнять исходный код 1006, может приниматься. Исходный код 1006 может включать в себя инструкции 1010, которые, если выполняются посредством процессора 1012 общего назначения, инструктируют функции выполняться.[00101] At some point after a function is added to the function library, a request 1004 may be received 1108 to execute the function. More specifically, a request 1004 to execute source code 1006 may be accepted. Source code 1006 may include instructions 1010 that, when executed by general purpose processor 1012, instruct functions to be executed.

[00102] В ответ на прием запроса 1004, служба 1002 обработки функций может инструктировать 1110 функции выполняться через аппаратную схему 1022. Это может заключать в себе предоставление входных данных в аппаратную схему 1022, а также инструкций, чтобы начинать обработку входных данных. В некоторых вариантах осуществления, служба 1002 обработки функций может инструктировать 1110 функции выполняться через аппаратную схему 1022 в ответ на прием запроса 1004 и определение того, что функция включается в библиотеку функций, которая поддерживается посредством службы 1002 обработки функций. Альтернативно, в других вариантах осуществления, служба 1002 обработки функций может инструктировать 1110 функции выполняться через аппаратную схему 1022 в ответ на прием запроса 1004, определение того, что функция включается в библиотеку функций, которая поддерживается посредством службы 1002 обработки функций, и определение того, что по меньшей мере одно дополнительное условие аппаратного ускорения удовлетворяется (например, что пользователь выражает предпочтение аппаратному ускорению).[00102] In response to receiving request 1004, function processing service 1002 may instruct functions 1110 to be executed through hardware circuit 1022. This may include providing input data to hardware circuit 1022 as well as instructions to begin processing the input data. In some embodiments, function processing service 1002 may instruct functions 1110 to be executed through hardware circuitry 1022 in response to receiving a request 1004 and determining that the function is included in a function library that is maintained by function processing service 1002. Alternatively, in other embodiments, function processing service 1002 may instruct functions 1110 to be executed through hardware circuit 1022 in response to receiving request 1004, determining that the function is included in a library of functions that is maintained by function processing service 1002, and determining that at least one additional condition for hardware acceleration is satisfied (eg, that the user expresses a preference for hardware acceleration).

[00103] В некоторых вариантах осуществления, аппаратная схема может быть выполнена с возможностью выполнять множество функций параллельно. Например, аппаратная схема может быть выполнена с возможностью выполнять множество различных функций параллельно друг с другом. Фиг. 12 иллюстрирует пример аппаратной схемы 1222, которая выполнена с возможностью выполнять две различных функции, функцию A и функцию B, параллельно друг с другом. В частности, первая секция 1266a аппаратной схемы 1222 выполнена с возможностью выполнять функцию A, и вторая секция 1266b аппаратной схемы 1222 выполнена с возможностью выполнять функцию B.[00103] In some embodiments, the hardware circuit may be configured to perform multiple functions in parallel. For example, the hardware circuit may be configured to perform many different functions in parallel with each other. Fig. 12 illustrates an example of hardware circuit 1222 that is configured to perform two different functions, Function A and Function B, in parallel with each other. Specifically, the first section 1266a of the hardware circuit 1222 is configured to perform function A, and the second section 1266b of the hardware circuit 1222 is configured to perform function B.

[00104] Предусмотрены различные сценарии, в которых может использоваться такая аппаратная схема 1222. В качестве примера, предположим, что служба 1202 обработки функций принимает несколько запросов 1204a-b на то, чтобы выполнять исходный код 1206a-b. Исходный код 1206a в первом запросе 1204a может включать в себя инструкции 1210a, которые, если выполняются посредством процессора общего назначения, инструктируют функции A выполняться. Исходный код 1206b во втором запросе 1204b может включать в себя инструкции 1210b, которые, если выполняются посредством процессора общего назначения, инструктируют функции B выполняться. Запросы 1204a-b могут приниматься практически одновременно, и/или служба 1202 обработки функций может пытаться осуществлять запросы 1204a-b практически одновременно. В ответ на определение, посредством модуля 1216 оценки условий, того, что по меньшей мере одно условие 1214 аппаратного ускорения удовлетворяется как для функции A, так и для функции B, компонент 1224 аппаратного ускорения в службе 1202 обработки функций может инструктировать аппаратной схеме 1222 выполнять как функцию A, так и функцию B параллельно. В частности, служба 1202 обработки функций может инструктировать первой секции 1266a аппаратной схемы 1222 выполнять функцию A и второй секции 1266b аппаратной схемы 1222 выполнять функцию B.[00104] There are various scenarios in which such hardware circuit 1222 may be used. As an example, assume that function processing service 1202 receives multiple requests 1204a-b to execute source code 1206a-b. Source code 1206a in first request 1204a may include instructions 1210a that, if executed by a general purpose processor, instruct functions A to be executed. Source code 1206b in second request 1204b may include instructions 1210b that, if executed by a general purpose processor, instruct functions B to be executed. Requests 1204a-b may be received substantially simultaneously, and/or function processing service 1202 may attempt to process requests 1204a-b substantially simultaneously. In response to determining, through condition evaluation module 1216, that at least one hardware acceleration condition 1214 is satisfied for both function A and function B, hardware acceleration component 1224 in function processing service 1202 may instruct hardware circuitry 1222 to perform both function A and function B in parallel. In particular, the function processing service 1202 may cause the first section 1266a of the hardware circuit 1222 to perform function A and the second section 1266b of the hardware circuit 1222 to perform function B.

[00105] Хотя пример, показанный на фиг. 12, показывает параллельное выполнение только двух различных функций, это не должно интерпретироваться в качестве ограничения объема настоящего раскрытия сущности. Более двух функций могут выполняться параллельно в соответствии с настоящим раскрытием сущности. В общем, может быть предусмотрено N конвейеров, выполняющихся параллельно (причем термин "конвейер" означает секцию аппаратной схемы, которая выполнена с возможностью выполнять конкретную функцию, и причем N может быть любым положительным целым числом). Эти N конвейеров могут быть выполнены с возможностью выполнять вплоть до N различных функций параллельно.[00105] Although the example shown in FIG. 12 shows the parallel execution of only two different functions, this should not be interpreted as limiting the scope of the present disclosure. More than two functions may be executed in parallel in accordance with the present disclosure. In general, there may be N pipelines running in parallel (wherein the term "pipeline" means a section of hardware circuitry that is configured to perform a particular function, and wherein N can be any positive integer). These N pipelines can be configured to perform up to N different functions in parallel.

[00106] В качестве другого примера, аппаратная схема может быть выполнена с возможностью выполнять множество различных экземпляров идентичной функции параллельно друг с другом. Фиг. 13 иллюстрирует пример аппаратной схемы 1322, которая выполнена с возможностью выполнять два экземпляра идентичной функции параллельно друг с другом. В частности, первая секция 1366a аппаратной схемы 1322 выполнена с возможностью выполнять первый экземпляр функции, и вторая секция 1366b аппаратной схемы 1322 выполнена с возможностью выполнять второй экземпляр функции.[00106] As another example, hardware circuitry may be configured to execute multiple different instances of an identical function in parallel with each other. Fig. 13 illustrates an example of hardware circuit 1322 that is configured to execute two instances of an identical function in parallel with each other. Specifically, a first section 1366a of the hardware circuit 1322 is configured to execute a first instance of a function, and a second section 1366b of a hardware circuit 1322 is configured to execute a second instance of a function.

[00107] В дальнейшем описывается пример, который является аналогичным примеру, поясненному выше в связи с аппаратной схемой 1222, показанной на фиг. 12. Предположим, что служба 1302 обработки функций принимает несколько запросов 1304a-b на то, чтобы выполнять исходный код 1306a-b. Дополнительно предположим, что исходный код 1306a-b в обоих запросах 1304a-b включает в себя инструкции-1310a-b, которые, если выполняются посредством процессора общего назначения 1312, инструктируют конкретной функции выполняться. Запросы 1304a-b могут приниматься практически одновременно, и/или служба 1302 обработки функций может пытаться осуществлять запросы 1304a-b практически одновременно. В ответ на определение, посредством модуля 1316 оценки условий, того, что по меньшей мере одно условие 1314 аппаратного ускорения было удовлетворено для функции, компонент 1324 аппаратного ускорения в службе 1302 обработки функций может инструктировать аппаратной схеме 1322 выполнять два различных экземпляра функции параллельно. В частности, служба 1302 обработки функций может инструктировать первой секции 1366a аппаратной схемы 1322 выполнять первый экземпляр функции и второй секции 1366b аппаратной схемы 1322 выполнять второй экземпляр функции.[00107] The following describes an example that is similar to the example explained above in connection with the hardware circuit 1222 shown in FIG. 12. Assume that function processing service 1302 receives multiple requests 1304a-b to execute source code 1306a-b. Additionally, assume that the source code 1306a-b in both requests 1304a-b includes instructions-1310a-b that, if executed by the general purpose processor 1312, instruct a particular function to be executed. Requests 1304a-b may be received substantially simultaneously, and/or function processing service 1302 may attempt to process requests 1304a-b substantially simultaneously. In response to determining, through condition evaluation module 1316, that at least one hardware acceleration condition 1314 has been satisfied for a function, hardware acceleration component 1324 in function processing service 1302 may cause hardware circuitry 1322 to execute two different instances of the function in parallel. In particular, the function processing service 1302 may cause the first section 1366a of the hardware circuit 1322 to execute the first instance of the function and the second section 1366b of the hardware circuit 1322 to execute the second instance of the function.

[00108] Хотя пример, показанный на фиг. 13 показывает параллельное выполнение только двух экземпляров функции, это не должно интерпретироваться в качестве ограничения объема настоящего раскрытия сущности. Более двух экземпляров конкретной функции могут выполняться параллельно в соответствии с настоящим раскрытием сущности. В общем, может быть предусмотрено N конвейеров, выполняющихся параллельно (причем термин "конвейер" означает секцию аппаратной схемы, которая выполнена с возможностью выполнять функцию, и причем N может быть любым положительным целым числом). Эти N конвейеров могут быть выполнены с возможностью выполнять вплоть до N экземпляров функции параллельно.[00108] Although the example shown in FIG. 13 shows the parallel execution of only two instances of the function, this should not be interpreted as a limitation on the scope of the present disclosure. More than two instances of a particular function may be executed in parallel in accordance with the present disclosure. In general, there may be N pipelines running in parallel (wherein the term "pipeline" means a section of hardware circuitry that is configured to perform a function, and wherein N can be any positive integer). These N pipelines can be configured to execute up to N instances of a function in parallel.

[00109] В соответствии с другим аспектом настоящего раскрытия сущности, аппаратное ускорение может использоваться в связи с различными функциями в течение различных временных интервалов. Другими словами, конкретный набор аппаратных схем может периодически переконфигурироваться с возможностью выполнять различные функции. Это может быть преимущественным в сценарии, в котором служба обработки функций имеет конкретный набор аппаратных схем, доступных для использования, и служба обработки функций принимает различные типы запросов в различные моменты времени (например, в различные моменты времени дня). В этом случае, набор аппаратных схем может быть выполнен с возможностью выполнять один набор функций в течение одного конкретного временного интервала (например, в течение одной части дня) и выполнять другой набор функций в течение другого временного интервала (например, в течение другой части дня).[00109] According to another aspect of the present disclosure, hardware acceleration may be used in connection with various functions during various time intervals. In other words, a particular set of hardware circuits can be periodically reconfigured to perform different functions. This may be advantageous in a scenario in which the function processing service has a specific set of hardware circuits available for use, and the function processing service accepts different types of requests at different times (eg, at different times of the day). In this case, a set of hardware circuits may be configured to perform one set of functions during one particular time interval (for example, during one part of the day) and perform a different set of functions during a different time interval (for example, during another part of the day) .

[00110] Чтобы идентифицировать функции, которые должны использовать аппаратное ускорение в течение конкретного временного интервала, статистическая информация может анализироваться относительно запросов, которые ранее приняты посредством службы обработки функций в течение этого временного интервала. Если этот анализ указывает то, что запросы на то, чтобы выполнять конкретный набор функций, часто принимаются в течение этого временного интервала, то доступный набор аппаратных схем может быть выполнен с возможностью выполнять этот набор функций.[00110] To identify functions that should use hardware acceleration during a particular time interval, statistical information may be analyzed regarding requests that were previously received by the function processing service during that time interval. If this analysis indicates that requests to perform a particular set of functions are frequently received during this time interval, then the available set of hardware circuits may be configured to perform that set of functions.

[00111] Фиг. 14A-B иллюстрирует пример службы 1402 обработки функций, которая периодически переконфигурирует набор аппаратных схем 1422 на основе ожидаемой потребности. Фиг. 15 иллюстрирует пример способа 1500, который может осуществляться посредством службы 1402 обработки функций в соответствии с настоящим раскрытием сущности. В дальнейшем описываются различные компоненты службы 1402 обработки функций в связи со способом 1500.[00111] FIG. 14A-B illustrate an example of a function processing service 1402 that periodically reconfigures a set of hardware circuits 1422 based on expected demand. Fig. 15 illustrates an example of a method 1500 that may be performed by a function processing service 1402 in accordance with the present disclosure. The following describes various components of the function processing service 1402 in connection with the method 1500.

[00112] Для простоты, только два различных временных интервала задаются в службе 1402 обработки функций, показанной на фиг. 14A-B. В некоторых вариантах осуществления, временные интервалы могут представлять собой неперекрывающиеся временные интервалы, так что первый временной интервал не перекрывается со вторым временным интервалом. В других вариантах осуществления, временные интервалы могут, по меньшей мере, частично перекрываться друг с другом. Различные временные интервалы могут соответствовать различным частям идентичного дня, недели, месяца и т.д.[00112] For simplicity, only two different time intervals are specified in the function processing service 1402 shown in FIG. 14A-B. In some embodiments, the time slots may be non-overlapping time slots such that the first time slot does not overlap with the second time slot. In other embodiments, the time slots may at least partially overlap each other. Different time intervals may correspond to different parts of an identical day, week, month, etc.

[00113] Способ 1500 включает в себя анализ 1502 статистической информации 1468a, связанной с запросами, принимаемыми в течение первого временного интервала. Служба 1402 обработки функций показывается с анализатором 1474 запросов, который выполнен с возможностью анализировать статистическую информацию 1468a. Анализ 1502 статистической информации 1468a может заключать в себе идентификацию типов запросов, которые принимаются чаще всего в течение первого временного интервала. На основе анализа этой статистической информации 1468a, первый набор функций может идентифицироваться в качестве функций, которые выполняются чаще всего в течение первого временного интервала, и которые могут извлекать выгоду из аппаратного ускорения. Способ 1500 затем включает в себя конфигурирование 1504, посредством компонента 1424 аппаратного ускорения в службе 1402 обработки функций, доступных аппаратных схем 1422 с возможностью выполнять первый набор функций в течение первого временного интервала. Фиг. 14A показывает аппаратные схемы 1422 в первой конфигурации 1472a, в которой аппаратные схемы 1422 выполнены с возможностью выполнять первый набор функций.[00113] Method 1500 includes analyzing 1502 statistical information 1468a associated with requests received during a first time slot. The function processing service 1402 is shown with a query analyzer 1474, which is configured to analyze statistical information 1468a. The analysis 1502 of the statistical information 1468a may include identifying the types of requests that are received most frequently during the first time slot. Based on the analysis of this statistical information 1468a, the first set of functions can be identified as functions that are executed most frequently during the first time interval and that can benefit from hardware acceleration. Method 1500 then includes configuring 1504, through hardware acceleration component 1424 in function processing service 1402, available hardware circuits 1422 to perform the first set of functions during the first time interval. Fig. 14A shows hardware circuits 1422 in a first configuration 1472a, in which hardware circuits 1422 are configured to perform a first set of functions.

[00114] Предположим, что служба 1402 обработки функций принимает запрос 1404a в течение первого временного интервала на то, чтобы выполнять исходный код 1406a, который включает в себя инструкции 1410a для того, чтобы выполнять функцию в первом наборе функций. Как указано выше, аппаратные схемы 1422 выполнены с возможностью выполнять первый набор функций в течение первого временного интервала. Следовательно, служба 1402 обработки функций может инструктировать функции выполняться посредством одной из доступных аппаратных схем 1422, которая выполнена с возможностью выполнять релевантную функцию.[00114] Suppose that function processing service 1402 receives a request 1404a during a first time slot to execute source code 1406a that includes instructions 1410a for executing a function in the first function set. As discussed above, hardware circuits 1422 are configured to perform a first set of functions during a first time slot. Therefore, function processing service 1402 may cause functions to be executed by one of the available hardware circuits 1422 that is configured to perform the relevant function.

[00115] Способ 1500 также включает в себя анализ 1506 статистической информации 1468b, связанной с запросами, принимаемыми в течение второго временного интервала. Это может заключать в себе идентификацию типов запросов, которые принимаются чаще всего в течение второго временного интервала. На основе анализа этой статистической информации 1468b, второй набор функций может идентифицироваться в качестве функций, которые выполняются чаще всего в течение второго временного интервала, и которые могут может извлекать выгоду из аппаратного ускорения. Способ 1500 затем включает в себя конфигурирование 1508, посредством компонента 1424 аппаратного ускорения, доступных аппаратных схем 1422 с возможностью выполнять второй набор функций в течение второго временного интервала.[00115] Method 1500 also includes analyzing 1506 statistical information 1468b associated with requests received during the second time slot. This may include identifying the types of requests that are received most frequently during the second time slot. Based on analysis of this statistical information 1468b, a second set of functions may be identified as functions that execute most frequently during the second time slot and that may benefit from hardware acceleration. Method 1500 then includes configuring 1508, through hardware acceleration component 1424, available hardware circuits 1422 to perform a second set of functions during a second time interval.

[00116] Предположим, что служба 1402 обработки функций принимает запрос 1404b в течение второго временного интервала на то, чтобы выполнять исходный код 1406b, который включает в себя инструкции 1410b для того, чтобы выполнять функцию во втором наборе функций. Как указано выше, аппаратные схемы 1422 выполнены с возможностью выполнять второй набор функций в течение второго временного интервала. Следовательно, служба 1402 обработки функций может инструктировать функции выполняться посредством одной из доступных аппаратных схем 1422, которая выполнена с возможностью выполнять релевантную функцию.[00116] Assume that function processing service 1402 receives a request 1404b during a second time slot to execute source code 1406b that includes instructions 1410b to execute a function in a second function set. As discussed above, hardware circuits 1422 are configured to perform a second set of functions during a second time slot. Therefore, function processing service 1402 may cause functions to be executed by one of the available hardware circuits 1422 that is configured to perform the relevant function.

[00117] Одна или более вычислительных систем могут использоваться для того, чтобы реализовывать службу обработки функций, как раскрыто в данном документе. Фиг. 16 иллюстрирует определенные компоненты, которые могут включаться в вычислительную систему 1600.[00117] One or more computing systems may be used to implement a function processing service as disclosed herein. Fig. 16 illustrates certain components that may be included in the computing system 1600.

[00118] Вычислительная система 1600 включает в себя процессор 1601. Процессор 1601 может представлять собой одно- или многомикросхемный микропроцессор общего назначения (например, машину с расширенным набором команд для RISC (компьютера с сокращенным набором команд) (ARM)), микропроцессор специального назначения (например, процессор цифровых сигналов (DSP)), микроконтроллер, программируемую вентильную матрицу и т.д. Процессор 1601 может называться "центральным процессором (CPU)". Хотя только один процессор 1601 показан в вычислительной системе 1600 по фиг. 16, в альтернативной конфигурации, может использоваться комбинация процессоров (например, ARM и DSP).[00118] The computing system 1600 includes a processor 1601. The processor 1601 may be a single-chip or multi-chip general purpose microprocessor (e.g., a RISC (reduced instruction set computer) (ARM) microprocessor), a special purpose microprocessor ( e.g. digital signal processor (DSP), microcontroller, programmable gate array, etc. The processor 1601 may be referred to as a "central processing unit (CPU)." Although only one processor 1601 is shown in the computing system 1600 of FIG. 16, in an alternative configuration, a combination of processors (eg, ARM and DSP) may be used.

[00119] Вычислительная система 1600 также включает в себя запоминающее устройство 1603, поддерживающее электронную связь с процессором 1601. Запоминающее устройство 1603 может представлять собой любой электронный компонент, допускающий сохранение электронной информации. Например, запоминающее устройство 1603 может осуществляться в качестве оперативного запоминающего устройства (RAM), постоянного запоминающего устройства (ROM), носителей хранения данных на магнитных дисках, оптических носителей хранения данных, устройств флэш-памяти в RAM, встроенного запоминающего устройства, включенного в процессор 1601, стираемого программируемого постоянного запоминающего устройства (EPROM), электрически стираемого программируемого постоянного запоминающего устройства (EEPROM), регистров и т.д., в том числе и в качестве комбинаций вышеозначенного.[00119] The computing system 1600 also includes a storage device 1603 in electronic communication with the processor 1601. The storage device 1603 may be any electronic component capable of storing electronic information. For example, storage device 1603 may be implemented as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, embedded storage included in processor 1601 , erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), registers, etc., including combinations of the above.

[00120] Инструкции 1605 и данные 1607 могут сохраняться в запоминающем устройстве 1603. Инструкции 1605 могут выполняться посредством процессора 1601 для того, чтобы реализовывать некоторые или все способы, этапы, операции, действия или другую функциональность, которая раскрывается в данном документе. Выполнение инструкций 1605 может заключать в себе использование данных 1607, которые сохраняются в запоминающем устройстве 1603. Если не указано иное, любые из различных примеров модулей и компонентов, описанных в данном документе, могут реализовываться, частично или полностью, в качестве инструкций 1605, сохраненных в запоминающем устройстве 1603 и выполняемых посредством процессора 1601. Любые из различных примеров данных, описанных в данном документе, могут находиться в числе данных 1607, которые сохраняются в запоминающем устройстве 1603 и используются во время выполнения инструкций 1605 посредством процессора 1601.[00120] Instructions 1605 and data 1607 may be stored in memory 1603. Instructions 1605 may be executed by processor 1601 to implement some or all of the methods, steps, operations, acts, or other functionality that are disclosed herein. Execution of instructions 1605 may involve the use of data 1607 that is stored in memory 1603. Unless otherwise noted, any of the various example modules and components described herein may be implemented, in part or in whole, as instructions 1605 stored in memory 1603 and executed by processor 1601. Any of the various examples of data described herein may be among the data 1607 that is stored in memory 1603 and used during execution of instructions 1605 by processor 1601.

[00121] Вычислительная система 1600 также может включать в себя один или более интерфейсов 1609 связи для обмена данными с другими электронными устройствами. Интерфейс(ы) 1609 связи могут быть основаны на технологии проводной связи, на технологии беспроводной связи либо на обеих технологиях. Некоторые примеры интерфейсов 1609 связи включают в себя интерфейс универсальной последовательной шины (USB), Ethernet-адаптер, беспроводной адаптер, который работает в соответствии с протоколом беспроводной связи 1602.11 Института инженеров по электротехнике и радиоэлектронике (IEEE), Bluetooth®-адаптер беспроводной связи и порт инфракрасной (IR) связи.[00121] The computing system 1600 may also include one or more communication interfaces 1609 for exchanging data with other electronic devices. Communication interface(s) 1609 may be based on wired communication technology, wireless communication technology, or both technologies. Some examples of communication interfaces 1609 include a universal serial bus (USB) interface, an Ethernet adapter, a wireless adapter that operates in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 1602.11 wireless communication protocol, a Bluetooth® wireless adapter, and a port infrared (IR) communications.

[00122] Вычислительная система 1600 также может включать в себя одно или более устройств 1611 ввода и одно или более устройств 1613 вывода. Некоторые примеры устройств 1611 ввода включают в себя клавиатуру, мышь, микрофон, устройство дистанционного управления, кнопку, джойстик, шаровой манипулятор, сенсорную панель и световое перо. Один конкретный тип устройства 1613 вывода, которое типично включается в вычислительную систему 1600, представляет собой устройство 1615 отображения. Устройства 1615 отображения, используемые с вариантами осуществления, раскрытыми в данном документе, могут использовать любую подходящую технологию проецирования изображений, такую как жидкокристаллический дисплей (ЖК-дисплей), светоизлучающий диод (светодиод), газовая плазма, электролюминесценция и т.п. Контроллер 1617 отображения также может предоставляться для преобразования данных 1607, сохраненных в запоминающем устройстве 1603, в текст, графику и/или движущиеся изображения (надлежащим образом), показанные на устройстве 1615 отображения. Вычислительная система 1600 также может включать в себя другие типы устройств 1613 вывода, такие как динамик, принтер и т.д.[00122] The computing system 1600 may also include one or more input devices 1611 and one or more output devices 1613. Some examples of input devices 1611 include a keyboard, mouse, microphone, remote control, button, joystick, trackball, touchpad, and light pen. One particular type of output device 1613 that is typically included in the computing system 1600 is a display device 1615. Display devices 1615 used with the embodiments disclosed herein may use any suitable image projection technology, such as liquid crystal display (LCD), light emitting diode (LED), gas plasma, electroluminescence, and the like. A display controller 1617 may also be provided to convert data 1607 stored in the storage device 1603 into text, graphics, and/or moving images (as appropriate) displayed on the display device 1615. The computing system 1600 may also include other types of output devices 1613, such as a speaker, printer, etc.

[00123] Различные компоненты вычислительной системы 1600 могут соединяться между собой посредством одной или более шин, которые могут включать в себя шину подачи мощности, шину управляющих сигналов, шину сигналов состояния, шину данных и т.д. Для понятности, различные шины проиллюстрированы на фиг. 16 в качестве системы 1619 шин.[00123] The various components of the computing system 1600 may be interconnected via one or more buses, which may include a power supply bus, a control signal bus, a status signal bus, a data bus, etc. For clarity, various tires are illustrated in FIG. 16 as a 1619 bus system.

[00124] Технологии, описанные в данном документе, могут реализовываться в аппаратных средствах, в программном обеспечении, в микропрограммном обеспечении либо в любой комбинации вышеозначенного, если конкретно не описываются как реализуемые конкретным способом. Любые признаки, описанные как модули, компоненты и т.п., также могут реализовываться совместно в интегральном логическом устройстве или отдельно как дискретные, но имеющие возможность взаимодействовать логические устройства. При реализации в программном обеспечении, технологии могут реализовываться, по меньшей мере, частично посредством энергонезависимого считываемого компьютером носителя, хранящего исполняемые компьютером инструкции, которые, при выполнении, по меньшей мере, посредством одного процессора, выполняют некоторые или все этапы, операции, действия или другую функциональность, раскрытую в данном документе. Инструкции могут организовываться в процедуры, программы, объекты, компоненты, структуры данных и т.д., которые могут выполнять конкретные задачи и/или реализовывать конкретные типы данных и которые могут комбинироваться или распределяться требуемым образом в различных вариантах осуществления.[00124] The technologies described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a particular manner. Any features described as modules, components, and the like may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. When implemented in software, the technologies may be implemented at least in part through a non-transitory computer-readable medium storing computer-executable instructions that, when executed by at least one processor, perform some or all of the steps, operations, actions, or other functionality disclosed in this document. Instructions can be organized into procedures, programs, objects, components, data structures, etc., which can perform specific tasks and/or implement specific data types, and which can be combined or distributed as desired in various embodiments.

[00125] Этапы, операции и/или действия способов, описанных в данном документе, могут меняться местами друг с другом без отступления от объема формулы изобретения. Другими словами, если конкретный порядок этапов, операций и/или действий не требуется для надлежащего функционирования способа, который описывается, порядок и/или использование конкретных этапов, операций и/или действий может модифицироваться без отступления от объема формулы изобретения.[00125] The steps, operations and/or actions of the methods described herein may be interchanged with each other without departing from the scope of the claims. In other words, if a particular order of steps, operations and/or actions is not required for proper operation of the method that is described, the order and/or use of the specific steps, operations and/or actions may be modified without departing from the scope of the claims.

[00126] В примере, термин "определение" (и его грамматические разновидности) заключает в себе широкий спектр действий, и в силу этого "определение" может включать в себя вычисление, расчеты, обработку, извлечение, исследование, поиск (например, поиск в таблице, базе данных или другой структуре данных), выявление и т.п. Кроме того, "определение" может включать в себя прием (к примеру, прием информации), осуществление доступа (к примеру, осуществление доступа к данным в запоминающем устройстве) и т.п. Кроме того, "определение" может включать в себя разрешение, отбор, выбор, установление и т.п.[00126] In the example, the term "determining" (and its grammatical variations) encompasses a wide range of actions, and as such, "determining" may include computing, calculating, processing, retrieving, examining, searching (e.g., searching in table, database or other data structure), identification, etc. In addition, "sensing" may include receiving (eg, receiving information), accessing (eg, accessing data in a storage device), and the like. In addition, "determining" may include allowing, selecting, selecting, establishing, and the like.

[00127] Термины "содержащий", "включающий в себя" и "имеющий" имеют намерение быть включающими и означают то, что могут быть предусмотрены дополнительные элементы, отличные от перечисленных элементов. Дополнительно, следует понимать, что ссылки на "один вариант осуществления" или "вариант осуществления" настоящего раскрытия сущности не имеют намерение интерпретироваться как исключающие существование дополнительных вариантов осуществления, которые также включают изложенные признаки. Например, любой элемент или признак, описанный относительно варианта осуществления в данном документе, может быть комбинируемым с любым элементом или признаком любого другого варианта осуществления, описанного в данном документе, в случае совместимости.[00127] The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that additional elements other than the listed elements may be provided. Additionally, it should be understood that references to “one embodiment” or “an embodiment” of the present disclosure are not intended to be interpreted as precluding the existence of additional embodiments that also include the set forth features. For example, any element or feature described with respect to an embodiment herein may be combined with any element or feature of any other embodiment described herein if compatible.

[00128] Настоящее раскрытие сущности может осуществляться в других характерных формах без отступления от сущности или характеристик. Описанные варианты осуществления должны рассматриваться как иллюстративные, а не ограничивающие. Следовательно, объем раскрытия сущности указывается посредством прилагаемой формулы изобретения, а не посредством вышеприведенного описания. Изменения, которые подпадают под смысл и рамки равнозначности формулы изобретения, должны охватываться ее объемом.[00128] The present disclosure may be embodied in other representative forms without departing from the spirit or characteristics. The described embodiments are to be considered illustrative and not limiting. Accordingly, the scope of the disclosure is indicated by the appended claims rather than by the above description. Changes that fall within the meaning and scope of the claims must be covered by its scope.

Claims (61)

1. Реализуемый компьютером способ конфигурирования аппаратных средств для выполнения функции, содержащий этапы, на которых:1. A computer-implemented method of configuring hardware to perform a function, comprising the steps of: - принимают, в службе обработки функций, запрос на то, чтобы выполнять исходный код, при этом запрос принимается из запрашивающего объекта, и при этом исходный код содержит инструкции для того, чтобы выполнять функцию;- receiving, at a function processing service, a request to execute the source code, wherein the request is received from a requesting entity, and wherein the source code contains instructions for executing the function; - определяют то, что условие аппаратного ускорения было удовлетворено для функции, при этом определение того, что условие аппаратного ускорения было удовлетворено, содержит подсчет числа запросов, соответствующих одной или более функциям и принимаемых службой обработки функций в течение временного интервала, и определение того, что это число запросов превышает пороговое значение;- determining that the hardware acceleration condition has been satisfied for the function, wherein determining that the hardware acceleration condition has been satisfied comprises counting the number of requests corresponding to one or more functions and received by the function processing service during the time interval, and determining that this number of requests exceeds the threshold value; - транслируют инструкции на исходном коде в аппаратно-зависимый код, соответствующий аппаратной схеме;- translate instructions in the source code into hardware-dependent code corresponding to the hardware circuit; - конфигурируют аппаратную схему на основе аппаратно-зависимого кода;- configuring the hardware circuit based on the hardware-dependent code; - инструктируют аппаратной схеме выполнять функцию; и- instructing the hardware circuit to perform the function; And - предоставляют результат, полученный из аппаратной схемы, в запрашивающий объект.- provide the result obtained from the hardware circuit to the requesting entity. 2. Реализуемый компьютером способ по п. 1, в котором:2. The computer-implemented method according to claim 1, in which: - аппаратная схема содержит программируемую пользователем вентильную матрицу (FPGA); и- the hardware circuit contains a field programmable gate array (FPGA); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL), соответствующий FPGA.- Hardware-specific code contains hardware description language (HDL) code corresponding to the FPGA. 3. Реализуемый компьютером способ по п. 1, в котором:3. The computer-implemented method of claim 1, wherein: - аппаратная схема содержит по меньшей мере один из графического процессора (GPU) или процессора цифровых сигналов (DSP); и- the hardware circuit contains at least one of a graphics processing unit (GPU) or a digital signal processor (DSP); And - аппаратно-зависимый код содержит по меньшей мере один из GPU-кода или DSP-кода.- the hardware-dependent code contains at least one of GPU code or DSP code. 4. Реализуемый компьютером способ по п. 1, в котором:4. The computer-implemented method of claim 1, wherein: - аппаратная схема содержит специализированную интегральную схему (ASIC); и- the hardware circuit contains an application-specific integrated circuit (ASIC); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL).- hardware-dependent code contains code in hardware description language (HDL). 5. Реализуемый компьютером способ по п. 1, в котором: 5. The computer-implemented method of claim 1, wherein: функция принадлежит семейству функций;a function belongs to a family of functions; запросы, соответствующие одной или более функциям, являются запросами для выполнения любой функции из семейства функций.requests corresponding to one or more functions are requests to perform any function from a family of functions. 6. Реализуемый компьютером способ по п. 1, в котором определение того, что условие аппаратного ускорения было удовлетворено, дополнительно содержит этапы, на которых:6. The computer-implemented method of claim 1, wherein determining that the hardware acceleration condition has been satisfied further comprises the steps of: - определяют оцененное снижение затрат, ассоциированное с выполнением функции через аппаратную схему по сравнению с выполнением функции через процессор общего назначения; и- determine the estimated cost reduction associated with executing the function through hardware circuitry compared to executing the function through a general purpose processor; And - определяют то, что оцененное снижение затрат превышает пороговое значение.- determine that the estimated cost reduction exceeds a threshold value. 7. Реализуемый компьютером способ по п. 1, в котором запросы, соответствующие одной или более функциям, являются запросами для выполнения функции.7. The computer-implemented method of claim 1, wherein the requests corresponding to the one or more functions are requests to perform the function. 8. Реализуемый компьютером способ конфигурирования аппаратных средств для выполнения функции, содержащий этапы, на которых:8. A computer-implemented method of configuring hardware to perform a function, comprising the steps of: - принимают, в службе обработки функций, запрос на то, чтобы выполнять исходный код, при этом запрос принимается из запрашивающего объекта, и при этом исходный код содержит инструкции для того, чтобы выполнять функцию;- receiving, at a function processing service, a request to execute the source code, wherein the request is received from a requesting entity, and wherein the source code contains instructions for executing the function; - определяют то, что условие аппаратного ускорения было удовлетворено для функции, при этом определение того, что условие аппаратного ускорения было удовлетворено, содержит определение оцененного снижения затрат, ассоциированного с выполнением функции через аппаратную схему по сравнению с выполнением функции через процессор общего назначения, и определяют то, что оцененное снижение затрат превышает пороговое значение;- determining that the hardware acceleration condition has been satisfied for the function, wherein determining that the hardware acceleration condition has been satisfied comprises determining the estimated cost reduction associated with executing the function through the hardware circuit compared to executing the function through a general purpose processor, and determining that the estimated cost reduction exceeds a threshold; - транслируют инструкции на исходном коде в аппаратно-зависимый код, соответствующий аппаратной схеме;- translate instructions in the source code into hardware-dependent code corresponding to the hardware circuit; - конфигурируют аппаратную схему на основе аппаратно-зависимого кода;- configuring the hardware circuit based on the hardware-dependent code; - инструктируют аппаратной схеме выполнять функцию; и- instructing the hardware circuit to perform the function; And - предоставляют результат, полученный из аппаратной схемы, в запрашивающий объект.- provide the result obtained from the hardware circuit to the requesting entity. 9. Реализуемый компьютером способ по п. 8, в котором:9. The computer-implemented method of claim 8, wherein: - аппаратная схема содержит программируемую пользователем вентильную матрицу (FPGA); и- the hardware circuit contains a field programmable gate array (FPGA); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL), соответствующий FPGA.- Hardware-specific code contains hardware description language (HDL) code corresponding to the FPGA. 10. Реализуемый компьютером способ по п. 8, в котором:10. The computer-implemented method of claim 8, wherein: - аппаратная схема содержит по меньшей мере один из графического процессора (GPU) или процессора цифровых сигналов (DSP); и- the hardware circuit contains at least one of a graphics processing unit (GPU) or a digital signal processor (DSP); And - аппаратно-зависимый код содержит по меньшей мере один из GPU-кода или DSP-кода.- the hardware-dependent code contains at least one of GPU code or DSP code. 11. Реализуемый компьютером способ по п. 8, в котором:11. The computer-implemented method of claim 8, wherein: - аппаратная схема содержит специализированную интегральную схему (ASIC); и- the hardware circuit contains an application-specific integrated circuit (ASIC); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL).- hardware-dependent code contains code in hardware description language (HDL). 12. Реализуемый компьютером способ по п. 8, дополнительно содержащий получение множества разных оцененных снижений затрат для множества разных функций.12. The computer-implemented method of claim 8, further comprising obtaining a plurality of different estimated cost savings for a plurality of different functions. 13. Реализуемый компьютером способ по п. 8, в котором пороговое значение указывает минимальное оцененное снижение затрат, которое оправдывает использование аппаратного ускорения.13. The computer-implemented method of claim 8, wherein the threshold value indicates the minimum estimated cost reduction that justifies the use of hardware acceleration. 14. Реализуемый компьютером способ конфигурирования аппаратной схемы для выполнения функции, содержащий этапы, на которых:14. A computer-implemented method of configuring hardware circuitry to perform a function, comprising the steps of: - принимают, в службе обработки функций, запрос на то, чтобы выполнять исходный код, при этом запрос принимается из запрашивающего объекта, и при этом исходный код содержит инструкции для того, чтобы выполнять функцию;- receiving, at a function processing service, a request to execute the source code, wherein the request is received from a requesting entity, and wherein the source code contains instructions for executing the function; - определяют то, что условие аппаратного ускорения было удовлетворено для функции, при этом определение того, что условие аппаратного ускорения было удовлетворено, содержит определение того, что функция включена в библиотеку функций;- determining that the hardware acceleration condition has been satisfied for the function, wherein determining that the hardware acceleration condition has been satisfied comprises determining that the function is included in the function library; - транслируют инструкции на исходном коде в аппаратно-зависимый код, соответствующий аппаратной схеме;- translate instructions in the source code into hardware-dependent code corresponding to the hardware circuit; - конфигурируют аппаратную схему на основе аппаратно-зависимого кода;- configuring the hardware circuit based on the hardware-dependent code; - инструктируют аппаратной схеме выполнять функцию; - instructing the hardware circuit to perform the function; - предоставляют результат, полученный из аппаратной схемы, в запрашивающий объект; и- provide the result obtained from the hardware circuit to the requesting entity; And - добавляют дополнительную функцию в библиотеку функций.- add an additional function to the function library. 15. Реализуемый компьютером способ по п. 14, в котором:15. The computer-implemented method of claim 14, wherein: - аппаратная схема содержит программируемую пользователем вентильную матрицу (FPGA); и- the hardware circuit contains a field programmable gate array (FPGA); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL), соответствующий FPGA.- Hardware-specific code contains hardware description language (HDL) code corresponding to the FPGA. 16. Реализуемый компьютером способ по п. 14, в котором:16. The computer-implemented method of claim 14, wherein: - аппаратная схема содержит по меньшей мере один из графического процессора (GPU) или процессора цифровых сигналов (DSP); и- the hardware circuit contains at least one of a graphics processing unit (GPU) or a digital signal processor (DSP); And - аппаратно-зависимый код содержит по меньшей мере один из GPU-кода или DSP-кода.- the hardware-dependent code contains at least one of GPU code or DSP code. 17. Реализуемый компьютером способ по п. 14, в котором:17. The computer-implemented method of claim 14, wherein: - аппаратная схема содержит специализированную интегральную схему (ASIC); и- the hardware circuit contains an application-specific integrated circuit (ASIC); And - аппаратно-зависимый код содержит код на языке описания аппаратных средств (HDL).- hardware-dependent code contains code in hardware description language (HDL). 18. Реализуемый компьютером способ по п. 14, в котором дополнительная функция является функцией, инструкцию на выполнение которой содержит исходный код.18. The computer-implemented method of claim 14, wherein the additional function is a function for which the source code contains instructions for execution. 19. Реализуемый компьютером способ по п. 14, в котором дополнительная функция является новой функцией, которая отличается от функции, инструкцию на выполнение которой содержит исходный код.19. The computer-implemented method of claim 14, wherein the additional function is a new function that is different from the function for which the source code contains instructions to execute. 20. Реализуемый компьютером способ по п. 14, дополнительно содержащий поддержание индекса библиотеки функций, который содержит множество записей, причем каждая запись идентифицирует конкретную функцию в библиотеке функций и конкретную аппаратную схему, которая была сконфигурирована для выполнения этой конкретной функции.20. The computer-implemented method of claim 14, further comprising maintaining a function library index that contains a plurality of entries, each entry identifying a particular function in the function library and a particular hardware circuit that has been configured to perform that particular function.
RU2022108034A 2019-08-29 2020-06-11 Hardware acceleration for processing functions RU2813618C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US16/555,927 2019-08-29

Publications (1)

Publication Number Publication Date
RU2813618C1 true RU2813618C1 (en) 2024-02-14

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086359A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
US9577829B1 (en) * 2014-09-03 2017-02-21 Amazon Technologies, Inc. Multi-party computation services
US20190026150A1 (en) * 2017-07-20 2019-01-24 Cisco Technology, Inc. Fpga acceleration for serverless computing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086359A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
US9577829B1 (en) * 2014-09-03 2017-02-21 Amazon Technologies, Inc. Multi-party computation services
US20190026150A1 (en) * 2017-07-20 2019-01-24 Cisco Technology, Inc. Fpga acceleration for serverless computing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
K. Bertels и др., "Profiling, Compilation, and HDL Generation within the hArtes Project", 01.01.2007, URL: https://www.researchgate.net/publication/ 230584671 Profiling Compilation and HDL Generation within the hArtes Project. Jain, S., et al.,"Speeding Up Program Execution Using Reconfigurable Hardware and a Hardware Function Library," VLSI Design, январь 1998 года, 1998 Eleventh International Conference, IEEE 1997/1998, pp. 400-405, URL: https://www.researchgate.net/publication/221294579_Speeding_Up_Program_Execution_Using_Reconfigurable_Hardware_and_a_Hardware_Function_Library. *

Similar Documents

Publication Publication Date Title
US10534773B2 (en) Intelligent query parameterization of database workloads
US10628419B2 (en) Many-core algorithms for in-memory column store databases
Pavlo et al. Skew-aware automatic database partitioning in shared-nothing, parallel OLTP systems
EP3740880A1 (en) Pick and applicator for use with a stringed instrument
US20160335318A1 (en) Dynamic aggregate generation and updating for high performance querying of large datasets
US20170262361A1 (en) Dynamic testing based on automated impact analysis
Ivanov et al. Big data benchmark compendium
Hesse et al. ESPBench: The enterprise stream processing benchmark
US10872086B2 (en) Selectivity estimation for database query planning
US12293230B2 (en) Hardware acceleration for function processing
US10191947B2 (en) Partitioning advisor for online transaction processing workloads
WO2016210200A1 (en) Automated validation of database index creation
US10534774B2 (en) Query performance degradation analysis timing
US9111022B2 (en) Simulation techniques for predicting in-memory database systems performance
RU2813618C1 (en) Hardware acceleration for processing functions
US10489416B2 (en) Optimizing and managing execution of hybrid flows
US11475017B2 (en) Asynchronous data enrichment for an append-only data store
US8521721B2 (en) Custom operators for a parallel query engine
Matsuura et al. A highly efficient consolidated platform for stream computing and hadoop
Patra High-Performance Database Management System Design for Efficient Query Scheduling
Wu et al. Peacock: a customizable MapReduce for multicore platform
Yaagoub Context Aware Parallel Processing of Spatio-Temporal Queries