ناقل PCIe: هل تؤثر القيود المادية على معدل النقل؟

سأبدأ من بعيد. حدث في الشتاء الماضي أن صنعت جهاز USB بجوهر مستضاف في FPGA. بالطبع ، أردت حقًا التحقق من النطاق الترددي الحقيقي لهذه الحافلة. بعد كل شيء ، في وحدة التحكم - هناك الكثير للقيام به. يمكنك دائمًا القول أن هناك تأخيرًا أو هناك. في حالة FPGAs ، أرى كتلة تضخ البيانات ، لذلك أخبرني أن هناك بيانات فيها. لكنني حددت أنه تمت معالجة كل شيء ، وأنا على استعداد لقبول جزء جديد (في نفس الوقت ، يتلقى بالفعل بيانات في المخزن المؤقت الثاني لنفس نقطة النهاية). رائع ، قم بتعيين الجاهزية من أول مقياس وشاهد ما يحدث عندما يمكن لـ USB "المطرقة" دون توقف.



لكن اتضح شيء مدهش. إذا كان جهاز USB 2.0 عالقًا في الموصل "الأزرق" (وهو USB 3.0) ، فإن السرعة واحدة. إذا كان باللون "الأسود" - آخر. هذا هو الرسم البياني الخاص بي لسرعة تسجيل USB مقابل طول البيانات. USB3 و USB2 هما نوع الموصل ، والجهاز دائمًا USB 2.0 HS.



حاولت في آلات مختلفة. والنتيجة قريبة. لا أحد يستطيع أن يشرح لي هذه الظاهرة. في وقت لاحق ، وجدت السبب الأكثر احتمالا. والسبب بسيط جدا. فيما يلي خصائص وحدة تحكم USB 2.0:



وحدات التحكم التي تتحكم في الموصل "الأزرق" لا تفعل ذلك. والفرق هو حوالي 20 بالمائة.

من هذا نستنتج أن قيود النطاق الترددي لا تحددها دائمًا الخواص الفيزيائية للحافلة. في بعض الأحيان يتم فرض بعض الأشياء الأخرى. نحن نمر بهذه المعرفة هذه الأيام.

التجربة الأولية


لذا بدأ كل شيء دنيوي جدا. كان هناك فحص لبرنامج واحد. تم فحص عملية كتابة البيانات إلى عدة أقراص في وقت واحد. الجهاز بسيط: هناك لوحة أم بأربع فتحات PCIe. يتم إدخال بطاقات متطابقة تمامًا مع وحدات تحكم AHCI في جميع الفتحات ، كل منها يدعم PCIe x1 حصريًا.



كل بطاقة تخدم 4 محركات أقراص.
ثم يتم الكشف عن التأثير التالي. نأخذ قرصًا واحدًا ونبدأ في كتابة البيانات عليه. نحصل على سرعة من 180 إلى 220 ميجا بايت في الثانية (فيما يلي ، ميجا بايت هي 1024 * 1024 بايت):



نأخذ محرك الأقراص الثاني. سرعة الكتابة عليه من 170 إلى 190 ميجابايت / ثانية:



نكتب على الفور إلى كليهما - نحصل على تخفيض السرعة:



السرعة الإجمالية حوالي 290 ميجابايت / ثانية. لكن الشيء المدهش هو أننا قمنا بتصحيح هذا البرنامج (على ما يبدو) على نفس محركات الأقراص ، ولكن على قنوات أخرى. وكان كل شيء على ما يرام هناك. ننتقل بسرعة إلى تلك القنوات (ستمر ببطاقة أخرى) ، نحصل على وظيفة ممتازة:



سأشتري فتحة في منطقة جيدة


يجب أن أقول على الفور أنه لا يستحق لوم كل شيء على مكونات شخص آخر. كل شيء هنا مكتوب من قبلنا ، بدءًا من البرنامج نفسه ، وانتهاءً بالسائقين. لذلك يمكن مراقبة مسار البيانات بالكامل. يأتي غير معروف فقط عندما ذهب الطلب إلى الجهاز.

