Profiling tools for analyzing software code performance

By translating application source code to intermediate code, generating metadata, detecting hardware performance profiles, and calculating WCETs, the system addresses the challenge of predicting software application performance on unknown hardware platforms, ensuring optimal hardware selection and reducing redevelopment costs.

WO2025120355A1PCT designated stage expired Publication Date: 2025-06-12TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)

Patent Information

Application Number
PCT/IB2023/062273
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-12-05
Publication Date
2025-06-12

AI Technical Summary

Technical Problem

Existing technologies face challenges in predicting the worst-case execution time (WCET) of software applications before deployment, especially when the hardware platform is unknown, leading to potential performance issues and increased costs due to redevelopment or redeployment.

Method used

A computer-implemented method and system that translate application source code to intermediate code, generate metadata based on system requirements, detect hardware performance profiles, and calculate WCETs for each hardware profile, enabling early performance assessments and optimal hardware selection.

Benefits of technology

This approach allows for accurate prediction of application performance on different hardware systems, enabling developers to select suitable hardware platforms that meet user requirements, reducing costs and overhead associated with redevelopment or redeployment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure IB2023062273_12062025_PF_FP_ABST
    Figure IB2023062273_12062025_PF_FP_ABST
Patent Text Reader

Abstract

Methods and systems are described for predicting application performance on a hardware system, without the need for physical testing or use of the subject hardware. This can be done with a set of profiling and analysis tools. In some embodiments an Application Profiling Tool can receive information about the possible hardware architectures that an application source code supports, application and user requirements, configurations, parameters, and / or application specific libraries. Information about common libraries can be stored and retrieved from a database. The results provided by the Application Profiling Tool can comprise representations of the code together with other derived metadata based on the inputs. The performance metadata can then be used directly or later (and possibly, in a different location) to estimate the WCET for a specified hardware and architecture.
Need to check novelty before this filing date? Find Prior Art

Description

PROFILING TOOLS FOR ANALYZING SOFTWARE CODE PERFORMANCETECHNICAL FIELD

[0001] The present disclosure generally relates to the technical field of wireless communications and more particularly to edge computing and management of computing tasks by devices that make up a wireless communication network.BACKGROUND

[0002] In different domains, e.g., embedded systems, it is crucial for the developer or user to predict application performance before deployment because the final hardware platform that will be used to run the software code has not yet been determined. At the same time, the user might need to investigate different hardware platforms for the same software or application to realize which combination of resources (CPU (central processing unit), memory, peripherals, etc.) is more suitable considering application and user requirements and preferences. These requirements can include energy consumption, monetary cost, latency, and so on. Therefore, it is important to assess the likely worst-case performance of the application to be able to choose a suitable hardware platform.

[0003] Generally, determining Worst Case Execution Time (WCET) before the execution platform has been determined is not possible, although there have been proposals on how to achieve it using source code analysis. See, e.g., Altenbernd, Peter, et al. "Automatic Generation of Timing Models for Timing Analysis of High-Level Code." RTNS. 2011. Timing properties are normally verified rather late in the development process, when the code has been compiled and linked, and when the hardware platform has been determined. If the application and user requirements turn out not to be met, then re-development or re-deployment may be needed which results in more costs and overhead.

[0004] Early performance assessments are therefore very useful since they can help the user or developer to have an estimation of final performance of the software code and to select a suitable hardware platform that can match the requirements. This would provide additional insights for the user or application developer as to expected performance when deployed. Someapproaches have attempted to reduce costs in edge computing scenarios. See, PCT Patent Application No. PCT / IB2023 / 061010, titled “Cost Analysis for Computational Offloading Decisions.”SUMMARY

[0005] One embodiment under the present disclosure comprises a computer implemented method for predicting a performance of an application on one or more hardware systems. The method includes receiving an application source code and one or more system requirements for running the application source code; and translating the application source code to intermediate code. The method further includes generating one or more metadata based at least in part on the one or more system requirements; detecting one or more hardware performance profiles of the one or more hardware systems; and calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0006] Another possible method embodiment under the present disclosure is a computer implemented method for predicting a performance of an application on one or more hardware systems. The method comprises receiving an intermediate code comprising a translation of an application source code; and receiving one or more metadata based at least in part on one or more system requirements associated with the application source code. The method further comprises receiving one or more hardware performance profiles of the one or more hardware systems; and calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0007] Another possible method embodiment under the present disclosure is a computer implemented method for generating application code. The method includes receiving an application source code and one or more system requirements for running the application source code; and translating the application source code to intermediate code. The method also includes generating one or more metadata based at least in part on the one or more system requirements.

[0008] Another possible method embodiment under the present disclosure is a method performed by a UE for predicting a performance of an application on one or more hardware systems. The method includes receiving an application source code and one or more systemrequirements for running the application source code; translating the application source code to intermediate code; and generating one or more metadata based at least in part on the one or more system requirements. The method further includes detecting one or more hardware performance profiles of the one or more hardware systems; and calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0009] Another possible method embodiment under the present disclosure is a method performed by a network node for predicting a performance of an application on one or more hardware systems. The method includes receiving an application source code and one or more system requirements for running the application source code; translating the application source code to intermediate code; and generating one or more metadata based at least in part on the one or more system requirements. The method further comprises detecting one or more hardware performance profiles of the one or more hardware systems; and calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0010] Another embodiment under the present disclosure is a system for predicting performance of an application on one or more hardware systems. The system comprises processing circuitry; and a memory. The memory contains instructions executable by the processing circuitry whereby the system is operative to: receive an application source code and one or more system requirements for running the application source code; translate the application source code to intermediate code; generate one or more metadata based at least in part on the one or more system requirements; detect one or more hardware performance profiles of the one or more hardware systems; and calculate one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0011] Another embodiment under the present disclosure is a system for predicting performance of an application on one or more hardware systems. The system comprises processing circuitry; and a memory. The memory contains instructions executable by the processing circuitry whereby the system is operative to: receive an intermediate code comprising a translation of an application source code; receive one or more metadata based at least in part on one or more system requirements associated with the application source code; receive one or more hardware performance profiles of the one or more hardware systems; and calculate one or more WCETs forthe intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0012] Another embodiment under the present disclosure is a system for predicting performance of an application on one or more hardware systems. The system comprises processing circuitry; and a memory. The memory contains instructions executable by the processing circuitry whereby the system is operative to: receive an application source code and one or more system requirements for running the application source code; translate the application source code to intermediate code; and generate one or more metadata based at least in part on the one or more system requirements.

[0013] Another embodiment under the present disclosure is a system for predicting performance of an application on one or more hardware systems. The system comprises an application profiler configured to; receive an application source code and one or more system requirements for running the application source code; translate the application source code to intermediate code; and generate one or more metadata based at least in part on the one or more system requirements. The system further comprises a WCET analyzer, configured to; receive the intermediate code and the one or more metadata from the application profiler; detect one or more hardware performance profiles of the one or more hardware systems; and calculate one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

[0014] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an indication of the scope of the claimed subject matter.BRIEF DESCRIPTION OF THE DRAWINGS

[0015] For a more complete understanding of the present disclosure, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:

[0016] Fig. 1 illustrates a system embodiment under the present disclosure;

[0017] Fig. 2 illustrates an App Profiler embodiment under the present disclosure;

[0018] Fig. 3 illustrates a WCET Analyzer embodiment under the present disclosure;

[0019] Fig. 4 illustrates a Hardware Profiler embodiment under the present disclosure;

[0020] Fig. 5 illustrates a flow-chart of a method embodiment under the present disclosure;

[0021] Fig. 6 illustrates a flow-chart of a method embodiment under the present disclosure;

[0022] Fig. 7 illustrates a flow-chart of a method embodiment under the present disclosure;

[0023] Fig. 8 illustrates a flow-chart of a method embodiment under the present disclosure;

[0024] Fig. 9 illustrates a flow-chart of a method embodiment under the present disclosure;

[0025] Fig. 10 shows a schematic of a communication system embodiment under the present disclosure;

[0026] Fig. 11 shows a schematic of a user equipment embodiment under the present disclosure;

[0027] Fig. 12 shows a schematic of a network node embodiment under the present disclosure;

[0028] Fig. 13 shows a schematic of a host embodiment under the present disclosure;

[0029] Fig. 14 shows a schematic of a virtualization environment embodiment under the present disclosure; and

[0030] Fig. 15 shows a schematic representation of an embodiment of communication amongst nodes, hosts, and user equipment under the present disclosure.DETAILED DESCRIPTION

[0031] Before describing various embodiments of the present disclosure in detail, it is to be understood that this disclosure is not limited to the parameters of the particularlyexemplified systems, methods, apparatus, products, processes, and / or kits, which may, of course, vary. Thus, while certain embodiments of the present disclosure will be described in detail, with reference to specific configurations, parameters, components, elements, etc., the descriptions are illustrative and are not to be construed as limiting the scope of the claimed embodiments. In addition, the terminology used herein is for the purpose of describing the embodiments and is not necessarily intended to limit the scope of the claimed embodiments.

[0032] In the context of computational offloading and edge computing when software modules need to be migrated away from the device to another device at the edge with higher computational capacity to be run it is beneficial to be able to do some assessments either at the user side or at the edge side without the need to transfer the whole software code as it can bring more overhead. For resource allocation, it is useful to get an abstract version of the code to select the best available resources to be able to satisfy user requirements and service level agreements (SLAs).

[0033] There currently exist certain challenges in the prior art described above. In order to perform the required performance assessment, the following problems often need to be answered:• Problem 1 : How to generate an abstract representation (metadata) of the source code to be used later to investigate the code behavior using different hardware platforms?• Problem 2: How to estimate execution time and performance without having / sharing the source code and only using the metadata?

