The technical field relates to computing systems, and more particularly to an adaptive computing platform that provides execution-in-place capability for a computing device to enhance the processing power of the device.
Smart Spaces are work spaces embedded with computers, information appliances, and sensors that allow people to work efficiently through access to information from computers. Smart Spaces facilitate interaction with information sources through the use of mobile wireless devices and support collaborative operations on shared data representations. The computers in the smart space may communicate wirelessly with other participants of the smart space and provide requested information through speech and visual displays. The smart space may be connected to the Internet and to remote databases to help participants to interact and collaborate.
The Micro-Nano integrated platform for transverse Ambient Intelligence applications, (MINAmI) Project, Supported by the European Commission through the Sixth Framework Programme for Research and Development, addresses Ambient Intelligence (AmI) applications, where the personal mobile device acts as a gateway. With the MINAmI Ambient Intelligence system, the physical environment can be loaded with interesting and context related information, easily and naturally accessible to the user. Information is in the tags and sensors embedded in physical surroundings and everyday objects, and it can be anything from sensor measurements from the environment or the user itself, to a piece of music or the latest news. The user can wirelessly access this information content by just touching or scanning close tags and sensors with an apparatus capable of machine reading the information content. The apparatus, such as a mobile phone may also enable wireless connection to the internet. As the interaction can be tied to a specific place, object, and time, the user is served with context related information and services. The MINAmI Project is intended to define a communication protocol/system for providing high data rate communication between a reader/writer device and large memory containing radio frequency (RF) tags operating over a very high data rate communication channel.
Method, apparatus, and computer program product example embodiments are disclosed for an adaptive computing platform that provides execution-in-place capability for a computing device to enhance the processing power of the device as it interacts with various external processors.
In example embodiments of the invention, one or more execution contexts are stored in a memory of a first device resulting from execution in the first device of program code of an application stored in the memory. The first device detects that a second device may be communicated with over a communications medium. The first device shares the execution context over a communications connection in the communications medium with the second device for continued execution-in-place of the application by the second device. When the first device detects an external event that will result in closing the communication connection with the stationary wireless device, it receives an updated execution context from the second device over the communications connection for continued execution-in-place of the application by the first device. The communications medium may be a wireless communications medium or a virtual communications medium. The sharing of the execution context and execution-in-place of the application with the second device may be managed by a virtual run-time environment. The virtual run-time environment may enable shared execution sessions between the first device and the second device. The first device may be a mobile wireless device and the second device may be a stationary wireless device.
In example embodiments of the invention, the devices may be managed by a run-time environment that enables aggregation of user and application context information and scheduling of the run-time environment. The example embodiments enable changes to be made to one or more execution contexts. Changes to execution contexts may include starting, executing, scheduling, dispersing, and aggregating of operating system processes or tasks. Code and data dispersion and aggregation may be performed by selective fetching. Selective fetching may be driven by a recovery-conscious scheduler that may be part of the run-time environment scheduler and supported by information provided by the operating system task scheduler. The execution context may be dynamically assigned and triggered by the run-time environment and allocated according to the particular or operating system task management.
In example embodiments of the invention, a second device receives one or more execution contexts over a communications medium from a first device resulting from execution in the first device of program code of an application stored in the first device. The second device executes-in-place the application. The second device determines an external event that will result in closing a secure communication link with the first device. The second device shares, before closing of the communication connection, one or more execution contexts with the first device over the communications medium for continued execution-in-place of the application by the first device. The communications medium may be a wireless communications medium or a virtual communications medium. The sharing of the execution context and execution-in-place of the application with the first device may be managed by a virtual run-time environment. The virtual run-time environment may enable shared execution sessions between the first device and the second device. The first device may be a mobile wireless device and the second device may be a stationary wireless device.
In example embodiments of the invention, the second device shares, before closing of the communication connection, an initial portion of the updated execution context with the first device over a first wireless communications connection having a first range and shares a remaining portion of the updated execution context with the first device over a second wireless communications connection having a longer range than said first range, for continued execution-in-place of the application by the first device.
The embodiments of the invention provide an adaptive computing platform that enables execution-in-place capability for a computing device to enhance the processing power of the device.
Example memory technologies, such as Phase-change memory (PRAM), Resistive RAM (ReRAM), Magnetic RAM (MRAM), solid-electrolyte (SE) memory, Ferroelectric RAM (FeRAM), organic and polymer memory, enable a computing environment that provides efficient, seamless utilization by the mobile wireless device. These non-volatile memory technologies are collectively referred to herein as NVRAM (non-volatile main memory). Memory devices respectively based on any one of these latest memory technologies have their own respective response time and data persistence characteristics unique to the respective technology.
The stationary wireless device 200 receives the execution context 170 in its receiver 260R from the wireless data link 180 and transfers it to the to the snapshot buffer 250 of the stationary wireless device 200. The snapshot buffer 250 invokes the Universal Local Storage (ULS) system program 225 in the stationary wireless device 200 to transfer the execution context 170 to the non-volatile (NVRAM) main memory 202, instruction cache memory 230, data cache memory 232, and processors 241, 242 of the stationary wireless device 200. The virtual run-time environment program 210 is then invoked for continued execution of the program code of the application 104 in-place by the processors 241, 242 in the stationary wireless device 200.
The mobile wireless device 100 is capable of utilizing external computational resources, such as the stationary wireless device 200, when within range or detects a secure communication link, to provide a shared execution environment. The virtual run-time environment program 110 in the mobile wireless device 100 cooperates with the virtual run-time environment program 210 in the stationary wireless device 200 to carry out a shared execution of the application 104. When the execution session is about to be stopped, either by the user's decision or because connection quality is decreasing, the execution context 172 of the execution memory contents in the stationary wireless device 200 are pulled back to the non-volatile execution memory of the mobile wireless device 100 over the very high data throughput wireless link 180′ by the Universal Local Storage (ULS) system program 125, thereby enabling the computing session to continue within the mobile wireless device 100.
The very high throughput wireless data links 180 and 180′ may be, for example, impulse radio ultra wide band (UWB) links operating at 7.9 GHz, to provide high data rate communication at 10-100 Mbit/s, or the like.
In case all of the execution memory context 172 cannot be pulled back due to disconnection of the very high data throughput wireless links 180 and 180′, other means may be used. For example, the wireless short-range transceivers 146 and 246 may use various WLAN communications protocols such as IEEE 802.11 (Wi-Fi), HiperLAN/2, IEEE 802.11a and IEEE 802.11g standards, or the like. For example, the wireless long range transceivers 144 and 244 may use various 3rd Generation wireless telephone communications protocols such as GSM EDGE, UMTS, CDMA2000, Long Term Evolution (LTE), and the like. Such short range and long range wireless protocols may be used to provide the necessary communications to complete the transfer of the execution memory context 172 to the mobile device 100.
The Universal Local Storage (ULS) system programs 125 and 225 are described in the copending U.S. patent application Ser. No. 12/484,801, filed Jun. 15, 2009, entitled “System And Method For Distributed Persistent Computing Platform”, assigned to the instant assignee, which is incorporated herein by reference.
In another example embodiment, a user may be running an application program on his/her PC or laptop and then decides to move away to show some particular issue to a colleague working at a different location. The current execution context of the execution memory contents from the user's PC or laptop may be transferred to the mobile phone, in the manner described above for
In the event that all of the information cannot be pulled back due to interruption of the connection of the very high data throughput wireless link, other means, such as wireless short-range connection (WLAN or like) or wireless long range connection (3G, LTE or like) may be used to provide the necessary data to complete the execution context of the non-volatile execution memory in the mobile device.
The virtual run-time environment 110 in the memory 102 of the mobile wireless device 100 includes the operating system (OS) kernel 119 that includes several knowledge processors (KP) 112A, 114A, and 116A that are program constructs in the memory 102. Each knowledge processor (KP) 112A, 114A, and 116A uses a set of definitions in a formal vocabulary to share knowledge about a category of execution context in the mobile device 100 with a respective partner knowledge processor (KP) 112B, 114B, and 116B in the stationary device 200. Each respective knowledge processor (KP) 112A, 114A, and 116A respectively manages the execution context associated with process scheduling 111A, memory management 113A, and system calls 115A in the mobile device 100. The knowledge processor performs management functions such as asking queries and making assertions. The knowledge processor (KP) 118A is a program construct in the memory 102 that manages the execution context associated with the user's context 117A in the mobile device 100 and shares knowledge about that category of execution context in the mobile device 100 with its respective partner knowledge processor (KP) 118B in the stationary device 200. Each of the knowledge processors (KP) 112A, 114A, 116A, and 118A interact with the semantic information broker 120 that is a program construct in the memory 102, which effectively performs the function of a router to direct units of memory execution context 170 from a source knowledge processor (KP) in the mobile device 100 to its respective partner knowledge processor (KP) in the stationary device 200. The semantic information broker 120 also directs units of memory execution context 172 from a source knowledge processor (KP) 112B, 114B, 116B, and 118B in the stationary device 200 to its respective partner knowledge processor (KP) 112A, 114A, 116A, and 118A in the mobile device 200.
The virtual run-time environment 210 in the memory 202 of the stationary wireless device 200 includes the operating system (OS) kernel 219 that includes several knowledge processors (KP) 112B, 114B, and 116B that are program constructs in the memory 202. Each knowledge processor (KP) 112B, 114B, and 116B uses a set of definitions in a formal vocabulary to share knowledge about a category of execution context in the mobile device 200 with a respective partner knowledge processor (KP) 112A, 114A, and 116A in the mobile device 100. Each respective knowledge processor (KP) 112B, 114B, and 116B respectively manages the execution context associated with process scheduling 111B, memory management 113B, and system calls 115B in the stationary device 200. The knowledge processor (KP) 118B is a program construct in the memory 202 that manages the execution context associated with the user's context 117B in the stationary device 200 and shares knowledge about that category of execution context in the stationary device 200 with its respective partner knowledge processor (KP) 118A in the mobile device 100. Each of the knowledge processors (KP) 112B, 114B, 116B, and 118B interact with the semantic information broker 220 that is a program construct in the memory 202, which effectively performs the function of a router to direct units of memory execution context 172 from a source knowledge processor (KP) in the stationary device 200 to its respective partner knowledge processor (KP) in the mobile device 100. The semantic information broker 220 also directs units of memory execution context 170 from a source knowledge processor (KP) 112A 114A, 116A, and 118A in the mobile device 100 to its respective partner knowledge processor (KP) 112B, 114B, 116B, and 118B in the stationary device 100.
In the example embodiments of the invention of
The Smart Space 135 is constructed from one or more Semantic Information Brokers (SIB) 120 and 220, which contain schedulers, management information, listeners, and an information store. The Smart Space 135 is represented by these SIBS 120 and 220 and the total possible connectivity presented by them is given by the distributed union of all the representing SIB listeners. The SIBs 120 and 220 communicate internally to ensure that membership and credentials of the knowledge processors (KP) that have joined that Smart Space. The knowledge processors (KP) may connect via any SIB listener of any SIB in the Smart Space 135. From the point of view of any knowledge processor (KP), the information available is always the distributed union over all of the routes between all the SIBs 120 and 220. The SIBs 120 and 220 contain routing tables to other SIBs and within the Smart Space 135 and all the SIBs 120 and 220 are totally routable, but not necessarily totally connected.
The knowledge processors (KP) may include a user-interface, logic, and nodes. A knowledge processor (KP) is a composite structure that runs on a single device. A device may run many knowledge processors (KP), depending on the operating system and memory. User interfaces are not necessary or may be extremely simple in nature, such as an LCD display or a single button. The Node is the part of the knowledge processor (KP), which contains all the logic and functionality to connect to an SIB listener of an SIB in the Smart Space 135. The Node contains the logic for parsing messages and pointers to subscription handlers between the knowledge processor (KP) and the SIBs 120 and 220 of the Smart Space 135. A node may potentially connect to more than one Smart Space at a time, thus distributing and synchronizing the operations across all connected Smart Spaces. Alternatively a knowledge processors (KP) may contain more than one node.
The basic functionality for manipulating information by a knowledge processor (KP) node is:
Insert: insert information atomically;
Retract: remove information atomically;
Query: synchronously (blocking) query; returns information;
Subscribe: asynchronously (persistent, non-blocking) set up a subscription for a given query;
Unsubscribe: terminate processing of the given subscription.
Connectivity for the knowledge processors (KP) is provided through a set of SIB listeners that provide access via any given specified protocol. Typically TCP/IP is used through the standard sockets mechanism, but a Bluetooth based listener or one that uses HTTP/S may also be used. SIB listeners may provide preprocessing of the incoming messages if necessary; for example with Bluetooth profiles. One or more number of SIB listeners may be provided at any time.
A more detailed description of knowledge processors (KP), Semantic Information Brokers (SIB), and Smart Spaces is provided in the technical paper by Ian Oliver, Jukka Honkola, entitled “Personal Semantic Web Through A Space Based Computing Environment”, in Proceedings: Middleware for the Semantic Web, Second IEEE International Conference on Semantic Computing, Santa Clara, Calif., USA, Aug. 4-7, 2008, which is incorporated herein by reference.
In example embodiments of the invention, the devices may be managed by a Smart Space run-time environment that enables aggregation of user and application context information and scheduling of the Smart Space run-time environment. The example embodiments enable changes to be made to one or more execution contexts. Changes to execution contexts may include starting, executing, scheduling, dispersing, and aggregating of operating system processes or tasks. Code and data dispersion and aggregation may be performed by selective fetching. Selective fetching may be driven by a recovery-conscious scheduler that may be part of the Smart Space scheduler and supported by information provided by the operating system task scheduler. The execution context may be dynamically assigned and triggered by the Smart Space run-time environment and allocated according to the particular Smart Space or operating system task management.
Task/data dispersing and aggregation are described, for example by M. Rabin in his paper “Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance”, Journal of the ACM, Vol. 36(2), pp. 335-348, 1989, which is incorporated herein by reference.
In operation, one or more execution contexts are stored in the first virtual run-time environment 110 in memory 102 resulting from execution in the first virtual run-time environment 110 of program code of an application 104 stored in the first virtual run-time environment 110 in memory 102, in
Returning to the example embodiments of
Step 302: storing one or more execution contexts in a memory of a mobile wireless device resulting from execution in the mobile wireless device of program code of an application stored in the memory;
Step 304: detecting a secure communication link with a stationary wireless device;
Step 306: sharing the state of one or more execution contexts over a communications medium with the stationary wireless device for continued execution-in-place of the application by the stationary wireless device;
Step 308: detecting an external event that will result in closing the secure communication link with the stationary wireless device; and
Step 310: receiving one or more updated or previously transferred execution contexts from the stationary wireless device over the wireless communications medium for continued execution-in-place of the application by the mobile wireless device.
Step 402: receiving one or more execution contexts in a stationary wireless device over a wireless communications medium from a mobile wireless device resulting from execution in the mobile wireless device of program code of an application stored in the mobile wireless device;
Step 404: executing-in-place the application by the stationary wireless device;
Step 406: determining an external event that will result in closing a secure communication link with the stationary wireless device; and
Step 408: sharing one or more execution contexts from the stationary wireless device over the wireless communications medium for continued execution-in-place of the application by the mobile wireless device.
Example embodiments of the invention include a computing environment where device participant has integrated RF based architecture of
Example embodiments of the invention use a code/data grains schema and execution context migration procedure for distributed execution modules, for example as follows:
Thus any part of execution context can be safely suspended (
Example embodiments of the invention may dynamically aggregate a new execution environment from running independent OSs. Having stationary device and a mobile device with running meta-application (Smart Space KPs) (
The end point of the session may be voluntary or involuntary. In first case, user may explicitly pull back meta-application to the mobile device and proceed with a mobile device only. Any volatile multicore session is ended. In the second case, involuntary termination happens, meaning that special procedure may be taken in account for ensuring continuous execution session (involuntary connection close procedures).
Any participant of virtual run-time environment enabled with RF based architecture is used as one block of execution memory, managed by device local pipeline(s), memory management unit (MMU) and Translation lookaside buffer (TLB) unit, which are in charge of the code/data grains fetching, decoding, executing, scheduling, and, dispersing, aggregating. The code/data dispersion and aggregation are performed by means of selective fetching driven by recovery-conscious scheduler and can be also supported from Smart Space/OS by task scheduler. The execution context is dynamically assigned and triggered by virtual run-time environment 110, 210 and allocated according to the particular Smart Space/OS task management.
In
Particular execution modules are fixed size, and are mapped by virtual run-time environments. According to the quality of service (QoS) policies code/data grains that needs to be executed/read/written are marked with service class, mapped with the type (async/sync/Read While Write(RWW)) and are written to or fetched from the execution modules. The size of the grains is chosen in scaled manner. Meaning that, to improve efficient mapping any block of any execution module can be appended to another execution module by means of grains adjustment. Thus, the code/data grains scheme can be implicitly determined either by software, or explicitly by hardware, or mixing both approaches (u-code), implying adjustment given by virtual run-time environment 110, 210 to the local MMU and TLB unit during the header fetch, write-back and memory access.
Virtual run-time environment 110, 210 can imply pattern and produce the necessary mapping by means of code/data importance weight and cost to handle. Thus, code/data grains scheme is kept updated. These features can be provided and guaranteed natively by virtual run-time environment 110, 210 such as Smart Space infrastructure (knowledge processor (KP)) which can be RF based infrastructure. Besides, additional hints can be taken in account. Such hints can be produced by the virtual run-time environment participants (Smart Space Knowledge Processor (KP) and Semantic Information Broker (SIB)) or in particular by information generated by application (Smart Space KP) which is consumer or producer of corresponding code/data. By mean of hints a certain schema queues can be seen. Thus, schema queue management implies the type of the code/data grain suppose to be.
Separate from the lifetime activities of the execution module the housekeeping procedure is defined. It can be undertaken in real-time or in offline mode while system has enough energy and no load. The particular tasks for housekeeping are to maintain consistent code/data grain schemas and to claim unused or potentially leaked memory blocks from faulty execution modules.
The resulting example embodiments of the invention provide demanded execution in Place. The resulting example embodiments of the invention provide Balanced management in the dynamic and constrained environment of the following parameters throughout the functioning of the computing environment:
The example embodiments of the invention result in storing one or more execution contexts in a memory of a first device/mobile wireless device resulting from execution in the first device/mobile wireless device of program code of an application stored in the memory, detecting that a second device/stationary wireless device may be communicated with over a communications medium, sharing the execution context over a communications connection in the communications medium with the second device/stationary wireless device for continued execution-in-place of the application by the second device/stationary wireless device, detecting an external event that will result in closing the communication connection with the stationary wireless device, and receiving updated execution context from the second device/stationary wireless device over the communications connection for continued execution-in-place of the application by the first device/mobile wireless device. The communications medium may be a wireless communications medium or a virtual communications medium. The sharing of the execution context and execution-in-place of the application with the second device/stationary wireless device may be managed by a virtual run-time environment. The sharing of the execution context may be managed by a virtual run-time environment that enables shared execution sessions between the mobile wireless device and the stationary wireless device. The sharing of the execution context with the second device/stationary wireless device may be managed by a virtual run-time environment that enables aggregation of user and application context information. The sharing of the execution context with the second device/stationary wireless device may be managed by a virtual run-time environment that enables scheduling of execution-in-place of the application by both the first device/mobile wireless device the second device/stationary wireless device. The sharing of the execution context with the second device/stationary wireless device may be managed by a virtual run-time environment that enables changes to be made to one or more execution contexts. The sharing of the execution context with the second device/stationary wireless device may be managed by a virtual run-time environment that enables changes to be made to one or more execution contexts, wherein the changes are drawn from the group consisting of changes to starting, executing, scheduling, dispersing, and aggregating of operating system processes or tasks. The sharing of the execution context with the second device/stationary wireless device may managed by a virtual run-time environment that performs code and data dispersion and aggregation by selective fetching driven by a recovery-conscious scheduler. The sharing of the execution context with the second device/stationary wireless device may be managed by a virtual run-time environment that dynamically assigns execution context and allocates the execution context according to operating system task management.
Using the description provided herein, the embodiments may be implemented as a machine, process, or article of manufacture by using standard programming and/or engineering techniques to produce programming software, firmware, hardware or any combination thereof.
Any resulting program(s), having computer-readable program code, may be embodied on one or more computer-usable media such as resident memory devices, smart cards or other removable memory devices, or sharing devices, thereby making a computer program product or article of manufacture according to the embodiments. As such, the terms “article of manufacture” and “computer program product” as used herein are intended to encompass a computer program that is stored permanently or temporarily on any computer-usable medium.
As indicated above, memory/storage devices include, but are not limited to, disks, optical disks, removable memory devices such as smart cards, SIMs, WIMs, semiconductor memories such as RAM, ROM, PROMS, etc. Sharing mediums include, but are not limited to, transmissions via wireless communication networks, the Internet, intranets, telephone/modem-based network communication, hard-wired/cabled communication network, satellite communication, and other stationary or mobile network systems/communication links.
Although specific example embodiments have been disclosed, a person skilled in the art will understand that changes can be made to the specific example embodiments without departing from the spirit and scope of the invention.