By user12611518 on Jan 14, 2005
Computer Input/Output (I/O) encompasses quite a wide range of things. At the highest level view, I/O starts just outside the "coherent" domain. The CPUs, system bus, memory and cache all have to stay in "sync" and maintain coherency. But somewhere there is at least one "bridge" which comes off the system bus and leads outward to the rest of the world. This bridge is the start of I/O. The bridge fills and drains memory to keep the CPU happily supplied for processing. This initial bridge probably leads to some slower bus which in turn leads to actual devices or bridges to even other buses. What we end up with is a multi-level hierarchy converting protocols, speeds and bandwidths until the chasm between CPUs to devices is spanned.
So, at the top of this hierarchy, we bump against the coherent domain. The non-coherent world though still encompasses too much. There is just too wide of a range of devices, characteristics and issues to talk about. We need to find the bottom edge of the I/O hierarchy. Conventionally, the border is found when we cross over into particular applications of I/O, such as Networking, Cluster Interconnects, Storage, Audio, Printing, etc. Of course, the borders are not so tidy, so you often find both "I/O guys" and "storage guys" talking about SCSI, etc. Likewise, these days you will find "network-like" characteristics in many new I/O systems.
It's these blurred lines which lead to many of the exciting possibilities in I/O that are being talked about today. I/O proper is not just the classic I/O busses like PCI and USB. It's also technologies like HyperTransport, InfiniBand, PCI-E and AS, which might span many levels of connection, going all the way from the chip, board, blade, box, rack and even up to the LAN.
As in many other areas of computer system design, there is a strong push to remove the specialized I/O technology in favor of a general purpose one. The motivation is to simplify and reduce cost. You can see this happening with PCI-E taking over both PCI and AGP. But since it's a cost motivated thing, it is often a question of competing volumes between the technologies. Witness how long it is taking USB to chip away at the remaining PC legacy I/O.
Another trend is the desire to virtualize and share I/O devices. Often, we find low utilization of resources, including I/O ones. Immediately, we think of consolidating a numbers to tasks onto a single system to increase the efficiency of resource utilization and ultimately reduce costs. But in collecting tasks together, we need to be sure they don't interfere with each other. Further, we don't want to complicate the applications that were already written. Can we make each application container (zone, partition, processor, domain, SMP, blade, etc.) only see what it needs and nothing else? Further, can we make the I/O system rapidly reconfigurable, so you can change the logical wiring of the system without touching the actual physical wiring?
In future postings, I hope to discuss these and other I/O issues.
Technorati Tags: OS