This application is related to computer networks and more particularly to simulated environments that utilize computer networks.
A simulated environment is one in which users can interact with each other via a computer. Users may appear on a screen in the form of representations referred to as avatars. The degree of interaction between the avatars and the simulated environment is implemented by one or more computer applications that govern such interactions as simulated physics, exchange of information between users, and the like. The number of users that can interact is largely dependent on the computing power available for the simulated environment.
It is within this context that embodiments of the invention arise.
The teachings of the present invention may be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
Although the following detailed description contains many specific details for the purposes of illustration, anyone of ordinary skill in the art will appreciate that many variations and alterations to the following details are within the scope of the invention. Accordingly, the examples of embodiments of the invention described below are set forth without any loss of generality to, and without imposing limitations upon, the claimed invention.
Embodiments of the invention are related to very large simulated environments that may involve many users, e.g., hundreds of thousands of users or even millions of users. The computing resources required for such a vast simulated environment are considerably more than any single computer processor can provide. Consequently, embodiments of the present invention utilize a network of processor modules that can communicate with each other and with various networked user devices. Networked computing is largely limited by available bandwidth for transferring data between the processors simulating the environment and the user devices that allow users to interact with the simulated environment.
The numbers of simulation servers 102 and view servers 104 can both be scaled. For example one simulation server 102 may accommodate and many view servers 104, or many simulation servers 102 may accommodate one view server 104. Adding more simulation servers 104 allows for a bigger and/or better simulation of the virtual world. Adding more view servers 104 allows the data center 100 to handle more users. Of course, the data center may accommodate both a bigger and better simulation and more users add more of both simulation servers 102 and view servers 104. Theoretically the number of simulation servers 102 is infinitely scalable given a certain level of network bandwidth, and the number of view servers 104 will hit a limit after a certain number of users due to computation and network bandwidth limitations.
For the purpose of example, and without limitation of embodiments of the invention examples will be described herein with respect to Cell processors. Cell processors are described in detail, e.g., in Cell Broadband Engine Architecture, copyright International Business Machines Corporation, Sony Computer Entertainment Incorporated, Toshiba Corporation Aug. 8, 2005 a copy of which may be downloaded at http://cell.scei.co.jp/, the entire contents of which are incorporated herein by reference.
A typical Cell processor has a power processor unit (PPU) and up to 8 additional processors referred to as synergistic processing units (SPU). Each SPU is typically a single chip or part of a single chip containing a main processor and a co-processor. All of the SPUs and the PPU can access a main memory, e.g., through a memory flow controller (MFC). The SPUs can perform parallel processing of operations in conjunction with a program running on the main processor. The SPUs have small local memories (typically about 256 kilobytes) that must be managed by software—code and data must be manually transferred to/from the local SPU memories. For high performance, this code and data must be managed from SPU software (PPU software involvement must be minimized). There are many techniques for managing code and data from the SPU. Examples of such techniques are described e.g., in U.S. patent application Ser. No. 11/238,077 to John P. Bates, Payton White and Attila Vass entitled “CELL PROCESSOR METHODS AND APPARATUS”, filed Sep. 27, 2005 and published as US Patent Publication Number 2007/0074212A1; U.S. patent application Ser. No. 11/238,095 to Richard B. Stenson and John P. Bates entitled “CELL PROCESSOR TASK AND DATA MANAGEMENT” filed Sep. 27, 2005 and published as US Patent Publication Number 2007/0074221A1; U.S. patent application Ser. No. 11/238,086 to Tatsuya Iwamoto entitled “OPERATING CELL PROCESSORS OVER A NETWORK” filed Sep. 27, 2005 and published as US Patent Publication Number 2007/0074206A1; U.S. patent application Ser. No. 11/238,087 to John P. Bates, Payton R. White, Richard B. Stenson, Howard Berkey, Attila Vass, Mark Cerny and John Morgan entitled “SPU TASK MANAGER FOR CELL PROCESSOR” filed Sep. 27, 2005 and published as US Patent Publication Number 2007/0074207; U.S. patent application Ser. No. 11/257,761 to Tatsuya Iwamoto entitled “SECURE OPERATION OF CELL PROCESSORS” filed Oct. 24, 2005 and published as US Patent Publication Number 2007/0083755A1; U.S. patent application Ser. No. 11/461,390 to John P. Bates, Keisuke Inoue and Mark Cerny entitled “CELL PROCESSOR METHODS AND APPARATUS”, filed Jul. 31, 2006 and published as US Patent Publication Number 2007/0198628A1, the entire contents of all of which are incorporated herein by reference.
The simulation servers 102 can communicate with each other and with the view servers 104 via high speed data transfer links 106. By way of example, the data transfer links may be 10 gigabit per second Ethernet connections. As used herein, the term Ethernet generally refers to a family of frame-based computer networking technologies for local area networks (LANs). By way of example, and without loss of generality an Ethernet connection may be implemented as a wired connection. A wired Ethernet connection may be established according to collection of standards, e.g., as set forth in IEEE 802.3.
To optimize data transfer the simulation servers 102 and 104 may be located in fairly close physical proximity, e.g., within the same room or on the same server rack. The view servers 104 may be configured to receive simulation data from one or more of the simulation servers 102 and send view data to one or more remotely distributed client devices 108, e.g., over a wide area network 110, such as the Internet. The client devices may be any suitable device that can communicate over the network 110. Typically, communication over the network 110 is slower than over the fast data links 106. By way of example, the client devices 108 may be video game console devices, such as the Sony PlayStation 3. Alternatively, the client devices 108 may be any computer device from handheld to workstation, etc. A handheld video game device, such as a PlayStation Portable from Sony Computer Entertainment of Tokyo, Japan is one example among others of a handheld device that may be used as a client device 108 in embodiments of the present invention. The client devices 108 may send the view servers 104 instructions relating to their desired interaction with other clients' avatars and with the simulated environment. For example, a client user may wish to move his or her avatar to a different portion of the simulated environment. The client 108 sends instructions to one of the view servers 104. These instructions are relayed by the view servers 104 to the simulation servers 102 that perform the necessary computations to simulate the interactions.
The users of the client devices 108 are often interested in things around them. The view servers 104 make sure that each client 108 receives relevant data about its surroundings in the proper order. The view servers 104 determine what a user's client device needs based on its avatar's location, orientation, motion, etc.
A back end server such as a simulation server 102 or view server 104 often has more data than a single client device 108. Therefore, the back end server can make better decisions than the client 108. For example, in the case of file downloads, such as music downloads, a server could suggest that a client download desired file from a nearby peer who has the file. In addition, the back end server could keep track of the state of server-controlled avatars. For example if a user-controlled avatar crashes into server-controlled avatar, the color of either or both avatars may change to indicate that they have been involved in a collision.
The back end server could also analyze metadata to simulate a social network. For example, the server could identify a style of music (e.g., Jazz, classical, etc.) in music sent in a wave file from one client device 108 to another. The back end server could then suggest that these users of these devices contact other users that have shared similar music.
To implement such a complex simulated world, it is desirable to establish peer-to-peer communication between clients and servers or between clients and other clients. Embodiments of the invention may make use of Peerlib to traverse network address translators (NATs) by allowing peer-to-peer connections to be established. NAT traversal is described e.g., in U.S. patent application Ser. No. 11/243,853 to Yutaka Takeda, entitled “PEER-TO-PEER COMMUNICATION TRAVERSING SYMMETRIC NETWORK ADDRESS TRANSLATORS” filed Oct. 4, 2005 and published as US Patent Publication Number 2007/0076729A1, which is incorporated herein by reference.
In addition, it is desirable to implement distributed parallel processing systems and architectures in such a way that function calls may be invoked over a network. For example, in embodiments of the invention a client device may invoke a function call on a remotely located server. An example of such a distributed parallel processing system is referred to herein as distributed SPU runtime system (SPURS). In SPURS, the memory of each SPU has loaded into it a kernel that performs scheduling of tasks in a task module handled by the SPU. Distributed SPURS adds to this a distributed method invocation (DMI), which facilitates function calls over a network. As shown in
When a given client device 302 wishes to implement a particular process at the data center 310, the client device 302 must first traverse the NAT 317, e.g., as described in U.S. patent application Ser. No. 11/458,301, to transmit a query to an application 318. The resource agent 322 and process agents 324 assign the query to a particular process 320 running on a particular server node 316. Once the application 318 notifies the client device 302 of this assignment, the client device 302 may send peer-to-peer function calls to the process 320 using DMI.
It is noted that, in some embodiments, the clients 302 may include resource agents and process agents to that the data center 310 and/or other clients may utilize available client processing resources.
There are a number of different processor architectures that may be used to implement the data center 310. Such processor architectures may be built around single core, dual core or multiple core (e.g., quad-core or cell processor) architecture. By way of example, and without loss of generality,
The STUN server 402 and SSP 401 may facilitate NAT traversal. STUN is an acronym for Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs). STUN is a network protocol allowing a client behind a NAT (or multiple NATs) to find out its public address, the type of NAT it is behind and the internet side port associated by the NAT with a particular local port. This information is used to set up UDP communication between two hosts that are both behind NAT routers. The protocol is defined in RFC 3489, which is incorporated herein by reference. The UIM 403 tracks user identity and gives each user (or client device) a unique token to verify the user's identity. Following NAT traversal and token assignment by the UIM 403, remote client devices may communicate with the mediator 404, e.g., via DMI. The mediator 404 stores registered application information and provides this information to client devices. By way of example, the mediator 404 may provide a universal resource locator (URL) from which the client device may download application code and data.
The storage system 405 may store and retrieve data for processes running on the cell node groups. By way of example, the storage 405 may be a clustered file system, such as the general parallel file system (GPFS) developed by IBM. The database 406 web servers 407 and download servers 408 may perform conventional functions in support of processes running on cell processors within the cell node groups 410.
The database 406 may contain application data such as multimedia content, executable binary code, etc. The database 406 may also contain user account information, billing information, virtual world state (location of Items, Monsters, etc). Other information that may be stored in the database 406 includes user statistics: amount of time spent using each application, average duration of each application usage, favorite locations within the virtual world, “buddies”, etc.
Each cell node group 410 may include one or more cell front ends 412 and a plurality of cell processors 414. Each cell front end may be a single core processor, e.g., an Intel x86-type processor capable of 10 gigabit bandwidth communication with the cell processors 414. By way of example, pairs of cell processors may be fabricated on the same substrate in a configuration known as a cell blade 416. The cell processors 414 may be a plurality of such blades 416. Each cell blade may be a rack mounted and self-contained for easy scalability. Typically about 8 to 12 cell blades 416 may be associated with each cell front end 412. By way of example, and without loss of generality, a cell node group 410 may include four cell front ends 412 and 48 cell blades.
In certain embodiments of the present invention cell processor hardware may be used to implement both the view servers 104 and simulation servers 102. The cell front end 412 communicates with the resource agent 322 to acquire appropriate cell blades 416 for the view servers 104 and simulation servers 102 described above with respect to
The process tasks are typically distributed amongst the available SPU of the cell processors 414 within the cell node group 410. The PPU of each cell 414 may be utilized specifically for servicing the network with which the cell is associated.
In some embodiments one or more of the cells 414 may be configured, e.g., by suitable programming, to implement function calls over a network, e.g., in conjunction with a method of the type described above with respect to
While the above is a complete description of the preferred embodiment of the present invention, it is possible to use various alternatives, modifications and equivalents. Therefore, the scope of the present invention should be determined not with reference to the above description but should, instead, be determined with reference to the appended claims, along with their full scope of equivalents. Any feature described herein, whether preferred or not, may be combined with any other feature described herein, whether preferred or not. In the claims that follow, the indefinite article “A”, or “An” refers to a quantity of one or more of the item following the article, except where expressly stated otherwise. The appended claims are not to be interpreted as including means-plus-function limitations, unless such a limitation is explicitly recited in a given claim using the phrase “means for.”
This application claims the benefit of priority to U.S. Provisional Patent Application 60/869,294 to Attila Vass et al entitled “SIMULATED ENVIRONMENT COMPUTING FRAMEWORK”, filed Dec. 8, 2006, the entire disclosures of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60869294 | Dec 2006 | US |