งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

นายพิสัณห์ ดวงจันทร์ รหัส

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "นายพิสัณห์ ดวงจันทร์ รหัส"— ใบสำเนางานนำเสนอ:

1 นายพิสัณห์ ดวงจันทร์ รหัส 4422035
Cache Memory Systems Chapter 6: Physical Cache Chapter 7: Efficient Cache Management Technique นายพิสัณห์ ดวงจันทร์ รหัส

2 Physical Cache Organization Physical Cache Management Multilevel Cache
Chapter 6: Physical Cache Physical Cache Organization Physical Cache Management Multilevel Cache

3 Physical Cache Organization
Virtual Address Physical Address Physical Address CPU MMU Physical Cache Miss Hit! Main Memory Data Data

4 Physical Cache Organization
CPU Virtual Address MMU Physical Address Physical Cache Physical Address Main Memory Data Data ข้อดีของ Physical Cache ไม่มีปัญหาเรื่อง Ambiguity และ Alias ไม่ต้องทำการ flush

5 Physical Cache Organization
Process ที่ไม่ได้ใช้ข้อมูลร่วมกัน อยู่กันคนละ Physical Page Physical Tag ไม่มีทางที่จะ match กัน Process ที่ใช้ข้อมูลร่วมกัน อยู่ใน Physical Page เดียวกัน เพื่อจะได้ ทำ index ร่วมกัน และ match Tag กันได้ ==> Hit! ไม่เกิด Alias และ Ambiguity ขึ้น เพราะไม่ใช้ Virtual address โดยทั่ว ๆ ไปแล้ว จะไม่ต้อง flush สามารถทำ Bus Watching ได้

6 Physical Cache Organization
ในระบบที่ไม่มี Physical cache: ข้อมูลของ Process ที่ไม่เกี่ยวข้องกัน อาจจะอยู่ใน Virtual address เดียวกัน (Virtual Line เดียวกัน) ในระบบที่ใช้ Physical cache: ข้อมูลของ Process ที่ไม่เกี่ยวข้องกัน แม้ว่าจะอยู่ใน Virtual address เดียวกัน แต่จะอยู่ในคนละ Physical Line เพราะจะนำเอา Physical address มาจัด index แก้ปัญหาสำคัญ ของ Virtual cache ลงได้ (Alias & Ambiguity) มีความสามารถในการกระจายข้อมูลภายใน Cache ได้อย่างดีเยี่ยม

7 Managing a Physical Cache
Physical cache ไม่ต้องทำการ Flushing เพราะ Context Switch time: ใช้ Physical tag ==> ไม่เกิด Alias และ Ambiguity ==> ไม่ต้อง flush Hit ratio สูง เพราะมีการกระจายข้อมูลได้ดี Fork time (Copy-on-Write Sharing): ทั้ง Parent และ Child process ใช้ Physical address อันเดียวกัน ==> ไม่เกิด Alias และ Ambiguity ==> ไม่ต้อง flush Copy Page ได้ง่าย เพราะไม่ได้นำ Virtual address ที่ทำ Temporary mapping มาเกี่ยวข้อง

8 Managing a Physical Cache
Exec, Exit, Brk, Sbrk time: Process ที่ไม่เกี่ยวข้องกัน อยู่คนละ Physical page เมื่อ Process A จบการทำงาน ==> memory deallocation ==> Process อื่น ๆ ไม่สามารถเข้าถึง Physical page ของ process A ได้ ==> ข้อมูลเก่าที่ค้างอยู่ ไม่มีทางถูกเข้าถึง (access) เมื่อเนื้อที่ส่วนนี้ถูก reallocate ==> UNIX จะมีการทำ Zero-filling เอง ดังนั้น ไม่ต้อง flush Shared Memory and Mapped Files: ใช้ Physical address ในการอ้างถึงข้อมูลที่ใช้ร่วมกัน ==> ไม่เกิด Alias (เหมือนกับการใช้ Virtual address) ==> ไม่ต้อง flush

9 Managing a Physical Cache
User-Kernel Data Ambiguity: เมื่อมีการ access Kernel’s Page ==> เช็ค Permission ==> User process ไม่สามารถเข้าถึง Kernel data ได้ เนื่องจากใช้ Physical address ==> ไม่เกิด Alias และ Ambiguity ==> ไม่ต้อง flush I/O and Bus Watching: Virtual Cache: เมื่อเกิด I/O Operation ==> Data Inconsistency ==> Flushing Physical Cache ใช้ “Bus Watching” ==> ข้อมูลใน Cache มีการแก้ไขอัตโนมัติ ==> ไม่ต้อง flush

10 Cache, Memory and I/O interconnection on a System Bus
Bus Watching CPU/MMU Snooping Physical Cache System Bus Memory I/O Cache, Memory and I/O interconnection on a System Bus

