Transcript Document

Cache
1
หน่วยความจาในระบบคอมพิวเตอร์

หน่วยความจาในระบบคอมพิวเตอร์ มีการจัดโครงสร้างเป็ นลาดับชั้นดังนี้




รี จิสเตอร์ภายในโปรเซสเซอร์ : ระดับชั้นสูงสุ ด (อยูใ่ กล้โปรเซสเซอร์มากที่สุด)
หน่วยความจา cache หนึ่งหรื อสองระดับ ซึ่งถ้ามีหลายระดับมักจะเรี ยกว่า
cache ระดับ L1, L2, …
หน่วยความหลัก : มักสร้างมาจาก DRAM(Dynamic Random
Access Memory)
โดยทัว่ ไปตาแหน่งการอ้างอิงข้อมูลในหน่วยความจาหลักโดยโปรเซสเซอร์ น้ นั
มักจะเป็ นตาแหน่งเดิม ดังนั้นหน่วยความจา cache มักจะคัดลอกข้อมูลใน
หน่วยความจาหลักที่เคยถูกอ้างอิงไปแล้วเอาไว้ ซึ่ งถ้าการทางานของ cache
ได้รับการออกแบบเป็ นอย่างดีแล้ว เวลาส่ วนใหญ่โปรเซสเซอร์ กจ็ ะเรี ยกใช้ขอ้ มูลที่
อยูใ่ น cache เป็ นส่ วนมาก
2
คุณลักษณะของระบบหน่วยความจา

ความซับซ้อนของระบบหน่วยความจาสามารถทาให้เข้าใจได้ง่ายขึ้น ด้วยการอธิบาย
คุณลักษณะที่สาคัญของระบบหน่วยความจา ดังตารางด้านล่าง
Location
Processor
Internal (main)
External (secondary)
Capacity
Word size
Number of words
Unit of Transfer
Word
Block
Access Method
Sequential
Direct
Random
Associative
Performance
Access time
Cycle time
Transfer rate
Physical Type
Semiconductor
Magnetic
Optical
Magneto-optical
Physical Characteristics
Volatile/nonvolatile
Erasable/nonerasable
Organization
3
คุณลักษณะของระบบหน่วยความจา
Location(สถานที่) : หมายความถึงสถานที่ที่หน่วยความจาอยู่ นัน่ คืออยู่
ภายในหรื อภายนอกเครื่ องคอมพิวเตอร์ internal memory หมายถึง
หน่วยความจาหลัก(main memory), cache นอกจากนี้กย็ งั มี
register ซึ่ งอยูภ่ ายในโปรเซสเซอร์ ส่ วน external memory คือ
หน่วยความจาภายนอก เช่น ดิสก์, เทป
 Capacity(ความจุ) : สาหรับหน่วยความจาภายใน ความจุจะใช้หน่วยเป็ น
byte หรื อ word โดยปกติ 1 word มีขนาด 8, 16, 32 bit ส่ วน
หน่วยความจาภายนอกนิ ยมแสดงความจุในหน่วยของ byte
 Unit of transfer(หน่วยในการถ่ายข้อมูล) : สาหรับหน่วยความจาภายใน
หน่วยในการถ่ายข้อมูลเท่ากับ จานวนสายสัญญาณข้อมูลเข้าสู่ และออกจาก
หน่วยความจา โดยปกติจะมีขนาดเท่ากับความยาวของ word แต่อาจจะมีขนาด
ใหญ่กว่าก็ได้เช่น 64,128,256 บิต

4
คุณลักษณะของระบบหน่วยความจา

Access method(วิธีการเข้าถึงหน่วยความจา) มีรายละเอียดดังนี้


Sequential access: การเข้าถึงหน่วยความจาแบบเรี ยงลาดับ ใช้สาหรับ
หน่วยความจาที่มีโครงสร้างประกอบด้วยหน่วยต่าง ๆ ซึ่งเรี ยกว่า record การเข้า
ไปอ่านหรื อบันทึกข้อมูลจะต้องกระทาเรี ยงตามลาดับ ข้อมูลเกี่ยวกับตาแหน่งที่อยูถ่ กู
นามาใช้ในการแยกตาแหน่งแต่ละ record ออกจากกัน และช่วยในการ
กระบวนการอ่านข้อมูล ตัวอย่างการเข้าถึงหน่วยความจาแบบนี้ได้แก่ เทปแม่เหล็ก
Direct access: การเข้าถึงหน่วยความจาแบบตรง กระบวนการนี้สามารถ
เปลี่ยนตาแหน่งที่อยูใ่ นปั จจุบนั ไปเป็ นตาแหน่งที่ตอ้ งการ โดยข้ามระเบียนข้อมูลที่อยู่
ระหว่างกลางไป ตัวอย่างได้แก่ ดิสก์
5
คุณลักษณะของระบบหน่วยความจา


Random access: การเข้าถึงหน่วยความจาแบบไม่มีลาดับ แต่ละตาแหน่งใน
หน่วยความจาจะต้องมีกลไกในการกาหนดตาแหน่งเฉพาะที่ไม่มีการซ้ ากัน ระยะเวลาที่
ใช้ในการเข้าถึงแต่ละหน่วยนั้นเป็ นอิสระจากลาดับการเข้าถึงหน่วยความจาที่เกิดขึ้นก่อน
หน้านี้ และใช้ระยะเวลาเท่ากันเสมอ ดังนั้นจึงสามารถเลือกตาแหน่งใดๆ ใน
หน่วยความจาได้โดยไม่ตอ้ งเรี ยงลาดับใด และสามารถเข้าถึงตาแหน่งนั้นได้โดยตรง
ตัวอย่างคือ หน่วยความจาหลัก(main memory)
Associative: หรื อความเกี่ยวข้อง จัดว่าเป็ นการเข้าถึงหน่วยความจาแบบ
random access อย่างหนึ่งที่มีการเปรี ยบเทียบข้อมูลบิตจานวนหนึ่ง(ที่กาหนด
ตาแหน่งไว้ล่วงหน้า) กับ word ที่เป็ นตัวเลือกจานวนหนึ่ง (กาหนดไว้ล่วงหน้า
เช่นกัน) เพื่อค้นหาตาแหน่งที่สอดคล้องกัน ดังนั้น word ที่ได้รับจึงเกิดขึ้นจากการ
ค้นหาข้อมูลใน word แทนที่จะเป็ นตาแหน่งของ word นั้น ๆ การทางานอื่นมี
ลักษณะแบบเดียวกับ random access คือเวลาที่ใช้ในการเข้าถึงข้อมูลนั้นคงที่
และไม่ข้ ึนอยูก่ บั การเข้าถึงข้อมูลในครั้งก่อนหน้า ตัวอย่างคือ หน่วยความจา cache6
คุณลักษณะของระบบหน่วยความจา

Performance: ประสิ ทธิ ภาพ ซึ่ งแบ่งการวัดเป็ นสามเรื่ อง ดังนี้


Access time (latency): สาหรับหน่วยความจาแบบ random
access memory ระยะเวลาในการเข้าถึงหน่วยความจา หมายถึง ระเวลาที่ใช้ใน
การอ่านหรื อบันทึกข้อมูลคือ ระยะเวลานับตั้งแต่ที่ตาแหน่งข้อมูลได้ถูกส่ งมาถึง
หน่วยความจา จนกระทัง่ ข้อมูลได้ถูกบันทึก สาหรับหน่วยความจาแบบอืน่ ที่ไม่ใช่
random access memory จะหมายถึง ระยะเวลาที่เคลื่อนย้ายกลไกในการ
อ่านหรื อบันทึกข้อมูลไปยังตาแหน่งข้อมูลที่ตอ้ งการ
Memory cycle time: ใช้กบั หน่วยความจาแบบ random access
memory ระยะเวลาวงรอบหน่วยความจาประกอบด้วย ระยะเวลาในการเข้าถึง
หน่วยความจา (access time) รวมกับระยะเวลาอื่น ๆ ที่จาเป็ นต้องใช้ จนถึงเวลา
ที่จะเกิดการอ่านหรื อบันทึกข้อมูลในครั้งต่อไป ระยะเวลาอื่นที่ตอ้ งใช้เช่น ระยะเวลาที่รอ
ให้สญ
ั ญาณต่าง ๆ เข้าสู่สถานะเสถียร และระยะเวลาที่ตอ้ งรอให้สญ
ั ญาณเดิมหายไป
(สายสัญญาณเข้าสู่สถานะว่าง หรื อ idle)
7
คุณลักษณะของระบบหน่วยความจา

