And this is not the way you are thinking right now!
Of course you can connect two Surface Pro 4s together today using a network. But that only allows users to share storage and devices hooked up to the network, such as printers.
This article is looking at a patent. Typical patents usually don’t materialize into products majority of the time. So take this with a grain of salt, but it is an interesting idea nonetheless.
A new patent
Microsoft has submitted a new patent that describes how two Surface Pro 4s can be connected together using a connector that features two keyboard connectors!
Why would you want to do this?
So that you can do something like this:
Basically, you will end up with two screens, one above the other. Both screens are a fully featured Surface Pro type of devices. Kinda looks like one of the new Yoga devices with the keyboard based on a touch screen. Right?
According to Microsoft’s patent, this idea doesn’t stop at connecting two tablets together. They are suggesting that you can connect two very different types of devices as well – such as a tablet and a phone. If this only allowed the second device to be used as an input device, it wouldn’t be very interesting. Similar devices exist already today. But they are suggesting that it is possible to share both processing and memory!
Distributed Computing
Yes, they are talking about distributed computing.
Clearly in this diagram, they are suggesting that processing, memory, IO and other components are sharable.
I suppose in some rudimentary ways, the Surface Book is doing this already. By having the DGPU in the keyboard section, it is utilized only when the body is attached. But it is very rudimentary indeed.
Of course, there are issues with this idea. Most of the work done on typical desktop machines today aren’t really suited for distributed computing environment. They are already having a hard time utilizing multiple cores within a CPU connected using incredibly fast communication busses. These connectors will be much slower.
Much of today’s applications will need to be massively rewritten to take advantage of it. That’s, even if it were at all possible. On the positive side, most of today’s applications are multi-threaded already. There’s definitely opportunities for some.
There are applications such as video rendering or processor intensive calculations that can gracefully split tasks into chunks. These chunks can be processed in parallel without dependencies between each other. These applications are ideal for sharing across devices with slower links. Also, there are many apps out there already that are utilizing clouds which can thrive in this environment as well.
Just imagine, your family owns 4 PCs, 4 phones, 2 tablets and 2 TVs. Any of them can “contribute” part of their device “power” into the mini-cloud that exist within the house. Whoever needs the most processing power (or memory) at that moment will get it. When you detach yourself from the “cloud”, you get your full hardware back.
A Kid says, “Mom, our 4K TV video stream is lagging”. Mom says, “Ok, I’ll contribute my phone. Hold on.”
Or even create a circle of friends or families sharing their device power over the internet.
Ok, I think I’m going too far here… 🙂
Kent Beck link to his wiki