11 Bus Watching ข้อมูลส่งไปใน bus ในรูปของ Bus Transaction
ขนาดของ Bus Transaction = 12 words, 24 words ฯลฯ Cache จะคอยจับตาดู (monitor) กิจกรรมต่าง ๆ ใน Bus เรียกว่า “Snooping” Cache Look-up Operation นำ Address มาผ่าน Hash function ==> Line/Set ==> Indexing ==> ตรวจสอบ Tag ว่า … Miss ==> ไม่ต้องทำอะไร Hit ==> ดำเนินการกับข้อมูลที่อยู่ใน Cache (Cache-Resident)

12 Intel i860 XP Cache Architecture
Virtual address from CPU Physical address from bus VPN Offset PPN Offset <11..5> <11..5> Virtual Tag Physical Tag Data Set 1 Set 1 Line 1 2 3 Line 1 2 3 .

13 Multilevel Cache CPU Registers 1st Level Cache 2nd Level Cache Main Memory Primary (1st Level) Cache ==> Faster & Smaller Virtual Cache Secondary (2nd Level) Cache ==> Lower & Larger Physical Cache ทำ MMU Translation พร้อม ๆ กับ 1st Level Cache Look-up ได้ ถ้า miss ที่ 1st Level Cache ==> จะไปดูที่ 2nd Level Cache ต่อไป โดยใช้ Physical address ที่ได้จาก MMU Translation เป็นการผสมผสานข้อดีของ Cache ทั้ง 2 แบบไว้ด้วยกัน

14 Intel i860 XR Cache Architecture
Bus MMU Main Memory Virtual Address External Cache Phys Addr Phys Addr Physical Cache CPU Data Cache Data Data Data I/O Inst Cache Instructions

15 MIPS R4000 Cache Architecture
Bus Virtual Address MMU Main Memory External Cache Phys Addr Phys Addr Physical Cache CPU Data Cache Data Data I/O Data Inst Cache Instructions

16 Efficient Cache Management Technique
Chapter 7: Efficient Cache Management Technique Address Space Layout Cache Size Bounded Flushing Delayed Cache Invalidation Cache-Aligning Data Structure

17 Efficient Cache Management Techniques
Locality of Reference Physical design Cache Management Techniques Locality of Reference และ Physical design of the cache นั้นแก้ไขไม่ได้ เป้าหมาย ==> Cache Management Techniques

18 Efficient Cache Management Techniques
มี 4 เทคนิค Address Space Layout Cache Size Bounded Flushing Delayed Cache Invalidation Cache-Aligning Data Structure

19 Address Space Layout Virtually Indexed Cache
ปกติแล้ว จะใช้ Hash algorithm ในการกระจายข้อมูลของ text, data และ stack region ของ Process (ทำเป็น index) ทำการกำหนด Virtual address ที่เหมาะสมให้แก่ text, data และ stack region เพื่อไม่ให้เกิดเป็น index ที่ซ้ำซ้อนกัน Text Data/bss Stack 0x0 0x 0xffff0000

20 Address Space Layout Virtually Indexed Cache
0xff0 1 2 3 255 0x 0x 0x 0x 0x80000ff0 0xffff0000 0xffff0010 0xffff0020 0xffff0030 0xffff0ff0 Text index Data index Stack index

21 Address Space Layout Virtually Indexed Cache Address Space Text Cache
0xff 255 60 K Unused 0x Data 0x800000fff. 0xffff0000 Stack 0xffff0ff0

22 Address Space Layout Virtually Indexed Cache
0xff0 1 2 3 255 0x 0x 0x 0x 0x80006ff0 1536 1537 1538 1539 1791 0xfffff000 0xfffff010 0xfffff020 0xfffff030 0xfffffff0 3840 3841 3842 3843 4095 Text index Data index Stack index

23 Address Space Layout Virtually Indexed Cache Address Space Cache Text
0xff 24K 0x Data 0x800060fff. 40K 0xffff0000 Stack 0xffff0fff

24 Address Space Layout ข้อจำกัดของ Virtually Indexed Cache
ใช้ได้กับระบบที่สามารถคาดหมายเนื้อที่ที่ application ต้องการได้ ใช้ไม่ได้เลยกับระบบที่มี Cache ขนาดเล็ก โดยเฉพาะที่มีขนาดน้อยกว่า หรือเท่ากับขนาดของ Page ของ Process

25 Address Space Layout Dynamic Address Binding Address Space A Text
Stack Data Address Space B 0x0 0xfff 0x 0x800006fff 0xfffff000 0xffffffff 0x0 0xfff 0x 0x800006fff 0xfffff000 0xffffffff Text Stack Data Cache

26 Address Space Layout Dynamic Address Binding
สุ่ม Starting address ตอน link time หรือ ส่วนของ stackสามารถทำได้ตอน exec time แต่ปกติแล้ว Address binding จะเกิดขึ้นแบบ Static ณ Link time ใช้ Position-independent code (โปรแกรมที่ไม่มีการ binding ไปยัง Virtual address ใด ๆ ในตอน compile, link time) ยังไม่มีสถาปัตยกรรมใดที่รองรับ Position-independent code

27 Address Space Layout ข้อจำกัดของ Dynamic Address Binding
ข้อตกลงต่าง ๆ รวมถึง Starting address มาตรฐาน หายไป ทำให้เสียเวลาตรวจสอบโปรแกรมมากขึ้น ใช้ได้กับระบบที่มี Cache ขนาดใหญ่ พอที่จะทำให้เกิด Locality of Reference เท่านั้น เกิด Overhead ในการคำนวณ Load address

28 Address Space Layout Physically Indexed Cache
ทำการ allocate Physical page แบบกระจาย ใช้ Modulo cache indexing แบ่ง Physical page ออกเป็น n กลุ่ม โดยที่ n = Cache size / Page size Page แรก จะอยู่ที่ตำแหน่ง 0 Page ที่สอง จะอยู่ที่ตำแหน่ง 1 ต่อไปเรื่อย ๆ จนถึงตำแหน่งที่ n-1 เมื่อครบ ก็วนกลับไปที่ตำแหน่ง 0 ใหม่

29 Address Space Layout Physically Indexed Cache Physical Memory Page
1 2 3 4 5 6 7 Page Number Physical Memory Cache

30 Address Space Layout ข้อจำกัดของ Physically Indexed Cache
ใช้ได้กับระบบที่มี Cache ขนาดใหญ่มากกว่าขนาดของ Page หลาย ๆ เท่า

31 Cache Size Bounded Flushing
ขนาดข้อมูลที่ใหญ่ที่สุดที่จะถูก flush = ขนาดของ Cache ถ้าต้องทำการ flush cache เมื่อ I/O buffer มีขนาด 4K ถ้า Cache ขนาด 2K ==> Flush 2 ครั้ง ถ้า Cache ขนาด 4K ==> Flush ครั้งเดียว Cache ที่มีขนาดใหญ่ จะลด flushing overhead

32 Delayed Cache Invalidation
เป็น time consuming ==> ทำทีละ Line โดยปกติแล้ว Cache จะ flush ได้ทีละ 1 line เกิดการ invalidate line ที่ไม่ได้บรรจุข้อมูลที่ต้องการลบขึ้นได้ บางกรณี สามารถ delay การทำ Invalidation ออกไปได้ 12K Virtual cache with physical tag; 4K Page; 10 Processes Invalidate 1 ครั้ง: 1 Process = ดำเนินการกับข้อมูล 120K Invalidate 1 ครั้ง: 10 Processes = ดำเนินการกับข้อมูล 12K

33 Delayed Cache Invalidation
Virtual Cache with Key รอจนระบบใช้ Key ที่ว่างอยู่หมด และต้องการใช้ Key ของ Defunct Process ==> Invalidate Unused Key List: ดึง Key ออกไปให้ Process ที่เกิดขึ้นใหม่ Used Key List: เก็บ Key ของบรรดา Defunct Process ไว้ เมื่อ Unused Key List หมด OS ทำการ Invalidate Cache นำ Key ทั้งหมดใน Used Key List ไปให้แก่ Unused Key List

34 Delayed Cache Invalidation
Physically Tagged without Bus Watching คล้าย ๆ กับที่ผ่านมา คือมีการใช้ Free List ของ Physical Page Clean List: Physical Page เปล่า ๆ สำหรับ Process ใหม่ Dirty List: Physical Page ของบรรดา Defunct Process เมื่อ Clean List หมด OS ทำการ Invalidate Cache ย้ายทุก Page ใน Dirty List ไปให้แก่ Clean List

35 Cache-Aligning Data Structure
ทำให้ข้อมูลที่โปรแกรมต้องใช้งาน บรรจุลงใน Cache line ได้อย่างเหมาะสม เพื่อ ลดการ Miss เพิ่ม Locality of Reference ข้อมูลดังกล่าว อาจจะเป็น data structure ของโปรแกรม หรือตัวโปรแกรมเองก็ได้ ใน UNIX โครงสร้างข้อมูลที่เข้าถึงบ่อยที่สุด คือ “Process table”

36 Cache-Aligning Data Structure
Line 1 2 3 4 Entry 0 Entry 1 Entry 2 Entry 3 Entry 4 Entry 5 Entry 6 Entry 7

37 Cache-Aligning Data Structure
Line Entry 0 Entry 1 Entry 2 Entry 3 Entry 4 Padding 1 2 3 4 Cache

38 Cache-Aligning Data Structure
Padding ขนาดใหญ่ ==> ลดประสิทธิภาพของระบบ เสียเนื้อที่ว่างไปเปล่า ๆ ลด Locality of Reference ไม่ Portable เพราะต้องทำการ built-in ขนาดของ Cache line ไว้ในโปรแกรม เหมาะกับสถานการณ์ที่ให้ความสำคัญกับ “ประสิทธิภาพของ โปรแกรม” มากกว่า “Portability” ตัวอย่าง เช่น OS

39 Thanks You :-)


ดาวน์โหลด ppt นายพิสัณห์ ดวงจันทร์ รหัส

งานนำเสนอที่คล้ายกัน


Ads by Google