Transfer rate: อัตราการถ่ายเทข้อมูล หมายถึง อัตราที่ขอ้ มูลถูกถ่ายทอดเข้า
สู่หรื อออกจากหน่วยความจา สาหรับหน่วยความจาแบบ random access
memory ระยะเวลานี้เท่ากับ 1/cycle time สาหรับหน่วยความจาแบบ
อื่นระยะเวลานี้จะเท่ากับ
TN = TA + (N/R)
TN = ระยะเวลาโดยเฉลี่ยในการอ่านหรื อบันทึกข้อมูล N บิต
TA = ระยะเวลาเข้าถึงข้อมูลโดยเฉลี่ย
N = จานวนบิตข้อมูล
R = อัตราการถ่ายเทข้อมูล มีหน่วยเป็ นบิตต่อวินาที
8
คุณลักษณะของระบบหน่วยความจา

Physical type: หน่วยความจาอาจแบ่งออกตามลักษณะทางกายภายได้แก่
หน่วยความจาเซมิคอนดักเตอร์(semiconductor), หน่วยความจาแบบผิว
ฉาบด้วยสารแม่เหล็ก(magnetic surface memory) ซึ่ งใช้ดิสก์
และเทปมาเป็ นหน่วยความจา, การใช้อุปกรณ์ optic และ magnetooptic มาเป็ นหน่วยความจา

Physical characteristic: คุณสมบัติทางกายภาพของอุปกรณ์บนั ทึก
ข้อมูลนั้นมีความสาคัญต่อการใช้งานอย่างมาก ในหน่วยความจาที่เป็ นแบบไม่
ถาวร(volatile) นั้นจะสู ญเสี ยข้อมูลที่บนั ทึกอยูใ่ นทันทีที่ถกู ตัดพลังงานไฟฟ้ า
ส่ วนหน่วยความจาแบบถาวร(non-volatile) จะสามารถบันทึกข้อมูลไว้ได้
ตลอดเวลา หน่วยความจาแบบผิวฉาบสารแม่เหล็กเป็ นตัวอย่างของ nonvolatile ส่ วนเซมิคอนดักเตอร์ น้ นั เป็ นได้ท้ งั volatile และ nonvolatile ขึ้นอยูก่ บั วัตถุประสงค์ในตอนผลิต
9
โครงสร้างลาดับชั้นของหน่วยความจา

เงื่อนไขสาคัญของการออกแบบหน่วยความจา คือ ราคา ปริ มาณ และเวลาการเข้าถึง
หน่วยความจา ซึ่ งเงื่อนไขทั้งสามประการนี้มีความสัมพันธ์กนั ดังนี้




การเพิ่มความเร็ วในการเข้าถึงข้อมูล จะทาให้หน่วยความจามีราคาสูงขึ้น
ปริ มาณหน่วยความจาเพิ่มขึ้น จะทาให้ราคาต่อหน่วยลดลง
ปริ มาณหน่วยความจาเพิ่มขึ้น จะทาให้เสี ยเวลาในการเข้าถึงข้อมูลในหน่วยความจามาก
ขึ้น
หนทางในการแก้ปัญหาความซับซ้อนนี้ สามารถทาได้โดยการใช้เทคโนโลยี
หน่วยความจาหลายแบบมาผสมกันเป็ นโครงสร้างลาดับชั้นของหน่วยความจา ดัง
โครงสร้างดังรู ปหน้าถัดไป เมื่อพิจารณาหน่วยความจาที่อยูใ่ นระดับบนลงล่างจะพบว่า
(a) มีราคาต่อบิตต่าลง
(c) ใช้เวลาในการเข้าถึงข้อมูลนานขึ้น
(b) มีปริ มาณมากขึ้น
(d) มีการติดต่อกับโปรเซสเซอร์ลดลง
10
โครงสร้างลาดับชั้นของหน่วยความจา

จากรู ปโครงสร้างจะเห็นได้วา่ หน่วยความจาราคาแพงซึ่ งมีความเร็ วสู งใน
ระดับบนจะถูกแทนที่ดว้ ยหน่วยความจาราคาถูก ปริ มาณมาก และทางานได้ชา้ ลง
ในระดับล่าง กุญแจสาคัญของความสาเร็ จของโครงสร้างลาดับชั้นนี้คือ คุณสมบัติ
ในข้อ (d) นัน่ คือการลดการติดต่อกับหน่วยความจาในระดับล่างให้เหลือน้อย
ที่สุด
11
โครงสร้างลาดับชั้นของหน่วยความจา
Average access time
T1 + T2
Inboard
memory
Outboard
storage
Off-Line
storage
Registers
Cache
Main
memory
T2
T1
0
1
Fraction of accesses involving only level 1 (hit ratio)
Magnetic disk
CD-ROM
CD-RW
DVD-RW
DVD-RAM
ประสิ ทธิภาพของหน่วยความจา 2 ระดับ
Magnetic tape
12
โครงสร้างลาดับชั้นของหน่วยความจา
สมมติวา่ โปรเซสเซอร์ สามารถอ้างอิงถึงหน่วยความจาสองระดับ ระดับที่ 1
ประกอบด้วยหน่วยความจาจานวน 1000 words ซึ่ งมีระยะเวลาในการเข้าถึง
ข้อมูล 0.01 ไมโครวินาที หน่วยความจาระดับที่ 2 ประกอบด้วยหน่วยความจา
จานวน 100000 words ซึ่ งมีระยะเวลาในการเข้าถึงข้อมูล 0.1 ไมโครวินาที
 ถ้าโปรเซสเซอร์ ตอ้ งการข้อมูล 1 word จากหน่วยความจาในระดับที่ 1 ก็สามารถ
ทาได้ทนั ที แต่ถา้ ข้อมูลนั้นอยูใ่ นหน่วยความจาระดับที่ 2 ข้อมูลนั้นจะต้องถูกคัดลอก
ไปไว้ที่หน่วยความจาระดับที่ 1 ก่อน จากนั้นโปรเซสเซอร์ จึงจะนาข้อมูลไปใช้ได้
 จากกราฟแสดงให้เห็นถึงความสัมพันธ์ของเหตุการณ์ที่สมมุติข้ ึนมานี้ ในรู ปเป็ น
ระยะเวลาโดยเฉลี่ยของการเข้าถึงหน่วยความจา (average access time)
ในรู ปฟังก์ชนั ของอัตราการอ้างอิงข้อมูลในหน่วยความจาระดับที่ 1 (hit ratio)
โดยที่

13
โครงสร้างลาดับชั้นของหน่วยความจา
H = สัดส่ วนของการอ้างอิงหน่วยความจา ที่สามารถพบข้อมูลที่ตอ้ งการใน
หน่วยความจาระดับที่ 1
T1 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจาระดับที่ 1
T2 = ระยะเวลาในการเข้าถึงข้อมูลที่หน่วยความจาระดับที่ 2
จะเห็นได้วา่ ถ้าการอ้างอิงหน่วยความจาในระดับที่ 1 มีเปอร์เซ็นต์สูงขึ้น ค่าเฉลี่ย
โดยรวมของระยะเวลาในการอ้างอิงหน่วยความจา จะมีค่าใกล้เคียงกับระยะเวลาที่ใช้ใน
การอ้างอิงหน่วยความจาระดับที่ 1
 จากตัวอย่างที่สมมติข้ ึน ถ้า 95% ของการอ้างอิงทั้งหมด เกิดขึ้นในหน่วยความจา
ระดับที่ 1 แล้ว ค่าเฉลี่ยของระยะเวลาในการอ้างอิงข้อมูลจะเป็ น

(0.95)(0.01s) + (0.05)(0.1 s+0.01s) = 0.0095+0.0055
= 0.015 s
14
โครงสร้างลาดับชั้นของหน่วยความจา
ในตัวอย่างข้างต้น ค่าเฉลี่ยในการเข้าถึงหน่วยความจามีค่าใกล้เคียงกับ 0.01 s
มากกว่า 0.1 s ตามที่ตอ้ งการ
 การใช้หน่วยความจาสองระดับ ช่วยลดระยะเวลาในการเข้าถึงหน่วยความจาได้
ในทางพื้นฐานเมื่อเงื่อนไข (a) ถึง (d) เป็ นจริ ง การทาเทคโนโลยีต่าง ๆ มา
ประยุกต์ใช้จะทาให้เกิดความหลากหลายที่จะทาให้เงื่อนไข (a) ถึง (c) เป็ นจริ ง
ส่ วนเงื่อนไข (d) นั้นมักจะเป็ นจริ งได้โดยอัตโนมัติ
ั ระบบที่มีหน่วยความจาหลายระดับ
 ความสัมพันธ์น้ ี สามารถนาไปใช้ได้กบ
หน่วยความจาที่ทางานเร็ วที่สุด มีขนาดเล็กที่สุด และมีราคาแพงทีส่ ุ ดก็คือ รี จิสเตอร์
ซึ่ งอยูใ่ นตัวโปรเซสเซอร์ โดยทัว่ ไปโปรเซสเซอร์ จะมีรีจิสเตอร์ ประมาณ 20-30
ตัว ในขณะที่บางเครื่ องอาจมีมากนับร้อยตัวก็ได้

15
โครงสร้างลาดับชั้นของหน่วยความจา
เลื่อนลงมาสองระดับจะเป็ นหน่วยความจาหลัก(main memory) ซึ่ งเป็ น
หน่วยความจาที่ถกู นามาใช้งานทัว่ ไปในเครื่ องคอมพิวเตอร์ ข้อมูลแต่ละตาแหน่ง
ในหน่วยความจาหลักจะมี address เฉพาะเป็ นของตัวเอง หน่วยความจาหลัก
มักจะเชื่อมต่อเข้ากับหน่วยความจาขนาดเล็ก ที่มีความเร็ วสู งกว่ามากเรี ยกว่า
หน่วยความจา cache
 หน่วยความจา cache มักจะเป็ นส่ วนที่ถกู ซ่ อนเอาไว้จากผูเ้ ขียนโปรแกรม หรื อ
แม้กระทัง่ ตัวโปรเซสเซอร์ เอง คือจะทางานโดยอัตโนมัติ แต่จะสั่งการให้ทางาน
ตามที่ตอ้ งการโดยตรงไม่ได้
 หน่วยความจา cache ทาหน้าที่เป็ นเสมือน buffer เล็ก ๆ ระหว่าง
หน่วยความจาหลักกับรี จิสเตอร์ ในโปรเซสเซอร์ ซึ่ งมีวตั ถุประสงค์เพื่อเพิ่ม
ประสิ ทธิ ภาพการทางานของหน่วยความจาหลักโดยตรง

16
ลักษณะพื้นฐานของหน่วยความจา Cache
หน่วยความจา cache สร้างขึ้นมาด้วยวัตถุประสงค์ที่จะให้เป็ นหน่วยความจาที่
ทางานได้เร็ วที่สุดเท่าที่เทคโนโลยีดีที่สุดในขณะนั้นจะทาได้ ในเวลาเดียวกันก็
ต้องการให้มีขนาดใหญ่ที่สุดในราคาที่ไม่แพงจนเกินไปนัก ดังแสดงในรูปด้านล่าง
ในเครื่ องคอมพิวเตอร์ มีหน่วยความจาหลักที่มีความเร็ วต่า (เมื่อเปรี ยบเทียบกับ
ความเร็ วของซี พีย)ู มีปริ มาณมาก
 โดยปกติหน่วยความจา cache จะเก็บสาเนาของข้อมูลบางส่ วนในหน่วยความจา
หลักเอาไว้ เมื่อโปรเซสเซอร์ ตอ้ งการอ่านข้อมูลจานวนหนึ่ ง word ใน
หน่วยความจา ข้อมูลส่ วนนั้นจะถูกตรวจสอบว่ามีอยูใ่ น cache หรื อไม่ ถ้ามีอยูก่ ็
จะนาข้อมูลใน cache ไปใช้ ถ้าไม่มีกจ็ ะเกิดการคัดลอกสาเนาข้อมูลหนึ่งบล็อก
จากหน่วยความจาหลักมายัง cache แล้วจึงนา word ที่ตอ้ งการส่ งต่อไปให้
โปรเซสเซอร์ในภายหลัง

17
ลักษณะพื้นฐานของหน่วยความจา Cache
Word transfer
CPU
Block transfer
Cache
Main memory
หน่ วยความจา cache และหน่ วยความจาหลัก
18
ลักษณะพื้นฐานของหน่วยความจา Cache

เนื่องจากปรากฏการณ์การอ้างอิงในพื้นที่เดียวกัน (locality of reference)
จะทาให้การอ้างอิงข้อมูลในหน่วยความจาครั้งต่อๆไป เป็ นการอ้างอิงที่เดิม หรื อที่
ตาแหน่งใกล้เคียงจุดเดิม

ดังนั้นการคัดลอกข้อมูลหนึ่งบล็อกจากหน่วยความจาหลักมายัง cache จะสามารถ
ถูกนามาใช้งานได้ในระยะหนึ่ ง ก่อนที่จะมีการคัดลอกข้อมูลในครั้งต่อไป

รู ปด้านล่างแสดงโครงสร้างของหน่วยความจา cache และหน่วยความจาหลัก
หน่วยความจาหลักประกอบด้วย ที่เก็บข้อมูลจานวน 2n words ที่สามารถถูก
อ้างอิงได้ โดยที่แต่ละ word จะมีหลายเลขที่อยูเ่ ป็ นเลขฐานสองจานวน n-bit
เป็ นหมายเลขเฉพาะของตัวเอง
19
ลักษณะพื้นฐานของหน่วยความจา Cache
Line
number
0
1
2
Tag
Block
Memory
address
0
1
2
.
.
.
.
Block
(K words)
3
.
.
.
.
C-1
Block length
(K words)
(a) Cache
Block
โครงสร้ างของหน่ วยความจา cache
และหน่ วยความจาหลัก
2n -1
Word
length
(b) Main memory
20
ลักษณะพื้นฐานของหน่วยความจา Cache
กล่าวอีกนัยหนึ่ง คือ หน่วยความจาหลักประกอบด้วยบล็อกที่เก็บข้อมูลขนาด Kword จานวนหนึ่งนัน่ คือมีจานวนบล็อก(M) เท่ากับ M = 2n/K บล็อกนัน่ เอง
 ส่ วน cache นั้นประกอบด้วยช่องสัญญาณจานวน C ช่องโดยที่แต่ละช่องมี
ขนาด K words และจานวนช่องสายสัญญาณนั้น น้อยกว่าจานวนบล็อกใน
หน่วยความจาหลักเป็ นอย่างมา (C < M)
 ในเวลาใดก็ตามข้อมูลจานวนหลายบล็อกจากหน่วยความจาหลัก จะถูกคัดลอกสาเนา
มาเก็บไว้ที่ช่องสัญญาณใน cache ถ้าข้อมูลใน word ของบล็อกหนึ่งถูก
เรี ยกใช้โดยโปรเซสเซอร์ ข้อมูลทั้งบล็อกนั้นจะถูกถ่ายโอนมาไว้ที่ cache
เนื่องจากหน่วยความจาหลักมีจานวนบล็อกมากกว่าช่องสัญญาณใน cache
ช่องสัญญาณแต่ละช่องจึงไม่ได้กาหนดไว้สาหรับบล็อกใด ทาให้ช่องสัญญาณแต่ละ
ช่องต้องมีป้ายบอกว่าข้อมูลมาจากบล็อกใด

21
ลักษณะพื้นฐานของหน่วยความจา Cache

รู ป (a) แสดงขั้นตอนในกระบวนการอ่านข้อมูล โปรเซสเซอร์ สร้างตาแหน่งที่
อยูข่ องข้อมูลที่ตอ้ งการอ่าน เรี ยกว่า RA ถ้าข้อมูล word นั้นมีอยูใ่ น
cache อยูแ่ ล้ว ก็จะถูกนาส่ งโปรเซสเซอร์ ทาการประมวลผลต่อไป มิฉะนั้น
บล็อกในหน่วยความจาหลักที่มีขอ้ มูล word นี้อยูก่ จ็ ะถูกคัดลอกสาเนาเข้ามา
ใส่ ไว้ใน cache และถูกนาส่ งโปรเซสเซอร์ ต่อไป จากรู ปแสงให้เห็นขั้นตอน
ต่าง ๆ ที่เกิดขึ้น เป็ นโครงสร้างของส่ วนประกอบภายใน
รู ป (b) เป็ นโครงสร้างที่ใช้กบั cache ที่มีใช้งานทัว่ ไป ในโครงสร้างนี้
cache เชื่อมต่อกับโปรเซสเซอร์ ผา่ นสาย data bus, address
bus, control bus สาย data bus และ สาย address bus
จะเชื่อมต่อเข้ากับบัฟเฟอร์ ซึ่ งเชื่อมต่อเข้ากับสายบัสหลักของระบบที่นาไปสู่
หน่วยความจาหลัก
22
ลักษณะพื้นฐานของหน่วยความจา Cache
START
(a) การอ่ านข้ อมูลจากหน่ วยความจา
cache
Receive address
RA from CPU
Is block containing
RA in cache?
No
Access main
memory for block
containing RA
Yes
Fetch RA word and
deliver
To CPU
Allocate cache line
for main memory
block
Load main memory
block into cache line
Deliver RA word to
CPU
DONE
23
ลักษณะพื้นฐานของหน่วยความจา Cache
Address
Control
Processor
Control
Cache
System bus
Address
buffer
Data
buffer
Data
โครงสร้ างหน่ วยความจา cache โดยทัว่ ไป
24
ลักษณะพื้นฐานของหน่วยความจา Cache

