LLVM Patches Confirm Google Has Its Own In-House Processor
phoronix.com
phoronix.com
Is Google planning on eventually releasing this architecture publicly or maybe licensing it to third party manufacturers, a-la ARM?
If we're just talking about pure refactoring that doesn't change any output, you could test that the generated machine code is identical. But then you have to ask, why isn't there a stable API rather than all this refactoring churn?
I guess this is just the way LLVM and Clang are designed -- all components really tightly coupled together. And it's a successful project so it must be working out for them. But...!
LLVM deliberately does not want a stable API. It wants people to keep up with trunk.
They do this because they saw what has happened with other compilers, where the stable API became literally impossible to change over time.
This is one of the reasons GCC still has a crappy backend. You either have to build a new API and port everyone over, or you have to find an incremental way to change an API interface with hundreds of random interface points.
Everybody else pays a small "maintenance tax" when working on the codebase or relying on work being done on that codebase.
Being by no means a compiler expert I do suspect however, that this "tax" is tiny and likely to be dwarfed by other contributions from Google, so letting them solve distribution of their private backend by piggybacking on the public release is most likely the right course of action.
Here's gcc for it: https://github.com/myri/lanai-gcc
Sounds like it's not particularly interesting unless you want to write your own network offload code.
Edit: Probably just the offload processor they are choosing for their in-house routers/switches/servers. And, probably they want their own firmware either for security/nsa reasons, or performance, or both.
It certainly seems believable that this is a third-party processor architecture, but Google has a contract with them to build specific models of that processor that meet their needs (possibly alongside some other proprietary hardware, like a high-speed NIC), and those models aren't sold to the general public. That's pretty common outside x86, right? For instance, is there a way for me to buy a BCM2835 other than by buying a Raspberry Pi?
The page states: """ A generally accepted rule of thumb is that 1 hertz of CPU processing is required to send or receive 1 bit/s of TCP/IP.[3] For example, 5 Gbit/s (625 MB/s) of network traffic requires 5 GHz of CPU processing. """
Question for people in this line of work: is this accurate / reasonable?
Thanks
The generally accepted rule of thumb is that 1bps of network link requires 1Hz of CPU processing. Figures 11, 12 give a full story of this rule of thumb. (where Hz/bps ratio = %CPU utilization * processor speed / bandwidth). It had held up remarkably well over the years, albeit only for bulk data transfer at large sizes. For smaller transfers, we found the processing requirement to be 6-7 times as expected. Moreover, the figures show that network processing is not scaling with CPU speeds. The processing needs per byte increase when going from 800MHz to 2.4GHz. This happens because as CPU speed increases, the disparity between memory and I/O latencies versus CPU speeds intensifies.
Also, what kind of physical/logical process and attendant costs is it encoding? Does one per second of anything require one per second of something else? What if the processor were half- or double-the-bits?
I just did the calculation. It says for 10MB/s I'd need 80MHz. The chip runs at 84MHz. So, it's pretty close :)
It may be accepted as a full backend in the future, but that discussion is deferred since people are happy with it being experimental for now.
It's perhaps not fair, but just a reality that a company like Google has a lot to offer so they can sometimes get special treatment.
(Once you have > ~5 backends, which LLVM does the cost of doing the latter just doesn't really change much).
If you want to build a real community, turning away contributions likely to lead to an overall net positive for the community tends not to be a good approach :)
(I await the arguments about corporations having no care about communities or whatever else)
Nothing too interesting, as it doesn't use IBM's 7nm or Intel's 10nm chip tech. Just a simple but parallel high-speed network chip, as used in the Myrinet network cards. The old ones ran with 33MHz but very low latency.
Really exciting would be the Power8 based on IBM's new 7nm, which would finally blow away Intel advantages on an fully open (and unbackdoored) design.
Sounds like you read https://raptorengineeringinc.com/TALOS/prerelease.php :-)
Might as well be a MIPS. The fact that Google has suppoedly developed its own CPU is interesting, but the architecture itself seems quite mundane.
Edit: comments on the article suggest it's the Myricom LANai, a NIC embedded processor. Google may just happen have these NICs in their machines and want to write firmware for them.
It could be lanAI too...
[1] http://www.pdl.cmu.edu/SDI/2015/slides/DatacenterComputers.p...
And Amazon's "custom" CPUs are 100 MHz faster Xeons.
How many times have we seen a huge corporation do something in house, then release it for public consumption several years later? At this time, it will probably stay in house, but if there is a revenue opportunity, trust me, they'll release it.
1. Indirectly, via ASPIRE Lab.