Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local...

53
บทเยวบการปบปงโด Introduction to Code Optimization

Transcript of Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local...

Page 1: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

บทนำเกี่ยวกับการปรับปรุงโค๊ด

Introduction to Code Optimization

Page 2: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ภาพรวมการสร้างโค๊ด

Page 3: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ระดับการปรับปรุงโค๊ด

Page 4: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ระดับการปรับปรุงโค๊ด• เราสามารถทำ optimization ได้ในหลายๆระดับ– AST (HIR) – LIR – Assembly

• แต่ละระดับมีเทคนิค optimization ที่แตกต่างกันไป

• ระดับที่เหมาะสมที่สุดคือ LIR

Page 5: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ระดับการปรับปรุงโค๊ด• การปรับปรุงระดับ AST – ไม่ขึ้นกับฮาร์ดแวร์ – โอกาสในการปรับปรุงจำกัดเนื่องจากอยู่ในระดับสูงเกินไป

• การปรับปรุงระดับ assembly – ขึ้นกับฮาร์ดแวร์มากไป – ต้องทำการปรับปรุงใหม่ทุกครั้งที่ retarget

• การปรับปรุงระดับ LIR – ไม่ขึ้นกับฮาร์ดแวร์ – โอกาสในการปรับปรุงมีมาก

Page 6: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Basic Block (BB)

• Basic block คือจำนวนชุดคำสั่งที่มากที่สุดที่เป็นไปได้ที่ – ไม่มี label ในชุดคำสั่งนี้ ยกเว้น คำสั่งแรกเท่านั้น

– ไม่มีคำสั่ง jump ในชุดคำสั่งนี้ ยกเว้น คำสั่งสุดท้ายเท่านั้น

• ไม่สามารถ jump ไปที่คำสั่งใน basic block ได้ ยกเว้น เป็นคำสั่งแรก

• ไม่สามารถ jump ออกจาก basic block ได้ ยกเว้น ที่คำสั่งสุดท้าย

• หนึ่ง basic block ที่ทางเข้าหนึ่งทางและทางออกหนึ่งทาง • ชุดคำสั่งใน basic block เป็นโค๊ดแบบ straight-line (ทำงานเรียงตามลำดับที่มีมาในโค๊ด)

Page 7: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่าง Basic Block

• (3) ต้องถูกประมวลผลหลัง (2) เสมอ• สามารถเปลี่ยน (3) ให้เป็น w := 3 * x ได้• แต่ไม่สามารถกำจัดคำสั่ง (2) ได้– อาจมีส่วนของโปรแกรมที่ไม่อยู่ใน basic block นี้ใช้ค่าของ t อีก

Page 8: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Control Flow Graph (CFG)

• CFG คือ directed graph ที่: – มี basic block เป็น node

– มี edge จาก block A ไปที่ block B ถ้าการทำงานของโปรแกรมสามารถดำเนินจากคำสั่งสุดท้ายของ block A ไปถึง block B ได้ • คำสั่งสุดท้ายของ A เป็นคำสั่ง jump ไปที่ label ที่เป็นคำสั่งแรกของ B

• คำสั่งสุดท้ายของ A สามารถ fall through ไปที่ B ได้

Page 9: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่าง CFG

Page 10: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การปรับปรุงโค๊ด• อาจมีวัตถุประสงค์หลักได้หลายอย่าง

– เวลาในการรันน้อยลง (reduce execution time)

– โค๊ดขนาดเล็กลง – สิ้นเปลืองพลังงานน้อยลง – ใช้หน่วยความจำน้อยลง

• เราจะสนใจการปรับปรุงเพื่อให้เวลาในการรันโปรแกรมน้อยลง

• การปรับปรุงโค๊ดจะต้องไม่ทำให้ผลลัพธ์ที่ได้จากการรันจากโค๊ดเดิมเปลี่ยนไป

Page 11: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