[0034] There exist several solutions to Problem 1, however, none of them consider different hardware architecture types, application requirements, and calls to (standard) libraries when they generate metadata. For Problem 2, time analysis and especially WCET analysis is a very well-known technique and several solutions have been proposed before, however, the results showed high derivation from the real measurements as their abstract code does not accurately capture the software code behavior.

[0035] Certain aspects of the present disclosure and their embodiments may provide solutions to these or other challenges. This present disclosure proposes certain solutions to the problems stated above involving a set of profiling and analysis tools. An Application Profiling Tool can receive input such as information about the possible hardware architectures thatthe source code supports (i.e., can be executed on), application and user requirements, configurations, parameters, and application specific libraries. Information about common libraries can be stored and retrieved from a database. The results provided by the Application Profiling Tool can be several representations of the code together with other derived metadata based on the inputs. One example of such an abstract machine is WebAssembly. The performance metadata can then be used directly or later (and possibly, in a different location) to estimate the WCET for a specified hardware and architecture. From the derived representations and metadata, a WCET Analyzer Tool can generate WCET data for a selected target hardware platform. A Hardware Profiling Tool will be used to generate hardware profiles for specific hardware configurations. The hardware profiles will be stored in a database used by the WCET Analyzer Tool.

[0036] These profiling tools together with a set of appropriate WCET analyzer tools and mechanisms collect and assemble the input data that can be used in different embodiments, for example:• To verify that an application will perform approximately as expected on different hardware platforms without testing it on the real hardware.• In an offloading scenario, these tools can be used by a developer to generate the metadata to be sent to the offloading manager or cost function at the edge site to be used to select the best hardware configuration to satisfy the application and user requirements.

[0037] Certain embodiments of the present disclosure can comprise unique profiling tools which in combination with input parameters generate different metadata or code representations to be used by the WCET Analyze Tool to calculate WCETs for different hardware platforms. The input parameters can include, e.g.:• Application Profiling Tool: a. The source code to profile. b. Architecture types. This specifies the hardware architecture types that the source code supports (i.e., target execution architectures). c. Pre-generated metadata for application specific libraries used by the code. Metadata for common libraries are stored in a database but can also be passed as input. d. Application specific requirements, configurations, parameters, and other information that can affect the execution time defined by the application developer.e. User requirements. These preferences can reflect what is regarded as beneficial at the time of invocation, e.g., saving energy, maximizing performance, minimizing cost, etc.• Hardware Profiling Tool a. Hardware specifications, e.g., identity, type, number of cores, etc. b. Test suits• WCET Analyzer Tool a. The output from an Application Profiling Tool b. Target architecture type(s)

[0038] Certain embodiments may provide one or more of the following technical advantages. For example, the profiling tools together with a set of tools to assemble appropriate input data provide a base for a multitude of embodiments that solve the problems described above. In addition, certain embodiments of profiling tools can generate abstract representations of the source code that can be used for performance evaluations. As the code representations are abstract and they have been derived considering a set of hardware architectures, the representations can be used to evaluate the code performance for different physical hardware configurations. In this manner, one does not need to have knowledge of exact hardware beforehand and the results of the evaluation can provide a comprehensive insight on the code behavior and can be used to select the machine with a suitable configuration for any specific code. The generated metadata can be stored and shared to be used later or on other locations to evaluate how the code will perform on different platforms and physical hardware. Furthermore, embodiments can take into account several details including, e.g., requirements, configurations, parameters and software libraries used by the source code.

[0039] Further embodiments contemplated herein will now be described more fully with reference to the accompanying drawings. Embodiments are provided by way of example to convey the scope of the subject matter to those skilled in the art. For purposes of the present disclosure, the term “app” may be used for “application” in some instances.

[0040] Figure 1 illustrates one embodiment of a profiling process and a profiler tool or system (e.g., a hardware system with software components) 10. Profiler tool or system 10 can comprise a single computing device, or a plurality of computing devices, such as UEs, networknodes, hosts, and / or other computing devices. Profiler tool 10 can comprise three sub tools: App Profiler 20, Hardware Profiler 30, and WCET Analyzer 40. In one possible scenario, a developer will provide the application source code and requirements of running the application to App Profiler 20. App Profiler 20 will convert it to intermediate code 25 and generate application metadata 23 which contains various necessary information concerning the application. These will be passed to the WCET Analyzer 40 to generate the WCET estimation 50 of the application. Hardware Profiler 30 is used to generate hardware profiles 33 of different physical hardware configurations. These hardware profiles 33 are used by WCET Analyzer 40 to generate WCET estimations 50.

[0041] Figure 2 illustrates a possible embodiment of an App Profiler 200 (such as App Profiler 20 of Figure 1). App profiler 200 converts the application source code 220 to intermediatory code 260 for WCET estimation. The developer provides application requirements 230 (e.g., parameters of the app, configuration of app, and library files) and architecture types 210 to be used to run the application. App profiler 200 also has a database 270 of architecture profiles of various common libraries, which helps in generating the intermediary code 260 of the application (which can be separated / distinguished for e.g., different architectures 1 through n). It also includes various data related to the application in app metadata 240.

[0042] Figure 3 illustrates one possible embodiment of a WCET Analyzer 400, which can receive the output from App Profiler 200 of Figure 2. WCET Analyzer 400 generates the WCET estimation 460 of the application source code for the requested hardware types 440 (which may come from Hardware Profiler 30 of Figure 1) based on the intermediatory code 420 (possibly for multiple possible architectures) and / or app metadata 410 provided by the App Profiler. It may also use hardware profiles 450 to estimate the WCET of an application source code. The hardware profile 450 can contain performance measurements of individual instructions in an instruction set of the intermediate language, generated by e.g., the Hardware Profiler 30 of Figure 1 (and see below for further description) for a specific hardware configuration. One possible tool is the one described in Altenbernd, which could be incorporated into embodiments under the present disclosure.

[0043] Figure 4 illustrates one possible embodiment of a Hardware Profiler 600 (which could comprise e.g., Hardware Profiler 30 of Figure 1). Hardware Profiler 600 takes a specification 620 of a hardware configuration and a set of test suits 610. These tests suits 610,written in the intermediate language, are then compiled into native instructions 640 by the native code generator 630 for the hardware to profile. Each instruction in the intermediate language will be compiled into one or more native instructions 640. The compiled test suits are then executed and the execution time of the set of native instructions 640 representing each of the instructions in the intermediate language are measured. These measurements will produce a table of the execution time for each instruction of the immediate language for the given hardware configuration. For this to work the Hardware Profiler 600 preferably runs on the hardware configuration to generate the right profile. This table together with the additional information from the hardware specification 620 (e.g., number of cores, cache size, etc.) will be the result of the Hardware profile 670. This hardware profile 670 can then be added to the database used by e.g., the WCET Analyzer 400 of Figure 3. Hardware Profiler 600 preferably is applied to every new hardware configuration the system of tools should support.

[0044] In certain embodiments of system 10, Application Profiler 200 and WCET Analyzer 400 can be combined into one tool that can be used by application developers to verify that an application will perform approximately as expected on different hardware platforms without testing it on the real hardware.

[0045] In certain embodiments WCET Analyzer 400 is used in, for example, an orchestration system (e.g., a system 10), to decide where a task should be placed and scheduled. System 10 can then use the application metadata and the intermediate code for the task and calculate the WCET for the hardware resources available based on their associated hardware profiles (e.g., as generated by the Hardware Profiler 600 and stored in the WCET Analyzer’s 400 Hardware Profiles 450 database).

[0046] In yet other embodiments Application Profiler 200 can be used stand-alone by application developers to generate and package the application code. The application (as downloaded by the users) can e.g., consist of the application metadata and the intermediate code. The intermediate code is then used as the object code and then executed by an interpreter or compiled into native code for the hardware before execution in a similar way as is done with, for example, WebAssembly.Additional Embodiments

[0001] One possible method embodiment under the present disclosure is shown in Figure 5. Method 800 comprises a computer implemented method for predicting a performance of an application on one or more hardware systems. Step 810 is receiving an application source code and one or more system requirements for running the application source code. Step 820 is translating the application source code to intermediate code. Step 830 is generating one or more metadata based at least in part on the one or more system requirements. Step 840 is detecting one or more hardware performance profiles of the one or more hardware systems. Step 850 is calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles. Method 800 can comprise a variety of additional step, alternative steps or characterizations. For example, the method may further comprise storing each of the one or more WCETs in a table. In some embodiments the receiving, translating, generating, and calculating can be performed by the same one or more computing devices. In certain embodiments the method is performed without the use of the one or more hardware systems. Some embodiments can further comprise storing one or more of: the application code, intermediate code, and the one or more metadata. Furthermore, some embodiments can also comprise transmitting one or more of: the application code; intermediate code; the one or more WCETs; one or more metadata to a remote device. The remote device could comprise, e.g., at least one of: a network node; a gNB; a UE; or an eNB. Some embodiments can further comprise receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs. In certain embodiments one or more of: the application code; intermediate code; the one or more WCETs; one or more metadata to a remote device; can be used to decide where to perform the one or more tasks in an edge computing scenario. In some embodiments the one or more system requirements can comprise one or more of: one or more hardware architecture types; one or more configurations; one or more parameters that can affect execution time; one or more user requirements; number of cores. In some embodiments the one or more hardware performance profiles can comprise at least one of: a number of cores; one or more hardware architecture types; one or more configurations; one or more hardware identifiers.

