ما مقدار مساحة الصفحة المستخدمة للمعالج. ما هي ذاكرة التخزين المؤقت للقرص الصلب وما الغرض منها؟ بنيات ومبادئ ذاكرة التخزين المؤقت

ما مقدار مساحة الصفحة المستخدمة للمعالج. ما هي ذاكرة التخزين المؤقت للقرص الصلب وما الغرض منها؟ بنيات ومبادئ ذاكرة التخزين المؤقت

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

يمكن أن يختلف مبدأ التشغيل وبنية ذاكرة التخزين المؤقت بشكل كبير.

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

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

غالبًا ما توجد هذه البنية على محركات الأقراص الثابتة ووحدات المعالجة المركزية ( وحدة المعالجة المركزية).

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

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

هناك العديد من الوظائف المهمة جدًا التي يتم تنفيذها لذاكرة التخزين المؤقت للمعالجات وشرائح الفيديو.

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

ذاكرة التخزين المؤقت المشتركة، كما يسمح للنواة بالعمل معها مباشرة، متجاوزًا البطيء .

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

وظائف وميزات أخرى.

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

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

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

حجم ذاكرة التخزين المؤقت وتأثير الأداء والخصائص الأخرى.

بطبيعة الحال، كلما كانت ذاكرة التخزين المؤقت أكبركلما زاد عدد البيانات التي يمكنه تخزينها ومعالجتها، ولكن هناك مشكلة خطيرة.

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

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

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

ما هي ذاكرة التخزين المؤقت وهيكلها

الذاكرة المؤقتة هي ذاكرة فائقة السرعة يستخدمها المعالج لتخزين البيانات التي يتم الوصول إليها بشكل متكرر بشكل مؤقت. هذه هي الطريقة التي يمكننا بها وصف هذا النوع من الذاكرة بإيجاز.

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

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


ما هو استخدام ذاكرة التخزين المؤقت للمعالج؟

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

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

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

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

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

مستويات ذاكرة التخزين المؤقت للمعالج

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

بشكل عام، يمكن أن تكون هناك المستويات التالية: L1 (المستوى الأول)، L2 (المستوى الثاني)، L3 (المستوى الثالث). الآن مزيد من التفاصيل حول كل واحد منهم:

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

سننظر في وحدات التخزين على معالج Intel Core i7-3770K عالي الأداء. تم تجهيز هذا المعالج بذاكرة تخزين مؤقت 4x32 كيلو بايت L1 4 × 32 كيلو بايت = 128 كيلو بايت. (32 كيلو بايت لكل نواة)

ذاكرة التخزين المؤقت من المستوى الثاني (L2)- المستوى الثاني أوسع نطاقًا من الأول، ولكن نتيجة لذلك، يتمتع بـ "خصائص سرعة" أقل. وبناء على ذلك، فهو بمثابة منطقة عازلة بين مستويات L1 وL3. إذا نظرنا مرة أخرى إلى مثالنا Core i7-3770 K، فإن حجم ذاكرة التخزين المؤقت L2 هو 4x256 كيلو بايت = 1 ميجابايت.

ذاكرة التخزين المؤقت من المستوى 3 (L3)- المستوى الثالث، مرة أخرى، أبطأ من المستويين السابقين. لكنها لا تزال أسرع بكثير من ذاكرة الوصول العشوائي. حجم ذاكرة التخزين المؤقت L3 في i7-3770K هو 8 ميجابايت. إذا كان المستويان السابقان مشتركين بين كل نواة، فإن هذا المستوى يكون مشتركًا بين المعالج بأكمله. الرقم قوي جدًا، لكنه ليس باهظًا. نظرًا لأنه، على سبيل المثال، بالنسبة لمعالجات السلسلة Extreme مثل i7-3960X، يبلغ حجمها 15 ميجابايت، وبالنسبة لبعض معالجات Xeon الجديدة، أكثر من 20 ميجابايت.

ما هي ذاكرة التخزين المؤقت للمعالج؟

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

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

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

لماذا يحتاج المعالج إلى ذاكرة التخزين المؤقت؟

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

إذن هل يمكن لذاكرة التخزين المؤقت تخزين البيانات الأكثر طلبًا فقط؟

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

ما هي ذاكرة التخزين المؤقت ذات المستويين؟

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

هل ستستمر ذاكرة التخزين المؤقت في النمو؟

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

إقرأ: 644

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

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

هابراكوت - - -

المثال 1: الوصول إلى الذاكرة والأداء

