opcodes, data types, inst types, Data movement instructions and

Download Report

Transcript opcodes, data types, inst types, Data movement instructions and

Instruction Set
ธนวัฒน์ แซ่เอียบ
Main Topics
• Instruction
– Operation code
– Operand
– Instruction Representation
– Number of Addresses
– Types of Operation
• Data Transfer
• Transfer of Control
• Register
Instruction Set Architecture
(ISA)
• ISA คือ component และ operation ทั้งหมดของคอมพิวเตอร์ที่
โปรแกรมเมอร์มองเห็นหรื อสามารถใช้งานได้
– Memory organization
• address space จานวน location สามารถระบุตาแหน่งได้ ?
• addressibility จานวนของบิตต่อ location ?
– Register set
• จานวนเท่าไร? ขนาดเท่าไร? วิธีการใช้งานอย่างไร?
– instruction set
• Opcodes
• Data type
• Addressing modes
Instruction Set Architecture
(ISA)
• ดังนั้นถ้าใครต้องการเขียนโปรแกรมภาษาเครื่ อง จะต้องเรี ยนรูเ้ นื้อหา
ทั้งหมดของ ISA
– หรื อแม้กระทัง่ การแปลภาษาระดับสูงไปเป็ นภาษาเครื่ อง
What is an Instruction
• instruction คือ unit พื้นฐานที่ใช้ทางาน มีส่วนสาคัญ 2 สิ่ ง
– opcode คือ operation ที่จะถูกปฏิบตั ิงาน
– operand เป็ น data หรื อ location ของ operation
• instruction คือรู ปแบบที่ถูกเข้ารหัสไว้ในฐานะลาดับของบิต เช่นเดียวกับ
ข้อมูล (data)
– instruction มีความยาวคงที่เช่น 16 บิตหรื อ 32 บิต แต่กไ็ ม่ได้มีความ
ยาวคงที่ทุกครั้งก็ได้
– instruction ถูกตีความโดย control unit ซึ่งจะสร้างลาดับของสัญญาณ
ควบคุมที่ทาให้ operation ทางานได้สมบูรณ์
What is an Instruction
– operation สามารถถูกปฏิบตั ิงานอย่างสมบูรณ์หรื อไม่สมบูรณ์
ทั้งหมดก็ได้
• คาสัง่ ของคอมพิวเตอร์และรู ปแบบของคาสัง่ รู ้จกั ในนาม Instruction Set
Architecture (ISA)
Elements of an Instruction
• instruction มีส่วนประกอบที่สาคัญดังนี้
• Operation code ระบุ operation ที่จะถูกปฏิบตั ิงาน เช่น ADD มีรูปแบบ
ของเลขฐานสอง เรี ยกอีกชื่อว่า opcode
• Source operand reference ใช้กาหนดที่มาของ operand ตั้งแต่ 1
operand ขึ้นไป (operand คือ input ของ operation)
• Result operand reference อาจจะมีผลลัพธ์เกิดขึ้นสาหรับ operation
• Next instruction reference บอกที่อยูข่ องคาสัง่ ถัดไปให้กบั CPU
หลังจากปฏิบตั ิงานคาสัง่ สมบูรณ์
Operands locations
• ที่มาและผลลัพธ์ (source and result) ที่ได้ของ operand สามารถพบใน 3
จุดดังนี้
1. หน่ วยความจา operand อาจจะเป็ นตาแหน่งของคาสัง่ ถัดไปใน
หน่วยความจา
2. CPU register CPU อาจจะมีรีจิสเตอร์มากกว่า 1 ตัวก็ได้ ถ้ามีมากกว่า 1
ตัว เราสามารถอ้างถึงรี จีสเตอร์เพื่อใช้เป็ น operand ก็ได้
3. I/O device สามารถกาหนด I/O module หรื อ device เป็ น operand ให้กบั
operation
Instruction Representation
• ในระบบคอมพิวเตอร์แต่ละคาสัง่ แทนที่ดว้ ยลาดับของบิต และสามารถ
แบ่งออกเป็ นฟิ ลด์ตามข้อกาหนดได้ดงั นี้
• ในระหว่างการปฏิบตั ิงาน instruction จะถูกอ่านเข้าสู่ instruction
register ใน CPU
– CPU อ่านค่าใน IR และแปลความหมายของฟิ ลด์ต่างๆใน IR เพื่อ
ปฏิบตั ิตาม operation ที่มีใน IR
Instruction Representation
• การแทนที่บิตด้วยเลขฐานสองของคาสัง่ เครื่ องทาให้โปรแกรมเมอร์และ
ผูอ้ ่านจดจาและเข้าใจได้ยากลาบาก
• ดังนั้นจึงมีการใช้การแทนที่ดว้ ยสัญลักษณ์ (symbolic representation)
• การแทนที่ opcode เช่น
ADD แทนการบวก (0001)
SUB แทนการลบ (0010)
LOAD แทนการโหลดข้อมูลจากหน่วยความจา (0011)
STOR แทนการเก็บข้อมูลในหน่วยความจา (0100)
Instruction Representation
• การแทนที่ operand เช่น
ADD R, Y
คาสัง่ นี้หมายถึงการบวกข้อมูลที่เก็บอยู่ location ที่ Y กับข้อมูลของรี จี
สเตอร์ R
• ดังนั้นโปรแกรมสามารถเขียนภาษาเครื่ องในรู ปแบบ symbolic แทน
โดยใช้ symbolic opcode แทนลาดับบิตของเลขฐานสองและ symbolic
operand ระบุ location ของ operand
• สุ ดท้าย symbolic ของโปรแกรมทั้งหมดจะถูกเปลี่ยนให้เป็ นรู ปแบบตัว
เลขฐานสอง
Instruction Types
• ในมุมมองภาษาระดับสูงจะเกี่ยวข้องกับ operation ทางด้านคณิ ตศาสตร์
และการใช้ตวั แปร เนื่องจากภาษาระดับสูงจะถูกแปลเป็ นภาษาเครื่ อง
เพื่อให้สามารถปฏิบตั ิงานได้
• ดังนั้นกลุ่มของคาสัง่ เครื่ องที่สามารถรองรับการทางานจากภาษา
ระดับสูงได้ประกอบ 4 กลุ่มดังนี้
– Data processing: Arithmetric and logic instructions
• คาสัง่ ทางด้านคณิ ตศาสตร์สาหรับคานวณข้อมูลที่เป็ นตัวเลข
• คาสัง่ ทางตรรกศาสตร์สาหรับคานวณบิตแต่ละบิตของ word
Instruction Types
– Data storage: memory instruction
• เนื่องจากข้อมูลจัดเก็บอยูร่ ี จีสเตอร์ของ CPU เป็ นหลัก ดังนั้นจึง
ต้องคาสัง่ เกี่ยวกับหน่วยความจาเพื่อเคลื่อนย้ายข้อมูลระหว่าง
หน่วยความจาและรี จีสเตอร์
– Data movement:I/O instruction
• ผลลัพธ์ที่ได้จากการคานวณอาจจะจาเป็ นต้องส่ งออกไปให้กบั
ผูใ้ ช้
– Control: Test and branch instruction
• กาหนดกลุ่มของคาสัง่ ตามเงื่อนไขที่กาหนด
Number of Addresses
• หนึ่งในการอธิบาย processor architecture คือจานวนของ address ในแต่
ละ instruction ซึ่งส่ งผลต่อการออกแบบ CPU จะมีความซับซ้อนมากแค่
ไหน
• จานวน address สูงสุ ดของแต่ละ instruction คือจานวนเท่าไร
– สมการทางคณิ ตศาสตร์และตรรกศาสตร์จะต้องการ operand ไม่หนึ่ง
ก็สองตาแหน่ง ดังนั้น
– 2 address สาหรับ operands
– 1 address สาหรับจัดเก็บผลลัพธ์ของ operation
– 1 address สาหรับคาสัง่ ถัดไปหลังจาก operation สมบูรณ์
Number of Addresses
• 4 addresses
– Instruction มีการอ้างถึง address 4 addresses คือ operand 2 ที่
ผลลัพธ์ 1 ที่ และคาสัง่ ถัดไป 1 ที่
– รู ปแบบนี้พบได้ยาก เนื่องจาก address คาสัง่ ถัดไปถูกซ่อนอยูใ่ น
program counter อยูแ่ ล้ว
Number of Addresses
• 3 addresses
– คาสัง่ ระบุ operand 2 location และผลลัพธ์ 1 location เช่น
SUB Y,A,B
• ทาหน้าที่คานวณ A-B และนาผลลัพธ์จดั เก็บที่ Y
– ค่าของ operand ไม่ถูกเปลี่ยนแปลงแต่จะใช้พ้นื ที่อีก 1 location ใน
การเก็บผลลัพธ์ที่ได้
– รู ปแบบนี้ไม่เป็ นที่นิยม เนื่องจากรู ปแบบของคาสัง่ มีความยาวมาก
เพื่อเก็บให้ได้ 3 location
– a = b + c;
Number of Addresses
• 2 addresses
– หนึ่งในสองของ address ทาหน้าที่จดั เก็บ 2 อย่างคือ operand และ
ผลลัพธ์เช่น
SUB Y, B
• ทาหน้าที่คานวณ Y-B และผลลัพธ์ที่ได้เก็บลงใน Y
– รู ปแบบนี้พ้นื ที่ของคาสัง่ ลดลง และเพื่อหลีกเลี่ยงการเปลี่ยนแปลงค่า
ของผลลัพธ์ จะใช้คาสัง่ MOVE ย้ายค่าของผลลัพธ์ไปเก็บที่อื่น
ชัว่ คราว
– a=a+b
Number of Addresses
• 1 addresses
– มีบางอย่างที่มองไม่เห็นคือ address ที่สอง
– Address ที่มองไม่เห็นนี้อยูใ่ นรี จีสเตอร์ของ CPU ที่เรี ยกว่า
accumulator หรื อ AC ซึ่งใช้เป็ นหนึ่งของ operand และจัดเก็บ
ผลลัพธ์ดว้ ยเช่นกัน
– รู ปแบบนี้ใช้กบั เครื่ องคอมพิวเตอร์ยคุ แรกๆ
Example
• Y=(A-B)/(C+D*E)
SUB
MPY
ADD
DIV
Y,A,B
T,D,E
T,T,C
Y,Y,T
Y=A-B
T=D*E
T=T+C
Y=Y/T
MOV
SUB
MOV
MPY
ADD
DIV
Y,A
Y,B
T,D
T,D
T,C
Y,T
6 instructions
4 instructions
Y=A
Y=Y-B
T=D
T=T*D
T=T+C
Y=Y/T
LOAD
MPY
ADD
STOR
LOAD
SUB
DIV
STOR
D
E
C
Y
A
B
Y
Y
8 instructions
AC=D
AC=AC*E
AC=AC+C
Y=AC
AC=A
AC=AC-B
AC=AC/Y
Y=AC
How Many Addresses
• การเลือกจานวน address แต่ละแบบมีขอ้ ดีขอ้ เสี ยต่างกันอย่างไรบ้าง ?
Types of Operand
• Addresses
• Numbers
– Integer/floating point
– Decimal
• Characters
– ASCII etc
– Logical Data
• Bits or flags
Types of Operation
•
•
•
•
•
•
•
Data Transfer
Arithmetic
Logical
Conversion
I/O
System Control
Transfer of Control
Data Transfer
• ประเภทคาสัง่ เครื่ องที่เป็ นพื้นฐานมากที่สุดคือคาสัง่ เคลื่อนย้ายข้อมูล
• คาสัง่ จะต้องกาหนดรายละเอียดดังต่อไปนี้
1. ระบุ Location (เป็ นหน่วยความจาหรื อรี จีสเตอร์) ของต้นทางและ
ปลายทางของ operand
2. ระบุความยาวของข้อมูล
3. ระบุโหมด addressing ของแต่ละ operand
Data Transfer
• มีความแตกต่างของคาสัง่ ในการเคลื่อนย้ายข้อมูลแต่ละแบบ เช่น
– IBM S/360
L เคลื่อนย้ายข้อมูลจากหน่วยความจาไปรี จีสเตอร์ขนาด 32 บิต
LH เคลื่อนย้ายข้อมูลจากหน่วยความจาไปรี จีสเตอร์ขนาด 16 บิต
LR เคลื่อนย้ายข้อมูลจากรี จีสเตอร์ไปรี จีสเตอร์ขนาด 32 บิต
• มีคาสัง่ เดียวแต่แบ่งแยกด้วย operand เช่น
– VAX มีคาสัง่ MOV คาสัง่ เดียวแต่ใช้ได้ท้ งั หน่วยความจาและรี จี
สเตอร์
Transfer of Control
• เมื่อคาสัง่ ปฏิบตั ิงานเรี ยบร้อยจะมีดึงคาสัง่ ถัดไปจากหน่วยความจา ซึ่ง
ได้มาจากการที่ CPU ปรับค่าของ PC เพื่อชี้ไปยัง address ของคาสัง่ ใน
หน่วยความจา
• Branch instruction
– เป็ นคาสัง่ กระโดดที่มี operand เป็ น address ของคาสัง่ ถัดไป
– คาสัง่ นี้เป็ นคาสัง่ แบบมีเงื่อนไข นัน่ คือจะกระโดดข้ามเมื่อตรงกับ
เงื่อนไข
• ถ้าตรงกับเงื่อนไข แล้วจะปรับค่า PC ให้เท่ากับค่าของ operand
• ถ้าไม่ตรงกับเงื่อนไข แล้วจะเพิ่ม PC ขึ้น 1 ค่าตามปกติ
Transfer of Control
• โดยปกติมี 2 วิธีในการตรวจสอบเงื่อนไข
1. ตรวจสอบผลลัพธ์ที่ได้จากการคานวณ
BRZ - ถ้าผลลัพธ์เท่ ากับ 0 กระโดดไปยังตาแหน่ง X
BRP - ถ้าผลลัพธ์เป็ นบวกกระโดดไปยังตาแหน่ง X
BRN - ถ้าผลลัพธ์เป็ นลบกระโดดไปยังตาแหน่ง X
BRO - ถ้าผลลัพธ์ overflow กระโดดไปยังตาแหน่ง X
Transfer of Control
2. การใช้รูปแบบคาสัง่ 3 addresses เพื่อระบุการเปรี ยบเทียบและระบุ
ตาแหน่งปลายทาง เช่น
BRE R1, R2, X กระโดดไปยังตาแหน่ง X ถ้าค่าของ R1 เท่ากับ R2
• Skip instruction
– คาสัง่ นี้มี address ที่มองไม่เห็น เนื่องจากโดยปกติมีการข้ามคาสัง่ ไป
เพียง 1 คาสัง่ ทาให้ไม่จาเป็ นต้องระบุ address ของคาสัง่ ปลายทาง
Transfer of Control
– ตัวอย่างคาสัง่ increment-and-skip-if-zero (ISZ)
301
309 ISZ R1
310 BR 301
311
ถ้า R1 เท่ากับ 0
– R1 กาหนดค่าเริ่ มต้นเป็ นลบ
– บรรทัดที่ 310 เป็ นคาสัง่ กระโดดไปบรรทัด 301 หมายความว่าเป็ น
การวนลูปไปเรื่ อยๆ
– บรรทัดที่ 309 เป็ นคาสัง่ เพิม่ ค่า 1 ค่าให้กบั R1 และถ้าค่าของ R1
เท่ากับ 0 จะกระโดดข้ามไปบรรทัดที่ 311
Transfer of Control
Register
• CPU มีหน่วยความจาความเร็ วสูงมากเรี ยกว่ารี จีสเตอร์
• สามารถสร้างโมเดลรี จีสเตอร์ง่ายได้ดงั นี้
กล่องสี ดาซึ่งภายในจัดเก็บข้อมูลในอาร์เรย์
Register
• จากภาพมี 4 input และ 4 output แต่ละสมาชิกของอาร์เรย์สามารถจัดเก็บ
ได้ 1 บิต
• รี จีสเตอร์ทางาน 2 อย่าง
1. สามารถโหลด input ทั้งหมดแบบขนานได้ นัน่ หมายความว่ารี จี
สเตอร์สามารถอ่านทั้ง 4 input ในคราวเดียวกันทั้งหมดได้
2. รี จีสเตอร์สามารถนาข้อมูล 4 บิตจาก input จัดเก็บลงไปในอาร์เรย์ได้
• ดังนั้นรี จีสเตอร์คืออุปกรณ์ที่มีหน่วยความจาสาหรับ
เก็บข้อมูลที่ส่งจาก input และแสดงข้อมูลด้วยส่ วน output
ที่มา
• 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