[0002] Another possible method embodiment under the present disclosure is shown in Figure 6. Method 1000 comprises a computer implemented method for predicting a performance of an application on one or more hardware systems. Step 1010 is receiving an intermediate codecomprising a translation of an application source code. Step 1020 is receiving one or more metadata based at least in part on one or more system requirements associated with the application source code. Step 1030 is receiving one or more hardware performance profiles of the one or more hardware systems. Step 1040 is calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles. Method 1000 can comprise a variety of additional step, alternative steps or characterizations. Possible variations of method 800 can be implemented with respect to method 1000, for example.

[0003] Another possible method embodiment under the present disclosure is shown in Figure 7. Method 1200 comprises a computer implemented method for generating application code. Step 1210 is receiving an application source code and one or more system requirements for running the application source code. Step 1220 is translating the application source code to intermediate code. Step 1230 is generating one or more metadata based at least in part on the one or more system requirements. Method 1200 can comprise a variety of additional step, alternative steps or characterizations. Possible variations of method 800 can be implemented with respect to method 1200, for example. For example, in some embodiments method 1200 can further comprise transmitting the intermediate code and the one or more metadata to a recipient.

[0004] Another possible method embodiment under the present disclosure is shown in Figure 8. Method 1400 comprises a method performed by a UE for predicting a performance of an application on one or more hardware systems. Step 1410 is receiving an application source code and one or more system requirements for running the application source code. Step 1420 is translating the application source code to intermediate code. Step 1430 is generating one or more metadata based at least in part on the one or more system requirements. Step 1440 is detecting one or more hardware performance profiles of the one or more hardware systems. Step 1450 is calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles. Method 1400 can comprise a variety of additional step, alternative steps or characterizations. Possible variations of method 800 can be implemented with respect to method 1400, for example. For example, in some embodiments the one or more hardware systems can comprise at least one of; one or more UEs; one or more network nodes. In some embodiments the method further comprises receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs.

[0005] Another possible method embodiment under the present disclosure is shown in Figure 9. Method 1600 comprises a method performed by a network node, for predicting a performance of an application on one or more hardware systems. Step 1610 is receiving an application source code and one or more system requirements for running the application source code. Step 1620 is translating the application source code to intermediate code. Step 1630 is generating one or more metadata based at least in part on the one or more system requirements. Step 1640 is detecting one or more hardware performance profiles of the one or more hardware systems. Step 1650 is calculating one or more WCETs for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles. Method 1600 can comprise a variety of additional step, alternative steps or characterizations. Possible variations of method 800 can be implemented with respect to method 1400, for example. For example, in some embodiments the one or more hardware systems can comprise at least one of; one or more UEs; one or more network nodes. In some embodiments the method can also include receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs.Additional Embodiments

[0006] Figure 10 shows an example of a communication system or hardware system 2100 in accordance with some embodiments. In the example, the communication system 2100 includes a telecommunication network 2102 that includes an access network 2104, such as a RAN, and a core network 2106, which includes one or more core network nodes 2108. The access network 2104 includes one or more access network nodes, such as network nodes 2110a and 2110b (one or more of which may be generally referred to as network nodes 2110), or any other similar 3rd Generation Partnership Project (3GPP) access node or non-3GPP access point. The network nodes 2110 facilitate direct or indirect connection of UE, such as by connecting UEs 2112a, 2112b, 2112c, and 2112d (one or more of which may be generally referred to as UEs 2112) to the core network 2106 over one or more wireless connections.

[0007] Example wireless communications over a wireless connection include transmitting and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for conveying information without the use of wires, cables, or other material conductors. Moreover, in different embodiments, the communicationsystem 1100 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals whether via wired or wireless connections. The communication system 2100 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar type of system.

[0008] The UEs 2112 may be any of a wide variety of communication devices, including wireless devices arranged, configured, and / or operable to communicate wirelessly with the network nodes 2110 and other communication devices. Similarly, the network nodes 2110 are arranged, capable, configured, and / or operable to communicate directly or indirectly with the UEs 2112 and / or with other network nodes or equipment in the telecommunication network 2102 to enable and / or provide network access, such as wireless network access, and / or to perform other functions, such as administration in the telecommunication network 2102.

[0009] In the depicted example, the core network 2106 connects the network nodes 2110 to one or more hosts, such as host 2116. These connections may be direct or indirect via one or more intermediary networks or devices. In other examples, network nodes may be directly coupled to hosts. The core network 2106 includes one more core network nodes (e.g., core network node 2108) that are structured with hardware and software components. Features of these components may be substantially similar to those described with respect to the UEs, network nodes, and / or hosts, such that the descriptions thereof are generally applicable to the corresponding components of the core network node 2108. Example core network nodes include functions of one or more of a Mobile Switching Center (MSC), Mobility Management Entity (MME), Home Subscriber Server (HSS), Access and Mobility Management Function (AMF), Session Management Function (SMF), Authentication Server Function (AUSF), Subscription Identifier De-concealing function (SIDF), Unified Data Management (UDM), Security Edge Protection Proxy (SEPP), Network Exposure Function (NEF), and / or a User Plane Function (UPF).

[0010] The host 2116 may be under the ownership or control of a service provider other than an operator or provider of the access network 2104 and / or the telecommunication network 2102, and may be operated by the service provider or on behalf of the service provider. The host 2116 may host a variety of applications to provide one or more service. Examples of such applications include live and pre-recorded audio / video content, data collection services such as retrieving and compiling data on various ambient conditions detected by a plurality of UEs,analytics functionality, social media, functions for controlling or otherwise interacting with remote devices, functions for an alarm and surveillance center, or any other such function performed by a server.

[0011] As a whole, the communication system 2100 of Figure 10 enables connectivity between the UEs, network nodes, and hosts. In that sense, the communication system may be configured to operate according to predefined rules or procedures, such as specific standards that include, but are not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standard (e.g., 6G); wireless local area network (WLAN) standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards (WiFi); and / or any other appropriate wireless communication standard, such as the Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z- Wave, Near Field Communication (NFC) ZigBee, LiFi, and / or any low-power wide-area network (LPWAN) standards such as LoRa and Sigfox.

[0012] In some examples, the telecommunication network 2102 is a cellular network that implements 3GPP standardized features. Accordingly, the telecommunications network 2102 may support network slicing to provide different logical networks to different devices that are connected to the telecommunication network 2102. For example, the telecommunications network 2102 may provide Ultra Reliable Low Latency Communication (URLLC) services to some UEs, while providing Enhanced Mobile Broadband (eMBB) services to other UEs, and / or Massive Machine Type Communication (mMTC)ZMassive loT services to yet further UEs.

[0013] In some examples, the UEs 2112 are configured to transmit and / or receive information without direct human interaction. For instance, a UE may be designed to transmit information to the access network 2104 on a predetermined schedule, when triggered by an internal or external event, or in response to requests from the access network 2104. Additionally, a UE may be configured for operating in single- or multi-RAT or multi-standard mode. For example, a UE may operate with any one or combination of Wi-Fi, NR (New Radio) and LTE, i.e. being configured for multi-radio dual connectivity (MR-DC), such as E-UTRAN (Evolved-UMTS Terrestrial Radio Access Network) New Radio - Dual Connectivity (EN-DC).

[0014] In the example, the hub 2114 communicates with the access network 2104 to facilitate indirect communication between one or more UEs (e.g., UE 2112c and / or 2112d) and network nodes (e.g., network node 2110b). In some examples, the hub 2114 may be a controller, router, content source and analytics, or any of the other communication devices described herein regarding UEs. For example, the hub 2114 may be a broadband router enabling access to the core network 2106 for the UEs. As another example, the hub 2114 may be a controller that sends commands or instructions to one or more actuators in the UEs. Commands or instructions may be received from the UEs, network nodes 2110, or by executable code, script, process, or other instructions in the hub 2114. As another example, the hub 2114 may be a data collector that acts as temporary storage for UE data and, in some embodiments, may perform analysis or other processing of the data. As another example, the hub 2114 may be a content source. For example, for a UE that is a VR headset, display, loudspeaker or other media delivery device, the hub 2114 may retrieve VR assets, video, audio, or other media or data related to sensory information via a network node, which the hub 2114 then provides to the UE either directly, after performing local processing, and / or after adding additional local content. In still another example, the hub 2114 acts as a proxy server or orchestrator for the UEs, in particular in if one or more of the UEs are low energy loT devices.

[0015] The hub 2114 may have a constant / persistent or intermittent connection to the network node 2110b. The hub 2114 may also allow for a different communication scheme and / or schedule between the hub 2114 and UEs (e.g., UE 2112c and / or 2112d), and between the hub 2114 and the core network 2106. In other examples, the hub 2114 is connected to the core network 2106 and / or one or more UEs via a wired connection. Moreover, the hub 2114 may be configured to connect to an M2M service provider over the access network 1104 and / or to another UE over a direct connection. In some scenarios, UEs may establish a wireless connection with the network nodes 2110 while still connected via the hub 2114 via a wired or wireless connection. In some embodiments, the hub 2114 may be a dedicated hub - that is, a hub whose primary function is to route communications to / from the UEs from / to the network node 2110b. In other embodiments, the hub 2114 may be a non-dedicated hub - that is, a device which is capable of operating to route communications between the UEs and network node 2110b, but which is additionally capable of operating as a communication start and / or end point for certain data channels.

