Embedded Virtualization in Gaming

A few weeks ago I found myself in the Hard Rock Hotel in Las Vegas. My reason for being there was a seminar that Wind River was organizing together with Intel and AVNET specifically focussed on companies that build gaming. The main topics were graphics, manageability and of course, virtualization.


I am always eager to fold real-life examples into my presentations, hence I decided to try my luck at some of the slot machines in the Hard Rock Hotel under the disguise of 'domain study'. And I have to say, the state of slot machines has progressed significantly since the last time that I was in Vegas many years ago. The top of the line machines had multiple 30" inch displays with either static or moving imagery, they had player tracking, surround sound, some of them even had imagery over the rolls themselves.

Since this was a domain study, I started thinking what type of hardware would be running in these slot machines. Off the top of my head I could come up with the following sub-systems:

 

  • Money collection: The part where you insert your dollar bills
  • Money return: much less used, but important nonetheless
  • The game: This is the part that is the most fun
  • Machine management: The part that reports on whether the machine is doing okay, that connects money collection, return and the game to the central casino management
  • Player tracking: where you slide your card and it keeps track of your preferences, and feeds your gambling habits back to the casino for perks. This is also where (in a more advanced scenario) you could order drinks, make reservations for restaurants and stuff.
So that is 5 separate subsystems and I expect that almost all of them run on their own dedicated hardware. That is 5 processors, memory, power supplies and so forth in that big box. Now, the slot machines are fairly big, so I don't think that space is an issue, but heat dissipation could be and maintenance certainly is. I was talking to another customer and they were using a number of 6% as the yearly failure rate of a single board. The higher the board count, the higher the potential of failure of course.
Technically I could integrate all of these 5 different subsystems in a single multicore chip using embedded virtualization. Each subsystem would run it's own OS inside of a virtual machine. The OS may be a real-time OS, or a general purpose or graphics OS such as Windows. The game would be the biggest compute power user, so it would need a dedicated core, possibly 2. The other parts are much smaller and can probably all share (time slice) a single core. From a device assignment, most of the devices would all be partitioned between the different virtual machines, the one exception possible be graphics. The virtual machines would also need to communicate between each-other which is very easy to set up within the multicore environment.
One thing to keep in mind is that these virtual machines will run at different levels of certification. The money collection machine for example may need to interact with credit card verification back ends, the game of course needs to be certified by the gaming commission and such. To this extent the embedded virtualization layer needs to be certifiable to at least the most stringent certification level of each of the subsystems.
One thing to keep in mind is that these virtual machines will run at different levels of certification. The money collection machine for example may need to interact with credit card verification back ends, the game of course needs to be certified by the gaming commission and such. To this extent the embedded virtualization layer needs to be certifiable to at least the most stringent certification level of each of the subsystems.
Virtualization of the display is a fun topic. In principle it is not difficult, however, in this case there is a bit of added complexity with regards to the certification. It needs to be very clear to the user when he is gambling, versus when he is looking at player tracking, venue reservation or generic web-browsing and the data entered should never been able to be leaked into the other application. For instance, when the user needs to input credit card data for venue reservation, that should not be usable by the game or by the generic web browser, or very bad situations can develop.
The 'domain study' resulted of course in the casino making some money off me, but I had sufficient content to talk about in the seminar the next day.
Wind River Hypervisor 1.2, which was officially announced last week, provides support for 'unmodified guests', meaning that one can run Microsoft Windows, a 3rd party operating system, or an in-house operating system unmodified on processors that support hardware assist for virtualization (such as the Freescale P4080, or Intel processors with VT-x). This is a main enabler for consolidating multiple boards on a single multi-core processor, which is of course not limited to the gaming industry highlighted in this post, but also much desired in industries such as Networking, Industrial Automation, Medical, Automotive. Aerospace and Defence and so forth.