Presentation on theme: "Computer Architecture & Operating Systems"— Presentation transcript:
1Computer Architecture & Operating Systems Workshop 2 - Lecture 1Plagiarism & Citing Sources /Program Execution, Buses & I/O DevicesLast week’s workshop gave an introduction to the MScSIS programme, and an introduction to computers and discussed program execution, interrupts and instruction sets.In this first presentation of Workshop 2, we begin by defining plagiarism and the importance of correctly citing sources.We then go on to discuss the concept of a computer bus and explore how external devices are connected to a computer and can be accessed by the processor.
2Academic Report Writing Referencing Sources correctlyAvoiding PlagiarismThroughout the MScSIS programme, you will be required to write a number of essays, reports and eventually a thesis. These can all be considered under the heading of academic report writing.It is often necessary, in the course of academic report writing, to conduct research. This means locating and studying published material (sources) that are relevant to the topic you are studying. In composing your own written work, you must reference each of these sources. This simply means that you are making it clear to the reader that you have drawn ideas (or quotes, statistics, diagrams, etc.) from another source, and you are clearly identifying that source.Failure to reference your sources correctly is considered plagiarism, as described on the following 4 slides.
3i) Definition of PLAGIARISM Plagiarism is the act of copying, including or directly quoting from, the work of another without adequate acknowledgement. The submission of plagiarised materials for assessment purposes or for publication or for public presentation is fraudulent and all suspected cases will be investigated and dealt with appropriately by the University following the procedures outlined here and with reference to the Disciplinary Code.All work submitted by students for assessment purposes is accepted on the understanding that it is their own work and written in their own words except where explicitly referenced using the accepted norms and formats of the appropriate academic discipline.Source: National University of Ireland, Galway. (2007). Code of practice for dealing with plagiarism. Retrieved July 4, 2007, from NUIG, University Code of Conduct, Appendix VI web site:This is the definition of plagiarism as contained in the Code of Conduct of the National University of Ireland, Galway. Further information and clarification can be found at the web site shown above.It is important to note that most cases of plagiarism are inadvertent rather than intentional, i.e. the result of incomplete or incorrect referencing of sources. However, as noted in the Code of practice for dealing with plagiarism (NUI Galway, 2007), it is the responsibility of the student to reference sources correctly: “Whilst some cases of plagiarism can arise through poor academic practice with no deliberate intent to cheat, this still constitutes a breach of acceptable practice and requires to be appropriately investigated and acted upon.”Please see the MScSIS Student Handbook, section 5.1 for further information on plagiarism and the MScSIS Plagiarism Procedure.
4ii) Why acknowledge sources? Acknowledge your dependence on another person’s ideas or wordsReceive credit for your researchEstablish the credibility & authority of your knowledge and ideasTo place your own ideas in contextTo permit your reader to pursue your topic furtherTo permit your reader to access your sourcesThere are also many positive reasons to acknowledge your sources – it is good academic practice. Once you learn to reference sources correctly, it will be a skill that you will have for the rest of your life.Source: Princeton University. (2007). Acknowledging your sources. Retrieved July 4, 2007, from Academic Integrity at Princeton web site:
5iii) How to cite sources? There are 2 parts to citing your sourcesIn-text citations Reference List“direct quotation” (Smith, 2001, p. 45) always on its own pageidea according to Smith (2001),… at the end of the thesisRemember – it’s not enough just to list all your sources at the end of an essay! That’s only one-half of correct referencing; you also need to put in-text citations wherever you are referencing the source.
6iv) Always cite your sources! 1. Select appropriate sources2. Identify type of source(e.g. book, web page)3. Determine fieldsrequired for that sourceAs noted, a good citation allows the reader to locate the sources you used, either to clarify further or conduct further research.See the APA Publication Manual for further detail on the fields necessary for in-text citations (pp ) and the reference list (pp ).Source: APA (2003). Publication Manual of the American Psychological Association (5th Ed.). Washington, DC: APA.This concludes the short introduction to the Plagiarism and Referencing Sources.The remaining slides in this Lecture continue with Computer Architecture.A good citation allows the reader to locatethe source(s)CITATIONS
7Connecting Components All the units must be connected, whereby different types of connection are required for different types of unit:MemoryInput/Output (I/O)CPUWe now move back on to Computer Architecture, namely: the concept of a computer bus and how external devices are connected to a computer and can be accessed by the processor.Connectivity is one of the central issues of computer design. The problem here is that various different subsystems like memory and CPU, each with specific characteristics and requirements, need to be interconnected with each other. Stallings discusses this in detail in sections 3.3 and 3.4.The memory connection deals with memory-specific issues: the connection must be able to transport data between memory and other components. In order to store or access data in well-defined locations within the memory, addresses must be passed on as well. In order to distinguish between read and write accesses to memory, special control signals must be incorporated.The I/O connection has quite similar requirements: data is sent between the computer and peripherals using address information and dedicated control lines. In order to inform each other about events, the computer and peripherals exchange interrupt signals.The CPU is the control centre of the computer system and must be able to send data and control signals to all devices. In addition, it must also receive data and interrupts from system devices.
8Buses What is a bus? Types of bus Communication pathway connecting two or more devicesUsually broadcast (a number of channels in one bus)Power lines may not be shownTypes of busData BusCarries data/instructionsWidth is a key determinant of performanceA bus can be seen as a communication pathway connecting two or more devices. It is usually a broadcast system, whereby every single device “listens” to whatever action is taking place on the bus. In this respect, the inside of the computer is similar to a computer local area network (LAN). On most LANs, all computers can sense the traffic on it, but only “grab” the data when it is addressed to it. A bus might also contain power lines, but they are usually not described or explicitly mentioned.The data bus carries data and instructions. It is typically as wide as the internal CPU registers (for example the accumulator). Therefore a bus has a width of 8-bit, 16-bit, 32-bit or 64-bit.
9Buses Types of bus Address Bus Control Bus Identifies the source or destination of dataBus width determines maximum system memory capacityControl BusControl and timing information, e.g. memory read/write signal, Interrupt request or clock signalsThe address bus carries information about the location in memory where a data word or an instruction is read from/written to. Since addresses (like data, control lines, etc) are represented as binary signals,a single address line allows a processor to distinguish between 2 addresses (“0” and “1”) andtwo address lines allow the processor to distinguish between 4 addresses in memory (“00”, “01”, “10” and “11”), etc.A CPU with 16 address lines (like the Intel 8080) can address 2^16 or 64k cells in memory. So, the width of the address bus determines the memory capacity of a computer system.The control bus carries control information (e.g. “read to” or “write from” memory), timing information (e.g. “signal when data is ready to be read from memory”), clock signals (to indicate CPU speed to other components) and interrupt lines.The various control lines, address lines and data lines together form a bus. A typical bus might consist of 16 data lines (to access 16-bit wide data at a time), 16 address lines (to access 64k memory locations) and 10 control lines (for memory read/write, interrupts, etc). Sometimes address and data lines are multiplexed, e.g. shared, and thus reduce the complexity of a bus.
10What does a Bus look like? You can easily identify a bus in a computer:A ribbon cable (within each coloured strip is a separate wire) between a hard disk and a circuit board (above left)Parallel lines on a circuit board (above right, between the 2 DD2 numbered chips)Strip connectors on mother boards (like PCI)Sets of wires.
11Single Bus ProblemLots of devices on one bus leads to propagation delay:Long data paths mean that co-ordination of bus use can adversely affect performanceIf aggregate data transfer approaches bus capacityMost systems use multiple buses to overcome these problemsImplementing a single bus within a computer can cause some serious problems. Since it has to interconnect all the devices, the bus is relatively long. As an electrical signal traverses the bus it needs some time to reach all devices. These delays seem short for a human, but since computers work with very high clock rates, they become increasingly significant. As a result, most systems use multiple buses to overcome this problem.
12Traditional (ISA) Bus (with cache) This slide shows the ISA bus, which was a popular PC bus-architecture until recently.The Local Bus connects the processor to the cache and the local I/O controller.The cache, main memory and expansion bus interface are interconnected by the System Bus.The Expansion Bus connects peripherals with the system bus via the expansions bus interface.Can you spot the hierarchy? The most often used and more important components are neared to the CPU and on faster buses. However, all I/O devices are lumped together on the slow expansion bus, regardless of their operating speed or how much data they needed to exchange with the CPU. This layout became inefficient as very fast, high bandwidth I/O devices (e.g. high speed network cards) became common.
13High Performance BusIn contrast, a High Performance Bus provides different interconnections for components with high bandwidth requirements and therefore increases the overall system performance:Again the Local Bus interconnects the processor with the cache, which in turn is connected with the main memory using the system bus.An additional bridge connects the local bus with the High-Speed Bus, which provides connectivity for high bandwidth/performance components like the graphic card or the SCSI interface.The Expansion Bus looks after low speed components like serial interfaces. It is connected with the high-speed bus via the expansion bus interface.
14Bus Types Dedicated with separate data and address lines Multiplexed with shared linesA control line distinguishes between address valid and data validAdvantage: Fewer linesDisadvantages: More complex control & reduced performanceBus ArbitrationMore than one module (e.g. CPU and DMA controller) controlling the busOnly one module may control bus at one timeArbitration may be centralised or distributedGenerally a bus can be dedicated, whereby every single signal has its own line. This huge bus can cause layout or routing problems during the design of the PCB for a computer. Alternatively the number of required lines can be reduced by introducing a multiplexing scheme, whereby a line can either transport an address bit, a data bit or a control bit.Example: A dedicated bus consists of- 16 address lines - 16 data lines - one r/w line (to distinguish between read and write operations to memory)=====33 lines in totalThe same multiplexed bus consists of- 16 lines used for addresses or data - one r/w line (to distinguish between read and write operations to memory) - one a/d line (to distinguish between address and data being transported by the 16-bit bus)18 lines in totalBus arbitration is required, if more than one module attached to the bus can control the bus.
15Bus Arbitration Centralised Arbitration Distributed Arbitration Single hardware device (the bus controller or arbiter) controlling bus accessMay be part of CPU or separateDistributed ArbitrationEach module may claim the busControl logic on all modulesIn centralised arbitration a single hardware device decides which module can use the bus.In distributed arbitration each module can claim the bus and a control logic (placed on all modules) decides which module will be in control of the bus.
16PCI Bus 32 or 64 bit Peripheral Component Interconnection Usually runs in 32 bit mode at 33Mhz = 133MBps64 bit mode at 66MHz = 528MBpsIntel released to public domain49 mandatory lines & 51 optional linesPCI CommandsTransaction between initiator (master) and targetMaster claims busDetermine type of transaction (read or write)Address phaseOne or more data phasesThe PCI bus is a high-speed bus for peripheral component interconnection and replaced the ISA bus in PC architectures in recent years. Stallings describes it in detail in section 3.5.Required PCI LinesSystem lines including clock and reset32 multiplexed address and data linesInterface control including error linesArbitration (not shared)Optional PCI LinesInterrupt linesCache support64 bit bus extensionJTAG/boundary scan for testing procedures
17PCI BusThe PCI bus is connected to the processor via a bridge (also called north-bridge). The expansion bus bridge (or south-bridge) connects the PCI bus with the expansion bus.
18PCI BusHere is an example of a PCI card that you can plug into your PC’s motherboard.All PCs have what are known as expansion slots to allow easy upgrading of the computer system. These expansion slots allow you to easily add a new device to your system. However, you have to know what kind of slots (i.e. buses) you have in your PC. Otherwise, you could buy a new device and find you can’t plug it in to your motherboard. Almost all PCs nowadays have PCI slots on their motherboard. These are the 5 parallel white slots shown above on the right. The device on the top left is a video card, which you might buy to improve your gaming performance. Notice the PCI connector on the bottom which fits snugly into the white slots in the other picture.Other common expansion slot types are ISA, AGP (fast, specialised for graphics) and PCI Express (the newer, faster version of PCI). It is common to find motherboards with a number of different expansion slots on it for maximum upgrade flexibility. The expansion slots for the various bus types all use different connectors and thus are different sizes. This is to prevent you plugging a device into the wrong bus. The picture on the bottom left above shows A PCI slot and the longer ISA slot underneath it. Thus ,with a bit of experience you can tell what bus type a device is by looking at the connector on the bottom. We’ll have a little test of this on slide 15.
19Input/Output (I/O) I/O Devices Input/Output Problems External Memory - Hard & Floppy Disks, CD-ROMHuman Readable - Screen, printer, keyboardMachine Readable- Monitoring and controlCommunications - Modem, Network Interface CardInput/Output ProblemsWide variety of peripherals, which deliver different amounts of data at different speeds and in different formats (word or block), e.g.Keyboard or mouse < 1 Kilobits per second (kbps)Fast Ethernet 100 Megabits per second (Mbps)All slower than CPU and RAMA computer consists of various I/O devices or peripherals. These deliver data of different amounts and at different speeds using various formats. In order to access these peripherals (either for read or for write operations), I/O modules are used. I/O modules are an abstraction of peripherals. Refer to Stallings (7.1) for more information.An example of an I/O device is the Intel 82C55A chip, which provides 24 input/output lines (organised in 3 blocks of 8 bits each). This module was used in Personal Computers in the 80s and 90s to provide a parallel interface. This interface was used to connect printers and scanners with a PC. Today, it is widely replaced by the USB interface.
20I/O DevicesAbove are pictures of what I/O devices that are we are familiar with and probably take for granted. The only 2 items not particularly obvious are those on the right. On top, there is a modem card and underneath it is a CD-ROM drive.Q. What type of bus does the modem card plug into? (hint: refer to slide 13)A. On next slide…..
21Typical I/O Device Data Rates A. It is an ISA modem. Note the long connector on the bottom of the card – a dead give away! Did you notice that the card would fit in the ISA slot on slide 13?The diagram above shows the typical I/O rates that can be achieved by various I/O devices: A keyboard has a data rate of up to 100 bps (equivalent to approximately 12 keyboard hits per second), while a graphics display has a data rate of approximately 600 Mbps.
22I/O ModulesAbstract and simplify the interaction between the CPU the peripheralProvide internal interfaces (CPU/Mem I/O module) and external interfaces (I/O module actual device)I/O Module FunctionsControl and timing as well as error detectionCPU communicationData buffering - CPU/Main Memory - high data rate - I/O devices - vary from very low to high - I/O module uses buffers to match data rates between CPU and I/O deviceI/O modules (Stallings, section 7.2) abstract and simplify the interaction between the CPU and the peripheral by providing internal and external interfaces.The Intel 80C55A, for example, provided a parallel interface which can be used to connect a wide range of external devices. The same set of registers, control lines, etc. is used regardless of the connected device.
23Generic I/O Scenario: Peripheral to CPU Transfer CPU checks I/O module device statusI/O module returns statusIf ready, CPU requests data transferI/O module gets data from deviceI/O module transfers data to CPU Remark: internal (CPU) & external (device) communication is requiredThis slide shows the general concept of an I/O scenario. It describes the interaction between the CPU, the I/O module and the device.The first, second, third and fifth steps in the example above use the internal interface, while the fourth step requires the external interface.
24I/O Module DiagramThis diagram shows the components of an I/O module. Address, data and control lines of the internal interface allow the CPU to access data registers and status/control registers, whereby every register has a unique address. Every single I/O module provides a similar API to the internal interface. The external interface is provided through the external device interface logic, which generates control signals used by peripherals as well as handling status information, and the data being transmitted.
25Input/Output Techniques ProgrammedInterrupt drivenDirect Memory Access (DMA)Programmed I/OCPU has direct control over I/OSensing statusRead/write commandsTransferring dataCPU waits for I/O module to complete operationProgrammed I/O wastes CPU timeThere are three I/O techniques which allow data exchange between the processor and the peripheral. They differ in the amount of CPU interventions that are required to perform an I/O task.Programmed I/O (Stallings, section 7.3) is the simplest of the three methods, whereby the CPU has the highest workload and is least efficiently used: Apart from issuing read or write commands, it also has to transfer data to or from the I/O module. The CPU also monitors the status of the I/O module in order to determine if it has completed its operation or not.
26Programmed I/O: Detail CPU requests I/O operationI/O module performs operationI/O module sets status bitsCPU checks status bits periodicallyI/O module does not inform CPU directlyI/O module does not interrupt CPULet us assume that a scanner is connected to a PC using a parallel interface. Within the PC the CPU is connected with the parallel interface via a 82C55A module. The task is to read a number of bytes (representing a digitized section of a document) from the scanner.The CPU issues a read command to the 82C55A, which in turn pulls a single byte from the scanner device and stores it in an internal register. This process might take some time and therefore the I/O module will set an internal flag to indicate that the read operation is over. The CPU on the other hand polls this flag continuously. Once the processor detects that the flag is set, it will reset the flag, read the byte stored in the register and store it in memory. This process is repeated, until all bytes are captured. If the 82C55A gets stuck, e.g. if the scanner fails during the scanning process and the read process cannot be finished, the CPU could issue a timeout (because the ready-flag is not set) and raise an alarm or deal with the error condition.
27Interrupt Driven I/O Overcomes CPU waiting No repeated CPU checking of deviceI/O command issuedCPU undertakes other workCPU checks for interrupt at end of each instruction cycleI/O module interrupts when readyCPU saves context etc.Processes interruptReloads context and continuesInterrupt driven I/O (Stallings, section 7.4) in contrast works slightly differently and avoids the active polling of the ready-flag in the example on the previous slide. Once the device sets the flag, it also raises a CPU interrupt. This implies that there is a physical connection between a 82C55A “data ready” output pin and the CPU interrupt input pin.Once the interrupt is raised the CPU saves the context (e.g. the register contents of the program currently being executed) and executes an interrupt handler, which reads the byte from the module and stores it in memory. Once this operation is finished, the interrupt handler terminates and the context of the original program is reloaded.
28Interrupt ProcessingThis slide shows the concept of interrupt driven I/O as a flowchart. It distinguishes between action taken by hardware (CPU/device) and by software (interrupt service routine). In addition to the explanations on the previous slide the processor also signals the acknowledgement of the interrupt to the I/O module. This handshake mechanism allows the I/O module to keep track of accepted/processed interrupts.
29Interrupt Driven I/O: Basic Operation CPU issues read commandI/O module gets data from peripheral whilst CPU does other workI/O module interrupts CPUCPU requests dataI/O module transfers dataThis flowchart shows interrupt driven I/O. It is quite similar to the flowchart describing programmed I/O, but incorporates the changes associated with the interrupt mechanism in the upper half of the diagram.
30Identifying the Interrupting Module Different line for each moduleLimits number of devicesSoftware pollCPU asks each module in turn – slow!Daisy chain or hardware pollInterrupt Acknowledge sent down a chainModule responsible places vector on busCPU uses vector to identify handler routineBus masterModule must claim the bus before it can raise interrupt e.g. PCI & SCSIInterrupt driven I/O is a very efficient method of exchanging data between an external device, an I/O module and the CPU. But it also raises the question of how a CPU can distinguish between various I/O modules, each of them associated with a specific interrupt handler.One very common way to deal with this problem is to use an individual interrupt line for each module. Since every interrupt line is associated with its individual interrupt service routine (tailored for the module it is associated with), the CPU can deal with different module types. The obvious disadvantage of this approach is that a processor has only a limited number of interrupt inputs (e.g. 3 – 8).Alternatively all modules can share the same interrupt line. In this case the CPU has to check every single I/O module connected to the line in order to determine which one has raised the interrupt. In order to do this the CPU can read internal registers in each I/O module, since all modules are accessible to the CPU via the system bus. The interrupt handler consist of a number of routines (one for each module) and, depending on the outcome of the module polling, the processor branches to the right one and executes it. A significant disadvantage of this approach is the relatively large amount of time it takes to poll all I/O modules.In a daisy chain or hardware poll all devices share a single interrupt line. The CPU acknowledges each interrupt request by sending a signal to the modules using a dedicated line. The modules are daisy-chained along this line (i.e. the output of the first module is connected to the input of the second module, etc). Once a module receives the acknowledge, it will pass it on to the next module, if it did not raise the interrupt. The module which raised the interrupt will place a vector (i.e. a unique identifier) on the bus, which will be read by the CPU and allows it to identify the module.In a bus master scenario the module must claim the bus before it can raise an interrupt. This allows the module to be identified.
31Multiple InterruptsAn interrupt handler can be interrupted because of a new interrupt request with higher priorityDifferent line for each moduleEach interrupt line has a prioritySoftware pollPoll higher priority devices firstDaisy chain or hardware pollHigher priority devices first in daisy chainBus masterIf bus mastering only current master can interruptIf multiple modules are using interrupt-driven I/O, interrupt requests with different priorities can be raised simultaneously.If each module has its own interrupt line (each with its (programmed) priority), the CPU makes the decision on-the-fly which interrupt it has to deal with first or if an interrupt handler for one module will be interrupted to give priority to another handler.If a shared interrupt line is used, the CPU cannot interrupt one interrupt handler for the sake of another with higher priority. All it can do is choose the module with the highest priority among a set of simultaneous interrupt requests by polling higher priority devices first.If modules form a daisy chain, the processor has the same capabilities as when each module has its own line.In a bus mastering scenario the interrupt-requesting module with the highest priority becomes the master. Once this decision is made, no other module (if it has higher priority) can become master, until the bus is released again.
32Direct Memory Access (DMA) Interrupt driven and programmed I/O require active CPU interventionTransfer data is limited, the CPU is tied upDMA is the answer: a DMA controller is another module (hardware) on the busTakes over from CPU for I/ODMA OperationCPU tells DMA controller details about operationCPU carries on with other workDMA controller deals with transferDMA controller sends interrupt when finishedBoth programmed I/O and interrupt-driven I/O require the CPU to transfer data between the I/O module and its internal registers and from there to internal memory. The achievable data transfer rate is limited and valuable processor time, which could be used by a more sophisticated task, is wasted.The solution to this dilemma is Direct Memory Access (DMA), described in Stallings, section 7.5. A special hardware component, the DMA controller, allows the transport of data within and between internal memory and/or I/O devices. The CPU has to do very little to support this: It has to program the DMA controller with the details of the data transfer (e.g. source address, destination address, number of bytes or words to be transferred, etc.). Once the data transfer is finished, the CPU is informed by the DMA controller via an interrupt.
33DMA Transfer Cycle Stealing DMA controller takes over bus for a cycleTransfer of one word of dataCPU suspended just before it accessesbus (reads/writes from/to memory)Slows down CPU but not as much as CPU doing transferThe DMA controller must take control of the bus in order to transfer data from a source to a destination. The CPU, on the other hand, works on other tasks concurrently. Since it has to access memory to read the instructions from memory (and therefore has to take control of the bus) as well, a bus access conflict may happen.This problem is avoided by applying the following strategy (see also the image above):The DMA controller transfers only one word of data at a time.There are specific breakpoints during an instruction cycle, where the DMA controller is allowed to access the bus and suspends the CPU.Interrupts (particularly from the DMA controller) are only accepted by the processor during an interrupt breakpoint.Although the CPU is slowed down by this process, the combined performance of the DMA controller and the CPU is still better than if the CPU was working on its own.
34DMA Configurations Single bus, detached DMA controller Each transfer uses bus twice, CPU is suspended twiceSingle bus, integrated DMA controllerEach transfer uses bus once, CPU is suspended onceThe DMA transfer of a single word consists of the following steps:Move data from source to DMA controller.Move data from DMA controller to destination.This means that in a detached DMA controller configuration (see picture on slide) every transfer must access the bus twice, while the CPU is suspended twice.The number of bus accesses can be reduced to one per word transfer, if every single I/O device is connected directly to a DMA controller. The DMA controller itself is connected to the system bus in order to access the destination (in this case the internal memory).This configuration is called integrated DMA.Note: The integrated DMA controller configuration as shown above optimises the data transport between an I/O device and internal memory. It does not allow data transport between I/O devices.
35DMA Configurations Separate I/O bus Bus supports all DMA enabled devicesEach transfer uses bus once, CPU is suspended onceThe separate I/O bus is another possible configuration, where all devices are connected to a single DMA controller via an I/O bus. Again the number of accesses to the system bus is reduced to one per word transfer and the CPU is suspended once.
36Techniques for Data Input The slide shows the flowcharts for the three I/O methods side by side:programmed I/OInterrupt driven I/ODMAas discussed on the previous slides.Which looks the most efficient?!
37I/O Channels I/O devices getting more sophisticated Have their own processor/memory (e.g. 3D graphics cards)CPU instructs I/O controller to do transferI/O controller does entire transferImproves speed: takes load off CPUI/O channels (Stallings, section 7.6) are another improvement over DMA. They contain their own hardware like processors and memory and allow a quicker and more sophisticated data transfer within the computer than the previous solutions. I/O controllers are still managed by the CPU, since the latter has to provide details about the data transfer task, similar to a DMA transfer.
38In This Lecture, You Have Learned … Computer busesData bus versus address bus versus control busTraditional buses versus high-performance busesBus types and bus arbitrationSynchronous versus asynchronous timingThe PCI and the AGP busI/O devicesTypical I/O scenarios and expected data ratesI/O modules and I/O module functionsI/O scenariosI/O techniques: programmed I/O, interrupt driven I/O, DMAHandling multiple I/O tasks using interrupt driven I/OThis concludes Workshop 2, part 1In part 2 we will discuss external interfaces as well as the different types of internal memory found in a computer.