[0016] Figure 11 shows a UE or computing device 2200 in accordance with some embodiments. As used herein, a UE refers to a device capable, configured, arranged and / or operable to communicate wirelessly with network nodes and / or other UEs. UE 2200 could also comprise the components of a computing device(s), such as comprising profiling system 10 of Figure 1. Examples of a UE include, but are not limited to, a smart phone, mobile phone, cell phone, voice over IP (VoIP) phone, wireless local loop phone, desktop computer, personal digital assistant (PDA), wireless cameras, gaming console or device, music storage device, playback appliance, wearable terminal device, wireless endpoint, mobile station, tablet, laptop, laptop- embedded equipment (LEE), laptop-mounted equipment (LME), smart device, wireless customerpremise equipment (CPE), vehicle-mounted or vehicle embedded / integrated wireless device, etc. Other examples include any UE identified by the 3rd Generation Partnership Project (3 GPP), including a narrow band internet of things (NB-IoT) UE, a machine type communication (MTC) UE, and / or an enhanced MTC (eMTC) UE.

[0017] A UE may support device-to-device (D2D) communication, for example by implementing a 3 GPP standard for sidelink communication, Dedicated Short-Range Communication (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle-to- everything (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the relevant device. Instead, a UE may represent a device that is intended for sale to, or operation by, a human user but which may not, or which may not initially, be associated with a specific human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended for sale to, or operation by, an end user but which may be associated with or operated for the benefit of a user (e.g., a smart power meter).

[0018] The UE 2200 includes processing circuitry 2202 that is operatively coupled via a bus 2204 to an input / output interface 2206, a power source 2208, a memory 2210, a communication interface 2212, and / or any other component, or any combination thereof. Certain UEs may utilize all or a subset of the components shown in Figure 10. The level of integration between the components may vary from one UE to another UE. Further, certain UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.

[0019] The processing circuitry 2202 is configured to process instructions and data and may be configured to implement any sequential state machine operative to execute instructionsstored as machine- readable computer programs in the memory 2210. The processing circuitry 2202 may be implemented as one or more hardware-implemented state machines (e.g., in discrete logic, field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.); programmable logic together with appropriate firmware; one or more stored computer programs, general-purpose processors, such as a microprocessor or digital signal processor (DSP), together with appropriate software; or any combination of the above. For example, the processing circuitry 2202 may include multiple central processing units (CPUs).

[0020] In the example, the input / output interface 2206 may be configured to provide an interface or interfaces to an input device, output device, or one or more input and / or output devices. Examples of an output device include a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. An input device may allow a user to capture information into the UE 2200. Examples of an input device include a touch-sensitive or presence-sensitive display, a camera (e.g., a digital camera, a digital video camera, a web camera, etc.), a microphone, a sensor, a mouse, a trackball, a directional pad, a trackpad, a scroll wheel, a smartcard, and the like. The presencesensitive display may include a capacitive or resistive touch sensor to sense input from a user. A sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device may use the same type of interface port as an input device. For example, a Universal Serial Bus (USB) port may be used to provide an input device and an output device.

[0021] In some embodiments, the power source 2208 is structured as a battery or battery pack. Other types of power sources, such as an external power source (e.g., an electricity outlet), photovoltaic device, or power cell, may be used. The power source 2208 may further include power circuitry for delivering power from the power source 2208 itself, and / or an external power source, to the various parts of the UE 2200 via input circuitry or an interface such as an electrical power cable. Delivering power may be, for example, for charging of the power source 2208. Power circuitry may perform any formatting, converting, or other modification to the power from the power source 2208 to make the power suitable for the respective components of the UE 2200 to which power is supplied.

[0022] The memory 2210 may be or be configured to include memory such as random access memory (RAM), read-only memory (ROM), programmable read-only memory(PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, hard disks, removable cartridges, flash drives, and so forth. In one example, the memory 2210 includes one or more application programs 2214, such as an operating system, web browser application, a widget, gadget engine, or other application, and corresponding data 2216. The memory 2210 may store, for use by the UE 2200, any of a variety of various operating systems or combinations of operating systems.

[0023] The memory 2210 may be configured to include a number of physical drive units, such as redundant array of independent disks (RAID), flash memory, USB flash drive, external hard disk drive, thumb drive, pen drive, key drive, high-density digital versatile disc (HD- DVD) optical disc drive, internal hard disk drive, Blu-Ray optical disc drive, holographic digital data storage (HDDS) optical disc drive, external mini-dual in-line memory module (DIMM), synchronous dynamic random access memory (SDRAM), external micro-DIMM SDRAM, smartcard memory such as tamper resistant module in the form of a universal integrated circuit card (UICC) including one or more subscriber identity modules (SIMs), such as a USIM and / or ISIM, other memory, or any combination thereof. The UICC may for example be an embedded UICC (eUICC), integrated UICC (iUICC) or a removable UICC commonly known as ‘SIM card.’ The memory 2210 may allow the UE 2200 to access instructions, application programs and the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied as or in the memory 2210, which may be or comprise a device-readable storage medium.

[0024] The processing circuitry 2202 may be configured to communicate with an access network or other network using the communication interface 2212. The communication interface 2212 may comprise one or more communication subsystems and may include or be communicatively coupled to an antenna 2222. The communication interface 2212 may include one or more transceivers used to communicate, such as by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network). Each transceiver may include a transmitter 2218 and / or a receiver 2220 appropriate to provide network communications (e.g., optical, electrical, frequency allocations, and so forth). Moreover, the transmitter 2218 and receiver 2220 may be coupled toone or more antennas (e.g., antenna 2222) and may share circuit components, software or firmware, or alternatively be implemented separately.

[0025] In the illustrated embodiment, communication functions of the communication interface 2212 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. Communications may be implemented in according to one or more communication protocols and / or standards, such as IEEE 802.11, Code Division Multiplexing Access (CDMA), Wideband Code Division Multiple Access (WCDMA), GSM, LTE, New Radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / internet protocol (TCP / IP), synchronous optical networking (SONET), Asynchronous Transfer Mode (ATM), QUIC, Hypertext Transfer Protocol (HTTP), and so forth.

[0026] Regardless of the type of sensor, a UE may provide an output of data captured by its sensors, through its communication interface 2212, via a wireless connection to a network node. Data captured by sensors of a UE can be communicated through a wireless connection to a network node via another UE. The output may be periodic (e.g., once every 15 minutes if it reports the sensed temperature), random (e.g., to even out the load from reporting from several sensors), in response to a triggering event (e.g., when moisture is detected an alert is sent), in response to a request (e.g., a user initiated request), or a continuous stream (e.g., a live video feed of a patient).

[0027] As another example, a UE comprises an actuator, a motor, or a switch, related to a communication interface configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input the states of the actuator, the motor, or the switch may change. For example, the UE may comprise a motor that adjusts the control surfaces or rotors of a drone in flight according to the received input or to a robotic arm performing a medical procedure according to the received input.

[0028] A UE, when in the form of an Internet of Things (loT) device, may be a device for use in one or more application domains, these domains comprising, but not limited to, city wearable technology, extended industrial application and healthcare. Non-limiting examples of such an loT device are a device which is or which is embedded in: a connected refrigerator orfreezer, a TV, a connected lighting device, an electricity meter, a robot vacuum cleaner, a voice controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / moisture sensor, an electrical door lock, a connected doorbell, an air conditioning system like a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a head-mounted display for Augmented Reality (AR) or Virtual Reality (VR), a wearable for tactile augmentation or sensory enhancement, a water sprinkler, an animal- or item-tracking device, a sensor for monitoring a plant or animal, an industrial robot, an Unmanned Aerial Vehicle (UAV), and any kind of medical device, like a heart rate monitor or a remote controlled surgical robot. A UE in the form of an loT device comprises circuitry and / or software in dependence of the intended application of the loT device in addition to other components as described in relation to the UE 2200 shown in Figure 10.

[0029] As yet another specific example, in an loT scenario, a UE may represent a machine or other device that performs monitoring and / or measurements, and transmits the results of such monitoring and / or measurements to another UE and / or a network node. The UE may in this case be an M2M device, which may in a 3 GPP context be referred to as an MTC device. As one particular example, the UE may implement the 3 GPP NB-IoT standard. In other scenarios, a UE may represent a vehicle, such as a car, a bus, a truck, a ship and an airplane, or other equipment that is capable of monitoring and / or reporting on its operational status or other functions associated with its operation.

[0030] In practice, any number of UEs may be used together with respect to a single use case. For example, a first UE might be or be integrated in a drone and provide the drone’s speed information (obtained through a speed sensor) to a second UE that is a remote controller operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g. by controlling an actuator) to increase or decrease the drone’s speed. The first and / or the second UE can also include more than one of the functionalities described above. For example, a UE might comprise the sensor and the actuator, and handle communication of data for both the speed sensor and the actuators.

[0031] Figure 12 shows a network node 3300 in accordance with some embodiments. As used herein, network node refers to equipment capable, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or with other network nodesor equipment, in a telecommunication network. Network node 3300 could also comprise the components of a computing device(s), such as comprising profiling system 10 of Figure 1. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs) and NR NodeBs (gNBs)).

[0032] Base stations may be categorized based on the amount of coverage they provide (or, stated differently, their transmit power level) and so, depending on the provided amount of coverage, may be referred to as femto base stations, pico base stations, micro base stations, or macro base stations. A base station may be a relay node or a relay donor node controlling a relay. A network node may also include one or more (or all) parts of a distributed radio base station such as centralized digital units and / or remote radio units (RRUs), sometimes referred to as Remote Radio Heads (RRHs). Such remote radio units may or may not be integrated with an antenna as an antenna integrated radio. Parts of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).

[0033] Other examples of network nodes include multiple transmission point (multi-TRP) 5G access nodes, multi-standard radio (MSR) equipment such as MSRBSs, network controllers such as radio network controllers (RNCs) or base station controllers (BSCs), base transceiver stations (BTSs), transmission points, transmission nodes, multi-cell / multicast coordination entities (MCEs), Operation and Maintenance (O&M) nodes, Operations Support System (OSS) nodes, Self-Organizing Network (SON) nodes, positioning nodes (e.g., Evolved Serving Mobile Location Centers (E-SMLCs)), and / or Minimization of Drive Tests (MDTs).

