Search within the title, abstract, claims, or full patent document: You can restrict your search to a specific field using field names.
Use TI= to search in the title, AB= for the abstract, CL= for the claims, or TAC= for all three. For example, TI=(safety belt).
Search by Cooperative Patent Classifications (CPCs): These are commonly used to represent ideas in place of keywords, and can also be entered in a search term box. If you're searching forseat belts, you could also search for B60R22/00 to retrieve documents that mention safety belts or body harnesses. CPC=B60R22 will match documents with exactly this CPC, CPC=B60R22/low matches documents with this CPC or a child classification of this CPC.
Learn MoreKeywords and boolean syntax (USPTO or EPO format): seat belt searches these two words, or their plurals and close synonyms. "seat belt" searches this exact phrase, in order. -seat -belt searches for documents not containing either word.
For searches using boolean logic, the default operator is AND with left associativity. Note: this means safety OR seat belt is searched as (safety OR seat) AND belt. Each word automatically includes plurals and close synonyms. Adjacent words that are implicitly ANDed together, such as (safety belt), are treated as a phrase when generating synonyms.
Learn MoreChemistry searches match terms (trade names, IUPAC names, etc. extracted from the entire document, and processed from .MOL files.)
Substructure (use SSS=) and similarity (use ~) searches are limited to one per search at the top-level AND condition. Exact searches can be used multiple times throughout the search query.
Searching by SMILES or InChi key requires no special syntax. To search by SMARTS, use SMARTS=.
To search for multiple molecules, select "Batch" in the "Type" menu. Enter multiple molecules separated by whitespace or by comma.
Learn MoreSearch specific patents by importing a CSV or list of patent publication or application numbers.
Modular Computing Environments
US20100091449A1
United States
- Inventor
Jimmy Clidaras William Whitted William Hamburgen Montgomery Sykora Winnie Leung Gerald Aigner Donald L. Beaty - Current Assignee
- Individual
Description
translated from
-
[0001] This description relates to modular computing environments. -
[0002] Computers have become widely adopted for various applications, for both personal and corporate uses. Some computers operate as stand-alone data-processing equipment, with perhaps a peripheral such as a printer and a display device. Although useful for many purposes, additional features and benefits may be achieved if multiple computers are networked together to share information and resources. -
[0003] A computer network may be formed by connecting two or more computing devices with an information channel. One type of network is a local area network (LAN). A typical residential LAN, for example, may connect two computers to a printer. A typical corporate LAN, for example, may allow many users to share resources and large amounts of information, including databases and application software. -
[0004] A second type of network is a wide area network (WAN). An example of a WAN is the Internet. WANs such as the Internet allow many computer devices to communicate messages and share information. When multiple LANs are interoperable with one or more WANs, opportunities for computing devices to communicate and share information greatly expand. -
[0005] From the perspective of an individual computing device that is connected to a network, users may direct the communication of information over a network with a user interface generated by a web browser application. A web browser is typically configured to enable the user to access web sites on the Internet or the World Wide Web. Web browsers allow users to easily send and receive messages over a network in packets of information. Such packets of information may include the address of a search engine website, such as www.dogpile.com, for example. -
[0006] The popularity and simplicity of sharing information over networks, such as the Internet, has resulted in demand for data processing and/or storage capacity to support high network traffic volume. One mechanism to address this need may be referred to as a data center. In the context of the Internet, a data center may provide one or more of processing, storage, and support functions that improve performance or enhance the utility of the Internet. Data centers may also be deployed in other contexts. Financial institutions, for example, may employ one or more data centers to store financial account and transaction information. -
[0007] A data center may provide data processing and/or storage capacity. In operation, a data center may be connected to a network, and may receive and respond to various requests from the network to retrieve, process, and/or store data. In addition to extensive data processing and data storage capabilities, data centers typically support high speed data transfer and routing capabilities. To meet future network demands, data center capacity may continue to expand. -
[0008] A computer system may include a connecting hub having a plurality of docking regions and be configured to provide to each docking region electrical power, a data network interface, a cooling fluid supply and a cooling fluid return; and a plurality of shipping containers that each encloses a modular computing environment that adds a predetermined amount of computing power to the system. Each shipping container may include a) a plurality of processing units coupled to the data network interface, each of which include a microprocessor; b) a heat exchanger configured to remove heat generated by the plurality of processing units by circulating cooling fluid from the supply through the heat exchanger and discharging it into the return; and c) docking members configured to releasably couple to the connecting hub at one of the docking regions to receive electrical power, connect to the data network interface, and receive and discharge cooling fluid. -
[0009] In some implementations, each processing unit may further include at least one storage device. The docking members may include quick-connect docking members. The connecting hub may include a spine; the connecting hub may include a ring. -
[0010] In some implementations, a modular data center includes a connecting hub and a plurality of containers. The connecting hub may have a plurality of docking regions and may be configured to provide to each docking region electrical power, a data network interface, a cooling fluid supply and a cooling fluid return. Each container may enclose a modular computing environment having a plurality of computing devices that collectively add a large, predetermined amount of computing power to the modular data center. Each container may further have a) a first heat exchange circuit configured to transfer heat from the computing devices to a heat exchanger; b) a second heat exchange circuit comprising the heat exchanger, the cooling fluid supply and cooling fluid return, the second heat exchange circuit being configured to transfer heat from the heat exchanger inside of the container to a system outside of the container via cooling fluid in the cooling fluid supply and cooling fluid return; and c) docking members that releasably connect to the spine at one of the plurality of docking regions to receive electrical power, connect to the data network interface, receive cooling fluid from the cooling fluid supply, and discharge return cooling fluid to the cooling fluid return. -
[0011] In some implementations, each modular computing environment includes a) a plurality of microprocessor boards that receive power from the connecting hub and receive data from a network coupled to the data network interface, process the received data and transmit the processed data to the network via the data network interface; b) a ventilation system that draws air from a cold air plenum adjacent to the plurality of racks, across the plurality of microprocessor boards, and into a warm air plenum. The heat exchanger may cool air from the warm air plenum and discharge the cooled air into the cold air plenum. -
[0012] In some implementations, the modular computing environment may be configured to accommodate human occupancy. The modular computing environment may include a fire and smoke detection system and a fire suppression system. The modular computing environment may include an internal walkway and a means for ingress and egress at one end of the walkway. The internal walkway may be disposed in the cold air plenum. -
[0013] In some implementations, the ventilation system may include a first set of fans and a second set of fans. Each fan in the first set may be disposed on one of the plurality of microprocessor boards, and each fan in the second set may be disposed adjacent to the heat exchanger. Adjacent fans in the second set may be supplied by electrical power from different electrical circuits. -
[0014] In some implementations, the modular data center further includes a duct disposed between the heat exchanger and at least a first fan and a second fan in the second set. The duct may fluidly couple a region adjacent to the first fan and a region adjacent to the second fan. The plurality of microprocessor boards may be disposed in racks that are suspended from a ceiling of a corresponding container. -
[0015] In some implementations, at least one of the plurality of containers may be stacked on top of another one of the plurality of containers. The modular data center may further include a facility-level cooling system that is disposed in the second heat exchange circuit, coupled to the cooling fluid supply and cooling fluid return. The facility-level cooling system may be configured to remove heat from cooling fluid in the cooling fluid return. -
[0016] In some implementations, each container is sealed against environmental elements of wind and moisture. The modular data center may further include a normally sealed drain configured to open when in contact with an appreciable amount of liquid. In some implementations, at least two of the plurality of containers may be standard size shipping containers. The standard size may be a 1AAA shipping container. -
[0017] In some implementations, a method of deploying a modular data center includes a) providing a cooling system configured to provide cooling fluid to various cooling devices, receive return cooling fluid from the various cooling devices and remove heat from the received return cooling fluid; b) providing an electrical power source; c) providing a data communication interface; d) routing electrical power from the electrical power source, a connection to the data communication interface, and a cooling fluid supply and cooling fluid return from the cooling system to a plurality of docking regions that each have stubs that are configured to couple the electrical power, cooling fluid supply, cooling fluid return and data communication interface connection to a modular computing environment; e) providing modular computing environments at least two of the plurality of docking regions, each modular computing environment configured to incrementally add computing power to a data center and including a plurality of computing resources and integrated cooling devices; and f) coupling each self contained computing environment at a corresponding docking region to the stubs to provide electrical power, cooling fluid supply and cooling fluid return, and connection to the data communication interface to the modular computing environment. -
[0018] In some implementations, a method of processing data includes transmitting a request for data to a system and receiving data in response to the request. The system may include a) a connecting hub having a plurality of docking regions and configured to provide to each docking region electrical power, a data network interface, a cooling fluid supply and a cooling fluid return; and b) a plurality of shipping containers. Each shipping container may enclose a modular computing environment that adds a replacement amount of computing power to the computer system. Each shipping container may also have 1) a plurality of processing units that are coupled to the data network interface; 2) a heat exchanger configured to remove heat generated by the plurality of processing units from the shipping container by circulating cooling fluid from the cooling fluid supply through the heat exchanger and discharging heated cooling fluid into the cooling fluid return; and 3) docking members configured to releasably connect to the connecting hub at one of the plurality of docking regions to receive electrical power, connect to the data network interface, receive cooling fluid from the cooling fluid supply, and discharge return cooling fluid to the cooling fluid return. -
[0019] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings, and from the claims. -
[0020] FIG. 1 is a perspective diagram of an example modular computing environment. -
[0021] FIG. 2 is perspective diagram of an example cooling system that may be included in the modular computing environment that is shown inFIG. 1 . -
[0022] FIG. 3 is a cross-section of the example modular computing environment that is shown inFIG. 1 . -
[0023] FIG. 4 is a block diagram showing example thermal circuits that may exist in a modular data center. -
[0024] FIG. 5 is a another block diagram showing example thermal circuits that may exist in a modular computing environment. -
[0025] FIG. 6 provides a front view of an example rack. -
[0026] FIG. 7 provides a rear view of an example rack. -
[0027] FIG. 8 is a block diagram of an example processing board that may be included in a modular computing environment. -
[0028] FIG. 9 is perspective diagram of an example modular data center constructed with several modular computing environments. -
[0029] FIG. 10 is a perspective diagram of another example modular data center constructed with several modular computing environments. -
[0030] FIG. 11 is a block diagram of an example facility-level electrical distribution system for a data center. -
[0031] FIG. 12 is a block diagram of an example information provider, according to some implementations. -
[0032] FIG. 13 is a block diagram illustrating how portions of an information provider may be implemented using a modular data center. -
[0033] Like reference symbols in the various drawings indicate like elements. -
[0034] FIG. 1 is a perspective diagram of an example modular computing environment that can be configured to add computing power to a data center or other large computing system. The modular computing environment may include a large number of processing devices for executing computer program instructions and processing data and a large data storage capacity for storing and retrieving data. Each modular computing environment may provide a large, predetermined amount of computing power (e.g., 2000 microprocessors and 50 terabytes of storage). In operation, the modular computing environment may be connected to a network, and may receive and respond to various requests from the network to retrieve data, process data or store data. In some implementations, more than one modular computing environment may be combined to form a massively parallel data center, and the massively parallel data center may be replicated at various physical locations. As used in this description, “massively parallel” refers to a distributed computer system having many individual nodes, each of which may be essentially an individual computer having, in some implementations, a processor, memory, and a storage device. -
[0035] The many individual nodes of the computer system may be linked together by a network to allow nodes to communicate with each other and to communicate with networks and devices external to the computer system. In some implementations, each node of the massively parallel system may be employed to execute a small part of a larger program, task or operation. -
[0036] As one example application of a data center or other massively parallel computer system, a financial institution may employ a number of data centers at different physical locations to store customers' financial account and transaction information. When a customer of the financial institution makes a withdrawal or deposit from a teller station, a computer programming running at the teller station may receive input from the teller identifying the customer's account and specifying the type and amount of the transaction; the computer program may then send information to one or more data centers to cause the customer's account to be adjusted to reflect the withdrawal or deposit. Because the data corresponding to the customer's account may be replicated in multiple physical locations, multiple data centers may be involved in the transaction. -
[0037] At substantially the same time the first customer is making a withdrawal or deposit from a teller station, a second customer may be initiating online a transfer of funds or a payment of a bill from his or her home computer. A computer program running on a web server that is accessible from the second customer's home computer may also cause the second customer's account information to be updated at multiple data centers; these data centers may be the same or different data centers than those involved in the transaction of the customer making the withdrawal or deposit from the teller station. -
[0038] Many other financial transactions involving other customers of the financial institution may take place substantially simultaneously, from various computer terminals within different physical offices of the financial institution and from various other computer terminals that access the financial institution's network from the outside (e.g., home or office computer terminals of customers accessing the financial institution's services via the internet). Accordingly, the data centers may be required to process in parallel a large number of transactions in a short amount of time. Such a requirement may translate into a need for a massively parallel computing environment having a large number of processors to execute code, a large storage capacity, and a high-bandwidth network interface. -
[0039] As another example application, an online information provider that supplies content and services (such as a search engine function) to many users substantially simultaneously may employ a number of data centers at different physical locations to store the supplied content and data needed to provide the search engine service. Some of the supplied content may be physically stored by the information provider's computing system; other data that may be identified in response to a user's invocation of the search engine function may be indexed by and in the information provider's computing system. In particular, various computer programs running on the information provider's computer system may automatically navigate or “crawl” networks such as the Internet to identify and index information that has not yet been indexed or that has been updated since last being indexed. The indexing process may involve temporarily retrieving the information, parsing and analyzing it to identify a theme or topic, and storing a corresponding source identifier of the information based on the theme or topic in an information retrieval tool such as a database or hash table. -
[0040] An online information provider may be required to handle a very large volume of simultaneous data traffic. For example, the information provider's computing system may receive numerous requests at approximately the same time from computer terminals of users attempting to employ the information to locate sources of information corresponding to particular topics. Computer programs running on the information provider's computing system may receive, parse and analyze the various requests; convert them into an appropriate format; submit them to interfaces corresponding to the information retrieval tool; receive responses from the information retrieval tool identifying content sources that store information corresponding to the requests; and transmit data associated with the content sources to the computer terminals from which the requests were originally received. -
[0041] In some implementations, the transmitted data may include a pointer (e.g., a hyperlink) to the corresponding information. In some implementations, the transmitted data may include a “snippet,” or a portion, of the corresponding information (e.g., a sentence fragment from a document that includes a search term submitted with a request). In the latter case, in which a snippet is included with data transmitted to a computer terminal in response to a request received from that search terminal, snippets corresponding to various indexed information may be stored in the index or in other data storage facilities associated with the index or with the information provider. -
[0042] In order to simultaneously receive and process a large number of requests from users for search engine services, the information provider may need a massively parallel computing environment having a large number of processors to execute code, a large storage capacity, and a high-bandwidth network interface. -
[0043] As another example, one or more modular computing environments may be used as a high-volume “portable” data storage device. Large quantities (e.g., tens of terabytes) of frequently accessed data may be copied to one or more modular computing environments, and the modular computing environments may be transported (e.g., by cargo ship, truck or train) to a point of use. As a more concrete example, an insurance company may employ a modular computing environment to create a temporary claims office at the site of a major natural disaster. In particular, following, for example, a severe hurricane, an insurance company may store information about its policyholders in a modular computing environment and transport the modular computing environment to the site of the hurricane to create a temporary claims office. -
[0044] As another example, one or more modular computing environments may be used as a laboratory network to simulate, in a test environment, a large network such as an enterprise intranet or a portion of the Internet. The modular computing environment may provide enough processing power and storage capacity to mimic a live network, while still remaining disconnected from live systems or live data; such an application may provide network equipment designers or manufacturers an opportunity to test or validate new hardware designs in an environment that approximates the intended operating environment without disrupting actual live data. Various components and aspects of massively parallel computing environments that may be used in the example applications outlined above are described in detail with reference to the figures. -
[0045] FIG. 1 illustrates amodular computing environment 100 that may be used to add computing power to a massively parallel computing system, such as, for example, a data center. In some implementations, different modular computing environments (“modules”) may provide a replacement amount of processing power or storage capacity (e.g., 2000 microprocessors and 50 terabytes of storage). That is, different modules may be substantially interchangeable. In some implementations, different modules may provide different ratios of processing power to storage capacity, and the target application may determine the appropriate ratio. For example, storage-intensive applications may call for modules that have a large number of storage devices, but the applications may not require a large number of processors; “lab network” applications designed to simulate large networks offline may call for modules with a large number of processors, but the applications may not require a large number of storage devices. -
[0046] As shown, themodular computing environment 100 includes various computing resources, an integrated cooling system and an integrated power distribution system. In some implementations, themodular computing environment 100 is easily transported, protected from environmental elements and thus suitable for use both inside or outside a building, configured to be easily and quickly connected with other modular computing environments to form larger computing systems, and easily serviced by human operators. For example, in some implementations, as shown, the modular computing environment is protected by anenclosure 101, such as a shipping container. The enclosure is sealed on the outside from environmental elements and equipped with access to the interior for human operators to service the various computing resources. -
[0047] The computing resources of themodular computing environment 100 include a large number of processor boards. As used in this description, “processor board” refers generally to a board that includes computing resources. In some implementations, as described in greater detail with reference toFIG. 8 , each processor board may include one or more microprocessors for executing computer program instructions, dynamic memory for use while executing the computer program instructions, storage devices for storing persistent data, and an interface to link the processor board with other processor boards and with one or more networks. As described above, a target application may determine an appropriate ratio of processors to storage devices. In some implementations, a processor board may include only storage devices and corresponding controller(s) and may omit general-purpose microprocessors or general-purpose dynamic memory. -
[0048] The processor boards may be physically disposed in racks, and racks carrying processor boards may substantially line the modular computing environment along the length of each side of the enclosure. For example, in some implementations, the modular computing environment may include well over 1,000 processor boards. As shown inFIG. 1 , the shadedregion 104 represents a single processor board. Theprocessor board 104 may be designed to be easily removed from the corresponding rack in order to be serviced. -
[0049] Each processor board may be coupled to a network internal to the modular computing environment, and each processor board may further be accessible from a network external to the enclosure. In some implementations, the network internal to the modular computing environment includes apatch panel 107. Thepatch panel 107 may provide access connections (e.g., an RJ-45 Ethernet jack or optical interface) to network interfaces on each processor board, and the access connections may be coupled to the processor board network interfaces by, for example, category 5 or category 6 cable or fiber optic cable. The network may further include a router 110 to digitally route data from a high-bandwidth data connection external to the enclosure to processor boards within the enclosure. The network may also include one or more switches (not shown) to digitally route data from one processor board in the enclosure to another processor board in the enclosure. -
[0050] A high-bandwidth connection 113 may couple the patch panel to one or morenetwork interface connection 158 configured to connect to a network external to themodular computing environment 100. The high-bandwidth connection 113 may include one or more high-speed copper interfaces or one or more optical interfaces. For example, the high-bandwidth connection may include a gigabit Ethernet access point for balance twisted pair copper wire and an optical interface for connection to single- or multi-mode optical fiber. In particular, the high-bandwidth network connection may include a 10-gigabit Ethernet interface for coupling single-mode optical fiber carrying SONET (synchronous optical network signals) at carrier level 192 (OC-192) to an optical router 110. -
[0051] In some implementations, a monitor/control terminal 111 may be provided to allow a human operator to monitor the various connections on thepatch panel 107, switches or router 110, or to monitor actual data traffic. In some implementations, the monitor/control terminal 111 may enable a human operator to dynamically switch interconnections between various processor boards within themodular computing environment 100, or connections between an external network and various processor boards. -
[0052] During operation, the computing resources may generate a significant amount of heat within theenclosure 101, and as such, themodular computing environment 100 includes an integrated cooling system to remove the generated heat from theenclosure 101. In some implementations, the integrated cooling system includes a number ofheat exchangers 116 and a number offans 119 or pumps to circulate cooling fluid (e.g., water or refrigerant) and fluid to be treated (e.g., air) through theheat exchangers 116. In particular, theheat exchangers 116 may be liquid-air heat exchangers that transfer heat in air that is cycled through them to a cooling fluid that is also cycled through theheat exchangers 116. The cooling fluid may be cycled through a system external to theenclosure 101, where the heat absorbed in theheat exchangers 116 may be removed. Eachheat exchanger 116 may be supplied with cooling fluid from a coolingfluid supply line 122; cooling fluid that has been warmed by theheat exchanger 116 may be discharged into a coolingfluid return line 125. Additional details of cooling systems are provided with reference to other figures. -
[0053] Themodular computing environment 100 also includes a power distribution system that receives power from outside the enclosure and distributes it to various loads within the enclosure. Power may be received through aconnection 128 to an external power supply. Once inside the enclosure, the power may be routed to apower distribution box 131 and distributed through a number of circuits to power the computing resources, cooling system, network switching equipment and other electrical loads within theenclosure 101. Thepower distribution box 131 may include various circuit breakers or other over-current protection for each circuit, and each circuit may also include surge suppression devices or filters to smooth out the power or to prevent high frequency noise generated within the enclosure from being coupled into the power supply outside the enclosure. Additional details of an example power distribution system are provided with reference to other figures. -
[0054] In order for themodular computing environment 100 to be serviced, the interior of theenclosure 101 may need to accommodate human occupancy; this may require additional features that satisfy both physical human occupancy requirements and any legal or safety requirements that may exist (e.g., municipal building or occupancy requirements). For example, themodular computing environment 100 may include interior lights, a source of fresh air, fire detection and suppression systems; and temperature, humidity and noise may be controlled to be within certain ranges. -
[0055] Additional structural details of the examplemodular computing environment 100 are now described. As mentioned above, themodular computing environment 100 is protected by anenclosure 101 that is sealed from environmental elements such as, wind, rain or snow. In some implementations, theenclosure 101 is a standard shipping container. For example, the enclosure may be an ISO 1AAA container, sometimes referred to as a “high cube” 40′ container, having an approximate inside width of 7′8″, an approximate inside height of 8′10″, and an approximate inside length of 39′5″. Other container dimensions are possible. In particular, themodular computing environment 100 may be enclosed by a standard height 20′ container (having an inside height of approximately 7′10″ and an inside length of 19′4″); or the container may be longer (e.g., 45′, 48′ or 53′). Moreover, enclosures other than shipping containers may be used. For example, in some implementations, the enclosure may be a metal- or wood-framed enclosure with protective siding material. Racks within theenclosure 101 may be suspended, and thewalkway 142 may be segmented into small, removable sections to facilitate access to the components under the racks (e.g.,heat exchangers 116 or fans 119). -
[0056] Theenclosure 101 may be configured to be easily transportable. Shipping containers are particularly well-suited for this purpose and are designed to be easily transported, for example, by a cargo ship, train or truck. The enclosure may also be stackable and may include locking mechanisms (not shown) to secure multiple enclosures in a stacked arrangement. The enclosure may include fork-lift pockets 143 andcorner fittings 146 to facilitate handling by cargo transport devices (e.g., fork-trucks, cranes, overhead booms, conveyors, etc.). -
[0057] In some implementations, amodular computing environment 100 may be transported to a desired location and immediately deployed by being connected to an electrical power supply, a cooling system and a network interface, as described in greater detail below. In some implementations, amodular computing environment 100 may be deployed while it is still disposed on a transport device. For example, amodular computing environment 100 may be transported to an intended deployment site by cargo ship, train or truck, and the modular computing environment may be connected to electrical power a cooling system and a network while it is still on the cargo ship, train or truck. In general, themodular computing environment 100 may be configured to be rapidly deployed. -
[0058] Themodular computing environment 100 includes ports that facilitate quick connection to utilities and other services required for operation. For example, as shown inFIG. 1 and described above, apower port 149 is provided to supply power to themodular computing environment 100 via thepower supply connection 128, cooling fluid supply port(s) 152 are provided to connect to the cooling fluid supply line(s) 122, cooling fluid return port(s) 155 are provided to connect to the cooling fluid return line(s) 125, and one or morenetwork interface connections 158 are provided to couple an external network to themodular computing environment 100 via the high-bandwidth connection 113. In some implementations,openings 161 may be disposed in exterior doors 137 (leftdoor 137 shown) of theenclosure 101 to allow access to thevarious ports doors 137 are either opened or closed. In some implementations, thevarious ports enclosure 101 includes a second,smaller door 164 cut into anexterior doors 137 such that theexterior door 137 may remain closed and sealed at all times. Seals (not shown) may protect the ports to keep moisture and particulates out of the interior of the enclosure. For example, the ports may include bladder seals, grommets or flexible dust covers. -
[0059] Modular computing environments 100 withprotective enclosures 101 as described above may have several benefits. For example, suchmodular computing environments 100 may facilitate quick assembly of large data centers. Large portions of a data center may be prefabricated and quickly deployed; in particular, portions of data centers may be constructed in parallel, rather than in sequence. Critical portions of data centers may be mobile and easily transported from one site to another. Portions of the data center may be constructed by manufacturing laborers, rather than trade laborers, possibly resulting in reduced construction costs. -
[0060] FIG. 2 is a perspective diagram further illustrating details of a portion 201 of an example cooling system (“cooling system 201”) that may be included in themodular computing environment 100 that is shown inFIG. 1 . As shown, the cooling system 201 includes a liquid-air heat exchanger 116 that is coupled to a coolingfluid supply line 122 and a coolingfluid return line 125. In operation, a cooling fluid is circulated from the coolingfluid supply line 122, through theheat exchanger 116, and discharged into the coolingfluid return line 125. Heat and air passing through the heat exchanger (e.g., via paths A and B) may be removed and transferred to the cooling fluid. For example, cooling fluid may have temperature TCF in the coolingfluid supply line 122, before being circulated throughheat exchanger 116. After the cooling fluid has been circulated throughheat exchanger 116, the cooling fluid may have a temperature of TWF, increased from TCF by the transfer of heat from the air. Air passing through the heat exchanger may have a warm input temperature TWA, and a cooled output temperature TCA. -
[0061] To move air through theheat exchanger 116 from an input region (corresponding to path A) to an output region (corresponding to path C), the cooling system 201 includesmultiple fans 119. Thefans 119 may be mounted to aduct 202 that fluidly couples a space in front of theheat exchanger 116. Theduct 202 may help to balance variations in pressure along the duct's length; in addition, theduct 202 may improve the overall reliability of the cooling system 201 by pulling a large volume of air through theheat exchanger 116, even if one of thefans 119 stops functioning. For example, even if amiddle fan 119 stops functioning, theduct 202 may even out pressure variations relative to theoutside fans 119 that may otherwise exist and pull air through the middle of theheat exchanger 116. As shown, thefans 119 pull air through theheat exchanger 116, but in other implementations, fans may be disposed such that they push air through theheat exchanger 116. -
[0062] An overall cooling system may include other portions, in addition to the portion 201 that is illustrated inFIG. 2 . For example, a cooling system may include a line ofheat exchangers 116 disposed along the length of each side of theenclosure 101; similarly, the cooling system may include aduct 202 and a set offans 119 to correspond to eachheat exchanger 116. Theduct 202 may be segmented and may correspond to the length ofheat exchanger 116, or theduct 202 may be continuous along a larger portion of the length of theenclosure 101. More orfewer fans 119 may correspond to eachheat exchanger 116, and the length ofindividual heat exchangers 116 may vary. In some implementations, eachheat exchanger 116 is about 8′ in length and corresponds to 3 motorized impeller fans. Other arrangements are contemplated. For example, air movers other than thefans 119 may be employed, and heat exchangers having designs other than the design depicted by theheat exchanger 116 may be used. -
[0063] FIG. 3 is a cross-section of the examplemodular computing environment 100 that is shown inFIG. 1 .FIG. 3 illustrates an example flow of air through themodular computing environment 100. As shown inFIGS. 1 and 3 ,racks 303 of processor boards are disposed along much of the length of theenclosure 101. Theracks 303 are spaced apart fromexterior sidewalls 306 of the enclosure, forming an open space, orwarm air plenum 309. A “cold air plenum” 312 may be formed by the interior space between theracks 303. In some implementations, air flows between thecold air plenum 312 and thewarm air plenum 309 in one of two ways: cold air flows from thecold air plenum 312 to thewarm air plenums 309 by flowing through theracks 303, across the processor boards (e.g., via paths C, D, A); warm air from thewarm air plenums 309 moves to thecold air plenum 312 by flowing through the heat exchangers 116 (via path A, B, C). As the air flows over the processor boards (via path D), it absorbs heat generated by the processing boards, and its temperature may rise from TCA in thecold air plenum 312 to TWA in thewarm air plenum 309. Conversely, as the air flow through theheat exchanger 116, heat is removed and transferred to the cooling fluid; the temperature of the air may drop from TWA to TCA, as a result, while the temperature of the cooling fluid circulating through the heat exchanger may rise from temperature TCF to TWF. In some implementations, processor boards may include a fan (e.g., fan 315) to cool components on the processor board and/or to minimize thermal inconsistencies within thewarm air plenum 309 orcold air plenum 312. -
[0064] FIG. 4 is a block diagram illustrating examplethermal circuits modular data center 400. As used in this context, “thermal circuit” refers to a path through which heat flows. Thethermal circuits enclosures modules thermal circuit 401 may transfer heat from a first medium (e.g., air) to a second medium (e.g., water) within theenclosure 101A; a secondthermal circuit 402 may remove heat from the second medium external to theenclosure 101A. -
[0065] As shown, themodular data center 400 includes twomodular computing environments modular data center 400 may include many other modular computing environments, but only two are shown for purposes of illustration.) Themodular computing environments computing devices 405 that generate heat within theenclosure 100A. -
[0066] Air may be circulated past thecomputing devices 405 to absorb the generated heat (e.g., via path D). The modular computing environment also includes one or moreintegrated heat exchangers 116, through which the air may be circulated to remove the absorbed heat (e.g., via path B). In some implementations, as described above, theheat exchanger 116 is a liquid-air heat exchanger in which heat removed from the air is transferred to a cooling fluid circulated through the heat exchanger 116 (e.g., via supply and returnlines 122 and 125). -
[0067] As shown, the transfer of heat from thecomputing devices 405 to air and from air to cooling fluid comprises a firstthermal circuit 401. In some implementations, the amount of heat generated by thecomputing devices 405 is substantially equivalent to the amount of heat transferred to the cooling fluid (ignoring heat received or dissipated through walls of theenclosure 101A). In these implementations, substantially all of the generated heat may be removed by a secondthermal circuit 402. -
[0068] As shown, the secondthermal circuit 402 includes the coolingfluid supply line 122, a cooling fluid supply main 412 that provides cooling fluid to multiplemodular computing environments fluid return line 125, a cooling fluid return main 415 that receives cooling fluid from multiplemodular computing environments thermal circuit 402 may function at a facility level (e.g., the entire modular data center 400) to exhaust heat from multiple modules (e.g., themodular computing environments cooling system 420 are possible. -
[0069] FIG. 5 is another block diagram showing examplethermal circuits 501 that may exist in themodular computing environment 100. Variouselectrical circuits 501 generate heat. The heat-generatingcircuits 501 may include, for example, processing components (e.g., microprocessors, memory, storage devices, etc.) within the modular computing environment 100 (in particular, within theenclosure 101 of the modular computing environment 100). Heat from the heat-generatingcircuits 501 may be conducted to a corresponding circuit case orheat sink 503. For example, heat generated within a microprocessor's circuits may be conducted to a surface (case) of the microprocessor, or to a heat sink that is attached to the microprocessor. Conduction is depicted inFIG. 5 by a thin, straight arrow. From the case or heatsink (“case”) 503, the heat may be either radiated or conducted to afirst cooling fluid 506. InFIG. 5 , radiation is depicted as a wavy arrow. In some implementations, the first cooling fluid is air. Thefirst cooling fluid 506 may be circulated within theenclosure 101 of themodular computing environment 100, and as thefirst cooling fluid 506 is circulated, the heat stored therein may be convected. Convection is depicted inFIG. 5 by a larger, open arrow. In particular, thefirst cooling fluid 506 may be circulated to a heat exchanger (e.g., heat exchanger 116), and the heat may be transferred to the body of theheat exchanger 509. By a process of conduction, the heat may be transferred from the body of theheat exchanger 509 to asecond cooling fluid 512 within the heat exchanger, where it can be removed, for example by a circulation process of the cooling fluid to another heat exchanger that is external to the enclosure. -
[0070] In some implementations, heat may flow in other ways. For example, some heat may be exhausted from theenclosure 101 corresponding to themodular computing environment 100 by convection, e.g., through a fresh-air ventilation system to anexternal environment 518. In many implementations, such heat transfer has only second-order effects relative to the primary transfer of heat to thesecond cooling fluid 512; that is, the transfer of heat from the heat-generatingcircuits 501 to theexternal environment 518 byfirst cooling fluid 506 that leaves the enclosure may be negligible vis-à-vis the transfer of heat from the heat-generating circuits to thesecond cooling fluid 512. As another example, some heat may be transferred to thebody 515 of theenclosure 101 by convection, and then transferred from thebody 515 of theenclosure 101 by conduction or radiation. In many implementations, this form of heat transfer also only has second-order effects relative to the primary transfer of heat to thesecond cooling fluid 512; that is, the transfer of heat from the heat-generatingcircuits 501 to theexternal environment 518 by radiation from thebody 515 of the enclosure may be negligible vis-à-vis the transfer of heat from the heat-generating circuits to thesecond cooling fluid 512. -
[0071] For simplicity, the description above accounts for heat transfer out of theenclosure 101. However, in some implementations, heat may also enter theenclosure 101 from the external environment. For example, heat may be transferred by convection or radiation to thebody 515 of theenclosure 101, and from thebody 515 of theenclosure 101 to thefirst cooling fluid 506. In many implementations, such heat transfer is also has only second-order effects, and a detailed description is therefore omitted. -
[0072] FIG. 6 is a front view of anexample rack 600. As shown, therack 600 includes a plurality ofrails 603 configured to support processor boards. Theprocessor board 612 may be removed from therails 603 for service or anchored by therails 603 for normal operation. -
[0073] In some implementations, a cable 609 (e.g., a Category 5, Category 6, or optical fiber cable) may couple a network interface on a process board to the patch panel 107 (seeFIG. 1 ), a switch, or the router 110, in order to make the processor board accessible to the modular computing environment. In some implementations, thecable 609 connects to the processor board via an RJ-45plug 613 andjack 614. In some implementations, thecable 609 may be routed through arack support 615 and across acable tray 618 to thepatch panel 107, switch or router 110. Thecable tray 618 may be disposed along the bottom of the rack, as shown, or it may be disposed elsewhere (e.g., under the walkway, along the ceiling, etc.) In some implementations, as shown, thecable 609 may be continuous from the processor board to thepatch panel 107; in other implementations (not shown), a short patch cable may connect each processor board to another plug disposed on therack support 615, and another cable may connect the plug to thepatch panel 107, switch or router 110. -
[0074] FIG. 7 is a rear view of theexample rack 600 that is shown inFIG. 6 .FIG. 7 illustrates how power may be delivered to each processor board, in some implementations. As shown, apower cable 702 is routed through arack support 705 and connects to an on-board power supply 708 with a plug (not shown) that is integral to thepower supply 708 and areceptacle 711. -
[0075] In some implementations, thepower cable 702 is connected to a circuit that is split out in the power distribution box 131 (e.g., a 208 VAC, single-phase circuit). In some implementations, power is distributed from thepower distribution box 131 to various rack supports along the top of the rack; in other implementations, power may be distributed in a different manner (e.g., via buses, along the bottom of the rack, under the walkway, etc.) -
[0076] FIG. 8 is a block diagram of anexample processor board 800 that may be included in themodular computing environment 100. As shown, theprocessor board 800 may include one ormore processors board memory 805, and one or more on-board storage devices processor board 800 also includes an on-board power supply 811 that receives power from an external source—for example as shown inFIG. 6 . In some implementations, thepower supply 811 includes a fan that facilitates cooling of theprocessor board 800 and that may help minimize thermal inconsistencies elsewhere in an overall system. Anetwork interface 814 allows theprocessor board 800 to be coupled to other devices within themodular computing environment 100 or within a larger network. -
[0077] In operation, theprocessor board 800 may execute computer program instructions that are stored in thestorage devices memory 805, or that are received via thenetwork interface 814. In multi-processor implementations, eachprocessor processor storage devices network interface 814, process data, or store data in thestorage devices memory 805. A large data center may employ thousands of processor boards such as theprocessor board 800 to perform complex data manipulations, such as, for example, managing customer account information within a financial institution, or providing various users with content and information services. -
[0078] FIG. 9 is perspective diagram of an examplemodular data center 900 constructed with several modular computing environments 901-910. As shown, the modular computing environments 901-910 are arranged along a connecting hub, such as, for example, a central “spine” 913 or “backbone” of themodular data center 900. Thespine 913 may route electrical power and cooling fluid to each modular computing environment 901-910. -
[0079] Electrical power may be provided to themodular data center 900 in the form of high voltage power (e.g., 13 kV) by a power utility via utility lines 916. The voltage of the incoming power may be reduced by a facility-level transformer 919 (e.g., to 480 VAC, three-phase) and distributed at a facility levelpower distribution box 922 and routed to the various modular computing environments within thespine 913. In some implementations, other facility backup or supplemental power may be provided. For example, a diesel backup generator (not shown) may be co-located with themodular data center 900; if the utility power is compromised, the diesel backup generator may provide interim power to the modular data center. -
[0080] Acentral cooling plant 925 may be provided at the facility level to provide cooling fluid to each modular computing environment 901-910 for the removal of heat generated within corresponding enclosures of the modular computing environments. As shown (and described above with reference toFIG. 4 ), thecentral cooling plant 925 may be a chiller or condenser. In some implementations, thecentral cooling plant 925 may be a cooling tower. Cooling fluid may be distributed, within thespine 913, to each modular computing environment 901-910. -
[0081] Acentral communication facility 928 may also be provided at the facility level and may couple the network interfaces of each modular computing environment 901-910 to a larger network. Anexample communication facility 928 is graphically depicted as a satellite dish, but the communication facility could be any kind of high-bandwidth network connection (e.g., OC-192, 10-gigabit Ethernet, parallel T1 or T3 lines, etc.) In some implementations, thecommunication facility 928 couples themodular data center 900 to a company's intranet (e.g., the internal network of a financial institution or an Internet information provider); in some implementations, thecommunication facility 928 couples themodular data center 928 to the Internet. -
[0082] In some implementations, thespine 913 provides a layer of protection to the utilities (e.g., electrical power, cooling fluid and a network interface) delivered to each modular computing environment 901-910. The utilities may be delivered via flexible “quick-connection” stubs disposed at “docking regions” (not shown) corresponding to locations along thespine 913 that are configured to receive modular computing environments. For example, electrical power may be delivered from a distribution line or bus (not shown) within thespine 913 to heavy-duty “appliance style” connectors that can be plugged into a modular computing environment. Similarly, cooling fluid may be delivered from large supply and return mains (not shown inFIG. 9 , but seeelements FIG. 4 for reference) to flexible hoses with threaded connectors that can be quickly attached to a modular computing environment. A network interface connection may also be provided by a connector that can be quickly plugged into a modular computing environment. -
[0083] Deploying themodular data center 900 may be a simple process. In some implementations, the process includes a) providing (e.g., constructing) a facilitylevel cooling plant 925; b) providing a facility-levelelectrical power system level communication facility 928; d) routing cooling fluid, electrical power and a connection to the facility-level communication interface to various docking regions (not shown), which may be optionally located in aspine 913; e) providing two or more modular computing environments 901-910 at two or more of the docking regions; and f) connecting the utilities to the modular computing environments using the quick-connection stubs disposed at the docking regions. -
[0084] The example method of deploying the modular data center may have one or more of the following advantages: modular data centers may be quickly deployed; amodular data center 900 may be constructed in parallel (e.g., modular computing environments may be constructed in parallel with facility level resources); themodular data center 900 may be easily expanded to incrementally add computing power; large portions of themodular data center 900 may be mobile to facilitate relocation; and portions of themodular data center 900 may be prefabricated, possibly at lower cost than would be possible if themodular data center 900 were serially constructed from scratch (e.g., some manufacturing labor may be used in place of trade labor). -
[0085] Other implementations are contemplated. For example, although ten modular computing environments 901-910 are shown, a data center may have many more (e.g., 10-100 modular computing environments); the modular computing environments 901-910 could have other arrangements, such as a star configuration centered around utility and network distribution points within a ring-shaped connecting hub, or a stacked configuration coupled to a vertical spine as illustrated inFIG. 10 . The connecting hub need not necessarily be either linear or circular or any other regular or symmetric shape. In general, virtually any shape, size or configuration of connecting hub can be used to accommodate objectives of a system designer. As described above, backup or supplemental generators may be provided. Cooling and communication facilities may take forms other than those depicted. -
[0086] FIG. 10 is a perspective diagram of another examplemodular data center 1000 constructed with multiple modular computing environments 1001-1008 and having a stacked configuration. Except for configuration, themodular data center 1000 is very similar to the modular data center 900: it includes a facility-level cooling plant 1025, a facility-levelelectrical power source 1016; a facility-level communication facility 1028; and the modular computing environments 1001-1008. A vertical spine 1013 may route the utilities to the modular computing environments 1001-1008, and the facility-level cooling plant 1025 may be disposed above the spine 1013. Facility-levelpower conversion equipment 1019 and power distribution equipment (not shown) may be provided.FIG. 10 is an example of another possible data center configuration; as described above, other configurations are contemplated. As one additional example, a data center may be disposed onboard a ship; electrical power may be provided by an on-ship generator, and the cooling plant may incorporate seawater. -
[0087] FIG. 11 is a block diagram of an example facility-levelelectrical distribution system 1100 that may be included in a modular data center. As shown, electrical power is provided by asupply 1101 at a voltage V1. In some implementations, this power is supplied by a utility company at a voltage V1 of about 13 kV. Thesupply 1101 is converted by apower conversion device 1104 to a voltage V2. In some implementations, thepower conversion device 1104 is a transformer, and the voltage V2 is about 480 VAC, with three phases provided. In some implementations, electrical power at voltage V2 may be distributed to variousmodular computing environments -
[0088] In some implementations, eachmodular computing environment phase splitter 1112 that splits off each of the three phases to single-phase legs having a voltage V3. In some implementations, the voltage V3 is single-phase 208 VAC. The three single-phase legs at voltage V3 may be distributed as various circuits to loads within themodular computing environment networking switching equipment 1115 may have a dedicated circuit. A fan, or a number offans Lights 1121 may have a dedicated circuit. Groups ofprocessing boards 1124A-1124C may have dedicated circuits (e.g., a column of processor boards in a rack, or another portion of arack Other devices 1127 may also have dedicated circuits (e.g., lighting, fire/smoke detection devices and a fire suppression system). As shown, each circuit at the voltage V3 may have over-current devices 1130 (e.g., circuit breakers, fuses, surge suppressors, etc.). In some implementations, eachprocessor board 1124A-C includes an on-board power supply 1133 that converts electrical power having voltage V3 to one or more voltages suitable for components on the corresponding processor board. -
[0089] Other implementations are contemplated. For example, at the facility level, additional power sources, such as backup or supplemental generators may be provided. Single-phase power may be used throughout a facility in some implementations. Voltages other than those described above may be employed. -
[0090] FIG. 12 is a block diagram of anexample information provider 1201 and anenvironment 1200 in which the information provider may function. In operation, theinformation provider 1201 may provide content and specific information services to client devices (e.g., to the client device 1204) that access the information provider through anetwork 1207, such as the Internet. Information services may include a search engine function for locating content that is accessible from thenetwork 1207. Information services may also include providing specific kinds of information, such as time-sensitive news about particular topics (e.g., business news, financial news, etc.), weather information for a specific location, driving directions to navigate between two locations, or traffic congestion information. Theinformation provider 1201 may accessother content providers network 1207, and may index content stored on thecontent providers -
[0091] Various components of theexample information provider 1201, as shown, are now described. Theinformation provider 1201 may includecontent stores information provider 1201 also includesinformation modules information provider 1201 includes asearch engine 1219 that may be configured to locate content that is internal or external to the information provider 1201 (e.g., content incontent stores content providers 1210A-C). -
[0092] To provide a search engine function, theinformation provider 1201 may maintain an index 1222 (e.g., an index database) and may further usesystem storage 1225 to maintain the index or provide the search engine functions. Theindex database 1222 may contain data that represents information that theinformation provider 1201 provides to users. For example, theindex database 1222 may contain links to information stored oncontent providers 1210A-C outside of theinformation provider 1201. Some information referenced by entries in theindex database 1222 may be stored in thesystem storage 1225. For example, thesystem storage 1225 may “mirror” information for which search reports are regularly received such as, for example, breaking news stories or weather or traffic information. Thesystem storage 1225 may also store various components needed for general operation of theinformation provider 1222, such as, applications, system parameters, and information about users who access the system. -
[0093] Theindex database 1222 may or may not be cached. For example, theindex database 1222 may include a separate cached index database (not shown) to support faster access to search results. Thesystem storage 1225 may be local to theinformation provider 1225, or it may be distributed, such as, for example, in an external server or storage farm (not shown). Within theinformation provider 1201, thesearch engine 1219 may operate to produce search results that include information stored in theindex database 1222 or thesystem storage 1225, in response to search requests from users. -
[0094] As shown, theinformation provider 1201 receives and transmits data through anexternal interface 1228 and aninternal interface 1231. Through theexternal interface 1228, which may include one or more Web servers, theinformation provider 1201 receives requests and transmits responses from and to external computing devices (e.g., the client device 1204). Through theinternal interface 1231, theinformation provider 1201 internally routes information to and from theindex database 1222 and thesystem storage 1225 via various paths (some of which are not shown), and to an from theinformation modules content stores -
[0095] Eachinterface information provider 1201 can respond to a large number of distinct requests simultaneously. The precise design of theinterfaces overall information provider 1201 is not critical to this description and may take any suitable form. -
[0096] Information in theindex database 1222 may be gathered by anautomated information gatherer 1234, such as, for example, a Web crawler or a spider. The automated information gatherer may, for example, continuously, or almost continuously, obtain new information from sources connected to thenetwork 1207 or to other networks. Theautomated information gatherer 1234 may also retrieve content in response to a search query. This content may be provided to theindex database 1222 or to thesystem storage 1225, or to both. Theindex database 1222 may index data that is accessible from thenetwork 1207 or from another network. -
[0097] In addition to being added to theindex database 1222 orsystem storage 1225 in an automated fashion, information may also be manually loaded in or retrieved from theindex database 1222 or thesystem storage 1225 through amaintenance interface 1237. For example, amaintenance interface 1237 may allow an administrator of theinformation provider 1201 to manually add bulk data to theindex database 1222 or to thesystem storage 1225. -
[0098] Data requests, such as queries received from users, may be received and processed through arequest processor 1240. Therequest processor 1240 may, for example, parse requests, and, if necessary, reformat them (e.g., from HTML (hypertext markup language) or text format, to search term or strings that are compatible with the search engine 1219). Therequest processor 1240 may operate in conjunction with theexternal interface 1228. In some embodiments, therequest processor 1240 may be included in theexternal interface 1228. -
[0099] Responses to data requests may be formatted for delivery by aresponse formatter 1243. Theresponse formatter 1243 may, for example, format content that is responsive to data requests in a format like HTML, XML (Extensible Markup Language), WML (Wireless Markup Language), or some other suitable format. Theresponse formatter 1243 may operate in conjunction with theexternal interface 1228. In some embodiments, theresponse formatter 1243 may be included in theexternal interface 1228. -
[0100] Theinformation provider 1201 may further include anad delivery system 1246, along with anad database 1249 and anad log 1252. Thead delivery system 1246 may receive query requests and other input from theinternal interface 1231. In some embodiments, thead delivery system 1246 may select an ad from thead database 1249 to deliver in conjunction with other content, such as, for example, a response to the query. The selected ad may correspond to content of the search query. For example, in response to a user who submits a query for a restaurant near a particular location having a particular cuisine (e.g., That food), the information provider may deliver, along with information about various restaurants having that cuisine in that location, a coupon for a particular restaurant. Theresponse formatter 1243 may combine search results from thesearch engine 1219 and ad results from thead delivery system 1246 into an overall response and may send that response to the device from which the original query was receive, via thenetwork 1207. Anad maintenance module 1254 may be provided to add, manage and remove ads in thead database 1249 -
[0101] Some ads may solicit a response from the recipient. For example, an ad may include a link that a user can select to receive additional information or to perform other actions. Any such responses may be directed back to theinformation provider 1201 and subsequently logged. For example, theinformation provider 1201 may receive, via theinterfaces ad delivery system 1246, a response to a previously delivered ad. Thead delivery system 1246 may store this response in thead log 1252. Thead log 1252 may be subsequently used to bill sponsors of such ads or to log various statistics related to ads and to their effectiveness. -
[0102] FIG. 13 is a block diagram 1300 illustrating one topology of twomodular computing environments modular computing environment processing device 1304, which may include a processor board in a rack system) coupled to an internal network (e.g., network 1307). Theinternal network 1307 may include a patch panel, switch or router; and the internal network may connect to anothernetwork 1310, that also connect to other modular computing environments. Other devices may connect to thenetwork 1310, such aclient device 1313 or aserver device 1313. In some implementations, the resources of themodular computing environments client device 1313 or theserver device 1316. A topology similar to that depicted inFIG. 13 may be used to implement various portions of theinformation provider 1201 that is described with reference toFIG. 12 . For example, in some implementations, themodular computing environments index database 1222, thesearch engine 1219, thecontent stores request processor 1240, theinformation modules -
[0103] A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other embodiments are within the scope of the following claims: