IO Concepts and Protocols: PCI Express, Ethernet, and Fibre Channel
Ever wondered what makes the IO system of a modern computer tick? Wanted to know more about PCI Express, Ethernet, and Fibre Channel, and how they all fit together? This course will help you understand the ins-and-outs of the IO technology. Traditional operating systems courses have treated IO superficially. This course focuses on IO technologies, and walks students through the complexities of IO subsystems in modern computer and networking systems.
After an introduction to the basic concepts of IO, we will look into deeper aspects regarding the most prevalent IO interconnect: PCI Express. We will study the need for PCI Express, its evolution from PCI/PCI-X, and the details of the protocol. We delve into address spaces and cover how devices are discovered and configured. We will then switch our attention to south side interconnects such as Ethernet and Fibre Channel. We will discuss their operation and, in the case of Fibre Channel, how targets are discovered and configured. Finally, we will tie everything together.
The course will comprise 10 lectures, homework assignments, and tests. By the end of the course, students would have a broad idea of how IO works in a modern computer system and be better prepared to learn about writing device drivers or troubleshooting IO problems. The course does not cover chip or board design aspect of the IO.
- Modern computer architecture in block diagram format
- Flow of an IO request
- IO concepts: MMIO, DMA, interrupts
- Introduction to PCI Express, evolution from PCI, PCI-X
- Address spaces: configuration, memory, IO
- Device discovery
- How MMIO, DMA, and interrupts work in PCI Express
- Introduction to Ethernet: CSMA/CD, frame format, VLANs, aggregation
- Introduction to Fibre Channel: topologies, N-port IDs/WWPNs, logical units, frame format, SCSI request mapping, target discovery and configuration, security, FCoE
- Further topics to explore - lead in for future courses
Skills Needed: An introductory course or practical experience with operating systems internals, an introduction to computer architecture and organization, and systems programming experience.
Course Availability Notification
Please use the form below to be notified when this course is open for enrollment.