Embodiments of the inventive subject matter generally relate to the field of data handling system communication, and, more particularly, to cooperative task execution. Still more particularly, embodiments of the inventive subject matter relate to sharing of resources in a docked mobile environment.
Portable data handling systems such as smartphones, smartbooks, personal digital assistants (PDAs), palmtop computers, slate computers, tablet computers, netbooks, ultrabooks, and notebook computers have become ubiquitous. Increases in portability and battery life provided by such portable systems frequently require a concomitant reduction in processing power. Recent attempts to address the reduced computing capabilities found in such portable data handling systems have focused on increasing the input/output capabilities of smartphones or tablets by providing physical keyboards and displays. These conventional docking systems typically suffer from a number of shortcomings however as they typically depend on the processing capabilities of the more portable (and therefore less powerful in terms of processing power) device, they do not provide complete devices which are all useable independently of one another, and they do not provide for the capability to dock and undock systems rapidly without catastrophic effects on executing applications or other processing tasks.
Accordingly a method is provided comprising maintaining a first set of data handling system execution tasks within a first data handling system. The described first data handling system comprises a first system unit comprising, a first processing element, a first memory storage element, a first user input element, and a first display element. The first system unit further comprises a system dock interface to physically couple the first data handling system to a second data handling system. The second data handling system of the described embodiment comprises a second system unit which in turn comprises a second processing element, a second memory storage element, a second user input element, and a second display. The described method embodiment further comprises assigning a task of the first set of data handling system execution tasks to be executed by the second data handling system while the first data handling system is physically coupled to the second data handling system. The method also comprises detecting a physical decoupling of the first data handling system and second data handling system and storing an execution result of the task via the first memory storage element in response to a detection of the physical decoupling.
The present embodiments may be better understood, and numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The description that follows includes example systems, methods, techniques, instruction sequences and computer program products that embody techniques of the present inventive subject matter. However, it is understood that the described embodiments may be practiced without these specific details. For instance, although examples refer to specific data and data structures relating to the processing element capabilities and task completion status, these particular data and structures need not be used and should not be construed as limiting embodiments of the inventive subject matter disclosed herein. In other instances, well-known instruction instances, protocols, structures and techniques have not been shown in detail in order not to obfuscate the description.
Various embodiments of the inventive subject matter provide methods, systems, and computer program products for sharing resources in a docked mobile environment. The described embodiments enable scheduling of execution tasks or other processing “work” across multiple processors which cross physical device or “system unit” boundaries. Due to this cross-device distribution of execution tasks and the transient nature by which docked systems and operatively coupled together, embodiments must also provide a unique “failure” mode enabling a user to undock a system at any point while allowing processing to continue interrupted.
In the present description, many embodiments will be discussed which include only two docked data handling systems or devices, a primary or “main” first system and a secondary or “host” second system. As will be illustrated and described with respect to
In each case, it should be noted that the data handling systems described are each capable of standalone operation, including the requisite system resources to allow users to interact with them to request and receive task execution services.
According to one embodiment, each data handling system provides a java virtual machine (JVM). A java virtual machine is a virtual machine capable of executing Java bytecode. A virtual machine is a completely isolated guest operating system installation within a host operating system. Modern virtual machines are implemented with either software emulation or hardware virtualization. A JVM provides an environment in which Java bytecode can be executed, enabling such features as automated exception handling, which provides “root-cause” debugging information for every software error (exception), independent of the source code. A JVM is distributed along with a set of standard class libraries that implement the Java application programming interface (API). Appropriate APIs bundled together form the Java Runtime Environment (JRE). JVMs are available for many hardware and software platforms. The use of the same bytecode for all JVMs on all platforms allows Java to be described as a “compile once, run anywhere” programming language, as opposed to “write once, compile anywhere”, which describes cross-platform compiled languages.
According to one embodiment, a method is provided in which a first execution task list is maintained. The task list includes in one embodiment task completion status information which indicates whether or not each identified task has completed execution. It should be noted that a task need not successfully complete and generate a desired result or outcome in order to be considered complete for task completion status purposes. According to one embodiment, task execution is deemed complete even if it results in an error (e.g., an exception) so long as the execution result is what would have occurred or have been expected to occur if the task in question were executed on the first data handling system from which it originated or on any of the other data handling systems physically coupled to the first data handling system per one or more embodiments of the inventive subject matter disclosed herein.
In this embodiment, the described first data handling system comprises a first system unit comprising, a first processing element, a first memory storage element, a first user input element, and a first display element. The first system unit further comprises a system dock interface to physically couple the first data handling system to a second data handling system. The second data handling system of the described embodiment comprises a second system unit which in turn comprises a second processing element, a second memory storage element, a second user input element, and a second display. The described method embodiment further comprises assigning a task of the first set of data handling system execution tasks to be executed by the second data handling system while the first data handling system is physically coupled to the second data handling system. The method also comprises detecting a physical decoupling of the first data handling system and second data handling system and storing an execution result of the task via the first memory storage element in response to a detection of the physical decoupling.
According to one embodiment, as the second data handling system is capable of independent, stand-alone execution of tasks, a second set of data handling system execution tasks is maintained for the second system and executed by the second data handling system in an interleaved fashion with tasks assigned from other, physically-coupled data handling systems (e.g., the first data handling system). Similarly, in one embodiment tasks sourced from a data handling system are distributed to be executed both locally as well as remotely, in other words, first data handling system execution tasks may be executed by either the first data handling system or another, physically-coupled data handling system, for example based on system availability, capability, and system dock interface availability as will be described in greater detail herein.
The stored execution result may be generated or supplied either by the first data handling system (if execution doesn't complete on the second data handling system prior to decoupling) or by the second data handling system if the task is executed successfully with a generated result be transferred from the second data handling system to the first data handling system via the system dock interface. In one embodiment, the task in question is assigned to the second data handling system and its completion status is tracked locally at the first data handling system, but the task is only reassigned for execution by the first data handling system if it is determined that decoupling occurred prior to a completion of the tasks' execution remotely at the second data handling system.
According to another embodiment, the task is assigned in parallel to both the first data handling system and the second data handling system. In the described embodiment, the processing capabilities of the second data handling system are comparatively superior to those of the first data handling system to the extent that, unless the data handling systems are decoupled from one another, execution (and result transfer) should occur before execution completes on the first data handling system. The execution result subsequently generated by the first data handling system may then be ignored or the execution may be suspended or halted once the task's execution is indicated as being completed by the second data handling system. Utilizing this implementation, execution latency may be reduced and perceived application or task execution responsiveness may be increased via this parallel execution of tasks.
In another embodiment, a predetermined time period may be used to detect a potential physical re-coupling or “re-docking” of systems. During the predetermined time period execution continues on the data handling system(s) to which tasks have been assigned. The task or tasks in question may either be reassigned immediately after a physical decoupling or “de-docking” or after the predetermined time period (or another predetermined time period) elapses. If re-docking occurs prior to the completion of execution of the task(s) by the source (i.e., first) data handling system, the execution result from the systems to which they were originally assigned is utilized.
According to one embodiment of the inventive subject matter disclosed herein, tasks are assigned based on data handling system capabilities. Such capabilities may consider a number of factors in separate embodiments. Traditional processing element benchmarks or capability metrics such as processor clock speed or cycle time, operations per cycle or second, processor cache size, instruction word size, etc. may be used. Similarly, actual benchmark testing results metrics may be utilized such as those provided by Business Applications Performance Corporation (BAPCo), the Embedded Microprocessor Benchmark Consortium (EEMBC), Standard Performance Evaluation Corporation (SPEC), the Transaction Processing Performance Council (TPC), Coremark, Whetstone, or the like. Processing workload specialties may also be taken into account or utilized as indicators of processing capability if a group of tasks to be executed is known a priori. For example, certain processors have enhanced floating point or integer execution priorities based on their instruction set or organization which would indicate increased performance for different execution workloads.
In another embodiment, processor utilization constraints are also considered in assigning tasks to be executed by physically coupled data handling systems. Because the docked and host systems described in the various embodiments discussed herein may be considered “peer” systems, in the described embodiment each system must manage or control the quantity of tasks sourced from other systems to be executed on its processing resources. This “throttling” may be accomplished using any of a number of techniques and may be taken into consideration in the assignment of tasks for execution. According to one embodiment, a token system is implemented in which each data handling system maintains a number of “tokens”, data structures or other virtual constructs representing the number of available processing cycles for execution of other system's tasks. At a data handling system's request a token may be issued and/or redeemed by that data handling system corresponding to the execution of one task. By controlling the issuance of tokens, a data handling system may control the number of tasks executed (and correspondingly the number of processing element cycles consumed.
As utilized herein, a “task” may represent any quantifiable software work item. For example, a task may represent an individual java byte code, a subroutine, a method, a thread, a process, an applet, an application, or a set of applications comprising a business process or a portion thereof. In various embodiments of the inventive subject matter, a task is only constrained by what may be assigned and tracked for completion status and consequently can have almost any granularity. In one or more embodiments of the present inventive subject matter, a task may comprise any unit of work that, once completed, produces a result (which is comprised of one or more pieces of data), changes the state of the systems, produces an error or exception, or ends in other related outcomes.
First data handling system 102 further comprises a system dock interface 120 to couple first data handling system 102 to data handling system 104 via a corresponding system dock interface 122. In the embodiment of
Once all available or accessible processing resources have been identified, data handling system execution tasks which are indicated as incomplete using task completion status information are identified (process block 304). Such incomplete tasks may be either newly received data handling system execution tasks to be executed or data handling system execution tasks which have been previously received and assigned, but which were not completed by their assigned data handling system prior to the occurrence of a dock/de-dock event. Thereafter, the identified data handling system execution tasks are assigned to the previously identified available resources (process block 306). According to one embodiment, this assignment takes into consideration processing element or resource capabilities as well as any associated utilization constraints. Following task assignment, a determination is made whether or not a docking or de-docking event has occurred (process block 308).
In various inventive embodiments, different techniques may be used to identify such docking or de-docking events corresponding to the physical coupling or uncoupling of data handling systems operating according to such embodiments. In one illustrative embodiment, an interrupt technique may be used in conjunction with an interrupt handler routine to address such events occurring at any time during the depicted process. Consequently, the particular order and arrangement shown in
Although the term “next” has been utilized, embodiments of the inventive subject matter do not necessarily require that there be an ordering or precedence associated with the overall system's data handling system or devices. Rather this is merely intended to indicate that all available data handling systems and processing resources are identified. Thereafter any associated utilization constraints of a data handling system under consideration at this point in the process are determined (process block 406). A determination is then made whether there are any remaining physically coupled (directly or indirectly) data handling systems to be analyzed (process block 408). If all such “docked” data handling systems have been analyzed, the depicted process completes. Otherwise if there are other accessible data handling systems to be reviewed, the depicted process loops to the stage at which the “next” physically coupled data handling system to be analyzed is identified (process block 404) until all systems have been reviewed.
Such processor capability information may be useful in assigning data handling system execution tasks to be executed. For example, awareness of the specific data handling system associated with a processor may be used to indicate if a processor is “nested” or coupled to the source data handling system via a system dock interface or communication medium which may act as a bottleneck, slowing overall execution of tasks. Understanding of an instruction set architecture may be valuable where bytecodes may be compiled into or already available in the native machine code format to speed execution completion.
Similarly, the task completion status information depicted in second data structure 504 includes a unique task identifier, a task type identifier, an assigned processor, and a completion status. According to one embodiment of the inventive subject matter described herein, first and second data structures 502 and 504 and the data included therein is utilized to share available processing resources in a docked mobile environment. In one embodiment, data handling system execution tasks are assigned to the fastest available processor until either utilization constraints prevent additional task assignments or execution completion status degrades sufficiently to assign tasks to another available data handling system's processing resources.
As will be appreciated by one skilled in the art, aspects of the present inventive subject matter may be embodied as a system, method or computer program product. Accordingly, aspects of the present inventive subject matter may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present inventive subject matter may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present inventive subject matter may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present inventive subject matter are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the inventive subject matter. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable j apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
While the embodiments are described with reference to various implementations, it will be understood that these embodiments are illustrative and that the scope of the inventive subject matter is not limited to them. In general, techniques for sharing resources in a docked mobile environment as described herein may be implemented with facilities consistent with any hardware system or hardware systems. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the inventive subject matter. In general, structures and functionality presented as separate components in the example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements may fall within the scope of the inventive subject matter.