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

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

Chapter 4 Cache Memory -Computer Memory System Overview -Cache Memory Principles -Elements of Cache Design.

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


งานนำเสนอเรื่อง: "Chapter 4 Cache Memory -Computer Memory System Overview -Cache Memory Principles -Elements of Cache Design."— ใบสำเนางานนำเสนอ:

1 Chapter 4 Cache Memory -Computer Memory System Overview -Cache Memory Principles -Elements of Cache Design

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

3 Characteristics ที่เกี่ยวกับ Computer Memory System Location ( สถานที่ที่หน่วยความจำอยู่ ) -Internal (main) ( หน่วยความจำภายในเครื่องคอมพิวเตอร์ )เช่นจำพวก Register, Main Memory,Cache -External(secondary) (ติดต่อโดยผ่านหน่วยความคุม I/O) เช่นจำพวก Harddisk, FFD Capacity ( หน่วยความจำภายในมักใช้หน่วยเป็น Bit หรือ Word) -Word size เป็นขนาดของหน่วยความจำ โดยทั่วไปถ้าภายในเป็น bit ถ้าภายนอกเป็น byte โดยปกติ 1 word มีขนาด 8,16 หรือ 32 -Number of words Unit of transfer จำนวนของ bit ที่ อ่านหรือเขียนใน memory ณ หนึ่งหน่วยเวลา

4 Characteristics ที่เกี่ยวกับ Computer Memory System Access method เป็นวิธีการเข้าถึง Memory ด้วยวิธีต่างๆ เช่น -Sequential access(วิธีการเข้าถึง Mem แบบเรียงลำดับ)เช่น หน่วยบันทึกข้อมูลแบบเทปแม่เหล็ก -Direct access(เข้าถึงแบบตรง จะเปลี่ยนตำแหน่งจากตำแหน่ง ปัจจุบันไปเป็นตำแหน่งที่ต้องการ ทำให้ระยะเวลาที่ใช้ในการ เข้าถึงหน่วยความจำแต่ละครั้งอาจจะแตกต่างกัน เช่น disk ) -Random access การเข้าถึงหน่วยความจำแบบไม่มีลำดับ ระยะเวลาในการเข้าถึงเป็นอิสระ ดังนั้นจึงสามารถเลือกตำแหน่ง ใดๆ ในหน่วยความจำโดยไม่ต้องเรียงลำดับใด และสามารถ เข้าถึงตำแหน่งนั้นได้โดยตรงเช่น Main Memory -Associative หรือความเกี่ยวข้อง จัดว่าเป็นการเข้าถึง หน่วยความจำแบบ random access อย่างหนึ่งที่มีการ เปรียบเทียบข้อมูลบิตจำนวนหนี่ง เช่น Cache Memory

5 Characteristics ที่เกี่ยวกับ Computer Memory System Performance วิธีการวัดประสิทธิภาพ -Access time ระยะเวลาในการเข้าถึงหน่วยความจำ -Memory cycle time ระยะเวลาในการเข้าถึงหน่วยความจำ รวมกับระยะเวลาอื่นๆ ที่จำเป็นต้องใช้ -Transfer rate อัตราการถ่ายเทข้อมูลเข้าหรือออกจาก หน่วยความจำ

6 Physical type แบ่งออกตามลักษระทางกายภาพ - Semiconductor เช่น RAM - Magnetic เช่น Disk & Tape - Optical เช่น CD & DVD Characteristics ที่เกี่ยวกับ Computer Memory System

7 Memory Hierarchy ( ลำดับของ หน่วยความจำ ) Registers —In CPU Internal or Main memory —May include one or more levels of cache —“RAM” External memory —Backing store

8 ปัจจัยที่เกี่ยวข้องกับหน่วยความจำ How much? (Size) —Capacity How fast?(Speed) —Time is money How expensive?(Prize) องค์ประกอบที่สำคัญทั้ง 3 ประการคือ ราคา ปริมาณ และ ความเร็ว มีความสัมพันธ์กันดังนี้ - การเพิ่มความเร็วในการเข้าถึงข้อมูล จะทำให้หน่วยความจำราคาสูงขึ้น - ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้ราคาต่อหน่วยลดลง - ปริมาณหน่วยความจำเพิ่มขึ้น จะทำให้เสียเวลาในการเข้าถึง หน่วยความจำมากขึ้น