เมื่อสามารถค้นพบข้อมูลที่ตอ้ งการใน cache (cache hits) บัฟเฟอร์
สาหรับข้อมูลและตาแหน่งข้อมูลจะถูกสั่งไม่ให้ทางาน(disable) และการสื่ อสาร
จะเกิดขึ้นระหว่างโปรเซสเซอร์ กบั cache โดยไม่มีการใช้บสั หลักด้วย

แต่ถา้ ไม่สามารถหาข้อมูลใน cache ได้(cache miss) ตาแหน่งข้อมูลที่
ต้องการจะถูกส่ งเข้าไปในบัสหลัก ข้อมูลในหน่วยความจาหลักจะถูกส่ งมาที่บฟั เฟอร์
และจากบัฟเฟอร์ ส่งไปยังโปรเซสเซอร์ และส่ งเข้าไปเก็บไว้ใน cache

ในบางโครงสร้าง cache จะถูกวางคัน่ กลางไว้ระหว่างโปรเซสเซอร์ และ
หน่วยความจาหลัก ซึ่ งจะวางทับ data bus, address bus, control
bus ไว้ท้ งั หมด ดังนั้นเมื่อเกิดกรณี cache miss ข้อมูลจากหน่วยความจา
หลักจะถูกส่ งมาที่ cache ก่อน แล้วจึงถูกส่ งต่อไปยังโปรเซสเซอร์ ในลาดับหลัง
25
องค์ประกอบในการออกแบบ Cache





ต้องมีขนาดเล็กเพียงพอที่จะทาให้ราคาเฉลี่ยต่อบิตนั้นใกล้เคียงกับราคาของ
หน่วยความจาหลัก
และต้องมีขนาดใหญ่เพียงพอ เพื่อให้ค่าเฉลี่ยของเวลาในการเข้าถึงข้อมูลใกล้เคียง
กับระยะเวลาในการเข้าถึงข้อมูลของ cache
ขนาดที่ใหญ่ข้ ึนของ cache จะไปเพิม่ จานวนของ gates ที่เกี่ยวข้องกับการ
ค้นหาตาแหน่งข้อมูลใน cache ผลที่เกิดขึ้นทาให้ cache มีขนาดใหญ่ข้ ึน
ซึ่ งจะทาให้ cache ทางานได้ชา้ ลง
เนื้อที่บนแผงวงจรก็เป็ นส่ วนหนึ่ งที่บงั คับขนาดของ cache ให้มีขนาดที่จากัด
ขนาดของ cache บนคอมพิวเตอร์ ชนิดต่าง ๆ จึงต้องสัมพันธ์กบั การใช้งานกับ
โปรเซสเซอร์ ชนิดต่าง ๆ ด้วย
26
ขนาดของ cache ในโปรเซสเซอร์ชนิดต่าง ๆ
Processor
Type
Year
L1 cache
L2 cache
L3 cache
IBM 360/85
Mainframe
1968
16 to 32 KB
N
N
PDP-11/70
Minicomputer
1975
1 KB
N
N
VAX 11/780
Minicomputer
1978
16 KB
N
N
IBM 3033
Mainframe
1978
64 KB
N
N
IBM 3090
Mainframe
1985
128 to 256
KB
N
N
Intel 80486
PC
1989
8 KB
N
N
Pentium
PC
1993
8 KB
256 to 512
KB
N
PowerPC
G4
PC/Server
1999
32 KB
256 KB to 1
MB
2 MB
Itanium
PC/Server
2001
16 KB
96 KB
4 MB
27
องค์ประกอบในการออกแบบ Cache
Cache Size
Mapping Function
Direct
Associative
Set associative
Replacement Algorithm
Least recently used (LRU)
First in first out (FIFO)
Least frequently used (LFU)
Random
Write Policy
Write through
Write back
Line Size
Number of caches
Single or two level
Unified or split
28
Mapping Function
เนื่องจาก cache มีช่องสัญญาณน้อยกว่าจานวนบล็อกในหน่วยความจา จึง
จาเป็ นต้องมีอลั กอริ ทึม สาหรับการกาหนดตาแหน่งหน่วยความจาของแต่ละบล็อก
ไปยังช่องสัญญาณใน cache เรี ยกว่า Mapping
 นอกจากนี้ ยงั ต้องมีวธิ ี การสาหรับการตรวจสอบว่าบล็อกใดที่ยงั คงถูกเก็บไว้ใน
ช่องสัญญาณ cache
 วิธีการกาหนดตาแหน่งหน่วยความจาไว้ในช่องสัญญาณ cache หรื อ
Mapping จะเป็ นสิ่ งที่บอกให้ทราบถึงวิธีการวางโครงสร้างภายใน cache
ซึ่ งนิยมใช้สามวิธีคือ




Direct mapping
Associative mapping
Set associative mapping
29
Mapping Function
เพื่อเป็ นการเปรี ยบเทียบการทางานของโครงสร้างทั้งสามแบบจึงกาหนด ตัวอย่าง
ดังนี้
 ขนาดของ cache เป็ น 64 Kbytes
 การถ่ายเทข้อมูลระหว่างหน่วยความจาหลักกับ cache กระทาครั้งละหนึ่ ง
บล็อก ซึ่ งมีขนาด 4 bytes หมายความว่า จานวนช่องสัญญาณใน cache
นั้นเท่ากับ 16K ช่อง (16K x 4 = 64 Kbytes)
 หน่วยความจาหลักมีขนาด 16 Mbytes ซึ่ งใช้วธิ ี การกาหนดตาแหน่งข้อมูล
โดยใช้เลขฐานสองขนาด 24 บิต (224 = 16M) ดังนั้นเพื่อการกาหนด
ตาแหน่งบล็อกข้อมูลไปยัง cache จึงถือว่าหน่วยความจาหลักมีขนาด 16M
บล็อก บล็อกละ 4 bytes

30
Direct Mapping

การจัดโครงสร้างภายใน cache แบบที่ง่ายที่สุดเป็ นแบบ Direct
mapping ซึ่ งจะกาหนดตาแหน่งของแต่ละบล็อกไว้ที่ตาแหน่งช่องสัญญาณ
cache ที่เดิมเสมอ ไม่มีการเปลี่ยนแปลง รู ป direct mapping แสดงกลไก
การทางานทัว่ ไป ซึ่ งสามารถอธิ บายด้วยรู ปแบบฟังก์ชนั ทางคณิ ตศาสตร์ ดังนี้
i = j modulo m
เมื่อ
i
คือ หมายเลขช่องสัญญาณ cache
j
คือ หมายเลขบล็อก
m
คือ จานวนช่องสัญญาณของ cache
31
Direct Mapping
s+w
Cache
Memory address
Tag
Tag
s-r
Line
r
Data
W0
Word
W1
W2
L0
w
s-r
Compare
Main
memory
X
(Hit in cache)
W3
.
.
.
.
.
.
.
.
Li
w
B0
X
s
w
W4j
W(4j + 1)
W(4j + 2)
Bj
W(4j + 3)
.
.
.
.
.
.
.
.
Lm-1
(Miss in cache)
โครงสร้างหน่วยความจา cache แบบ direct-mapping
32
Direct Mapping

การคานวณให้พิจารณาว่า ตาแหน่งของข้อมูลในหน่วยความจาประกอบขึ้นด้วย 3
ส่ วน


บิตด้านขวามือสุ ด (เริ่ มจากบิตที่มีค่าน้อยสุ ด) จานวน w บิต ใช้ในการการ
อ้างอิง word แต่ละ word ที่อยูภ่ ายในบล็อกหนึ่ง
ที่เหลืออีกจานวน s บิต หมายถึงตาแหน่งหรื อหมายเลขของบล็อกจากจานวน
ทั้งหมด 2s บล็อก หน่วยความจา cache จะแบ่งข้อมูล s บิตนี้ออกเป็ น
สองส่ วน คือ เป็ นบิตที่ใช้บอกหมายเลขช่องสัญญาณ cache จานวน r
บิต (แสดงว่ามีจานวนช่องสัญญาณทั้งสิ้ น 2r ช่อง) และที่เหลืออีก s - r บิต
ใช้เป็ น tag หรื อป้ ายบอกตาแหน่งการใช้งานของบล็อกนั้น (อยูใ่ น
cache หรื อไม่) ดังนั้น
33
Direct Mapping