แบ่งประเภทการปรับปรุงโค๊ด• Local optimization – Optimize ระดับ basic block แต่ละอัน – เสมือน BB แต่ละอันเป็นอิสระจากอันอื่นๆ

• Global optimization – Optimize ในระดับ CFG – เป็นการ optimize ในระดับ procedure (หรือ function หรือ method)

• Inter-procedural optimization – Optimize ข้าม procedure

• เราจะพูดถึงประสองประเภทแรกในชั้นเรียนนี้

Page 12: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Local Optimization

• เป็นการปรับปรุงโค๊ดที่ง่ายที่สุด• ทำการวิเคราะห์เฉพาะแต่ละ basic block เท่านั้น• ตัวอย่างของการทำ optimization แบบนี้– Algebraic simplification (การลดรูปการคำนวณให้ง่ายลง) – Constant folding (การแทนที่ด้วยค่าคงที่)

– Common subexpression elimination (การกำจัดนิพจน์ที่เหมือนกัน)

– Copy propagation (การแพร่ก๊อปปี้ของตัวแปร)

Page 13: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Algebraic Simplification

• Statement บางอย่างสามารถจะกำจัดทิ้งไปได้เลย – x := x + 0 – x := x * 1

• Statement บางอย่างลดรูปให้การคำนวณง่ายลงได้ – x := x * 0 เป็น x := 0 – y := sqr(y) เป็น y := y * y (ให้ sqr เป็นฟังก์ชั่นที่ return ผลลัพธ์เป็นค่า input ยกกำลังสอง) – x := x * 8 เป็น x := x << 3 – x := x * 15 เป็น t := x << 4; x := t – x

• การ optimize จากการคูณเป็นการ shift อยู่บนพื้นฐานที่ฮาร์ดแวร์การ shift จะเร็วกว่าฮาร์ดแวร์การคูณ – ไม่เป็นจริงเสมอไปสำหรับฮาร์ดแวร์ในปัจจุบัน

Page 14: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Constant Folding

• การปฏิบัติการกี่ยวกับค่าคงที่สามารถทำการคำนวณได้ในขณะที่ทำการคอมไพล์โปรแกรม– นั่นคือสำหรับ x = y op z ใดๆ ถ้า y และ z เป็นค่าคงที่ เราสามารถหาผลลัพธ์ของ y op z ได้ในเวลาคอมไพล์

• เช่น x = 2 + 2 เป็น x = 4

• เช่น if (2 < 0) jump L เป็น statement ที่สามารถกำจัดทิ้งได้ทั้งหมด

Page 15: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Single Assignment Form

• การทำ optimization บางอย่างสามารถทำได้ง่ายขึ้นถ้าค่าตัวแปรด้านซ้ายมีปรากฏเพียงค่าเดียว

• ตัวอย่างการแปลงเป็น SA Form – เพิ่มตัวแปร b เข้ามาใหม่

Page 16: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Common Subexpression Elimination

• ถ้า – โค๊ดใน BB ถูกเขียนอยู่ใน SA form – การ assign ค่าเข้าที่ตัวแปร x (definition of x) ในรูปแบบ x

= … เป็นประโยคแรกที่ตัวแปร x ปรากฏขึ้น • แล้ว

– ถ้ามีการ assign ใดมี expression ด้านขวาที่เหมือนกันแล้ว ผลลัพธ์ที่ได้จะเหมือนกัน

• เช่น: x = y + z x = y + z … สามารถใช้ CSE แปลงให้เป็น … w = y + z w = x

Page 17: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Copy Propagation

• ถ้ามีประโยค assignment w = x ใน BB ให้แทนที่การใช้ wด้วย x – ให้ว่าโค๊ดใน BB อยู่ใน SA form

• เช่น

• คุณค่าของ CP อยู่ที่การช่วยเปิดโอกาสให้มีการทำ optimization อื่นๆได้มากขึ้นเช่น

• Constant folding

• Dead code elimination

Page 18: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การทำ Local Optimization

• Optimization แต่ละแบบถ้าใช้แบบเดี่ยวแล้วมีผลค่อนข้างน้อย

• แต่ optimization เหล่านี้จะมีผลต่อกันและกัน– การทำ optimization อย่างหนึ่งจะทำให้เกิดมีโอกาสทำ

optimization อีกอย่างหนึ่ง • คอมไพเลอร์จะทำการ optimize โดยใช้เทคนิคเหล่านี้ไปเรื่อยๆจนกระทั่งไม่สามารถจะ optimize โค๊ดต่อไปได้– คอมไพเลอร์อาจหยุดการ optimize ณ จุดใดก็ได้ ในกรณีที่ต้องการจำกัดเวลาในการคอมไพล์โค๊ด

Page 19: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการทำ Local Optimization

a := sqr(x) b := 3 c := x d := c * c e := b * 2 f := a + d g := e * f

• เริ่มต้นจากส่วนของ LIR ด้านล่าง

Page 20: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการทำ Local Optimization

a := sqr(x) b := 3 c := x d := c * c e := b * 2 f := a + d g := e * f

• ทำ local optimization ที่เราได้กล่าวถึงมา – Algebraic simplification – Constant folding – Common Subexpression elimination – Copy propagation

a := x * x b := 3 c := x d := a e := 6 f := a + a g := 6 * f

Page 21: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Dead Code Elimination• ถ้า

– w := rhs อยู่ใน basic block – ไม่มีการใช้ค่าของ w ในที่ไดๆเลยในโปรแกรม

• แล้ว – ประโยค w := rhs คือ dead code และสามารถกำจัดทิ้งไปได้ – Dead หมายถึงไม่มีผลต่อผลลัพธ์ของโปรแกรม

• ตัวอย่างการทำ DCE ถ้าไม่มีการใช้ค่าของ a ณ ที่ใดๆของโปรแกรม

Page 22: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Dead Code Elimination

• จากตัวอย่างการทำ local optimization ถ้าเราทำ DCE เพิ่ม เราจะปรับปรุงโค๊ดได้เพิ่มเติมอีก

a := sqr(x) b := 3 c := x d := c * c e := b * 2 f := a + d g := e * f

a := x * x b := 3 c := x d := a e := 6 f := a + a g := 6 * f

a := x * x

f := a + a g := 6 * f

Page 23: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การปรับปรุงโค๊ดแบบ Global

Global Optimization

Page 24: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Global Optimization

• เป็นการปรับปรุงโค๊ดที่ขยายผ่าน basic block ไปทั้ง control flow graph

Page 25: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Global Optimization

• เป็นการปรับปรุงโค๊ดที่ขยายผ่าน basic block ไปทั้ง control flow graph

Page 26: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Global Optimization

• เป็นการปรับปรุงโค๊ดที่ขยายผ่าน basic block ไปทั้ง control flow graph

Page 27: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ความถูกต้องในการทำ Copy Propagation

• พิจารณาสถานการณ์ต่อไปนี้:

• การทำ CP โดยการแพร่ k ไปแทน x ให้ถูกต้อง เราจะต้องได้ว่าทุกๆเส้นทาง (path) ที่จะนำไปหาประโยคที่มีการใช้ตัวแประ x การทำ assignment ครั้งสุดท้ายคือ x := k

Page 28: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการพิจารณา path

Page 29: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ประเด็นเกี่ยวกับการทำ Global Optimization

• การตรวจสอบความถูกต้องนั้นไม่ได้ทำได้ง่ายๆ• จะต้องพิจารณาทุก path ที่เป็นไปได้– Path ที่เกิดจากการวน loop

– Path ที่เกิดจาก conditional branch

• ดังนั้นจะต้องทำการวิเคราะห์ในระดับ global และวิเคราะห์ทั้งตัว control flow graph

Page 30: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การวิเคราะห์แบบ Global• คุณลักษณะของการทำ global optimization: – การทำ optimization ขึ้นอยู่กับการทราบคุณสมบัติ X ของโปรแกรม ณ จุดใดจุดหนึ่งของการทำงานของโปรแกรม

– การจะพิสูจน์คุณสมบัติ X ณ จุดใดๆ เราจะต้องมีความรู้เกี่ยวกับโปรแกรมในส่วนอื่นๆทั้งหมด

– การวิเคราะห์จะต้องมีลักษณะ conservative ต้องเลือกให้ได้อย่างใด อย่างหนึ่ง • บอกได้ว่า X เป็นจริงแน่นอน หรือ • ไม่รู้เลยว่า X เป็นจริงหรือไม่

• เทคนิคมาตรฐานที่ใช้ในการวิเคราะห์แบบ global คือ global dataflow analysis

Page 31: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Global Constant Propagation

• การทำ CP โดยการแพร่ k ไปแทน x ให้ถูกต้อง เราจะต้องได้ว่าทุกๆเส้นทาง (path) ที่จะนำไปหาประโยคที่มีการใช้ตัวแประ x การทำ assignment ครั้งสุดท้ายคือ x := k

• เราจะพิจารณาการทำ CP สำหรับตัวแปร x ใดๆ ในทุกๆจุดของโปรแกรม– ตัวแปรอื่นๆก็จะทำซ้ำขั้นตอนที่ทำกับตัวแปร x

• พิจารณาการให้ค่าที่เป็นไปได้ของ x ในทุกๆจุดของโปรแกรม

Page 32: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

Global Constant Propagation

ค่าที่เป็นไปได้

ความหมาย

⊥ Statement นี้ไม่ได้รับการประมวลผลC x มีค่าเท่ากับค่าคงที่ c⊤ ไม่รู้ว่า x เป็นค่าคงที่หรือไม่

• ⊥ อ่านว่า bottom

• ⊤ อ่านว่า top

Page 33: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการวิเคราะห์

Page 34: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การวิเคราะห์เพื่อทำ Constant Propagation

• เราต้องการหาว่าในทุกๆจุดของโปรแกรม ค่า x ที่จุดนั้นเป็นเท่าใดหรือไม่สามารถจะรู้ได้ (คือหาคุณสมบัติของ x) – อย่างลืมว่าคำว่า “รู้ได้” หมายถึงความรู้ที่มี ณ เวลาที่ทำการคอมไพล์

• ถ้าเรามีความรู้ข้างต้นแล้ว เวลาเราพบการใช้ (การอ่านค่า x) ณ ที่ใดๆแล้ว เราสามารถแทนที่ x ด้วยค่าคงที่ได้

• ต่อไปนี้เราจะกล่าวถึงวิธีการเคราะห์ในการหาคุณสมบัติ (properties) ของ x ในทุกๆจุดของโปรแกรม

Page 35: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

แนวคิดหลักในการวิเคราะห์The analysis of a complicated program can be expressed as a combination of simple rules relating the change in information between adjacent statements

การวิเคราะห์โปรแกรมไม่ว่าจะซับซ้อนเพียงใด สามารถทำได้โดยการใช้กฏง่ายๆที่พูดถึงการเปลี่ยนแปลงของคุณลักษณะในระดับคำสั่งที่อยู่ติดกัน โดยกฏดังกล่าวจะพูดถึงความสัมพันธ์ระหว่างคุณลักษณะก่อนและหลังคำสั่งนั้นๆ

Page 36: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การวิเคราะห์โปรแกรม• สำหรับทุกๆคำสั่ง s ในระดับ LIR เราจะคำนวณหาคุณสมบัติของ

x ก่อนและหลัง s – ให้ C(s,x,in) = ค่าของ x ก่อน s – ให้ C(s,x,out) = ค่าของ x หลัง s

• ข้อมูลคุณลักษณะของ x จะถูกส่งผ่าน (transfer) จากคำสั่งหนึ่งไปอีกคำสั่งหนึ่ง

• เราจะให้นิยาม transfer function เพื่อบอกความสัมพันธ์ของ C(s, x, in) กับ C(s, x, out) – นิยามด้วยกฏที่จะได้กล่าวถึงต่อไปนี้โดยให้ s มีคำสั่งที่มาก่อนหน้าคือ

p1 … pn

Page 37: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 1

Page 38: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 2

Page 39: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 3

Page 40: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 4

Page 41: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่เหลือ• ที่ผ่านมากฏที่ 1-4 บอกความสัมพันธ์จาก out ของคำ

สั่งอื่นๆที่มาก่อนหน้ามาสู่ in ของคำสั่งที่กำลัง

พิจารณา

• กฏที่เหลือจะพูดถึงความสัมพันธ์จาก in ของคำสั่ง

หนึ่งไปสู่ out ของคำสั่งเดียวกัน

Page 42: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 5

Page 43: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 6

Page 44: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 7

Page 45: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

กฏที่ 8

Page 46: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

อัลกอริทึมในการวิเคราะห์1. ณ ตำแหน่งที่ s เป็นจุดที่เป็น entry point ของฟัง

ก์ชั่นหรือโปรแกรม ให้ค่า C(s, x, in) = ⊤

2. ให้ C(s, x, in) = C(s, x, out) = ⊥ ณ ตำแหน่งอื่นๆของโปรแกรม

3. ทำซ้ำจนกว่าทุกๆจุดจะเป็นไปตามกฏทั้ง 8 ที่กล่าวมาและไม่สามารถจะใช้กฏใดๆเพิ่มเติมได้อีก– ค่อยๆไล่คำสั่ง s ที่ละคำสั่งที่คุณลักษณะก่อนและหลัง

ยังไม่เป็นไปตามกฏทั้ง 8

Page 47: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการวิเคราะห์

Page 48: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ทำไมต้องมี Bottom

• พิจารณาโปรแกรมที่มี loop ดังต่อไปนี้

Page 49: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

สิ่งที่ต้องพิจารณา• พิจารณาคำสั่ง Y := 0

– ถ้าจะรุ้ว่า X เป็นค่าคงที่หรือไม่ เราจะต้องรู้ว่าทางที่จะเข้ามาสู่ in ของคำสั่งนี้นั้น x เป็นค่าคงที่หรือไม่

– คำสั่งนี้มีทางที่จะเข้าสู่ตัวมันอยู่สองทางจากสองคำสั่ง • X := 3 • A := 2 * X

• แต่ข้อมูลจากคำสั่ง A := 2 * X จะได้ก็ต่อเมื่อเรารู้คุณลักษณะก่อนและหลังคำสั่ง Y := 0 อย่างถ่องแท้

• เราจะแก้การขึ้นต่อกันวงกลม (circular dependency) นี้ได้อย่างไร

Page 50: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

การแก้ Circular Dependency

• ทุกๆจุดใน cycle ทุกๆจุดจะต้องมีค่าที่แน่นอนในทุกๆเวลา

• ในการกำจัด cycle เพื่อจะแก้ circular dependency ทำได้โดยการให้ค่าเริ่มต้น

• ค่าเริ่มต้นที่เราจะให้ก็คือค่า bottom – เป็นค่าที่เหมาะสมเพราะเริ่มต้นจากการบอกว่า “ยังไม่มีการทำงานมาถึงคำสั่งนี้”

Page 51: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการวิเคราะห์ที่มี loop

Page 52: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการวิเคราะห์ที่มี loop

Page 53: Introduction to Code Optimization - Kasetsart Universityparuj/204433/optimization.pdf · Local Optimization • เ]นการป-บป.งโ1ดHายHJด • ;การ„เคราะเฉพาะแDละ

ตัวอย่างการวิเคราะห์ที่มี loop