By Jakob Engblom
As you might know, the Wind River Simics product is developed jointly by Wind River and Intel, and Intel is using Simics to develop its own products. Much of what Intel does with Simics is internal and rarely presented in public. However, Simics is a critical tool in developing next-generation hardware and software systems at Intel, and there are many interesting and cool applications of the Simics technology internally at Intel. In this interview, Karthik Kumar and Thomas Willhalm from Intel’s Software and Services Group offer some insight into how they use Simics with application-level software to make sure Intel builds the right hardware with the right features, including running code on hardware that just does not exist yet.
Jakob Engblom (JE): Please introduce yourselves!
Karthik Kumar (KK): I’m Karthik Kumar, an engineer working with Intel’s Software and Services Group, based in the US. I work with enterprise partners to optimize their applications, and enable new features on Intel-based platforms. My areas of interest and expertise span big data solutions, and next generation memory technologies.
Thomas Willhalm (TW): I’m Thomas Willhalm, an engineer with Intel’s Software and Services Group, based in Germany. I work and consult with independent software vendors (ISV) in optimizing their software for Intel architecture. My areas of expertise are enterprise applications and databases with a focus on SIMD and next-gen non-volatile memory (NVM) solutions.
JE: What are your roles at Intel?
KK and TW: To begin, we would like to highlight two things: (1) Intel provides industry leadership by innovating and coming out with new technologies and features: for example, Intel recently announced 3D XPoint memory technology (2) Enterprise software applications are becoming increasingly complex, and often times, there is a lot of heavy-lifting behind the scenes that is required for a major software product to adopt a new Intel technology or feature.
Now to answer your question, our role sits squarely at the intersection of the above two: as software experts, we work with our CPU and platform architects to provide real world software input that helps define and shape new technologies as they go through a multi-year internal design pipeline at Intel. At a certain point in the design pipeline (long before a technology is publicly announced), we begin working with our strategic partners (major software vendors) to investigate and design how their software can be adapted/re-architected to take full advantage of a new Intel technology.
JE: Thank you; that is a really critical role. New hardware features don’t have much value unless the software support is there, and if you try to design hardware without input from real applications, you are likely to design something less than optimal for the real world.
How do you use Simics to do your job?
TW: The elevator pitch is that Simics is a powerful simulation and development tool. It has improved our ability to improve, enhance, and advance customer software development on Intel platforms, a.k.a. shift-left. It has improved Intel future CPU design capabilities, a.k.a. architectural feedback.
With Simics, software development for new Intel hardware can begin long before first silicon availability, and therefore can be used to drive hardware design as there are still opportunities for change so early in the design cycle. We call this hardware-software co-design because starting early in the design cycle provides the opportunity to “co-design” next generation app software and next generation hardware. To summarize, our use of Simics spans three vectors: shift left, architectural feedback, and hardware-software co-design.
JE: And you run application-level software on Simics, not just firmware and UEFI?
TW: Yes, we run the full-fledged unmodified application software stack. That is one of the big advantages of Simics when compared to user space simulators, from the software perspective the application runs just as it would on real hardware without any modifications! Simics provides us with a collaboration platform that can be shared with software partners and that lets them code for the hardware before it exists. It works something like this:
JE: Let’s start with shift-left. How much time do you save compared to waiting for hardware?
KK: About a year or more. In some cases more, like when hardware features can be simulated in a general way such as with high-bandwidth memory that can be handled like a multi-gigabyte cache, you can start very early. In other cases, you have to wait for models to arrive that implement a particular instruction set architecture (ISA) and then it is more like a year before first silicon.
JE: Wow! Being able to work with future features years in advance is incredibly powerful and a testament to the value of using software simulation to develop hardware.
Can you tell us some particular cases where Simics has been used?
TW: We are using a Wind River® Simics® Model Library for a “future Intel® Platform” virtual platform model to glean insights into how software may perform on said platform. Specifically, 3D XPoint memory tracing capabilities are available in Simics – and this enables us to understand how software may use this memory on the actual platform. Furthermore, the Simics virtual platform model has the full “future Intel Platform” instruction set and we are working with a leading software vendor to prototype and test their software design on the future Intel Platform.
JE: Wow again! We are talking about new ground-breaking technologies from Intel here, major buzz from 2015. And it is already running and being used in Simics. Once the hardware ships, the software will be there to take advantage of it!
What about architecture feedback and co-design?
KK: Another use for Simics is to help improve HW and SW design with enhanced insights and tracing capabilities.
Data to make decisions on various future Intel technologies is collected using the special features of Simics. For example, special CPU instruction traces of an in-memory database were collected using Simics and used to evaluate the feasibility of a special 2019 hardware feature!
JE: Are there any particular Simics features that you find useful?
KK: The ability to trace instructions and memory is very useful: it helps identify how a future instruction or memory feature will impact an application and help course-correct with application design or hardware design. As another example, it’s useful to inspect the contents of vector registers and be able to step through forwards and backwards while debugging and prototyping vector code. In addition, scriptability, checkpointing, etc., make Simics a very powerful tool!
We have also had great use of the programmability and extensibility of Simics and Simics models. The Simics team at Intel haspent a lot of effort developing custom Simics features specifically for us (such as tracing of hardware accesses and use of NVM technology), helping us gather the data we need. We really would like to thank them for their efforts in supporting us and our partners!
JE: Thank you! I understand that customer and technology confidentiality sometimes puts limits on what one can say in a public forum, but I think this was a very interesting look at one way that Intel uses Simics to drive new technology development.
A few years ago, I and Daniel Aarno at Intel put together an Intel Technology Journal issue on Simics and Simics use at Intel. This offers some more insights into how Intel and researchers have used Simics. You find more information about the issue (downloadable for free) in a previous blog post.