ما مدى سرعة الدورة الثانية في نظرك مقارنة بالأولى؟
int arr = new int;

// أولاً
ل (int i = 0؛ i< arr.Length; i++) arr[i] *= 3;

// ثانية
ل (int i = 0؛ i< arr.Length; i += 16) arr[i] *= 3;


تقوم الحلقة الأولى بضرب جميع القيم في المصفوفة بمقدار 3، بينما تقوم الحلقة الثانية بضرب كل قيمة سادسة عشرة فقط. الدورة الثانية تكتمل فقط 6% عملالدورة الأولى، ولكن على الأجهزة الحديثة يتم تنفيذ كلا الدورتين في وقت متساو تقريبا: 80 مللي ثانيةو 78 مللي ثانيةعلى التوالي (على الجهاز الخاص بي).

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

المثال 2: تأثير خطوط ذاكرة التخزين المؤقت

فلنتعمق أكثر ونجرب قيم الخطوات الأخرى، وليس فقط 1 و16:
ل (int i = 0؛ i< arr.Length; i += K /* шаг */ ) arr[i] *= 3;

فيما يلي أوقات تشغيل هذه الحلقة لقيم الخطوات المختلفة K:

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

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

نظرًا لأن 16 قيمة int تشغل 64 بايت، فإن الحلقات ذات الخطوات من 1 إلى 16 تصل إلى نفس عدد خطوط ذاكرة التخزين المؤقت، أو بشكل أكثر دقة، جميع خطوط ذاكرة التخزين المؤقت للمصفوفة. في الخطوة 32، يحدث الوصول إلى كل سطر ثاني، في الخطوة 64، إلى كل سطر رابع.

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

مثال 3: أحجام ذاكرة التخزين المؤقت للمستوى 1 و2 (L1 وL2)

تحتوي المعالجات الحديثة عادةً على مستويين أو ثلاثة مستويات من ذاكرة التخزين المؤقت، تسمى عادةً L1 وL2 وL3. لمعرفة أحجام ذاكرة التخزين المؤقت على مستويات مختلفة، يمكنك استخدام الأداة المساعدة CoreInfo أو وظيفة Windows API GetLogicalProcessorInfo. توفر كلتا الطريقتين أيضًا معلومات حول حجم سطر ذاكرة التخزين المؤقت لكل مستوى.

على جهازي، يُبلغ CoreInfo عن 32 كيلو بايت من ذاكرة التخزين المؤقت للبيانات L1، و32 كيلو بايت من ذاكرة التخزين المؤقت للتعليمات L1، و4 ميجا بايت من ذاكرة التخزين المؤقت للبيانات L2. تحتوي كل نواة على ذاكرة تخزين مؤقت L1 شخصية خاصة بها، ويتم مشاركة ذاكرة التخزين المؤقت L2 بواسطة كل زوج من النوى:

المعالج المنطقي لتعيين ذاكرة التخزين المؤقت: *--- ذاكرة التخزين المؤقت للبيانات 0، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 *--- ذاكرة التخزين المؤقت للتعليمات 0، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 -*-- ذاكرة التخزين المؤقت للبيانات 1، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 -*-- ذاكرة التخزين المؤقت للتعليمات 1، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 **-- Unified Cache 0، المستوى 2، 4 ميجابايت، Assoc 16، LineSize 64 --*- ذاكرة التخزين المؤقت للبيانات 2، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 --*- ذاكرة التخزين المؤقت للتعليمات 2، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 ---* ذاكرة التخزين المؤقت للبيانات 3، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 ---* ذاكرة التخزين المؤقت للتعليمات 3، المستوى 1، 32 كيلو بايت، Assoc 8، LineSize 64 --** ذاكرة التخزين المؤقت الموحدة 1، المستوى 2، 4 ميجابايت، Assoc 16، LineSize 64
دعونا نتحقق من هذه المعلومات تجريبيا. للقيام بذلك، دعونا نستعرض المصفوفة، ونزيد كل قيمة 16 - وهي طريقة سهلة لتغيير البيانات في كل سطر من سطر ذاكرة التخزين المؤقت. وعندما نصل إلى النهاية، نعود إلى البداية. دعونا نتحقق من أحجام المصفوفات المختلفة؛ يجب أن نرى انخفاضًا في الأداء عندما لا تتناسب المصفوفة مع ذاكرات التخزين المؤقت ذات المستويات المختلفة.

الكود هو:

الخطوات الصحيحة = 64 * 1024 * 1024؛ // عدد التكرارات
int lengthMod = arr.Length - 1; // حجم المصفوفة - قوة اثنين

ل (int i = 0؛ i< steps; i++)
{
// x & lengthMod = x % arr.Length، لأن القوى ذات اثنين
arr[(i * 16) & lengthMod]++;
}


نتائج الإختبار:

على جهازي، هناك انخفاض ملحوظ في الأداء بعد 32 كيلو بايت و4 ميجابايت - هذه هي أحجام ذاكرة التخزين المؤقت L1 وL2.

مثال 4: توازي التعليمات

الآن دعونا ننظر إلى شيء آخر. في رأيك، أي من هاتين الحلقتين سيتم تنفيذه بشكل أسرع؟
الخطوات الصحيحة = 256 * 1024 * 1024؛
كثافة العمليات أ = كثافة العمليات الجديدة؛

// أولاً
ل (int i = 0؛ i< steps; i++) { a++; a++; }

// ثانية
ل (int i = 0؛ i< steps; i++) { a++; a++; }


اتضح أن الحلقة الثانية تعمل بسرعة مضاعفة تقريبًا، على الأقل على جميع الأجهزة التي اختبرتها. لماذا؟ لأن الأوامر الموجودة داخل الحلقات لها تبعيات بيانات مختلفة. الأوامر الأولى لها سلسلة التبعيات التالية:

في الدورة الثانية التبعيات هي:

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

مثال 5: ترابط ذاكرة التخزين المؤقت

أحد الأسئلة الرئيسية التي يجب الإجابة عليها عند تصميم ذاكرة التخزين المؤقت هو ما إذا كان من الممكن تخزين البيانات من منطقة ذاكرة معينة في أي خلايا ذاكرة تخزين مؤقت أم في بعضها فقط. ثلاثة حلول ممكنة:
  1. ذاكرة التخزين المؤقت للرسم المباشريتم تخزين بيانات كل سطر ذاكرة تخزين مؤقت في ذاكرة الوصول العشوائي (RAM) في موقع ذاكرة تخزين مؤقت واحد محدد مسبقًا. إن أبسط طريقة لحساب التعيين هي:row_index_in_memory % number_of_cache_cells. لا يمكن وضع سطرين معينين لنفس الخلية في ذاكرة التخزين المؤقت في نفس الوقت.
  2. N- إدخال ذاكرة التخزين المؤقت الجزئية، يمكن تخزين كل سطر في N مواقع مختلفة لذاكرة التخزين المؤقت. على سبيل المثال، في ذاكرة التخزين المؤقت المكونة من 16 إدخالاً، قد يتم تخزين سطر في إحدى الخلايا الـ 16 التي تشكل المجموعة. عادةً ما تشترك الصفوف التي تحتوي على وحدات بت من المؤشرات الأقل أهمية في مجموعة واحدة.
  3. ذاكرة التخزين المؤقت النقابية بالكامل، يمكن تخزين أي سطر في أي موقع ذاكرة تخزين مؤقت. الحل يعادل جدول التجزئة في سلوكه.
تكون ذاكرة التخزين المؤقت المعينة مباشرة عرضة للتنافس، على سبيل المثال، عندما يتنافس صفان على نفس الخلية، ويطرد كل منهما الآخر بالتناوب من ذاكرة التخزين المؤقت، تكون الكفاءة منخفضة للغاية. من ناحية أخرى، فإن ذاكرات التخزين المؤقت الترابطية الكاملة، على الرغم من خلوها من هذا العيب، إلا أنها معقدة للغاية ومكلفة التنفيذ. تعد ذاكرة التخزين المؤقت الترابطية جزئيًا بمثابة مقايضة نموذجية بين تعقيد التنفيذ والكفاءة.

على سبيل المثال، على جهازي، ذاكرة التخزين المؤقت L2 بسعة 4 ميجابايت عبارة عن ذاكرة تخزين مؤقت جزئية ترابطية مكونة من 16 إدخالًا. يتم تقسيم ذاكرة الوصول العشوائي (RAM) بأكملها إلى مجموعات من الخطوط وفقًا للبتات الأقل أهمية في مؤشراتها، وتتنافس الخطوط من كل مجموعة على مجموعة واحدة مكونة من 16 خلية تخزين مؤقت L2.

نظرًا لأن ذاكرة التخزين المؤقت L2 تحتوي على 65,536 خلية (4 * 2 20 / 64) وتتكون كل مجموعة من 16 خلية، فلدينا إجمالي 4,096 مجموعة. وبالتالي، فإن الـ 12 بت السفلية من فهرس الصف تحدد المجموعة التي ينتمي إليها هذا الصف (2 12 = 4,096). ونتيجة لذلك، فإن الصفوف التي تحتوي على عناوين مضاعفات 262,144 (4,096 * 64) تشترك في نفس المجموعة المكونة من 16 خلية وتتنافس على المساحة فيها.

