A Unified Programming Model for Function-as-a-Service Computing
A unified programming model enables transparent migration of applications across heterogeneous cloud platforms, addressing the challenges of performance and cost-effectiveness in cloud computing, particularly in FaaS architectures, by automatically selecting the best cloud platform based on performance constraints and available services.
Patent Information
- Application Number
- JP2020153484
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-20
- Filing Date
- 2020-09-14
- Publication Date
- 2025-04-30
- Estimated Expiration
- 2040-09-14
AI Technical Summary
The tight coupling of application programming interfaces (APIs) and protocols with specific cloud platforms in cloud computing infrastructures leads to challenges in performance, scalability, efficiency, and cost-effectiveness, especially in Function As-A-Service (FaaS) architectures, where migrating applications to more advantageous platforms can be costly and inefficient.
A unified programming model that allows for transparent migration of applications between heterogeneous cloud platforms by automatically selecting the most suitable cloud platform based on performance constraints and available services, using components such as storage service, NLP service, database service, and authentication service components to facilitate seamless integration and migration.
This approach enhances performance, scalability, efficiency, and cost-effectiveness by enabling applications to take advantage of the best available cloud services without the overhead of migration, while maintaining transparency to application users.
Smart Images

Figure 0007670465000001 
Figure 0007670465000002 
Figure 0007670465000003
Abstract
Description
[Technical field]
[0001] FIELD OF THE DISCLOSURE Embodiments relate generally to application programming interfaces (APIs). More specifically, embodiments relate to a unified programming model for Function-as-a-Service (FaaS) computing. [Background technology]
[0002] When an application is deployed on a cloud computing infrastructure ("cloud"), the application programming interfaces (APIs) and protocols used within the application are typically tightly coupled to a specific platform (e.g., operated by a specific cloud provider). As the cloud provider landscape grows and becomes more heterogeneous, this tight coupling can present issues with respect to performance, scalability, efficiency, and / or cost-effectiveness. For example, if a more favorable service platform becomes available after (or during) a cloud application is deployed, the overhead of migrating the cloud application to the more favorable service platform may outweigh the benefits of the new service platform. Such a situation may even become more pronounced in Function-as-a-Service (FaaS) architectures, where dedicated API endpoints are provisioned on the cloud to receive and execute code execution requests in a relatively short time. [Brief description of the drawings]
[0003] Various advantages of the embodiments will become apparent to those skilled in the art upon reading the following specification and appended claims, and upon review of the following drawings.
[0004] [Figure 1] FIG. 2 is a block diagram of an example heterogeneous cloud, according to one embodiment.
[0005] [Diagram 2] FIG. 2 is a block diagram of an example of porting a cloud application to one or more modules running on a heterogeneous cloud, according to one embodiment.
[0006] [Diagram 3] FIG. 1 is a block diagram of an example of a ported cloud application in a heterogeneous cloud computing architecture, according to one embodiment.
[0007] [Figure 4] 1 is a flowchart of an example method for porting an application to a heterogeneous cloud, according to one embodiment.
[0008] [Diagram 5] 1 is a flowchart of a more detailed example method for porting an application to a heterogeneous cloud, according to one embodiment.
[0009] [Figure 6A] FIG. 1 is a block diagram of an example of incremental migration of an application between cloud platforms, according to one embodiment.
[0010] [Figure 6B] FIG. 1 is a block diagram of an example of a completed migration of an application between cloud platforms, according to one embodiment.
[0011] [Figure 7] 1 is a flowchart of an example method for application migration between cloud platforms, according to one embodiment.
[0012] [Figure 8] 1 is a flowchart of an example method for processing a cloud service call, according to one embodiment.
[0013] [Figure 9A]1 is a flowchart of an example method for transferring state data between cloud platforms, according to one embodiment.
[0014] [Figure 9B] 1 is a flowchart of a more detailed example method for processing a cloud service call, according to one embodiment.
[0015] [Figure 10] FIG. 1 is a block diagram of an example of an enhanced performance computing system, according to one embodiment.
[0016] [Figure 11] FIG. 1 is a diagram of an example semiconductor device, according to one embodiment.
[0017] [Figure 12] FIG. 2 is a block diagram of an example processor, according to one embodiment.
[0018] [Figure 13] FIG. 1 is a block diagram of an example multi-processor based computing system, according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0019] 1, a heterogeneous cloud 20 is illustrated in which cloud portable applications 22 use storage services, natural language processing (NLP) services, database services, authentication services, etc., during operation. In one embodiment, a unified programming model 28 (28a-28d), such as ONEAPI, is used to configure applications 22 for execution across heterogeneous clouds 20, which may include widely different types of hardware resources (e.g., host processors, graphics processors, field programmable gate arrays / FPGAs, special purpose accelerometers, etc.).
[0020] In the illustrated example, the cloud platform is automatically selected from a set of heterogeneous storage service platforms 24 (24a, 24b) that provide storage services. For example, the first storage service platform 24a ("first storage service platform") may be the AMAZON® SIMPLE STORAGE SERVICE (S3) platform, while the second storage service platform ("nth storage service platform") may be the GOOGLE® CLOUD STORAGE platform. Thus, storage services may be obtained from different cloud providers / vendors with different platform-specific parameters to provide storage service support. In one embodiment, the unified programming model 28 includes a storage service component 28a that facilitates configuration of the application 22 in the selected cloud platform in the set of heterogeneous storage service platforms 24.
[0021] As will be discussed in further detail, storage services component 28a may enable transparent migration (e.g., from an application user's perspective) of applications 22 between cloud platforms within a set of heterogeneous storage platforms 24 based on changes in available storage services (e.g., features, prices) and / or changes in performance constraints of applications 22. Such an approach may enhance performance, scalability, efficiency, and cost-effectiveness.
[0022] The cloud platform may also be automatically selected from a set of heterogeneous NLP service platforms 30 (30a, 30b) that provide NLP services. For example, the first NLP service platform 30a ("first translation platform") may be the AMAZON TRANSLATE platform, while the second NLP service platform 30b ("mth translation platform") may be the GOOGLE TRANSLATE platform. Thus, the NLP services may be obtained from different cloud providers / vendors with different platform-specific parameters to provide NLP service support. In one embodiment, the unified programming model 28 includes an NLP service component 28b that facilitates configuration of the application 22 on the selected cloud platform in the set of heterogeneous NLP service platforms 30.
[0023] Thus, the NLP service component 28b may enable transparent migration (e.g., from the application user's perspective) of applications 22 between cloud platforms within a set of heterogeneous NLP service platforms 30 based on changes in available NLP services (e.g., features, prices) and / or changes in performance constraints of the applications 22. Such an approach may enhance performance, scalability, efficiency, and cost-effectiveness.
[0024] In addition, the cloud platform may be automatically selected from a set of heterogeneous database service platforms 32 (32a-32d) that provide database services. For example, the first database service platform 32a ("database platform A") may be an AMAZON DYNAMODB platform, the second database service platform 32b ("database platform i") may be an AMAZON AURORA platform, the third database service platform 32c ("database platform i+1") may be a GOOGLE CLOUD FIRESTORE platform, and the fourth database service platform 32d ("database platform N") may be a GOOGLE CLOUD SQL platform. Thus, database services may be obtained from different cloud providers / vendors with different platform-specific parameters to provide database service support. In one embodiment, the unified programming model 28 includes a database service component 28c that facilitates configuration of the application 22 on a selected cloud platform in the set of heterogeneous database service platforms 32.
[0025] The database services component 28c enables transparent migration of applications 22 between cloud platforms within a set of heterogeneous database services platforms 32 based on changes in available database services (e.g., features, prices) and / or changes in performance constraints of the applications 22. Such an approach may further enhance performance, scalability, efficiency, and cost-effectiveness.
[0026] Furthermore, the cloud platform may be automatically selected from a set of heterogeneous authentication service platforms 34 (34a, 34b) that provide authentication services. For example, the first authentication service platform 34a ("Authentication Platform #1") may be the AMAZON CONGNITO platform, while the second authentication service platform 34b ("Authentication Platform #M") may be the GOOGLE FIREBASE platform. Thus, authentication services may be obtained from different cloud providers / vendors with different platform-specific parameters to provide authentication service support. In one embodiment, the unified programming model 28 includes an authentication service component 28d that facilitates configuration of the application 22 on a selected cloud platform in the set of heterogeneous authentication service platforms 34.
[0027] In one example, authentication services component 28d enables transparent migration of applications 22 between cloud platforms within a set of heterogeneous authentication services platforms 34 based on changes in available authentication services (e.g., features, pricing) and / or changes in performance constraints of applications 22. Such an approach may further enhance performance, scalability, efficiency, and cost-effectiveness.
[0028] FaaS is an event-driven, highly scalable computer code execution model in which dedicated API endpoints are typically provisioned in a cloud computing infrastructure to receive and execute code execution requests in a relatively short period of time. Such code execution requests and / or execution of requested code are variously and commonly referred to as lambdas, functions, actions, and / or run-to-completion procedures. The illustrated approach for porting portions of an application 22 to a cloud platform and migrating portions of an application 22 between cloud platforms may be particularly advantageous in a FaaS setting due to the ephemeral nature of the coupling between functions and the underlying hardware.
[0029] FIG. 2 illustrates porting of a cloud portable application 40 (e.g., including FaaS lambdas, functions, actions and / or run-to-completion procedures) to heterogeneous clouds 42 (42a-42c) including a first cloud platform 42a (e.g., GOOGLE cloud), a second cloud platform 42b (e.g., MICROSOFT® cloud) and a third cloud platform 42c (e.g., AMAZON cloud). In the illustrated example, dispatch 44 ("Unified Dynamic Cloud Dispatch and Cloud Transfer Runtime") uses a first module manager 46 to generate a first porting module 48 for a first cloud platform 42a and a second module manager 50 to generate a second porting module 52 for a second cloud platform 42b. At deployment time, dispatch 44 investigates available cloud services / vendors and determines which resources in cloud 42 the service should be mapped to based on the requirements of the service requested by application 40, such as scalability and / or read / write bandwidth. At this time, special code / calls can be created for each generic API call to match / follow the vendor's API and consistent protocol.
[0030] 3 illustrates a ported cloud application. In the illustrated example, communication is established between a first porting module 48 and a first cloud platform 42a, between a second porting module 52 and a second cloud platform 42b, and between the first porting module 48 and the second porting module 52. Besides consideration of computer resource requirements / constraints, factors such as service price may also be taken into account by dispatch 44 (e.g., by deploying a dynamic bidding scheme among cloud providers).
[0031] 4 illustrates a method 60 for porting an application to a heterogeneous cloud. Method 60 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2 and 3) previously discussed. More specifically, method 60 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as random access memory (RAM), read only memory (ROM), programmable ROM (PROM), firmware, flash memory, etc., in configurable logic, such as a programmable logic array (PLA), FPGA, complex programmable logic device (CPLD), in fixed function logic hardware, such as an application specific integrated circuit (ASIC), complementary metal oxide semiconductor (CMOS) or transistor-transistor logic (TTL) technology, or any combination thereof.
[0032] For example, computer program code for performing the operations shown in method 60 may be written in any combination of one or more programming languages, including object-oriented programming languages such as JAVA®, SMALLTALK®, C++, etc., conventional procedural programming languages such as the “C” programming language or similar programming languages. Additionally, logic instructions may include assembler instructions, ISA instructions, machine instructions, machine-dependent instructions, microcode, state setting data, configuration data for integrated circuits, state information for personalizing electronic circuitry, and / or other structural components specific to hardware (e.g., a host processor, central processing unit / CPU, microcontroller, etc.).
[0033] Illustrated processing block 62 detects a generic cloud service call in the application, where platform-specific parameters are unspecified in the cloud service call. For example, if the cloud service call is related to a database service, the call may involve creating a key-value database table, adding rows / columns, removing items, initiating queries, updating queries, etc., using generic API calls without specifying a vendor-specific API or module. At block 64, a first cloud platform is selected based on one or more performance constraints (e.g., scalability and / or read / write requirements) and a first set of parameters (e.g., vendor-specific APIs and / or modules) associated with the first cloud platform.
[0034] Block 66 provides for automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters. In one example, block 66 includes using a combination of compiler analysis to detect backward / forward code slices associated with / surrounding the general call, such as exception handling code and query response post-processing, and a set of special codelets pre-compiled / generated for each vendor-corresponding API call. In one embodiment, block 68 maps the cloud service call to the first platform-specific service call. The illustrated method 60 thus enhances performance, scalability, efficiency, and / or cost-effectiveness by enabling applications with unspecified platform-specific parameters to be ported to a cloud platform.
[0035] 5 illustrates a more detailed method 70 for porting an application to a heterogeneous cloud. Method 70 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2 and 3) previously discussed. More specifically, method 70 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic, such as a PLA, FPGA, CPLD, in fixed function logic hardware, such as an ASIC, CMOS, or TTL technology, or any combination thereof.
[0036] Illustrated process block 72 provides for determining whether the application includes any generic cloud service API calls. If not, method 70 may end. If not, block 74 picks / selects an existing cloud service class, such as a database service. In block 76, a determination is made as to whether there are performance requirements or cost budgets set by the application for the service. If so, a minimum ("min") performance requirement (e.g., read / write bandwidth for a database) may be set accordingly in block 78. Block 80 then provides for researching cloud providers for services with matching performance profiles and cost estimates. Then, in block 84, a determination may be made as to whether a provider with a matching service / profile / budget is found. If found, block 86 composes special code / calls to replace the generic service API calls to match the vendor's API and consistent protocol. Block 86 may include using compiler analysis and a set of pre-compiled / generated codelets for API calls corresponding to each vendor.
[0037] If there are no performance requirements or cost budgets detected in block 76, illustrated block 82 uses default thresholds and method 70 proceeds to block 80. Additionally, if no provider was found in block 84, block 88 readjusts the thresholds (e.g., with or without feedback from the application and / or user). Method 70 may then return to block 80. Method 70 thus increases performance, scalability, efficiency, and / or cost-effectiveness by enabling applications with unspecified platform-specific parameters to be ported to a cloud platform.
[0038] 6A illustrates that as service availability, application requirements, or pricing changes during the application's lifecycle, the illustrated dispatch 44 can gradually migrate parts or all of an application from one cloud provider to another with little or minimal interruption to application execution. In the illustrated example, the dispatch 44 uses a third module manager 90 to generate a third porting module 92 for the third cloud platform 42c that will eventually replace the second cloud platform 42b. During runtime, the illustrated third porting module 92 is considered to be "cold" while state data is being transferred from the second cloud platform 42b to the third cloud platform 42c. As will be described in more detail. The transfer of state data can be tracked in a manner that allows the transition to be effectively transparent to the application user.
[0039] 6B, a complete migration is shown. In the illustrated example, communication is established between the third porting module 92 and the third cloud platform 42c, and between the third porting module 92 and the first porting module 48. Additionally, the third porting module 92 is no longer considered cold, since the transfer of internal state data is complete.
[0040] 7 illustrates a method 100 for migrating an application between cloud platforms, according to one embodiment. Method 100 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2, 3, 6A and 6B) previously discussed. More specifically, method 100 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic, such as PLA, FPGA, CPLD, in fixed function logic hardware, such as ASIC, CMOS or TTL technology, or any combination thereof.
[0041] The illustrated processing block 102 selects a second cloud platform based on one or more performance constraints (e.g., scalability and / or read / write bandwidth requirements) and a second set of parameters (e.g., vendor-specific APIs and / or modules) associated with the second platform. Block 104 may automatically generate second platform-specific calls based on the generic cloud service calls and the second set of parameters. In one embodiment, block 104 includes using a combination of compiler analysis and a set of pre-compiled / generated codelets for API calls corresponding to each service provider / vendor. In block 106, the generic cloud service calls may be mapped to second platform-specific service calls. Block 108 performs a transfer of state data from the first cloud platform to the second cloud platform, and illustrated block 110 tracks the transfer via a bitmap. In one embodiment, each bit in the bitmap corresponds to a segment, byte, and / or portion (e.g., a subset) of the current (e.g., “old”) cloud platform internal state. Thus, the bitmap may be updated as various subsets of the internal state are transferred (e.g., via either a direct copy by dispatch / runtime or an application write operation) to the next (e.g., “second” or “new”) cloud platform. The illustrated method 100 thus enhances performance, scalability, efficiency, and / or cost-effectiveness by enabling applications with unspecified platform-specific parameters to be transparently migrated between cloud platforms.
[0042] 8 illustrates a method 120 for processing a cloud service call. Method 120 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2, 3, 6A and 6B) previously discussed. More specifically, method 120 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic, such as a PLA, FPGA, CPLD, in fixed function logic hardware, such as an ASIC, CMOS or TTL technology, or any combination thereof.
[0043] The illustrated processing block 122 provides for detecting a runtime instance of the cloud service call. As previously indicated, platform-specific parameters may not be specified (not present) in the cloud service call. In one embodiment, block 124 selectively issues one or more of a first platform-specific service call or a second platform-specific service call based on the status of the transfer in response to the runtime instance. For example, if the cloud service call affects only a subset of state data that has already been transferred to the second (e.g., new) cloud platform, block 124 may issue both the first and second platform-specific service calls. In contrast, if the cloud service call affects a subset of state data that has not yet been transferred to the second cloud platform, block 124 may issue only the first platform-specific service call (e.g., to the first cloud platform). Such an approach may ensure that the migration occurs incrementally and transparently.
[0044] 9A illustrates a method 130 for transferring state data between cloud platforms. Method 130 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2, 3, 6A and 6B) previously discussed. More specifically, method 130 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic, such as a PLA, FPGA, CPLD, in fixed function logic hardware, such as an ASIC, CMOS or TTL technology, or any combination thereof.
[0045] Illustrated processing block 132 creates a bitmap where each bit represents a segment, byte, or portion of the current / old service vendor's (e.g., cloud platform) internal state. In one embodiment, block 134 copies and transfers each internal state segment of the old vendor to the internal state of the new vendor. Additionally, for each byte / segment transferred, block 134 may set a corresponding bit in the bitmap to indicate that the transfer is complete. At block 136, a determination may be made as to whether all bits in the bitmap are set. If all bits are not set, method 130 returns to block 134. Otherwise, block 138 releases the old vendor and fully engages with the new vendor, and method 130 ends.
[0046] 9B illustrates a more detailed method 140 for processing a cloud service call. Method 140 may generally be implemented in a dispatch and / or runtime engine, such as dispatch 44 (FIGS. 2, 3, 6A and 6B) previously discussed. More specifically, method 130 may be implemented as a set of logic instructions stored in one or more modules, in a machine or computer readable storage medium, such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic, such as a PLA, FPGA, CPLD, in fixed function logic hardware, such as an ASIC, CMOS or TTL technology, or any combination thereof.
[0047] Illustrated processing block 142 detects a new service request from an application (e.g., an instance of a cloud service call). In one embodiment, a determination is made in block 144 as to whether the new request reads only the subset of the internal state that has the bit set for full transfer. If so, then in block 146 the request may be replayed (e.g., issued via a platform-specific service call) to both the old vendor and the new vendor (e.g., cloud platform). In one example, block 148 then determines whether the new request writes only the subset of the internal state that has the bit set for full transfer. If so, processing of the request is completed in block 150. If it is determined in block 148 that the new request does not write only the subset of the internal state that has the bit set for full transfer, then block 152 sets the transfer complete bit for the subset updated by the request.
[0048] If it is determined in block 144 that the new request does not read only the subset of the internal state that has the bit set for full transfer, then illustrated block 154 replays the request (e.g., via a platform-specific service call) to the old vendor only. Additionally, in block 156, a determination may be made as to whether the new request writes to any of the subset of the internal state that has the bit set for full transfer. If so, block 158 clears / resets the transfer complete bit for the subset of the internal state updated by the request. If not, processing of the request is completed in block 160.
[0049] Turning now to Figure 10, an enhanced performance computing system 170 is illustrated. System 170 may generally be part of an electronic device / platform having computing functionality (e.g., personal digital assistant / PDA, notebook computer, tablet computer, convertible tablet, server), communication functionality (e.g., smartphone), imaging functionality (e.g., camera, camcorder), media playback functionality (e.g., smart television / TV), wearable functionality (e.g., watches, eyewear, headwear, footwear, jewelry), vehicle functionality (e.g., car, truck, motorcycle), robotic functionality (e.g., autonomous robot), etc., or any combination thereof. In the illustrated example, system 170 includes a host processor 172 having an integrated memory controller (IMC) 174 coupled to a system memory 176.
[0050] The depicted system 170 also includes an input / output (IO) module 178 that is implemented together with the host processor 172 and the graphics processor 180 on a semiconductor die 182 as a system on chip (SoC). The depicted IO module 178 communicates with, for example, a display 184 (e.g., touch screen, liquid crystal display / LCD, light emitting diode / LED display), a network controller 186 (e.g., wired and / or wireless), and mass storage 188 (e.g., hard disk drive / HDD, optical disk, solid state drive / SSD, flash memory).
[0051] In one embodiment, host processor 172, graphics processor 180, and / or IO module 178 execute program instructions 190 retrieved from system memory 176 and / or mass storage 188 to implement one or more aspects of method 60 (FIG. 4), method 70 (FIG. 5), method 100 (FIG. 7), method 120 (FIG. 8), method 130 (FIG. 9A), and / or method 140 (FIG. 9B) previously discussed. Thus, execution of the illustrated instructions 190 may cause computing system 170 to detect a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call, and select a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform. Execution of instructions 190 may also cause computing system 170 to automatically generate a first platform-specific service based on the cloud service call and the first set of parameters.
[0052] Further, execution of instructions 190 may cause computing system 170 to select a second cloud platform based on the performance constraints and a second set of parameters associated with the second cloud platform, and to automatically generate a second platform-specific service based on the cloud service calls and the second set of parameters. The illustrated computing system 170 is thus performance enhanced at least to the extent of porting applications having generic cloud service calls to cloud platforms and / or migrating applications between cloud platforms.
[0053] FIG. 11 illustrates a semiconductor package apparatus 192. The illustrated apparatus 192 includes one or more substrates 194 (e.g., silicon, sapphire, gallium arsenide) and logic 196 (e.g., transistor arrays and other integrated circuits / IC components) coupled to the substrate 194. The logic 196 may be implemented, at least in part, in configurable logic or fixed function logic hardware. In one example, the logic 196 implements one or more aspects of the method 60 (FIG. 4), method 70 (FIG. 5), method 100 (FIG. 7), method 120 (FIG. 8), method 130 (FIG. 9A), and / or method 140 (FIG. 9B) previously discussed. Thus, the logic 196 may detect a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call, and select a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform. The logic 196 may also automatically generate a first platform-specific service based on the cloud service call and the first set of parameters.
[0054] Additionally, logic 196 may select a second cloud platform based on the performance constraints and a second set of parameters associated with the second cloud platform, and automatically generate a second platform-specific service based on the cloud service calls and the second set of parameters. The illustrated apparatus 192 is thus performance enhanced at least to the extent that applications having generic cloud service calls can be ported to cloud platforms and / or migrated between cloud platforms.
[0055] In one example, logic 196 includes transistor channel regions that are disposed (e.g., buried) in substrate 194. Thus, the interface between logic 196 and substrate 194 may not be an abrupt junction. Also, logic 196 may be considered to include an epitaxial layer grown on an initial wafer of substrate 194.
[0056] FIG. 12 illustrates a processor core 200 according to one embodiment. Processor core 200 may be a core for any type of processor, such as a microprocessor, embedded processor, digital signal processor (DSP), network processor, or other device that executes code. Although only one processor core 200 is illustrated in FIG. 12, a processing element may alternatively include more than one processor core 200 as illustrated in FIG. 12. Processor core 200 may be a single-threaded core, or, for at least one embodiment, processor core 200 may be multi-threaded in that it may include more than one hardware thread context (or "logical processor") per core.
[0057] FIG. 12 also illustrates memory 270 coupled to processor core 200. Memory 270 may be any of a variety of memories (including various layers of a memory hierarchy) known or otherwise available in the art. Memory 270 may include one or more code 213 instructions executed by processor core 200, where code 213 may implement one or more aspects of method 60 (FIG. 4), method 70 (FIG. 5), method 100 (FIG. 7), method 120 (FIG. 8), method 130 (FIG. 9A), and / or method 140 (FIG. 9B) previously discussed. Processor core 200 follows a program sequence of instructions indicated by code 213. Each instruction may input front-end portion 210 and be processed by one or more decoders 220. Decoder 220 may generate as its output micro-operations, such as fixed-width micro-operations of a predetermined format, or other instructions, micro-instructions, or control signals that reflect the original code instructions. The illustrated front-end portion 210 also includes register renaming logic 225 and scheduling logic 230, which typically allocate resources and queue operations corresponding to the transformation instructions for execution.
[0058] Processor core 200 is shown to include execution logic 250 having a set of execution units 255-1 through 255-N. Some embodiments may include multiple execution units dedicated to a particular function or set of functions. Other embodiments may include only one execution unit or one execution unit capable of performing a particular function. The illustrated execution logic 250 performs operations specified by code instructions.
[0059] After completing execution of the operations specified by the code instructions, back-end logic 260 retires the instructions of code 213. In one embodiment, processor core 200 tolerates out of order execution but requires in order retirement of instructions. Retirement logic 265 may take a variety of forms known to those skilled in the art (e.g., re-order buffers, etc.). In this manner, processor core 200 is transformed during execution of code 213 with respect to at least the outputs generated by the decoders, the hardware registers and tables utilized by register renaming logic 225, and any registers (not shown) modified by execution logic 250.
[0060] 12, a processing element may include other elements on chip with processor core 200. For example, a processing element may include memory control logic along with processor core 200. A processing element may include I / O control logic and / or I / O control logic integrated with memory control logic. A processing element may also include one or more caches.
[0061] Turning now to Figure 13, a block diagram of an embodiment of a computing system 1000 is shown, according to one embodiment. Shown in Figure 13 is a multiprocessor system 1000 including a first processing element 1070 and a second processing element 1080. Although two processing elements 1070 and 1080 are shown, it will be understood that an embodiment of system 1000 may include only one such processing element.
[0062] System 1000 is illustrated as a point-to-point interconnect system, with a first processing element 1070 and a second processing element 1080 coupled via a point-to-point interconnect 1050. It should be understood that any or all of the interconnects illustrated in Figure 13 may be implemented as multi-drop buses rather than point-to-point interconnects.
[0063] As illustrated in Figure 13, each of the processing elements 1070 and 1080 may be a multi-core processor including first and second processor cores (i.e., processing cores 1074a and 1074b, and processing cores 1084a and 1084b). Such cores 1074a, 1074b, 1084a, 1084b may be configured to execute instruction codes in a manner similar to that described above in connection with Figure 12.
[0064] Each processing element 1070, 1080 may include at least one shared cache 1896a, 1896b. The shared cache 1896a, 1896b may store data (e.g., instructions) used by one or more components of the processor, such as the cores 1074a, 1074b and 1084a, 1084b, respectively. For example, the shared cache 1896a, 1896b may locally cache data stored in the memory 1032, 1034 for faster access by the components of the processor. In one or more embodiments, the shared cache 1896a, 1896b may include one or more mid-level caches, such as a level 2 (L2), level 3 (L3), level 4 (L4) or other level cache, a last level cache (LLC), and / or combinations thereof.
[0065] While only two processing elements 1070, 1080 are illustrated, it will be understood that the scope of the embodiments is not so limited. In other embodiments, one or more additional processing elements may be present within a given processor. Alternatively, one or more of the processing elements 1070, 1080 may be elements other than a processor, such as an accelerometer or a field programmable gate array. For example, the additional processing elements may include an additional processor that is the same as the first processor, an additional processor that is heterogeneous or asymmetric with the first processor 1070, an accelerometer (e.g., a graphics accelerometer or a digital signal processing (DSP) unit), a field programmable gate array, or any other processing element. Various differences may exist between the processing elements 1070 and 1080 with respect to a range of metrics of merit, including architectural, microarchitectural, thermal, power consumption characteristics, and the like. These differences may effectively manifest as asymmetries and heterogeneities between the processing elements 1070 and 1080. For at least one embodiment, the various processing elements 1070, 1080 may be present within the same die package.
[0066] The first processing element 1070 may further include a memory controller logic (MC) 1072 and point-to-point (PP) interfaces 1076 and 1078. Similarly, the second processing element 1080 may include a MC 1082 and PP interfaces 1086 and 1088. As shown in FIG. 13, the MCs 1072 and 1082 couple the processors to respective memories, namely memory 1032 and memory 1034. Memory 1032 and memory 1034 may be part of a main memory locally attached to the respective processors. Although the MCs 1072 and 1082 are shown as being integrated into the processing elements 1070, 1080, in alternative embodiments, the MC logic may be separate logic external to the processing elements 1070, 1080 rather than being integrated therein.
[0067] The first processing element 1070 and the second processing element 1080 may be coupled to the I / O subsystem 1090 via PP interconnects 1076, 1086, respectively. As shown in FIG. 14, the I / O subsystem 1090 includes PP interfaces 1094 and 1098. Additionally, the I / O subsystem 1090 includes an interface 1092 that couples the I / O subsystem 1090 to the high performance graphics engine 1038. In one embodiment, the graphics engine 1038 may be coupled to the I / O subsystem 1090 using a bus 1049. Alternatively, a point-to-point interconnect may couple these components.
[0068] I / O subsystem 1090 may in turn be coupled to a first bus 1016 via an interface 1096. In one embodiment, first bus 1016 may be a bus such as a Peripheral Component Interconnect (PCI) bus or a PCI Express bus or another third generation I / O interconnect bus, although the scope of the embodiment is not so limited.
[0069] As illustrated in FIG. 13, various I / O devices 1014 (e.g., biometric scanner, speaker, camera, sensor) may be coupled to a first bus 1016 along with a bus bridge 1018 that may couple the first bus 1016 to a second bus 1020. In one embodiment, the second bus 1020 may be a low pin count (LPC) bus. In one embodiment, various devices may be coupled to the second bus 1020 including, for example, a keyboard / mouse 1012, a communications device 1026, and a data storage unit 1019 such as a disk drive or other mass storage device that may include code 1030. The illustrated code 1030 may implement one or more aspects of method 60 (FIG. 4), method 70 (FIG. 5), method 100 (FIG. 7), method 120 (FIG. 8), method 130 (FIG. 9A), and / or method 140 (FIG. 9B) previously discussed. Additionally, audio I / O 1024 may be coupled to the second bus 1020 , and the battery 1010 may provide power to the computing system 1000 .
[0070] It should be noted that other embodiments are contemplated. For example, instead of the point-to-point structure of Figure 13, the system may implement a multi-drop bus or another such communication topology. Also, the elements of Figure 13 may alternatively be divided using more or fewer integrated circuits than those illustrated in Figure 13.
[0071] Additional Notes and Examples
[0072] Example 1 includes a performance-enhanced computing system comprising: a network controller; a processor coupled to the network controller; and a memory coupled to the processor, the memory comprising a set of executable program instructions that, when executed by the processor, cause the computing system to detect a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call, select a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform, and automatically generate a first platform-specific service call based on the cloud service call and the first set of parameters.
[0073] Example 2 includes the computing system of example 1, where the instructions, when executed, cause the computing system to map the cloud service call to a first platform-specific service call.
[0074] Example 3 includes the computing system of example 1 or example 2, where the instructions, when executed, further cause the computing system to select a second cloud platform based on the one or more performance constraints and a second set of parameters associated with the second cloud platform; automatically generate a second platform-specific service call based on the cloud service call and the second set of parameters; and map the cloud service call to the second platform-specific service call.
[0075] Example 4 includes the computing system of example 3, where the instructions, when executed, further cause the computing system to perform a transfer of state data from the first cloud platform to the second cloud platform.
[0076] Example 5 includes the computing system of example 4, wherein the instructions, when executed, further cause the computing system to track transfers via a bitmap.
[0077] Example 6 includes the computing system of example 4, where the instructions, when executed, further cause the computing system to detect a runtime instance of the cloud service call and, in response to the runtime instance, selectively issue one or more of the first platform-specific service call or the second platform-specific service call based on a status of the transfer.
[0078] Example 7 includes a semiconductor device comprising: one or more substrates; and logic coupled to the one or more substrates, the logic implemented at least in part in one or more of configurable logic or fixed function hardware logic, wherein the logic coupled to the one or more substrates detects a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call, selects a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform, and automatically generates a first platform-specific service call based on the cloud service call and the first set of parameters.
[0079] Example 8 includes the semiconductor device of example 7, wherein logic coupled to the one or more substrates maps the cloud service calls to the first platform-specific service calls.
[0080] Example 9 includes the semiconductor device of example 7 or example 8, wherein logic coupled to the one or more substrates selects a second cloud platform based on the one or more performance constraints and a second set of parameters associated with the second cloud platform, automatically generates a second platform-specific service call based on the cloud service call and the second set of parameters, and maps the cloud service call to the second platform-specific service call.
[0081] Example 10 includes the semiconductor device of example 9, wherein logic coupled to the one or more substrates facilitates a transfer of the state data from the first cloud platform to the second cloud platform.
[0082] Example 11 includes the semiconductor device of example 10, wherein logic coupled to the one or more substrates tracks transfers via a bitmap.
[0083] Example 12 includes the semiconductor device of example 10, wherein logic coupled to the one or more substrates detects a runtime instance of the cloud service call and, in response to the runtime instance, selectively issues one or more of the first platform-specific service call or the second platform-specific service call based on a status of the transfer.
[0084] Example 13 includes at least one computer-readable storage medium comprising a set of executable program instructions that, when executed by a computing system, cause the computing system to detect a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call, select a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform, and automatically generate a first platform-specific service call based on the cloud service call and the first set of parameters.
[0085] Example 14 includes at least one computer-readable medium of example 13, where the instructions, when executed, cause the computing system to map the cloud service call to a first platform-specific service call.
[0086] Example 15 includes at least one computer-readable medium of Example 13, where the instructions, when executed, further cause the computing system to select a second cloud platform based on the one or more performance constraints and a second set of parameters associated with the second cloud platform, automatically generate a second platform-specific service call based on the cloud service call and the second set of parameters, and map the cloud service call to the second platform-specific service call.
[0087] Example 16 includes at least one computer-readable medium of example 15, where the instructions, when executed, further cause the computing system to perform a transfer of the state data from the first cloud platform to the second cloud platform.
[0088] Example 17 includes at least one computer-readable medium of example 16, wherein the instructions, when executed, further cause the computing system to track the transfers via a bitmap.
[0089] Example 18 includes at least one computer-readable medium of Example 16, where the instructions, when executed, further cause the computing system to detect a runtime instance of the cloud service call and, in response to the runtime instance, selectively issue one or more of the first platform-specific service call or the second platform-specific service call based on a status of the transfer.
[0090] Example 19 includes a method for operating a performance-enhanced computing system, the method including: detecting a cloud service call in an application, where platform-specific parameters are not specified in the cloud service call; selecting a first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with the first cloud platform; and automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters.
[0091] Example 20 includes the method of example 19, further including mapping the cloud service call to a first platform-specific service call.
[0092] Example 21 includes the method of Example 19 or Example 20, and further includes: selecting a second cloud platform based on the one or more performance constraints and a second set of parameters associated with the second cloud platform; automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters; and mapping the cloud service call to the second platform-specific service call.
[0093] Example 22 includes the method of example 21, further including performing a transfer of the state data from the first cloud platform to the second cloud platform.
[0094] Example 23 includes the method of example 22, further including tracking the transfer via a bitmap.
[0095] Example 24 includes the method of Example 22, further including: detecting a runtime instance of the cloud service call; and in response to the runtime instance, selectively issuing one or more of the first platform-specific service call or the second platform-specific service call based on a status of the transfer.
[0096] Example 25 includes a means for carrying out the method of any of Examples 19 to 24.
[0097] Thus, the techniques described herein provide a uniform programming interface targeting generic cloud services and a runtime that transparently moves applications or parts thereof to benefit from different cloud vendor services. Cloud application developers can write their code once using generic cloud service APIs as described herein. The runtime may port / map the generic APIs to available / optimal cloud services (e.g., selecting from a pool of vendors). The runtime may also provide gradual migration of applications or specific modules from one cloud vendor to another without service interruption.
[0098] The embodiments are applicable for use with all types of semiconductor integrated circuit ("IC") chips. Examples of these IC chips include, but are not limited to, processors, controllers, chipset components, programmable gate arrays (PLAs), memory chips, network chips, systems on chips (SoCs), SSD / NAND controller ASICs, etc. Additionally, in some of the drawings, signal lines are represented as lines. Some may differ to indicate additional constituent signal paths, may have numerical labels to indicate multiple constituent signal paths, and / or may show arrows on one or more ends to indicate the direction of the main information flow. However, this should not be construed as limiting. Rather, such additional details may be used in connection with one or more of the example embodiments to facilitate easier understanding of the circuit. Any signal line represented may actually include one or more signals that may go in multiple directions and may be implemented in any suitable type of signaling scheme, such as digital or analog lines implemented in different pairs, fiber optic lines, and / or single-ended lines, with or without additional information.
[0099] Although example sizes / models / values / ranges may be given, the embodiments are not limited to the same. It is expected that as manufacturing technologies (e.g., photolithography) mature over time, devices of smaller sizes can be manufactured. In addition, well-known power / ground connections to IC chips and other components may or may not be shown in the drawings for ease of illustration and discussion, and to avoid obscuring certain aspects of the embodiments. Furthermore, while layouts may be shown in block diagram form, this is to avoid obscuring the embodiments, and in view of the fact that the specifics regarding the implementation of block diagram layouts are highly dependent on the computing system in which the embodiments are implemented, i.e., such specifics should be well within the purview of one skilled in the art. Although specific details (e.g., circuits) are described to describe example embodiments, it should be apparent to one skilled in the art that the embodiments can be practiced without those specific details or with variations thereof. Thus, the description should be interpreted as illustrative, and not limiting.
[0100] The term "coupled" may be used herein to refer to any type of relationship, direct or indirect, between the components in question and may apply to electrical, mechanical, fluid, optical, electromagnetic, electromechanical, or other connections. Additionally, terms such as "first," "second," etc. may be used herein for ease of discussion only and may not convey any particular temporal or chronological significance unless specifically stated.
[0101] As used in this specification and claims, a list of items connected by the term "one or more of" may mean any combination of the listed terms. For example, the phrase "one or more of A, B, or C" may mean A; B; C; A and B; A and C; B and C; or A, B and C.
[0102] Those skilled in the art will recognize from the foregoing description that the broad technology of the embodiments can be implemented in a variety of forms. Thus, although the embodiments have been described with reference to specific examples thereof, the true scope of the embodiments should not be so limited, as other modifications will become apparent to those skilled in the art from the teachings of the drawings, specification, and the following claims.
Claims
1. 1. A computing system comprising: A network controller; a processor coupled to the network controller; a memory coupled to the processor; when executed by the processor, the memory provides the computing system with: Detecting a cloud service call in an application, where no platform specific parameters are specified in the cloud service call; selecting the first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with a first cloud platform; automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters; selecting the second cloud platform based on the one or more performance constraints and a second set of parameters associated with a second cloud platform; automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters. A program comprising: The instructions, when executed, further cause the computing system to: selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of a transfer of state data from the first cloud platform to the second cloud platform. Computing system.
2. The instructions, when executed, cause the computing system to map the cloud service call to the first platform-specific service call. The computing system of claim 1 .
3. The instructions, when executed, further cause the computing system to: mapping the cloud service call to the second platform-specific service call; A computing system according to claim 1 or 2.
4. The instructions, when executed, further cause the computing system to perform the transfer of the state data from the first cloud platform to the second cloud platform. The computing system of claim 3 .
5. The instructions, when executed, further cause the computing system to track the transfers via a bitmap. The computing system of claim 4.
6. The instructions, when executed, further cause the computing system to: Detecting a runtime instance of the cloud service call; selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of the transfer includes selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of the transfer, in response to the runtime instance. The computing system of claim 4.
7. 1. A semiconductor device comprising: one or more substrates; logic coupled to the one or more substrates; the logic being implemented, at least in part, in one or more of configurable logic or fixed function hardware logic, the logic coupled to the one or more substrates comprising: Detecting a cloud service call in an application, where a platform specific parameter is not specified in the cloud service call; selecting the first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with a first cloud platform; automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters; selecting the second cloud platform based on the one or more performance constraints and a second set of parameters associated with a second cloud platform; automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters; The logic coupled to the one or more substrates further comprises: selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of a transfer of state data from the first cloud platform to the second cloud platform; Semiconductor device.
8. the logic coupled to the one or more boards maps the cloud service calls to the first platform-specific service calls; The semiconductor device according to claim 7.
9. The logic coupled to the one or more substrates includes: mapping the cloud service call to the second platform-specific service call; The semiconductor device according to claim 7 or 8.
10. the logic coupled to the one or more boards effects the transfer of the state data from the first cloud platform to the second cloud platform. The semiconductor device according to claim 9.
11. the logic coupled to the one or more boards tracks the transfers via a bitmap; The semiconductor device according to claim 10.
12. The logic coupled to the one or more substrates includes: Detecting a runtime instance of the cloud service call; selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer comprises selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer in response to the runtime instance. The semiconductor device according to claim 10.
13. When executed by a computing system, the computing system: Detecting a cloud service call in an application, where no platform specific parameters are specified in the cloud service call; selecting the first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with a first cloud platform; automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters; selecting the second cloud platform based on the one or more performance constraints and a second set of parameters associated with a second cloud platform; automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters. A computer program for the computing system, further comprising: selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of a transfer of state data from the first cloud platform to the second cloud platform. Computer program.
14. causing the computing system to map the cloud service call to the first platform-specific service call; 14. A computer program product as claimed in claim 13.
15. The computing system further comprises: mapping the cloud service call to the second platform-specific service call; 15. A computer program according to claim 13 or 14.
16. and causing the computing system to effect the transfer of the state data from the first cloud platform to the second cloud platform.
16. A computer program according to claim 15.
17. further causing the computing system to track the transfers via a bitmap; 17. A computer program product as claimed in claim 16.
18. The computing system further comprises: Detecting a runtime instance of the cloud service call; selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of the transfer includes selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of the transfer, in response to the runtime instance.
17. A computer program product as claimed in claim 16.
19. A method performed by a computing system, comprising: Detecting a cloud service call in an application, wherein platform specific parameters are not specified in the cloud service call; selecting the first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with a first cloud platform; automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters; selecting the second cloud platform based on the one or more performance constraints and a second set of parameters associated with a second cloud platform; automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters; the method further comprising: selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of a transfer of state data from the first cloud platform to the second cloud platform; A method comprising:
20. mapping the cloud service call to the first platform-specific service call; 20. The method of claim 19, further comprising:
21. Mapping the cloud service call to the second platform-specific service call.
21. The method of claim 19 or 20, further comprising:
22. effecting the transfer of the state data from the first cloud platform to the second cloud platform; 22. The method of claim 21 further comprising:
23. tracking said transfers via a bitmap; 23. The method of claim 22, further comprising:
24. detecting a runtime instance of the cloud service call; selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer comprises selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer in response to the runtime instance.
23. The method of claim 22.
25. A semiconductor device comprising: A means for detecting a cloud service call in an application, wherein platform specific parameters are not specified in the cloud service call; means for selecting the first cloud platform based on one or more performance constraints associated with the cloud service call and a first set of parameters associated with a first cloud platform; means for automatically generating a first platform-specific service call based on the cloud service call and the first set of parameters; means for selecting the second cloud platform based on the one or more performance constraints and a second set of parameters associated with a second cloud platform; means for automatically generating a second platform-specific service call based on the cloud service call and the second set of parameters; The semiconductor device further comprises: means for selectively issuing one or more of the first platform specific service calls or the second platform specific service calls based on a status of a transfer of state data from the first cloud platform to the second cloud platform; 13. A semiconductor device comprising:
26. means for mapping the cloud service call to the first platform specific service call; The semiconductor device according to claim 25 , further comprising:
27. A method for mapping the cloud service call to the second platform-specific service call, comprising: The semiconductor device according to claim 25 or 26, further comprising:
28. means for effecting the transfer of the state data from the first cloud platform to the second cloud platform; The semiconductor device of claim 27 further comprising:
29. means for tracking said transfers via a bitmap; The semiconductor device of claim 28 further comprising:
30. means for detecting a runtime instance of the cloud service call; the means for selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer comprises means for selectively issuing one or more of the first platform specific service call or the second platform specific service call based on a status of the transfer, in response to the runtime instance.
29. The semiconductor device according to claim 28.
31. At least one computer readable storage medium storing a computer program according to any one of claims 13 to 18.
Citation Information
Patent Citations
Equipment management system, information processing apparatus, information processing method, information processing program, and recording medium having the program recorded
JP2012128831A
Tiered service resale mechanism for IPTV
JP2013512644A
Multiple resource servers with a single flexible and pluggable OAuth server, an OAuth-protected REST-style OAuth authorization management service, and an OAuth service for single sign-on of mobile applications.
JP2016535880A
Services in reverse proxy server
JP2017538179A
Method and System for Providing Access to Remotely Hosted Services Through a Normalized Application Programming Interface
US20110196914A1