2013-09-06 07:42:39 +08:00
|
|
|
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
|
2013-10-04 09:06:23 +08:00
|
|
|
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.
|
2013-09-06 07:42:39 +08:00
|
|
|
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 |
|
|
|
|
+-------------------------------------------------------------+
|