| An Intel MIC X100 device is a PCIe form factor add-in coprocessor | 
 | card based on the Intel Many Integrated Core (MIC) architecture | 
 | that runs a Linux OS. It is a PCIe endpoint in a platform and therefore | 
 | implements the three required standard address spaces i.e. configuration, | 
 | memory and I/O. The host OS loads a device driver as is typical for | 
 | PCIe devices. The card itself runs a bootstrap after reset that | 
 | transfers control to the card OS downloaded from the host driver. The | 
 | host driver supports OSPM suspend and resume operations. It shuts down | 
 | the card during suspend and reboots the card OS during resume. | 
 | The card OS as shipped by Intel is a Linux kernel with modifications | 
 | for the X100 devices. | 
 |  | 
 | Since it is a PCIe card, it does not have the ability to host hardware | 
 | devices for networking, storage and console. We provide these devices | 
 | on X100 coprocessors thus enabling a self-bootable equivalent environment | 
 | for applications. A key benefit of our solution is that it leverages | 
 | the standard virtio framework for network, disk and console devices, | 
 | though in our case the virtio framework is used across a PCIe bus. | 
 |  | 
 | Here is a block diagram of the various components described above. The | 
 | virtio backends are situated on the host rather than the card given better | 
 | single threaded performance for the host compared to MIC, the ability of | 
 | the host to initiate DMA's to/from the card using the MIC DMA engine and | 
 | the fact that the virtio block storage backend can only be on the host. | 
 |  | 
 |                               | | 
 |        +----------+           |             +----------+ | 
 |        | Card OS  |           |             | Host OS  | | 
 |        +----------+           |             +----------+ | 
 |                               | | 
 | +-------+ +--------+ +------+ | +---------+  +--------+ +--------+ | 
 | | Virtio| |Virtio  | |Virtio| | |Virtio   |  |Virtio  | |Virtio  | | 
 | | Net   | |Console | |Block | | |Net      |  |Console | |Block   | | 
 | | Driver| |Driver  | |Driver| | |backend  |  |backend | |backend | | 
 | +-------+ +--------+ +------+ | +---------+  +--------+ +--------+ | 
 |     |         |         |     |      |            |         | | 
 |     |         |         |     |User  |            |         | | 
 |     |         |         |     |------|------------|---------|------- | 
 |     +-------------------+     |Kernel +--------------------------+ | 
 |               |               |       | Virtio over PCIe IOCTLs  | | 
 |               |               |       +--------------------------+ | 
 |       +--------------+        |                   | | 
 |       |Intel MIC     |        |            +---------------+ | 
 |       |Card Driver   |        |            |Intel MIC      | | 
 |       +--------------+        |            |Host Driver    | | 
 |               |               |            +---------------+ | 
 |               |               |                   | | 
 |      +-------------------------------------------------------------+ | 
 |      |                                                             | | 
 |      |                    PCIe Bus                                 | | 
 |      +-------------------------------------------------------------+ |