Lec-7-new.pdf
Document Details
Uploaded by ModestSavanna
Tags
Related
- Operating Systems: Internals and Design Principles (PDF)
- Computer Architecture Lecture Notes PDF
- Computer Evolution Module 1 (Part 2) PDF
- Computer Memory and IO Modules/Central Processing Unit Lecture PDF
- Computer Organization and Architecture, Input/Output, Chapter 8 PDF
- Computer Organization and Architecture Chapter 8 - Input/Output PDF
Full Transcript
Computer Architecture and Organization Lecture 7 สวนรับสงข้อมูลเข้าออก Generic I/O Module An I/O module is required: CPU ปัญหาการเชื่อมตอของอุปกรณรับสงขอมูล อุปกรณรอบขาง (peripherals device) ไม่สามารถเชื่อมตอกับบัสระบบโดยตรง (แตตองผานสวนจัดการรับสงขอมูลเขาออก) ด...
Computer Architecture and Organization Lecture 7 สวนรับสงข้อมูลเข้าออก Generic I/O Module An I/O module is required: CPU ปัญหาการเชื่อมตอของอุปกรณรับสงขอมูล อุปกรณรอบขาง (peripherals device) ไม่สามารถเชื่อมตอกับบัสระบบโดยตรง (แตตองผานสวนจัดการรับสงขอมูลเขาออก) ดวยเหตุผลดังเชน อุปกรณรอบขางมีฮารดแวรและการจัดการที่หลากหลายอยางมาก การออกแบบ ซีพียูใหรองรับอุปกรณ์หลากหลายเปนเรื่องลาบากและไมคุม อัตราการรับสงขอมลูของอุปกรณรอบขางนั้นต่ากวาบัสระบบมาก การเชื่อมตอ โดยตรงจะสรางปญหาคอขวดได อุปกรณรอบขางบางตัว มีอัตราการรับสงขอมูลเร็วกวาระบบบัสหรือเร็วเกินกวาที่ ซีพียูจะรับตอบสนอง (โดยเฉพาะกรณีที่รับสงขอมูลเปนบล็อกขนาดใหญ) การ เชื่อมอปุกรณดังกลาวใหซีพียูเขาถึงโดยตรง จะทาใหไม่สามารถจัดการกับอุปกรณ นัน้ ไดอยางมีประสิทธิภาพ อุปกรณรอบขางอาจใชการจัดรูปแบบขอมูลที่แตกตางไปจากซีพียู รวมถึงขนาด จานวนบิตตอเวิรดอาจไมเทากับที่ซีพียรู องรับ โมดูล I/O จึงสร้างขึ้น เพื่อรองรับปญหาขางตน มีหนาที่หลักๆ ดังนี้คือ เชื่อมตอระหวางซีพียูหรือหนวยความจากับอุปกรณรอบขัาง โดยสงขอมูล ผานบัสระบบกับโมดูล I/O เชื่อมตออุปกรณรอบขางหลายๆ ตัว และใชรูปแบบขอมูลตาม การออกแบบเฉพาะของอุปกรณรอบขางแตละประเภท อุปกรณภายนอก (External Devices) ทาหนาที่รับสงขอมูลระหวางสภาพแวดลอมภายนอกกับคอมพิวเตอร เชือ่ มตอกับ I/O module ของคอมพิวเตอร ซึ่งประกอบไปดวยการ ควบคุมสถานะของอุปกรณและขอมูลระหวางอุปกรณภายนอกกับ I/O module อุปกรณรอบขาง (Peripheral devie) – อุปกรณที่เชื่อมตอกับ I/O module แบงอุปกรณภายนอกไดเปนสามประเภทอยางคราวๆ ดังนี้ Human readable สาหรับการติดตอสื่อสารกับผูใชงาน เชนจอ ภาพ เครื่องพิมพ Machine readable สาหรับการติดตอสื่อสารกับอุปกรณตางๆ – รวมถึงอุปกรณสารองขอมูล (หนวยความจาสารอง) เชนเทป ดิสกแม เหล็ก และยังรวมถึงอุปกรณเซ็นเซอรและแอ็กชัวเอเตอร Communication สาหรับการติดตอสื่อสารกับอุปกรณระยะไกล เชน เทอรมินัล อุปกรณในกลม machine readable devices หรือคอมพิวเตอรเครื่องอื่นๆ Generic Peripheral Device In very general terms: อุปกรณภายนอกมีโครงสรางโดยทั่วไปดังรูป มีชองทางสาหรับรับสงขอมูลระหวางอุปกรณภายนอกกับ I/O module มีการสงสถานะการทางานกลับไปยัง I/O module มีการรับคาสั่งควบคุมจาก I/O module โดยสองสวนหลังจะเชื่อมตอกับ วงจรภายในที่ทาหนาที่ควบคุมการทางานโดยทั่วไปของอุปกรณ และสั่ง การทางานกับวงจรทางานหลัก ซึ่งจะมีสวนสาคัญคือ transducer ที่ทา หนาที่แปลงสถานะของสัญญาณที่ไดรับจาก สภาพแวดลอมระบบ ภายนอก ใหเปนสัญญาณทีอ่ ุปกรณเขาใจได และทาหนาที่ตรงกันขาม คือ แปลงสถานะ สัญญาณจากภายใน ไปสูสถานะสัญญาณที่สามารถควบคุม หรือสื่อสารกับสภาพแวดลอมภายนอกที่ออกแบบไวได การรับสงขอมูลระหวาง I/O module กับอุปกรณภายนอก เชน การสั่ง เขียน (output or write) หรืออาน (input or read) ซึ่งสงผานสัญญาณ ควบคุม และขอมูลจะวิ่งผานชองสัญญาณขอมูล ขนาดความกวางของชองสัญญาณขอมูล เชน 8 หรือ 16 บิต เปนตน ซึ่ง อาจจะมีแคหนวยเดียว หรืออปุกรณรอบขางบางประเภทอาจจะมีพื้นที่ หลายบิต โดยเฉพาะอุปกรณที่ เปน block-device เชน HDD สถานะของอุปกรณภายนอก เชน ready/not-ready (busy) เปนตน คียบอรดและจอภาพ เปนอุปกรณ์ติดตอกับผูใชที่แพรหลาย โดยใชคียบอรดเพื่อปอนขอมูลเขาระบบ ในขณะที่ขอมูลออกจากระบบ แสดงบนจอภาพ International Reference Alphabet (IRA) เปนรหัสอักขระที่นาเสนอขอ ความกันแพรหลาย รหัส (code) แทนอักขระ (character) ที่ประกอบขึ้นเปนขอความ รหัสมีขนาด 7 บิต (แทนได 128 อักษระที่แตกตางกัน) แบงเปน 2 แบบ Printable รหัสที่แสดงได คือ ตัวอักษร (A-Z,a-z) ตัวเลข (0-9) อักขระพิเศษ (เชน ; , : / +-* เปนตน) Control รหัสควบคุม เพื่อสั่งการกับอุปกรณเครื่องพิมพหรือควบคุมการ แสดงผลของอักขระที่แสดงได ตัวอยางรหัสควบคุม carriage return (รหัสของปุม Enter) รหัสควบคุมอื่นๆ มักจะถูกใชเพื่อการจัดการการติดตอสื่อสาร(ของระบบ)ตางๆ หลักการทางานคียบอรด เมื่อผูใชกดคีย จะมีสัญญาณเปลี่ยนแปลงเกิดขึ้น ซึ่ง transducer ภายในตรวจจับได (อาจเปนแคปุม ธรรมดา หรืออาจจะเปน capacitive แบบสัมผัส hall-effect ทีแ่ ม เหล็กขยับไปมาใกลเซ็นเซอรสารกึ่งตัวนาจับการเปลี่ยนแปลงสนามแมเหล็กได หรือ laser projection keyboard ใชแสงเลเซอรเพื่อตรวจตาแหนงที่ผูใชแตะบนพื้นผิว ขนาดใหญๆ ที่ทาหนาที่เปนเซ็นเซอร) คียบอรดจะเปลี่ยนขอมูลดังกลาวใหเปน รหัสมาตรฐาน IRA คียบอรดคอมพิวเตอร จะตรวจการกดและปลอยคีย แล้วสงคารหัสที่เรียกวา scan key (เนื่องจากใชหลักการจัดวางวงจรเปนแบบเมตริกซและสแกนเพื่อหาตาแหน่งที่ กด (ดังนั้นถากดหลายๆ ปุม ก็จะเกิด scan key ออกไปเปนชุด) ระบบปฏิบัติการจะ นารหัสดังกล่าว ไปแมปกับรหัสภาษาทีผ่ ูใชกาลังเลือกใช เพื่อสงเปนรหัสทีพ่ ิมพได หรือรหัสควบคุมตางๆ ตอไป (ผูเขียนโปรแกรมสามารถเขาถึง scan key นี้ได โดยตรงผ่าน system call ของระบบ เช่น ผาน BIOS ของ DOS หรือใช Windos API เปนตน) รหัสที่แปลงมาแลวนี้ จะสงใหกับ I/O module ของคอมพิวเตอร (ในที่นี้ คือ keyboard controller) สาหรับการสงขอมูลออกนั้น รหัสตามมาตรฐาน ISA จะถูกสงออกไปยัง อุปกรณภายนอกผาน I/O Module อุปกรณภายนอกที่ทาหนาที่แสดงผล จะเปลี่ยนรหัส ISA ไปสูภาพแสดง หรืออื่นใด เพื่อสามารถแสดงผลใหผูใชงานเห็น ดิสกไดรฟ ภายในมีวงจรที่ใชแลกเปลี่ยนขอมูล รับสัญญาณควบคุม และสงสถานะให กับ I/O module และมีวงจร อิเล็กทรอนิกส และ/หรือ กลไกเพื่อจัดการ กับการเขียนอานดิสก์ I/O Modules หนาที่มีดังตอไปนี้ Control and timing การควบคุมอัตราการสงรับขอมูลระหวางอุปกรณภายในกับ อุปกรณภายนอก ลักษณะการควบคุมอาจจะเปนลาดับดังตอไปนี้ ซีพียูสงสัญญาณสอบถาม I/O module วาอุปกรณภายนอกมีสถานะเปนอยางไร I/O module ติดตออุปกรณภายนอก และรายงานสถานะคืนใหซีพียู ถาสถานะแสดงวาพรอมใชงาน ซีพียูสงสัญญาณรองขอการสงขอมูล ในรูปของ การสง เปนคาสั่งทางานไปยัง I/O module เมื่ออุปกรณภายนอกทางานเสร็จ I/O module รับขอมูลตอบกลับมาหนึ่งชุด (เชน 8 บิต 16 บิต หรืออื่นใด) จากอุปกรณภายนอก (ยืนยันวาสาเร็จหรือผิดพลาด) ขอมูลสถานะ (หรืออาจรวมขอมูลที่ตองการ ในกรณีของการอานขอมูล) จะถูกสง ใหกับซีพียู Processor communication การสื่อสารระหวางโพรเซสเซอรกับอุปกรณ ภายนอก ซึ่งรวมถึงการแปลงรหัสควบคุมจากโพรเซสเซอรเพื่อติดตอกับอุปกรณ ภายนอกเฉพาะชนิด การแลกเปลี่ยนขอมูลระหว่างอุปกรณภายนอกกับโพรเซสเซ อร การรายงานสถานะของอุปกรณภายนอกใหโพรเซสเซอร การสั่งการ หรือ ตอบสนองการทางานของอุปกรณภายนอกเฉพาะใน address ที่กาหนดไวของ I/O module Device communication การสื่อสารหรือสัง่ การทางาน การรายงานสถานะ และ การรับสงขอมูลระหวางอุปกรณ Data buffering มีหนวยความจาภายในสาหรับใชพักขอมูลทีอ่ ยูระหวางการสงผาน กันระหวางระบบกับ อุปกรณภายนอก (เนื่องจากอุปกรณภายนอกมักจะมีอัตรา ความเร็วในการสงถายขอมูลที่นอยหรือมากกวาระบบภายใน จึงตองมีบัปเฟอรเพื่อ รองรับขอมูลบางสวนไวเปนการชั่วคราว) Error detection ตรวจจับและรายงานความผิดพลาดในการทางานทีอ่ าจเกิดขึ้น โครงสรางโดยทัว่ ไปของ I/O module ลักษณะทางโครงสรางของโมดูล I/O อาจเปนดังรปู ขางตน ฝงดานบัสระบบ จะมีชองสัญญาณสาหรับรับสงขอมูล ซึ่งภายในจะมีเร จิสเตอรสาหรับรับสงขอมูล และเรจิสเตอร สาหรับการรับสงสถานะการ ทางาน หรือตัวเลือกการทางานภายใน มีชองสัญญาณสาหรับ address เพื่อจะได สามารถระบุองคประกอบภายใน เชนเรจิสเตอรที่ตองการเขาถึง และสัญญาณควบคุม (เชน read/write หรือ interrupt signal) ฝงดานเชือ่ มตออุปกรณภายนอก จะมีชองสัญญาณสาหรับการรับสงขอมูล การรับสถานะการทางาน และสงสัญญาณควบคุม ตามลักษณะการ ออกแบบเฉพาะของอุปกรณภายนอกนั้นๆ Programmed I/O การจัดการอุปกรณ I/O อาจทาได 3 รูปแบบ Programmed I/O – ขอมูลถูกสงผานระหวางโพรเซสเซอรกับโมดูล I/O – โปรแกรมถูกเขียนขึ้นโดยการสั่งการใหโพรเซสเซอร ตดิตอควบคมุกับ I/O โดยตรง (เชน การ INP, OUTP เปนตน) – เนื่องจากเปนคาสั่งที่โพรเซสเซอรประมวลเพื่อติดต อกับ I/O ดังนั้นโปรแกรมที่สั่งการตองรอคาสั่งให ทางานเสร็จเสียกอน จึงจะทางานอื่นๆ ตอไปได – กรณีโดยทั่วไป ถาโพรเซสเซอรทางานเร็วกวาการ ทางานของโมดูลI/O โพรเซสเซอร จะตองหยุดรอซึ่ง เปนการเสียเวลามาก Interrupt-driven I/O โพรเซสเซอรสงคาสั่งทาง I/O ไปยังโมดูล I/O จากนั้นสามารถทางานอื่นๆ ตอไปไดโดยไม่ ต้องรอ ให I/O ทางานเสร็จ เพราะเมื่อทางาน เสร็จ จะมีสัญญาณขัดจังหวะสงกลับมาทีโ่ พ รเซสเซอร เพื่อโพรเซสเซอรจะไดกระโดดไป ทางานภายใต interrupt handler ที่เตรียมไว สาหรับ I/O นั้นๆ เพื่อจัดการงานที่เหลือให เสร็จสิ้นตอ ไป Direct memory access (DMA) โมดูล I/O แลกเปลี่ยนขอมูลกับ หนวยความจาภายในโดยตรงโดย ไมตองผานโพรเซสเซอร (ลักษณะการทางานแบบนี้ โปรแกรมผูใชตองจัดเตรียมพื้นที่ หนวยความจา และอาจเตรียมขอ มูลที่ตองการสง จากนั้นสั่งการให DMA Controller รับภาระรับสง ขอมูลระหวางหนวยความจา ภายในกับโมดูล I/O) การสั่งการ I/O command ของ Programmed I/O รูปแบบการทางานที่เกี่ยวของกับ Programmed I/O มีอยูดังนี้ Control การควบคุมสั่งการอุปกรณรอบขาง ซึ่งใชสาหรับการกาหนด สถานะที่ตองการ สั่งการเตรียมพรอมวาจะใหอุปกรณรอบขางทาสิ่งใด Test การทดสอบสภาวะการทางาน โดยตรวจสอบสถานะตางๆ ของอุป กรณรอบขางวาเปนเชนใด พรอมจะ ทางานแลวหรือไม ฯลฯ Read การอานขอมลูจากอุปกรณรอบขางเขามาภายในระบบ (อาจจะเก็บ ไวในหนวยความจาภายในท่ีแบงเปนพื้นที่ พักขอมลูชั่วคราว หรืออืน่ ๆ) Write การเขียนขอมูล โดยการส่งขอมูลผานบัสระบบไปยังโมดูล I/O เพื่อสงออกไปยังอุปกรณรอบขาง I/O Instructions With programmed I/O there is a close correspondence between the I/O-related instructions that the processor fetches from memory and the I/O commands that the processor issues to an I/O module to execute the instructions Each I/O device connected through I/O modules is given a unique identifier or address When the processor The form of the instruction depends issues an I/O Memory-mapped I/O command, the on the way in which command contains external devices are the address of the addressed desired device Thus each I/O module There is a single address space for A single read line and a single write line must interpret the memory locations and I/O devices are needed on the bus address lines to determine if the command is for itself เชื่อมตอโมดูล I/O กับบัสระบบ การสั่งการกับ I/O สามารถเชื่อมตอโมดูล I/O กับบัสระบบได 2 ลักษณะ Isolated I/O อาศัยการใชเฉพาะกับ I/O โดยโพรเซสเซอรจะอางดวยหมายเลขพอรต แต ทั้งนี้หลักการโดยทั่วไปการเขียน/อาน คลายคลึงกับการจัดการหนวยความจา ภายใน โดยทั่วไปโพรเซสเซอรจะกาหนดเวลารอหรือการทางาน I/O ที่จะรอ รอบสัญญาณ นาฬิกานานกวาการเขาถึงหนวยความจาปกติ จานวนพอรตที่มีไดของโพรเซสเซอร จะมีจากัด (นอยกวาขนาดพื้นที่หนวย ความจาภายใน) โพรเซสเซอรใชชุดคาสัง่ พิเศษสาหรับการจัดการ I/O แตกตางไปจากการ จัดการหนวยความจาภายในตามปกติ จะตองมีวงจรเลือกสั่งการโมดูล I/O วาจะตอบสนองตอหมายเลขพอรตที่ กาหนด (สาหรับโมดูล I/O มาตรฐาน มักจะมีการกาหนดหมายเลขพอรตไว ชัดเจน ซึ่งวงจรถอดรหัสเลขทีอ่ ยูอาจฝงเปนสวนหนึ่งภายในโมดูล I/O ไปเลยก็ ได้ Memory Mapped I/O สาหรับอุปกรณ I/O ทึ่มีความเร็วในการตอบสนองในระดับ เดียวกันกับหนวยความจาภายใน (ผู แปล-เชนหนวยความจา จอภาพ ซึ่งปกติจะเปนสวนหนึ่งอยูบนการดแสดงผล) การใช Isolated I/O จะทาใหการรับสงขอมูลชาโดยไมจาเปน ดังนั้นอุป กรณลักษณะนี้จึงสามารถแมปหมายเลข ที่อยูของตนใหเปนสวน หนึ่งในพื้นที่หนวยความจาไดเลย การติดตอกับ I/O ในลักษณะเชนนี้จึงไม่แตกตางจากการอ่าน เขียนหนวยความจาภายใน และใช ชุดคาสั่งที่ติดตอกับหนวย ความจาภายใน เพื่อติดตอกับ I/O ที่เชื่อมตอในลักษณะนี้ไดทันที 516 Keyboard input data register 7 6 5 4 3 2 1 0 Keyboard input status 517 and control register 7 6 5 4 3 2 1 0 1 = ready Set to 1 to 0 = busy start read 516 Keyboard input data register ADDRESS INSTRUCTION OPERAND COMMENT 7 6 5 4 3 2 1 0 200 Load AC "1" Load accumulator Keyboard input status Store AC 517 Initiate keyboard read 517 and control register 202 Load AC 517 Get status byte Branch if Sign = 0 202 Loop until ready 1 = ready Set to 1 to Load AC 516 Load data byte 0 = busy start read (a) Memory-mapped I/O รูปนี้ เปนตัวอยางระบบหนึ่ง อานขอมูล ADDRESS 200 INSTRUCTION OPERAND Load AC "1" COMMENT Load accumulator จากคียบอรดที่มีเรจิสเตอร 2 ตัว โดยเร 202 Store AC Load AC 517 517 Initiate keyboard read Get status byte ADDRESS INSTRUCTION OPERAND COMMENT จิสเตอรตัวแรกใชสงขอมูลจากคียบอรด Branch if Sign = 0 Load AC 202 516 Loop until ready Load data byte 200 201 Load I/O Test I/O 5 5 Initiate keyboard read Check for completion และเรจิสเตอรตัวที่สองใช้รายงานสถานะ (a) Memory-mapped I/O Branch Not Ready In 201 5 Loop until complete Load data byte ของคียบอรด และสมมติวาบิต 0 ของเร (b) Isolated I/O จิสเตอรสถานะ ใชแจงใหคียบอรดเริ่ม ADDRESS INSTRUCTION OPERAND COMMENT อานคาและบิต 7 ใชแสดงสถานวาวาขอ 200 201 Load I/O Test I/O 5 5 Initiate keyboard read Check for completion Figure 7.5 Memory-Mapped and Isolated I/O มูลพรอมที่จะถูกอานแลวหรือไม Branch Not Ready In 201 5 Loop until complete Load data byte (b) Isolated I/O กรณีจัดการแบบ Isolated I/O สมมติวาพอรตใชเปนหมายเลข 5 และการเขาถึงขอมูล และการสั่ง การผานเรจิสเตอรทั้งสองตัว มีการเขารหัสใหผานตาแหนงพอรตเดียวกัน การอานคียบอรดจะริ่มตนดวยการสงคาสั่งขออาน ไปยังพอรตดวยคาสั่งพิเศษ LOAD I/O จากนั้นอานคาสถานะคืนกลับเพื่อทดสอบวาคียบอรดพรอมหรอืไมดวยTEST I/O หาก ยังไมพรอ มจะวนกลับไปอานสถานะจนกระทั่งพรอม จึงอานคาดวยคาสั่ง IN กรณี ที่เปนการจัดการแบบ Memory mapped I/O ตาแหนงเรจิสเตอรทั้งสองถูกแมปเขาเป นสวนหนึ่งของพื้นที่ หนวยความจาภายใน ในที่นี้สมมติวาเปน 516 สาหรับขอมูลและ 517 สาหรับสถานะ การเขาถึงเรจิสเตอรทั้งสองจึงใชคาสั่ง ในการเขียนอานหนวย ความจาตามปกติได ตัวอยางเชนการกาหนดคาใน accumulator ดวย 1 แลวสงคา 1 นี้ไปยัง หนวยความจาตาแหนง 517 ซึ่งเปนการกาหนดบิต 0 ของเรจิสเตอรสถานะ ของคียบอรด เพื่อสั่งใหเริ่มทางานดวย STORE AC จากนั้นจึงใช LOAD AC เพื่ออานค าสถานะกลับคืนมาจากตาแหนงหนวยความจาเดิม เพื่อตรวจสอบบิต b7 วาสถานะ พร อมแลวหรือยัง หากพรอมแลวจึงอานขอมูลจากตาแหนงหนวยความจา 516 ตอไป Interrupt-driven I/O การจัดการแบบ Programmed I/O มีขอเสียที่สาคัญคือ โพรเซสเซอรตองรอ เวลานาน (เชนการ Load I/O, Test I/O, IN และโดยเฉพาะอยางยิ่ง การวนรอ คาตอบดวย loop จากตัวอยางขางบน หรือ INP, OUTP สาหรับ สถาปตยกร รมอยาง x86) ทางเลือกอีกทางคือ การสั่งคาสั่งไปยัง I/O เพื่อใหเริ่มตนทางาน และกาหนด interrupt handler ไวลวงหนา แต ไมรอใหสถานะของ I/O นั้นพรอมสงคา ตอบให เมื่อโมดูล I/O และอุปกรณรอบขางทางานเสร็จไดผลลัพธ โมดูล I/O สงสัญ ญาณขัดจังหวะกลับมาทีโ่ พรเซสเซอร โพรเซสเซอรจึงหยุดการทางานปกติไว ชั่วคราว เพื่อกระโดดไปทางานใน interrupt handler ที่เตรียมไว เมื่อทางานภายใน interrupt handler เสร็จ คาสั่งสุดทายในนั้นจะเปน RETI โพรเซสเซอรจะกระโดดกลับไปทางาน ปกติตอไป Hardware Software Device controller or other system hardware issues an interrupt Save remainder of process state information Processor finishes execution of current instruction Process interrupt Processor signals acknowledgment of interrupt Restore process state information Processor pushes PSW and PC onto control stack Restore old PSW and PC Processor loads new PC value based on interrupt Figure 7.6 Simple Interrupt Processing ขั้นตอนการตอบสนองการขัดจังหวะ อุปกรณสงสัญญาณขัดจังหวะไปยังโพรเซสเซอร โพรเซสเซอรทางานตามคาสั่งปจจุบันจนเสร็จสิ้น จากนั้นตอบสนองต อสัญญาณขัดจังหวะ โดยสงสัญญาณตอบกลับไปยังอุปกรณที่สงสัญญาณมา (เพื่ออุปกรณที่สงสัญญาณขัดจังหวะจะไดหยุดการสงสถานะขัดจังหวะได) จากนั้นโพรเซสเซอรจะตองจัดเก็บคาบางอยางไว้ เมื่อทางานเสร็จจะกลับไป ทางานตามปกติได คาที่จะตองเก็บอยางนอยที่สุดมีสองคา ตัวแรกคือ Program Status Word (PSW) และคาตาแหนงหนวยความจาของคาสั่งถัดไป ที่จะตองประมวลตามปกติ ซึ่งจะอานไดจาก Program Counter (PC) คาทั้ง สองนี้จะถูก push ไปเก็บไวในสแต็กที่ระบบควบคุมได (ตามปกติจะเปนพื้นที่ สแต็กของโพรเซส/เธรดปจจุบันนั้นเอง แตสาหรับโพรเซสเซอรที่ตองจัดการกับ หลายเธรด อาจมีการออกแบบใหใชสแต็กแยกตางหาก) จากนั้น จะมีการโหลดคา PC ดวยคาตาแหนงหนวยความจาเริ่มตนของ interrupt handler เพื่อใหคาสั่ง ถัดไปที่จะประมวล คือ interrupt hander แทนที่จะเปนคาสั่งถัดไปตามปกติ โพรเซสเซอรโดยทั่วไปจะมีการจัดเก็บตาแหนงหนวยความจาเริ่มตนของ interrupt handler ของการขัดจังหวะแตละตัวไวในตารางอินเทอรรัปต (interrupt vector table- IVT) (ใน x86 โหมด protected จะถูกจัดการโดย Interrupt Descriptor Table- IDT) ซึ่งในกรณี การเขียนโปรแกรมบนระบบ แบบพื้นฐาน ผูพัฒนาโปรแกรมจะตองจัดเตรียมทั้ง interrupt handler และ บรรจุคาเลขที่อยูลงในตารางดวยตนเอง แตในระบบปฏิบัติการในปจจุบัน โดยทั่วไป การจัดการตารางสวนนีเ้ ปนหนาที่ของระบบปฏิบัติการ โดยจะมี API บริการใหผูใช กาหนด callback function เพื่อวาเมื่อเกิดสัญญาณอินเทอร รัปตใดขึ้น ระบบปฎิบัติการจะไป เรียกใชcallback function ตัวที่เตรียมไวต อไป สวนตอไปนีเ้ ปนกลไกทางซอฟตแวรที่เขียนไวใน interrupt handler กอนจะดาเนินการใดๆ ตอไป จะตองอานคาสถานะและเรจิสเตอรตางๆ ในโพรเซสเซอรไปเก็บ ลงไวในสแต็กดวย เพื่อใหสามารถนาเรจิสเตอรภาย ในตางๆ มาใชเปนการชั่วคราวไดโดยไมมี ผลกระทบตอโปรแกรมที่หยุด ชะงกัไปชั่วคราว ประมวลคาสั่งตางๆ เพื่อตอบสนองตองานที่ตองกระทา คืนสถานะและเรจิสเตอรตางๆ ใหกลับเปนเหมือนเดิม (อานคาจากสแต็ก มาวางไวในตาแหนง เดิม) คืนคา PSW และ PC กลับเชนเดิม (โดยการใชคาสั่งพิเศษ เชนใน x86 จะเปน RETI) ประเด็นปญหาในการออกแบบ – เนื่องจากระบบคอมพิวเตอรมีอุปกรณจานวนมาก มีสัญญาณขัดจังหวะจาก หลายแหลง (ซึ่งรวมถึงภายในโพรเซสเซอรเองอีกดวย) จะทราบไดอยางไร วาใครเปนผูขอขัดจังหวะ – หากเกิดสัญญาณขัดจังหวะขึ้นพรอมกันหลายตัว จะมีวิธีการจัดการอยางไร การระบุผูกาเนิดสัญญาณขัดจังหวะ – การใชสายสัญญาณอินเทอรรัปตแยกกันในแตละอุปกรณ – โมดูล I/O แตละตัวจะมีสายสัญญาณอินเทอร์รัปตแยกจากกันเปนวิธีการ จัดการที่งายที่สุด – กระนั้นยังคงมีปญหาอยูดี เพราะโมดูล I/O อาจจะมีอุปกรณรอบขางหลาย ตัวตออยู ซึ่งจะตองตัดสินใจวา อุปกรณรอบขางตัวใดเปนตนกาเนิดของ สัญญาณขัดจังหวะ การใชการหยั่งสัญญาณดวยซอฟต แวร (software poll) T–M Control Stack Y T–M Control Stack N+1 เมื่อไดรับสัญญาณขัดจังหวะ และ T T N+1 Y+L Program Program Counter Counter กระโดดไปยัง interrupt handler Y Start Y Start แลว จะมีกลไกติดตอกับ โมดูล Interrupt General Interrupt General Service Registers Service Registers Y + L Return Routine T Y + L Return Routine T–M Stack Stack I/O ที่เกี่ยวของตอไป เพื่อระบุต Pointer Pointer Processor Processor นตอวามาจากที่ใด T–M T N User's N User's N+1 N+1 Program Program ใชเวลาเพิ่มขึ้นกับกระบวนการนี้ Main Main Memory Memory (a) Interrupt occurs after instruction (b) Return from interrupt at location N Figure 7.7 Changes in Memory and Registers for an Interrupt การพวงสัญญาณขัดจังหวะเขาดวยกันโดยมีการระบุตัวตน Daisy Chain (Hardware poll, vectored) สายสัญญาณขัดจังหวะตอพวงกันระหวางอุปกรณ I/O แตละตัว อุปกรณแตละตัวจะมีรหัสประจา ซึ่งอาจจะเปนคาเลขที่อยู I/O หรืออืน่ ใด โดย รหัสดังกลาวจะถูกสงตอใหกับโพรเซสเซอรเมื่อเกิดการขัดจังหวะ vectored interrupt ระบบปฏิบัติการอานคารหัสประจาดังกลาว ซึ่งสามารถ ใชอางถึง interrupt handler ใน IVT/IDT ตอไปไดเลย การรองขออินเทอรรัปตผานระบบบัสดวยการตัดสิน (Bus arbitration) โมดูล I/O ที่ตองการรองขออินเทอรรัปต เขาควบคุมบัสระบบ (เขาใชงาน) และสงสัญญาณอินเทอรรัปตผานชองสัญญาณอินเทอรรัปตบนบัสระบบ การทาเชนนี้ จะมีเพียงโมดูล I/O ตัวเดียวเทานั้นที่จะสามารถสงสัญญาณอิน เทอรรัปตไดในเวลาใดเวลาหนึ่ง โพรเซสเซอรตอบสนองสัญญาณอินเทอรรัปตทีเ่ กิดขึ้นในบัสระบบ โมดูลI/O ที่ครอบครองบัสระบบและไดรับสัญญาณตอบรับสงคารหัสเฉพาะตัวแกโพรเซสเซ อร ผานบัสขอมูล เพื่อใหโพรเซสเซอรใชคาดังกลาว จัดการเลือก interrupt handler ต อไปได ตัวอยาง ไดแก PC ในปจจุบัน ซึ่งอิงการออกแบบมาจาก PC/XT และ PC/AT ที่เริ่มตนด วยการใช PIC (programmable Interrupt controller) เบอร 8259 จานวน 1-2 ตัว (ป จจุบันมีการใชวงจรเทียบเคียงและมีจานวนชองสัญญาณ vector มากขึ้นกวาเดิม) เนื่องจากซีพียู 8088 (และในตระกูล x86) มีขาอินเทอรรัปตเพียงขาเดียว 8259 แตละตัวรับสัญญาณอินเทอรรัปตได 8 สัญญาณ โดยมีลาดับความสาคัญ (priority) ตางกัน (หากเกิดสัญญาณอินเทอรรัปตขึ้นพรอมกัน ตัวต่ากวาจะไดรับบริการ) โดยอุปกรณแตละตัวจะมีรหัสเปนคา hardware interrupt ตั้งแตหมายเลข 0 ขึ้นไป (IRQ0-7 และ IRQ8-15) (ในกรณีที่มี 2 ตัว) เมื่อโพรเซสเซอรไดรับสัญญาณที่ขา INTR จะส งสัญญาณ ตอบกลับที่ขา INTA ใหกับ 8259 ตัว master (ตัวหลัก) ซึ่งจะสงค่ารหัสเฉพาะ ลงในบัสขอมูลซี พียจู ะอานคารหัส และนาไปใชในการแม็ปเขาสู IDT/IVT ตอไป 82C59A Interrupt Controller (Intel) Slave ซึ่งใชใน PC และวงจรดังกลาวเปน 82C59A interrupt controller External device 00 IR0 External device 01 IR1 INT สวนหนึ่งในระบบ คอมพิวเตอรพีซี IR2 IR3 IR4 IR5 ในปจจุบัน) IR6 External device 07 IR7 Slave Master 82C59A 82C59A interrupt interrupt 80386 ซีพียูตระกูล x86 อยาง controller controller processor External device 08 IR0 IR0 External device 09 IR1 INT IR1 INT INTR IR2 IR2 8088/80286/80386 มีขาอินเทอร IR3 IR3 IR4 IR4 IR5 IR5 IR6 IR6 รัปตเพียงชุดเดียวคือ INTR และ External device 15 IR7 IR7 INTA จึงมีการใช 80C59A เพื่อทา Slave 82C59A interrupt controller หนาที่เปนตัวกลางจัดการการ External device 56 IR0 External device 57 IR1 INT IR2 IR3 IR4 ขัดจังหวะกับอุปกรณได 8 ตัว External device 63 IR5 IR6 IR7 Figure 7.8 Use of the 82C59A Interrupt Controller ใน PC/AT มีการพวง (daisy chain) 82C59A เขาไปอีกตัวหนึ่งเพื่อ เพิ่มชองสัญญาณไดอีก 8 ตัว (แตจะเสียชอง สัญญาญในตัว master ไป หนึ่งตัวเนื่องจากใชโดยตัว slave) ทั้งนี้ 82C59A ถูกออกแบบใหพวง แบบสองชั้น ทาให ไดอุปกรณมากถึง 64 ตัว) คุณสมบัติของ 82C59A – Fully nested คาลาดับความสาคัญ (priority) เริ่มตนจาก IRQ0 ไป IRQ7 – สามารถโปรแกรมใหมีลาดับความสาคัญเทากันได เมื่ออุปกรณตนทางไดรับ บริการ จะถูกเปลี่ยนคาลาดับความสาคัญไปเปนลาดับต่าสุด – special mask โพรเซสเซอรสามารถสั่งการใหไมสนใจสัญญาณขัดจังหวะ จากอุปกรณที่กาหนดได้ 8255A Programmable Peripheral Interface (Intel) PA3 1 40 PA4 Power +5 V PA2 2 39 PA5 supplies Group Group A GND Port A PA1 3 38 PA6 A I/O control (8) PA7 - PA0 PA0 4 37 PA7 RD 5 36 WR CS 6 35 Reset Bi-directional Group A GND 7 34 D0 data bus Data Port C I/O A1 8 33 D1 bus upper (4) PC7 - PC4 A0 9 8255A 32 D2 D7 - D0 buffer PC7 10 31 D3 8-bit Group B PC6 11 30 D4 internal Port C I/O PC5 12 29 D5 data bus Lower(4) PC3 - PC0 PC4 13 28 D6 RD PC3 14 27 D7 Read/ WR PC2 15 26 V write Group A1 Group B control B PC1 16 25 PB7 A0 Port B I/O logic control PC0 17 24 PB6 (8) PB7 - PB0 Reset PB0 18 23 PB5 CS PB1 19 22 PB4 PB2 20 21 PB3 (a) Block diagram (b) Pin layout Figure 7.9 The Intel 8255A Programmable Peripheral Interface ออกแบบมาสาหรับซีพียูตระกูล x86 ในตอนตน แต่มีการใชงานอยางแพร หลาย มีขา 40 ขา แตละขาตัวมีหนาที่ดังนี้ D0-D7 เปนขาขอมูลสาหรับรับเขาและสงออกกับซีพียู 𝐶𝑆 (chip select input) ใชเพื่อระบุจะใชงานกับไอซี (ดวยลอจิก 0) 𝑅𝐷 (read input) ใชเพื่ออานค่า จากไอซี8255 ใหบัสระบบ 𝑊𝑅 (write input) ใชเพื่อเขียนคาใหชิป 8255 RESET ถามีสถานะเปน 1 ไอซีจะอยูในสถานะรีเซ็ต ขาพอรตทุกตัวอยูในโหมด อินพุต PA0-PA7, PB0-PB7, PC0-PC7 เปนขาพอรตขนาด 8 บิต สาหรับใชตอกับอุป กรณรอบขาง A0,A1 ขาเลขที่อยูพอรต ซึ่งทาใหได 4 หมายเลขพอรต เพื่อกาหนดวาจะเขียน หรือ อานเรจิสเตอรตัวใด พอรต A และ B มีขนาด 8 บิต พอรต C มีขนาด 8 บิต แต สามารถแยกออกเปน 4 บิตสองชุดได โดยในกรณีนี้ พอรต C ในกลุมยอย 4 บิต จะถูกใชรวมกับพอรA และ B ตามลาดับ โดยมักจะใชเปนสายสัญญาณควบคุมและรับ สถานะของอุปกรณรอบขาง ในตาแหนงที่ A0 และ A1 เปน 1 จะเปนการเขาถึงเรจิสเตอรควบคุมและอาศัยการ กาหนดคา D7 เปน 1 หรือเปน 0 จะสามารถสั่งการยอยลงไปไดดังนี้ D7=1 ; การกาหนดพอรต A,B,C แบงสวนการควบคุมเปน 2 group และ D2,D5,D6 ทาหนาที่กาหนดโหมดประจากลุมยอย ซึ่งมีโหมดการทางานดังนี้ MODE 0: โหมดอินพุตเอาตพุตแบบปกติ หากเซ็ตเปน 0 ทั้งหมดจะทาใหทั้งสามพอรต กลายเปนพอรตปกติ สามารถเซ็ตสถานะใหเปน input หรือ output ได (A เซ็ต ที่ D4 B เซ็ตท่ี D1 และ C ครึ่งลางเซ็ตที่ D0 ครึ่งบนเซ็ตที่ D3) output latched (สถานะที่พอรตขาออกจะคงอยูหลังจากที่กาหนดค่าใหพอรต input not latched (สถานะที่พอรตเมื่อกาหนดใหเปนขาเขา จะอานคาเฉพาะเมื่อ กาหนดใหอานเทานั้น คาที่อานไดจะไมคงอยูที่พอรต (อานคาแลวคาจะไมมีการบันทึก ไวภายในหรือไมมีการคงสถานะที่อินพุต) ไมรองรับกลไกการขัดจังหวะ MODE 1: พอรต C ประจากลุม ทาหนาทีเ่ ปนสัญญาณควบคุมสาหรับ พอรต A และ B (ซึ่งสามารถเซ็ตใหเปน input หรือ output) ตัวอยาง สัญญาณควบคุมที่ใชคือ สัญญาณ handshaking เชน Data ready หรือ Acknowledge และ interrupt request เปนตน โหมดนี้เรียกวา Strobe input มีลักษณะการอานขอมูลโดยใชสัญญาณ strobe จาก นั้นขอมูลจะพักอยูใน input latch แลวสงสัญญาณขัดจังหวะออกไปให โพรเซสเซอรจัดการอานขอมูลทีไ่ ดอีกทอดหนึ่ง input and output latched คาที่อานเขามาหรือสงออกไป จะคง สถานะอยูที่พอรต (สามารถอานคาจากเรจิสเตอรประจาพอรตได หลังจากที่กาหนดใหมีการสั่งอานขอมูลแลว) ตัวอยาง เปนการเซ็ตพอรต A เปนโหมด 1 ซึ่งพอรต C บิต 3 จะกลายเปน Interrupt request (INTR_A) พอรต C บิต 5 กลายเปน Input buffer full (IBF_A) (ขอมูลเขามาพักในอินพุตบัปเฟอรแลว) พอรต C บิต 4 เปน 𝑆𝑇𝐵 (Stobe input) โดยใหพัลสศูนยเพื่อสั่งอานคาเขา สวน PC6/PC7 ใชเปนบิตขอมูลสาหรับรับเขา/สงออกพิเศษระหวาง 8255 กับ อุปกรณ ตัวอยาง ในภาพดานขวา เปนการเซ็ตพอรต B ใหเปนโหมด 1 ซึ่งจะใช PC2 เปน 𝑆𝑇𝐵 PC1 เปน IBF PC0 เปน INTR ลักษณะของการทางาน และการจัดการ เพื่ออานคาจากอุปกรณรอบขาง และการจัดการอานขอ มูลทีไ่ ดเมื่อเกิดสัญญาณขัดจังหวะ เปนไปตามไดอะแกรมดานลาง ตัวอยางขางบนเปนการกาหนดโหมด 1 แบบผสมใหพอรตหนึง่ เปนเอาต พุต อีกพอรตเปนอินพุต MODE 2 เปนโหมด bi-directional ซึ่งจะกาหนดใหพอรต A เปนทัง้ input และ output และ อีก 5 บิตจากพอรต C เปนพอรตควบคุม สามารถเซ็ตใหพอรต B เปน อินพุตหรือเอาตพุต ผสมกับ พอรต A ที่เปนโหมด bi- directional (Mode 2) ได ดังรูป การรับสงขอมูลทาไดทั้งสอง ทาง ดังไดอะแกรม ที่สั่งการ เขียนขอมูลออกไปยังอุปกรณ ภายนอกผาน 8255 และใน ขณะเดียวกันมีขอมูลถูกอาน เขาจากอุปกรณภายนอก ซึ่ง จะถูกพักไวใน input buffer และ 8255 สามารถสงขอมูล ออกไปหลังจากนั้นได (D7=0) เปนโหมดการ เซ็ตบิตตางๆ ใหพอรต C โดยบิต D3,D2,D1 กาหนดตาแหนงบิตที่ จะเซ็ตของพอรต C และ D0 กาหนดคาที่จะเซ็ต (1 หรือ 0) ซึ่งมีประโยชน มากในกรณีที่ใชพอรต C เปนพอรตควบคุม ประจา พอรต A และ B ในโหมด 1 และ 2) วงจรตัวอยาง เชื่อมตอเครื่องพิมพและเชื่อมตอคียบอรดและจอภาพ Direct Memory Access (DMA) ขอดอยการติดตอ I/O ดวยวิธี Programmed I/O และ Data count Interrupt-driven I/O Data อัตราสงถายขอมูลถูกจากัดดวย Data lines register ความเร็วที่โพรเซสเซอรสามารถ Address ทางานติดตอกับอุปกรณได Address lines register การจัดการ I/O ตองกระทากับข Request to DMA Acknowledge from DMA Control อมูลทีละหนวย (ดวยขอจากัดของ Interrupt Read logic คาสั่งของโพรเซสเซอร์) ในกรณีที่ Write ตองการรับสงขอมูลเปน บล็อก ขนาดใหญ การใช DMA จึงเปนวิธี ที่มีประสิทธิภาพที่สุด Figure 7.12 Typical DMA Block Diagram การจัดการ DMA อาศัยโมดูลเฉพาะ (DMA Controller) ซึ่งเชื่อมตอกับบัสระบบ โมดูล DMA จะทาตัวเสมือนหนึ่งเปนโพรเซสเซอร ในลักษณะของการเขาควบคุมระบบ แทนโพรเซสเซอร หนาที่หลักคือการถายโอนขอมูลกับหนวยความจาภายใน (กับ I/O) ผานทางบัสระบบ DMA จะเขาครอบครองบัสระบบในเวลาที่โพรเซสเซอรไมไดใชบัสระบบหรืออาจจะ กาหนดใหโพรเซสเซอรหยุดการใชบัสระบบชั่วคราว (วิธีหลังเรียกวา cycle stealing) เมื่อโปรแกรมตองการถายโอนขอมูล(เขียน/อาน)บล็อกขอมูล จะตองมีคาสั่งจากโพรเซส เซอรไปยังโมดูล DMA ซึ่งมีขอมูลประกอบดังตอไปนี้ – คาสั่งเขียนหรืออาน โดยสงผานชองสัญญาณเขียนหรืออานไปยังโมดูล DMA – เลขทีอ่ ยูของอุปกรณ I/O ที่จะเขียนหรืออาน – ตาแหนงที่อยูเริ่มตนของพื้นที่หนวยความจาภายในที่จะใชรับเขาหรือสงออกขอ มูล ซึ่งเลขที่อยูดังกลาว จะถูกจัดเก็บในเรจิสเตอรของโมดูล DMA – จานวนเวิรด (words) ที่ตองการเขียนหรืออานและจานวนคาจะถูกเก็บอยูในเร จิสเตอรของโมดูล DMA ดวยเชนกัน เมื่อโพรเซสเซอรสงคาสั่งไปยังโมดูล DMA แลวจะสามารถทางานอื่นๆ ไดตอไป โมดูล DMA เมื่อไดรับคาสั่งแลว จะดาเนินการถายโอนขอมูลคราวละเวิรดจนกระทั่ง ครบถวนโดยขอมูลที่ถายโอนไมผานโพรเซสเซอร เมื่อโมดูล DMA ทางานเสร็จ จะสงสัญญาณขัดจังหวะกลับไปยังโพรเซสเซอรให รับทราบ หมายความวาโพรเซสเซอรจะเกี่ยวพันการจัดการรับสงขอมูลเพียงตอน เริ่มตนการสงและสิ้นสุดการสงเทานั้น เนื่องจากโพรเซสเซอร์ยังมีความจาเปนตองเขาถึงหนวยความจาภายใน ในเวลาที่ โมดูล DMA กาลังถายโอนขอมลู โพรเซสเซอรอาจจะหยุดการประมวลผลเปนการ ชั่วคราว ตามตาแหนงที่บงไวในรูปขางบน ทั้งนี้การหยุดลักษณะนี้ ไมไดหมายความว าเปนการขัดจังหวะ แตเปนการหยุดรอเทากับหนึ่งรอบบัสระบบ (การเขียนหรืออาน หนึ่งครั้ง) เพื่อให DMA เขาครอบครองบัสระบบและถายโอนขอมูลหนึ่งหนวย ณ ขณะนั้น แมวากลไกดังกลาวจะทาใหโพรเซสเซอรทางานชาลง (เพราะตองหยุดรอ เปนระยะ) แตยังนับวามีประสิทธิภาพมากกวาการถายโอนขอมูลแบบอื่นๆ อยูดี Time Instruction Cycle Processor Processor Processor Processor Processor Processor Cycle Cycle Cycle Cycle Cycle Cycle Fetch Decode Fetch Execute Store Process Instruction Instruction Operand Instruction Result Interrupt DMA Interrupt Breakpoints Breakpoint Figure 7.13 DMA and Interrupt Breakpoints During an Instruction Cycle Processor DMA I/O I/O Memory (a) Single-bus, detached DMA Processor DMA DMA Memory I/O I/O I/O (b) Single-bus, Integrated DMA-I/O System bus Processor DMA Memory I/O bus I/O I/O I/O (c) I/O bus Figure 7.14 Alternative DMA Configurations สามารถออกแบบใหโมดูล DMA จัดการภายในระบบคอมพิวเตอรไดในหลายรูปแบบ เชน ใชโมดูล DMA เพียงตัวเดียวเชื่อมตอเขากับบัสระบบ ซึ่งเปนวิธีที่ออกแบบงายและประหยัด แตไมคอยมีประสิทธิภาพ เมื่อเทียบกับวิธีอื่นเพราะทุกๆ เวิรดที่ถายโอน จะตองเสียรอบบัส ระบบไปสองรอบ (หนึ่งรอบสาหรับถายโอนเขาไปยังโมดูล DMA และอีกรอบสาหรับถาย โอนไปยังปลายทาง) ใชโมดูล DMA แตละตัวประจากับอุปกรณ I/O โดยมีบัสแยกพิเศษเชื่อมตอระหวางโมดูล DMA กับอุปกรณโดยตรง – อาจจะใชโมดูล DMA หนึ่งตัวประจากับอุปกรณ I/O – หรืออาจจะใชโมดูล DMA หนึ่งตัวกับกลุมอุปกรณ I/O – ทาใหลดเวลาที่โพรเซสเซอรตองรอเหลือเพียงหนึ่งรอบบัสระบบ (เพราะโมดูล DMA ไมตองรองขอบัส ระบบในการถายโอนขอมูลระหวางโมดูล DMA กับอุปกรณ I/O) ใชโมดูล DMA เพียงตัวเดียว เพื่อจัดการถายโอนขอมูลระหวางบัสระบบ (เพื่อเขาถึงหนวย ความจาภายใน) กับบัส I/O ซึ่งเชื่อมตอกับอุปกรณ I/O ทุกตัวในระบบ – ขอดีเชนเดียวกับกรณีที่สอง คือโพรเซสเซอรใชเวลารอเพียงหนึ่งรอบบัสระบบตอการถายโอนขอมูล หนึ่งเวิรด Direct Cache Access เมื่อมีขอมูลที่มีปริมาณมากขึ้น และอัตราการสงถายระหวางภายนอกกับ คอมพิวเตอรสูงมากขึ้น DMA เริ่มไมสามารถตอบสนองไดทันตอความตองการ ตัวอยางเชน สวิตชอีเทอรเน็ตความเร็วอยาง 10Gbps และ 100Gbps และท ราฟกจาก Wi-Fi ที่ความเร็วสูงระดับ กิกะบิต (เชนระดับ 3.2Gbps และ 6.76Gbps) จึงมีการออกแบบเพื่อใหกลไกการติดตอกับ I/O สามารถถายโอนขอมูลเขาถึง หนวยความจาแคช (ในระดับสุดทาย เชน L3) ดวยวิธีการที่เรียกวา Direct Cache Access (DCA) เพื่อใหเขาใจถึงกลไกการทางานของ DCA กอนอื่น จึงควรทาความเขาใจ กับสถาปตยกรรมของโพรเซสเซอรในยุคปจจุบัน โดยอาศัยตัวอยางซีพียู Xeon E5-2600/4600 ดังนี้ Xeon E5-2600/4600 มีคอรภายในได สูงสุดถึง 8 คอรบนชิปเดียว แตละคอร จะมี L1 และ L2 แคชเปนของตนเอง แตใชแคช L3 รวมกันทุกคอร มีขนาด 20 เมกะไบต โดยแคช L3 แบงออกเปน 8 ส่วน (สวนละ 2.5 เมกะไบต) โดยแต ละคอรจะมี L3 ที่เชื่อมถึงโดยตรง ประจาแตละคอร แตกระนั้นทุกคอร สามารถเขาถึง L3 แตละสวนไดเชนกัน แคชแตละสวนมีไปปไลนของตนเอง ขอ มูลที่วิ่งเขาออกแคชในแตละสวนจึง กระทาไดพรอมๆ กัน การติดตอสื่อสารภายในซีพียู ใช high-speed ring interconnect เพื่อเชื่อมเขา ดวยกัน โดยเรียกแตละสวนยอยเปน ring agent ดังนี้ – สวนซีพียแู ตละคอร (รวม L2 และ L1) – สวน QPI ที่เชื่อมตอกับซีพียูตัวอื่นในระบบ – สวน PCIe controller – สวน memory controller – แคช L3 แตละสวนยอย การสื่อสารบน ring interconnect ใชหลักการแบงเปนชวงเวลาการสง (แตละ agent มี time slot เปนของตนเอง เพื่อสงขอมูลไมใหชนกัน) เนื่องจากตัว ring interconnect เปน bi-directional การสงขอมูลจะเลือกเสน ทางที่สั้นที่สุดและสงเมื่อถึงชวงเวลา ของตน การใช ring interconnect ใหประสิทธิผลดานความเร็ว แตประสิทธิภาพจะ ลดลงเมื่อเพิ่มจานวนคอรมากขึ้นถึงระดับหนึ่ง ในซีพียูที่มีจานวนคอรมากๆ จะใช ring หลายๆ ตัว โดยวิ่งผานไปยังบางคอร(ไมครบทุกคอร) การเขาถึงแคชโดย DMA การทางานดวย DMA ปกติขอมูลจะถูกสงผานหนวยความจาหลักและอุปกรณ I/O ผานชองสื่อสารตางๆ เชน บัสใดบัสหนึ่งหรืออาจจะผาน QPI สมมติ ซีพียูขางสงขอมูลจากหนวยความจาไปยังอุปกรณภายนอก จะมีขั้นตอน ดังนี้ – ซีพียูคอรที่รันไดรเวอรซอฟตแวร สงคาสั่ง I/O ไปยัง I/O controller ผานทาง PCIe บัส – คาสั่งประกอบไปดวยตาแหนงขอมูลและขนาดของพื้นที่ของหนวยความจาหลัก – I/O controller สงคารองขอการอานขอมูลกลับมาผาน PCIe ไปยัง MCH (memory controller hub) ซึ่งเขาถึงขอมูลในหนวยความจาและสงกลับมาที่ ring เพื่อสงตอให I/O controller – ในลักษณะเชนนี้ แคช L3 ไมมีสวนเกี่ยวของในการทางาน แตมีการเขาถึงหนวยความ จาหลัก ซึ่งอาจจะเปนเพียงชิปเดียวหรือหลายชิปที่ประกอบกันขึ้นเปนหนวยความจาหลัก ดังกลาว สมมติวาถาเปนการนาเขาขอมูล ขอมูลจะวิ่งเขามาผาน I/O Controller (ผาน PCIe) และสงผาน ring ไป ยัง MCH เพื่อไปยังหนวยความจาหลัก การเปลี่ยนแปลงขอมูลในหนวยความจา จะสงผลใหเกิดกลไกการยกเลิก ขอมูล (invalidate) ที่เก็บไวใน หนวยความจาแคชทีส่ ัมพันธกับพื้นที่ที่ เปลี่ยนแปลง สงผลใหถาตองมีการอานขอมูลจากซอฟตแวร จะตองมีการ อานขอมูลเขาไปในแคชใหม่ สาหรับซีพียูที่มีพื้นที่แคชขนาดใหญ จึงมีวิธีที่มีประสิทธิภาพมากขึ้น เช่น ซีพียู Xeon E5-2600/4600 กลาวคือ สมมติวาเปนการสงออกขอมูลไป I/O – MCH ตรวจสอบขอมูลในแคช L3 วามีหรือไม – หากมี MCH จะสงขอมูลจาก L3 ไปยัง I/O controller ไดโดยไมตองเขาถึงหนวย ความจาหลัก ทาใหการสงขอมูลทาไดเร็วขึ้นมาก – ในขณะเดียวกันนั้น การอานขอมูลจากแคช MCH จะถอดขอมูลออกจากแคช (evict) (กลาวคือ การอานขอมูลจากหนว ยความจาของ I/O จะเปนการ evict/flush แคชโดยปริยาย) หมายเหตุ วิธีขางตนแมเปนการเขาถึงขอมูลแคชโดยตรงจาก I/O แตยังไม เรียกวาเปน DCA (ซึ่งจะตองเปนกลไกที่บังคับไวดังที่จะไดกลาวตอไป) ปญหาดานประสิทธิภาพที่เกี่ยวพนักับหนวยความจาแคช การติดตอสื่อสารทางระบบเครือขายมักกระทาในรปู แบบของบล็อก/แพ็คเก็ต ข้อมูล ภายใตโปรโตคอลที่กาหนด Link level ต่าสุดที่นิยมใชกันเปน Ethernet โดยจะมีโปรโตคอลในเลเยอร สูงขึ้นไปใชงานเชน Internet Protocol (IP) และ Transmission Control Protocol (TCP) ที่อยูบนเลเยอรสูงขึ้นไปจาก IP อีกชั้นหนึ่ง แพ็คเก็ตขอมูลที่สงผานโดยอาศัย Ethernet ประกอบไปดวยบล็อกขอมูลและ TCP header และ IP header ขอมูลขาออกของแพ็คเก็ต Ethernet จะถูกสรางขึ้นจากอุปกรณที่ทาหนาที่ สื่อสาร เชนอุปกรณรอบขางที่ใชทาการ สื่อสาร หรือการดเครือขาย (Network Interface Contoller- NIC) ขอมูลขาเขานั้น ขอมูลพื้นฐานของ Ethernet จะถูกประมวลโดยการดเครือขาย หรืออุปกรณที่สื่อสาร ใหเหลือ ขอมูลของ TCP/IP ที่จะสงใหกับซีพียูตอไป สาหรับการสงถายขอมูลเขาออก ทั้งหนวยความจาหลักและหนวยความคา แคชจะมีสวนเกี่ยวของ – สาหรับการสงขอมูลออกโดยใช DMA ขอมูลจะถูกวางไวในพื้นที่หนวย ความจาหลักที่เตรียมไวโดยซอฟตแวร ซอฟตแวรที่รันอยูบนคอรใดคอรหนึ่ง จะสรางขอมูลเพิ่มเติมสาหรับการจัดการ TCP และ IP ไป วางไวบนหนวยความจาหลักเชนกัน แพ็กเก็ตขอมูลที่เตรียมไว สงผานโดยใช DMA ไปยัง NIC การทางานในลักษณะนี้ จะมีการเขาถึงขอมูลทั้งในหนวยความจาหลัก และจาก แคช การรับขอมูลเขาโดยใช DMA ยังใชหลักการทานองเดียวกันกับการสงออกขอ มูล เมื่อมีการถายโอนขอมูลขนาดใหญ จะสงผลลบตอระบบ 2 อยาง อยางแรก ซีพียูตองรอจังหวะการเขาถึง ขอมูลในหนวยความจาหลัก จากกลไกของ DMA ตามปกติ และอยางที่สอง เนื่องจากหนวยความจาหลักใชเวลาเขาถึงนานกวา การทางานของซพีียูซีพียูจงึ ตองรอเวลาเขียนอานหนวยความจาหลักมากขึ้น – ขั้นตอนนาเขาขอมูล ขอมูลเขามาถึง NIC ปลดขอมูลที่เกี่ยวกับการจัดการ Ethernet protocol ออก (รวมไปถึงการ จัดการ error detection) ขอมูลที่เหลือซึ่งเปนแพ็ค เก็ต TCP/IP สงผานไปยังระบบผานทาง โมดูล DMA ทีเ่ ปนสวนหนึ่งของ NIC โมดูล DMA สงผานขอมูลรวมทั้ง packet descriptor ที่ใชประกอบขอมูล แพ็คเก็ต ไปยัง หนวยความจาหลัก และตรวจสอบหนวยความจาแคช และ อาจสั่ง invalidate แคชหากพบวามี การอางถึงพื้นที่ที่กาลังจะถูกเขียนทับ NIC รองขอขัดจังหวะเมื่อรับเขาขอมูละครบถวน ซีพียูคอรที่ตอบสนองการขัดขังหวะ อานคา descriptor และขอมูลสวนหัว ของแพ็คเก็ตขอมูล (และจัดการสิ่งตา งๆ ที่เกี่ยวของตอไป) และ... เกิดสภาวะ cache miss เนื่องจากมีขอมูลใหมเขามาในหนวยความจา ดังนั้นซีพียูคอรที่ ตอบสนองการขัดจังหวะจึงตองรอใหแคชอัปเดตขอมูล ใหม ซีพียูคอรจึงสามารถประมวลผลขอมูลแพ็คเก็ตได แพ็คเก็ตขอมูลที่เกี่ยวของสาเนาจากพื้นที่ของไดรเวอรของระบบปฏิบัติการ ไปสูพื้นที่ หนวยความจาที่ซอฟตแวรผูใชทางานตอไป ขั้นตอนการสงออกขอมูล – ซอฟตแวรผูใชเตรียมขอมูลที่จะสงออกไวในพื้นที่หนวยความจาหลัก และสง system call รองขอบริการจากระบบปฏิบัติการ – ระบบปฏิบัติการสรางแพ็คเก็ตตามโปรโตคอล TCP/IP โดยอาศัยขอมูลจากซอฟต แวรผูใช (และอาจจะเกิด cache miss ไดเชนกัน) โดยแพ็คเก็ตที่สรางขึ้นจะวางไว ในพื้นที่หนวยความจาของระบบปฏิบัติการ เพื่อเตรียมสงตอใหโมดูล DMA – ไดรเวอรของระบบปฏิบัติการสงคาสั่งผานโมดูล DMA เพื่อใหสงออกไปยัง NIC – เกิดการอานขอมูลของโมดูล DMA สงไปยัง NIC ซึ่งในกรณีนี้จะเกิดการ invalidate แคชใน พื้นที่สงขอมูลออกโดยโมดูล DMA อยางอัตโนมัติดวย – NIC สงสัญญาณวาทางานเสร็จสิ้น – ไดรเวอรของระบบปฏิบัติการคืนพื้นที่หนวยความจาที่ใชเตรียมขอมูล เพือ่ สงในการ นี้ พื้นที่หนวยความจาแคชที่อางถึงพื้นที่สวนนี้ก็จะถูก invalidate ไปดวย Direct Cache Access ที่ถูกนามาใชในซีพียูของอินเทลบางรุน ใชกับแพ็กเก็ตขาเขาเทานั้น MCH ที่มีกลไก DCA รองรับ จะสงสัญญาณแจง prefetch ใหแกซีพียูคอร เมื่อขอมูลพรอมแลวในพื้นที่หนวยความจาหลัก ซีพียูจึงสามารถอานขอมูลจากพื้นที่หนวยความจาหลักเขาในหนวย ความจาแคชไดในทันทีกอนที่จะมีชุดคาสั่งเขาถึง หนวยความจาดังกลาว ในภายหลัง มีแนวคิดที่สามารถปรับปรุงประสิทธิภาพใหดีขึ้นไปอีกจากกลไก – สาหรับการจัดการแพ็กเก็ตขอมูลและขอมูล descriptor ของแพ็คเก็ต ถูกเขาถึงเพียงครั้งเดียวและไมใช้อีก – สาหรับการถายโอนขอมูล แพ็คเก็ตที่ถูกจัดการโดยไดรเวอร จะถูกพัก ไวในพื้นที่หนวยความจาของระบบ และจะถูกโยนตอไปยังพื้นที่หนวย ความจาของซอฟตแวรผูใช ดังนั้นพื้นทีบ่ ัปเฟอรของหนวยความจา ระบบ ถูกใชเพียงครั้งเดียว เปน เวลาสั้นๆ ทั้งการรับเขาหรือการ เตรียมเพื่อสงออก – จึงมีแนวคิดที่เรียกวา cache injection เพื่อใชแคช L3 ในการพักข อมูลเพื่อรับ ส่งแทนการใชพื้นที่ หนวยความจาหลัก และมีการประ ยุกตใชในซีพียู Xeon ที่ถูกตั้งชื่อไววา Direct Data I/O Ditect Data I/O ของอินเทล ขั้นตอนการทางานแบบ DDIO เมื่อเทียบกับ DMA ตามปกติ – สาหรับขอมูลขาเขา จะตรวจสอบหนวยความจาแคชวาพื้นที่หนวยความจาที่ไดรเวอรใชนั้นอางถึง หรือไม หากมี แคช L3 อางถึง แพ็คเก็ตที่เขามา จะมาวางไวในแคช L3 โดยยังไมอัปเดตพื้นที่หนวย ความจาหลักในทันที (ซึ่งวิธีการปกติทั่วไปของหนวยความจาแคช เรียกวา write-back อัปเดต ในภายหลัง โดยอินเทลจะใชคาวา write update) หากไมพบตาแหนงในแคช (cache miss) จะมีการเลือกแคชไลนทีไ่ มตองมีการเขียนขอมูลกลับ หนวยความจาหลัก (อินเทลใชคาวา write allocate ซึ่งแตกตางไปจากทฤษฎี เกี่ยวกับหนวย ความจาแคชโดยทั่วไป) การทาเชนนี้กับพื้นที่บัปเฟอรที่ใชงานเพียงครั้งเดียว แตอาศัยการจัดการในแคชและไมมีการ เขาถึงหนวยความจาหลักไปพรอมกัน จึงเพิ่มประสิทธิภาพดานความเร็วในการรับเขาขอมูลได – สาหรับขอมูลขาออก แพ็คเก็ตขอมูลที่จะถูกเตรียมไวเพื่อสงออกไปยัง I/O controller จะวางตัอยูใน L3 แคช โดย ไมใชพื้นที่หนวยความจาหลัก คาอธิบายเพิ่มเติมที่เกีย่ วของกับการจัดการหนวยความจาแคช Write back: เวลาซีพียูเขียนขอมูลลงหนวยความจาแคช จะยังไมอัปเดตหนวยความ จาหลักในทันที แตจะเซ็ต dirty bit ไวประจาแคชไลนนั้นๆ เมื่อตองมีการแลกพื้นที่ แคช และตองปลดแคชในไลนทิ้ง จะเช็ค dirty bit และอัปเดตหนวยความจาหลักให ตรงในขณะนั้น Write through: เวลาซีพียูเขียนขอมูลลงหนวยความจาแคช จะเกิดการเขียนขอมูลใน หนวยความจาหลักโดยทันที ซึ่งจะ ทาใหขอมูลในหนวยความจาหลักตรงความเปนจริง เสมอ และในกรณีที่มีหลายคอร หรือโหนดอื่นๆ ในซีพียูจะสามารถ ตรวจสอบคาสั่ง เขียนหนวยความจาหลัก เพื่อตรวจสอบแคชภายในของตน L1-L2 และอัปเดต (หากมี การอางถึงแคช L3 ไลนเดียวกัน)