U.S. patent application number 11/381201 was filed with the patent office on 2007-01-04 for multi-core processing in a wagering game machine.
Invention is credited to Christopher Brewer, Stephen A. Canterbury, Victor Mercado, Craig J. Sylla.
Application Number | 20070004501 11/381201 |
Document ID | / |
Family ID | 37590325 |
Filed Date | 2007-01-04 |
United States Patent
Application |
20070004501 |
Kind Code |
A1 |
Brewer; Christopher ; et
al. |
January 4, 2007 |
MULTI-CORE PROCESSING IN A WAGERING GAME MACHINE
Abstract
A computerized wagering game system includes a gaming module
comprising gaming code which is operable when executed on to
conduct a wagering game on which monetary value can be wagered, and
a multi-core processor having multiple processor cores, the
multiple processor cores each operable to execute any thread
executing in the multi-core processor. In further embodiments, the
multiple processor cores and an operating system facilitate
symmetric multiprocessing, parallel processing, or
hyperthreading.
Inventors: |
Brewer; Christopher;
(Bloomington, IL) ; Canterbury; Stephen A.;
(Antioch, IL) ; Mercado; Victor; (Berwyn, IL)
; Sylla; Craig J.; (Round Lake, IL) |
Correspondence
Address: |
SCHWEGMAN, LUNDBERG, WOESSNER & KLUTH, P.A.
P.O. BOX 2938
MINNEAPOLIS
MN
55402
US
|
Family ID: |
37590325 |
Appl. No.: |
11/381201 |
Filed: |
May 2, 2006 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60694831 |
Jun 29, 2005 |
|
|
|
Current U.S.
Class: |
463/25 |
Current CPC
Class: |
G07F 17/3202 20130101;
G07F 17/32 20130101 |
Class at
Publication: |
463/025 |
International
Class: |
A63F 9/24 20060101
A63F009/24 |
Claims
1. A computerized wagering game system, comprising: a gaming module
comprising gaming code which is operable to present a wagering game
on which monetary value can be wagered; and a multi-core processor
having multiple processor cores, the multiple processor cores each
operable to execute any thread executing in the multi-core
processor.
2. The computerized wagering game system of claim 1, wherein the
multiple processor cores are contained in the same integrated
circuit package.
3. The computerized wagering game system of claim 1, wherein the
multiple processor cores share the same memory, bus, and operating
system.
4. The computerized wagering game system of claim 1, wherein the
multiple processor cores are configured in a symmetric
multiprocessing configuration.
5. The computerized wagering game system of claim 1, wherein two or
more of the multiple processor cores are virtual processor
hyperthreading cores, each of which is operable to appear to the
operating system to be a logical processor.
6. The computerized wagering game system of claim 1, further
comprising an operating system operable to support symmetric
multiprocessing.
7. The computerized wagering game system or claim 1, wherein the
multi-core processor comprises multiple video processor cores
operable to render a single video image.
8. A method of operating a computerized wagering game, comprising:
presenting a wagering game on which monetary value can be wagered;
and executing an operating system operable to support symmetric
multiprocessing across more than one processor in the wagering game
machine.
9. The method of claim 8, further comprising emulating a
hyperthreading processor as more than one logical processor in the
executing operating system.
10. The method of claim 8, further comprising load-balancing two or
more processes executing across the more than one processor via a
load balancing process.
11. The method of claim 8, further comprising assigning specific
processes to a specific processor from the more than one
processor.
12. The method of claim 8, further comprising executing a process
across more than one of the more than one processors through
parallel processing.
13. The method of claim 8, wherein executing an operating system
comprises executing the same operating system kernel on more than
one of the more than one processors.
14. The method of claim 8, further comprising operating two or more
wagering games within the wagering game system, each wagering game
executing on its own processor.
15. The method of claim 8, further comprising assigning an
authentication process to a first of the more than one processors
and a wagering game program process to a processor other than the
first processor.
16. A method of operating a computerized wagering game, comprising:
presenting a wagering game on which monetary value can be wagered;
and rendering a video image using multiple video processing
cores.
17. A machine-readable medium with instructions stored thereon, the
instructions when executed operable to cause a computerized system
to: present a wagering game upon which monetary value can be
wagered; and execute an operating system operable to support
symmetric multiprocessing across two or more processors in the
wagering game machine, such that processes can be assigned to more
than one processor.
18. The machine-readable medium of claim 17, the instructions when
executed further operable to load balance executing processes
between available processors.
19. The machine-readable medium of claim 17, wherein assigning
processes to more than one processor comprises assigning at least
one process to a designated processor.
20. The machine-readable medium of claim 17, wherein executing the
operating system comprises executing the same operating system
kernel on two or more processors.
21. The machine-readable medium of claim 17, wherein the
instructions when executed are further operable to load balance
processes between the more than one processor.
22. The machine-readable medium of claim 17, the instructions when
executed further operable to implement an authentication process
executed on an assigned first of the more than one processors, and
further operable to implement a wagering game program process to a
processor other than the first processor.
Description
RELATED APPLICATION
[0001] This application claims priority under 35 U.S.C. 119(e) from
U.S. Provisional Application Ser. No. 60/694,831 filed Jun. 29,
2005, which application is incorporated herein by reference.
FIELD OF THE INVENTION
[0002] The invention relates generally to computerized wagering
game machines, and more specifically to multi-core processing in a
computerized wagering game machine.
LIMITED COPYRIGHT WAIVER
[0003] A portion of the disclosure of this patent document contains
material to which the claim of copyright protection is made. The
copyright owner has no objection to the facsimile reproduction by
any person of the patent document or the patent disclosure, as it
appears in the U.S. Patent and Trademark Office file or records,
but reserves all other rights whatsoever. Copyright 2006, WMS
Gaming, Inc.
BACKGROUND
[0004] Computerized wagering games have largely replaced
traditional mechanical wagering game machines such as slot
machines, and are rapidly being adopted to implement computerized
versions of games that are traditionally played live such as poker
and blackjack. These computerized games provide many benefits to
the game owner and to the gambler, including greater reliability
than can be achieved with a mechanical game or human dealer, more
variety, sound, and animation in presentation of a game, and a
lower overall cost of production and management.
[0005] The elements of computerized wagering game systems are in
many ways the same as the elements in the mechanical and table game
counterparts in that they must be fair, they must provide
sufficient feedback to the game player to make the game fun to
play, and they must meet a variety of gaming regulations to ensure
that both the machine owner and gamer are honest and fairly treated
in implementing the game. Further, they must provide a gaming
experience that is at least as attractive as the older mechanical
gaming machine experience to the gamer, to ensure success in a
competitive gaming market.
[0006] Computerized wagering games do not rely on the dealer or
other game players to facilitate game play and to provide an
entertaining game playing environment, but rely upon the
presentation of the game and environment generated by the wagering
game machine itself. Incorporation of audio and video features into
wagering games to present the wagering game, to provide help, and
to enhance the environment presented are therefore important
elements in the attractiveness and commercial success of a
computerized wagering game system. It is not uncommon for audio
voices to provide instruction and help, and to provide commentary
on the wagering game being played. Music and environmental effects
are also played through speakers in some wagering game systems to
enhance or complement a theme of the wagering game. These sounds
typically accompany video presentation of the wagering game on a
screen, which itself often includes animation, video, and
three-dimensional graphics as part of presentation of the wagering
game.
[0007] This wide variety of functions the wagering game system
controls and executes impose a significant demand on the wagering
game system's processor, which not only executes the operating
system and wagering game software, but also performs other tasks
such as verifying the integrity of the nonvolatile storage from
which software is loaded. The processor typically executes each of
dozens of functions as a separate process, and these dozens of
processes compete with one another for a share of the processor's
time and capacity. Even single programs can be run as what are
known as separate threads, tasks, or processes, in which each
process is a distinct series of instructions to be executed in the
processor. Because many processes are in process at the same time,
the processor must switch between processes and manage the
resources allocated to each process to make it appear as though
every process is executing at the same time. But, each process is
therefore only given a fraction of the processor's time, and its
performance is dependent on the operation of other executing
processes.
[0008] It is therefore desirable to execute the various processes
in a wagering game system more efficiently.
SUMMARY
[0009] One example embodiment of the invention comprises a
computerized wagering game system including a gaming module
comprising a processor and gaming code which is operable when
executed on the processor to conduct or present a wagering game on
which monetary value can be wagered. The wagering game system
includes a multi-core processor having multiple processor cores,
the multiple processor cores each operable to execute any thread
executing in the multi-core processor. In further embodiments, the
multiple processor cores and an operating system facilitate
symmetric multiprocessing, parallel processing, or
hyperthreading.
BRIEF DESCRIPTION OF THE FIGURES
[0010] FIG. 1 shows a computerized wagering game machine, as may be
used to practice some example embodiments of the present
invention.
[0011] FIG. 2 is a block diagram of a wagering game system having
multiple processors, consistent with some example embodiments of
the present invention.
[0012] FIG. 3 is a flowchart of a method of operating a wagering
game system having multiple processors, consistent with some
example embodiments of the present invention.
[0013] FIG. 4 is a block diagram of a video system within a
wagering game employing multiple video processors, consistent with
some example embodiments of the present invention.
[0014] FIG. 5 is a block diagram of a video system within a
wagering game employing multiple video processing cores, consistent
with some example embodiments of the present invention.
DETAILED DESCRIPTION
[0015] In the following detailed description of example embodiments
of the invention, reference is made to specific examples by way of
drawings and illustrations. These examples are described in
sufficient detail to enable those skilled in the art to practice
the invention, and serve to illustrate how the invention may be
applied to various purposes or embodiments. Other embodiments of
the invention exist and are within the scope of the invention, and
logical, mechanical, electrical, and other changes may be made
without departing from the subject or scope of the present
invention. Features or limitations of various embodiments of the
invention described herein, however essential to the example
embodiments in which they are incorporated, do not limit the
invention as a whole, and any reference to the invention, its
elements, operation, and application do not limit the invention as
a whole but serve only to define these example embodiments. The
following detailed description does not, therefore, limit the scope
of the invention, which is defined only by the appended claims.
[0016] One example embodiment of the invention seeks to improve
execution of processes in a wagering game system by incorporating
multiple processor cores into the wagering game system. This
example comprises a computerized wagering game system including a
gaming module comprising a processor and gaming code which is
operable when executed on the processor to conduct or present a
wagering game on which monetary value can be wagered. The example
wagering game system also includes a multi-core processor having
multiple processor cores, the multiple processor cores each
operable to execute any thread executing in the multi-core
processor. In further embodiments, the multiple processor cores and
an operating system facilitate symmetric multiprocessing, parallel
processing, or hyperthreading.
[0017] FIG. 1 illustrates a computerized wagering game machine, as
may be used to practice some embodiments of the present invention.
The computerized gaming system shown generally at 100 is a video
wagering game system, which displays information for at least one
wagering game upon which monetary value can be wagered on video
display 101. Video display 101 is in various embodiments a CRT
display, a plasma display, an LCD display, a surface conducting
electron emitter display, or any other type of display suitable for
displaying electronically provided display information. In some
further embodiments, additional displays such as a bonus game
display or top box display 102 are further operable to display
electronically provided information to a wagering game player.
Alternate embodiments of the invention will have other game
indicators, such as mechanical reels instead of the video graphics
reels shown at 103 that comprise a part of a video slot machine
wagering game.
[0018] A wagering game is implemented using software within the
wagering game, such as through instructions stored on a
machine-readable medium such as a hard disk drive or nonvolatile
memory. In some further example embodiments, some or all of the
software stored in the wagering game machine is encrypted or is
verified using a hash algorithm or encryption algorithm to ensure
its authenticity and to verify that it has not been altered. For
example, in one embodiment the wagering game software is loaded
from nonvolatile memory in a compact flash card, and a hash value
is calculated or a digital signature is derived to confirm that the
data stored on the compact flash card has not been altered. The
wagering game implemented via the loaded software takes various
forms in different wagering game machines, including such
well-known wagering games as reel slots, video poker, blackjack,
craps, roulette, or hold 'em games. In some further embodiments, a
secondary game or bonus game is displayed on the secondary display
102, or other information such as progressive slot information or
other community game information is displayed.
[0019] The wagering game is played and controlled with inputs such
as various buttons 104 or via a touchscreen overlay to video screen
101. The touchscreen is used in some embodiments to display virtual
buttons, which can have unique functions in some embodiments, or
can duplicate the functions provided by the mechanical buttons 104
in other embodiments. In some alternate examples, other devices
such as virtual buttons 105 on the touchscreen display or a pull
arm are employed to provide other input interfaces to the game
player, such as to initiate reel spin. The player interface
components are in this example contained within or mechanically
coupled to the wagering game system, but in other embodiments will
be located outside the wagering game system cabinet such as by a
wired or wireless electronic connection to the wagering game
system.
[0020] Monetary value is typically wagered on the outcome of the
games, such as with tokens, coins, bills, or cards that hold
monetary value. The wagered value is conveyed to the machine such
as through a changer 106 or a secure user identification module
interface 107, and winnings are returned such as via a returned
value ticket, a stored value card, or through the coin tray 108.
Sound is also provided through speakers 109, typically including
audio indicators of game play, such as reel spins, credit bang-ups,
and environmental or other sound effects or music to provide
entertainment consistent with a theme of the computerized wagering
game. In some further embodiments, the wagering game machine is
coupled to a network, and is operable to use its network connection
to receive wagering game data, track players and monetary value
associated with a player, and to perform other such functions.
[0021] Operation of these various wagering game machine components,
operation of the operating system and supervisory functions, and
operation of the wagering game itself are controlled via software
executing on one or more processors in the wagering game system.
Various embodiments of the invention incorporate more than one
processor, where each processor is operable to receive and execute
instructions to perform the various functions necessary to operate
a computerized wagering game machine.
[0022] The block diagram of FIG. 2 shows an example of a
computerized wagering game system comprising a first processor 201
and a second processor 202. Both processors are coupled to one
another via a bus, and in some embodiments are located on the same
physical integrated circuit or in the same package 203. A bus
couples the processors to memory 204, and to nonvolatile storage
such as a hard disk drive 205 or nonvolatile memory. The bus also
couples the processor to peripheral devices, such as a graphics
interface and touchscreen display 206, an audio channel and speaker
207, and a network connection 208.
[0023] In operation, the operating system is loaded from the
nonvolatile storage 205 into memory 204, and is executed or run on
the processors 201 and 202. The processors each run a kernel, which
is the core, fundamental process in an operating system. The
kernel's primary function is to manage the execution of other
processes, and to manage their access to hardware elements such as
processor time and memory space. Once the operating system is
loaded, the operating system facilitates loading other software
applications or processes from nonvolatile storage into memory, and
execution of the software in the processors 201 and 202.
[0024] The operating system is operable to manage which processes
are assigned to which processor, or in some cases where a process
is designed for parallel processing, coordinates execution of the
same process on both processors to more efficiently complete a
single process.
[0025] Parallel processes use synchronization techniques such as
semaphores to ensure that the processors process data in order such
that data needed in one processor is not changed by another
processor while in use, or before it can be read. In addition to
managing data dependencies, data is communicated between processes
through use of shared memory space in memory 204, or through
messaging between processors. These are but examples of some of the
methods used to ensure proper execution of parallel processes in a
multiprocessor system.
[0026] Symmetric multiprocessing is a term commonly used to
describe a system in which two or more essentially identical
processors are attached to the same memory, and are each operable
to execute any process that is executable on another of the
processors. It differs from parallel processing in that a single
process is not executed on multiple processors, but is assigned to
a single processor at a time for execution. Symmetric
multiprocessing is supported in part by the operating system, which
is able to manage which processes are assigned to which processors
using a load balancing process so that no single processor is
overworked while others remain idle.
[0027] In some symmetric multiprocessing embodiments of the
invention, some of the processes are assigned to certain
processors, to ensure a certain level of processor time
availability or to avoid interfering with processes running on
another processor. For example, consider a wagering game system
such as that of FIG. 2 that is first turned on. In this example,
the operating system is loaded, and a data verification process is
run on the nonvolatile storage volume 205. In some further
embodiments, data verification is run on multiple volumes to ensure
that each volume has not been altered or tampered with since it was
originally created and certified by gaming authorities as being
fair and authentic for use in a wagering game machine. The
verification process uses significant memory, nonvolatile storage,
and processor resources, and can take from several minutes to
twenty minutes or more.
[0028] The verification process in one example is executed on a
dedicated processor running few if any other processes, so that it
is able to use all the resources available to a processor. In other
examples, the verification process for a single volume is spread
across multiple processors such as by splitting up the volume such
that each processor computes a hash value or verification value for
a portion of the nonvolatile storage volume, or by executing the
verification process as a parallel process. Still other embodiments
include verification of multiple volumes using multiple processors,
where one or more processors are used for each volume.
[0029] Once the volume has been verified as authentic, the wagering
game software is loaded and executed such that the wagering game
can be played. But, to ensure that the software is not tampered
with or altered, a verification process continues to run even
during game play, and typically takes up to 20 percent of a
wagering game processor's time. In some embodiments of the
invention, the verification process is run on a processor other
than that on which the wagering game program is executing, so that
the wagering game program's execution isn't limited or hindered by
the background verification process.
[0030] In some further embodiments of the invention, one or more of
the processors support hyperthreading, or another form of
multithreading, in which multiple processors appear to be present
as virtual processors to the operating system for a single physical
processor. The physical processor has duplicates of certain
architectural components used to track the execution state of a
process or thread, but does not have a full second set of execution
units able to conduct or execute instructions. If a process from
one virtual process or set of architectural components tracking the
execution state of the process is unable to execute for some period
of time, such as while waiting for data to be loaded from memory or
nonvolatile storage, the functional units can be used by the other
virtual processor to continue execution of processes assigned to
that virtual processor. Management of processes among virtual
processes in such a multithreading or hyperthreading system is
again managed by the operating system, which can perform load
balancing or ensure that certain processes run on certain virtual
processors.
[0031] FIG. 3 illustrates a more detailed example of execution of
wagering game and related software on a multiprocessor system. At
301, the dual processor wagering game system is powered on, and
completes a series of power-on self tests and starts the
computerized portion of the system using the BIOS code. An
operating system is loaded into memory from nonvolatile storage at
302, and the kernel is executed on each of the two processors.
Other operating system processes, such as input/output processes
and a load balancing process are also typically run, and are
managed by a supervisory operating system process.
[0032] Once the operating system is loaded and the system has
completed the "boot" process, other software such as driver
software for peripheral devices is loaded. Next, the system
launches a process on the first processor to calculate a hash value
of the first volume to verify its integrity at 303. In various
further embodiments, a second process is executed on the second
processor to hash a second volume, or to hash a portion of the
first volume while the first processor hashes the remaining portion
of the first volume. In an alternate embodiment, the hash process
executes as a parallel process across both processors.
[0033] Once the initial hash verification process is successfully
complete, the wagering game system loads the gaming code and
executes it on a first processor at 304. To ensure the integrity of
the gaming code, a hash process executes continuously in the
background on the second processor, so that the significant load
this imposes on the second processor does not limit the performance
of the wagering game process, such as by slowing down rendering of
complex graphics or reducing the frame rate of animations or
video.
[0034] Assignment of processes to specific processors varies in
some embodiments in that assignment can either be handled
dynamically such as via a load-balancing process, or can be
assigned by pre-designation, such as where certain processes are
assigned to certain processors to avoid interfering with one
another. In this example, a load-balancing process at 305 is
operable to determine which processes should be assigned to which
processor to ensure that work is divided fairly between processor
resources. The balance of work between processors in simplest form
considers the amount of processor time consumed by various
processes, and assigns processes such that each processor has
approximately the same utilization rate. Changes in a process's
time demand on a processor can result in reassignment of one or
more processes, or can affect the assignment of new processes until
the workload is essentially rebalanced. More sophisticated load
balancing methods consider other factors, such as the degree to
which one process depends on another process for data, or the
priority or importance of certain processes.
[0035] Some processes may be assigned to a processor or may be
assigned a higher priority on a given processor due to a higher
need for processor resources. For example, a network communication
or a background hash calculation can be delayed for a fraction of a
second while video or graphics are being rendered, but a similar
delay of a fraction of a second in rendering the video or graphics
would cause a visible glitch in presentation of the wagering game
and cause the game to appear to be operating poorly. Mutiprocessor
wagering game machines can thereby use load balancing and
prioritization to increase the processor time available in the
wagering game system, and to improve the performance of
high-priority processes.
[0036] FIG. 4 shows an example in which the multiple processors are
video processors, and work together to render the same video image.
In this example, a wagering game system bus 401 is coupled to a
video processing system comprising both a first video processor 402
and a second video processor 403, which work together to render an
image to be displayed on touchscreen display 404. In some
embodiments, the processors are linked together via a technology
such as NVIDIA's Scalable Link Interface (SLI), ATI's Crossfire, or
another bus system facilitating cooperation between video
processors or video cards to produce a single image. In this
example, each video processor 402 and 403 is coupled directly to
the video display 404 via its own video channel, such as via DVI or
HDMI video interfaces.
[0037] This ability to use two independent processors to render
video approximately doubles the speed at which video can be
rendered, enabling significantly more complex renderings for video
such as 3D graphics or animations, or for use in very high
resolution displays. In some such embodiments, a single video card
can be installed in a computer system initially, and a second video
card can be added at a later point as an upgrade or installed as a
factory option to provide enhanced video capability. Some examples
require multiple video-specific slots for video cards in the
wagering game system, such as multiple PCI express slots, along
with a separate cable or circuit board link between the two video
cards. Other examples use messages exchanged across the system bus
or another bus to exchange data, or include multiple processors
installed on the same video adapter. Further embodiments include
use of more processors, such as four processor cores, or multiple
video processors each having multiple processor cores, to render
video for a single display.
[0038] FIG. 5 shows another example of using multiple video
processor cores to produce a single video image, consistent with an
embodiment of the invention. A system bus 501 is coupled to a video
adapter 502 having a first video processing core 503 and a second
video processing core 504, each of which are on the same video
card. The work done by each processor in rendering a video image is
combined on the video card, and a single video signal is sent from
the video interface 502 to the video display 505. The display is in
some embodiments a high resolution display, requiring significant
processing power to render a relatively high number of pixels per
refresh. In other embodiments, the complexity of the video image,
such as a detailed rendering of a three-dimensional image, benefits
from the availability of multiple video processors.
[0039] In some further embodiments, the concepts of FIGS. 4 and 5
are combined, such as where two separate video adapters are
connected via a link such as SLI, where each video processor has
multiple video processor cores. This may enable the use of a
greater number of video processors in a single system, further
increasing the graphics performance of the wagering game system.
The video processors or video processing cores in some embodiments
feature other processor features such as hyperthreading and
multiple pipelines, as well as multiple instruction issue
controllers and other such multiprocessing functions in a single
processor or distributed across multiple processors.
[0040] In some further examples, the processors are special-purpose
processors, such as video scalers, which perform certain functions
such as scaling a video image at one resolution to be displayed on
a display with another resolution. This is an example where the
processors may be relatively simple in design and performance, but
use of multiple processors permits scaling the ability of a single
processor to meet the desired performance goal.
[0041] The examples presented here have shown a variety of ways in
which multiprocessor wagering game systems can execute processes
across multiple processors, thereby improving performance of the
wagering game system. The added processor capacity enables more
efficient operation of background tasks such as hashing nonvolatile
storage or memory during game play, faster execution of tasks that
can be divided between processors such as operating system tasks
and startup hash verification, and enables dedication of greater
processor resources to high priority processes such as rendering
the wagering game display. Although specific embodiments have been
illustrated and described herein, it will be appreciated by those
of ordinary skill in the art that any arrangement which is
calculated to achieve the same purpose may be substituted for the
specific embodiments shown. This application is intended to cover
any adaptations or variations of the example embodiments of the
invention described herein. It is intended that this invention be
limited only by the claims, and the full scope of equivalents
thereof.
* * * * *