All But Reality

Imagine a catchphrase here

Simple template. Background and Customization by Shihab Elagib. Powered by Blogger

April 08, 2016

رام، واشياء اخرى.

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


في 2007 امتلكت أول حاسب لي بذاكرة رئيسية 1GB. حاسب محمول من Acer بمعالج سيليرون من انتل (لا اذكر تفاصيله الدقيقة). ليس أقوى الأجهزة، بل ربما ليس حتى من الفئة المتوسطة، لكنه كان يكفي لاحتياجات شاب مُقبِل على دخول الجامعة. يكفي لتصفح الإنترنت، للكتابة والقراءة، لتشغيل الصوتيات وعرض الفيديوهات (مع الأخذ في الاعتبار ان الفيديو ذات الدقة والـbitrates العالية لم تكن منتشرة آنذاك)، بل حتى لبعض البرمجة البدائية و تشغيل العاب بسيطة (وببسيطة اقصد محاكاة لمنصات ألعاب من التسعينات والثمانينات). لهذه الأغراض كانت تلك القيقابايت الوحيدة اكثر من كافية، حتى مع استخدام ذاك الحاسب لويندوز فيستا ذو السمعة السيئة في استغلال موارد الجهاز. كم يحتاج متصفح الشبكة –اي متصفح شبكة- لعرض موقعين في نفس الوقت؟ بضع عشرات من الميقابياتات، مائة على اقصى تقدير؟ (في ذلك الوقت لم يكن كروم بغبائه الحالي في استخدام الرام موجوداً). كم يحتاج محرر نصوص Word Processor لعشرة ألاف كلمة؟ حفنة من الميقابيتات؟ كم يحتاج محاكي منصة بليستيشن 1، إذا كانت المنصة نفسها تملك ما مجموعه ثلاث ميقابايتات للذاكرتين الرئيسية والرسومية؟ 1 قيقابايت كانت اكثر من كافية في ذلك الوقت.
قَدِّمْ التاريخ عاماً او عامين، تعرفت فيها على الألعاب ثلاثية الأبعاد ذات الواقعية العالية (نسبياً، مقارنة بالطبيعي لتلك الفترة)، على تطبيقات اكثر تطلباً من سابقاتها، بدأت فيها استخدام (او بالأصح: اللعب بـ)برامج كالفوتوشوب، واكثر الأمور تأثيراً: بدأت في التعود على الـmultitasking، استخدام عدة برامج مختلفة –او عدة حالات (او اياً كانت ترجمة  instances) لنفس البرنامج- في نفس الوقت، مضاعفاً بذلك كمية الذاكرة الضرورية لمثل هذا النوع من الاستخدامات. تلك الـ 1GB أصبحت ببساطة لا تكفي، لكنها لم تكن الجانب الوحيد التي اصبح دون حد الكفاف، فكذلك كان المعالج، ووسيط التخزين، ودقة الشاشة وقدرة المعالج الصوري. نتيجة لذلك حدثت القفزة من حاسب سيليرون أحادي النواة بذاكرة قيقابايت وحيد ومعالج صوري مدمج، الى اخر بمعالج Core 2 Duo ثنائي النواة بـ3قيقابايت للذاكرة ومعالج صوري منفصل.

