ทำไมขนาดของแคช L1 จึงไม่เพิ่มขึ้นอย่างมากในช่วง 20 ปีที่ผ่านมา?


35

Intel i486มี 8 กิโลไบต์แคช L1 Intel Nehalemมี 32 KB L1 แคชและการเรียนการสอน 32 KB L1 แคชข้อมูลต่อคอ

จำนวน L1 Cache ไม่ได้เพิ่มขึ้นตามอัตราที่เพิ่มขึ้นของ Clockrate

ทำไมไม่


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

แคชส่วนเกินและค่าใช้จ่ายในการจัดการอาจทำให้ระบบช้าลง พวกเขาพบจุดหวานแล้วมันจะยังคงอยู่
Fiasco Labs

คำตอบ:


17

ข้อความขนาด 30K ของ Wikipedia ไม่มีประโยชน์เท่าคำอธิบายว่าทำไมแคชที่ใหญ่เกินไปจึงไม่เหมาะสม เมื่อแคชมีขนาดใหญ่เกินไปเวลาแฝงในการค้นหารายการในแคช (แฟคตอริ่งที่แคชหายไป) เริ่มเข้าใกล้เวลาแฝงของการค้นหารายการในหน่วยความจำหลัก ฉันไม่ทราบว่าผู้ออกแบบ CPU มีจุดมุ่งหมายเท่าไหร่ แต่ฉันคิดว่ามันคล้ายกับแนวทาง 80-20: คุณต้องการค้นหาข้อมูลที่พบบ่อยที่สุดในแคช 80% ของเวลาและอีก 20 % ของเวลาที่คุณจะต้องไปที่หน่วยความจำหลักเพื่อค้นหา (หรือสัดส่วนของผู้ออกแบบ CPU ที่ตั้งใจ)

แก้ไข: ฉันแน่ใจว่าไม่มีที่ไหนเลยใกล้ 80% / 20% ดังนั้นแทนที่ X และ 1-X :)


6
"เมื่อแคชมีขนาดใหญ่เกินไปเวลาแฝงในการค้นหารายการในแคช (แฟคตอริ่งที่แคชหายไป) เริ่มเข้าใกล้เวลาแฝงของการค้นหารายการในหน่วยความจำหลัก" คุณแน่ใจเกี่ยวกับเรื่องนี้? ตัวอย่างเช่นการเพิ่มจำนวนแรมที่ติดตั้งเป็นสองเท่าจะไม่เพิ่มเวลาในการตอบสนองความล่าช้าทำไมจึงเป็นเช่นนี้กับแคช และทำไม L2 cache จะโตขึ้นด้วย CPU ใหม่หากนี่เป็นปัญหา ฉันผู้เชี่ยวชาญในการนี้ผมอยากจะรู้ :)
sYnfo

2
ฉันได้เตรียมคำอธิบายที่ยาวและใหญ่ของการแคชในซอฟต์แวร์และการวัดเวลาที่แคชของคุณโตเกินตัวและควรถูกทิ้ง / สร้างใหม่ แต่ฉันตัดสินใจว่ามันจะเป็นการดีที่สุดถ้ายอมรับว่าฉันไม่ใช่นักออกแบบฮาร์ดแวร์ :) ไม่ว่าในกรณีใดฉันสงสัยว่าคำตอบสามารถสรุปได้โดยกฎหมายว่าด้วยผลตอบแทนที่ลดลง คือยิ่งไม่ดีกว่าเสมอไป
JMD

3
จากประวัติศาสตร์อันยาวนานของฉันที่เล่นซอกับฮาร์ดแวร์ในระดับต่ำ แต่ไม่ได้เป็นนักออกแบบจริงๆฉันก็บอกว่าเวลาแฝงดูเหมือนจะเกี่ยวข้องกับจำนวนแคชที่เชื่อมโยงไม่ใช่ขนาด ฉันเดาว่าทรานซิสเตอร์พิเศษที่จะเข้าสู่แคชได้พิสูจน์แล้วว่ามีประสิทธิภาพมากกว่าที่อื่นสำหรับประสิทธิภาพโดยรวม
Brian Knoblauch