9 Memory Hierarchy - Diagram

10 ลำดับชั้นของ Memory ( เรียงจากเร็ว ที่สุดไปช้าที่สุด ) Registers L1 Cache L2 Cache Main memory จำพวก Ram, Rom Disk cache - ระหว่าง main memory กับ Megnetic disk ควรมี Disk cache เพื่อที่จะทำงานเร็วขึ้น Disk Optical Tape

11 Cache เนื่องจาก Main memory หรือ RAM (Random Access Memory) นั้นตามปกติจะมีความเร็วต่ำกว่า CPU อยู่มาก ดังนั้นถ้าใช้เฉพาะ Register กับ RAM ก็ จะมีผลทำให้คอมพิวเตอร์ทำงานได้ช้า จึงมีการวาง หน่วยความจำ Cache ซึ่งมีความเร็วกว่า RAM แต่ราคา แพงกว่า คั่นระหว่าง CPU กับ Main memory

12 Cache มี ความจุต่ำแต่ความเร็วสูง ทำงานอยู่ระหว่าง normal main memory and CPU อาจจะสร้างภายในตัว CPU เองหรืออุปกรณ์ภายนอกที่ มีความเร็วสูง

13 ตัวอย่างของการมี cache ความเร็ว cache = 10 ns ความเร็ว memory = 100 ns -ถ้าไม่มี Cache ถ้า 1 คำสั่งใช้เวลา 100ns สมมุติมี 100 คำสั่งจะใช้เวลา 100 * 100ns = 10000ns -ถ้ามี Cache จะได้ (10 * 10ns(ความเร็ว cache)) + (10 * 100ns(ความเร็วของ Memory)) = 1100 ซึ่งจะเห็นว่าเร็วกว่ากันประมาณ 10 เท่า

14 Cache operation ( ขั้นตอนการทำงาน ) - overview CPU ต้องการข้อมูลใน Main Memory Check ที่ cache ว่าข้อมูลที่ต้องการอยู่ใน cache หรือไม่ If มี ก็ส่งข้อมูลให้ CPU If ไม่มี, ก็ทำการอ่านข้อมูล จาก main memory ไป ยัง cache (อ่านเป็น block) Then deliver from cache to CPU

15 Cache operation ( ขั้นตอนการทำงาน )- สรุป โดยในระหว่างการทำงานของคอมพิวเตอร์จะมีการ อ่านโปรแกรมและข้อมูลบางส่วนจาก Main memory มาเก็บไว้ใน Cache เมื่อ CPU อ่านบาง word จาก Memory ก็จะมีการตรวจสอบว่า word ที่ต้องการนั้นอยู่ใน Cache หรือไม่ ถ้าอยู่ก็สามารถ อ่านไปได้อย่างรวดเร็ว แต่ถ้าไม่มีก็จะมีการอ่านทั้ง Block ที่มี word ที่ต้องการนั้นจาก Main memory เข้ามาวางไว้ใน Cache และส่ง Word นั้นให้ CPU โดยคาดว่าต่อไป CPU น่าจะอ่าน word อื่น ๆ ใน Block เดียวกันนั้น อัตราการที่ CPU สามารถพบ word ที่ ต้องการพบใน Cache เรียกว่า Hit Rate หรือ Cache Hit อัตราการที่ CPU ไม่สามารถพบเรียกว่า Miss Rate หรือ Cache Miss ดังนั้นคอมพิวเตอร์ที่ออกแบบระบบ Cache ดีก็จะ ทำให้มี Hit Rate สูง มีผลทำให้คอมพิวเตอร์ สามารถทำงานได้เร็วขึ้น

16 Size Cost ราคา —More cache is expensive Speed ความเร็ว —More cache is faster (up to a point) —Checking cache for data takes time - ถ้าใช้ Cache ขนาดเล็ก ราคาก็จะ ถูกและความเร็วสูงกว่า แต่จะได้อัตรา Cache hit ต่ำ - ถ้าใช้ Cache ขนาดใหญ่จะได้ อัตรา Cache hit สูงแต่วงจรจะช้าและ ราคาแพง - โดยทั่วไปถือว่าขนาดที่พอดีอยู่ ระหว่าง 1 K – 512 KWords

17 Cache Design ( ปัจจัยในการสร้าง Cache) Size (ขนาดของ cache) Mapping Function Replacement Algorithm Write Policy Block Size Number of Caches

