سؤال

ما المقصود باستخدام سياج الذاكرة صريح؟

هل كانت مفيدة؟

المحلول

لأداء المكاسب وحدات المعالجة المركزية الحديثة في كثير من الأحيان تنفيذ تعليمات من أجل الاستفادة القصوى من السيليكون المتاحة (بما في ذلك ذاكرة القراءة / الكتابة). لأن الأجهزة يفرض تعليمات سلامة أنك لم تلاحظ هذا في موضوع واحد من التنفيذ. ولكن لمواضيع متعددة أو بيئات مع الذاكرة المتطايرة (تعيين الذاكرة I / O على سبيل المثال) وهذا يمكن أن يؤدي إلى سلوك غير متوقع.

وA ذاكرة السور / الجدار هي فئة من التعليمات التي تعني ذاكرة القراءة / الكتابة تحدث في الترتيب الذي تتوقع. على سبيل المثال "السياج الكامل" تعني كل قراءة / يكتب قبل أن يتم يرتكبونها السياج قبل تلك بعد السياج.

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

ووإعادة ترتيب CPU يختلف عن تحقيق أمثلية مترجم - على الرغم من أن القطع الأثرية يمكن أن تكون مماثلة. تحتاج إلى اتخاذ تدابير منفصلة لوقف المترجم إعادة ترتيب التعليمات الخاصة بك إذا كان ذلك قد يسبب سلوك غير مرغوب فيه (استخدام مثل من الكلمة المتقلبة في C).

نصائح أخرى

جوابي لسؤال آخر، ما هي بعض الحيل أن المعالج لا لتحسين التعليمات البرمجية

<اقتباس فقرة>   

وأهم سيكون الوصول إلى الذاكرة إعادة ترتيب.

     

والأسوار ذاكرة غائبة أو تعليمات تسلسل، المعالج حر في إعادة ترتيب الدخول للذاكرة. بعض بنيات المعالج لها قيود على مقدار ما يمكن إعادة ترتيب. ومن المعروف ألفا لكونها الأضعف (أي واحد والتي يمكن إعادة ترتيب أكثر).

     

وعلاج جيدة جدا من هذا الموضوع يمكن العثور عليها في وثائق لينكس مصدر النواة، على الموقع وثائق / الذاكرة barriers.txt

.      

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

في تجربتي أنه يشير إلى حاجز الذاكرة ، وهي تعليمات (صريحة أو الضمني) لمزامنة ذاكرة الوصول بين المواضيع المتعددة.

وتحدث هذه المشكلة في الجمع بين المجمعين عدوانية الحديثة (لديهم حرية مذهلة لإعادة ترتيب التعليمات، ولكن عادة لا يعرفون شيئا من المواضيع الخاصة بك) وحدات المعالجة المركزية متعددة النوى الحديثة.

ومقدمة جيدة لهذه المشكلة هو " و'ضعف قفل -Checked هو المكسور "إعلان ". بالنسبة للكثيرين، كان دعوة للاستيقاظ أن يكون هناك التنين.

تدرج عادة

والحواجز ذاكرة كاملة الضمنية في الروتين تزامن موضوع المنصة، والتي تغطي جوهر ذلك. ومع ذلك، للبرمجة قفل خالية وتنفيذ العرف، وأنماط تزامن خفيفة الوزن، وغالبا ما تحتاج فقط حاجز، أو حتى الحاجز في اتجاه واحد فقط.

ويكيبيديا يعرف كل ...

<اقتباس فقرة>   

وحاجز الذاكرة، المعروف أيضا باسم membar   أو سياج الذاكرة، هو فئة من   التعليمات التي تتسبب في وسط   وحدة معالجة (CPU) لفرض   طلب القيد على الذاكرة   أصدرت العمليات قبل وبعد   تعليمات الحاجز.

     

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

     

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top