ความยาวของหมายเลขที่อยู่ =
(s + w) บิต
ปริ มาณหน่วยความจาที่สามารถอ้างอิงได้ท้ งั หมด = 2s+w words หรื อ
bytes
จานวนบล็อกทั้งหมด = 2w words หรื อ bytes
2s  w
s
จานวนบล็อกในหน่วยความจาหลัก =
บล็
อก

2
w
2
จานวนช่องสัญญาณ cache = 2r = m ช่อง
ขนาดของป้ ายบอกตาแหน่ง = (s – r) บิต
34
Direct Mapping

ผลของการกาหนดความสัมพันธ์ของตาแหน่งข้อมูลในหน่วยความจาหลักกับช่องสัญญาณ
cache เป็ นดังนี้
หมายเลขช่ องสั ญญาณ Cache
หมายเลขบล็อกในหน่ วยความจาหลัก
0
0, m, 2m, …, 2s - m
1
1, m +1, 2m +1, …, 2s – m + 1
.
.
m-1

m – 1, 2m -1, 3m – 1, …, 2s - 1
การนาตัวเลขบางส่ วนของหมายเลขที่อยูม่ าใช้เป็ นหมายเลขช่องสัญญาณ cache ทาให้
เกิดการแปลงตาแหน่งแต่ละบล็อกในหน่วยความจาหลักมายัง cache เป็ นค่าเฉพาะที่ไม่
ซ้ ากัน เมื่อมีการอ่านข้อมูลจากบล็อกในหน่วยความจาหลักมาไว้ที่ cache ตามตาแหน่ง
ที่กาหนด ก็จะต้องเปลี่ยนค่าของป้ ายบอกตาแหน่งของข้อมูลให้สอดคล้องกันด้วย เพื่อจะได้
สามารถแยกความแตกต่างออกจากบล็อกที่ยงั ไม่เกิดการอ่านได้ ข้อมูล s-r บิตแรกจะถูก
นามาใช้เป็ นป้ ายบอกตาแหน่งข้อมูลนี้
35
Line +
word
Tag
0000
0004
Direct Mapping
Data
13579246
ตัวอย่างโครงสร้างหน่วยความจา cache
แบบ direct-mapping
00
FFF8
FFFC
.
.
.
Tag
Data
Line
number
00
16
13579246
11235813
0000
0001
339C F E D C B A 9 8
16
FEDCBA98
0CE7
FFFC 1 2 3 4 5 6 7 8
FF
16
11223344
12345678
3FFF
3FFF
0000
0004
16
77777777
11235813
.
.
.
8 Bits
32 Bits
0000
0004
FF
FFF8 1 1 2 2 3 3 4 4
FFFC 2 4 6 8 2 4 6 8
Tag
Main memory address =
8
Line
14
Word
2
32 Bits
16-Mbyte main memory
36
Direct Mapping


รู ปด้านบนแสดงตัวอย่างการใช้วธิ ี direct mapping ซึ่งกาหนดให้
m = 16K = 214 และ i = j mod 214 การแปลงที่อยูจ่ ะได้ผลลัพธ์ดงั นี้
หมายเลขช่ องสั ญญาณ cache
หมายเลขทีอ่ ยู่เริ่มต้ นของบล็อก
0
000000, 010000, …, FF0000
1
000004, 010004, …, FF0004
………………
…………………
214 - 1
00FFFC, 01FFFC, …, FFFFFC
สังเกตว่า จะไม่มีบล็อกใด ๆ ที่ถูกแปลงที่อยูเ่ ป็ นหมายเลขช่องสัญญาณ cache เดียวกัน
แล้วมีหมายเลขป้ ายบอกตาแหน่งเหมือนกันเลย เช่น บล็อกที่เริ่ มต้นด้วยหมายเลขที่อยู่
000000, 010000, …, FF0000 จะมีค่าของป้ ายเลขบอกตาแหน่งเป็ น
00, 01, …, FF ตามลาดับ
37
Direct Mapping
สังเกตว่าจะไม่มีบล็อกใด ๆ ที่ถกู แปลงที่อยูเ่ ป็ นหมายเลขช่องสัญญาณ cache
เดียวกัน แล้วมีหมายเลขบอกตาแหน่งป้ ายเหมือนกันเลย เช่น บล็อกที่เริ่ มต้นด้วย
หมายเลขที่อยู่ 000000, 010000, …, FF0000 จะมีค่าของป้ ายบอก
ตาแหน่งเป็ น 00, 01, …, FF ตามลาดับ
 กระบวนการอ่านข้อมูลจากหน่วยความจาหลักทางาน ดังนี้



ข้อมูลตาแหน่งที่อยูข่ นาด 24 บิต ถูกส่ งมาที่ระบบหน่วยความจา cache ข้อมูล
ช่องสัญญาณ cache ขนาด 14 บิต (line number) ถูกนาไปใช้ในการ
ค้นหาตาแหน่งช่องสัญญาณ cache ต่อไป
ข้อมูลป้ ายบอกตาแหน่ง 8 บิตแรก (tag) จะถูกนาไปเปรี ยบเทียบกับหมายเลขของ
ป้ ายบอกตาแหน่งที่เก็บอยูใ่ นตาแหน่งช่องสัญญาณ cache ที่พบนั้น ซึ่งถ้าตรงกันก็
แสดงว่าข้อมูลบล็อกที่ตอ้ งการนั้นอยูใ่ น cache จึงนาข้อมูลสองบิตสุ ดท้าย
(word) มาใช้เลือกข้อมูล (หนึ่งใน 4 ไบท์) ในบล็อกนั้น
38
Direct Mapping




แต่ถา้ ข้อมูลป้ ายบอกตาแหน่งมีค่าไม่เท่ากัน แสดงว่าข้อมูลในบล็อกนั้น ยังไม่ถูกคัดลอก
สาเนาจากหน่วยความจาหลักมาเก็บไว้ใน cache ก็จะนาข้อมูลป้ ายบอกตาแหน่ง
รวมทั้งข้อมูลช่องสัญญาณ cache จานวน 22 บิตมารวมกัน กลายเป็ นตาแหน่ง
บล็อกข้อมูลในหน่วยความจาหลัก แล้วคัดลอกสาเนามาเก็บไว้ใน cache
หมายเลขที่อยูจ่ ริ ง ๆ ในหน่วยความจาหลักนั้นมาจากข้อมูล 22 บิต และต่อท้ายด้วย
00 ทาให้กลายเป็ นหมายเลขที่อยูเ่ ริ่ มต้นของข้อมูลในแต่บล็อกขนาด 24 บิต ที่เก็บอยู่
ในหน่วยความจาหลัก
ข้อดีของ Direct mapping คือ เป็ นวิธีที่ง่ายสร้างขึ้นมาใช้งานโดยใช้ตน้ ทุนต่า
ส่ วนข้อเสี ยคือ การเปลี่ยนตาแหน่งบล็อกข้อมูลจากหน่วยความจาหลักมาที่ cache
นั้นเป็ นการกาหนดตาแหน่งคงที่ ดังนั้นถ้าในโปรแกรมเกิดมีการอ้างอิงถึงข้อมูลจากสอง
บล็อกหรื อมากกว่า ข้อมูลทั้งสองบล็อกนั้นจะต้องสลับเปลี่ยนกันถูกคัดลอกเข้ามาไว้ใน
cache ที่ตาแหน่งเดียวกันเสมอ ทั้ง ๆ ที่ cache ส่ วนอื่นอาจไม่มีขอ้ มูลอยูเ่ ลยก็ได้
ปรากฏการณ์แบบนี้เรี ยกว่า “trashing”
39
Associative Mapping
วิธีน้ ีแก้ปัญหาของ Direct mapping โดยการยินยอมให้หน่วยความจาแต่ละ
บล็อก สามารถูกอ่านเข้ามาใน cache ช่องใดก็ได้
 ในกรณี น้ ี การแปลงตาแหน่งที่อยูจ่ ะแบ่งออกเป็ นเพียงสองส่ วนคือ ป้ ายบอกตาแหน่ง
(tag) และ ตาแหน่งของ word
 ป้ ายบอกตาแหน่งใช้ในการบอกหมายเลขบล็อกของหน่วยความจาหลัก การตรวจสอบ
