หน่วยความจำ RAM: UMA, NUMA และความแตกต่าง

ระบบคอมพิวเตอร์สามารถจำแนกได้ตามวิธีการจัดระเบียบของพวกเขา แรม หน่วยความจำได้รับการออกแบบดังนั้นในสองกลุ่มที่แตกต่างกัน: ระบบ UMA และระบบ NUMA เราอธิบายความแตกต่างพื้นฐานระหว่างวิธีการจัดระบบตามหน่วยความจำเหล่านี้และข้อดีและข้อเสียของแต่ละประเภทคืออะไร

เมื่อออกแบบระบบสิ่งแรกที่วางบนโต๊ะออกแบบคือวิธีการจัดระเบียบ RAM เนื่องจากไม่เพียง แต่บ่งบอกว่าสถาปัตยกรรมของระบบจะเป็นอย่างไร แต่ยังรวมถึงประสิทธิภาพการทำงานต้นทุนการผลิตและ ความสามารถในการขยาย

หน่วยความจำ RAM

หน่วยความจำ RAM: UMA

องค์กร Memoria UMA

UMA เป็นคำย่อของ Uniform Memory Access และหมายถึงระบบทั้งหมดที่ RAM เป็นช่องเดียวที่ใช้ร่วมกันในแง่ของการเข้าถึงโดย ซีพียู และตัวประมวลผลที่เหลือของระบบ การกำหนดค่าประเภทนี้ถูกใช้โดยเฉพาะอย่างยิ่งใน SoC ในปัจจุบันซึ่งส่วนประกอบต่าง ๆ ใช้การเข้าถึงหน่วยความจำร่วมกัน

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

ดังนั้นจึงเป็นวิธีที่ง่ายที่สุดในการสร้างระบบหน่วยความจำในคอมพิวเตอร์ทุกประเภท แต่จะทำให้เกิดปัญหาหลายประการเช่นการที่การเข้าถึงหน่วยความจำร่วมกันลงเอยด้วยการสร้างเอฟเฟกต์การโต้แย้งซึ่งระบบจะสร้าง "รายการรอ ” ในการเข้าถึงข้อมูลซึ่งสามารถบรรเทาได้ด้วยการใช้หน่วยความจำประเภท RAM ที่มีช่องทางการเข้าถึงต่างๆเท่านั้น

หน่วยความจำ RAM: NUMA

ความทรงจำขององค์กร NUMA

องค์กรหน่วยความจำ NUMA หรือ Non-Uniform Memory Access หมายถึงระบบที่ใช้หลุมหน่วยความจำที่แตกต่างกันหลายแห่งในระบบเดียวกัน นี่เป็นกรณีของพีซีที่ตัวอย่างเช่นเราสามารถดูได้ว่ากราฟิกการ์ดมีหน่วยความจำของตัวเองแตกต่างจากแรมหลักของระบบอย่างไร

ระบบ NUMA ไม่ประสบปัญหาความขัดแย้งในการเข้าถึงหน่วยความจำของระบบ UMA แต่จริงๆแล้วเพื่อสื่อสารส่วนประกอบต่าง ๆ ของระบบซึ่งส่งผลให้ระบบมีความซับซ้อนมาก เหตุผลก็คือแต่ละองค์ประกอบจำเป็นต้องมีกลไกการเข้าถึงหน่วยความจำ RAM หลักสำหรับการสื่อสารกับ CPU เช่น GPU มีหน่วย DMA ที่อนุญาตให้เข้าถึง RAM หลักของระบบและทำสำเนาข้อมูลบางอย่างจาก RAM เป็น VRAM

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

ที่อยู่กับองค์กรทางกายภาพ

แรม CPU

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

อาจมีคนคิดตั้งแต่แรกว่าเนื่องจากระบบ UMA มีหน่วยความจำที่ใช้ร่วมกันเสมอในระดับกายภาพดังนั้นจึงจะเหมือนกันในระดับการกำหนดแอดเดรสเนื่องจากเรากำลังพูดถึงพูลหน่วยความจำเดียวกันในระดับกายภาพ ความจริงนั้นแตกต่างกันมากเนื่องจากจำเป็นที่ส่วนประกอบต่างๆจะต้องสอดคล้องกันในแง่ของหน่วยความจำซึ่งหมายความว่าการใช้ตัวอย่างก่อนหน้านี้ถ้าเราเขียนค่า 30 ในที่อยู่ F4 ส่วนประกอบทั้งหมดจะรู้ว่ามีค่า 30 ที่นั่น

CoreLink-แคชเครือข่าย

วิธีที่จะทำให้ส่วนประกอบทั้งหมดของ SoC สอดคล้องกันโดยสิ้นเชิงดังนั้นจึงไม่ต้องใช้ตัวควบคุมหน่วยความจำเดียวกัน แต่ต้องเพิ่มระดับแคชสุดท้ายก่อนที่ตัวควบคุมดังกล่าวซึ่งจะอยู่นอกเหนือจากซีพียู GPU. และส่วนประกอบอื่น ๆ และทุกคนจะเห็นเป็นแคชระดับสุดท้าย

ความจริงของการเพิ่มแคชระดับสุดท้ายก่อนที่ตัวควบคุมหน่วยความจำเป็นเรื่องปกติของระบบ PostPC เนื่องจากทั้งหมดได้รับการออกแบบมาสำหรับ SoC ตั้งแต่เริ่มต้นจึงไม่มีโปรแกรมใดที่ทำสำเนาข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง อย่างไรก็ตามในพีซีสิ่งนี้ไม่ใช่เรื่องธรรมดาและถึงแม้ว่า อินเทล และ เอเอ็มดี ได้เปิดตัว SoC มาหลายปีแล้วโดยที่ส่วนประกอบทั้งหมดรวมกันเป็นหนึ่งเดียวในชิปตัวเดียวการเข้าถึงองค์ประกอบต่างๆภายใน SoC นั้นไม่ได้และบางส่วนของ RAM จะแยกเฉพาะสำหรับส่วนประกอบเฉพาะ ตัวอย่างเช่นเมื่อเรามีกราฟิกในตัวและเรากำลังกำหนดหน่วยความจำจำนวนหนึ่งให้กับกราฟิกดังกล่าวสิ่งที่เรากำลังทำคือการบอก CPU ว่าพื้นที่ของมันไม่สามารถสัมผัสได้เนื่องจากมันไม่ได้อยู่ในการจัดสรร