لكي تصبح تأثيرات الارتباط سارية المفعول، نحتاج إلى الوصول باستمرار إلى عدد كبير من الصفوف من نفس المجموعة، على سبيل المثال، باستخدام الكود التالي:

UpdateEveryKthByte طويل ثابت عام (byte arr، int K)
{
كونست إنت مندوب = 1024 * 1024؛ // عدد التكرارات

ساعة الإيقاف sw = Stopwatch.StartNew();

كثافة العمليات ع = 0؛
ل (int i = 0؛ i< rep; i++)
{
arr[p]++;

ف += ك؛ إذا (ع >= arr.Length) ع = 0؛
}

Sw.Stop();
إرجاع sw.ElapsedMillithans;
}


تعمل الطريقة على زيادة كل عنصر Kth في المصفوفة. وعندما نصل إلى النهاية، نبدأ من جديد. بعد عدد كبير جدًا من التكرارات (2 20)، نتوقف. لقد أجريت عمليات تشغيل لأحجام مصفوفات مختلفة وقيم خطوات K (الأزرق - وقت تشغيل طويل، والأبيض - قصير):

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

دعونا نتعامل مع المناطق الزرقاء:

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

    بعض قيم الخطوات السيئة هي قوى اثنين: 256 و512. على سبيل المثال، ضع في اعتبارك الخطوة 512 ومصفوفة 8 ميجابايت. بهذه الخطوة، يكون هناك 32 قسمًا في المصفوفة (8 * 2 20 / 262 144)، تتنافس مع بعضها البعض على الخلايا في 512 مجموعة ذاكرة تخزين مؤقت (262 144 / 512). هناك 32 قسمًا، لكن هناك 16 خلية فقط في ذاكرة التخزين المؤقت لكل مجموعة، لذلك لا توجد مساحة كافية للجميع.

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

  2. لماذا تنكسر الخطوط العمودية عند حدود 4 ميجابايت؟عندما يكون حجم المصفوفة 4 ميجابايت أو أقل، فإن ذاكرة التخزين المؤقت المكونة من 16 إدخالًا تتصرف مثل ذاكرة التخزين المؤقت الترابطية بالكامل، أي أنها يمكنها استيعاب جميع البيانات الموجودة في المصفوفة دون تعارضات. لا يوجد أكثر من 16 منطقة تتقاتل من أجل مجموعة مخبأة واحدة (262,144 * 16 = 4 * 2 20 = 4 ميجابايت).
  3. لماذا يوجد مثلث أزرق كبير في أعلى اليسار؟لأنه مع خطوة صغيرة ومصفوفة كبيرة، لن تتمكن ذاكرة التخزين المؤقت من احتواء جميع البيانات الضرورية. تلعب درجة ارتباط ذاكرة التخزين المؤقت دورًا ثانويًا هنا؛ ويرتبط القيد بحجم ذاكرة التخزين المؤقت L2.

    على سبيل المثال، مع حجم مصفوفة يبلغ 16 ميجا بايت وخطوة قدرها 128، يمكننا الوصول إلى كل بايت 128، وبالتالي تعديل كل سطر ذاكرة تخزين مؤقت للمصفوفة الثانية. لتخزين كل سطر ثاني في ذاكرة التخزين المؤقت، تحتاج إلى 8 ميغابايت من ذاكرة التخزين المؤقت، ولكن على جهازي لا يوجد سوى 4 ميغابايت.

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

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

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

تستمر التأثيرات المكتشفة عند قيم معلمات كبيرة:

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

مثال 6: تقسيم ذاكرة التخزين المؤقت الخاطئ

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

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

دعونا نوضح هذه المشكلة بالكود التالي:

int الخاص الثابت s_counter = int الجديد ؛

UpdateCounter الفراغ الخاص (موقف int)
{
ل(int j = 0; j< 100000000; j++)
{
s_counter = s_counter + 3;
}
}


إذا قمت باستدعاء هذه الطريقة على جهازي رباعي النواة مع المعلمات 0، 1، 2، 3 في وقت واحد من أربعة مؤشرات ترابط، فسيكون وقت التشغيل هو 4.3 ثانية. ولكن إذا قمت باستدعاء الطريقة ذات المعلمات 16، 32، 48، 64، فسيكون وقت التشغيل فقط 0.28 ثانية.

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

المثال 7: تعقيد الأجهزة

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

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

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

إليك مثال آخر على مراوغات الأجهزة الغريبة:

كثافة العمليات الثابتة الخاصة A، B، C، D، E، F، G؛

غرابة الفراغ الثابت الخاص ()
{
ل (int i = 0؛ i< 200000000; i++)
{
<какой-то код>
}
}


إذا بدلا من ذلك<какой-то код>استبدل ثلاثة خيارات مختلفة، يمكنك الحصول على النتائج التالية:

تستغرق زيادة الحقول A وB وC وD وقتًا أطول من زيادة الحقول A وC وE وG. والأغرب من ذلك هو أن زيادة الحقول A وC تستغرق وقتًا أطول من الحقول A وC و E، G. لا أعرف بالضبط ما هي أسباب ذلك، ولكن ربما تكون مرتبطة ببنوك الذاكرة ( نعم، نعم، مع بنوك الذاكرة الادخارية العادية سعة ثلاثة لتر، وليس كما كنت تعتقد). إذا كان لديك أي أفكار حول هذا الموضوع، يرجى التحدث في التعليقات.

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

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

خاتمة

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

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

حجم ذاكرة التخزين المؤقت L1 (من 8 إلى 128 كيلو بايت)
حجم ذاكرة التخزين المؤقت المستوى 1.
ذاكرة التخزين المؤقت من المستوى الأول عبارة عن كتلة من الذاكرة عالية السرعة تقع مباشرة في قلب المعالج.
يتم نسخ البيانات المستخرجة من ذاكرة الوصول العشوائي (RAM) إليها.

يؤدي تخزين التعليمات الأساسية إلى تحسين أداء المعالج بسبب زيادة سرعة معالجة البيانات (المعالجة من ذاكرة التخزين المؤقت أسرع من المعالجة من ذاكرة الوصول العشوائي).

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

حجم ذاكرة التخزين المؤقت L2 (من 128 إلى 12288 كيلو بايت)
حجم ذاكرة التخزين المؤقت المستوى 2
ذاكرة التخزين المؤقت L2 عبارة عن كتلة من الذاكرة عالية السرعة تؤدي نفس وظائف ذاكرة التخزين المؤقت L1 (راجع "سعة ذاكرة التخزين المؤقت L1")، ولكنها تتمتع بسرعة أقل وسعة أكبر.

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

حجم ذاكرة التخزين المؤقت L3 (من 0 إلى 16384 كيلو بايت)
حجم ذاكرة التخزين المؤقت المستوى 3
تشكل ذاكرة التخزين المؤقت L3 المدمجة مع ناقل النظام السريع قناة تبادل بيانات عالية السرعة مع ذاكرة النظام.

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

على سبيل المثال، تحتوي خطوط المعالجات مثل Intel Pentium 4 Extreme Edition وXeon DP وItanium 2 وXeon MP وغيرها على ذاكرة تخزين مؤقت من المستوى الثالث.

Twin BiCS FLASH - تقنية ذاكرة فلاش ثلاثية الأبعاد جديدة

في 11 ديسمبر 2019، في اجتماع IEEE الدولي للأجهزة الإلكترونية (IEDM)، أعلنت شركة TOKYO-Kioxia Corporation عن تقنية ذاكرة فلاش ثلاثية الأبعاد - Twin BiCS FLASH.

برنامج تشغيل AMD Radeon Software Adrenalin Edition 2020 19.12.2 WHQL (مضاف)

في 10 ديسمبر، قدمت AMD برنامج التشغيل الضخم Radeon Software Adrenalin 2020 Edition 19.12.2 WHQL.

التحديث التراكمي لنظام التشغيل Windows 10 1909 KB4530684

في 10 ديسمبر 2019، أصدرت Microsoft التحديث التراكمي KB4530684 (النسخة 18363.535) لتحديث نوفمبر 2019 لنظام التشغيل Windows 10 (الإصدار 1909) على معالجات x86 وx64 (amd64) وARM64 وWindows Server 2019 (1909) للأنظمة المستندة إلى x64.

NVIDIA Game Ready GeForce 441.66 WHQL سائق

يتضمن NVIDIA GeForce Game Ready Driver 441.66 WHQL دعمًا لـ MechWarrior 5: Mercenaries وDetroit: Become Human، كما يضيف دعم G-SYNC لشاشات MSI MAG251RX وViewSonic XG270.

الآراء