18 Size ( ขนาดของ cache) โดยทั่วไปนักออกแบบต้องการให้ cache มีขนาดเพียง พอที่จะทำให้ราคาเฉลี่ยต่อบิตนั้นใกล้เคียงกับราคา ของหน่วยความจำหลัก และต้องการให้มีขนาดใหญ่เพียงพอ เพื่อให้ค่าเฉลี่ย ของเวลาในการเข้าถึงข้อมูลใกล้เคียงกับระยะเวลาใน การเข้าถึงข้อมูลของ cache ทำไมถึงไม่สร้าง cache ขนาดใหญ่ เพื่อความรวดเร็ว? คือขนาดที่ใหญ่ขึ้นของ Cache จะไปเพิ่มจำนวนของ gate ที่เกี่ยวข้องกับการค้นหาตำแหน่งข้อมูลใน Cache ทำให้ Cache ทำงานได้ช้าลง เนื้อที่บนแผงวงจรก็เป็นส่วนหนึ่งที่บังคับขนาดของ Cache ให้มีขนาดจำกัด

19 Mapping Function - Cache จะมีขนาดเล็กว่า main memory ดังนั้นจะต้องมีอัลกอริทึม ที่ต้อง map ข้อมูล จาก main memory ไปยัง cache - การ Mapping คือ การกำหนด ตำแหน่งหน่วยความจำของของ Main Memory ไปยัง Cache - ซึ่งมีวิธีการอยู่สามแบบ Direct, Associative และ Set Associative ดัง ตัวอย่างต่อไปนี้ สำหรับคอมพิวเตอร์ตัวอย่าง ที่ใช้มี สรุป พูดง่ายๆ คือเป็นการกำหนด ตำแหน่งหน่วยความจำไปยัง Cache Memory นั่นเอง เพราะถ้ากำหนดดี ประสิทธิภาพก็จะดีไปด้วย

20 ตัวอย่างจากโจทย์มี Cache มีขนาด 64kByte Cache block มีขนาด 4 bytes Main memory มีขนาด 16MBytes

21 ขั้นตอน Direct Mapping หา tag (เป็นตัวบอกตำแหน่งว่าเป็นกลุ่มไหนของ Main Memory) หาได้จาก เอาขนาดของ main memory/ขนาดของ cache memory ซึ่งจะได้ - 16 Mb/64Kb = 250 ตำแหน่งใน memory - จะได้ tag = 8 เนื่องจาก 2 8 อ้างได้ 256 ตำแหน่ง หา จำนวนสายหรือ bit ที่ใช้ในการอ้างถึง ซึ่งจะได้ = 24 เส้นหรือ bit เนื่องจาก Main memory มีขนาด 16Mb เพราะฉะนั้นจะได้ 2 24 = 16 Mb

22 จากนั้นนำมาเขียน Main Memory Address หา Word จากโจทย์บอกว่าแต่ละ line ใน cache มี ขนาด 4 byte เพราะฉะนั้น ในการอ้างว่าอยู่ byte ไหน จะใช้เพียง 2 bit คือ TagLine or SlotWord 8 142

23 สุดท้าย หา line หรือ slot โดยหาได้ 2 วิธีคือ 1.โดยเอา = 14 bit 2.โดยเอา 64k/4byte = 16k แล้วดูว่า 2 ยกกำลังอะไร ได้ 16k คือ = 14 นั่นเอง ก็จะได้ 14 bit 2 14 = 16 k ดังนั้นสามารถอ้างได้ 16k ของ cache หรือพูดง่ายๆ ว่า cache จะมีตำแหน่งอยู่ 16k ในแต่ละ line มีขนาด 4 byte ลองเอา 16k * 4 = 64 kb คือขนาดของ Cache จริงๆ (อ้างได้คือ fff)

24 สมมุติว่าต้องการข้อมูลมาเก็บที่ Cache โดยข้อมูลที่เรา ต้องการคือ เอา Block ที่ 3 เอา Line ที่ 15 Byte ที่ 2 เรา จะมีวิธีการอ้าง Main Memory Address เป็นเลขอะไร จะได้เป็น 03003Eh เวลาต้องการใช้งานก็อาจจะเรียก Ld A,03003Eh ซึ่งก็ หมายความว่าเป็นการเอาข้อมูลที่อยู่ใน Main Memory ใน Block ที่ 3 ของ Main Memory ในช่องที่ 15 และ Byte ที่ 2 นั่นเอง TagLine or SlotWord 8 142