بعد التحليل الأولي ، اتضح أن السرعة ليست محدودة في فتحات PCIe "الطويلة" ومحدودة في الفتحات "القصيرة". طويلة منها حيث يمكنك إدراج بطاقات x16 (على الرغم من أن واحدة منها تعمل في وضع لا يزيد عن x4) ، والأخرى القصيرة مخصصة فقط لبطاقات x1.



كل شيء سيكون على ما يرام ، ولكن وحدات التحكم في البطاقات الحالية ، من حيث المبدأ ، لا يمكن أن تعمل في وضع آخر غير PCIex1. أي أن جميع وحدات التحكم يجب أن تكون في ظروف متطابقة تمامًا ، بغض النظر عن طول الفتحة! لكن لا. من يعيش في "طويل" - يعمل بسرعة ، من في "قصير" - ببطء. جيد. وبسرعة - ما مدى سرعة ذلك؟ أضف محرك أقراص ثالث ، اكتب إلى الثلاثة.

في الفتحات "القصيرة" ، لا يزال الحد حوالي 290 ميجابايت / ثانية:



في "الطويل" - في منطقة 400 ميجابايت / ثانية:





لقد بحثت الإنترنت بالكامل. أولاً ، بعد مرور بعض الوقت ، ضحكت بالفعل من المقالات التي تقول أن صبيب PCIe gen 1 و gen 2 لـ x1 هو 250 و 500 ميجابايت / ثانية. هذه ميجابايت خام. نظرًا للنفقات العامة (أستخدم هذه الكلمة غير الروسية للدلالة على تبادل خدمة يسير على نفس خطوط البيانات الرئيسية) بالنسبة إلى gen 2 ، نحصل على 400 ميغابايت بالضبط في الثانية من الدفق المفيد. ثانيًا ، لم أتمكن من العثور على أي شيء عنيد حول الرقم السحري 290 (في المستقبل - ما زلت لم أجده).

عظيم. محاولة إلقاء نظرة على طوبولوجيا تضمين وحدات التحكم الخاصة بنا. هنا هو (013-015 - هذه هي لاحقات اسم الجهاز التي قمت بمطابقتها من أجل التمييز بطريقة أو بأخرى). الأخضر سريع والأحمر بطيء.



وحدة تحكم "015" لا نعتبرها حتى. يعيش في فتحة مميزة مصممة لبطاقة الفيديو. ولكن 013 متصل بنفس المفتاح مثل 012 من 014. كيف يختلف؟

تقول بعض المقالات أن البطاقات المختلفة قد تختلف في إعدادات Max Payload. لقد درست مساحة التكوين لجميع البطاقات - هذه المعلمة للجميع في نفس القيمة الدنيا الممكنة. علاوة على ذلك ، فإن وثائق شرائح اللوحة الأم تقول أنه لا يمكن أن يكون هناك معنى آخر.



بشكل عام ، بحثت في كل شيء في مساحة التكوين - تم تكوين كل شيء بشكل متطابق. والسرعة مختلفة! قم بإعادة قراءة وثائق مجموعة الشرائح بشكل متكرر - بدون إعدادات النطاق الترددي. الأولويات - نعم ، لقد كتب شيء عنها ، ولكن يتم إجراء الاختبارات في غياب كامل للحمل على القنوات الأخرى! أي أنه ليس فيها.

فقط في حال قمت بإيقاف برنامج المقاطعة. لقد زاد حمل المعالج إلى كميات مجنونة ، لأنه الآن يقرأ باستمرار بتجاهل بغباء ، لكن قراءات السرعة لم تتغير. لذا من المستحيل إلقاء اللوم على هذا النظام الفرعي في المشاكل.

وماذا عن المجالس الأخرى؟


حاولنا تغيير اللوحة الأم إلى نفسها تمامًا. لا تغيير. حاولوا استبدال المعالج (كانت هناك أسباب للاعتقاد أنه كان غير المرغوب فيه). أيضا ، لا تغييرات في السرعة (لكن المعالج القديم غير المرغوب فيه حقًا). لقد قمنا بتثبيت الجيل الجديد من اللوحة الأم - كل شيء يطير على كل الفتحات. علاوة على ذلك ، فإن السرعة القصوى لم تعد 400 ، ولكن 418 ميجا بايت في الثانية ، حتى في "طويلة" ، حتى في فتحات "قصيرة":