تلك القفزة كانت ربما صاحبة اكبر –واطول- تأثير فيما يتعلق بحجم الذاكرة. البراح الذي خلقته إضافة القيقابيتين كان يكفي لأضعاف أضعاف ما كنت أحتاج آنذاك. برامج الويندوز كانت –ولا يزال غالبيتها حتى الان- مبرمجاً بناءً على 32بت لعناوين الذاكرة، مما يسمح لها –حسب الحدود القياسية للويندوز-  بحوالي 2 قيقابايت من الذاكرة لكل عملية رئيسية أو 3 ببعض اللف والدوران الذي ندر أن تجد من يستخدمه من المطورين، بل انه من المستبعد أن تجد برنامجاً يستخدم تلك الـ2 قيقابيات كلها، فحتى اكبر الألعاب آنذاك كانت بالكاد تتخطى حاجز القيقابايت. الألعاب كانت –ولا تزال- اكثر التطبيقات تطلباً للذاكرة، او –لنكون اكثر دقة- اكثر التطبيقات التي تجد لها انتشاراً بين المستهلك العادي تطلباً للذاكرة. تلك الألعاب ظلت حتى وقت قريب تكتفي بـ4GB كذاكرة فيزيائية للنظام كله، واقل من 2 لها نفسها من الذاكرة الرئيسية (الرام) واتجهت للتركيز على الذاكرة المدمجة في البطاقات الرسومية.
استنتاج ان الألعاب عموماً كانت –ولا تزال، وان كانت بصورة اقل- لا تحتاج لأكثر من 4GB ذاكرة رئيسية كلية يفترض أن الجهاز مخصص بصورة رئيسية لتشغيل لعبة واحدة في نفس الوقت، وربما بعض البرامج الخلفية البسيطة. لكن كحال أي مقارنة بين النظري والعملي ستجد اختلافاً بينهما قد يجعلهما مختلفين تماماً. التقدم في سوق الحواسيب الشخصية، بالإضافة لسيادة فلسفة "أرقام اكبر تعنى جهازاً افضل" على هذا السوق والانخفاض الكبير في أسعار الذواكر ساعدوا على استمرار الزيادة في سعة الرامات في الأجهزة المتاحة في السوق. فتلك الأجهزة التي كانت تأتي بقيقابايت واحد في 2007، أصبحت تأتي بإثنين في 2009، ثم 4 في 2011 وصولاً لما قد يتعدى الست قيقابايتات في العامين الأخيرين. وبالمناسبة، انا لا اتحدت عن اجهزة حاسب مكتبي مخصصة للمهوسي الحواسيب الشخصية والأداء، بل عن أجهزة mainstream لعموم المستخدمين. أما إن رفعنا المعيار بعض الشيء، فنحن نتحدث عن متوسط 6 لـ8 قيقابايتات، وان انتقلنا بالحديث للأجهزة عالية الأداء –حتى الـworkstations  في حدودها الدنيا والمتوسطة الدنيا- فابحث عن أرقام تتعدى الـ10  قيقابايتات!

هذه الزيادة أدت –بتطبيق مفاهيم إحصائية بدائية- إلى زيادة سعة الذاكرة المتاحة للجهاز المتوسط، مما يعني ان مطوري البرامج اصبح بإمكانهم "أخذ راحتهم" في ذاك الجانب. كما لم يكن على مبرمجي أوائل الالفينات إجبارٌ على التزام بالحدود التقنية لحواسيب الثمانينيات، ليس هنالك ما يدفع مبرمج في زمن تأتي في الاجهزة بما لا يقل عن 3 وا 4 قيقابايتات من الرام افتراض ان المستخدم لا يملك سوى 512ميقابايت والانطلاق بناءً على ذلك. النتيجة هي ظهور تطبيقات تستفيد من تلك الإمكانيات لتقديم ميزات إضافية لتتميز به على منافسيها. خاصية الـsandboxing لمتصفح كروم مثلاً، او تقنيات الـcaching المختلفة كخاصية الSuperfetch للويندوز او غيرها المبنية داخل البرامج المختلفة. وفي بعض الأحيان قد تؤدي لتجاهل المطور تحسين كفاءة استهلاك برنامجه للذاكرة، وهنا مرة أخرى اضرب مثالاً بمتصفح كروم.

 كما ذكرت أعلاه، الـmultitasking ربما يكون العامل الأكبر الذي يدفع الحوجة لسعات ذاكرة اعلى. فتلك الالعاب التي كان مطوروها يكتفون بنصح المستخدمين بثلاث واربع قيقابايتات أصبحت تحتاج لست وثمان، ليس بسبب اللعبة نفسها (بدون نفي ان هنالك بعض الحالات التي قد تحتاج فعلاً لذاكرة كبيرة) بل بسبب باقي البرامج التي ستعمل بالإضافة لتلك اللعبة. فتلك العشر السنة التي تعمل بالخلفية ستحتاج حيزها من الذاكرة، وكذالك ذاك الرسم او التصميم الهندسي الذي كنت تعمل عليه أو البحث الذي كنت تقوم به من بين ملفات الـPDF والـDocx تلك. أما إن كان ذاك المستخدم من الذين لا يعيرون اهتماماً لما يثبتونه على حواسيبهم و يعطونه صلاحية الإقلاع من النظام، فالله اعلم إن كانت حتى تلك الأرقام الكبيرة التي ينصح بها المطورون تكفي! [/صيغة مبالغة]

