ذاكرة المعاملات: ما هي والتكامل عبر Intel TSX

ذاكرة المعاملات

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

واحدة من أكبر المشاكل مع multicore وحدة المعالجة المركزية‏: الأنظمة التي تستخدمها أجهزة الكمبيوتر الخاصة بنا هي أنها تستند إلى نموذج Von Neumann ، وهو أنه لا يوجد سوى ذاكرة مشتركة واحدة جيدة. مع زيادة عدد وحدات التنفيذ والنوى والخيوط والعناصر الأخرى التي تعمل بالتوازي في وحدة المعالجة المركزية. يتم إنشاء المزيد والمزيد من النزاعات بينهما. ليس فقط في الوصول إلى البيانات ولكن أيضًا في المعلومات الواردة في عناوين الذاكرة المختلفة وبالتالي قيمة المتغيرات التي تستخدمها البرامج. هناك العديد من الطرق لتجنب هذه التعارضات ، إحداها ذاكرة المعاملات ، والتي سنقوم بشرحها في هذه المقالة.

مقدمة للمشكلة

سيروجوس

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

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

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

ما هي ذاكرة المعاملات؟

لون Código binario

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

يعمل نظام المعاملات في المعالج على النحو التالي:

  1. يتم إنشاء نسخة من جزء الذاكرة الذي تريد أنوية متعددة الوصول إليه ، واحدة لكل مثيل.
  2. يقوم كل مثيل بتعديل نسخته الخاصة بشكل مستقل عن باقي النسخ الخاصة.
  3. إذا تم تعديل البيانات في نسخة خاصة وليس في البقية ، فسيتم نسخ التعديل أيضًا في باقي النسخ الخاصة.
  4. إذا قام مثيلين بإجراء تغيير على نفس البيانات في نفس الوقت وأدى ذلك إلى حدوث عدم تناسق في البيانات ، فسيتم حذف النسختين الخاصتين. ويتم نسخ النسخ الخاصة من البقية

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

أنظمة ذاكرة المعاملات ، Intel TSX

أجهزة Memoria Transaccional

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

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

تعليمات Intel TSX ليست مجموعة معقدة ، لدينا من ناحية تعليمات XBEGIN التي تحدد لنا عندما يبدأ قسم المعاملات في الذاكرة ، وتعليمات XEND التي تحدد النهاية و XABORT ، والتي تعمل على تحديد الخروج من العملية عندما تحدث حالة استثنائية.

نهاية تعليمات Intel TSX؟

إلغاء Intel TSX

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

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

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