Xbox One (Durango) Technical hardware investigation

Status
Not open for further replies.
Because that adds complexity to the Hypervisor. Part of the Host OS job is to provide communication channels between the game and system OS, and manage hardware resource allocations. Adding that to the Hypervisor adds a huge surface area for possible Hypervisor attacks. In general, you want the Hypervisor to be as small as possible.
Seconded. We have several platforms that use this model and it proves highly advantageous when it comes to maximising CPU and memory resources across the primary (high level) operating systems.

Although conventional wisdom is that more layers is bad for performance, that view tends to be echoed from people who've used systems where OS and hardware resources are managed and re-managed at multiple levels. If you have a virtual OS hierarchy where each system is cognizant the others above it, as I'm assuming the Xbox One is, not only is the overhead minimal but because you have a better picture of a piece of code in the overall system at a multiple levels, debugging and optimising can be much easier across the whole system.
 
No, that quote is correct. The system does run two virtual machines inside a third virtual machine. The third VM (Known as the Host OS when I was there) is the only one that talks directly to the Hypervisor.

At boot time, the Hypervisor creates the first VM and loads the Host OS image, then the Host OS finds and loads the System and Game OS images. Game OS image is essentially the game itself. It ships on the disc.

The team had to make significant changes to the VM software to allow to it run multiple VMs inside itself, amongst other things. It is one of the main reasons Dave Cutler, the guy who originally wrote the NT Kernel, as well as being in charge of VM development for Azure, came to the XBox team.

Seconded. We have several platforms that use this model and it proves highly advantageous when it comes to maximising CPU and memory resources across the primary (high level) operating systems.

Although conventional wisdom is that more layers is bad for performance, that view tends to be echoed from people who've used systems where OS and hardware resources are managed and re-managed at multiple levels. If you have a virtual OS hierarchy where each system is cognizant the others above it, as I'm assuming the Xbox One is, not only is the overhead minimal but because you have a better picture of a piece of code in the overall system at a multiple levels, debugging and optimising can be much easier across the whole system.

I love it when I'm wrong and people are patient enough to explain why! I'd never considered the security advantages of a very lightweight VM but they seem very obvious in hindsight, a sort of 'But our pwning is in another castle' for anyone who cracks through the client or game O/S. My own experience is from the x86 server world which, as DSoup points out, has each O/S essentially ignorant of whether they are in a VM or not and so each is spending a lot of overhead managing resources that is unnecessary in a model where each layer is aware of the other.
 
What difference does it make if they are aware of each other or not. If the underlying OS has to trap, schedule, re-map, and or re-write privileged CPU/GPU/Mem calls than you're slowing things down no matter how you slice it. The only thing that somewhat makes sense is to allow that so called Host OS to sit under the System OS, as the Host OS probably wouldn't require a full core and you could still share the same physical reservation for both; whilst still having it to provide virtualized I/O to System and Game OS's as well as managing the hypervisor, etc. in a separate mem space. The Game OS should be talking directly to the hypervisor, and if it's not, shame on MS; they deserve to be running at lower resolution and frame-rate than their competition.
 
Whats the chance that Xbox One setup is similar to a OS setup like MIT's exokernel design? Where you have a kernel that manages access to hardware resources but the management of those resources are handled by the applications (library OSes) themselves and also provides the hardware abstraction.

Could the Xb1 design be a VMM based design with an exokernel operating system design philosphy?
 
Whats the chance that Xbox One setup is similar to a OS setup like MIT's exokernel design? Where you have a kernel that manages access to hardware resources but the management of those resources are handled by the applications (library OSes) themselves and also provides the hardware abstraction.

Could the Xb1 design be a VMM based design with an exokernel operating system design philosphy?

throw some Midori/Drawbridge in there :)
 
Last edited by a moderator:
If the underlying OS has to trap, schedule, re-map, and or re-write privileged CPU/GPU/Mem calls than you're slowing things down no matter how you slice it.

That's the exact issue.
You can make 2 VMs talk in 2 ways imho:

1) shared memory as IPC, but you need to transform GameOS and winOS in a messaged-system... easy for GameOS, but wth on WinOS????

2) trap/vmcall in H, with data in some shared area (you DONT dare to copy data from H all times, surface attack gets amplified), jump in HostOS and... either jump back or *maybe* use monitor instruction in shared area from original VM to get the result?!

...ugh. Any got an alternative way (that doesnt include to rewrite the H in Juaguar ofc)

I start to see why one core might rank 14Mb/s and the other 12 Mb/s... and yet, XB1 is supposed to be clocked higher...

Would be interesting to understand the route of interrupts, honestly...
 
The DF architect interview mentioned one area of overhead they had to work to minimize, but could not fully avoid. It was the higher cost of interrupts for the GPU. The virtualization capability of that hardware is apparently not as flexible.
 
That's the exact issue.
You can make 2 VMs talk in 2 ways imho:

1) shared memory as IPC, but you need to transform GameOS and winOS in a messaged-system... easy for GameOS, but wth on WinOS????

2) trap/vmcall in H, with data in some shared area (you DONT dare to copy data from H all times, surface attack gets amplified), jump in HostOS and... either jump back or *maybe* use monitor instruction in shared area from original VM to get the result?!