1
@JMD ฉันจะสนใจคำอธิบายนั้น แต่) แม้ว่าความคิดเห็นอาจไม่ใช่สถานที่ที่ดีที่สุดสำหรับเรื่องนี้ แต่จริง @ ไบรอันดังนั้นถ้าฉันเข้าใจถูกต้องพวกเขาตัดสินใจที่จะใส่ทรานซิสเตอร์น้อยลงในแคช L1 และในเวลาเดียวกันก็ใส่มากขึ้นใน L2 ซึ่งช้าลงอย่างมาก? โปรดใช้ความผิดไม่มีผมแค่อยากรู้ :)
sYnfo

10

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


1
คำตอบที่น่าสนใจที่สุด :)
GameDeveloper

1
ฉันเชื่อว่านี่คือเหตุผล แต่ขอให้ฉันให้หมายเลข ขนาดหน้าในสถาปัตยกรรม x86 คือ 4096 ไบต์ แคชต้องการเลือกที่เก็บแคชที่จะค้นหารายการของบรรทัดแคช (64 ไบต์) ก่อนที่การแปลหน้าจะเสร็จสมบูรณ์ มันจะมีราคาแพงที่จะต้องตัดสินใจระหว่างรายการมากเกินไปในที่ฝากข้อมูลดังนั้นที่เก็บข้อมูลแต่ละใบจะมีเพียง 8 รายการเท่านั้น ด้วยเหตุนี้ในช่วงสิบปีที่ผ่านมา x86 cpus ที่มีราคาแพงทั้งหมดมีขนาด 32768 ไบต์ (512 แคชบรรทัด) ในแคชข้อมูล L1
b_jonas

เนื่องจากเป็นการยากที่จะเพิ่มขึ้น cpus เพิ่มระดับกลางของแคชดังนั้นเราจึงแยกแคช L2 และ L3 ตอนนี้ นอกจากนี้แคชรหัส L1 และแคชข้อมูล L1 ก็แยกกันเพราะ CPU รู้ว่ามันกำลังเข้าถึงรหัสหรือข้อมูล
b_jonas

8

ขนาดแคชได้รับอิทธิพลจากปัจจัยหลายประการ:

  1. ความเร็วของสัญญาณไฟฟ้า (ควรเป็นถ้าไม่ใช่ความเร็วของแสง, มีขนาดเท่ากัน):

    • 300 เมตรในหนึ่งไมโครวินาที
    • 30 เซนติเมตรในหนึ่งนาโนวินาที
  2. ต้นทุนทางเศรษฐกิจ (วงจรที่ระดับแคชแตกต่างกันอาจแตกต่างกันและขนาดแคชบางอย่างอาจไม่คู่ควร)

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

หากขนาดแคช L1 ไม่เปลี่ยนแปลงหลังจาก 64kb เป็นเพราะมันไม่มีค่าอีกต่อไป โปรดทราบว่าขณะนี้มี "วัฒนธรรม" ที่ดีกว่าเกี่ยวกับแคชและโปรแกรมเมอร์หลายคนเขียนโค้ด "เป็นมิตรกับแคช" และ / หรือใช้คำแนะนำ prefetech เพื่อลดเวลาแฝง

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


6

ฉันเชื่อว่าสามารถสรุปได้โดยเพียงระบุว่าแคชยิ่งใหญ่เท่าไรก็ยิ่งเข้าถึงได้ช้าลงเท่านั้น ดังนั้นแคชที่ใหญ่กว่าก็ไม่ได้ช่วยอะไรเพราะแคชได้รับการออกแบบมาเพื่อลดการสื่อสารบัสช้าลงสู่ RAM

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

(ฉันเป็นคนซอฟต์แวร์ดังนั้นหวังว่านี่จะไม่ผิดอย่างเลวร้าย)


3

จากแคช L1 :

แคชระดับ 1 หรือแคชหลักอยู่บน CPU และใช้สำหรับการจัดเก็บชั่วคราวของคำแนะนำและข้อมูลที่จัดเรียงเป็นกลุ่มขนาด 32 ไบต์ แคชหลักเป็นรูปแบบการจัดเก็บที่เร็วที่สุด เพราะมันสร้างขึ้นในชิปที่มีศูนย์รอรัฐ (ล่าช้า) อินเตอร์เฟซกับหน่วยประมวลผลการดำเนินการที่จะมีข้อ จำกัด ในขนาด

