ทำไม L1 cache จึงเร็วกว่า L2 cache


14

ฉันพยายามที่จะเข้าใจว่าทำไมความทรงจำแคชของ CPU จึงเร็วกว่าหน่วยความจำอื่น เมื่อเปรียบเทียบหน่วยความจำแคชกับหน่วยความจำหลักมีความแตกต่างในประเภทหน่วยความจำ (SRAM กับ DRAM) และปัญหาในพื้นที่ แต่โดยทั่วไปแล้ว L1 และ L2 จะอยู่บนชิปตัวเดียวกันหรืออย่างน้อยก็ในแบบเดียวกันและฉันคิดว่ามันเป็นหน่วยความจำประเภทเดียวกัน เหตุใด L1 จึงเร็วกว่า


9
เพราะมันเป็นแบบนั้น
Ignacio Vazquez-Abrams

มีหลายวิธีในการสร้าง RAM ประเภทเดียวกัน วิธีการบางอย่างทำให้ RAM ที่เร็วกว่า RAM ที่สร้างขึ้นด้วยวิธีอื่น
Ignacio Vazquez-Abrams

ด้วยเหตุผลเดียวกันว่าทำไม DDR RAM ของคุณเร็วกว่า HDD ของคุณ ...
hassan789

1
ที่เกี่ยวข้อง: คำตอบของฉันและคำถาม SO เกี่ยวกับขนาดแคชยังอธิบายเหตุผลบางประการของความเร็ว / การสิ้นเปลืองพลังงานด้วยว่ามีแคชหลายระดับ โดยพื้นฐานแล้วการทำแคชให้พลังงานอย่างรวดเร็วเป็นพิเศษทำให้สิ้นเปลืองพลังงานและพื้นที่ในการทำงานมากขึ้นในแบบคู่ขนานและเข้ากันไม่ได้กับขนาด / ความสัมพันธ์ขนาดใหญ่ที่คุณต้องการในแคชระดับสุดท้าย
Peter Cordes

คำตอบ:


24

ไม่พวกเขาไม่ใช่แรมประเภทเดียวกันแม้ว่าพวกเขาจะอยู่บนชิปตัวเดียวกันที่ใช้กระบวนการผลิตเดียวกัน

ในทุกแคชแคช L1 ต้องมีเวลาในการเข้าถึงที่เร็วที่สุด (เวลาแฝงต่ำสุด) เทียบกับปริมาณที่ต้องใช้เพื่อให้ได้อัตราการเข้าชมที่เพียงพอ ดังนั้นมันจึงถูกสร้างขึ้นโดยใช้ทรานซิสเตอร์ที่มีขนาดใหญ่ขึ้นและแทร็กโลหะที่กว้างขึ้นแลกเปลี่ยนกับพื้นที่และพลังงานเพื่อความเร็ว แคชระดับสูงจำเป็นต้องมีความจุที่สูงขึ้น แต่สามารถช้าลงได้ดังนั้นจึงใช้ทรานซิสเตอร์ขนาดเล็กที่บรรจุแน่นมากขึ้น


3
นี่คือสิ่งที่ฉันกำลังมองหาขอบคุณ คุณรู้แหล่งที่ดีที่ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับความแตกต่างได้หรือไม่?
ConditionRacer

ไม่ไม่ใช่ทันใดนั้น รายละเอียดของการแลกเปลี่ยนพื้นที่ / พลังงาน / เวลาเหล่านี้รวมถึงตัวเลือกเกี่ยวกับความจุแคชและสถาปัตยกรรมเชื่อมโยงอย่างใกล้ชิดกับรายละเอียดกรรมสิทธิ์ของกระบวนการของผู้ผลิตจึงมีการเผยแพร่น้อยมาก (ถ้ามี) ฉันพูดได้แค่ศัพท์ทั่วไปเท่านั้น
Dave Tweed

10
L1 มีขนาดเล็กลงซึ่งหมายถึงการถ่ายทอดสัญญาณข้ามวงจรนาฬิกาน้อยลง: บ่อยครั้งที่ขนาดของ L1 ถูกตัดสินว่าเป็นหน่วยความจำที่ใหญ่ที่สุดที่สามารถเข้าถึงได้ในนาฬิกา 1 (หรือ 2)
Brian Drummond

6
นอกเหนือจากจุดของ Brian Drummond แล้ว L1 ยังใช้การเข้าถึงข้อมูลแท็กแบบขนาน โดยทั่วไปแล้ว L2 จะเข้าถึงแท็กก่อน (กำหนดว่าจะให้ทางไหนถ้ามีการเข้าชม) จากนั้นข้อมูลเพิ่มระยะเวลาในการตอบสนอง แต่ประหยัดพลังงาน (โดยทั่วไปแล้วการเข้าถึง L2 จะเริ่มขึ้นหลังจากมีการยืนยัน L1 miss ซึ่งจะเป็นการเพิ่มเวลาแฝงที่มีประสิทธิภาพ)
Paul A. Clayton

@BrianDrummond - เล็กลงทั้งในแง่ของการรับสายและความลึกของประตู (ฉันไม่คิดว่ามันชัดเจนจากความคิดเห็นของคุณ)
Sean Houlihane

5

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

แคช L1: การเข้าถึงรอบนาฬิกา 2-3 ครั้ง

L2 Cache: ~ 10 รอบการเข้าถึงนาฬิกา

L3 Cache: ~ 20-30 นาฬิการอบการเข้าถึง

