Skip to content
VUBuddy

CS501 Handouts Lectures 22-45

Advance Computer Architecture PDF 13.8 MBUpdated 23 Oct 2026
Handout CS501 Handouts Lectures 22-45 PDF 13.8 MB
vubuddy.com
Type
Handout
Course
CS501 Advance Computer Architecture
Size
PDF 13.8 MB
Updated
23 Oct 2026
Free download 0 of 3 used today
Download free · 13.8 MB

You get 3 free files a day on the website. Add the Chrome extension for 30 a day.

Unlimited downloads in the Android app Get it free on Google Play

Preview text

Text from pages 1, 2, 3 of 165. Download the file for all 165 pages.

Lecture No. 23 · I/O Subsystems · Reading Material

Vincent P. Heuring & Harry F. Jordan Chapter 8 Computer Systems Design and Architecture 8.1, 8.2

Summary

 Introduction to I/O Subsystems  Major Components of an I/O Subsystems

 I/O Buses

Introduction to I/O Subsystems

This module is about the computer/s input and output. As we have seen in the case of memory subsystems, that when we use the terms 1 read2 and 1write2, then these terms are from the CPU/s point of view. Similarly, when we use the terms 1input2 and 1output2 then these are also from the CPU/s point of view. It means that when we are talking about an input cycle, then the CPU is receiving data from a peripheral device and the peripheral device is providing data. Similarly, when we talk about an output cycle then the CPU is sending data to a peripheral device and the peripheral device is receiving data. I/O Subsystems are similar to memory subsystems in many aspects. For example, both exchange bits or bytes. This transfer is usually controlled by the CPU. The CPU sends address information to the memory and the I/O subsystems. Then these subsystems decode the address and decide which device should be involved in the transfer. Finally the appropriate data is exchanged between the CPU and the memory or the I/O device. Memory and I/O subsystems differ in the following ways:

  1. Wider range of data transfer speed:

I/O devices can be very slow such as a keyboard in which case the interval between two successive bytes (or keystrokes) can be in seconds. On the other extreme, I/O devices can be very fast such as a disk drive sending data to the CPU or a stream of packets arriving over a network, in which case the interval between two successive bytes can be in microseconds or even nanoseconds. While I/O devices can have such a wide range of data transfer speed compared to the CPU/s speed, the case of memory devices is not so. Even if a memory device is slow compared to the CPU, the CPU/s speed can be made compatible by inserting wait states in the bus cycle.

  1. Asynchronous activity:

Memory subsystems are almost always synchronous. This means that most memory transfers are governed by the CPU/s clock. Generally this is not the case with I/O subsystems. Additional signals, called handshaking signals, are needed to take care of asynchronous I/O transfers.

  1. Larger degradation in data quality:

Data transferred by I/O subsystems can carry more noise. As an example, telephone line noise can become part of the data transferred by a modem. Errors caused by media defects on hard drives can corrupt the data. This implies that effective error detection and correction techniques must be used with I/O subsystems.

  1. Mechanical nature of many I/O devices:

Many I/O devices or a large portion of I/O devices use mechanical parts which inherently have a high failure rate. In case an I/O device fails, interruptions in data transfer will occur, reducing the throughput. As an example, if a printer runs out of paper, then additional bytes cannot be sent to it. The CPU/s data should be buffered (or kept in a temporary place) till the paper is supplied to the printer, otherwise the CPU will not be able to do anything else during this time. To deal with these differences, special software programs called device drivers are made a part of the operating system. In most cases, device drivers are written in assembly language. You would recall that in case of memory subsystems, each location uses a unique address from the CPU/s address space. This is generally not the case with I/O devices. In most cases, a group or block of contiguous addresses is assigned to an I/O device, and data is exchanged bytebybyte. Internal buffers (memory) within the device store this data if needed. In the past, people have paid a lot of attention to improve the CPU/s performance, as a result of which the performance improvement of I/O subsystems was ignored. (I/O subsystems were even called the 1orphans2 of computer architecture by some people). Perhaps, many benchmark programs and metrics that were developed to evaluate computer systems focused on the CPU or the memory performance only. Performance of I/O subsystems is as important as that of the CPU or the memory, especially in today/s world. For example, the transaction processing systems used in airline reservation systems or the automated teller machines in banks have a very heavy I/O traffic, requiring improved I/O performance. To illustrate this point, look at the following example. Suppose that a certain program takes 200 seconds of elapsed time to execute. Out of these 200 seconds, 180 seconds is the CPU time and the rest is I/O time. If the CPU performance improves by 40% every year for the next seven years because of developments in technology, but the I/O performance stays the same, let us look at the following table, which shows the situation at the end of each year. Remember that Elapsed time = CPU time + I/O time. This gives us the I/O time = 200 F 180 = 20 seconds at the beginning, which is 10 % of the elapsed time.

Year # CPU · Time · I/O · Time · Elapsed · Time · I/O Time x100 % · Elapsed Time

10 % 13.42 % 17.85 % 23.25 % 29.85 % 37.03 % 45.45 % 54.05 %

It can be easily seen that over seven years, the I/O time will become more than 50 % of the total time under these conditions. Therefore, the improvement of I/O performance is as important as the improvement of CPU performance. I/O performance will also be discussed in detail in a later section.

Major components of an I/O

subsystem

I/O subsystems have two major parts: The I/O interface, which is the electronic circuitry that connects the CPU to the I/O device. Peripherals, which are the devices used to communicate with the CPU, for example, the keyboard, the monitor, etc.

A Computer Interface is a piece of hardware whose primary purpose is to connect together any of the following types of computer elements in such a way that the signal levels and the timing requirements of the elements are matched by the interface. Those elements are:  The processor unit  The memory subsystem(s)  Peripheral (or I/O) devices  The buses (also called "links") In other words, an interface is an electronic circuit that matches the requirements of the two subsystems between which it is connected. An interface that can be used to connect the microcomputer bus to peripheral devices is called an I/O Port. I/O ports serve the following three purposes:

All CS501 files →
CS501 Advance Computer Architecture All CS501 handouts, past papers, quizzes and MCQs in one place. Open course page

Get more out of VUBuddy, for free

Android app Free on Google Play
  • Unlimited downloads
  • The explanation behind every MCQ answer
  • Study offline on slow data
Get the Android app
Chrome extension Free on the Chrome Web Store
  • 30 downloads a day instead of 3
  • Sign in and buy Pro Semester here
Add to Chrome

One Pro Semester membership works in both the extension and the app.