วันพุธที่ 15 เมษายน พ.ศ. 2552

The Computer System and its Interconnection Structures


The Computer System and its Interconnection Structures

ส่วนประกอบของระบบ

จะกล่าวถึงส่วนประกอบตั้งแต่เริ่มต้นของคอมพิวเตอร์ ได้แก่

- CPUs

o ALUs

o Control units

- Memories

- I/O devices

- Interconnection structures

ทราบถึงส่วนประกอบและการทำงานร่วมกันของแต่ละส่วนและเห็นถึงระบบที่เกิดคอขวด ทางเลือก แนวคิดเกี่ยวกับระบบที่ล้มเหลว และโอกาสในการเพิ่มประสิทธิภาพของระบบ

การทำงานของซีพียูจะโหลดคำสั่งจากหน่วยความจำและนำมาพักไว้ที่ Internal register ในซีพียู ซึ่งภายในซีพียูจะประกอบด้วย

- PC: program counter

- IR: Internal register

- MAR: Memory address register

- MBR: Memory buffer register

- I/O AR: I/O address register

- I/O BR: I/O buffer register

Program counter ใช้ระบุตำแหน่งของ instruction

Internal register ใช้สำหรับเก็บคำสั่งที่โหลดมาจากหน่วยความจำมาพักไว้

Memory address register เป็นช่องทางในการส่ง address ไปยัง address bus เพียงอย่างเดียว ไม่รับ address จากที่อื่น เป็น unidirectional

Memory buffer register เป็นที่พักข้อมูลทั้งจากภายนอกและจากภายในซีพียู ซึ่งจะทำหน้าที่ทั้งรับและส่งออกข้อมูลเรียกว่าเป็น Bidirectional

Von Nuemann Architecture

เป็นแนวคิดที่ได้มาจากเครื่อง ENIAC ที่ได้พัฒนาแนวคิดของการควบคุมการทำงานของระบบปฏิบัติงานของอุปกรณ์ผ่านการควบคุมสัญญาณ ซึ่งเมื่อก่อนใช้สายไฟในการสับเปลี่ยนเพื่อเปลี่ยนแปลงโปรแกรมต่างๆ บนเครื่อง ENIAC โดย Von Nuemann ใช้หน่วยความจำของคอมพิวเตอร์ในการเก็บรูปแบบของสัญญาณควบคุมที่จะถูกเรียกใช้งาน หรือเรียกว่า Software programming ซึ่งจากแนวคิดนี้ได้เป็นต้นแบบของคอมพิวเตอร์ตั้งแต่ยุคแรกจนถึงปัจจุบัน

การออกแบบคอมพิวเตอร์นั้นขั้นต้นการออกแบบจะเป็ CPU designer จะเป็นต้นแบบของการเริ่มต้นทำงานของเครื่องคอมพิวเตอร์ โดยภายใต้การทำงานแบบ sequential order ผู้ออกแบบจะทราบ address ที่ใช้ในการเริ่มต้นและ address สุดท้ายของการรันซีพียู และตำแหน่งต่อจาก address สุดท้ายของซีพียู โปรแกรมเมอร์จะต้องทราบเพื่อเริ่มต้นโปรแกรมถัดไปที่จะใช้ในการทำงานกับซีพียู และต่ำแหน่งนี้ก็จะเก็บไว้ที่ program counter ซึ่งมันจะทำหน้าที่ในการชี้บอกตำแหน่งถัดไปของ instruction เสมอ ตัวโปรแกรมนี้เองจะไปคอยกำกับการทำงานของ pattern control signal โดยโปรแกรมที่โปรแกรมเมอร์เขียนขึ้นมานั้นจะเป็นการใส่คำสั่งเข้าไปเพื่อให้ผลการทำงานของแต่ละ pattern ทำงานตามแบบที่โปรแกรมสั่งไป ภายใต้แนวคิดหรือกฎการทำงานสามข้อของ Von Nuemann คือ ทั้ง data และ instruction (control sequences) จะถูกเก็บไว้ใน single read-write memory ซึ่งจริงๆ ไม่สามารถบอกความแตกต่างระหว่าง data และ instruction ได้ รู้แต่ว่าจะวางเรียงกันตามลำดับบนหน่วยความจำ ที่หน่วยความจำก็จะกำหนดตำแหน่งให้โดยไม่ได้แยกชนิดของข้อมูล การทำงานก็จะเรียกอ่านคำสั่งตามลำดับจากหน่วยความจำ คือใครอยู่ลำดับแรกตามที่ซีพียูกำหนดให้เป็นลำดับแรกก็จะถูกอ่านไปก่อน เช่น อ่านลำดับที่ X ลำดับถัดไป program counter จะชี้ไปยัง X+1 และจะเรียงอย่างนี้ไปเรื่อยๆ

ภาพโดยรวมของการทำงานบนซีพียู เริ่มต้นจากอ่านคำสั่งมาจากหน่วยความจำแล้วเก็บไว้ที่ IR และหลังจากนั้นจะถูกส่งไปยัง control unit โดย control unit จะทำการแปลคำสั่งหรือ interpreted instruction code เพราะคำสั่งที่เข้ามาในตอนแรกนั้น ALU ไม่เข้าใจความหมายของมันจึงต้องถูกเปลี่ยนเป็น code ก่อนส่งให้ ALU

Instruction execution follows a set cycle

วงจรการทำงานของซีพียู

- ตรวจดูตำแหน่งถัดไปของคำสั่ง

- ทำการอ่านหรือ fetch คำสั่งจากหน่วยความจำ

- ทำการแปลหรือ decode คำสั่งว่าจะให้ทำอะไร

- คำนวณหาตำแหน่งเพื่อวางผลการคำนวณและอ่านผลการคำนวณ

- ทำการปฏิบัติตามผลการคำนวณ

- เก็บค่าผลลัพธ์

- ตรวจสอบและหาช่วงเวลา interrupt เพื่อประมวลผล

Instruction Cycle

ในเทคโนโลยีปัจจุบัน Instruction cycle จะไม่ได้ถูกออกแบบให้เหมือนกันทุกค่ายการผลิต แต่ที่มีผลชัดเจนคือ จำนวน processor จะมีผลต่อประสิทธิภาพของการทำงานซีพียู เนื่องจากมีความหลากหลายของ processor cycle ในที่นี้จะอธิบายขบวนการพื้นฐานของ processor cycle ซึ่งประกอบด้วย 2 ส่วนคือ Fecth cycle และ Instruction cycle

ตัวอย่างของ Program execution

จากภาพเป็นตัวอย่างของ Program execution

Instruction Format จำนวน 16 bits

Opcode 4 bit

Address 12 bits

ส่วนที่เป็น Opcode:

$1= Load Ac with [Address]

$2= Store Ac to Address

$5= Add Ac with [Address]

= Ac <= Ac + [Address]

PC = Program counter

Ac = Accumulator เอาไว้คำนวณทางคณิตศาสตร์

IR = Internal register

* Step 1. Program counter ชี้ไปที่เริ่มต้นด้วย address 300 เป็นคำสั่งเริ่มต้น ซึ่งมีค่าเท่ากับ 1940 in hexadecimal จะถูกโหลดเข้ามาที่ IR และ PC จะมีค่าเพิ่มขึ้นอีกหนึ่ง โดยขบวนการนี้จะรวมถึงการใช้พื้นที่บน MAR และ MBR ด้วย. เพื่อให้ดูง่ายขึ้น การทำงานของ Registers จะไม่ให้ความสำคัญกับมัน.

1 (4 bits)

940 (12 bits)

Op. code 1 คือ $1= Load Ac with [Address]

Address คือโหลดข้อมูลจากหน่วยความจำจากตำแหน่ง 940 มาไว้ที่ AC

* Step 2. ดูที่ 4 bits แรก (first hexadecimal digit) ใน IR เป็นตัวชี้ว่าจะโหลดข้อมูลจาก MBR มาไว้ที่ AC สังเกตุตรงตำแหน่ง IR นะ ข้อมูลที่โหลดมาที่เห็นใน step 1 นั้น เท่ากับ 1940 โดย 1 จะแทนค่า op code จำนวน 4 bits ส่วนที่เหลือคือ 940 จะเป็น 12 bits Address ที่จะต้องโหลดข้อมูลจากหน่วยความจำมาไว้ที่ AC ซึ่งขั้นนี้จะโหลดข้อมูลจาก MBR ตำแหน่งที่ 940 มาไว้ที่ AC มีค่าเท่ากับ 0003

* Step 3. ในขั้นตอนนี้ คำสั่งถัดไปคือ 5941 จะถูกอ่านจากหน่วยความจำที่ตำแหน่ง 301 ตามกฎของ Von Nuemann คือเป็น sequential fashion คืออ่านต่อจากเมื่อกี้ และในขณะเดียวกันจะสังเกตเห็นว่า PC ก็จะมีค่าเพิ่มขึ้นเป็น 301 โดยคำสั่ง 5941 มีความหมายดังนี้

5(4 bits)

941 (12 bits)

Op. code 5 คือ $5= Add Ac with [Address]

= Ac <= Ac + [Address]

Address คือ ให้บวกข้อมูลที่อยูบน AC ปัจจุบัน เข้ากับ ข้อมูลที่ตำแหน่ง 941 บน MBR (ก็ที่ดึงมาจาก memory นั่นล่ะ อันเดียวกัน)

ได้เท่ากับ 0003+0002 = 0005

(แล้วนำผลลัพธ์คือ 0005 ไปเก็บบน AC แทนที่ 0003 ซึ่งเป็นขั้นตอนที่ 4)

* Step 4. ในขั้นตอนนี้ก็นำ ค่าที่อยู่บน AC เดิมและ ค่าข้อมูลที่อยูตำแหน่ง 941 บน MBR บวกกัน แล้วนำผลลัพธ์ไปเก็บแทนที่ 0003 บน AC

* Step 5. ในขั้นตอนนี้ คำสั่งถัดไปคือ 2941 จะถูกอ่านจากหน่วยความจำที่ตำแหน่ง 302 PC ก็จะมีค่าเพิ่มขึ้นเป็น 302. ซึ่งมีความหมายดังนี้

2(4 bits)

941 (12 bits)

Op. code 2 คือ $2= Store Ac to Address

Address คือให้นำค่าผลลัพธ์ที่ได้ไปบันทึกไว้ที่ตำแหน่ง 941 บนหน่วยความจำ

* Step 6. ที่ตำแหน่ง 941 ข้อมูลจาก AC = 0005 ถูกบันทึก

เมื่อสังเกตุแล้วการทำงานจะวนรอบไปอย่างนี้เรื่อยตามลำดับของหน่วยความจำที่ถูกชี้โดย PC อยู่บนซีพียู ถ้าหากจะดำเนินต่อ ซีพียูก็จะอ่านข้อมูลลำดับที่ 303, 304 …จนถึงตำแหน่งสุดท้ายบนหน่วยความจำจึงจะวนกลับมาที่จะเริ่มต้นใหม่ กรณีนี้เกิดเฉพาะใน Von Nuemann ที่ไม่มี pipelineนะ แต่กรณี interrupt ก็ยังอยู่บนหลักการของ sequential execution อยู่เพราะลำดับจะยังถูกบันทึกบน PC อยู่ดี

Interrupts

เป็นกลไกที่ระบบการทำงานหนึ่งจะแทรกแซงการทำงานปกติของซีพียู ซึ่งอุปกรณ์เหล่านี้จะมี 1-10 ลำดับที่เรียงตามความสำคัญที่ทำงานช้ากว่าซีพียู ซึ่งซีพียูจะต้องเสียเวลามากในการรอการทำงานของอุปกรณ์เหล่านี้เพื่อให้มันทำงานให้เสร็จ เพราะการทำงานต้องเป็นไปตาม Von Nuemann เนื่องจากเดิมนั้นพื้นฐานการทำงานของ instruction cycle จะมีประสิทธิภาพต่ำมาก เมื่อซีพียูจะต้องทำงานกับ I/O หลายตัว ทำให้สามารถตอบสนองการร้องขอได้ช้าเนื่องจากต้องทำงานตามคิว ทำให้ซีพียูมีประสิทธิภาพต่ำทั้งที่จริงแล้วซีพียูทำงานเร็วด้วยตัวมันเอง แต่ช้าที่ I/O

การมีกระบวนการ Interrupts เป็นการทำงานของซีพียูที่ลดเวลาการทำงานเนื่องจากไม่ต้องรอคิวเหมือน basic instruction cycle ซึ่งหากมีการ interrupts ซีพียูก็ไม่จำเป็นต้องรอให้คิวก่อนหน้าทำเสร็จก่อนค่อยมาบริการคิวนี้ แต่ซีพียูสามารถข้ามมาให้บริการคิวที่แทรกได้เลย แล้วค่อยกลับมาให้บริการคิวเดิมที่ค้างอยู่ต่อไปได้ แต่หลักการ interrupts ก็จะขึ้นกับโปรแกรมที่โปรแกรมเมอร์ได้เขียนขึ้นมา ซึ่งในความหมายนี้ก็คือ อาจจะมีการเขียนโปรแกรมให้มีการ interrupts ในหลากหลายรูปแบบขึ้นกับแต่ละโปรแกรม

Transfer of control via interrupts

ในขณะที่ User program กำลังรันอยู่นั้น มีการขอ interrupts จาก I/O โดยจะมี interrupt Handler เป็นผู้จัดการแทรกโปรเซสเข้าไประหว่างที่ User program กำลังรันถึงคำสั่งที่ i การประมวลผลก็จะกระโดดไปทำงานในกับ interrupt process เมื่อเสร็จก็จะกลับมาทำงานต่อที่ลำดับ i+1 ที่เป็นอย่างนี้เพราะจะทำ interrupt ได้ต้องรอให้ซีพียูทำงานครบรอบคำสั่งก่อนถึงจะรับ interrupt

การ Interrupt จะไม่ได้อ่านค่า PC+1 แต่จะใช้ interrupt service routine (ISR) โดยการใส่ค่า PC ของ ISR เข้าไปแทนค่า PC ของโปรเซสเดิม เมื่อเสร็จสิ้นกระบวนการ interrupt ค่า PC จะเท่ากับ i+1 ซึ่งเป็นค่าเดิมของ User program ที่ทำงานค้างไว้ ที่ดึงค่ากลับมาได้เพราะค่าเดิมเก็บไว้ที่ register ของซีพียู การทำงานของ ISR ก็ยังคงเป็นไปตามกฎของ Von Nuemann

ทุกครั้งที่ซีพียูประมวลผลครบรอบของคำสั่งจะรอฟังก่อนว่ามีการของแทรกคิวหรือเปล่าแล้วค่อยวนกลับมาประมวลคำสั่งต่อไป ถ้ามีก็จะหยุดการทำงานเดิมไว้ก่อนและบันทึกค่าล่าสุดของการให้บริการไว้แล้วมาให้บริการ ISR ก่อน เมื่อเสร็จสิ้น ก็จะกลับมาทำงานเดิม

ซึ่ง Instruction cycle ก็จะมี interrupt process เข้ามาร่วมด้วยจะช่วยให้ลดเวลาในการรอของ I/O ลงไปได้ การให้บริการกับไอโอก่อนกรณีของอินเตอร์รับ กับปล่อยให้ไอโอรอตามคิวจะทำให้ลดเวลาในการรอลงได้ แม้ไม่ว่าจะเป็น I/O ที่ใช้วเลานานหรือเร็วก็แล้วแต่ จะทำให้ซีพียูทำงานได้เร็วขึ้น ในทางความคิด

Multiple Interrupts

เกิดคำถามที่ว่าเนื่องคอมพิวเตอร์ต่ออุปกรณ์หลากหลายชนิดที่เป็น I/O แล้วจะทำอย่างไรหากมีการร้องขอบริการแบบ ISR พร้อมๆ กัน โดยเมื่อครบ instruction cycle ซีพียูจะรอฟังการ interrupt แต่ปรากฎว่ามีการร้องขอพร้อมๆ กัน ซีพียูจะจัดการอย่างไร เพราะซีพียูสามารถให้บริการได้ครั้งละ1 interrupt เท่านั้น

การจัดการของซีพียูก็ทำได้โดยการจัดลำดับความสำคัญของอุปกรณ์ที่เชื่อมต่อกับคอมพิวเตอร์หรือ Priority เพราะถ้าหากไม่จัดลำดับอาจเกิดปัญหา dead lock กับระบบได้ โดยการกำหนดให้อุปกรณ์มีค่า priority แตกต่างกันไป และอุปกรณ์ที่มีค่า priority สูงกว่าจะได้รับบริการก่อนนั่นเอง

Multiple interrupt อาจเกิดได้หลายแบบเช่น การเกิดขึ้นพร้อมกันครั้งเดียว หรือเกิดแบบซ้อนๆ กัน หมายถึงช่วงเวลาใกล้เคียงกัน กรณีเกิดพร้อมๆ กันก็สามารถจัดลำดับได้เลยในครั้งเดียว แต่กรณีที่เกิดซ้อนกัน ซีพียูจะจัดการอย่างไรเช่น ซีพียูกำลังทำการให้บริการ I/O-1 แต่มี I/O-2 และมี priority สูงกว่า I/O-1 เข้ามา interrupts ระหว่างการทำงานนี้ซีพียูจะจัดการได้อย่างไร โอกาสที่จะเป็นได้คือ ไม่ให้บริการจนกว่า I/O-1จะเสร็จ หรือจะกระโดดข้ามไปให้บริการ I/O-2 ก่อนแล้วค่อยกลับให้บริการ I/O-1 อีกครั้ง ซึ่งสามารถทำได้ทั้งสองแบบแล้วแต่จะเขียนโปรแกรมขึ้นมากำกับ เพราะความจริงเราไม่ต้องให้บริการ ISR ยังได้เลย เพียงแต่เราเชื่อว่าให้บริการแล้วจะทำให้ซีพียูทำงานได้เร็วขึ้นเท่านั้นเอง การ interrupt ทั้งสองแบบ เรียกว่า Sequential interrupt process และ nested interrupt process

โดยทั่วไป 1 processor cycle มักจะเท่ากับ 1 clock cycle แต่จริงๆแล้ว clock ที่ว่าจะอยู่ที่ mother board ซีพียูเองจะสร้างจัดการเองโดยจะสามารถมี clock ที่สูงกว่าที่ mother board ซึ่งการ interrupt จะเก็บค่าเดิมไว้ที่ register stack ในรูปแบบของ First In Last Out

Interconnection structures

เป็นเส้นทางที่รวมการสื่อสารระหว่างอุปกรณ์ให้ทำงานร่วมกันเป็นระบบ โดยคอมพิวเตอร์จะติดต่อกันผ่านโมดุลเป็นส่วนใหญ่เนื่องจากปัญหาที่คอมพิวเตอร์ต้องมีการต่ออุปกรณ์หลากหลายเข้าไปเพื่อให้ทำงานร่วมกันแต่อุปกรณ์จะไม่ได้ต่อโดยตรงกับซีพียู เพราะอุปกรณ์เชื่อมต่อนั้นจะทำงานความเร็วต่างจากซีพียูอยู่มาก และรูปแบบการส่งคำสั่งซีพียูไม่สามารถเข้าใจได้ทั้งจึงต้องทำผ่านตัวช่วยที่ชื่อ Module จะทำหน้าที่เป็นล่ามและคนส่งสารให้ซีพียูอีกทีและรับกลับมาแปลกลับส่งคืนให้กับอุปกรณ์ การเชื่อมต่อแบบบัสจะเชื่อมระหว่างอุปกรณ์สองตัวขึ้นไป และให้บริการแบบ broadcast 1 to many และจะส่งได้ครั้งละหนึ่งคำสั่งเท่านั้นในช่วงเวลาเดียวกัน มิฉะนั้นจะเกิดการชนกันของข้อมูล ที่ต้องเลือกใช้บัสเพราะต้องการลดพื้นที่การวางสายบนบอร์ดซึ่งก็มีผลตามมาในด้านประสิทธิภาพ เนื่องจากเนื้อที่บนบอร์ดค่อนข้างจำกัด และนอกจากนี้ข้อจำกัดด้านประสิทธิภาพเมื่อใช้บัสจะลดลงเมื่อบัสมีความยาวมากเกินไป เรียกว่าเกิด propagation delay ซึ่งหากต้องการเพิ่มความเร็วของการส่งข้อมูลก็สามารถเพิ่มความกว้างของบัสแทนได้

โดยส่วนมากบัสที่อยู่บนบอร์ดจะมีประมาณ 50-100 lines ประกอบด้วย

- Address information (address bus)- แยกต้นทางและปลายทางของการส่งข้อมูล ใช้ติดสินเลือกความกว้างของบัสที่จุข้อมูลบนระบบ

- Data information (Data bus) ความกว้างเป็นตัวชี้ประสิทธิภาพโดยรวม

- Control information – ใช้ควบการเข้าใช้ address bus และ data bus

- Miscellaneous – สายไฟ สายดิน สายสัณญาณนาฬิกา

Bus Interconnection

ข้อจำกัดด้านประสิทธิภาพของบัสประกอบด้วย

- ความล่าช้าในการส่งข้อมูลเนื่องจากบัสต้องติดต่อกับอุปกรณ์หลายตัวจึ่งทำให้บัสมีความยาวเพิ่มขึ้น

- ความต้องการใช้บัสพร้อมๆกันของอุปกรณ์ที่เชื่อมต่อกับบัส เพราะบัสสามารถใช้ได้ครั้งละ 1 อุปกรณ์

เพื่อหลีกเลี่ยงปัญหา Bottle neck การใช้ multiple bused จึงถูกเลือกใช้ในหลายๆ ระบบ ได้แก่

- Hierarchical

- อุปกรณ์ที่มีความเร็วสูงจะวางไว้ใกล้ๆ กับโปรเซสเซอร์

- อุปกรณ์ที่มีความเร็วช้ากว่าจะวางไว้ไกลจากตำแหน่งของโปรเซสเซอร์ออกไปตามลำดับ

การเชื่อมต่อแบบนี้จะสามารถลดปัญหาคอขวดได้ และจะทำให้บัสสั้นลง ลด propagation delay ได้ และทำให้การทำงานของบัสเป็นแบบขนาน คือบัสทำงานหลายตัวพร้อมกันโดยไม่กวนกัน จึงลดปัญหาคอขวด แต่ปัญหาของการต่อกันของบัส คือ ต้องหาศูนย์กลาง ซึ่งซีพียูถูกเลือกให้เป็นศูนสย์กลาง ดังนั้นการจัด multiples bus ให้เป็นลำดับขั้นโดยเลือกบัสที่มีความเร็วสูวางใกล้ซีพียู เพราะซีพียูทำงานเร็วและที่สำคํญบัสนั้นติดต่อกับซีพียูบ่อย เช่น local bus กับ front side bus และพวกที่อยู่ไกลออกไปคือ PCI bus ตัวอย่างของ local bus ก็คือเส้นทางการเชื่อมต่อระหว่างแคชในปัจจุบัน

Bus Arbitration

- ทุกโปรเซสของการทำงานบนบัสการันตีแค่ 1 device เท่านั้นต่อการใช้งานในหนึ่งช่วงเวลา

- กลไก Master-slave คือ Master จะให้การควบคุมบัสและสามารถใส่ข้อมูลลงไปบนบัสได้ ส่วน slave จะรับข้อมูลจาก Master

ประกอบด้วย 2 วิธีการคือ

- Centralized โดยบัสจะเป็น controller ที่อยู่ตรงกลางรอรับการร้องขอจากอุปกรณ์ทุกตัว การทำงานแบบ daisy chain คืออุปกรณ์ที่อยู่ใกล้ว Arbiter ที่สุดจะมี priority สูงสุด เมื่อตัวใดได้รับคัดเลือก ก็จะยกสถานะตัวเองเป็น Master ในโปรเซสช่วงนั้นไป

- Decentralized ไม่มี controller ที่อยู่ตรงกลาง อุปกรณ์แต่ละตัวจะมีลอจิกบนตัวเองในการร้องขอใช้บัส แต่ละอุปกรณ์จะมีค่า priority ประจำสำหรับแต่ละตัวและจำมี line ที่ต่อตรงจากตัวมันไปยัง Module ด้วย ทำให้ต้องใช้ line จำนวนมาก

Bus Timing

มีสองแบบคือ synchronous และ Asynchronous

Synchronous การทำงานจะสัมพันธ์กับสัณญาณนาฬิกาซึ่งจะเริ่มทำงานตามรอบนาฬิกา เช่น PCI bus โดยหลักการแล้วง่ายในการทำงานแต่มีข้อจำกัดคืออุปกรณ์ต่างๆ ที่ผลิตมาจะต้องทำงานแบบเดียวกันคือมีจังหวะการทำงานเป็น clock cycle เดียวกันกับเครื่องคอมพิวเตอร์ ทำให้ยากหากต้องการอัพเกรด เพราะติดปัญหา bus cycle

Asynchronous การทำงานไม่ได้ขึ้นกับความสัมพันธ์กับจังหวะสัณญาณนาฬิกา แต่ระบบจะมีความซับซ้อนมาก แต่สามารถรองรับการทำงานของอุปกรณ์ได้หลากหลาย มีความยืดหยุ่นในการเลือกใช้อุปกรณ์ เช่น Futurebus+

PC Buses

ISA (Industrial Standard Architecture)

เป็นสถาปัตยกรรมที่เป็นระบบเปิดอันแรกที่ใช้สำหรับเครื่อง PCs ใช้กับ IBM โดยมี data bus 2 รุ่นคือ 8-bits และ 16-bits ISA buses (ISA: CPU และ Memory ต่อกันด้วย local bus ต่อเชื่อมกับ bus driver และ glue logic ที่เชื่อมต่ออยู่กับ system bus

8-bits bus มีลักษณะเด่นๆ คือ ใช้ครั้งแรกใน PC-XT มี 62 pins connecter ใช้ 4.77 MHz clock และ 20 address lines = 1Mword memory, ความเร็วบัส 8 data lines รวมทั้งมี 6 interrupts lines 2 DMA channels

16-bits bus เนื่องจาก 8-bits bus ค่อนข้างจำกัดมากๆ data bus จึงพัฒนามาเป็น 16-bits bus ใช้กับ PC-AT และ 80286 และได้ขยายจาก 8-bits bus 62-pins connecter เพิ่มอีก 36-pins connecter เพิ่มความเร็ว clock เป็น 8.33 MHz ใช้ 24 address bus lines เท่ากับ 16 MB address space รวมทั้งมี interrupts lines >= 5 และ DMA >=4 channels

Micro Channel Architecture

ใช้กับ Intel 386 และหลังจากนั้นก็เป็นรุ่น 486 processors แต่ก็ยังมีของจำกัดด้านประสิทธิภาพเพราะใช้ ISA bus เนื่องจากใช้ 32 bit data word ใน การทำงานของ bus 2 รอบทำให้ช้า (ส่งได้ครั้งละ 16 bits)

IBM มีความต้องการที่จะระงับการใช้ ISA และต้องการนำเสนอ MCA บน PS/2 series computer ประมาณปลายปี 1980

มีการเสนอเพื่อพัฒนา ISA ไว้หลายอย่างได้แก่

- Higher speed แต่ปัญหาของการเพิ่มความเร็วจะมีผลกับการใช้ dedicated bus lines

- Bus Arbitration คือการเลือกใช้การจัดการ I/O ที่จะเชื่อมต่อเข้ากับบัส

- Automatic configuration การตั้งค่าไว้ให้เลย

การ Implement 16 bits และ 32 bits

เป็นสถาปัตยกรรมที่เป็นทางการค้าเฉพาะไปเลย ซึ่งไม่เกี่ยวข้องกับผู้ใช้เลย

โดยการจำกัดอุปกรณ์เชื่อมต่อ

ติดตั้งบนพื้นฐานของ ISA equipment และการปรับเปลี่ยนค่อนข้างถูก

EISA: Extended-ISA

รู้จักกันในปี 1988-1989 เป็นการเพิ่มศักยภาพของ ISA ระบบได้พัฒนาเป็น 16/32 –bit data, 24/32-bit address, 8.33 MHz รองรับอุปกรณ์ที่เป็น ISA compatible เพิ่มthroughput ISA ราวๆ สองเท่า มี interrupts lines และ DMA channels เพิ่มมากขึ้น ไม่ได้เป็นที่รู้จักมากนัก เป็นส่วนหนึ่งของเครื่องคุณภาพสูง ราคาแพง

VESA Video Local Bus

เป็นมาตรฐานของสมาคม Video electronics

ช่วยให้อุปกรณ์เวิดิโอและกราฟิคสามารถต่อตรงไปยังหน่วยความจำได้อย่างรวดเร็ว

ทำการติดตั้งจุดเชื่อมต่อกับ ISA/EISA เพื่อรองรับอุปกรณ์อื่นๆ (ใช้ตัวเชื่อมต่อสองชุดบนมาเธอร์บอร์ด)

32/64-bit data, 24/32-bit address

ความเร็วจะสัมพันธ์กับความเร็วของโปรเซสเซอร์

PCI: Peripheral Component Interface bus

รู้จักกันเมื่อราวปลายปี 1992 เสนอโดยอินเทลและสมาคมผู้ผลิต ประสิทธิภาพดีกว่า VL bus มากๆ

ใช้ 33 MHz clock, และไม่ขึ้นกับโปรเซสเซอร์

64-bit data และใช้ Multiplexed address lines

รองรับมากถึง 64 slots(เป็นสองเท่าของ VL bus)

ตัวระบบรองรับ ISA slots ด้วย

ใช้ Synchronous bus และเป็น centralized bus arbitration

Futurebus+

เป็นระบบบัสประสิทธิภาพสูง ใช้ asynchronous bus ได้เผยแพร่เมื่อปลายปี 1980 ทั้งสถาปัตยกรรม โปรเซสเซอร์ และเทคโนโลยี จะทำงานแบบไม่ขึ้นต่อกัน รองรับ parallel และ arbitration protocol มีข้อบกพร่องน้อยและเป็นระบบที่มีความน่าเชื่อถือสูง ใช้แคชเป็นหน่วยความจำหลัก มีศักยภาพในการแทนที่บัสอื่นๆ ได้เนื่องจากมีความยืดหยุ่นสูง และรองรับ bus width สูงถึง 256 bits เนื่องจากมีความยืดหยุ่นสูงทำให้ราคาติดตั้งสูงกว่า PCI bus แต่ก็ดึงดูดใจผู้ใช้แตกต่างกัน

1.จงบอกความสำคัญของระบบบัส

- เป็นสายไว้ใช้สำหรับส่งข้อมูล

2.รูปแบบบัสมีกี่ชนิด อะไรบ้างและทำงานอย่างไร

- 3 ชนิด

Data line สายส่งข้อมูล

Address line สายสัญญาณตำแหน่งข้อมูล

Control line สายสัญญาณควบคุม

3.ทำไมระบบบัสจึงมีการออกแบบให้มีหลายลำดับชั้นการทำงาน

- เพื่อให้เหมาะกับงานที่ใช้ความเร็วในแต่ละลำดับ

4. Propagation Delay จะเกิดขึ้นในเหตุการณ์ใดได้บ้าง

- มีอุปกรณ์มีจำนวนมากที่เชื่อมต่อเข้า บัส จะทำให้ระบบบัสมีความยาวมากขึ้น ทำให้เกิด เวลาหน่วงขึ้นเรียก (Propagation Delay) ที่เกิดจากการผ่านการควบคุมไปยังอุปกรณ์ I/O

5. ส่วนหน่วยความจำ Cache มีไว้เพื่ออะไร

- หน่วยความจำชนิดหนึ่งมีความเร็วเป็นอันดับสองรองจาก ซีพียู

6.ส่วนหน่วยความจำ Cache และ Cache Control มีความแตกต่างกันอย่างไร

- Cache จะเป็นที่พักข้อมูลส่วน Cache Control เป็นตัวควบคุมมันอีกทอดหนึ่ง

7.จังหวะเวลาและการ Synchronous มีความสัมพันธ์กันอย่างไร

- จะมีการใช้จังหวะสัญญาณ นาฬิกา เป็นจังหวะในการรับหรือส่งข้อมูลโดย เหตุการณ์ทุกเหตุการณ์จะเกิดขึ้นในวงรอบเริ่มต้นของสัญญาณนาฬิกาเท่านั้น ใน ซึ่งสัญญาณนาฬิกาจะมีการส่งจังหวะ 0 และ 1 ออกมาอย่างสม่ำเสมอเรียก 1 วงรอบสัญญาณนาฬิกา (clock cycle)