25 ในบางครั้ง ตำแหน่งของ Cache กับ Main Memory อาจจะมีการเลื่อน Bit เล็กน้อย เช่นจากตัวอย่างจะเป็นการ เลื่อน 2 Bit (ซึ่งเป็นเหตุผลของทางบริษัท) Cache Memory FFF 4 byte สมมุติมีชุดคำสั่ง Load AC,8FFFC จะหมายความว่า ให้เอาข้อมูลที่อยู่ใน Cache memory ณ ตำแหน่ง 3FFF

26 Direct Mapping Address Structure Tag s-rLine or Slot rWord w bit address 2 bit word identifier (4 byte block) 22 bit block identifier —8 bit tag (=22-14) —14 bit slot or line

27 Direct Mapping Cache Organization

28 Direct Mapping Example

29 Direct Mapping Summary Address length = (s + w) bits Number of addressable units = 2 s+w words or bytes Block size = line size = 2 w words or bytes Number of blocks in main memory = 2 s+ w /2 w = 2 s Number of lines in cache = m = 2 r Size of tag = (s – r) bits

30 Direct Mapping Summary Simple Inexpensive Fixed location for given block —If a program accesses 2 blocks that map to the same line repeatedly, cache misses are very high วิธีการ Direct mapping มีราคาถูก และวงจรง่าย แต่ก็มีข้อเสียคือเป็นการ fix cache location สำหรับแต่ะละ block ดังนั้นถ้าเกิดมีการอ่านข้อมูลจาก 2 block ที่บังเอิญ map มาที่ slot เดียวกันก็จะมีการเปลี่ยนข้อมูลใน slot นั้นอยู่ตลอดเวลา มีผลทำให้ให้ค่า Hit Rate ต่ำ

31 Associative Mapping วิธีนี้ Memory จะไม่แบ่งเป็น block ดังเช่นวิธี direct ซึ่งวิธีนี้ cache memory จะใช้หน่วยความจำส่วนไหน ของ main memory ก็ได้ - ตัวอย่าง Cache มีขนาด 64 kByte Cache block มีขนาด 4 bytes Main memory มีขนาด 16MBytes

32 วิธีการหา หา tag (เป็นตัวบอกตำแหน่งว่าอยู่ตำแหน่งไหนของ Main Memory) หาได้จากขนาดของ Memory คือ 16 Mbyte = 2 24 ซึ่งจะได้ main memory address คือ 24 bit จากนั้นได้คือ คือ 24 – 2 bit word = 22 bit จาก 22 bit คือ => FFFFFC ดังนั้น cache memory มีตำแหน่ง ทั้งหมด  FFFFFC หรือ  3FFFFF จากนั้นนำมาเขียน Main Memory Address Tag 22 bit Word 2 bit

33 Fully Associative Cache Organization

34 Associative Mapping Example

35 Associative Mapping Summary Address length = (s + w) bits Number of addressable units = 2 s+w words or bytes Block size = line size = 2 w words or bytes Number of blocks in main memory = 2 s+ w /2 w = 2 s Number of lines in cache = undetermined Size of tag = s bits วิธีนี้จะใช้ส่วนไหนก็ได้ใน memory จน cache จะเต็มหมดซึ่งก็มีข้อดีในการ อ่าน block ใหม่เข้ามาไว้ใน cache แต่จะ ใช้วงจรมากกว่า

36 Set Associative Mapping เป็นการนำเอาข้อดีของทั้งแบบ Direct และ Associative Mapping มารวมกันไว้ในวิธีนี้ - แบ่งหน่วยความจำ Cache ออกเป็น r sets - แต่ะละ set มี k slots (lines) ตัวอย่าง - Cache มีขนาด 64 kByte Cache block มีขนาด 4 bytes Main memory มีขนาด 16MBytes ให้เป็นแบบ Two-way Set Associative Mapping

37 Two Way Set Associative Cache Organization ( แบ่งเป็น 2 กลุ่ม )

