Caz Yokoyama | 8d49751 | 2013-09-05 16:42:39 -0700 | [diff] [blame] | 1 | An Intel MIC X100 device is a PCIe form factor add-in coprocessor |
| 2 | card based on the Intel Many Integrated Core (MIC) architecture |
| 3 | that runs a Linux OS. It is a PCIe endpoint in a platform and therefore |
| 4 | implements the three required standard address spaces i.e. configuration, |
| 5 | memory and I/O. The host OS loads a device driver as is typical for |
| 6 | PCIe devices. The card itself runs a bootstrap after reset that |
Dasaratharaman Chandramouli | af19049 | 2013-10-03 18:06:23 -0700 | [diff] [blame] | 7 | transfers control to the card OS downloaded from the host driver. The |
| 8 | host driver supports OSPM suspend and resume operations. It shuts down |
| 9 | the card during suspend and reboots the card OS during resume. |
Caz Yokoyama | 8d49751 | 2013-09-05 16:42:39 -0700 | [diff] [blame] | 10 | The card OS as shipped by Intel is a Linux kernel with modifications |
| 11 | for the X100 devices. |
| 12 | |
| 13 | Since it is a PCIe card, it does not have the ability to host hardware |
| 14 | devices for networking, storage and console. We provide these devices |
| 15 | on X100 coprocessors thus enabling a self-bootable equivalent environment |
| 16 | for applications. A key benefit of our solution is that it leverages |
| 17 | the standard virtio framework for network, disk and console devices, |
| 18 | though in our case the virtio framework is used across a PCIe bus. |
| 19 | |
| 20 | Here is a block diagram of the various components described above. The |
| 21 | virtio backends are situated on the host rather than the card given better |
| 22 | single threaded performance for the host compared to MIC, the ability of |
| 23 | the host to initiate DMA's to/from the card using the MIC DMA engine and |
| 24 | the fact that the virtio block storage backend can only be on the host. |
| 25 | |
| 26 | | |
| 27 | +----------+ | +----------+ |
| 28 | | Card OS | | | Host OS | |
| 29 | +----------+ | +----------+ |
| 30 | | |
| 31 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ |
| 32 | | Virtio| |Virtio | |Virtio| | |Virtio | |Virtio | |Virtio | |
| 33 | | Net | |Console | |Block | | |Net | |Console | |Block | |
| 34 | | Driver| |Driver | |Driver| | |backend | |backend | |backend | |
| 35 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ |
| 36 | | | | | | | | |
| 37 | | | | |User | | | |
| 38 | | | | |------|------------|---------|------- |
| 39 | +-------------------+ |Kernel +--------------------------+ |
| 40 | | | | Virtio over PCIe IOCTLs | |
| 41 | | | +--------------------------+ |
| 42 | +--------------+ | | |
| 43 | |Intel MIC | | +---------------+ |
| 44 | |Card Driver | | |Intel MIC | |
| 45 | +--------------+ | |Host Driver | |
| 46 | | | +---------------+ |
| 47 | | | | |
| 48 | +-------------------------------------------------------------+ |
| 49 | | | |
| 50 | | PCIe Bus | |
| 51 | +-------------------------------------------------------------+ |