هل يمكن أن تؤثر HyperThreading على ذرية القراءة / الكتابة على 32 بت على معالج 32 بت؟

StackOverflow https://stackoverflow.com//questions/9715016

سؤال

لقد قرأت في مكان ما أن Hyperthreading يمكن أن يجعل 32 بت int (على معالج 32 بت) اقرأ واكتب غير ذري حتى عندما تكون محاذاة الحدود.هل يمكن لأي شخص أن يفسر كيف تأثيرات Hyperthreading هذا؟

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

المحلول

إذا كان ذلك صحيحا، فسيكون ذلك نوعا من علة وحدة المعالجة المركزية الرهيبة التي ستكون خاصة بنموذج معين أو يخطو. أن القراءات والكتابة 32 بت هي أساسية لخصائص منصة X86 ويتم الاعتماد عليها بواسطة Windows و Linux و Lots والكثير من برامج التطبيقات.

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

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

نصائح أخرى

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

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