สารบัญ:

การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน
การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน

วีดีโอ: การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน

วีดีโอ: การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL: 4 ขั้นตอน
วีดีโอ: #shorts #หินปูนเกาะหนามาก #scaling 2024, พฤศจิกายน
Anonim
การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL
การออกแบบตัวควบคุมแคชเชื่อมโยงชุดสี่ทางอย่างง่ายใน VHDL

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

ขั้นตอนที่ 1: ข้อมูลจำเพาะ

ข้อมูลจำเพาะ
ข้อมูลจำเพาะ

ดูข้อมูลจำเพาะของ Cache Controller ที่แสดงไว้ที่นี่อย่างรวดเร็ว:

  • Four-way Set Associative Cache Controller (ไปที่ลิงค์นี้หากกำลังมองหา Direct Mapped Cache Controller)
  • ธนาคารเดียว บล็อกแคช
  • นโยบายการเขียนผ่านเกี่ยวกับการเขียนฮิต
  • นโยบายเขียนรอบเกี่ยวกับการเขียนพลาด
  • นโยบายทดแทน Tree Pseudo-LRU (pLRU)
  • Tag Array ภายในคอนโทรลเลอร์
  • พารามิเตอร์ที่กำหนดค่าได้

ข้อกำหนดเริ่มต้นสำหรับ Cache Memory และ Main Memory นั้นเหมือนกับจากคำสั่งก่อนหน้าของฉัน โปรดอ้างอิงถึงพวกเขา

ขั้นตอนที่ 2: มุมมอง RTL ของทั้งระบบ

มุมมอง RTL ของทั้งระบบ
มุมมอง RTL ของทั้งระบบ

การแสดง RTL ที่สมบูรณ์ของ Top Module จะแสดงในรูป (ไม่รวมโปรเซสเซอร์) ข้อกำหนดเริ่มต้นสำหรับรถโดยสารคือ:

  • Data Buses ทั้งหมดเป็นบัส 32 บิต
  • แอดเดรสบัส = บัส 32 บิต (แต่หน่วยความจำสามารถระบุแอดเดรสได้เพียง 10 บิตที่นี่)
  • Data Block = 128 บิต (ไวด์แบนด์วิดท์บัสสำหรับการอ่าน)
  • ส่วนประกอบทั้งหมดขับเคลื่อนด้วยนาฬิกาเดียวกัน

ขั้นตอนที่ 3: ผลการทดสอบ

Top Module ได้รับการทดสอบโดยใช้ Test Bench ซึ่งจำลองโปรเซสเซอร์ที่ไม่ใช่แบบไปป์ไลน์ เช่นเดียวกับที่เราทำในคำสั่งสุดท้าย Test Bench สร้างคำขออ่าน/เขียนข้อมูลไปยังหน่วยความจำบ่อยครั้ง สิ่งนี้เลียนแบบคำสั่ง "โหลด" และ "จัดเก็บ" ทั่วไป ซึ่งพบได้ทั่วไปในโปรแกรมทั้งหมดที่ดำเนินการโดยโปรเซสเซอร์

ผลการทดสอบได้ตรวจสอบการทำงานของ Cache Controller เรียบร้อยแล้ว ต่อไปนี้เป็นสถิติการทดสอบที่สังเกตได้:

  • สัญญาณการอ่าน/เขียน Miss และ Hit ทั้งหมดถูกสร้างขึ้นอย่างถูกต้อง
  • การดำเนินการอ่าน/เขียนข้อมูลทั้งหมดประสบความสำเร็จในทั้งสี่วิธี
  • อัลกอริธึม pLRU ได้รับการตรวจสอบเรียบร้อยแล้วสำหรับการแทนที่แคชไลน์
  • ไม่พบปัญหาความไม่ต่อเนื่องของข้อมูล/ความไม่สอดคล้องกัน
  • การออกแบบได้รับการตรวจสอบเวลาสำหรับ Maxm เรียบร้อยแล้ว ความถี่สัญญาณนาฬิกาของการทำงาน = 100 MHz ในบอร์ด Xilinx Virtex-4 ML-403 (ทั้งระบบ), 110 MHz สำหรับ Cache Controller เพียงอย่างเดียว
  • บล็อกแรมถูกอนุมานสำหรับหน่วยความจำหลัก อาร์เรย์อื่นๆ ทั้งหมดถูกนำไปใช้กับ LUT

ขั้นตอนที่ 4: ไฟล์แนบ

ไฟล์ต่อไปนี้แนบมากับบล็อกนี้:

  • ไฟล์. VHD ของ Cache Controller, Cache Data Array, ระบบหน่วยความจำหลัก
  • ม้านั่งทดสอบ
  • เอกสารเกี่ยวกับ Cache Controller

หมายเหตุ:

  • อ่านเอกสารประกอบเพื่อทำความเข้าใจข้อกำหนดของ Cache Controller ที่นำเสนอที่นี่
  • การเปลี่ยนแปลงใดๆ ในโค้ดจะขึ้นอยู่กับโมดูลอื่นๆ ดังนั้น การเปลี่ยนแปลงควรทำอย่างรอบคอบ
  • ให้ความสนใจกับความคิดเห็นและส่วนหัวทั้งหมดที่ฉันได้ให้ไว้
  • หากด้วยเหตุผลใดก็ตาม Block RAM จะไม่ถูกอนุมานสำหรับหน่วยความจำหลัก ลดขนาดของหน่วยความจำ ตามด้วยการเปลี่ยนแปลงความกว้างของแอดเดรสบัสในไฟล์ และอื่นๆ เพื่อให้สามารถใช้หน่วยความจำเดียวกันได้ทั้งบน LUT หรือ RAM แบบกระจาย วิธีนี้จะช่วยประหยัดเวลาและทรัพยากรในการกำหนดเส้นทาง หรือไปที่เอกสาร FPGA เฉพาะและค้นหาโค้ดที่เข้ากันได้สำหรับ Block RAM และแก้ไขโค้ดตามนั้น และใช้ข้อกำหนดความกว้างของบัสแอดเดรสเดียวกัน เทคนิคเดียวกันสำหรับ Altera FPGA

แนะนำ: