ComOR

ข้อสอบ ComOR

posted on 17 Feb 2009 09:29 by skblackcat in ComOR

ข้อสอบ 11 ข้อ

4 คะแนน 9 ข้อ
2 คะแนน 2 ข้อ

ส่วนใหญ่บทละข้อ ตั้งแต่หลังมิดเทอม ตั้งแต่ OS
OS 1 ข้อ
ALU 2 ข้อ
Instruction Set 2 slide 3 ข้อ 8 คะแนน
Register 3 ข้อ 12 คะแนน
Embeded 1 ข้อ 4 คะแนน
คำถามนอกเนื้อหา 1 ข้อ (เรา Present เรื่องอะไร)

edit @ 21 Feb 2009 10:52:53 by BlacKCaT

Lecture Comor 27/01/09 Chapter 11 : Addressing Modes and Formats

posted on 27 Jan 2009 11:53 by skblackcat in ComOR

Immediate Addressing
ฟังไม่ทันวุ้ย
เปลืองเนื้อที่ แต่ได้ความเร็วกลับมา

Direct Addressing
คือ แทนที่เราจะส่ง operand เข้าไป เราส่ง address เข้าไปแทน address ก็จะอ้างอิง operand
แต่ก็ยังอ้างอิง address ได้น้อย มี bit สำหรับเก็บ address น้อย

Indirect Addressing (1)
คือ เก็บ address ที่ ชี้ไปยัง address ที่เก็บ operand

ถ้า A คือจะเก็บ address ที่ชี้ไปยัง operand
ถ้า ( A ) คือเก็บ address ที่ชี้ไปยัง address ที่ชี้ไปยัง operand
ในทางปฏิบัติไม่มีใครทำ แต่ในทางทฤษฎีทำได้

Register Addressing (1)
ไปอ้างอิง address ใน register แทน

Register Indirect Addressing Diagram
คือใช้ register เก็บ address ที่ชี้ไปยัง operand แทน

Displacement Addressing
ต้องมี 2 address มี base value และ displacement
คือมี pointer และ ตัวที่เอามาบวก เช่น *(A+1)

ขี้เกียจจดแล้วโว้ย ไม่มีอารมณ์

 

 

 เนื้อหาที่เรียนวันนี้

instruction set คืออะไร
ต้องมีอะไรบ้าง
การอ้างอิง ต้องอ้างอิงกี่ตัว มากสุด 4 ตัว น้อยสุด 0 ตัว
ยิ่งมี address มากหมายความว่าตัวคำสั่ง มาก-น้อย คนเขียนเขียน ง่าย-ยาก
instruction set มีอะไรบ้าง
การอ้างอิง address ใน instruction set
direct
indirect

อะไรต่อไม่รุ ขี้เกียจละ

Lecture Comor 27/01/09 Chapter 10 : Instruction Sets

posted on 27 Jan 2009 11:04 by skblackcat in ComOR

วันนี้เรียน 2 เรื่อง มันเป็นเรื่องเดียวกันแต่บางทีเค้าแบ่งเป็น 2 ช่วง
เกี่ยวกับ instruction sets
ช่วงนี้จะคุยเกี่ยวกับ cpu ทั้งหมด ที่ผ่านมาคุยว่า คำนวณยังไง เก็บยังไง
วันนี้คุยว่า cpu ส่งคำสั่งยังไง คำสั่งที่เราเขียนโปรแกรมไปที่เป็นตัวอักษร ในคอมพิวเตอร์เป็นยังไง ทำงานได้ยังไง