[0034] The network node 3300 includes a processing circuitry 3302, a memory 3304, a communication interface 3306, and a power source 3308. The network node 3300 may be composed of multiple physically separate components (e.g., a NodeB component and a RNC component, or a BTS component and a BSC component, etc.), which may each have their own respective components. In certain scenarios in which the network node 3300 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeBs. In such a scenario, each unique NodeB and RNC pair, may in some instances be considered a single separate network node. In some embodiments, the network node 1300 may be configured to support multiple radio access technologies (RATs). In such embodiments, some 1components may be duplicated (e.g., separate memory 3304 for different RATs) and some components may be reused (e.g., a same antenna 3310 may be shared by different RATs). The network node 3300 may also include multiple sets of the various illustrated components for different wireless technologies integrated into network node 1300, for example GSM, WCDMA, LTE, NR, WiFi, Zigbee, Z-wave, LoRaWAN, Radio Frequency Identification (RFID) or Bluetooth wireless technologies. These wireless technologies may be integrated into the same or different chip or set of chips and other components within network node 1300.

[0035] The processing circuitry 3302 may comprise a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application-specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and / or encoded logic operable to provide, either alone or in conjunction with other network node 3300 components, such as the memory 3304, to provide network node 3300 functionality.

[0036] In some embodiments, the processing circuitry 3302 includes a system on a chip (SOC). In some embodiments, the processing circuitry 3302 includes one or more of radio frequency (RF) transceiver circuitry 3312 and baseband processing circuitry 3314. In some embodiments, the radio frequency (RF) transceiver circuitry 3312 and the baseband processing circuitry 3314 may be on separate chips (or sets of chips), boards, or units, such as radio units and digital units. In alternative embodiments, part or all of RF transceiver circuitry 3312 and baseband processing circuitry 3314 may be on the same chip or set of chips, boards, or units.

[0037] The memory 3304 may comprise any form of volatile or non-volatile computer-readable memory including, without limitation, persistent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), readonly memory (ROM), mass storage media (for example, a hard disk), removable storage media (for example, a flash drive, a Compact Disk (CD) or a Digital Video Disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable memory devices that store information, data, and / or instructions that may be used by the processing circuitry 3302. The memory 3304 may store any suitable instructions, data, or information, including a computer program, software, an application including one or more of logic, rules, code, tables, and / or other instructions capable of being executed by the processing circuitry 3302 and utilized by the network node 3300. The memory 3304 may be used to store any calculations madeby the processing circuitry 3302 and / or any data received via the communication interface 3306. In some embodiments, the processing circuitry 3302 and memory 3304 is integrated.

[0038] The communication interface 3306 is used in wired or wireless communication of signaling and / or data between a network node, access network, and / or UE. As illustrated, the communication interface 3306 comprises port(s) / terminal(s) 3316 to send and receive data, for example to and from a network over a wired connection. The communication interface 3306 also includes radio front-end circuitry 3318 that may be coupled to, or in certain embodiments a part of, the antenna 3310. Radio front-end circuitry 3318 comprises filters 3320 and amplifiers 3322. The radio front-end circuitry 3318 may be connected to an antenna 3310 and processing circuitry 3302. The radio front-end circuitry may be configured to condition signals communicated between antenna 3310 and processing circuitry 3302. The radio front-end circuitry 3318 may receive digital data that is to be sent out to other network nodes or UEs via a wireless connection. The radio front-end circuitry 3318 may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters using a combination of filters 3320 and / or amplifiers 3322. The radio signal may then be transmitted via the antenna 3310. Similarly, when receiving data, the antenna 3310 may collect radio signals which are then converted into digital data by the radio front-end circuitry 3318. The digital data may be passed to the processing circuitry 3302. In other embodiments, the communication interface may comprise different components and / or different combinations of components.

[0039] In certain alternative embodiments, the network node 3300 does not include separate radio front-end circuitry 3318, instead, the processing circuitry 3302 includes radio frontend circuitry and is connected to the antenna 3310. Similarly, in some embodiments, all or some of the RF transceiver circuitry 3312 is part of the communication interface 3306. In still other embodiments, the communication interface 3306 includes one or more ports or terminals 3316, the radio front-end circuitry 3318, and the RF transceiver circuitry 3312, as part of a radio unit (not shown), and the communication interface 3306 communicates with the baseband processing circuitry 3314, which is part of a digital unit (not shown).

[0040] The antenna 3310 may include one or more antennas, or antenna arrays, configured to send and / or receive wireless signals. The antenna 3310 may be coupled to the radio front-end circuitry 3318 and may be any type of antenna capable of transmitting and receiving dataand / or signals wirelessly. In certain embodiments, the antenna 3310 is separate from the network node 3300 and connectable to the network node 3300 through an interface or port.

[0041] The antenna 3310, communication interface 3306, and / or the processing circuitry 3302 may be configured to perform any receiving operations and / or certain obtaining operations described herein as being performed by the network node. Any information, data and / or signals may be received from a UE, another network node and / or any other network equipment. Similarly, the antenna 3310, the communication interface 3306, and / or the processing circuitry 3302 may be configured to perform any transmitting operations described herein as being performed by the network node. Any information, data and / or signals may be transmitted to a UE, another network node and / or any other network equipment.

[0042] The power source 3308 provides power to the various components of network node 3300 in a form suitable for the respective components (e.g., at a voltage and current level needed for each respective component). The power source 3308 may further comprise, or be coupled to, power management circuitry to supply the components of the network node 3300 with power for performing the functionality described herein. For example, the network node 3300 may be connectable to an external power source (e.g., the power grid, an electricity outlet) via an input circuitry or interface such as an electrical cable, whereby the external power source supplies power to power circuitry of the power source 3308. As a further example, the power source 3308 may comprise a source of power in the form of a battery or battery pack which is connected to, or integrated in, power circuitry. The battery may provide backup power should the external power source fail.

[0043] Embodiments of the network node 3300 may include additional components beyond those shown in Figure 12 for providing certain aspects of the network node’s functionality, including any of the functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node 3300 may include user interface equipment to allow input of information into the network node 3300 and to allow output of information from the network node 3300. This may allow a user to perform diagnostic, maintenance, repair, and other administrative functions for the network node 3300.

[0044] Figure 13 is a block diagram of a host 4400, which may be an embodiment of the host 2116 of Figure 10, in accordance with various aspects described herein. Host 4400 could also comprise the components of a computing device(s), such as comprising profiling system10 of Figure 1. As used herein, the host 4400 may be or comprise various combinations hardware and / or software, including a standalone server, a blade server, a cloud-implemented server, a distributed server, a virtual machine, container, or processing resources in a server farm. The host 4400 may provide one or more services to one or more UEs.

[0045] The host 4400 includes processing circuitry 4402 that is operatively coupled via a bus 4404 to an input / output interface 4406, a network interface 4408, a power source 4410, and a memory 4412. Other components may be included in other embodiments. Features of these components may be substantially similar to those described with respect to the devices of previous figures, such as Figures 11 and 12, such that the descriptions thereof are generally applicable to the corresponding components of host 4400.

[0046] The memory 4412 may include one or more computer programs including one or more host application programs 4414 and data 4416, which may include user data, e.g., data generated by a UE for the host 4400 or data generated by the host 4400 for a UE. Embodiments of the host 4400 may utilize only a subset or all of the components shown. The host application programs 4414 may be implemented in a container-based architecture and may provide support for video codecs (e.g., Versatile Video Coding (WC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC), MPEG, VP9) and audio codecs (e.g., FLAC, Advanced Audio Coding (AAC), MPEG, G.711), including transcoding for multiple different classes, types, or implementations of UEs (e.g., handsets, desktop computers, wearable display systems, heads-up display systems). The host application programs 4414 may also provide for user authentication and licensing checks and may periodically report health, routes, and content availability to a central node, such as a device in or on the edge of a core network. Accordingly, the host 4400 may select and / or indicate a different host for over-the-top services for a UE. The host application programs 4414 may support various protocols, such as the HTTP Live Streaming (HLS) protocol, Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), Dynamic Adaptive Streaming over HTTP (MPEG-DASH), etc.

[0047] Figure 14 is a block diagram illustrating a virtualization environment 5500 in which functions implemented by some embodiments may be virtualized. Virtualization environment 5500 could also comprise the components of a computing device(s), such as comprising profiling system 10 of Figure 1. In the present context, virtualizing means creating virtual versions of apparatuses or devices which may include virtualizing hardware platforms,storage devices and networking resources. As used herein, virtualization can be applied to any device described herein, or components thereof, and relates to an implementation in which at least a portion of the functionality is implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components executed by one or more virtual machines (VMs) implemented in one or more virtual environments 5500 hosted by one or more of hardware nodes, such as a hardware computing device that operates as a network node, UE, core network node, or host. Further, in embodiments in which the virtual node does not require radio connectivity (e.g., a core network node or host), then the node may be entirely virtualized.

[0048] Applications 5502 (which may alternatively be called software instances, virtual appliances, network functions, virtual nodes, virtual network functions, etc.) are run in the virtualization environment 5500 to implement some of the features, functions, and / or benefits of some of the embodiments disclosed herein.

