ความอดทนในการตอบสนอง

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

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

เวลาในการตอบสนองมักจะเพิ่มขึ้นตามขนาดของเครื่องเนื่องจากโหนดที่มากขึ้นหมายถึงการสื่อสารที่สัมพันธ์กับการคำนวณมากขึ้นการเพิ่มขึ้นในเครือข่ายสำหรับการสื่อสารทั่วไปและมีแนวโน้มที่จะเกิดการทะเลาะกันมากขึ้น เป้าหมายหลักของการออกแบบฮาร์ดแวร์คือการลดเวลาแฝงของการเข้าถึงข้อมูลในขณะที่รักษาแบนด์วิดท์ที่สูงและปรับขนาดได้

ภาพรวมของค่าเผื่อเวลาแฝง

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

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

ความอดทนในการตอบสนองในการส่งข้อความที่ชัดเจน

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

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

ค่าเผื่อเวลาแฝงในพื้นที่ที่อยู่ที่ใช้ร่วมกัน

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

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

บล็อกการถ่ายโอนข้อมูลในพื้นที่ที่อยู่ที่ใช้ร่วมกัน

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

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

การดำเนินการต่อเหตุการณ์เวลาแฝงที่ผ่านมาในพื้นที่ที่อยู่ที่ใช้ร่วมกัน

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

การสื่อสารล่วงหน้าในพื้นที่ที่อยู่ที่ใช้ร่วมกัน

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

ในกรณีนี้เนื่องจากข้อมูลที่แชร์ไม่ได้ถูกแคชข้อมูลที่ดึงไว้ล่วงหน้าจะถูกนำเข้าสู่โครงสร้างฮาร์ดแวร์พิเศษที่เรียกว่าบัฟเฟอร์การดึงข้อมูลล่วงหน้า เมื่อคำถูกอ่านลงในรีจิสเตอร์ในการทำซ้ำครั้งถัดไปคำจะถูกอ่านจากส่วนหัวของบัฟเฟอร์ prefetch แทนที่จะอ่านจากหน่วยความจำ หากเวลาในการตอบสนองที่จะซ่อนมีขนาดใหญ่กว่าเวลาในการคำนวณการวนซ้ำแบบลูปเดียวเราจะดึงข้อมูลการทำซ้ำหลาย ๆ ครั้งไว้ล่วงหน้าและอาจมีหลายคำในบัฟเฟอร์การดึงข้อมูลล่วงหน้าพร้อมกัน

มัลติเธรดในพื้นที่ที่อยู่ที่ใช้ร่วมกัน

ในแง่ของการซ่อนเวลาแฝงประเภทต่างๆการใช้งานมัลติเธรดที่รองรับฮาร์ดแวร์อาจเป็นเทคนิคที่หลากหลาย มีข้อดีเชิงแนวคิดต่อไปนี้เหนือแนวทางอื่น ๆ -

  • ไม่จำเป็นต้องมีการวิเคราะห์ซอฟต์แวร์พิเศษหรือการสนับสนุน

  • เนื่องจากมีการเรียกใช้แบบไดนามิกจึงสามารถจัดการกับสถานการณ์ที่คาดเดาไม่ได้เช่นข้อขัดแย้งของแคช ฯลฯ เช่นเดียวกับสถานการณ์ที่คาดเดาได้

  • เช่นเดียวกับการดึงข้อมูลล่วงหน้าจะไม่เปลี่ยนรูปแบบความสอดคล้องของหน่วยความจำเนื่องจากไม่ได้จัดลำดับการเข้าถึงใหม่ภายในเธรด

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

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