ما معنى الـ Hardware Acceleration ؟و علاقته بال CPU
في كثير من الاحيان نرى جملة Hardware Acceleration و بالاخص فى برامج ادارة المعالج الرسومي (GPU) الموجود في الحواسيب (كروت الشاشة) او الهواتف او اجهزة الاستقبال الفضائي و بعض اجهزة ا الميديا المختلفة الاخرى و لكن ماذا يعني الـ Hardware Acceleration ؟ , و ما فائدتها ؟
و للاجابة عن ذلك دعونا نتطرق اولا الى بعض النقاط الواجب معرفتها عن المعالج الرئيسي (CPU) .
ما هو المعالج الرئيسي (CPU) باختصار و ما علاقته بالـ Hardware Acceleration ؟
مصطلح الـ CPU هو اختصار لـ Central Processing Unit و هي تعني وحدة المعالجة المركزية و هو في الاساس اهم جزء في اي نظام , من السهل ان تقول انه العقل الرئيسي لقطع الهاردوير الاخرى و داخليا يحتوي على ملايين من الترانزستورات لتشكل دوائر منطقية . حيث يتم تحويل الاكواد البرمجية التي يكتبها المطورون الى لغة الـ Binary (0,1) لتستطيع تلك الدوائر المنطقية/الالكترونية ان تتعامل معها ثم بعد انتهاء تلك العملية يعود بالنتائج الى كود برمجي يستطيع الانسان ان يفهمه ( يسمعه, يراه او يتعامل معه بشكل اخر) .
فهو مصنع لكي يتعامل مع اي كود برمجي و هناك العديد من العوامل التي تحدد سرعته منها ( التردد , عدد الانوية , سعة ذاكرة الكاش) .
و لنأخذ مثال بسيط سيقودنا الى العلاقة بين الـ Hardware Acceleration و الـ CPU :-
الحاسب لديك يحتوي على الاتي:-
- المعالج الرئيسي و ليكن Intel Core i3 3220 و هو معالج قديم , تم اصدارة عام 2012 (CPU).
- المعالج الرسومي المدمج من انتل هو Intel® HD Graphics 2500.
- نظام التشغيل Windows 10 (كود برمجي كبير جدا).
- برنامج لتشغيل ملفات الميديا و ليكن VLC (كود برمجي).
- ملفين فيديو الاول بتشفير H264 , و الثاني HEVC/H265 (كود برمجي صعب).
تخيل معي عندما تقوم بتشغيل ملف الفيديو اذا كان بدقة 4k , ماذا سيكون العبئ على المعالج الرئيسى؟ مع الاخذ فى الاعتبار ان هناك برامج اخرى و خدمات خاصة بنظام التشغيل تعمل فى نفس الوقت و بشكل دائم !
لاحظ جيدا الصورة بالاعلى ستجد ان الـ CPU مستخدم بنسبة من 80% الى 100% و عند النظر الى الفيديو ستجده يعمل بشكل سيئ و هناك العديد من التقطعات و لن تكون هناك فائدة من مشاهدة الفيديو ,و سيكون التاثير سلبي على باقي نظام التشغيل.
و هنا ياتى دور الـ Hardware Acceleration و يعني التسارع العتادي , و المعنى التقنى هنا ان يكون جزء هاردوير مسئول عن كود برمجي من نوع واحد.
و للتوضيح اكثر , يعني ان هناك دائرة الكترونية مدمجة (IC) تعمل بجانب المعالج الرئيسي عند الحاجة اليها و بالتالي عند تشغيل ذلك الكود البرمجي لن يتحمل المعالج الرئيسي عبئ تشغيله و لكن تلك الدائرة الالكترونية المدمجة هي من سيتعامل معه.
و اذا عدنا للمثال السابق سنفترض ان المعالج الرسومي يحتوي على دائرة الكترونية مسئولة عن تشغيل(Decode) تشفير الفيديو من النوع المذكور اعلاه
H264 كـ Hardware Acceleration
و بالتالي عند تشغيل نفس الملف السابق ستجد ان الـ CPU مستخدم بنسبة تصل الى 2% و تزيد و تقل قليلا عند استخدام ابعاد فيديو مختلفه لنفس نوع التشفير و على الرغم من ان الدقة المستخدمة في المثال هي 4K ! .
و عند البحث عن انواع التشفير التي يدعمها المعالج الرسومي المدمج لم يكن هناك Hardware Acceleration للنوع HEVC/H265 و بالتالي عند تشغيل الملف الثاني ارتفعت نسبة استخدام المعالج الرئيسي بشكل ملحوظ و كما اسلفنا ان النسبة تزيد عند استخدام ابعاد فيديو اكبر .
بشكل افتراضي معظم مشغلات الميديا ستقوم بالعمل اعتمادا على دعم الـ Hardware Acceleration و الذي يسمى فى بعض الاحيان Hardware Decode و ان لم يكن هناك دعم لهذا النوع من ملفات الميديا ستعمل بطريقة الـ Software Decode و التي تعني ان المعالج الرئيسي هو من سيتحمل عبئ تشغيل تللك الملفات بشكل كامل و عندها ستجد نسبة استخدام المعالج ارتفعت بشكل ملحوظ جدا بحيث يعمل الملف بشكل جيد اذا كان المعالج قوي او سيكون هناك تقطعات و تشنج للنظام بالكامل اذا كان المعالج ضعيف.
هل الـ Hardware Acceleration يكون لملفات الفيديو فقط ؟
بالطبع لا ,
يوجد الكثير من البرمجيات التي يمكنها ان تعتمد على الـ Hardware Acceleration بدلا من رمي عبئ تشغيلها على المعالج الرئيسي كملفات الصوت مثلا , فقد يكون هناك بطاقة موجودة فى اللوحة الام او دائرة الكترونية مدمجة فى المعالج الرسومي لتعمل حين استدعاء ملفات صوتية و بانواع تشفير مختلفة.
من ضمن التطبييقات التى تستفيد من الـ Hardware Acceleration هي متصفحات الانترنت و التي يختلف اداءها للافضل فى كثير من الاحيان عند اعتمادها على الـ Hardware Acceleration.
هل يجب عليك استخدام الـ Hardware Acceleration في نظامك ؟
نعم يجب عليك استخدام الـ Hardware Acceleration للكثير من الاسباب و اهمها هي :-
– سلاسة النظام نتيجة لازالة عبئ كبير عن المعالج الرئيسي.
– توفير في استهلاك الطاقة التي يستخدمها المعالج الرئيسي.
– اتاحة استخدام برمجيات اكثر فى نفس الوقت نتيجة لقلة نسبة استخدام المعالج الرئيسي.