[0049] Hardware 5504 includes processing circuitry, memory that stores software and / or instructions executable by hardware processing circuitry, and / or other hardware devices as described herein, such as a network interface, input / output interface, and so forth. Software may be executed by the processing circuitry to instantiate one or more virtualization layers 5506 (also referred to as hypervisors or virtual machine monitors (VMMs)), provide VMs 5508a and 5508b (one or more of which may be generally referred to as VMs 5508), and / or perform any of the functions, features and / or benefits described in relation with some embodiments described herein. The virtualization layer 5506 may present a virtual operating platform that appears like networking hardware to the VMs 5508.

[0050] The VMs 5508 comprise virtual processing, virtual memory, virtual networking or interface and virtual storage, and may be run by a corresponding virtualization layer 5506. Different embodiments of the instance of a virtual appliance 5502 may be implemented on one or more of VMs 5508, and the implementations may be made in different ways. Virtualization of the hardware is in some contexts referred to as network function virtualization (NFV). NFV may be used to consolidate many network equipment types onto industry standard high volume server hardware, physical switches, and physical storage, which can be located in data centers, and customer premise equipment.

[0051] In the context of NFV, a VM 5508 may be a software implementation of a physical machine that runs programs as if they were executing on a physical, non-virtualized machine. Each of the VMs 5508, and that part of hardware 5504 that executes that VM, be it hardware dedicated to that VM and / or hardware shared by that VM with others of the VMs, forms separate virtual network elements. Still in the context of NFV, a virtual network function is responsible for handling specific network functions that run in one or more VMs 5508 on top of the hardware 5504 and corresponds to the application 5502.

[0052] Hardware 5504 may be implemented in a standalone network node with generic or specific components. Hardware 5504 may implement some functions via virtualization. Alternatively, hardware 5504 may be part of a larger cluster of hardware (e.g., such as in a data center or CPE) where many hardware nodes work together and are managed via management and orchestration 5510, which, among others, oversees lifecycle management of applications 5502. In some embodiments, hardware 5504 is coupled to one or more radio units that each include one or more transmitters and one or more receivers that may be coupled to one or more antennas. Radio units may communicate directly with other hardware nodes via one or more appropriate network interfaces and may be used in combination with the virtual components to provide a virtual node with radio capabilities, such as a radio access node or a base station. In some embodiments, some signaling can be provided with the use of a control system 5512 which may alternatively be used for communication between hardware nodes and radio units.

[0053] Figure 15 shows a communication diagram of a host 6602 communicating via a network node 6604 with a UE 6606 over a partially wireless connection in accordance with some embodiments. Example implementations, in accordance with various embodiments, of the UE (such as a UE 2112a of Figure 10 and / or UE 2200 of Figure 11), network node (such as network node 2110a of Figure 10 and / or network node 3300 of Figure 12), and host (such as host 2116 of Figure 10 and / or host 4400 of Figure 13) discussed in the preceding paragraphs will now be described with reference to Figure 15.

[0054] Like host 4400, embodiments of host 6602 include hardware, such as a communication interface, processing circuitry, and memory. The host 6602 also includes software, which is stored in or accessible by the host 6602 and executable by the processing circuitry. The software includes a host application that may be operable to provide a service to a remote user, such as the UE 6606 connecting via an over-the-top (OTT) connection 6650 extending betweenthe UE 6606 and host 6602. In providing the service to the remote user, a host application may provide user data which is transmitted using the OTT connection 6650.

[0055] The network node 6604 includes hardware enabling it to communicate with the host 6602 and UE 6606. The connection 6660 may be direct or pass through a core network (like core network 2106 of Figure 10) and / or one or more other intermediate networks, such as one or more public, private, or hosted networks. For example, an intermediate network may be a backbone network or the Internet.

[0056] The UE 6606 includes hardware and software, which is stored in or accessible by UE 6606 and executable by the UE’s processing circuitry. The software includes a client application, such as a web browser or operator-specific “app” that may be operable to provide a service to a human or non-human user via UE 6606 with the support of the host 6602. In the host 6602, an executing host application may communicate with the executing client application via the OTT connection 6650 terminating at the UE 6606 and host 6602. In providing the service to the user, the UE's client application may receive request data from the host's host application and provide user data in response to the request data. The OTT connection 6650 may transfer both the request data and the user data. The UE's client application may interact with the user to generate the user data that it provides to the host application through the OTT connection 6650.

[0057] The OTT connection 6650 may extend via a connection 6660 between the host 6602 and the network node 6604 and via a wireless connection 6670 between the network node 6604 and the UE 6606 to provide the connection between the host 6602 and the UE 6606. The connection 6660 and wireless connection 6670, over which the OTT connection 6650 may be provided, have been drawn abstractly to illustrate the communication between the host 6602 and the UE 1606 via the network node 6604, without explicit reference to any intermediary devices and the precise routing of messages via these devices.

[0058] As an example of transmitting data via the OTT connection 6650, in step 6608, the host 6602 provides user data, which may be performed by executing a host application. In some embodiments, the user data is associated with a particular human user interacting with the UE 6606. In other embodiments, the user data is associated with a UE 6606 that shares data with the host 6602 without explicit human interaction. In step 6610, the host 6602 initiates a transmission carrying the user data towards the UE 6606. The host 6602 may initiate thetransmission responsive to a request transmitted by the UE 6606. The request may be caused by human interaction with the UE 6606 or by operation of the client application executing on the UE 6606. The transmission may pass via the network node 6604, in accordance with the teachings of the embodiments described throughout this disclosure. Accordingly, in step 6612, the network node 6604 transmits to the UE 6606 the user data that was carried in the transmission that the host 6602 initiated, in accordance with the teachings of the embodiments described throughout this disclosure. In step 6614, the UE 6606 receives the user data carried in the transmission, which may be performed by a client application executed on the UE 6606 associated with the host application executed by the host 6602.

[0059] In some examples, the UE 6606 executes a client application which provides user data to the host 6602. The user data may be provided in reaction or response to the data received from the host 6602. Accordingly, in step 6616, the UE 6606 may provide user data, which may be performed by executing the client application. In providing the user data, the client application may further consider user input received from the user via an input / output interface of the UE 6606. Regardless of the specific manner in which the user data was provided, the UE 6606 initiates, in step 6618, transmission of the user data towards the host 6602 via the network node 6604. In step 6620, in accordance with the teachings of the embodiments described throughout this disclosure, the network node 6604 receives user data from the UE 6606 and initiates transmission of the received user data towards the host 6602. In step 6622, the host 6602 receives the user data carried in the transmission initiated by the UE 6606.

[0060] One or more of the various embodiments improve the performance of OTT services provided to the UE 6606 using the OTT connection 6650, in which the wireless connection 6670 forms the last segment. More precisely, the teachings of these embodiments may improve the data rate, latency, and / or power consumption and thereby provide benefits such as reduced user waiting time, relaxed restriction on file size, improved content resolution, better responsiveness, and / or extended battery lifetime.

[0061] In an example scenario, factory status information may be collected and analyzed by the host 6602. As another example, the host 6602 may process audio and video data which may have been retrieved from a UE for use in creating maps. As another example, the host 6602 may collect and analyze real-time data to assist in controlling vehicle congestion (e.g., controlling traffic lights). As another example, the host 6602 may store surveillance videouploaded by a UE. As another example, the host 6602 may store or control access to media content such as video, audio, VR or AR which it can broadcast, multicast or unicast to UEs. As other examples, the host 6602 may be used for energy pricing, remote control of non-time critical electrical load to balance power generation needs, location services, presentation services (such as compiling diagrams etc. from data collected from remote devices), or any other function of collecting, retrieving, storing, analyzing and / or transmitting data.

[0062] In some examples, a measurement procedure may be provided for the purpose of monitoring data rate, latency and other factors on which the one or more embodiments improve. There may further be an optional network functionality for reconfiguring the OTT connection 6650 between the host 6602 and UE 6606, in response to variations in the measurement results. The measurement procedure and / or the network functionality for reconfiguring the OTT connection may be implemented in software and hardware of the host 6602 and / or UE 6606. In some embodiments, sensors (not shown) may be deployed in or in association with other devices through which the OTT connection 6650 passes; the sensors may participate in the measurement procedure by supplying values of the monitored quantities exemplified above, or supplying values of other physical quantities from which software may compute or estimate the monitored quantities. The reconfiguring of the OTT connection 6650 may include message format, retransmission settings, preferred routing etc.; the reconfiguring need not directly alter the operation of the network node 6604. Such procedures and functionalities may be known and practiced in the art. In certain embodiments, measurements may involve proprietary UE signaling that facilitates measurements of throughput, propagation times, latency and the like, by the host 6602. The measurements may be implemented in that software causes messages to be transmitted, in particular empty or ‘dummy’ messages, using the OTT connection 6650 while monitoring propagation times, errors, etc.

[0063] Although the computing devices described herein (e.g., UEs, network nodes, hosts) may include the illustrated combination of hardware components, other embodiments may comprise computing devices with different combinations of components. It is to be understood that these computing devices may comprise any suitable combination of hardware and / or software needed to perform the tasks, features, functions and methods disclosed herein. Determining, calculating, obtaining or similar operations described herein may be performed by processing circuitry, which may process information by, for example, converting the obtainedinformation into other information, comparing the obtained information or converted information to information stored in the network node, and / or performing one or more operations based on the obtained information or converted information, and as a result of said processing making a determination. Moreover, while components are depicted as single boxes located within a larger box, or nested within multiple boxes, in practice, computing devices may comprise multiple different physical components that make up a single illustrated component, and functionality may be partitioned between separate components. For example, a communication interface may be configured to include any of the components described herein, and / or the functionality of the components may be partitioned between the processing circuitry and the communication interface. In another example, non-computationally intensive functions of any of such components may be implemented in software or firmware and computationally intensive functions may be implemented in hardware.