instruction set คือกลุ่มของชุดคำสั่ง ที่ cpu เข้าใจ cpu สามารถเอาไปประมวลผล คำนวณได้ เรียกว่า machine code
เป็นลักษณะของเลขฐานสอง ซึ่งก็แล้วแต่ cpu รุ่นนั้นๆ แล้วแต่ตระกูล อาจจะเป็น 32 64 8 16 bit ขึ้นอยู่กับ word size ด้วย
แต่การที่เป็นเลขฐานสอง ก็คงจะเป็นเรื่องยากสำหรับคนเราที่จะจดจำ เข้าใจ เลขฐานสอง เราเข้าใจในลักษณะของสัญลักษณ์มากกว่า
เวลาเราเรียกใช้ machine code ในสมัยก่อน เราใช้ assembly ซึ่งเป็นภาษา low level อยู่ใกล้กับ hw มาก สามารถเขียนโปรแกรมเพื่อที่จะควนคุม hw ได้
เมื่อเปรียบเทียบกับพวก vb python พวกนี้จะควบคุม hw ได้น้อย
สิ่งที่ตัวคำสั่งต้องมี
- op code ตัวคำสั่งที่บอกให้ทำสิ่งนั้นสิ่งนี้ (ที่แน่ๆต้องมีอันนี้ อันอื่นอาจจะมีหรือไม่มีก็ได้ มันต้องมี แต่มีแบบ implicit (เรามองเห็น) หรือ explicit(เรามองไม่เห็น) ก็อีกเรื่องนึง)
- source operand reference คือ กระทำสิ่งนั้นตาม op code กับค่าข้อมูลตัวแปรที่อยู่ใน source operand reference
- Result Operand reference  - Put the answer here
- Next Instruction Reference - When you have done that, do this...

Next ไม่ explicit อยู่ในตัวคำสั่งแน่นอน แต่ต้องมี
| OP | Source | Dest | Next |
หรือ
| OP | SOURCE |
ก็ได้

state diagram ของเครื่องคอมพิวเตอร์ slide หน้า 5
ต้นกำเนิดของ operand จะอยู่ที่ไหนก็ได้ เช่น main mem , cpu register , I/O Device การอ้างอิง address ก็จะต่างกัน

ลักษณะโครงสร้างของ instruction ต้องมีลักษณะยังไง ทำงานได้ยังไง
ตัว machine code หรือ instruction เป็น เลขฐานสองกลุ่มหนึ่งซึ่งไม่ซ้ำกัน แต่ละชุดเลขฐานสองทำหน้าที่สั่งให้คอมพิวเตอร์ทำบางอย่างที่เราต้องการ
จริงๆใช้เลขฐานสองก็ได้ แต่มนุษย์ติดสะดวกสบาย ก็ใช้คำสั่งขึ้นมาเพื่อให้ง่ายขึ้น เช่น ADD SUB LOAD
ADD A,B บางทีก็ใส่ operand ไปเลย บางทีก็ยังไม่ใส่ แล้วแต่รูปแบบของแต่ละตัว
มันจะ เอา A + B แล้วเอาไปเก็บไว้ในแอคคิวมูเลเตอร์

Simple Instruction Format ของคำสั่ง ADD A,B Slide หน้า 7
การที่จะรู้ว่าจะเก็บคำตอบไว้ที่ address ไหน ใช้ stack (แบบ advance)

Instruction Types
Data processing เก็บไว้ใน process
Data storage (main memory) เก็บไว้ใน main mem
Data movement (I/O) ย้ายไปที่ I/O เช่น fgets printf scanf
Program flow control - while for

ชุดคำสั่งจะมีความกว้างกี่ bit แล้วแต่ cpu
แต่ละคำสั่งจะมีกี่ address ก็แล้วแต่เราออกแบบระบบ
ต้องมีบอก opcode , บอก address
น้อยสุดก็คือ 0
ADD A,B แบบ 4 address ต้องมี OPCode , A , B , ผลลัพธ์ , Next คำสั่งถัดไป
ย่อลงมาก็คือ 3 เช่น ADD Y,A,B เอา A , B บวกกันแล้วเก็บไว้ที่ Y
ย่อลงไปอีกก็คือ 2 Address ลักษณะของ A = A+B มีแค่ OPCode , A , B
แบบ 1 Address เช่น ADD A
คือต้องมี register พิเศษบอกอยู่แล้วว่าจะบวกเพิ่มไปที่ไหน ระบบก็จะยิ่งยุ่งยากขึ้น


ถ้าใช้แบบ 4 address จะง่าย ไม่ต้องจัดการยุ่งยาก hw จัดการได้เลย มีตัวบอกไว้หมด
แบบ 2 address จะยุ่งยาก แต่สิ่งที่จะได้เพิ่มขึ้นมา คือความกว้างของ opcode ทำให้มีชุดคำสั่งหลากหลายได้มากขึ้น