ولكن هنا - لا معجزات. مع حركة اليد المعتادة (المستخدمة بالفعل في هذه الأيام) ، نقرأ مساحة التكوين ونرى أن معلمة Max Payload لم يتم تعيينها على 128 ، ولكن على 256 بايت.

حجم أكبر للحزمة - عدد أقل من الحزم. حمل أقل لإرسالها - تدير بيانات أكثر فائدة للتشغيل في نفس الوقت. هذا صحيح.

فمن هو المسؤول؟


لن أعطي إجابة دقيقة على السؤال من العنوان ، مع الإشارة إلى المستندات. لكن فكرتي سار على المسار التالي: دعنا نقول أنه تم تقييد تقييد التدفق داخل مجموعة الشرائح. لا يمكن برمجتها ، تم ضبطها بإحكام ، لكنها كذلك. على سبيل المثال ، يساوي 290 ميغا بايت في الثانية لكل فرق. زوجين. المزيد - يتم قطعه بالفعل في مكان ما داخل الشرائح على آلياته الداخلية. لذلك ، في الفتحة "الطويلة" (حيث يمكنك لصق البطاقات حتى x4) ، لا يتم قطع أي شيء لبطاقتنا داخل مجموعة الشرائح ، ونحن نرتاح ضد الحد الفعلي لحافلة x1. في الموصل "القصير" ، نواجه هذا القيد.

في الواقع ، ليس من السهل التحقق من ذلك ، ولكنه بسيط للغاية. نحن نتمسك في الفتحة 013 وليس AHCI ، ولكن وحدة تحكم SAS ، التي تخدم 8 محركات أقراص في وقت واحد ويمكن أن تعمل في أوضاع PCIe حتى x4. نقوم بتوصيل 4 محركات أقراص SSD ذكية إليه. نحن ننظر إلى سرعة التسجيل - بقدر ما تبتهج الروح:



الآن نضيف تلك الأقراص الأربعة التي ظهرت في الاختبارات الأولى. انخفض أداء SSD بشكل متوقع:



نحسب السرعة الإجمالية التي تمر عبر وحدة تحكم SAS ، نحصل على 1175 ميغابايت في الثانية. اقسم على 4 (العديد من الخطوط تذهب إلى الفتحة "الطويلة" ، نحصل على ... طبل لفة ... 293 ميغابايت في الثانية. في مكان ما رأيت هذا الرقم بالفعل!

لذلك ، في إطار هذا المشروع ، ثبت أن المشكلة ليست في برنامجنا أو سائقنا ، ولكن في القيود الغريبة للشرائح ، والتي ربما تكون "موصولة" بإحكام. تم تطوير منهجية اختيار اللوحات الأم التي يمكن استخدامها في المشروع. لكن بشكل عام ، نستخلص الاستنتاجات التالية.

الخلاصة


  • في الحياة الواقعية ، غالبًا ما يكون للمعدات أداء أقل مما هو ممكن نظريًا. يمكن أن يفرض السائقون قيودًا ، كما هو موضح في حالة USB. في بعض الأحيان يكون من الممكن التقاط المعدات التي (أو التي لا يملك سائقوها) مثل هذه القيود.
  • قد تكون القيود غير موثقة ، ولكن يتم التعبير عنها بوضوح.
  • الكثير من المقالات التي تقول أن زوجًا واحدًا تفاضليًا من PCIe gen. 1 و gen 2 يعطيان حوالي 250 و 500 ميجابايت في الثانية ، خطأ. ينسخون نفس الخطأ عن بعضهم البعض - ميغا بايت من البيانات الخام في الثانية. يتراكم الحمل على عدة مستويات من الواجهة. مع الحمولة القصوى 128 بايت ، يحصل PCIe gen2 فعليًا على حوالي 400 ميجابايت في الثانية. في الأجيال الجديدة من PCIe ، يجب أن يكون كل شيء أفضل قليلاً ، نظرًا لأن التشفير المادي لا يوجد 8b / 10b ، ولكنه أكثر اقتصادا ، ولكن حتى الآن لم يتم العثور على وحدة تحكم في محرك الأقراص للتحقق من ذلك عمليًا.

Source: https://habr.com/ru/post/ar414753/


All Articles