อะไรทำให้หน่วยความจำแคช CPU เร็วกว่าหน่วยความจำหลักมาก ฉันเห็นประโยชน์บางอย่างในระบบแคชแบบทำเป็นชั้น ทำให้รู้สึกว่าแคชที่เล็กลงนั้นเร็วกว่าการค้นหา แต่ต้องมีมากกว่านี้
อะไรทำให้หน่วยความจำแคช CPU เร็วกว่าหน่วยความจำหลักมาก ฉันเห็นประโยชน์บางอย่างในระบบแคชแบบทำเป็นชั้น ทำให้รู้สึกว่าแคชที่เล็กลงนั้นเร็วกว่าการค้นหา แต่ต้องมีมากกว่านี้
คำตอบ:
ในกรณีของแคช CPU มันจะเร็วกว่าเพราะมันอยู่บน die เดียวกันกับโปรเซสเซอร์ กล่าวอีกนัยหนึ่งคือข้อมูลที่ร้องขอนั้นไม่จำเป็นที่จะต้องยุ่งกับโปรเซสเซอร์ มันมีอยู่แล้ว
ในกรณีของแคชบนฮาร์ดไดรฟ์จะเร็วกว่าเพราะอยู่ในหน่วยความจำโซลิดสเตตและไม่ได้อยู่บนจานหมุน
ในกรณีของแคชบนเว็บไซต์มันเร็วกว่าเพราะข้อมูลถูกดึงออกมาจากฐานข้อมูลแล้ว (ซึ่งในบางกรณีอาจอยู่ที่ใดก็ได้ในโลก)
มันเกี่ยวกับท้องที่เป็นส่วนใหญ่ แคชกำจัดขั้นตอนการถ่ายโอนข้อมูล
สถานที่ตั้งเป็นวิธีการพูดข้อมูลที่ "อยู่ติดกัน" ในเวลาหรือสถานที่ การแคชด้วยหน่วยความจำที่เล็กกว่าเร็วกว่า (แต่โดยทั่วไปมีราคาแพงกว่า) ทำงานได้เพราะโดยทั่วไปแล้วข้อมูลในปริมาณที่ค่อนข้างน้อยคือข้อมูลที่ถูกเข้าถึงบ่อยที่สุด
การอ่านแคชเพิ่มเติม
(การคำนวณ) บน Wikipedia
มันเร็วกว่าเพราะทั้งคู่เข้าใกล้และเป็น SRAM ไม่ใช่ DRAM
SRAM เป็นและสามารถเร็วกว่า DRAM มากค่าจะถูกเก็บไว้แบบคงที่ (S ในS RAM S ) ดังนั้นพวกเขาไม่จำเป็นต้องรีเฟรชซึ่งจะไปรอบ DRAM เป็นแบบไดนามิกเช่นเดียวกับแบตเตอรี่ขนาดเล็กที่สามารถชาร์จใหม่ได้คุณต้องชาร์จแบตเตอรี่ใหม่เป็นประจำเพื่อไม่ให้แบตเตอรี่หมดและกลายเป็นศูนย์ สิ่งนี้จะขโมยรอบเวลานอกเหนือไปจากที่คุณต้องเข้าถึงบิต ฯลฯ
เมื่ออยู่ในสภาพเดียวกับหรือใกล้กับโปรเซสเซอร์จะลดการเดินทางไปกลับทั้ง L1 และ L2 นั้นเร็วกว่า DRAM จากมุมมองการเข้าถึง
SRAM เข้าถึงได้เร็วกว่า DRAM ที่นำแอปเปิ้ลไปสู่แอปเปิ้ลและแคชมักอยู่บนชิปหรือใกล้กว่าหรือบนบัสเร็วกว่า DRAM ทำให้เวลาในการเข้าถึงเร็วขึ้นเช่นกัน
สิ่งหนึ่งที่ควรกล่าวถึงอย่างชัดเจนคือผลกระทบของความเร็วแสง ในวิดีโอนี้ Grace Hopperแสดงชิ้นส่วนของลวดยาวประมาณหนึ่งฟุตซึ่งเป็นระยะทางที่สัญญาณไฟฟ้าสามารถเดินทางในหนึ่งนาโนวินาที * หาก CPU ทำงานที่ 3GHz นั่นหมายถึงระยะทาง 4 "ต่อรอบสัญญาณนาฬิกานี่เป็นข้อ จำกัด ทางกายภาพอย่างหนักเกี่ยวกับความเร็วในการเข้าถึงหน่วยความจำนี่เป็นส่วนใหญ่ของสาเหตุที่อยู่ใกล้กับ CPU (เนื่องจากแคช L1) อนุญาต หน่วยความจำให้เร็วขึ้น
EDIT * จริง ๆ แล้วแสงเดินทางไกลแค่ไหนในสุญญากาศระยะทางผ่านทองแดง / ซิลิคอนนั้นน้อยกว่า
คำตอบอื่น ๆ ครอบคลุมบิตที่เกี่ยวข้องทั้งหมดแล้ว: ท้องที่ (และค่าโอนข้อมูลที่เกี่ยวข้องความกว้างบัสและนาฬิกาเป็นต้น) ความเร็วของแสง (อีกครั้งที่เกี่ยวข้องกับการถ่ายโอนค่าใช้จ่ายและความกว้างและปริมาณงานบัส); เทคโนโลยีหน่วยความจำที่แตกต่างกัน (SRAM เทียบกับ DRAM) ทั้งหมดนี้เห็นในแง่ของค่าใช้จ่ายสมดุลประสิทธิภาพ /
หนึ่งบิตที่ถูกปล่อยออกไปและมันเพิ่งถูกกล่าวถึงในความคิดเห็น Darkhogg: แคชที่ใหญ่กว่ามีอัตราการเข้าชมที่ดีขึ้น แต่เวลาแฝงที่ยาวนานขึ้น แคชหลายระดับที่ถูกนำมาใช้เพื่อแก้ไขข้อเสียนี้
มีคำถามและคำตอบที่ยอดเยี่ยมในประเด็นนี้ทางอิเล็กทรอนิกส์ SE
จากคำตอบดูเหมือนว่าจุดที่จะเน้นคือ: ตรรกะที่ดำเนินการทั้งหมดที่จำเป็นสำหรับการอ่านแคชไม่ใช่เรื่องง่าย (โดยเฉพาะถ้าแคชมีการตั้งค่าเชื่อมโยงเหมือนแคชส่วนใหญ่ในปัจจุบัน) มันต้องมีประตูและตรรกะ ดังนั้นแม้ว่าเราจะออกกฎราคาและพื้นที่ตาย
หากใครบางคนพยายามที่จะใช้แคช L1 ที่มีขนาดใหญ่อย่างน่าขันตรรกะที่ทำหน้าที่ดำเนินการที่จำเป็นทั้งหมดสำหรับการอ่านแคชก็จะกลายเป็นเรื่องใหญ่เช่นกัน ในบางจุดความล่าช้าในการแพร่กระจายผ่านตรรกะนี้ทั้งหมดจะยาวเกินไปและการดำเนินการที่ใช้เพียงรอบนาฬิกาเดียวก่อนจะต้องแบ่งออกเป็นหลายรอบนาฬิกา สิ่งนี้จะเพิ่มความล่าช้า
มีจุดดีมากมายในคำตอบอื่น ๆ แต่มีปัจจัยหนึ่งที่ขาดหายไปนั่นคือเวลาถอดรหัสที่อยู่
ต่อไปนี้เป็นข้อผิดพลาดที่ใหญ่หลวงของวิธีการถอดรหัสที่อยู่หน่วยความจำ แต่ให้ความคิดที่ดีว่าเหตุใดชิป DRAM ขนาดใหญ่จึงค่อนข้างช้า
เมื่อโปรเซสเซอร์ต้องการเข้าถึงหน่วยความจำจะส่งคำสั่งไปยังชิปหน่วยความจำเพื่อเลือกคำเฉพาะที่ต้องการใช้ คำสั่งนี้เรียกว่าการเลือกที่อยู่คอลัมน์ (เราจะไม่สนใจที่อยู่แถวในขณะนี้) ตอนนี้ชิพหน่วยความจำต้องเปิดใช้งานคอลัมน์ที่ร้องขอซึ่งทำได้โดยการส่งที่อยู่ลงไปตามลำดับของประตูตรรกะเพื่อทำการเขียนเดี่ยวที่เชื่อมต่อกับเซลล์ทั้งหมดในคอลัมน์ จะมีการหน่วงเวลาจำนวนหนึ่งสำหรับที่อยู่แต่ละบิตจนกว่าผลลัพธ์จะออกมาอีกด้านหนึ่ง สิ่งนี้เรียกว่า CAS เวลาแฝงของหน่วยความจำ เนื่องจากบิตเหล่านั้นจะต้องได้รับการตรวจสอบตามลำดับกระบวนการนี้ใช้เวลานานกว่าวงจรประมวลผล (ซึ่งโดยปกติจะมีทรานซิสเตอร์เพียงไม่กี่ตัวเท่านั้นที่จะรอลำดับ) นอกจากนี้ยังใช้เวลานานกว่ารอบบัส (ซึ่งโดยปกติจะช้ากว่ารอบโปรเซสเซอร์เล็กน้อย) คำสั่ง CAS บนชิปหน่วยความจำทั่วไปมีแนวโน้มที่จะเรียงตามลำดับของ 5ns (IIRC - เป็นเวลานานแล้วที่ฉันดูการกำหนดเวลา) ซึ่งมากกว่าลำดับขนาดที่ช้ากว่ารอบตัวประมวลผล
โชคดีที่เราแบ่งที่อยู่ออกเป็นสามส่วน (คอลัมน์แถวและธนาคาร) ซึ่งอนุญาตให้แต่ละส่วนมีขนาดเล็กลงและประมวลผลส่วนเหล่านั้นพร้อมกันมิฉะนั้นเวลาแฝงจะยิ่งนานขึ้น
อย่างไรก็ตามแคชตัวประมวลผลไม่มีปัญหานี้ ไม่เพียง แต่มีขนาดเล็กลงเท่านั้นดังนั้นการแปลที่อยู่จึงเป็นงานที่ง่ายกว่า แต่จริง ๆ แล้วไม่จำเป็นต้องแปลมากกว่าที่อยู่ส่วนเล็ก ๆ (ในบางรุ่นไม่มีการแปลใด ๆ เลย) เพราะมีการเชื่อมโยง ซึ่งหมายความว่าแต่ละเซลล์ของหน่วยความจำแคชจะมีเซลล์หน่วยความจำเพิ่มเติมที่เก็บส่วนที่อยู่ (หรือทั้งหมด) เห็นได้ชัดว่าสิ่งนี้ทำให้แคชยิ่งมีราคาแพงขึ้น แต่ก็หมายความว่าเซลล์ทั้งหมดสามารถสอบถามได้ว่าพวกเขามีหน่วยความจำที่เราต้องการพร้อมกันหรือไม่และหวังว่าจะมีข้อมูลที่ถูกต้องเท่านั้น บนบัสที่เชื่อมต่อหน่วยความจำทั้งหมดกับคอร์โปรเซสเซอร์หลัก สิ่งนี้เกิดขึ้นน้อยกว่าหนึ่งรอบเนื่องจากมันง่ายกว่ามาก
หนึ่งในปรัชญาที่ฉันศึกษาคือการเคลื่อนไหวของฮาร์ดแวร์ที่ได้รับปริมาณมากที่สุดเมื่อเราพูดถึงหน่วยความจำที่ใช้แคชไม่ว่าจะเป็น CPU แคช, บัฟเฟอร์แคชหรือแคชหน่วยความจำสำหรับจุดประสงค์นั้น แรงจูงใจพื้นฐานสามารถทำได้เมื่อมีการเคลื่อนไหวของฮาร์ดแวร์น้อยที่สุดหรือไม่มีเลยในการดึง / อ่าน / เขียนข้อมูลและการดำเนินการเสร็จเร็วขึ้น
การถ่ายโอนข้อมูลจากดิสก์ -> หน่วยความจำหลัก (RAM) (ที่เก็บข้อมูลชั่วคราว) -> แคช CPU (ที่เก็บข้อมูลชั่วคราวขนาดเล็กใกล้กับ CPU สำหรับข้อมูลที่เข้าถึงบ่อย) -> CPU (กำลังประมวลผล)
CPU cache เป็นพื้นที่หน่วยความจำที่เล็กกว่าและเร็วกว่าซึ่งเก็บสำเนาข้อมูลจากตำแหน่งหน่วยความจำหลักที่ใช้ล่าสุด
บัฟเฟอร์แคชเป็นพื้นที่หน่วยความจำหลักที่เก็บสำเนาข้อมูลจากตำแหน่งดิสก์ที่ใช้ล่าสุด
แคชของเบราว์เซอร์คือไดเรกทอรีหรือพื้นที่ใกล้เคียงซึ่งเก็บสำเนาข้อมูลจากเว็บไซต์ที่ผู้ใช้เยี่ยมชมล่าสุด
การอ้างอิง: หน่วยความจำคอมพิวเตอร์ทำงานอย่างไร