The Multiprocessor Simulation Environment is a tool currently being developed by a team of graduate students in the Image Computing System Laboratory at the UW. MSE is designed to be a tool for high-level architectural development and performance evaluation of multiprocessor systems. Currently, it is targeted primarily at the development of a progammable ultrasound back-end, although it is by no means limited to one application area.
Building a fully-progammable board that can meet the performance requirements of ultrasound is a challenging task. The challenge lies not only in designing a system that can process in real-time, but one which can do so over a wide range of function types and implementations. Building a system which is flexible and scalable is also a major element to be considered in the design process. While over-optimization should be avoided, there is also the danger of under-optimizing. That is, not taking advantage of the dataflows and algorithm characteristics found in ultrasound systems. Figure 1 illustrates this concept graphically.
A simulation envrionment which can model both target processes and inter-process communication with reasonable accuracy, yet which allows users to vary features of the system in an efficient and methodic fashion would be a powerful tool for high-level architecture development. It would allow a system architect to test a wide variety of interconnects and communication schemes relatively quickly, evaluate the performance, and change the architecture appropriately in order to minimize problem areas. In addition, it would act as an aid in ruling out a large number of possible designs, thus making the development process more manageable.
The Multiprocessor Simulation Environment is designed to be used as such a high-level architecture development tool. It consists of a set of modules, such as processors, caches, non- cahce memories, and DMA (direct-memory access) units, among others, which represent the basic building-blocks of a system. The modules can be placed together in a manner designated by the user, with minimal glue logic needed to interface. Programs or tasks are represeted by address traces, which characterize a specific algorithm of a function running on a specfic type of proces sor. The address trace is the stimulus which drives the processor-level module, which in turn drives the cache-level and bus-level modules in the remainder of the system.
MSE can provide an accurate picture of how a system will perform given certain hardware constraints, such as available bus bandwidth, a specific implementation of tasks, and the assign ment of the tasks to one or more nodes in the system. A powerful aspect of the tool is that the user can vary one or all of the above items, referred to as "architectural variables", to observe the effect on system performance. For a high-level design, it can be used to optimize the architecture design to a general target application area or to a speicific set of algorithms.