แบบ 0 address ใช้ stack
มี opcode อย่างเดียว
Stack มี push , pop
push = ใส่
pop = เอาออก
push ตัวเลขที่ต้องการ
พอทำ opcode ก็ pop ออกมาทำ

ยิ่งมี address ก็ต้องใช้คำสั่งเยอะ
ยิ่งมีเยอะ หน้าที่คำสั่งก็จะซับซ้อนน้อย
บอกไม่ได้ว่าอันไหน powerful กว่ากัน เลยนำพามาให้เกิด cpu 2 ตระกูล
คือ CISC & RISC
complex , reduce
power pc เป็น risc
การออกแบบชุดคำสั่ง ต้องสนใจอะไรบ้าง สิ่งที่ต้องสนใจ
 - เราจะมีกี่ operation กี่คำสั่ง
 - ทำอะไรได้บ้าง
 - จะให้ซับซ้อนขนาดไหน
ใช้ข้อมูลกับประเภทอะไร
ความยาวในแต่ละฟิลมีความยาวกี่บิต
ในหนึ่งคำสั่งจะใช้ register กี่ตัว

Risc ชุดคำสั่งของ CPU มีน้อยๆ
Cisc หนึ่งชุดคำสั่งมีคำสั่งอยู่เยอะแยะ คือมี address น้อยๆ เวลาเขียนคำสั่งก็จะยุ่งยาก

ในการทำงานเกี่ยวกับคำสั่งก็ต้องดึง operand มาทำการคำนวณ

Types of Operand
Addresses
Numbers
 - Integer/floating point
Characters
 - ASCII etc.
Logical Data (1 word เก็บ 8 logical)
 - Bits or flags

Types of Operation
Data Transfer เคลื่อนย้ายข้อมูล เช่น pop push load move
Arithmetic เกี่ยวกับพีชคณิต ADD , Multiply , Sub
Logical คำสั่งเกี่ยวกับตัวตรรกศาสตร์ and or xor
Conversion เปลี่ยนประเภทของตัวแปร
I/O ติดต่อกับ Input Output Read Write แบบแรก มีคำสั่งสำหรับ I/O แต่ละตัว แบบสอง มี Address เจาะจงไปเลย
System Control ไม่เจาะลึก เป็นคำสั่งพิเศษที่อาจจะถูกใข้งานโดยตัว OS พิเศษบางอย่าง โปรแกรมเมอร์ไม่ได้ใช้
Transfer of Control ควบคุมการไหลของตัวคำสั่ง เช่น Jump Return

หลังไม่ได้จดคร้าบบบบ

 

 

Lecture ComOR 13 Jan 09 - ALU

posted on 13 Jan 2009 11:09 by skblackcat in ComOR

ALU ทำหน้าที่เป็นหน่วยคำนวณทางคณิตศาสตร์
การประมวลผลที่ดีต้องเป็น integer แต่ก็จัดการ floating point ได้ แต่จะได้ไม่ดีเพราะมีทศนิยมบางตัวที่ไม่สามารถแทนค่าด้วยเลขฐานสองได้

box diagram -> slide 3
flags เอาไว้เซ็ตเมื่อเกิด overflow เกิดขึ้น

integer แปลงฐาน 10 -> ฐาน 2 ใช้เลข 0,1
ไม่สามารถเก้บข้อมูลด้านลบได้เป็นลักษณะของ unsigned
การที่ไม่สามารถเก็บเครื่องหมายได้ ทำให้ยุ่งยาก
 - sign magnitude คือใช้ bit ซ้ายสุดในการกำหนดเครื่องหมาย 0 = + , 1 = -
มีปัญหาคือ ในการบวกลบจะต้องมาวิเคราะห์ bitซ้ายก่อน จะต้องเสียเวลาไป 1 step
ปัญหาในการวิเคราะห์เลข 0 คือ 0 จะมีค่า 10000000 กับ 00000000 ทำให้ยุ่งยาก

Two Complement จะมีเลขแค่ชุดเดียวที่เป็น 0
จำนวณลบทำ tc ก็ได้จำนวณบวก ทำกลับก็ได้เท่าเดิม

ข้อดีของการทำ tc คือมี 0 แค่ค่าเดียว
การคำนวณทางด้านคณิตศาสตร์ก็ทำได้ง่าย

