Instruction processing: inst cycle, control

Download Report

Transcript Instruction processing: inst cycle, control

Instruction Cycle
ธนวัฒน์ แซ่เอียบ
Main Topics
• Instruction fetch
• Instruction execute
• Instruction cycle
Computer function
• ฟังก์ชนั พื้นฐานของคอมพิวเตอร์คือการปฏิบตั ิงานของโปรแกรม (คาสัง่
หรื อ instruction ของโปรแกรมจัดเก็บเป็ นกลุ่มอยูใ่ นหน่วยความจา)
• รู ปแบบง่ายๆ ของการประมวลผลคาสัง่ ประกอบด้วย 2 ขั้นตอน
1. fetches คือโปรเซสเซอร์อ่านคาสัง่ จากหน่วยความจาในแต่ละครั้ง
2. execute คือหลังจากได้รับคาสัง่ โปรเซสเซอร์ปฏิบตั ิงานตามคาสัง่ นั้น
• ดังนั้นการปฏิบตั ิงานโปรแกรมคือขั้นตอนดึงคาสัง่ (fetch) และ
ปฏิบตั ิงาน (execute) ของแต่ละคาสัง่ วนทาซ้ าไปเรื่ อยๆจนหมดทุก
คาสัง่ ในโปรแกรม
Instruction Fetch and Execute
• เมื่อเริ่ มต้นแต่ละ instruction cycle
– โปรเซสเซอร์รู้ตาแหน่งของคาสัง่ ที่จะต้องไปดึงได้อย่างไร ?
Instruction Fetch and Execute
• program counter (PC) จัดเก็บ address ของคาสัง่ ในหน่วยความจาทีจ่ ะ
ถูกดึงมาปฏิบตั ิงาน
– โปรเซสเซอร์จะทาการดึง (fetch) คาสัง่ จากหน่วยความจาตาม
location ที่ระบุใน PC และหลังจากดึงคาสัง่ มาแล้ว โปรเซสเซอร์จะ
เพิ่มค่าให้กบั PC 1 ค่าทุกครั้ง เป็ นลาดับเช่นนี้ไปเรื่ อยๆ
• ตัวอย่าง
– สมมติวา่ program counter มีค่าเท่ากับ 300
• โปรเซสเซอร์จะดึงคาสัง่ ถัดไปที location 300 หลังจากทางาน
เรี ยบร้อย โปรเซสเซอร์จะดึงคาสัง่ ถัดไปจาก location ที่ 301 302
303 ไปเรื่ อยๆ
Instruction Fetch and Execute
• คาสัง่ จะถูกโหลดเข้าสู่รีจีสเตอร์ในโปรเซสเซอร์ที่ชื่อว่า instruction
register(IR)
• ในคาสัง่ ประกอบไปด้วยบิตซึ่งบิตเหล่านี้เป็ นตัวบอกว่าโปรเซสเซอร์
จะต้องทาอะไรบ้าง ซึ่งแบ่งออกได้ 4 กลุ่ม
1. Processor-memory การเคลื่อนย้ายข้อมูลระหว่างโปรเซสเซอร์และ
หน่วยความจา
2. Processor-I/O การเคลื่อนย้ายข้อมูลระหว่างโปรเซสเซอร์และ I/O
3. Data processing โปรเซสเซอร์ประมวลผลข้อมูลทางคณิ ตศาสตร์หรื อ
ตรรกศาสตร์
Instruction Fetch and Execute
4. Control การเปลี่ยนแปลงลาดับของคาสัง่
– เช่น โปรเซสเซอร์ดึงคาสัง่ จาก location ที่ 149 คาสัง่ ที่ location นี้
ระบุคาสัง่ ถัดไปที่ location 182 ดังนั้นโปรเซสเซอร์จะจดจาว่า PC มี
ค่าเป็ น 182 เพื่อดึงคาสัง่ ถัดไปที่ location ที่ 182 ไม่ใช่ location ที่
150
Example of Program
• Program fragment:
LOAD 940
ADD 941
STORE 941
Example of Program
• การบวกค่าระหว่าง location ของหน่วยความจาที่ 940 และ location ของ
หน่วยความจาที่ 941 และจัดเก็บผลลัพธ์ที่ได้ใน location ที่ 941
1. PC มีค่าเท่ากับ 300 (address แรกของคาสัง่ )
– คาสัง่ ที่ location ที่ 300 จะถูกโหลดเข้าสู่ instruction register (IR)
(การโหลดคาสั่ งจากหน่ วยความจาเกีย่ วข้ องกับ MAR และ MDR)
2. IR หลังจากการดึงคาสัง่ ค่าที่ได้เท่ากับ 1940
– ตัวแรกบอกว่าเป็ นคาสัง่ LOAD (1) ส่ วนตัวเลข 3 ตัวที่เหลือคือ
address (location ที่ 940)
Example of Program
3. PC ถูกเพิ่มค่าขึ้น 1 ค่าและดึงคาสัง่ ถัดไป
4. การบวกระหว่างค่า(content)ของ AC และค่า(content) ของ location ที่
941 ผลลัพธ์ที่ได้นาไปจัดเก็บที่ AC
5. PC ถูกเพิม่ ค่าขึ้น 1 ค่าและดึงคาสัง่ ถัดไป
6. ค่า (content)ของ AC ถูกจัดเก็บที่ location ที่ 941
Instruction Cycle
• Control Unit รับผิดชอบการปฏิบตั ิงานของแต่ละคาสัง่ (instruction) ให้
สมบูรณ์
• Execution cycle ของคาสัง่ อาจจะอ้างถึงหน่วยความจามากกว่า 1 ครั้ง
หรื อระบุ I/O operation ก็ได้
• ดังนั้น Instruction cycle จะประกอบไปด้วยรายละเอียดที่มากขึ้น
ดังต่อไปนี้
Instruction Cycle
• Instruction cycle ที่สมบูรณ์มี 6 phase
– Fetch ทาหน้าที่ดึงคาสัง่ จากหน่วยความจาเข้าสู่ IR
– Decode พิจารณา action ที่จะกระทาเช่น กาหนด input สาหรับ ALU
– Evaluate address คานวณ memory address ของ operand
– Fetch operands อ่านค่า operand จาก memory หรื อรี จีสเตอร์
– Execute ทาให้คาสัง่ บรรลุผล
– Store results เขียนผลลัพธ์ไปสู่ปลายทางที่เป็ นรี จีสเตอร์หรื อ
หน่วยความจา
Instruction Cycle - step 1
• Fetch
– เป็ นขั้นตอนแรกที่ทาการอ่านคาสัง่ จากหน่วยความจา
– โดยปกติมีข้นั ตอนการทางานน้อยที่สุด เป็ น micro-instructions
• MAR  (PC) ใช้ค่าที่มีอยูใ่ น PC เพื่อเข้าถึงหน่วยความจา
• PC  (PC) + 1 เพิม่ ค่าของ PC
• MDR  Mem[MAR] นาค่าจาก memory location ให้กบั MDR
• IR  (MDR) คัดลอกค่า MDR to IR
– ขั้นตอนที่ 1 2 และ 4 ใช้ machine cycle 1 cycle แต่ข้นั ตอนที่ 3 (การ
เข้าถึงหน่วยความจา) อาจจะใช้หลาย cycle
Instruction Cycle - step 2
• Decode
– Opcode ของคาสัง่ ถูกส่ งให้กบั decoder เพื่อนาไปสร้างลาดับ
เหตุการณ์ตามคาสัง่ อย่างถูกต้อง
Instruction Cycle - step 3
• Evaluate Address
– คานวณ address ของ operand หรื อ memory location เพื่อเข้าถึง
ข้อมูล
• เช่น location ที่จะใช้ดึงค่าจากคาสัง่ LOAD
– เรี ยกอีกชื่อว่า Effective Address (EA)
Instruction Cycle - step 4
• Fetch Operands
– ถ้าจาเป็ นต่อการปฏิบตั ิงาน ขั้นตอนนี้จะนา operand มาให้
– Operand มาได้จากรี จีสเตอร์ หรื อ RAM หรื อฝังอยูใ่ นคาสัง่ ของ
ตัวเอง
• Effective Address (EA) ที่พิจารณาในขั้นตอนก่อนหน้านี้ถูกใช้
เพื่อดึง operand จากหน่วยความจา
Instruction Cycle - step 5
• Execute
– ตอนนี้ทุกสิ่ งทุกอย่างพร้อมที่จะทางาน ดังนั้นคาสัง่ จะถูกปฏิบตั ิงาน
• เช่น ถ้า opcode คือคาสัง่ ADD จะนา operand 2 ตัวมาบวกกัน
• ถ้า opcode คือ control instruction จะเขียนค่าไปสู่ PC
• แต่ถา้ เป็ น data Movement instructions จะไม่มีข้นั ตอนนี้
Instruction Cycle - step 6
• Store Result
– ถ้ามีผลลัพธ์จาก operation ผลลัพธ์ที่ได้จะถูกเขียนไปที่
หน่วยความจา (โดยใช้ EA) หรื อไปที่รีจีสเตอร์
– ข้อสังเกต บางคาสัง่ ก็ไม่ตอ้ งการขั้นตอน 6 ขั้นตอนทั้งหมด
• ถ้าใช้รีจีสเตอร์ ก็จะข้ามขั้นตอน Evaluate Address
• ถ้าเพียงแค่เคลื่อนย้ายข้อมูล จะข้ามขั้นตอน Execute
Instruction Cycle - step 7
• Start over
– Control unit จะวนทาซ้ าคาสัง่ ในโปรเซสทั้งหมด จะมีการดึงคาสัง่
ใหม่จาก address ที่เก็บอยู่ PC ปัจจุบนั
• ข้อสังเกต PC ถูกเพิ่มค่าในขั้นตอนแรก (FETCH) ดังนั้นคาสัง่
ใหม่ที่ได้รับมานี้ ก็คือคาสัง่ ถัดไปของโปรแกรมที่เก็บอยูใ่ น
หน่วยความจา นอกจากคาสัง่ นั้นในขั้นตอน execute
เปลี่ยนแปลงค่าของ PC
Stopping the computer
– ผูใ้ ช้สามารถหยุดการทางานของโปรแกรมอย่างง่ายๆ โดยการกดปุ่ ม
control back ส่ งให้กบั Operating System (OS)
• OS จะเข้าสู่ waiting loop ไปจนกว่ามีโปรแกรมใหม่เข้ามาทางาน
• ถึงอย่างไรก็ตาม Control unit ก็ยงั คงทางานตามขั้นตอนใน
instruction cycle
– Control unit ยังคงดึงคาสัง่ จากหน่วยความจา นอกจากเราจะหยุดมัน
ด้วยวิธี
?
The Instruction Cycle as FSM
ที่มา
• William Stalling, Computer Organization and Architecture, USA
• Yale N. Patt, Sanjay J. Patel, Introduction to Computing Systems:
From Bits and Gates to C and Beyond, USA