38 วิธีการหา - ดูโจทย์ว่าเป็นแบบไหน จากโจทย์บอกว่า เป็นแบบ 2-way set associative mapping แสดงว่าจะมี cache จำนวน 2 กลุ่ม ซึ่งจะได้ 8 k + 8 k ( กลุ่มละ 8k ช่อง ) - หา set จาก ขนาดของแต่ละกลุ่มของ cache คือ 2 13 = 8 k เพราะฉะนั้น set จะ มีขนาด 13 bit (Set ในที่นี้คือ Line นั่นเอง ) - หา word จาก cache block size คือ 4 byte ดังนั้น word จะมีขนาด 2 bit

39 วิธีการหา - หา tag ได้ 2 วิธี คือ ( Tag ในที่นี้คือ จำนวนกลุ่มใน Memory) 1. จาก ขนาด main memory คือ 16 M เพราะฉะนั้นจำนวน bit ทั้งหมด คือ 2 24 ซึ่งจะสามารถหา tag = จำนวน bit ทั้งหมด - set – word คือ = 9 bit 2. จากขนาด main memory คือ 16 M และขนาดของ Cache มีขนาด 64k แต่ โจทย์บอกว่าเป็นแบบ 2-way จะต้องเอา 64k/2 = 32k จากนั้น เอา ขนาดของ Memory/ ขนาดของ Cache = 16M/32k = 500 จากนั้น 2 ยกกำลังอะไรได้ ใกล้เคียงกับ 500 คือ 2 9 แสดงว่าจะใช้ ทั้งหมด 9 Bit

40 Set Associative Mapping Address Structure Tag 9 bit Set 13 bit Word 2 bit จะได้ Main Memory Address ดังนี้

41 Two Way Set Associative Mapping Example

42 Set Associative Mapping Summary Address length = (s + w) bits Number of addressable units = 2 s+w words or bytes Block size = line size = 2 w words or bytes Number of blocks in main memory = 2 d Number of lines in set = k Number of sets = v = 2 d Number of lines in cache = kv = k * 2 d Size of tag = (s – d) bits

43 Replacement Algorithms เมื่อมีการอ่านข้อมูล Block ใหม่มาจาก Memory เข้า มาวางไว้ใน Cache ก็จะต้องมีการลบ Block เดิมทิ้งไป วิธีการเลือกที่จะลบ block เดิมมีหลายวิธีได้แก่ - Least-recently used (LRU) ลบข้อมูลที่ถูกใช้งาน ล่าสุดออกไป -First-in-first-out (FIFO) ลบข้อมูลที่เข้ามาก่อน ออกไปก่อน -Least-frequency-used (LFU) ลบข้อมูลที่มีการใช้ งานน้อยที่สุดออกไป -Random สุ่มเอา

44 Write Policy นโยบายการบันทึกหน่วยความจำหลัก ก่อนจะทำการลบข้อมูลใน block หรือก่อนที่จะถูกแทนที่ด้วย ข้อมูลบล็อกใหม่ จำเป็นต้องตรวจสอบว่าข้อมูลบล็อกนั้น เปลี่ยนแปลงไปแล้วหรือไม่ ถ้ามีจะต้องมีการปรับปรุงข้อมูลจาก Cache ไปยัง Main Memory ก่อน วิธีการที่ง่ายที่สุดเป็นการบันทึกข้อมูลลงในหน่วยความจำ ในทันทีหรือ Write Through ทุกครั้งที่มีการบันทึกข้อมูลลงใน cache ก็จะถูกบังคับให้เกิดการบันทึกลงในหน่วยความจำทันที เพื่อเป็นการรับรองว่าข้อมูลใน cache และ Main Memory เท่ากันเสมอข้อเสียคือทำให้เกิดการส่งข้อมูลบ่อยครั้งทำให้เกิด ปัญหาคอขวด อีกวิธีคือ Write Back เป็นวิธีการบันทึกข้อมูลในภายหลังช่วย ลดจำนวนครั้งในการบันทึกข้อมูลลงใน Main Memory ให้เหลือ น้อยที่สุด

45 Pentium 4 Cache – no on chip cache – 8k using 16 byte lines and four way set associative organization Pentium (all versions) – two on chip L1 caches —Data & instructions Pentium 4 – L1 caches —8k bytes —64 byte lines —four way set associative L2 cache —Feeding both L1 caches —256k —128 byte lines —8 way set associative


ดาวน์โหลด ppt Chapter 4 Cache Memory -Computer Memory System Overview -Cache Memory Principles -Elements of Cache Design.

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


Ads by Google