Many common uses for virtual prototypes show up when physical prototypes are not yet available. However, even when physical prototypes already exist, virtual prototypes can still provide benefits. Deep visibility into fine-grained system behavior is a common goal, but often hard to achieve with physical prototypes. Virtual prototypes can help and provide superior visibility and control.
Modern Systems Need In-Depth Visibility
Understanding system behavior is crucial when building today’s increasingly heterogeneous computer systems. The performance of modern systems is no longer solely determined by the processing power of individual components. Instead, it’s influenced by a myriad of intricate and elusive interactions between hardware and software components, such as getting input/output data to/from a hardware accelerator or unexpected systems software bottlenecks on the critical path of μs-scale application requests. To optimize performance and ensure reliability, developers need a deep understanding of how these components function together. However, achieving this visibility is challenging due to the fine-grained nature of interactions between system components.
Physical Prototypes Provide Insufficient Visibility
While physical prototypes provide valuable insights, they provide limited visibility. They often cannot offer detailed visibility into hardware components or their interactions with other components. When this is possible, it often requires specialized equipment such as PCIe analyzers. While such tools can record low-level hardware behavior at a granularity of individual PCIe transactions, they are extremely expensive and impractical to deploy for larger systems. On the other hand, this detailed information has become increasingly important for understanding the behavior of modern systems to achieve the best performance possible.
Virtual Prototypes offer Superior Visibility
Virtual offers a flexible alternative to physical prototypes with superior visibility. Virtual versions of hardware and software components allow engineers to quickly test different designs, evaluate components that are not yet available, and explore the impact of changes on the behavior of existing systems. During all of this, virtual prototypes offer a means to practically record fine-grained low-level hardware behavior of systems components as required, such as interrupts, DMA delay, NIC queueing, or individual PCIe transactions that are required to fully understand the behavior of modern systems to identify root causes of a systems runtime behavior. Crucially, virtual prototypes can log even the smallest operations, such as cache accesses or circuit waveforms, without affecting system behavior at all. The information obtained this way can then be used to analyze and ultimately gain a deep understanding of the systems under observation.
SimBricks: Virtual Prototypes for Complex Systems
SimBricks offers a comprehensive solution for virtual prototyping of even complex and large-scale modern computer systems. SimBricks realizes virtual prototypes through simulations of the complete system including all components and their interactions. By simulating the interactions between the different components of a system, SimBricks can reveal bottlenecks that are not apparent from analyzing components in isolation. Making sense of the flood of recorded data can also present a challenge, learn more about how to address this from our recent blog post. You can also learn more about how virtual prototypes with SimBricks work, including technical internals, in our other blog posts.
If you would like to learn more, please do not hesitate to reach out: