การทำงานของไมโครโปรเซสเซอร์
ขั้นตอนการทำงานของ CPU ขั้นตอนการทำงานของหน่วยประมวลผลกลางมีลักษณะเป็นวงรอบ โดยขั้นแรกหน่วยประมวลผลกลางจะอ่านคำสั่งจากหน่วยความจำ (fetch) จากนั้นหน่วยประมวลผลกลางจะตีความคำสั่งนั้น (decode) ขั้นตอนสุดท้ายหน่วยประมวลผลกลางก็จะประมวลผล ตามคำสั่งที่อ่านเข้ามา (execute) เมื่อทำงานเสร็จหน่วยประมวลผล ก็จะเริ่มอ่านคำสั่งเข้ามาอีกครั้ง
The ALU เป็นส่วนที่ทำหน้าที่ในการคำนวณทางด้าน คณิตศาสตร์และ ตรรกศาสตร์ การกระทำอาจจะกระทำกับ Operator 2 หรือ 1 ตัว ขึ้นอยู่กับ operation Function การทำงานพื้นฐาน ของ ALU โดยทั่วไป Add , Subtract AND, OR, Exclusive OR, Complement Shift Right, Shift Left Increment, Decrement ALU ไม่สามารถทำการเก็บข้อมูลได้ ดังนั้นหลังจากกระทำการเสร็จเรียบร้อยแล้ว ต้องการนำผลที่ได้ไปสำรองไว้ในส่วนของ Programming Model
The Microprocessor’s Register Microprocessor ทั่วไป มี Register พื้นฐานดังนี้ Accumulator, Program Counter, Stack Pointer, Status Register, General-purpose Register, Memory Address Register, Instruction Register และ Temporary data Register Register บางตัวเท่านั้นที่อยู่ในส่วนของ Programming Model ซึ่งสามารถเรียกใช้งานได้จาก Programmer Register ทำหน้าที่ในการเก็บสำรองข้อมูล บางตัวทำหน้าที่พิเศษ จำนวนของ Register ขึ้นอยู่กับ Architecture ภายใน Microprocessor ที่มีจำนวน Register มาก การเขียนโปรแกรมทำได้สะดวกขึ้น
The Accumulator เป็น Register หลัก สำหรับเก็บข้อมูลก่อนที่จะกระทำใด ๆ การกระทำทาง ตรรกศาสตร์ และ ทางคณิตศาสตร์ กระทำในส่วนของ ALU และ Accumulator การกระทำที่กระทำระหว่าง Operator 2 ตัว เป็น Accumulator 1 ส่วนอีก 1 ตัว มาจาก Register อื่นหรือ หน่วยความจำ การกระทำบางอย่าง ใช้ Accumulator เป็นตัวส่งผ่านข้อมูล ระหว่าง Microprocessor กับหน่วยความจำในตำแหน่งต่าง ๆ หรือ อุปกรณ์ Input / Output เช่นในการย้ายข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง ขั้นแรกจะย้ายข้อมูลจาก Source ไปยัง Accumulator ก่อน จากนั้น ย้ายข้อมูลจาก Accumulator ไปยัง Destination
The Accumulator Microprocessor สามารถกระทำการ กับข้อมูลโดยตรงภายใน Accumulator ได้ เช่นการ Set บาง bit หรือ ทุก bit ให้เป็น 0 หรือ 1 Register บางตัวตาม Architecture ไม่สามารถถูกกระทำได้โดยตรง ซึ่งต้องทำได้โดยย้ายข้อมูลนั้น มายัง Accumulator ก่อน แล้วกระทำการใน Accumulator เมื่อกระทำการเสร็จเรียบร้อยแล้ว ทำการย้ายข้อมูลกลับไป Register ตัวนั้น ๆ Microprocessor บางตัวมี Double-length Accumulator , Multiple Accumulator ทำให้สามารถกระทำการต่าง ๆ ได้สะดวก ยิ่งขึ้น
The Program Counter Program Counter ทำหน้าที่ในการเก็บตำแหน่งของคำสั่งในหน่วย ความจำ เพื่อให้ Microprocessor ทำงานตามคำสั่งนั้น ๆ คำสั่ง ได้รับการเก็บในหน่วยความจำ ในลักษณะเรียงต่อกันไปเป็นลำดับ ขนาดของ Program Counter โดยส่วนมากมีขนาดมากกว่าขนาดของ Data bus เช่นใน Microprocessor ขนาด 8-bit อาจจะมีขนาดของ Program Counter จำนวน 16-bit สามารถอ้างตำแหน่งได้ตั้งแต่ ตำแหน่งที่ 0 ถึง 65,535 Program Counter เชื่อมต่อกับ Internal Data Bus. Program Counter สามารถรับข้อมูลจากส่วนต่าง ๆ ภายใน Microprocessor และ จากหน่วยความจำ เพื่อใช้กำหนดค่าใน Program Counter
The Program Counter ก่อนที่ Microprocessor จะเริ่มทำงานตามโปรแกรม ต้องทำการกำหนดตำแหน่งแรกของโปรแกรมในหน่วยความจำ ให้กับ Program Counter โดยปกติ ขณะเริ่มต้นจะทำการ Reset ทุก bit ของ Program Counter ให้เป็น 0 หรือ Set ทุก bit ของ Program Counter ให้เป็น 1 ข้อมูลในแต่ละตำแหน่งของหน่วยความจำ ที่อ้างโดย Program Counter เป็นการเก็บคำสั่ง หรือ ข้อมูล เพื่อสั่งงาน Microprocessor หรือ เพื่อนำข้อมูลไปประมวลผล
Program Counter (Fetch instructions) ก่อนที่จะเริ่มทำคำสั่งแรก Microprocessor ทำการกำหนดข้อมูลใน Program Counter เพื่อให้ Address Bus ชี้ไปยังตำแหน่งหน่วยความจำที่มีคำสั่งอยู่ คำสั่งที่อ่านเข้ามา ถูกเก็บไว้ใน Instruction Register หลังจากทำการอ่านคำสั่งเข้ามาใน Microprocessor. Program Counter Register ทำเพิ่มค่าของตัวเอง ขึ้นไปอีก 1 ค่า โดย อัตโนมัติ Program Counter Register ทำการชี้ไปยังตำแหน่งของคำสั่งถัดไป เมื่อเริ่มทำการ execute คำสั่งปัจจุบัน การเรียกใช้งาน โปรแกรมย่อย Program counter จะทำการกระโดดจากโปรแกรมหลัก ข้ามไปทำงาน ณ. ตำแหน่งของ โปรแกรมย่อย เมื่อทำ โปรแกรมย่อยเสร็จแล้ว จะกลับไปทำงาน ณ.ตำแหน่งถัดไปของโปรแกรมหลัก
The Status Register เรียกอีกอย่างหนึ่งว่า Flag Register ทำหน้าที่เก็บผลที่ได้จากการประมวลของคำสั่งต่าง ๆ ระหว่างการทำงานของ Microprocessor Flag Register ใช้ในการตัดสินใจทำงาน ในกรณีที่เป็นการทำงานในลักษณะของการเลือกทำ หรือทำซ้ำ
Status Register bits Carry / Borrow เป็นตัวบอกว่ามีการทดหรือยืมเกิดขึ้นหรือไม่ ในการบวกและการลบ Zero ถูก Set เมื่อ ทุก Bit ของ Register ที่ต้องการ ตรวจสอบ เป็น 0 หมด Negative ถูก Set เมื่อ MSB ของ Register ที่ต้องการตรวจสอบนั้นเป็น 1 Intermediate carry ถูก Set เมื่อ มีตัวทดข้ามระหว่าง 4 bit กับ 4 bit หลังของการบวก Interrupt flag โปรแกรมสามารถทำการกำหนดว่าต้องการให้มีการ Interrupt จากอุปกรณ์ภายนอกเกิดขึ้นได้หรือไม่ / Microprocessor บางตัวมี Interrupt flag หลายตัว สำหรับทำการ Interrupt หลาย ๆ ประเภท Overflow ถูก Set เมื่อมีการ Set ของ Carry flag และ Sign flag ในการทำการคำนวณแบบ 2’S Parity ถูก Set เมื่อจำนวนของ Bit ที่เป็น 1 ของผลจากการกระทำใน Register เป็นเลขคู่
The Stack Pointer [Procedure calls] ทำหน้าที่เก็บ ตำแหน่งของคำสั่งในหน่วยความจำที่ต้องทำเป็นลำดับถัดไป เมื่อทำงานในโปรแกรมย่อยเสร็จแล้วให้แก่ Program Counter Register มีการจองพื้นที่บางส่วนเพื่อใช้ในหน่วยความจำ เพื่อทำหน้าที่นี้ หน่วยความจำส่วนนี้ เรียกว่า Stack โดยมี Stack Pointer เป็นตัวชี้ การนำค่าลงใน Stack เรียกว่า Pushes การนำค่าออก Stack เรียกว่า Pops การทำงานเป็นในลักษณะของ LIFO ( Last In First Out ) Stack Pointer ชี้ไปยังตำแหน่งถัดไปโดย อัตโนมัติ เมื่อเริ่มใช้งาน Microprocessor ต้องทำการกำหนดค่าเริ่มต้น ของ Stack Pointer ชี้ไปยังตำแหน่งหน่วยความจำ Stack ถ้าไม่กำหนด Stack Pointer อาจชี้ไปยังตำแหน่งเดียวกับ โปรแกรม ทำให้เกิดการผิดพลาดได้
General Purpose Register เตรียมไว้สำหรับเป็นที่เก็บข้อมูล บาง Microprocessor สามารถใช้ General Purpose Register ได้เสมือนกับเป็น Accumulator ถ้าในส่วนของ ALU สามารถเขียนข้อมูลลงใน Register นั้นได้โดยตรง สามารถใช้งานได้ทั้ง Register เพียงตัวเดียว (ข้อมูลขนาด 8 bit) หรือ ใช้งานในลักษณะของ คู่ Register (Register Pair, ข้อมูลขนาด 16 bit) เช่น BC, DE, HL
Instruction Register มีหน้าที่ในการเก็บรักษาคำสั่งที่ Microprocessor ทำงานอยู่ในปัจจุบัน Instruction Register ทำการ Load ข้อมูลเมื่อเริ่มขั้นตอนของการ fetch/execute cycle หรือ Instruction Cycle จาก Diagram : Instruction Register ต่อเข้ากับ Internal Data Bus ในลักษณะรับข้อมูลได้เพียงอย่างเดียว ไม่สามารถส่งข้อมูลไปยัง Internal Data Bus ได้ ข้อมูลใน Instruction Register ถูกป้อนเข้ากับ Input ของส่วน Control Logic เพื่อใช้ควบคุมการทำงานให้เป็นไปตามคำสั่งนั้น
Instruction Register (Fetch/Excute Cycle) ลำดับของ fetch/execute Cycle คำสั่งถูก fetch เข้ามา จากตำแหน่งของหน่วยความจำที่ Program Counter ชี้อยู่ Program Counter ชี้ไปยังตำแหน่งหน่วยความจำในลำดับถัดไป คำสั่งที่ fetch เข้ามาถูกส่งเข้ามายัง Internal Data Bus และนำเข้าไปเก็บใน Instruction Register จากนั้น คำสั่งถูก execute : ระหว่างการ execute ส่วนของ Instruction Decoder จะอ่านข้อมูลที่ บรรจุอยู่ใน Instruction Register และ ถอดรหัสเพื่อใช้ในการส่งงานส่วนต่าง ๆ ให้เป็นไปตามลำดับการทำงานของคำสั่งนั้น บาง Microprocessor : Instruction Register มีขนาดเท่ากับขนาดของ Data บาง Microprocessor มีขนาดเพียง 3 - 4 bits
Temporary Data Register เนื่องจาก ALU ไม่สามารถเก็บข้อมูลที่จะใช้ในการคำนวณได้, ALU ทำการคำนวณข้อมูลที่ปรากฏขึ้นในขณะนั้น ๆ ตามที่ได้รับคำสั่งให้ทำงานการกระทำใด, Temporary Register เข้ามาช่วย ALU ในส่วนนี้ จากตัวอย่าง มี Temporary Register 2 ตัว : บาง Microprocessor อาจมีมากกว่านี้ ขึ้นอยู่กับ Architecture ภายใน Temporary Register ไม่อยู่ใน Programmer’s model ดังนั้นจึงไม่สามารถเรียกใช้งานได้โดยตรงจาก Programmer
Microprocessor’s Logic Control รับคำสั่งที่ใช้ควบคุมลำดับการทำงานของส่วนต่าง ๆ จาก Instruction Register ลำดับขั้นตอนการทำงานที่ควบคุมส่วนต่าง ๆ ให้เป็นไปตามคำสั่งที่รับเข้ามา เรียกว่า Micro-programmed หรือ Micro-coded เสมือนกับมี Microprocessor ตัวเล็ก ๆ อีกตัวหนึ่งซ้อนอยู่ภายใน ส่วนที่ทำหน้าที่ในการควบคุมลำดับขั้นตอนการทำงาน คือ Instruction Decoder นอกจากการควบคุมส่วนต่าง ๆ ภายในแล้ว ยังควบคุมอุปกรณ์ต่าง ๆ ภายนอกด้วย เช่น สัญญาณติดต่อกับ Memory , I/O , สัญญาณใน อ่าน-เขียนข้อมูล จากอุปกรณ์ภายนอก รับสัญญาณต่าง ๆ จากอุปกรณ์ภายนอกด้วย เช่น สัญญาณนาฬิกา เพื่อใช้กำหนดความเร็วในการทำงาน, สัญญาณ Interrupt
Microprocessor’s Internal Data Bus ALU และ Register ทุกตัวมีการเชื่อมต่อกับ Internal Data Bus การรับส่งข้อมูลภายใน Microprocessor จะผ่านทาง Internal Data Bus ส่วนต่าง ๆ ภายใน Microprocessor ส่วนใหญ่ ติดต่อกับ Internal Data Bus ในลักษณะของ Bi-directional Microprocessor ทำการเชื่อมต่อระหว่าง Internal Data Bus และ External Data Bus เมื่อต้องการรับส่งข้อมูลกับ หน่วยความจำภายนอก หรือ อุปกรณ์ I/O ส่วนที่ทำหน้าที่จัดการการเชื่อมต่อระหว่าง Internal และ External Data Bus เรียกว่า Bi-directional Bus Transceiver ส่วนต่าง ๆ ภายใน Microprocessor ที่ต้องการติดต่อกับ Internal Data Bus ต้องรอสัญญาณจากส่วน Control Logic
สถาปัตยกรรมของไมโครโปรเซสเซอร์เบื้องต้น Introduction to Microprocessor Architecture
The Microprocessor Block Diagram and Programmer’s Model Block Diagram จะแสดงลักษณะของการเชื่อมต่อภายในของ Microprocessor เพื่อประโยชน์ในการออกแบบ Hardware Programmer’s Model จะใช้ช่วยในการพัฒนาโปรแกรม โดยจะแสดงส่วนของ Registers ที่ Programmer สามารถนำไปใช้ในการเขียนโปรแกรม
Programmer’s model / Programming model
68000 : Programmer’s model M68000PRM.pdf
IA32 : Programmer’s model GPR MMX SSE FPU 8 of 80 Data Reg. IA-32 Intel(R) Architecture Software Developers Manual Vol 1 - Basic Architecture.pdf
Microprocessor Block Diagram
Microprocessor Block Diagram : ZiLOG Z8018x Family
Microprocessor Block Diagram : Intel 8088 : 8 Bit Data Bus, 16 Bit Int.
8088 Memory Organization The processor provides a 20-bit address to memory which locates the byte being referenced. The memory is organized as a linear array of up to 1 million bytes, addressed as 00000(H) to FFFFF(H). The memory is logically divided into code, data, extra data, and stack segments of up to 64K bytes each, with each segment falling on 16-byte boundaries.
8088 Memory Organization The segment types were chosen based on the addressing needs of programs. The segment register to be selected is automatically chosen according to the rules of the following table.
8088 Memory Organization All information in one segment type share the same logical attributes. By structuring memory into relocatable areas of similar characteristics and by automatically selecting segment registers, programs are shorter, faster, and more structured. Word (16-bit) operands can be located on even or odd address boundaries. Little Endean: For address and data operands, the least significant byte (LSB) of the word is stored in the lower valued address location and the most significant byte (MSB) in the next higher address location. The BIU will automatically execute two fetch or write cycles for 16-bit operands.
Introduction to Computer System’s Structures
Intel386™ Processor System The Industry Standard Architecture The X-bus is a buffered version of an ISA bus in which the system peripherals such as keyboard, mouse, and DMA controllers are connected. Design Considerations for Migrating Intel386™ and Intel486™ Processor Embedded Systems to the Pentium® Processor Application Note
Intel486™ Processor System The local bus concept was introduced to speed up data fetches. This is particularly useful for devices that need a high data transfer rate, such as video graphics memory. This is also known as VESA local bus
Pentium® Processor System the branch prediction algorithm has been improved, and support for Intel MMX technology has been added which is an extension to the Intel architecture (IA) instruction set that adds 57 new opcodes and a new MMX register set.
Basic System Timing