ว่าบล็อกนั้นอยูใ่ น cache หรื อไม่ ยังคงใช้วธิ ี เดิม คือ การเปรี ยบเทียบค่าของป้ าย
บอกตาแหน่งที่มากับข้อมูล กับค่าของป้ ายบอกตาแหน่งที่เก็บอยูใ่ น cache รู ป
ด้านล่างแสดงการทางานของ Associative mapping สังเกตว่าไม่มีส่วนใด
ของตาแหน่งที่อยูข่ อ้ มูลเป็ นส่ วนที่บอกตาแหน่งใน cache (line number)
ดังนั้นจึงไม่มีการตรวจสอบหมายเลขช่องสัญญาณใน cache

40
Associative Mapping
s+w
Cache
Memory address
Tag
Tag
s
Main
memory
Data
W0
Word
W1
W2
L0
w
W3
.
.
.
.
...
Compare
X
.
.
.
.
Li X
w
s
w
(Hit in cache)
B0
W4j
W(4j + 1)
W(4j + 2)
Bj
W(4j + 3)
.
.
.
.
.
.
.
.
s
Lm-1
(Miss in cache)
โครงสร้างหน่วยความจา cache แบบ fully associative
41
Associative Mapping

ค่าต่าง ๆ ในรู ปแสดงได้ดงั นี้
 ความยาวของหมายเลขตาแหน่ งที่อยู่ (address length) =
(s+w) บิต
s+w
 จานวน word (หรื อ byte) ในหน่ วยความจาหลัก = 2
words
w words (หรื อ byte)
 ขนาดของบล็อก = 2
sw
2
s
 จานวนบล็อกในหน่ วยความจาหลัก =
2


w
2
จานวนช่องสัญญาณใน cache = ไม่มีการกาหนดตายตัว
ขนาดของป้ ายบอกตาแหน่ง = s บิต
42
Associative Mapping

รู ปด้านล่างแสดงการใช้ Associative Mapping ที่อยูใ่ นหน่วยความจาหลัก
(memory address) ประกอบขึ้นจาก ป้ ายบอกตาแหน่งขนาด 22 บิต และ
เลขบอกตาแหน่งไบต์ขนาด 2 บิต รวมเป็ น 24 บิต ป้ ายบอกตาแหน่งทั้ง 22 บิต
(เริ่ มจากบิตซ้ายสุ ด) จะต้องใช้ในการเก็บข้อมูลบล็อกละ 32 บิต สาหรับแต่ละ
ช่องสัญญาณใน cache เช่น
Memory address
Tag(leftmost 22 bits)
0001 0110 0011 0011 1001 1100 (binary 24 bits)
1
6
3
3
9
C (hexadecimal)
00
0
0101 1000 1100 1110 0111 (binary 22 bits)
5
8
C
E
7 (hexadecimal)
นั่นคือทีอ่ ยู่ทอี่ ้ างอิงในหน่ วยความจาหลัก 16339C จะมีหมายเลข tag เป็ น 058CE7
ข้อเสี ย ของวิธีน้ ีคือ ความซับซ้อนที่เกิดขึ้นในระหว่างการตรวจสอบป้ ายบอกตาแหน่งข้อมูลใน cache
43
ที่จะต้องทาการตรวจสอบพร้อมกันทุกตาแหน่ง
Associative Mapping
Address
Data
000000
000004
โครงสร้างหน่วยความจา cache
แบบ associative
13579246
Tag
Data
Line
number
3FFFFE
058CE7
11223344
FEDCBA98
0000
0001
3FFFFD
000000
3FFFFF
33333333
13579246
24682468
3FFD
3FFE
3FFF
163398
16339C F E D C B A 9 8
1633A0
22 bits
FFFFF4
FFFFF8
FFFFFC
33333333
11223344
24682468
32 bits
16-Mbyte main memory
32 bits
16-Kword cache
Main memory address =
Tag
Word
22
2
44
Set Associative Mapping
เป็ นวิธีการผสมที่ได้นาข้อดีของทั้งแบบ direct และ associative มาใช้
 ในขณะที่พยายามลดข้อด้อยให้มีผลกระทบน้อยลง ในกรณี น้ ี หน่วยความจา cache
จะถูกแบ่งออกเป็ นเซ็ตจานวน v เซ็ต แต่ละเซ็ตประกอบด้วยช่องสัญญาณจานวน k
ช่อง สรุ ปความสัมพันธ์ได้ ดังนี้

m=vxk
i = j modulo v
เมื่อ



i = หมายเลขเซ็ตใน cache
j = หมายเลขบล็อกในหน่วยความจาหลัก
m = จานวนช่องสัญญาณใน chche
45
Set Associative Mapping
ความสัมพันธ์ดา้ นบนนั้น เรี ยกเป็ นชื่อเฉพาะว่า “k-way set
associative mapping”
 วิธีการนี้ จะแปลงที่อยูข่ องบล็อก Bj ให้ไปอยูใ่ นช่องสัญญาณใดก็ได้ในเซ็ต i
ของหน่วยความจา cache โครงสร้างของหมายเลขที่อยูป่ ระกอบด้วยสามส่ วน
คือ ป้ ายบอกตาแหน่ง(tag), หมายเลขเซ็ต และตาแหน่งใน word
 หมายเลขเซ็ตมีขนาด d บิต (v = 2d set) ใช้ในการกาหนดเซ็ตที่ตอ้ งใช้ใน
cache ส่ วนป้ ายบอกตาแหน่งขนาด s บิต และข้อมูลในเซ็ต จะนามาใช้บอก
ตาแหน่งบล็อกข้อมูลในหน่วยความจา
 รู ปด้านล่างแสดงการทางานของ set associative กรณี พิเศษกรณี หนึ่ ง
เรี ยกว่า fully associative mapping มีขนาดของป้ ายบอกตาแหน่ง
มาก จนต้องทาการเปรี ยบเทียบกับทุกช่องสัญญาณใน cache

46
Set Associative Mapping
s+w
Cache
Memory address
Tag
Tag
Set
s-d
d
Main
memory
Word
Data
B0
F0
B1
w
F1
.
.
.
.
.
.
.
Set 0
Fk-1
...
Compare
Fk
X
s+w
Bj
X
.
.
(Hit in cache)
.
.
.
.
Fk+i
.
.
F2k-1
Set 1
.
.
(Miss in cache)
โครงสร้างหน่วยความจา cache แบบ k-way set associative
47
Set Associative Mapping

แต่ k-way set associative จะมีขนาดของป้ ายบอกตาแหน่งที่เล็กกว่ามาก ซึ่ง
จะทาการเปรี ยบเทียบช่องสัญญาณเพียง k ช่องในเซ็ตหนึ่ง ๆ เท่านั้น สรุ ปความสัมพันธ์ได้
ดังนี้
 ความยาวของตาแหน่ งข้อมูล (address length) = s + w บิต
s+w words หรื อ bytes
 ขนาดหน่ วยความจาทั้งหมด = 2
w words or bytes
 ขนาดของบล็อก = 2
sw
2
 จานวนบล็อกในหน่ วยความจาหลัก =
บล็อก
s
2




w
2
จานวนช่องสัญญาณในแต่ละเซ็ต = k
จานวนเซ็ต = 2d = v เซ็ต
จานวนช่องสัญญาณทั้งหมดใน cache = kv = k x 2d
ขนาดของป้ ายบอกตาแหน่ง = (s – d) บิต
48
Set Associative Mapping
รู ปด้านล่างแสดงตัวอย่างการทางานของ set associative ที่แต่ละเซ็ต
ประกอบด้วย 2 ช่องสัญญาณ(2-way set associative)
 หมายเลขเซ็ตขนาด 13 บิตใช้ระบุหมายเลขเซ็ต และหมายเลขบล็อกในหน่วยความจา
หลัก ดังนั้นบล็อกหมายเลข 000000,008000, …, FF8000 ของ
หน่วยความจาหลักจะถูกแปลงให้ไปอยูใ่ นเซ็ต 0 ใน cache
 แต่ละบล็อกสามารถถูกอ่านเข้าไปเก็บไว้ในช่องสัญญาณใดของเซ็ต 0 ก็ได้ แต่จะไม่
สามารถเก็บไว้ที่ช่องสัญญาณเดียวกันในเซ็ตเดียวกันได้
 จากนั้นค่าของป้ ายบอกตาแหน่ง ที่ตาแหน่งข้อมูลที่ถกู อ้างอิงจะถูกนามาเปรี ยบเทียบกับ
ค่าของป้ ายบอกตาแหน่งที่เก็บอยูใ่ น cache พร้อมกันทั้งสองช่องสัญญาณ เพื่อ
ค้นหาบล็อกข้อมูลที่ตอ้ งการ