Bias Representation
ไม่ได้ใช้ในการ +-*/ ใช้แค่แทนค่าเฉยๆ
ค่าที่ได้จะอ่านยาก จะเก็บว่าตัวเลขนี้จะเก็บอยู่ในค่าที่เท่าไหร่
ถ้าจะรู้ว่าค่าจริงๆเป็นเท่าไหร่ เราต้องเอาค่าที่บวกเข้าไปมาลบออก
เก็บเป็นวงกลม ถ้าจะบวกก็นับไปตามเข็มนาฬิกา ลบทวนเข็ม

Negation
คือการเปลี่ยนเครื่องหมายในกรณีพิเศษคือ tc 0 เวลาทำบวกลบปกติจะไม่มี carry ขึ้นมาเกิดขึ้น แต่กรณี 0 จะมี 1 โผล่ขึ้นมาเป็น carry แต่ก็ไม่มีผลอะไร
กรณีพิเศษที่สองคือ เช่น 100 ทำ tc เป็น 011+1 ได้ 100 เหมือนเดิม กลายเป็นลบเหมือนเดิม

ช่วงความกว้างของตัวเลข
8 bit = 256/2 = 128
จะได้ -128 ถึง 127

การแปลงความกว้างของจำนวณ bit
sign mag ใช้การเลื่อน
tc ใช้ + เติม 0 , -เติม 1
เมื่อเราทำ tc ทำวงจรเดียวคือวงจรบวก

flowchart หน้า 14
ข้อสอบอาจจะให้ทำ two compltment
เครื่องหนึ่งมีจำนวน data bus กว้าง 3 bit จงแสดงการบวกเลขแบบดิจิตอลของ
1A 2+3
1B 5+7
คิดไม่ได้ เพราะ มีoverflow  3 bit เก็บได้สูงสุดแค่ 3 คำตอบเกิน

การคูณ = การวนลูปของการบวก แต่ช้า หลังๆเค้าเลยสร้างวงจรของการคูณ
วงจรการคูณ ไม่ได้มีการคูณจริงๆ ถ้าตัวคูณเป็น 1 ก็ก๊อบตัวตั้งมา แล้ว shift ถ้าเป็น 0 ก็ใส่ 0 แล้ว shift แล้วเอามาบวกกัน
ถ้าตัวตั้ง 5 bit ตัวคูณ 3 bit จะได้ ??? bit หน้า 16
slide 17,18 ใช้ได้กับจำนวณบวกเท่านั้น ออกข้อสอบแน่นอน แต่อันไหนไม่รู้

ลบกัน คือ เอามาบวกด้วย tc
Booth Algorithm
Arithmetic Shift = Shift โดยการเพิ่มเลข 1 เข้าไปหลักสุดท้าย

การหาร เรียนแค่จำนวนบวกอย่างเดียว
หน้า 24,25

A Q M n
0000 0111 0011 4

0000 1110 0011  shift
1101    subtract A=A-M ------> a<0?Qศูนย์ = 0,A=A+M :Qศูนย์ = 1  -----> n-=1
0000 1110   -,+ n=3

0001 1100   shift
1110
0001 1100   n=2

สาดดดดดดดดดดด กุเหม่อแปปเดียว ไปถึงไหนละวะ

เลขจำนวนจริง
การเก็บเลขทศนิยม
เก็บแบบ + - S * 2^E
หน้า 28 ถ้าออกข้อสอบก็แค่ถามความเข้าใจ
0.110x2^5 = 110x2^2 = 1.10x2^4
เราจะต้องปรับให้เป็น 1.bbbbbbbbbb แล้วเก็บแค่ bbbbbbbbbb

32 Bit
 - 8 bit e
 - +/- 2^256 ~ 1.5 x 10^77

underflow = ตัวที่ละเอียดเกินไป แทนค่าไม่ได้
overflow = ค่ามากเกินไป เก็บไม่ได้

หารทศนิยม ไม่ออก

Computer Organization - สรุป OS

posted on 09 Jan 2009 02:04 by skblackcat in ComOR
สรุป OS จิ้มเบาๆ เดี๋ยวมันเจ็บ

edit @ 9 Jan 2009 02:05:53 by BlacKCaT