Not Applicable.
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing components.
Various different network architectures can be utilized to permit computer systems to interact with one another. Network architectures can be classified to some extent according to the functional relationships that exist between computer systems of the network architecture. For example, network architectures can be classified as client-server architectures, peer-to-peer architectures, etc.
A client-server architecture separates client and server functionalities between different computer systems. The purpose of different client-server architectures may vary and/or be applied in a variety of ways. However generally, the relationships between computer systems within a client-server architecture are very similar across all client-server architectures. Typically a plurality of client computer systems is configured to send requests (e.g., for data) to a server computer system (or in some environments a server farm). The server computer system (or sever farm) receives and processes requests (e.g., accessing requested data) and sends an appropriate response (e.g., requested data) back to a client.
One common client-server relationship is that of the World Wide Web (“WWW”). Web servers (the servers) maintain and control access to content (e.g., Web pages) that can be requested from Web browsers (the clients) over the Internet.
Client-server architectures are advantageous for a number of reasons, due primarily to data being stored at a central location. For example, since data is stored at a central location security and access control with respect to the data can be more easily implemented. Further, since there is a clear divide between the functionality of a client and a server, a client can be easily upgrade without impacting operation of the server and vice versa.
Unfortunately, client-server architectures also have some number of disadvantages. One primary disadvantage is a lack of robustness, which also results from data being stored in a central location. That is, if a server malfunctions, there may be no way to fulfill client requests. Servers can also suffer from traffic congestion, when a number of received requests is so large that it overloads server resources. Further, the resources for establishing a server in many environments typically exceeds the resources of most home computer systems, thereby preventing many users from being able to create a server.
Peer-to-peer network architectures do not have the notion of servers and clients. Each computer system in a peer-to-peer network is viewed as an equal peer node. Thus, peer-to-peer network architectures rely on the computing power and bandwidth of all the computer systems on the network, as opposed to concentrating resources in a small number of servers (or even in a single server). Peer-to-peer network architectures are often used to connect computer systems together to form ad hoc networks, such as, for example, to share files or exchange real-time data.
Peer-to-peer network architectures are advantageous for a number of reasons, primarily due to resources being shared among computer systems. For example, when a new computer system joins a peer-to-peer network, the resource capacity of the network is increased, since the resources of the joining computer are available for use by other computer systems on the peer-to-peer network. In contrast, resource capacity in a client-server network does not increase when a new client sends a request to a server. Further, since resources are shared among computer systems, peer-to-peer networks are typically more robust than client-server networks. That is, if one computer system with access to data fails, there is some likelihood that one or more other computer systems also have access to the same data.
However, peer-to-peer networks also have a variety of disadvantages. Since each computer system is viewed equally, it can be difficult for any one computer system control the behavior of other computer systems, such as, for example, to implement access control or other security measures. This lack of central control makes peer-to-peer networks significantly more vulnerable to malicious attacks (e.g., poisoning attacks, polluting attacks, denial-of-service attacks, spamming etc.) than client-server networks.
Further there is essentially no restriction on when a computer system can join or leave a peer-to-peer network. Thus, to maintain robustness with respect to requestable data, the same portion of data may be transferred from computer system to computer system across a network (e.g., the Internet) multiple times. For example, when a computer system leaves a peer-to-peer network it can transfer requestable data to another computer system so that the requestable data remains available. Accordingly, each time a computer system leaves a peer-to-peer network, some portion of data is (potentially for a second, third, etc., time) transferred to a remaining computer system.
Enterprise software has typically been developed for use in client-server network architectures (and thus suffers from the problems inherent to client-server architectures). Enterprise software is often proprietary software used to automate business processes, such as, for example, accounting, sales, etc. As such, the companies that develop enterprise software typically desire the enterprise software to be controlled for use in their corporate environment. Enterprise software is frequently very complex and not well adapted for use outside of the intended operating environment. Accordingly, enterprise software is often prevented from operating in a Web based environment and thus, from taking advantage of the simplicity and dynamisms of the Worldwide Web (“WWW”).
Somewhat conversely, Web based applications can view the entire Internet as a single (but uncontrolled) data center and can easily access data from locations through out the WWW. Based on accessed data, Web based applications can easily be remixed and run with new settings to facilitate changing developer desires. However, since data is made accessible to and from a variety of potentially uncontrolled locations, rapidly developed and remixed Web based applications (to some extent suffer from the problems inherent to peer-to-peer architectures and) often have an undesirable low level of associated security and reliability.
The present invention extends to methods, systems, and computer program products for distributed behavior controlled execution of modeled applications. Embodiments of the invention include a system configured to execute distributed software applications. The system includes a plurality of processing systems. Configurable distributed logic for executing distributed software applications is distributed across the plurality of processing systems.
A data stored is connected to and shared among the distributed logic. The data store includes read-only data and read-write data. The read-only data prescribes the behavior of the distributed logic when executing a distributed software application. The plurality of processing systems use the read-write data to store and share distributed software application data when executing a distributed software application.
A message infrastructure is connected to and shared among the distributed logic. The message infrastructure is configured to exchange messages among processing systems to a) discover the presence of configurable distributed logic at processing systems for use in executing distributed software applications and b) coordinate processing systems to implement the behavior prescribed in the read-only data when executing a distributed software application.
In some embodiments, a distributed processing system executes a model-based distributed software application. The distributed processing system includes a group of cooperative executive services collectively representing a distributed application runtime. An executive service of the distribute runtime receives a command to execute a model-based software application stored in a read-only portion of a common data repository. The executive service discovers other executive services of the distributed runtime via a specified kind of messaging infrastructure identified as service bus. Service bus allows executive services to signal each other. The executive service and the other executive services cooperatively group together to provide distributed logic for executing the model-based software application.
The group of executive services coordinates via the service bus to execute the model-based software application in accordance with the policies stored in the read-only portion of the common data repository. Executing the model-based software application includes: a) using the read-write portion of the common data repository to reflect the state of the model-based software application and b) using the read-write portion of the common data repository to reflect operational data corresponding to the model-based software application.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.
In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
The present invention extends to methods, systems, and computer program products for distributed behavior controlled execution of modeled applications. Embodiments of the invention include a system configured to execute distributed software applications. The system includes a plurality of processing systems. Configurable distributed logic for executing distributed software applications is distributed across the plurality of processing systems.
A data stored is connected to and shared among the distributed logic. The data store includes read-only data and read-write data. The read-only data prescribes the behavior of the distributed logic when executing a distributed software application. The plurality of processing systems use the read-write data to store and share distributed software application data when executing a distributed software application.
A message infrastructure is connected to and shared among the distributed logic. The message infrastructure is configured to exchange messages among processing systems to a) discover the presence of configurable distributed logic at processing systems for use in executing distributed software applications and b) coordinate processing systems to implement the behavior prescribed in the read-only data when executing a distributed software application.
In some embodiments, a distributed processing system executes a model-based distributed software application. The distributed processing system includes a group of cooperative executive services collectively representing a distributed application runtime. An executive service of the distribute runtime receives a command to execute a model-based software application stored in a read-only portion of a common data repository. The executive service discovers other executive services of the distributed runtime via a specified kind of messaging infrastructure identified as service bus. Service bus allows executive services to signal each other. The executive service and the other executive services cooperatively group together to provide distributed logic for executing the model-based software application.
The group of executive services coordinates via the service bus to execute the model-based software application in accordance with the policies stored in the read-only portion of the common data repository. Executing the model-based software application includes: a) using the read-write portion of the common data repository to reflect the state of the model-based software application and b) using the read-write portion of the common data repository to reflect operational data corresponding to the model-based software application.
Embodiments of the present invention may comprise a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below. Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, computer-readable media can comprise physical (or recordable type) computer-readable storage media, such as, RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
In this description and in the following claims, a “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, by way of example, and not limitation, computer-readable media can also comprise a network or data links which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
Processing systems 104, 105, and 106 include logic 104L, 105L, and 106L respectively. Collectively logic 104L, 105L, and 106L represent distributed logic 107. Distributed logic 107 is configurable for executing distributed software applications that are distributed across processing systems 104, 105, and 106.
Data store 101 is connected to and shared among distributed logic 107. As depicted, data store 101 includes read-only data 102 and read-write data 103. Read-only data 102 may be data that is initially written to data store (write once) and then is read-only after the initial write. Read-only data can prescribe the behavior of distributed logic 107 when executing distributed software applications. Processing systems 104, 105, and 106 (as well as contained logic 104L, 105L and 106L respectively) can use read-write data 103 to store and share distributed software application data when executing a distributed software application.
A series of three periods (an ellipsis) to the left of processing system 104 and to the right of processing system 106 represents that other processing systems can be included in computer architecture 100. These other processing systems can contribute logic to distributed logic 107.
Message infrastructure 108 is connected to and shared among distributed logic 107. Message infrastructure 108 is configured to exchange messages among processing systems 104, 105, and 106. Message infrastructure 108 can be used to discover the presence of configurable distributed logic, such as, for example, logic 104L, 105L, and 106L, at processing systems 104, 105, and 106 for use in executing distributed applications. Message infrastructure 108 can also be used to coordinate processing systems 104, 105, and 106 to implement the behavior prescribed in read-only data 102 when executing a distributed application. In some embodiments, message infrastructure 108 is a peer-to-peer discovery and messaging (signaling) infrastructure.
Accordingly, embodiments of the invention facilitate the interoperation of a central data store along with various peer-to-peer functionalities. Thus, distributed applications can be executed in an environment that utilizes advantages of both a central data store and peer-to-peer messaging. The read-only portion of a centralized data store can be used to provide some behavior control over various processing systems during execution of a distributed software application.
Executive services 204, 205, and 206 can be dispersed across the network. Executive services 204, 205, and 206 are responsible for running and managing distributed applications. A series of three periods (an ellipsis) to the left of executive service 204 and to the right of executive service 206 represents that other executive services can be included in computer architecture 200.
Repository 201 includes read-only (or write once) data 202 and read-write data 203. Read-only data 202 further includes application models 211 and policies 212. Application models 211 and policies 212 are shared among executive services, such as, for example, executive services 204, 205, and 206. Policies 212 are declarative statements defining the collective behavior of executive services. For example, a policy can define a maximum number of messages (e.g., twenty) that are permitted to be sent from an executive service per second.
Accordingly, each executive service in computer architecture 200 interprets and complies with policies 212. Executive services can be permitted some freedom in local behavior as defined in policies 212. For example, executive services can be permitted to perform local error recovery, such as, for example, restarting a process. However, other more serious and/or complex errors, such as, for example, disk failure, may impact multiple executive services for appropriate recovery (e.g., redeployment of application components). Thus, recovery from these more serious and/or complex errors can include collective behavior of a number of executive services. Accordingly, an individual executive service can be prohibited from initiating recovery for these more serious and/or complex errors.
Application models 211 include application models that can be consumed by a collective of executive services to implement a distributed application. For example, an application model can be a declarative program run and managed by a collection of executive services.
Read-write data 203 further includes application state 213 and operational data 214. Application state 213 can reflect the state of distributed application (e.g., an application model form application models 211), such as, for example, configured, deployed, running, etc. Operational data 214 can include information, such as, for example, run time metrics, used to determine compliance with policies 212. For example, operational data 214 can include an indication of how many messages an executive service is sending per second. An executive service can write operational data into operational data 214 based on runtime behavior of distributed applications.
Executive services can use service bus 208 (e.g., a peer-to-peer fabric, such as, for example, a distributed publish/subscribe infrastructure) to discover each other and implement cooperative behavior. Service bus 208 can include a transitively federated namespace service (permitting executive services to federate with one another) and a message bus. For example, through communication via service bus 208, executive services 204, 205, and 206 can collectively form a cluster to host a Web site as indicated in a model of a distributed application (e.g., contained in application models 211).
Other cooperative behavior can be implemented when a catastrophic failure of one executive service occurs. One or more healthy “buddy” executive services can signal one another via service bus 208 and select another executive service (e.g., through a vote) to take over and recover from the error.
As depicted, executive services 204, 205, and 206 include controllers 204C, 205C, and 206C respectively. Generally, controllers interpret policies (e.g., polices 212) and enforce cooperative behavior among executive services. For example, controllers can enforce looking after “buddy” executive services and enforce suppressing negative local behavior, such as, for example, attempting to shut down a local service (e.g., Internet Information Services (“IIS”) or SQL server) that contains part of a running distributed application.
Thus, embodiments of the invention include environments where every executive service has the same view on policies and application models and can discover and signal other executive services. Accordingly, it is possible to interact with one executive service to operate a collective group of (or all of the) executive services in an environment, such as, for example, computer architecture 200.
Method 300 includes an act of an executive service of a distributed run-time receiving a command to execute a model-based software application stored in the read-only portion of a common data repository (act 301). For example, executive service 204 can receive execute command 221 to execute application 211A.
Method 300 includes an act of executive service discovering other executive services of the distributed run-time via the service bus (act 302). For example, executive service 204 can discover executive services 205 and 206 though message exchanges 222 and 223 respectively, via service bus 208.
Method 300 includes an act of the executive service and the other executive services cooperatively grouping together to provide distributed logic for executing the model-based software application (act 303). For example, executive service 204 and executive services 205 and 206 can cooperatively group together (e.g., in accordance with policies 212) to provide distributed logic for executing application 211A.
Method 300 includes an act of the group of executive services coordinating via the service bus to execute the model-based software application in accordance with the policies stored in the read-only portion of the common data repository (act 304). For example, the group of executive services 204, 205, and 206 can coordinate via service bus 208 to execute application 211A in accordance with polices 212.
Coordinating via the service bus to execute the model-based software application in accordance with the policies includes an act of using the read-write portion of the common data repository to reflect the state of the model-based software application (act 305). For example, executive services 204, 205, and 206 can write data to and read data from application state 213 to reflect the state (e.g., configured, deployed, running, etc.) of application 211.
Coordinating via the service bus to execute the model-based software application in accordance with the policies includes an act of using the read-write portion of the common data repository to reflect operational data corresponding to the model-based software application (act 306). For example, executive services 204, 205, and 206 can write data to and read data from operational data 214 to reflect runtime metrics (e.g., average response time, messages per second, etc.) corresponding to application 211. The run time metrics can be used to determine compliance with polices 212.
Thus, embodiments of the invention can be used to form a policy-driven collective of nodes forming a distributed, decentralized run-time for model-based applications. Controllers at each node can enforce policies and coordinate with other nodes. Utilizing a cooperating collective of nodes that comply with centralized polices and execute applications over a peer-to-peer fabric permits a distributed application runtime to accommodate distribution and decentralization on a large scale. For example, a large scale WAN or even the Internet can be viewed as a data center.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Number | Name | Date | Kind |
---|---|---|---|
4751635 | Kret | Jun 1988 | A |
5423003 | Berteau | Jun 1995 | A |
5602991 | Berteau | Feb 1997 | A |
5655081 | Bonnell | Aug 1997 | A |
5764241 | Elliott | Jun 1998 | A |
5809266 | Touma | Sep 1998 | A |
5893083 | Eshghi | Apr 1999 | A |
5913062 | Vrvilo et al. | Jun 1999 | A |
5937388 | Davis et al. | Aug 1999 | A |
5958010 | Agarwal | Sep 1999 | A |
6005849 | Roach et al. | Dec 1999 | A |
6026404 | Adunuthula | Feb 2000 | A |
6055363 | Beals et al. | Apr 2000 | A |
6070190 | Reps | May 2000 | A |
6167538 | Neufeld et al. | Dec 2000 | A |
6225995 | Jacobs | May 2001 | B1 |
6247056 | Chou | Jun 2001 | B1 |
6263339 | Hirsch | Jul 2001 | B1 |
6279009 | Smirnov et al. | Aug 2001 | B1 |
6330717 | Raverdy | Dec 2001 | B1 |
6334114 | Jacobs | Dec 2001 | B1 |
6336217 | D'Anjou et al. | Jan 2002 | B1 |
6415297 | Leymann et al. | Jul 2002 | B1 |
6477665 | Bowman-Amuah | Nov 2002 | B1 |
6618719 | Andrei | Sep 2003 | B1 |
6640241 | Ozzie et al. | Oct 2003 | B1 |
6654783 | Hubbard | Nov 2003 | B1 |
6662205 | Bereiter | Dec 2003 | B1 |
6697877 | Martin | Feb 2004 | B1 |
6710786 | Jacobs | Mar 2004 | B1 |
6715145 | Bowman-Amuah | Mar 2004 | B1 |
6718535 | Underwood | Apr 2004 | B1 |
6801818 | Kopcha | Oct 2004 | B2 |
6847970 | Keller et al. | Jan 2005 | B2 |
6854069 | Kampe | Feb 2005 | B2 |
6886024 | Fujita | Apr 2005 | B1 |
6907395 | Hunt et al. | Jun 2005 | B1 |
6931644 | Riosa | Aug 2005 | B2 |
6934702 | Faybishenko et al. | Aug 2005 | B2 |
6941341 | Logston | Sep 2005 | B2 |
7051098 | Masters | May 2006 | B2 |
7055143 | Ringseth et al. | May 2006 | B2 |
7065579 | Traversat et al. | Jun 2006 | B2 |
7072807 | Brown | Jul 2006 | B2 |
7072934 | Helgeson | Jul 2006 | B2 |
7079010 | Champlin | Jul 2006 | B2 |
7085837 | Kimbrel | Aug 2006 | B2 |
7096258 | Hunt et al. | Aug 2006 | B2 |
7103874 | McCollum | Sep 2006 | B2 |
7130881 | Volkov et al. | Oct 2006 | B2 |
7150015 | Pace et al. | Dec 2006 | B2 |
7155380 | Hunt | Dec 2006 | B2 |
7155466 | Rodriguez et al. | Dec 2006 | B2 |
7162509 | Brown et al. | Jan 2007 | B2 |
7168077 | Kim | Jan 2007 | B2 |
7174359 | Hamilton, II et al. | Feb 2007 | B1 |
7178129 | Katz | Feb 2007 | B2 |
7200530 | Brown | Apr 2007 | B2 |
7219351 | Bussler et al. | May 2007 | B2 |
7263689 | Edwards et al. | Aug 2007 | B1 |
7379999 | Zhou et al. | May 2008 | B1 |
7512707 | Manapragada | Mar 2009 | B1 |
7796520 | Poustchi et al. | Sep 2010 | B2 |
7797289 | Chan et al. | Sep 2010 | B2 |
20020035593 | Salim et al. | Mar 2002 | A1 |
20020038217 | Young | Mar 2002 | A1 |
20020099818 | Russell | Jul 2002 | A1 |
20020111841 | Leymann | Aug 2002 | A1 |
20020120917 | Abrari et al. | Aug 2002 | A1 |
20020133504 | Vlahos et al. | Sep 2002 | A1 |
20020135611 | Deosaran | Sep 2002 | A1 |
20020147515 | Fava et al. | Oct 2002 | A1 |
20020147962 | Hatanaka | Oct 2002 | A1 |
20020198734 | Greene et al. | Dec 2002 | A1 |
20030005411 | Gerken | Jan 2003 | A1 |
20030061342 | Abdelhadi | Mar 2003 | A1 |
20030084156 | Graupner et al. | May 2003 | A1 |
20030135384 | Nguyen | Jul 2003 | A1 |
20030149685 | Trossman et al. | Aug 2003 | A1 |
20030195763 | Gulcu | Oct 2003 | A1 |
20040034850 | Burkhardt | Feb 2004 | A1 |
20040046785 | Keller | Mar 2004 | A1 |
20040078461 | Bendich et al. | Apr 2004 | A1 |
20040088350 | Early | May 2004 | A1 |
20040102926 | Adendorff | May 2004 | A1 |
20040148184 | Sadiq | Jul 2004 | A1 |
20040162901 | Mangipudi | Aug 2004 | A1 |
20040249972 | White et al. | Dec 2004 | A1 |
20050005200 | Matena et al. | Jan 2005 | A1 |
20050011214 | Schwetfuehrer | Feb 2005 | A1 |
20050055692 | Lupini et al. | Mar 2005 | A1 |
20050071737 | Adendorff | Mar 2005 | A1 |
20050074003 | Ball et al. | Apr 2005 | A1 |
20050091227 | McCollum et al. | Apr 2005 | A1 |
20050120106 | Albertao | Jun 2005 | A1 |
20050125212 | Hunt et al. | Jun 2005 | A1 |
20050132041 | Kundu | Jun 2005 | A1 |
20050137839 | Mansurov | Jun 2005 | A1 |
20050155042 | Kolb et al. | Jul 2005 | A1 |
20050165906 | Deo et al. | Jul 2005 | A1 |
20050188075 | Dias | Aug 2005 | A1 |
20050216831 | Guzik | Sep 2005 | A1 |
20050261875 | Shrivastava | Nov 2005 | A1 |
20050268307 | Gates et al. | Dec 2005 | A1 |
20050278702 | Koyfman | Dec 2005 | A1 |
20050283518 | Sargent | Dec 2005 | A1 |
20060010142 | Kim | Jan 2006 | A1 |
20060010164 | Netz | Jan 2006 | A1 |
20060013252 | Smith | Jan 2006 | A1 |
20060036743 | Deng | Feb 2006 | A1 |
20060064460 | Sugawara | Mar 2006 | A1 |
20060070066 | Grobman | Mar 2006 | A1 |
20060070086 | Wang | Mar 2006 | A1 |
20060074730 | Shukla et al. | Apr 2006 | A1 |
20060074734 | Shukla | Apr 2006 | A1 |
20060095443 | Kumar | May 2006 | A1 |
20060123389 | Kolawa et al. | Jun 2006 | A1 |
20060123412 | Hunt | Jun 2006 | A1 |
20060155738 | Baldwin | Jul 2006 | A1 |
20060173906 | Chu et al. | Aug 2006 | A1 |
20060206537 | Chiang | Sep 2006 | A1 |
20060230314 | Sanjar | Oct 2006 | A1 |
20060235859 | Hardwick | Oct 2006 | A1 |
20060236254 | Mateescu | Oct 2006 | A1 |
20060265231 | Fusaro et al. | Nov 2006 | A1 |
20060277323 | Joublin | Dec 2006 | A1 |
20060277437 | Ohtsuka | Dec 2006 | A1 |
20060294506 | Dengler | Dec 2006 | A1 |
20070005283 | Blouin | Jan 2007 | A1 |
20070005299 | Haggerty | Jan 2007 | A1 |
20070006122 | Bailey et al. | Jan 2007 | A1 |
20070016615 | Mohan et al. | Jan 2007 | A1 |
20070033088 | Aigner et al. | Feb 2007 | A1 |
20070050237 | Tien | Mar 2007 | A1 |
20070050483 | Bauer et al. | Mar 2007 | A1 |
20070061776 | Ryan et al. | Mar 2007 | A1 |
20070067266 | Lomet | Mar 2007 | A1 |
20070088724 | Demiroski | Apr 2007 | A1 |
20070089117 | Samson | Apr 2007 | A1 |
20070094350 | Moore | Apr 2007 | A1 |
20070112847 | Dublish | May 2007 | A1 |
20070174228 | Folting | Jul 2007 | A1 |
20070174815 | Chrysanthakopoulos et al. | Jul 2007 | A1 |
20070179823 | Bhaskaran | Aug 2007 | A1 |
20070208606 | MacKay | Sep 2007 | A1 |
20070220177 | Kothari | Sep 2007 | A1 |
20070233879 | Woods et al. | Oct 2007 | A1 |
20070244904 | Durski | Oct 2007 | A1 |
20070245004 | Chess et al. | Oct 2007 | A1 |
20070277109 | Chen | Nov 2007 | A1 |
20080005729 | Harvey et al. | Jan 2008 | A1 |
20080010631 | Harvey et al. | Jan 2008 | A1 |
20080209414 | Stein | Aug 2008 | A1 |
20080244423 | Jensen-Pistorius | Oct 2008 | A1 |
20090049165 | Long et al. | Feb 2009 | A1 |
20090187662 | Manapragada et al. | Jul 2009 | A1 |
20090197662 | Manapragada | Aug 2009 | A1 |
20090265458 | Baker | Oct 2009 | A1 |
20100005527 | Jeon | Jan 2010 | A1 |
Number | Date | Country |
---|---|---|
1770510 | Apr 2007 | EP |
0124003 | Apr 2001 | WO |
WO 0227426 | Apr 2002 | WO |
WO9227426 | Apr 2002 | WO |
2007072501 | Jun 2007 | WO |
Number | Date | Country | |
---|---|---|---|
20080270411 A1 | Oct 2008 | US |