การออกแบบแคช L1 ควรเพิ่มอัตราการเข้าชมสูงสุด (ความน่าจะเป็นของที่อยู่คำสั่งที่ต้องการหรือที่อยู่ข้อมูลที่อยู่ในแคช) ในขณะที่รักษาเวลาแฝงของแคชให้ต่ำที่สุดเท่าที่จะทำได้ Intel ใช้แคช L1 โดยมีเวลาหน่วง 3 รอบ แคช L2 ใช้ร่วมกันระหว่างแคช L1 หนึ่งรายการขึ้นไปและมักจะมีขนาดใหญ่กว่ามาก ในขณะที่แคช L1 ได้รับการออกแบบมาเพื่อเพิ่มอัตราการเข้าชมสูงสุดแคช L2 ได้รับการออกแบบมาเพื่อลดการพลาดจุดโทษ (การหน่วงเวลาที่เกิดขึ้นเมื่อการพลาด L1 เกิดขึ้น) สำหรับชิปที่มีแคช L3 วัตถุประสงค์มีวัตถุประสงค์เฉพาะกับการออกแบบชิป สำหรับ Intel แคช L3 ปรากฏตัวครั้งแรกในระบบมัลติโปรเซสเซอร์ 4 ทาง (โปรเซสเซอร์ Pentium 4 Xeon MP) ในปี 2545 แคช L3 ในแง่นี้ลดความล่าช้าอย่างมากในสภาพแวดล้อมแบบมัลติเธรดและโหลด FSB ออก ในเวลานั้น

อ้างที่มาที่นี่จาก "Pinhedd ของ" การตอบสนอง


1
L1 ใช้สำหรับข้อมูลเช่นกันโดยทั่วไป แต่มันเป็นความจริงที่มักจะ L1 ข้อมูลและคำแนะนำ L1 จะแยกจากกันในขณะที่ L2 ที่ใช้ร่วมกัน: programmers.stackexchange.com/questions/44731/... (เหตุผลหนึ่งที่จะสามารถนำมาใช้ร่วมกันคือว่ามันมีวิธีการมากขึ้น )
Guy Sirton

1
เป็นเรื่องปกติที่โปรเซสเซอร์จะมีคำสั่งและแคชข้อมูลแยกกันที่ระดับ L1 เป็นจริงอย่างแน่นอนของชิป x86 และ SPARC ในภายหลัง และแคชคำสั่ง L1 บางตัวไม่ได้เก็บคำสั่งถอดรหัสไว้ Pentium 4 เก็บคำสั่งถอดรหัสไว้ แต่จากนั้น Intel ก็กลับไปใช้แคช I แบบปกติจากนั้นจึงเพิ่มคำสั่งถอดรหัสที่ถอดรหัสกลับเข้าไปในชิปของพวกเขา
Craig S. Anderson

3

มีสาเหตุหลายประการที่ทำให้ความเร็วแปรผกผันกับขนาด สิ่งแรกที่อยู่ในใจคือการครอบครองทางกายภาพของตัวนำที่ซึ่งการแพร่กระจายสัญญาณฉัน จำกัด ปัจจัยบางอย่างจากความเร็วของแสง การดำเนินการอาจใช้เวลานานเท่าที่มันจะใช้สัญญาณไฟฟ้าในการเดินทางระยะทางที่ยาวที่สุดภายในแผ่นหน่วยความจำและด้านหลัง อีกเหตุผลที่เกี่ยวข้องคือการแยกโดเมนนาฬิกา ซีพียูแต่ละตัววิ่งออกจากตัวกำเนิดสัญญาณนาฬิกาของตัวเองซึ่งช่วยให้ซีพียูทำงานบนนาฬิกาแบบหลาย GHz แคชระดับ 1 ทำงานที่และซิงค์กับนาฬิกา CPU ซึ่งเร็วที่สุดในระบบ ในทางกลับกันแคชระดับ 2 จะต้องให้บริการ CPU จำนวนมากและทำงานในโดเมนนาฬิกาที่ต่างกัน (ช้ากว่า) ไม่เพียง แต่นาฬิกา L2 จะช้าลง (ไทล์ขนาดใหญ่) แต่การข้ามขอบเขตของโดเมนนาฬิกาจะเพิ่มความล่าช้าอีกครั้ง แน่นอนว่ายังมีปัญหาเรื่องแฟนเอาต์ (ที่กล่าวถึงไปแล้ว)


1

นอกเหนือจากลักษณะของประสิทธิภาพโดยธรรมชาติแล้วท้องที่ยังมีบทบาท (L1 ใกล้เคียงกับ CPU มากขึ้น) ตามที่โปรแกรมเมอร์ทุกคนควรรู้เกี่ยวกับหน่วยความจำ :

เป็นที่น่าสนใจที่จะทราบว่าสำหรับแคช L2 แบบ on-die ส่วนใหญ่ (อาจเป็นส่วนใหญ่) ของเวลาในการเข้าถึงนั้นเกิดจากการล่าช้าของสาย นี่เป็นข้อ จำกัด ทางกายภาพซึ่งจะยิ่งแย่ลงเมื่อเพิ่มขนาดแคช เฉพาะกระบวนการหดตัว (ตัวอย่างเช่นเปลี่ยนจาก 60nm สำหรับ Merom เป็น 45nm สำหรับ Penryn ในรุ่นต่างๆของ Intel) สามารถปรับปรุงตัวเลขเหล่านั้นได้


ฉันคิดว่าส่วนใหญ่จะใช้กับที่แคชมีขนาดใหญ่ - สิ่งนี้ไม่ได้ใช้กับหน่วยประมวลผลทุกประเภท
Sean Houlihane
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.