[0064] In certain embodiments, some or all of the functionality described herein may be provided by processing circuitry executing instructions stored on in memory, which in certain embodiments may be a computer program product in the form of a non-transitory computer-readable storage medium. In alternative embodiments, some or all of the functionality may be provided by the processing circuitry without executing instructions stored on a separate or discrete device-readable storage medium, such as in a hard-wired manner. In any of those particular embodiments, whether executing instructions stored on a non-transitory computer- readable storage medium or not, the processing circuitry can be configured to perform the described functionality. The benefits provided by such functionality are not limited to the processing circuitry alone or to other components of the computing device, but are enjoyed by the computing device as a whole, and / or by end users and a wireless network generally.

[0065] It will be appreciated that computer systems are increasingly taking a wide variety of forms. In this description and in the claims, the terms “controller,” “computer system,” or “computing system” are defined broadly as including any device or system — or combination thereof — that includes at least one physical and tangible processor and a physical and tangible memory capable of having thereon computer-executable instructions that may be executed by a processor. By way of example, not limitation, the term “computer system” or “computing system,” as used herein is intended to include personal computers, desktop computers, laptop computers, tablets, hand-held devices (e.g., mobile telephones, PDAs, pagers), microprocessor-based orprogrammable consumer electronics, minicomputers, mainframe computers, multi-processor systems, network PCs, distributed computing systems, datacenters, message processors, routers, switches, and even devices that conventionally have not been considered a computing system, such as wearables (e.g., glasses).

[0066] The computing system also has thereon multiple structures often referred to as an “executable component.” For instance, the memory of a computing system can include an executable component. The term “executable component” is the name for a structure that is well understood to one of ordinary skill in the art in the field of computing as being a structure that can be software, hardware, or a combination thereof. For instance, when implemented in software, one of ordinary skill in the art would understand that the structure of an executable component may include software objects, routines, methods, and so forth, that may be executed by one or more processors on the computing system, whether such an executable component exists in the heap of a computing system, or whether the executable component exists on computer-readable storage media. The structure of the executable component exists on a computer-readable medium in such a form that it is operable, when executed by one or more processors of the computing system, to cause the computing system to perform one or more functions, such as the functions and methods described herein. Such a structure may be computer-readable directly by a processor — as is the case if the executable component were binary. Alternatively, the structure may be structured to be interpretable and / or compiled — whether in a single stage or in multiple stages — so as to generate such binary that is directly interpretable by a processor.

[0067] The terms “component,” “service,” “engine,” “module,” “control,” “generator,” or the like may also be used in this description. As used in this description and in this case, these terms — whether expressed with or without a modifying clause — are also intended to be synonymous with the term “executable component” and thus also have a structure that is well understood by those of ordinary skill in the art of computing.

[0068] In terms of computer implementation, a computer is generally understood to comprise one or more processors or one or more controllers, and the terms computer, processor, and controller may be employed interchangeably. When provided by a computer, processor, or controller, the functions may be provided by a single dedicated computer or processor or controller, by a single shared computer or processor or controller, or by a plurality of individual computers or processors or controllers, some of which may be shared or distributed. Moreover,the term “processor” or “controller” also refers to other hardware capable of performing such functions and / or executing software, such as the example hardware recited above.

[0069] In general, the various exemplary embodiments may be implemented in hardware or special purpose chips, circuits, software, logic, or any combination thereof. For example, some aspects may be implemented in hardware, while other aspects may be implemented in firmware or software which may be executed by a controller, microprocessor, or other computing device, although the disclosure is not limited thereto. While various aspects of the exemplary embodiments of this disclosure may be illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques, or methods described herein may be implemented in, as nonlimiting examples, hardware, software, firmware, special purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.

[0070] While not all computing systems require a user interface, in some embodiments a computing system includes a user interface for use in communicating information from / to a user. The user interface may include output mechanisms as well as input mechanisms. The principles described herein are not limited to the precise output mechanisms or input mechanisms as such will depend on the nature of the device. However, output mechanisms might include, for instance, speakers, displays, tactile output, projections, holograms, and so forth. Examples of input mechanisms might include, for instance, microphones, touchscreens, projections, holograms, cameras, keyboards, stylus, mouse, or other pointer input, sensors of any type, and so forth.Abbreviations and Defined Terms

[0071] To assist in understanding the scope and content of this written description and the appended claims, a select few terms are defined directly below. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present disclosure pertains.

[0072] The terms “approximately,” “about,” and “substantially,” as used herein, represent an amount or condition close to the specific stated amount or condition that still performs a desired function or achieves a desired result. For example, the terms “approximately,” “about,” and “substantially” may refer to an amount or condition that deviates by less than 10%, or by lessthan 5%, or by less than 1%, or by less than 0.1%, or by less than 0.01% from a specifically stated amount or condition.

[0073] Various aspects of the present disclosure, including devices, systems, and methods may be illustrated with reference to one or more embodiments or implementations, which are exemplary in nature. As used herein, the term “exemplary” means “serving as an example, instance, or illustration,” and should not necessarily be construed as preferred or advantageous over other embodiments disclosed herein. In addition, reference to an “implementation” of the present disclosure or embodiments includes a specific reference to one or more embodiments thereof, and vice versa, and is intended to provide illustrative examples without limiting the scope of the present disclosure, which is indicated by the appended claims rather than by the present description.

[0074] As used in the specification, a word appearing in the singular encompasses its plural counterpart, and a word appearing in the plural encompasses its singular counterpart, unless implicitly or explicitly understood or stated otherwise. Thus, it will be noted that, as used in this specification and the appended claims, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. For example, reference to a singular referent (e.g., “a widget”) includes one, two, or more referents unless implicitly or explicitly understood or stated otherwise. Similarly, reference to a plurality of referents should be interpreted as comprising a single referent and / or a plurality of referents unless the content and / or context clearly dictate otherwise. For example, reference to referents in the plural form (e.g., “widgets”) does not necessarily require a plurality of such referents. Instead, it will be appreciated that independent of the inferred number of referents, one or more referents are contemplated herein unless stated otherwise.

[0075] References in the specification to "one embodiment," "an embodiment," "an example embodiment," and the like indicate that the embodiment described may include a particular feature, structure, or characteristic, but it is not necessary that every embodiment includes the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.

[0076] It shall be understood that although the terms "first" and "second" etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and similarly, a second element could be termed a first element, without departing from the scope of example embodiments. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed terms.

[0077] It will be further understood that the terms "comprises", "comprising", "has", "having", "includes" and / or "including", when used herein, specify the presence of stated features, elements, and / or components etc., but do not preclude the presence or addition of one or more other features, elements, components and / or combinations thereof.Conclusion

[0078] The present disclosure includes any novel feature or combination of features disclosed herein either explicitly or any generalization thereof. Various modifications and adaptations to the foregoing exemplary embodiments of this disclosure may become apparent to those skilled in the relevant arts in view of the foregoing description, when read in conjunction with the accompanying drawings. However, any and all modifications will still fall within the scope of the non-limiting and exemplary embodiments of this disclosure.

[0079] It is understood that for any given component or embodiment described herein, any of the possible candidates or alternatives listed for that component may generally be used individually or in combination with one another, unless implicitly or explicitly understood or stated otherwise. Additionally, it will be understood that any list of such candidates or alternatives is merely illustrative, not limiting, unless implicitly or explicitly understood or stated otherwise.

[0080] In addition, unless otherwise indicated, numbers expressing quantities, constituents, distances, or other measurements used in the specification and claims are to be understood as being modified by the term “about,” as that term is defined herein. Accordingly, unless indicated to the contrary, the numerical parameters set forth in the specification and attached claims are approximations that may vary depending upon the desired properties sought to be obtained by the subject matter presented herein. At the very least, and not as an attempt to limit the application of the doctrine of equivalents to the scope of the claims, each numerical parameter should at least be construed in light of the number of reported significant digits and by applyingordinary rounding techniques. Notwithstanding that the numerical ranges and parameters setting forth the broad scope of the subject matter presented herein are approximations, the numerical values set forth in the specific examples are reported as precisely as possible. Any numerical values, however, inherently contain certain errors necessarily resulting from the standard deviation found in their respective testing measurements.

[0081] Any headings and subheadings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. The terms and expressions which have been employed herein are used as terms of description and not of limitation, and there is no intention in the use of such terms and expressions of excluding any equivalents of the features shown and described or portions thereof, but it is recognized that various modifications are possible within the scope of the present disclosure. Thus, it should be understood that although the present disclosure has been specifically disclosed in part by certain embodiments, and optional features, modification and variation of the concepts herein disclosed may be resorted to by those skilled in the art, and such modifications and variations are considered to be within the scope of this present description.

[0082] It will also be appreciated that systems, devices, products, kits, methods, and / or processes, according to certain embodiments of the present disclosure may include, incorporate, or otherwise comprise properties or features (e.g., components, members, elements, parts, and / or portions) described in other embodiments disclosed and / or described herein. Accordingly, the various features of certain embodiments can be compatible with, combined with, included in, and / or incorporated into other embodiments of the present disclosure. Thus, disclosure of certain features relative to a specific embodiment of the present disclosure should not be construed as limiting application or inclusion of said features to the specific embodiment. Rather, it will be appreciated that other embodiments can also include said features, members, elements, parts, and / or portions without necessarily departing from the scope of the present disclosure.

[0083] Moreover, unless a feature is described as requiring another feature in combination therewith, any feature herein may be combined with any other feature of a same or different embodiment disclosed herein. Furthermore, various well-known aspects of illustrative systems, methods, apparatus, and the like are not described herein in particular detail in order to avoid obscuring aspects of the example embodiments. Such aspects are, however, also contemplated herein.