SRAM ใช้ทรานซิสเตอร์สองตัวต่อบิตและสามารถเก็บข้อมูลได้โดยไม่ต้องอาศัยความช่วยเหลือจากภายนอกตราบใดที่พลังงานจ่ายให้กับวงจร สิ่งนี้ตรงกันข้ามกับ dynamic RAM (DRAM) ซึ่งต้องรีเฟรชหลายครั้งต่อวินาทีเพื่อเก็บเนื้อหาข้อมูล

หน่วยประมวลผล P55 MMX ของ Intel ซึ่งเปิดตัวเมื่อต้นปี 1997 นั้นสำคัญสำหรับการเพิ่มขนาดแคชระดับ 1 ให้เป็น 32KB ชิพ AMD K6 และ Cyrix M2 เปิดตัวในปีนั้นเพิ่มขึ้น ante เพิ่มเติมโดยให้แคชระดับ 1 ของ 64KB 64Kb ยังคงเป็นขนาดแคช L1 มาตรฐานแม้ว่าโปรเซสเซอร์หลายคอร์อาจใช้ประโยชน์ได้แตกต่างกัน

แก้ไข: โปรดทราบว่าคำตอบนี้มาจาก 2009 และ CPU มีการพัฒนาอย่างมากในช่วง 10 ปีที่ผ่านมา หากคุณมาที่โพสต์นี้อย่าตอบคำถามทั้งหมดของเราที่นี่อย่างจริงจัง


เซลล์ SRAM ทั่วไปประกอบด้วย MOSFET หกตัว แต่ละบิตใน SRAM จะถูกเก็บไว้ในทรานซิสเตอร์สี่ตัว (M1, M2, M3, M4) ที่รวมกันเป็นอินเวอร์เตอร์ข้ามคู่ แหล่งที่มาที่ สอง
lukecampbell

นี่เป็นเพียงคำอธิบายสถานการณ์และไม่ได้อธิบายอะไรเกี่ยวกับสาเหตุ
Eonil

@Eonil - เราไม่สามารถให้คำตอบว่า "ทำไม" ถ้าเราต้องการ อย่างไรก็ตามการลดลงของผลตอบแทนต่อประสิทธิภาพนั้นเป็นคำอธิบายที่สมเหตุสมผล เมื่อคำถามถูกเขียนเกือบหนึ่งทศวรรษที่ผ่านมามันมีราคาแพงกว่ามากเพื่อเพิ่มขนาดโดยไม่รวมถึงประสิทธิภาพ คำตอบนี้พยายามตอบคำถามที่ต้องการอย่างน้อยที่สุด
Ramhound

-4

ขนาดแคช L1 ที่แท้จริงคือคอขวดที่ใหญ่ที่สุดสำหรับความเร็วในคอมพิวเตอร์ที่ทันสมัย ขนาดแคช L1 ที่น่าสมเพชอาจเป็นของหวานสำหรับราคา แต่ไม่ใช่ประสิทธิภาพ L1 cache สามารถเข้าถึงได้ที่ความถี่ GHz เช่นเดียวกับการทำงานของโปรเซสเซอร์ซึ่งแตกต่างจากการเข้าถึง RAM ช้าลง 400x มันมีราคาแพงและยากที่จะนำไปใช้ในการออกแบบ 2 มิติในปัจจุบันอย่างไรก็ตามเป็นเทคนิคที่ทำได้และ บริษัท แรกที่ประสบความสำเร็จจะมีคอมพิวเตอร์ 100 ครั้งเร็วขึ้นและยังคงทำงานได้ดีสิ่งที่จะสร้างนวัตกรรมที่สำคัญในหลาย ๆ เขตข้อมูลและเป็นเพียง accessbile ปัจจุบันผ่านการกำหนดค่า ASIC / FPGA ที่มีราคาแพงและยาก ปัญหาเหล่านี้บางส่วนเกี่ยวข้องกับปัญหากรรมสิทธิ์ / IP และความโลภขององค์กรที่ทอดยาวไปหลายทศวรรษ ซึ่งกลุ่มวิศวกรที่อ่อนแอและไม่มีประสิทธิภาพเป็นเพียงคนเดียวที่เข้าถึงงานด้านในได้และผู้ที่ได้รับคำสั่งให้เดินทัพเพื่อบีบเรื่องไร้สาระที่คุ้มค่า การวิจัยที่มีการแปรรูปมากเกินไปมักนำไปสู่ความซบเซาทางเทคโนโลยีหรือการควบคุมปริมาณ (เช่นที่เราเห็นในยานอวกาศและรถยนต์โดยผู้ผลิตรายใหญ่และในไม่ช้าจะเป็นยา) โอเพนซอร์สและสิทธิบัตรที่สมเหตุสมผลและกฎเกณฑ์ความลับทางการค้าที่เป็นประโยชน์ต่อนักประดิษฐ์และสาธารณะ (แทนที่จะเป็นหัวหน้า บริษัท และผู้ถือหุ้น) จะช่วยได้มากที่นี่ มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามาหลายสิบปีแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี และผู้ที่ได้รับคำสั่งให้เดินทัพเพื่อบีบเรื่องไร้สาระที่คุ้มค่า การวิจัยที่มีการแปรรูปมากเกินไปมักนำไปสู่ความซบเซาทางเทคโนโลยีหรือการควบคุมปริมาณ (เช่นที่เราเห็นในยานอวกาศและรถยนต์โดยผู้ผลิตรายใหญ่และในไม่ช้าจะเป็นยา) โอเพนซอร์สและสิทธิบัตรที่สมเหตุสมผลและกฎเกณฑ์ความลับทางการค้าที่เป็นประโยชน์ต่อนักประดิษฐ์และสาธารณะ (แทนที่จะเป็นหัวหน้า บริษัท และผู้ถือหุ้น) จะช่วยได้มากที่นี่ มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามาหลายสิบปีแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี และผู้ที่ได้รับคำสั่งให้เดินทัพเพื่อบีบเรื่องไร้สาระที่คุ้มค่าให้กับนักปกป้อง การวิจัยที่มีการแปรรูปมากเกินไปมักนำไปสู่ความซบเซาทางเทคโนโลยีหรือการควบคุมปริมาณ (เช่นที่เราเห็นในยานอวกาศและรถยนต์โดยผู้ผลิตรายใหญ่และในไม่ช้าจะเป็นยา) โอเพนซอร์ซและสิทธิบัตรที่สมเหตุสมผลและระเบียบความลับทางการค้าที่เป็นประโยชน์ต่อนักประดิษฐ์และสาธารณะ (แทนที่จะเป็นหัวหน้า บริษัท และผู้ถือหุ้น) จะช่วยได้มากที่นี่ มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามานานหลายทศวรรษแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี การวิจัยที่มีการแปรรูปมากเกินไปมักนำไปสู่ความซบเซาทางเทคโนโลยีหรือการควบคุมปริมาณ (เช่นที่เราเห็นในยานอวกาศและรถยนต์โดยผู้ผลิตรายใหญ่และในไม่ช้าจะเป็นยา) โอเพนซอร์ซและสิทธิบัตรที่สมเหตุสมผลและระเบียบความลับทางการค้าที่เป็นประโยชน์ต่อนักประดิษฐ์และสาธารณะ (แทนที่จะเป็นหัวหน้า บริษัท และผู้ถือหุ้น) จะช่วยได้มากที่นี่ มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามานานหลายทศวรรษแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี การวิจัยที่มีการแปรรูปมากเกินไปมักนำไปสู่ความซบเซาทางเทคโนโลยีหรือการควบคุมปริมาณ (เช่นที่เราเห็นในยานอวกาศและรถยนต์โดยผู้ผลิตรายใหญ่และในไม่ช้าจะเป็นยา) โอเพนซอร์ซและสิทธิบัตรที่สมเหตุสมผลและระเบียบความลับทางการค้าที่เป็นประโยชน์ต่อนักประดิษฐ์และสาธารณะ (แทนที่จะเป็นหัวหน้า บริษัท และผู้ถือหุ้น) จะช่วยได้มากที่นี่ มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามานานหลายทศวรรษแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามานานหลายทศวรรษแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี มันไม่ควรเป็นเรื่องง่ายสำหรับการพัฒนาเพื่อสร้างแคช L1 ที่ใหญ่ขึ้นและนี่ควรและควรได้รับการพัฒนามานานหลายทศวรรษแล้ว เราจะก้าวหน้าต่อไปอีกมากในคอมพิวเตอร์และสาขาวิทยาศาสตร์มากมายที่ใช้มันหากเรามี

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