...ugh. Any got an alternative way (that doesnt include to rewrite the H in Juaguar ofc)

I start to see why one core might rank 14Mb/s and the other 12 Mb/s... and yet, XB1 is supposed to be clocked higher...

Would be interesting to understand the route of interrupts, honestly...
The XB1 uses the shared memory system for communications between VMs. They also did some smart things with the virtualized driver stack in some places. The Game OS "virtual" driver for certain devices talks directly to the hardware. I can't really elaborate, since I only saw the fringes of it, and this is just my understanding from some tech specs that went past.
 
... The Game OS "virtual" driver for certain devices talks directly to the hardware. I can't really elaborate, since I only saw the fringes of it, and this is just my understanding from some tech specs that went past.

Any chance you have an example of a device that fits into that 'Certain devices' ? If you know that is, and I understand that you only saw the fringes of the documentation :)

eg. do you mean D3D/D2D device with a specific configuration etc.
 
What part of the Xbox One would be designed for Cloud Computing?! Is there even a hardware piece in the consoel to use cloud computing for AI or physics???
 
I think they've talked up cloud compute not so much for what's in the xbox, but rather what's not in it.
1) raw power relative to the competition.
2) big datacenters of servers they have.

Generally speaking things are unfolding in 2 directions in this regard. One is augmenting the local experience using cloud compute for things like NPC AI, multiplayer hosting, dynamic player data aggregation or automated processes to drive gameplay changes, etc. While nice, these haven't been demonstrated to impressive effect yet. Two is remote rendering ala Gaikai, OnLive, etc. where the game is actually running in the cloud. This comes with major latency and bandwidth concerns.

Clearly there is no panacea here and mostly a marketing tool at this juncture. That's not to say that interesting scenarios couldn't / wouldn't ever develop from leveraging cloud resources. Sometimes all it takes is one great idea. The reality is there is no "cloud" specific hardware in either console regardless of what you've heard. There are "cloud" specific api's that are part of the dev stack, and perhaps that's what they are referring to.
 
I think they've talked up cloud compute not so much for what's in the xbox, but rather what's not in it.
1) raw power relative to the competition.
2) big datacenters of servers they have.

Generally speaking things are unfolding in 2 directions in this regard. One is augmenting the local experience using cloud compute for things like NPC AI, multiplayer hosting, dynamic player data aggregation or automated processes to drive gameplay changes, etc. While nice, these haven't been demonstrated to impressive effect yet. Two is remote rendering ala Gaikai, OnLive, etc. where the game is actually running in the cloud. This comes with major latency and bandwidth concerns.

Clearly there is no panacea here and mostly a marketing tool at this juncture. That's not to say that interesting scenarios couldn't / wouldn't ever develop from leveraging cloud resources. Sometimes all it takes is one great idea. The reality is there is no "cloud" specific hardware in either console regardless of what you've heard. There are "cloud" specific api's that are part of the dev stack, and perhaps that's what they are referring to.

Thank you very much Rockster with your honest answer.
 
I think they've talked up cloud compute not so much for what's in the xbox, but rather what's not in it.
1) raw power relative to the competition.
2) big datacenters of servers they have.

Generally speaking things are unfolding in 2 directions in this regard. One is augmenting the local experience using cloud compute for things like NPC AI, multiplayer hosting, dynamic player data aggregation or automated processes to drive gameplay changes, etc. While nice, these haven't been demonstrated to impressive effect yet. Two is remote rendering ala Gaikai, OnLive, etc. where the game is actually running in the cloud. This comes with major latency and bandwidth concerns.

Clearly there is no panacea here and mostly a marketing tool at this juncture. That's not to say that interesting scenarios couldn't / wouldn't ever develop from leveraging cloud resources. Sometimes all it takes is one great idea. The reality is there is no "cloud" specific hardware in either console regardless of what you've heard. There are "cloud" specific api's that are part of the dev stack, and perhaps that's what they are referring to.

Don't forget the most important aspect of it, it is "free" to all Xbox One developers, both big and small. Though I am wondering, if Microsoft actually intends on cross-platform games to ever use it, what would happen with the PS4 version of a game? Surely, if a game is actually to rely on having cloud servers available like Forza 5 does, you wouldn't have two separate versions of the game.

Actually, that least to an interesting question. What happens when you try to play Forza 5 completely offline with zero Drivatars available? The game is clearly built to be constantly communicating with the cloud for more drivatar data.
 
If you don't know, don't bother answering. Simple.

Aside from that, I found a source a few months back stating something within the Xbox One that allows full cloud computing capabilities specifically designed.
The hardware in the machine that enables cloud computing is the network. Cloud computing is entirely processing on remote servers, and all a device needs to use cloud computing is a means to access remote servers.

Don't forget the most important aspect of it, it is "free" to all Xbox One developers, both big and small. Though I am wondering, if Microsoft actually intends on cross-platform games to ever use it, what would happen with the PS4 version of a game? Surely, if a game is actually to rely on having cloud servers available like Forza 5 does, you wouldn't have two separate versions of the game.

Actually, that least to an interesting question. What happens when you try to play Forza 5 completely offline with zero Drivatars available? The game is clearly built to be constantly communicating with the cloud for more drivatar data.
Wrong thread. ;) XB1 technical discussion.
 
Status
Not open for further replies.
Back
Top