إن ابتعدنا قليلاً عن الاستخدامات الشخصية للحواسيب، ودخلنا في حيز اكثر "حرفية" (ان صح الوصف) لربما ظهرت ضرورة البراح في الذاكرة الرئيسية بصورة اكبر. كثيراً ما أجد نفسي في موقف يتطلب مني تشغيل عدة برامج متطلبة عندما يتعلق الأمر بالذاكرة. خذ مثلاً برنامج الـPhotoshop من ادوبي الذي قد يحتاج لما يتعدى الـ4GB وحده في بعض الحالات (وربما اكثر، لكن هذا اكبر رقم قابلني شخصياً)، خاصة تلك التي يكون فيها التعامل مع صور بدقة عالية، وهذا هو حال الغالبية العظمى من الصور المتعلقة بالخرائط الطبوغرافية وغيرها حيث لكل مليمتر من تلك الصورة أهمية. اضف لذلك ان ذاك البرنامج الذي استخدم لاخراج هذه الصورة من الاساس غالباً ما لا يزال يعمل في الخلفية، أخذاً لنفسه من الذاكرة ما تحتاجه كل تلك الخرط المحملة عليه والطبقات (layers) المختلفة والفلاتر والأدوات وغيرها، ناهيك ان بعض هذه البرامج قد تتضمن في نفسها أليات قواعد بيانات معقدة كحال جزئية الـArc Catalog من حزمة برامج ArcGIS. اضف لهذا أيضاً الامور المعتادة في حاسب مكتبي: عدة مستندات مختلفة مفتوحة وبعضها قيد الطباعة، حفنة من السنة متصفح إنترنت للبريد الإلكتروني وبعض العمليات الأخرى (والتي كثيراً ما يكون ليس لها علاقة بالعمل. في حالتي على الأقل >_>)، بعض الـSpreadsheets والgraphs الضرورية، بعض البرمجيات الصغيرة التي قد تستخدم ضمن الـPipeline للمهمة الحالية، وفي بعض الحالات عدة برامج أخرى باقية من مهمة انتهت لكن نسي المستخدم إغلاقها (وفي حالتي تلك الـ"برامج" قد تكون كبيرة لدرجة الـ3DS MAX او الـAutoCAD، وكليهما ذوا وزن معتبر عندما يتعلق الأمر باستخدام الذاكرة)، ولا ننسى طبعاً حيز الذاكرة المحجوز للبرمجيات المفتوحة على حسابات لمستخدمين اخرين على نفس الجهاز.

أسلوب استخدامي للحواسيب قد يكون سيئاً جداً عندما يتعلق الامر بالكفاءة، غالباً لأني "مدلل" بتلك الـ20GB الموجودة في جهازي الشخصي الحالي، لكن هذا لا ينفي ان حتى تلك الـ8GB المتاحة للجهاز الذي استخدمه في المكتب كثيراً ما لا تكفي للوظائف اعلاه، مجبرة نظام التشغيل للبدء في تفريغ البيانات غير المستخدمة حالياً في الذاكرة إلى وسيط التخزين الدائم، ما يعرف بالـPaging. ونتيجة لفرق السرعة الخيالي بين ذواكر الرام والاقراص الصلبة فإن هذه العملية ستعنى مؤكداً تردياً في سلاسة النظام، لدرجة قد يصل فيها الأمر ببرنامج ما الى التجمد وعدم الاستجابة للمستخدم او النظام، مؤدياً بذلك لفقدان المستخدم لعمله أو عودته لنقطة سابقة منه. وفي احسن الظروف، سيحتاج المستخدم عند الانتقال الى برنامج اخر لانتظار اعادة تحميل بياناته الى الذاكرة الرئيسية قبل بدء استخدامه، ان كان قرصه الصلب سريعاً فلربما لن يضطر الى الانتظار طويلاً، اما ان كان محركاً قديماً مليئاً بالبيانات المشتتة على اسطح الاقراص (ما يعرف بالـfragmentation) وكان الجهاز بالفعل يقوم بعمليات قراءة وكتابة I/O اخرى كالمسح عن الفايروسات، فربما كان من الافضل له ان يشد الرحال الى المطبخ ويعمل ليه كباية شاي زابطة. :|

ويستحسن يكون شاي اخضر بنعناع، عشان يلحق الضغط لم يرجع يلقى انه الويندوز البليد علق بالبرامج الكان شغال فيها لتسليم بعد كم ساعة…

Image Source: Wikimedia Commons