[0084] It will be apparent to one of ordinary skill in the art that methods, devices, device elements, materials, procedures, and techniques other than those specifically described herein can be applied to the practice of the described embodiments as broadly disclosed herein without resort to undue experimentation. All art-known functional equivalents of methods, devices, device elements, materials, procedures, and techniques specifically described herein are intended to be encompassed by this present disclosure.

[0085] When a group of materials, compositions, components, or compounds is disclosed herein, it is understood that all individual members of those groups and all subgroups thereof are disclosed separately. When a Markush group or other grouping is used herein, all individual members of the group and all combinations and sub-combinations possible of the group are intended to be individually included in the disclosure.

[0086] The above-described embodiments are examples only. Alterations, modifications, and variations may be effected to the particular embodiments by those of skill in the art without departing from the scope of the description, which is defined solely by the appended claims.

Claims

CLAIMSWhat is claimed is:

1. A computer implemented method for predicting a performance of an application on one or more hardware systems (10, 2100), the method comprising: receiving (810) an application source code (220) and one or more system requirements (230) for running the application source code; translating (820) the application source code to intermediate code (260); generating (830) one or more metadata (240) based at least in part on the one or more system requirements; detecting (840) one or more hardware performance profiles (450, 670) of the one or more hardware systems; and calculating (850) one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

2. The method of claim 1, further comprising storing each of the one or more WCETs in a table.

3. The method of claim 1 or 2, wherein the receiving, translating, generating, and calculating are performed by the same one or more computing devices (2200).

4. The method of any of claims 1 to 3, wherein the method is performed without the use of the one or more hardware systems.

5. The method of any of claims 1 to 4, further comprising storing the application code, intermediate code, and the one or more metadata.

6. The method of claim 5, further comprising transmitting one or more of: the application code; intermediate code; the one or more WCETs; and / or one or more metadata; to a remote device (2200, 3300, 4400).

7. The method of any of claims 1 to 6, further comprising receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs.

8. The method of claim 6, wherein the remote device comprises at least one of: a network node (3300); a New Radio, NR, Node B, gNB; a user equipment (2200); a Long Term Evolution, LTE, base station, evolved NodeB.

9. The method of claim 6, wherein the one or more of: the application code; intermediate code; the one or more WCETs; one or more metadata to a remote device; are used to decide where to perform the one or more tasks in an edge computing scenario.

10. The method of any of claims 1 to 9, wherein the one or more system requirements comprise one or more of: one or more hardware architecture types; one or more configurations; one or more parameters that can affect execution time; one or more user requirements; number of cores.

11. The method of any of claims 1 to 10, wherein the one or more hardware performance profiles comprises at least one of: a number of cores; one or more hardware architecture types; one or more configurations; one or more hardware identifiers.

12. A computer implemented method for predicting a performance of an application on one or more hardware systems, the method comprising: receiving (1010) an intermediate code (260, 420) comprising a translation of an application source code (220); receiving (1020) one or more metadata (240, 410) based at least in part on one or more system requirements (230) associated with the application source code; receiving (1030) one or more hardware performance profiles (450, 670) of the one or more hardware systems; andcalculating (1040) one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

13. The method of claim 12, wherein the method is performed by one or more of: a user equipment (2200); a network node (3300); a New Radio, NR, Node B, gNB; a Long Term Evolution, LTE, base station, evolved NodeB.

14. A computer implemented method for generating application code, the method comprising: receiving an application source code (220) and one or more system requirements (230) for running the application source code; translating the application source code to intermediate code (25, 260, 420); and generating one or more metadata (23, 240, 410) based at least in part on the one or more system requirements.

15. The method of claim 14, further comprising transmitting the intermediate code and the one or more metadata to a recipient.

16. The method of claim 14, wherein the method is performed by one or more of: a user equipment; a network node; a New Radio, NR, Node B, gNB; a Long Term Evolution, LTE, base station, evolved NodeB.

17. A method performed by a user equipment, UE (2200), for predicting a performance of an application on one or more hardware systems (10, 2100), the method comprising: receiving an application source code (220) and one or more system requirements (230) for running the application source code; translating the application source code to intermediate code (25, 260, 420); generating one or more metadata (23, 240, 410) based at least in part on the one or more system requirements;detecting one or more hardware performance profiles (450, 670) of the one or more hardware systems; and calculating one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

18. The method of claim 17, wherein the one or more hardware systems comprise at least one of; one or more UEs; one or more network nodes; and the method further comprising; receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs.

19. A method performed by a network node (3300), for predicting a performance of an application on one or more hardware systems (10, 2100), the method comprising: receiving an application source code (220) and one or more system requirements (230) for running the application source code; translating the application source code to intermediate code (25, 260, 420); generating one or more metadata (23, 240, 410) based at least in part on the one or more system requirements; detecting one or more hardware performance profiles (450, 670) of the one or more hardware systems; and calculating one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

20. The method of claim 17, wherein the one or more hardware systems comprise at least one of; one or more UEs (2200); one or more network nodes (3300); and the method further comprising; receiving one or more tasks and deciding which of the one or more hardware systems should perform the one or more tasks based at least in part on the one or more WCETs.

21. A system (10, 2100, 2200, 3300), for predicting performance of an application on one or more hardware systems (10, 2100), comprising: processing circuitry (2202, 3302); and a memory (2210, 3304), the memory containing instructions executable by the processing circuitry whereby the system is operative to: receive (1610) an application source code (220) and one or more system requirements (210, 230) for running the application source code; translate (1620) the application source code to intermediate code (260, 420); generate (1630) one or more metadata (240, 410) based at least in part on the one or more system requirements; detect (1640) one or more hardware performance profiles (450, 670) of the one or more hardware systems; and calculate (1650) one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

22. The system of claim 21, wherein the system comprises at least one of: a user equipment (2200); a network node (3300); a New Radio, NR, Node B, gNB; a Long Term Evolution, LTE, base station, evolved NodeB.

23. A system (10, 2100, 2200, 3300) for predicting performance of an application on one or more hardware systems (10, 2100), comprising: processing circuitry (2202, 3302); and a memory (2210, 3304), the memory containing instructions executable by the processing circuitry whereby the system is operative to: receive (1010) an intermediate code (260, 420) comprising a translation of an application source code (220); receive (1020) one or more metadata (240, 410) based at least in part on one or more system requirements (210, 230) associated with the application source code; receive (1030) one or more hardware performance profiles (450, 670) of the one or more hardware systems; andcalculate (1040) one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

24. The system of claim 23, wherein the system comprises at least one of: a user equipment (2200); a network node (3300); a New Radio, NR, Node B, gNB; a Long Term Evolution, LTE, base station, evolved NodeB.

25. A system (10, 2100, 2200, 3300) for predicting performance of an application on one or more hardware systems (10, 2100), comprising: processing circuitry (2202, 3302); and a memory (2210, 3304), the memory containing instructions executable by the processing circuitry whereby the system is operative to: receive (1210) an application source code (260, 420) and one or more system requirements for running the application source code; translate (1220) the application source code to intermediate code (260, 420); and generate (1230) one or more metadata (240, 410) based at least in part on the one or more system requirements.

26. The system of claim 25, wherein the system comprises at least one of: a user equipment (2200); a network node (3300); a New Radio, NR, Node B, gNB; a Long Term Evolution, LTE, base station, evolved NodeB.

27. A user equipment, UE (2200), for predicting performance of an application on one or more hardware systems (10, 2100), comprising: processing circuitry (2202) configured to perform any of the steps of any of claims 1-18; and power supply circuitry (2208) configured to supply power to the processing circuitry.

28. A user equipment, UE (2200), for predicting performance of an application on one or more hardware systems (10, 2100), comprising:an antenna (2222) configured to send and receive wireless signals; radio front-end circuitry (2212) connected to the antenna and to processing circuitry (2202), and configured to condition signals communicated between the antenna and the processing circuitry; the processing circuitry being configured to perform any of the steps of any of claims 1- 18; an input interface (2206) connected to the processing circuitry and configured to allow input of information into the UE to be processed by the processing circuitry; an output interface (2206) connected to the processing circuitry and configured to output information from the UE that has been processed by the processing circuitry; and a battery (2208) connected to the processing circuitry and configured to supply power to the UE.

29. A network node (3300) for predicting performance of an application on one or more hardware systems, comprising: processing circuitry (3302) configured to perform any of the steps of any of claims 1-16 or 19-20; power supply circuitry (3308) configured to supply power to the processing circuitry.

30. A system (10, 2100, 2200, 3300) for predicting performance of an application on one or more hardware systems (10, 2100), comprising: an application profiler (20) configured to; receive an application source code (220) and one or more system requirements(210, 230) for running the application source code; translate the application source code to intermediate code (260, 420); generate one or more metadata (240, 410) based at least in part on the one or more system requirements; a Worst Case Execution Time, WCET, analyzer (40), configured to; receive the intermediate code (260, 420) and the one or more metadata (240, 410) from the application profiler;detect one or more hardware performance profiles (450, 670) of the one or more hardware systems; and calculate one or more Worst Case Execution Times, WCETs (50, 460), for the intermediate code and respective one or more metadata for each of the one or more hardware performance profiles.

31. The system of claim 30, further comprising a hardware profiler (30) configured to provide the one or more hardware performance profiles to the WCET analyzer.

Citation Information

Patent Citations

  • Voltage driving circuit and system and household appliance

    WO2023061010A1

  • Technologies for providing selective offload of execution to the edge

    US20190141120A1

Cited By

  • Audio recognition method and electronic equipment

    CN120853575A