49
Set Associative Mapping
Set +
word
Tag
0000
0004
Data
ตัวอย่างโครงสร้างหน่วยความจา cache
แบบ 2-way set associative
13579246
000
7FF8
7FFC
.
.
.
Data
Line
number
000
02C
13579246
11235813
0000
0001
339C F E D C B A 9 8
02C
FEDCBA98
0CE7
7FFC 1 2 3 4 5 6 7 8
1FF
02C
11223344
12345678
1FFF
1FFF
0000
0004
02C
77777777
11235813
.
.
.
0000
0004
Tag
9 Bits
32 Bits
Data
Tag
02C
77777777
1FF
24682468
9 Bits
32 Bits
16-Kword cache
1FF
7FF8 1 1 2 2 3 3 4 4
7FFC 2 4 6 8 2 4 6 8
Tag
32 Bits
16-Mbyte main memory
Main memory address =
9
Line
13
Word
2
50
Set Associative Mapping
ในกรณี ที่ v=m และ k=1 จะทาให้วธิ ี น้ ีกลายเป็ น direct mapping
 และถ้า v=1 และ k=m ก็จะกลายเป็ นวิธี associative mapping
 การกาหนดให้แต่ละเซ็ตมีสองช่องสัญญาณ(v=m/2 และ k=2) เป็ นวิธีการที่
นิยมใช้กนั โดยทัว่ ไป ซึ่ งสามารถเพิ่มประสิ ทธิ ภาพของอัตราการค้นพบข้อมูลใน
cache ได้ดีกว่าวิธี direct mapping และถ้าการกาหนดให้แต่ละเซ็ตมี
สี่ ช่องสัญญาณ (v=m/4 และ k=4) ซึ่ งเรี ยกว่า 4-way set
associative ก็จะเพิ่มประสิ ทธิ ภาพให้ดียงิ่ ขึ้นไปอีก โดยที่มีค่าใช้จ่ายเพิ่มขึ้น
เพียงเล็กน้อย
 แต่ถา้ เพิ่มจานวนช่องสัญญาณต่อเซ็นให้สูงกว่านี้ แล้ว ประสิ ทธิภาพที่ได้รับจะ
เพิม่ ขึ้นเพียงเล็กน้อยเท่านั้น ซึ่ งไม่คุม้ ค่ากับค่าใช้จ่ายที่เพิม่ สู งขึ้น

51
Replacement Algorithm
เมื่อข้อมูลบล็อกใหม่ถกู อ่านขึ้นมาจากหน่วยความจา หนึ่งในบล็อกเดิมที่ถกู อ่าน
เข้ามาไว้ใน cache จะต้องถูกแทนที่ดว้ ยบล็อกใหม่
 สาหรับ direct mapping จะมีช่องสัญญาณเพียงช่องเดียวเท่านั้นที่จะเป็ น
ที่อยูใ่ น cache สาหรับข้อมูลแต่ละบล็อก จึงไม่จาเป็ นต้องคิดหาวิธีการแทนที่
ใด ๆ
 สาหรับ associative และ set associative จะต้องนาวิธีการ
สาหรับการแทนที่ (replacement) มาใช้งาน เพื่อตอบสนองความรวดเร็ ว
ในการทางาน วิธีการดังกล่าวจะต้องถูกสร้างขึ้นด้วยฮาร์ ดแวร์ วิธีการที่นิยม
นามาใช้กนั โดยทัว่ ไปมี 4 วิธี วิธีที่นิยมกันมากที่สุด คือ Least recently
used; LRU

52
Replacement Algorithm

LRU (Least recently used) : จะนาบล็อกใหม่มาแทนที่บล็อก
เก่าที่ถกู เก็บไว้ใน cache เป็ นเวลานานที่สุด โดยที่มีการนาไปใช้งานน้อยที่สุด
สาหรับ 2-way set associative สามารถสร้างขึ้นมาใช้งานได้ง่ายมาก
แต่ละช่องสัญญาณในเซ็ตจะมีบิตพิเศษเรี ยกว่า USE บิต เมื่อมีการอ้างอิงถึง
ช่องสัญญาณหนึ่งก็จะเปลี่ยนค่า USE ให้เป็ น “1” และ กาหนดให้ USE
บิตของอีกช่องสัญญาณให้เป็ น “0” เมื่อต้องการนาข้อมูลบล็อกใหม่เข้ามาในเซ็ต
นั้น ก็จะเลือกให้ช่องสัญญาณที่มีค่า USE เป็ น “0” ทั้งนี้แนวความคิดนี้ คาดว่า
ข้อมูลที่ถกู อ้างอิงถึงในลาดับหลัง มีโอกาสที่จะถูกอ้างอิงมากกว่าข้อมูลที่ไม่ถกู
อ้างอิงมาเป็ นเวลานานกว่า
53
Replacement Algorithm

FIFO (First-in-First-out) : จะทดแทนบล็อกที่ถกู อ่านขึ้นมานาน
มากที่สุด

LFU (Lease frequently used) : จะทาการทดแทนบล็อกที่ถกู
อ้างอิงเป็ นจานวนครั้งน้อยที่สุด การสร้างขึ้นมาใช้งานจาเป็ นจะต้องมีตวั นับการใช้
งานข้อมูลแต่ละช่องสัญญาณ เพื่อหาช่องสัญญาณที่มีการนามาใช้งานน้อยที่สุด

Random : ทาโดยสุ่ มหมายเลขช่องสัญญาณขึ้นมาในแต่ละครั้งที่มีความ
ต้องการเกิดขึ้น ผลจากการสร้างระบบจาลองทดสอบการทางานพบว่า วิธีสุ่มนี้มี
ประสิ ทธิ ภาพด้อยกว่าวิธีการที่นาข้อมูลเกี่ยวกับกานใช้งานมาพิจารณา
54
Write Policy
ก่อนที่บล็อกข้อมูลใน cache จะถูกแทนที่ดว้ ยข้อมูลบล็อกใหม่ จาเป็ นจะต้อง
ตรวจสอบว่าข้อมูลในบล็อกนั้นถูกแก้ไขเปลี่ยนแปลงไปบ้างแล้วหรื อไม่
 ถ้าไม่มีการแก้ไขเกิดขึ้นก็สามารถบันทึกข้อมูลบล็อกใหม่แทนทีไ่ ด้เลย แต่ถา้ มีการ
แก้ไขข้อมูลจะต้องมีการบันทึกข้อมูล (write operation) เกิดขึ้นอย่าง
น้อยหนึ่งครั้งกับข้อมูลนั้น ทาให้จะต้องมีการปรับปรุ งข้อมูลในหน่วยความจาหลัก
ให้เหมือนกับข้อมูลใน cache
่ ลายวิธี ยกตัวอย่างเช่น
 Write policy มีอยูห



Write through
Write back
55
Write Policy

Write through : เป็ นวิธีที่ง่ายที่สุดในการบันทึกข้อมูลลงหน่วยความจา
ในทันที ทุกครั้งที่มีการบันทึกข้อมูลลงใน cache ก็จะถูกบังคับให้เกิดการบันทึก
ลงในหน่วยความจาหลักในทันที เพื่อเป็ นการรับประกันว่า ข้อมูลทั้งที่อยูใ่ น
หน่วยความจาหลักและที่อยูใ่ นทุกส่ วนของ cache นั้นมีค่าเท่ากับเสมอ ข้อเสี ย
ของวิธีน้ ี คือ เป็ นวิธีที่ทาให้เกิดการส่ งข้อมูลผ่านบัส โดยเฉพาะส่ วนที่เชื่อมต่อกับ
หน่วยความจาหลักเป็ นอย่างมาก ซึ่ งอาจทาให้เกิดเป็ นจุดปั ญหาคอขวดของระบบ
ขึ้นมาได้
56
Write Policy

Write back : เป็ นการบันทึกข้อมูลในภายหลัง ซึ่ งช่วยลดจานวนครั้งในการ
บันทึกข้อมูลลงหน่วยความจาหลักให้เหลือน้อยที่สุด วิธีน้ ีจะปล่อยให้มีการ
ปรับปรุ งแก้ไขข้อมูลเกิดขึ้นใน cache เท่านั้น ซึ่ งจะไปกาหนดค่าของบิตพิเศษ
เรี ยกว่า UPDATE บิต เมื่อมีการแก้ไขเกิดขึ้นจริ ง ถ้าข้อมูลในบล็อกนั้น
จะต้องถูกแทนที่ดว้ ยข้อมูลบล็อกใหม่ ระบบก็จะตรวจสอบ UPDATE บิต
และจะทาการบันทึกข้อมูลลงในหน่วยความจาหลัก ก็ต่อเมื่อบิตนี้มีค่าเปลี่ยนแปลง
ไปจากเดิมเท่านั้น
57
Line Size
ขนาดของบล็อกใน cache (line size) : เมื่อเกิดการอ่านข้อมูลมาจาก
หน่วยความจาหลัก และใส่ เข้าไปใน cache นั้น นอกเหนือจาก word m
ต้องการแล้วยังได้รับข้อมูลอื่นที่อยูต่ ิดกับ word นั้น ๆ มาด้วยอีกจานวนหนึ่ง
 ถ้าบล็อกมีขนาดใหญ่ข้ ึนอัตราการพบข้อมูลใน cache จะเพิม
่ ขึ้นเป็ นระยะเวลา
หนึ่ง เนื่องจากกฎการอ้างอิงพื้นที่ใกล้เคียง (locality of reference) ซึ่ ง
กล่าวว่าการอ้างอิงข้อมูลในครั้งต่อๆ ไปจะอ้างอิงข้อมูลเดิมหรื อข้อมูลที่อยูใ่ กล้เคียง
กับที่เดิม
 ดังนั้นบล็อกที่มีขนาดใหญ่ข้ ึนจึงสามารถนาข้อมูลที่เป็ นประโยชน์เข้ามาสู่ cache
ได้มากขึ้น อย่างไรก็ตามถ้าบล็อกมีขนาดใหญ่ข้ ึนเรื่ อย ๆ โอกาสที่จะพบข้อมูลที่
ต้องการใน cache จะลดลง ถ้าบล็อกมีขนาดใหญ่ข้ ึนไปอีก โอกาสที่จะใช้ขอ้ มูล
ในบล็อกใหม่ที่พ่ งึ จะอ่านขึ้นมานั้น กลับน้อยกว่าโอกาสที่จะใช้ขอ้ มูลจากบล็อกเก่าที่
ถูกแทนที่ไปแล้ว ซึ่ งสรุ ปความสัมพันธ์ได้วา่

58
Line Size


บล็อกทีมีขนาดใหญ่จะลดจานวนบล็อกที่จะสามารถอ่านเข้ามาเก็บไว้ใน cache
เนื่องจากบล็อกใหม่ที่อ่านเข้ามาจะถูกบันทึกแทนที่บล็อกข้อมูลเก่าที่มีอยูก่ ่อนหน้า
ดังนั้นยิง่ มีจานวนบล็อกน้อยลงก็จะยิง่ ทาให้บล็อกเก่าถูกลบทิ้งเร็ วขึ้น
ถ้าบล็อกมีขนาดใหญ่ข้ ึน ข้อมูลที่อ่านเข้ามาเพิ่มขึ้นนั้นจะยิง่ อยูใ่ นตาแหน่งที่ห่างไกล
จากตาแหน่งข้อมูลที่กาลังถูกเรี ยกใช้งานมากยิง่ ขึ้น ซึ่งเป็ นการขัดต่อกฎการอ้างอิง
พื้นที่ใกล้เคียง ดังนั้นจึงมีโอกาสที่จะถูกนามาใช้งาน้อยลง
ความสัมพันธ์ระหว่างขนาดของบล็อก และอัตราการค้นพบข้อมูลที่ตอ้ งการใน
cache (hit ratio) นั้นมีความซับซ้อนมาก ซึ่งขึ้นอยูก่ บั ลักษณะการทางาน
ของแต่ละโปรแกรมเป็ นหลัก และไม่มีผใู้ ดสามารถให้นิยามของความพอดีได้
อย่างไรก็ตาม บล็อกขนาด 8 ถึง 32 bytes นั้นเป็ นค่าที่ดีสาหรับงานทัว่ ไป
และบล็อกขนาด 64 ถึง 128 bytes นั้นเหมาะสมกับเครื่ องคอมพิวเตอร์
ความสามารถสูงสาหนับใช้ในงานวิจยั ขั้นสูง
59
Number of caches
ในตอนที่ cache ถูกนามาใช้งานเป็ นครั้งแรก ระบบคอมพิวเตอร์ ทวั่ ไปจะมี
cache เพียงระดับเดียว เมื่อไม่นานมานี้ cache หลายระดับได้รับความนิยม
นามาใช้งานทัว่ ไป
 การออกแบบ cache หลายระดับมีมุมมองที่สาคัญสองด้านคือ จานวนระดับ
ของ cache ที่นามาใช้ และการใช้ cache แบบรวมเป็ นหนึ่งเดียวหรื อแบบ
แยกส่ วน

60
Number of caches
Cache แบบหลายระดับ : เทคโนโลยีที่กา้ วหน้าขึ้น ทาให้สามารถใส่
cache เข้าไปเป็ นส่ วนหนึ่งของชิพโปรเซสเซอร์ ได้ ซึ่ งเรี ยกว่า on-chip
cache เมื่อเปรี ยบเทียบกับ cache ภายนอกซึ่ งจะต้องติดต่อผ่านบัส onchip cache ช่วยลดงานของโปรเซสเซอร์ ในการใช้บสั ให้นอ้ ยลง จึงช่วย
เพิม่ ความเร็ วในการประมวลผลของโปรเซสเซอร์
 ในระบบที่มี on-chip cache นั้นไม่ได้บงั คับให้มีหรื อไม่มี cache
ภายนอกใช้งาน แต่โดยทัว่ ไปโดยเฉพาะเครื่ องรุ่ นใหม่ ๆ มีการนา cache ทั้ง
สองชนิดมาใช้งานร่ วมกัน และเรี ยกโครงสร้างประเภทนี้วา่ cache 2 ระดับ
โดย cache ระดับที่ 1(L1) หมายถึง on-chip cache และระดับที่
2(L2) หมายถึง cache ภายนอก

61
Number of caches

เหตุผลที่ตอ้ งมี L2 cache เนื่องจากถ้าไม่มี L2 cache แล้วในทุกครั้งที่
โปรเซสเซอร์ ไม่สามารถหาข้อมูลได้ L1 cache ก็จะเกิดการอ้างอิงไปที่
หน่วยความจาหลัก ผ่านบัสหลักของระบบคอมพิวเตอร์ ซึ่ งโดยปกติจะทาให้เสี ย
เวลานานมาก และทาให้ท้ งั ระบบมีประสิ ทธิ ภาพการทางานลดลง แต่ถา้ ทีการนา
L2 cache มาใช้ขอ้ มูลส่ วนหนึ่งจะถูกพบที่นี่ ซึ่ งช่วยให้การเข้าถึงข้อมูลนั้น
รวดเร็ วมากกว่าการเข้าถึงหน่วยความจาหลักโดยตรง
62
Number of caches

Cache แบบ Unified : คือ cache ที่สามารถเก็บได้ท้ งั ข้อมูลและ
คาสั่งปนกัน มีขอ้ ดีสองประการคือ


สาหรับ cache จานวนหนึ่ง unified cache มีอตั ราการค้นพบข้อมูลที่
ต้องการมากกว่า split cache เนื่องจากสามารถรักษาสมดุลระหว่างการเรี ยกใช้
คาสัง่ และข้อมูลได้โดยอัตโนมัติ นัน่ คือถ้าการอ้างอิงมีแนวโน้มในการเรี ยกใช้คาสัง่
มากกว่าข้อมูล cache ก็จะถูกบันทึกไว้ดว้ ยคาสัง่ ในปริ มาณที่มากกว่าข้อมูล และ
ในทางกลับกัน cache จะมีขอ้ มูลมากกว่าคาสัง่ ถ้าโปรแกรมที่กาลังทางานอยูน่ ้ นั
อ้างอิงข้อมูลจานวนมากโดยใช้คาสัง่ ซ้ า ๆ
การออกแบบและสร้างจะง่ายกว่าเพราะไม่ตอ้ งแยกชนิดของ cache
63
Number of caches

Split cache : สาหรับเก็บข้อมูลและคาสัง่ แยกออกจากกัน มักใช้ในเครื่ อง
คอมพิวเตอร์ประสิ ทธิภาพสูงประเภท superscalar machine เช่น
Pentium และ PowerPC ซึ่ งเน้นการประมวลผลแบบขนาน และการดึง
คาสัง่ ล่วงหน้า สาหรับคาสัง่ ที่คาดว่าจะถูกนามาประมวลผลในลาดับต่อไป

ข้อดีประการหนึ่งของการใช้ split cache คือวิธีน้ ีช่วยกาจัดความคับคัง่ ของ
cache ระหว่างหน่วยที่ดึง และแปลความหมายคาสัง่ (instruction
prefetcher) และหน่วยที่ทาการประมวลผล(execution unit) ซึ่ ง
เป็ นสิ่ งสาคัญมากในการออกแบบ pipeline
64