من اول المواصفات التي ننظر إليها عندما نفكر في شراء حاسوب أو جهاز ذكي هي سرعة الجهاز، و تعودنا أن نعتمد في تحديد السرعة على المعالج، فنقول أن هذا الجهاز بسرعة ٣ جيجا و ذاك بسرعة ٢ جيجا، كما أن لعدد الأنوية في المعالج نصيب مما يدور بيننا من نقاش عن افضلية جهاز على جهاز من ناحية السرعة و المواصفات، فنقول أن الجهاز الفلاني هو الأسرع لأن معالجه يحتوي ٤ انوية (Quad Core) بسرعة ٢ جيجا مثلاً، بينما الجهاز العلاني أبطأ لأن معالجه ثنائي النواة (Dual Core)، و سرعته ١ جيجا على سبيل المثال. فما هي حقيقة سرعة المعالج او سرعة الجهاز و هل هي فعلاً تقاس بالجيجا و عدد الأنوية؟ في هذا المقال نستعرض بعضاً من تقنية المعالجات مما قد يساعدنا في فهم بعض جوانب اداء المعالجات، فالموضوع متشعب و فيه الكثير من التفاصيل.
سرعة الجهاز هي سرعة أبطأ أجزائه:
يخطئ البعض عندما يظن بأن مجرد وضع أسرع معالج في جهاز معين، يجعل منه الأسرع، فالعبرة ليست بسرعة المعالج وحده بل بكافة اجزاء و قطع الجهاز، فالمعالج جزء من منظومة، و هذه المنظومة يجب أن تعمل مع بعضها البعض بتناغم، و عندما يكون هناك جزء بطئ في هذه المنظومة، فإن باقي أجزاء المنظومة ستضطر لتخفيض سرعتها لتجاري الجزء البطئ.
ما هو الجيجاهرتز؟
كثيراً ما يقوم عامة الناس بقياس السرعة بمقياس الجيجا، و هو امر يمكن تفهمه فيما لو عدنا بعقارب الساعة قليلاً الى الوراء، لنتعرف على كيفية بداية الموضوع.
تتكون البرامج التي نشغلها على اجهزتنا الذكية من سلسلة طويلة من الأوامر، و وظيفة المعالج هو تنفيذ هذه الأوامر بالترتيب حتى يعمل البرنامج بالشكل الذي صمم به. و توجد في المعالج ساعة تنظم عمله، و يوقت المعالج جميع عملياته مع هذه الساعة.
عندما نتكلم عن الجيجاهيرتز، فنحن لا نتكلم عن السرعة، بل نتكلم عن تردد المعالج. يقاس تردد المعالج بعدد دورات الساعة في الثانية، و وحدة القياس هنا هي الهرتز. في بدايات تطور المعالجات كان تردد المعالجات يقاس بالكيلوهرتز، و الكيلوهرتز يعني ان تردد ساعات المعالج ١٠٠٠ هرتز في الثانية. و بعد أن تطورت المعالجات أكثر أصبح التردد يدور في فلك الميجاهرتز، و بما أن الميجا يساوي مليون، فإن معالجاً تردده ١٠٠ ميجاهرتز مثلاً، يعني أن تردده ١٠٠ مليون هرتز في الثانية. أما الجيجاهرتز فكما هو واضح يعني ان تردد المعالج بليون هرتز في الثانية.
ما علاقة الجيجاهرتز بالسرعة؟
هناك علاقة قد لا تكون مباشرة بين الجيجاهرتز و سرعة المعالج، كما أسلفنا فالمعالج يوقت جميع عملياته مع دورات الساعة، فلو كان لدينا معالج تردد ٢ جيجاهرتز، و كان ينفذ تعليمة واحدة في كل دورة ساعة، فإن ذلك يعني أن هذا المعالج يستطيع تنفيذ ١ بليون عملية في كل ثانية.
لكن الموضوع ليس بهذه السهولة، فهناك الكثير من التفاصيل في هذا الموضوع. ففي ثمانينيات القرن الماضي كانت المعالجات تحتاج لعدة دورات من الساعة (تصل الى ٨ في بعض المعالجات) و ذلك لتنفيذ تعليمة واحدة، ثم تطورت المعالجات شيئاً فشيئاً حتى أصبح بإمكانها تنفيذ تعليمة في كل دورة ساعة، أي اصبح بإمكان معالج تردده ١٠٠ ميجاهرتز مثلاً إنجاز ١٠٠ بليون تعليمة في الثانية.
من هذا نستنتج أن المعالجات ليست كلها متساوية حتى في الماضي، ف١٠٠ ميجاهرتز على معالج معين، ليست بالضرورة تقدم نفس سرعة الأداء التي تقدمه ١٠٠ ميجاهرتز على معالج آخر، و من الأمثلة التي عاصرها الكثير منا في التسعينات هو فارق السرعة الواضح بين معالجات ٤٨٦ و بينتيوم رغم أنها تتقاطع في الترددات بين ٦٦ الى ١٢٠ ميجاهرتز. و من ابرز الأسباب هو أن معالجات ٤٨٦ كانت تستطيع تنفيذ تعليمة واحدة في كل دورة ساعة بينما كانت معالجات بينتوم تستطيع تنفيذ تعليمتين في كل دورة، أي ان بينتيوم كان يستطيع تقديم ضعف سرعة الأداء بنفس التردد.
و بما أننا وصلنا لمعالجات بينتيوم، فلابد أن نلقي الضوء على بعض التقنيات الذي لها الدور الكبير في تحديد سرعة المعالج، و هذه التقنيات مع تطورها و تقدمها، قللت كثيراً من أهمية الجيجاهرتز كمؤشر للسرعة. هذه التقنيات تشكل مع بعضها البعض تصميم المعالج او ما يعرف بمعمارية المعالج، و أي مطلع على تقنيات المعالجات يعرف أن معمارية المعالج هي اهم ما يحدد قوة ادئه.
تقنية توقع التفرعات:
كما أشرنا فإن معالجات بينتيوم افتتحت حقبة جديدة للمعالجات، حيث اصبح بإمكان المعالجات الحديثة تنفيذ اكثر من تعليمة في دورة الساعة الواحدة، و هذا شئ ممتاز، إلا أن هناك مشكلة في هذا الموضوع. ليس من الممكن دائماً للمعالج ان ينفذ تعليمتين في وقت واحد، لأن في الكثير من البرامج يكون من اللازم اتمام العملية الأولى حتى ننتقل للعملية الثانية. فلنأخذ هذا المثال البسيط و بلغة بسيطة جداً:
العملية الأولى: الطلب من المستخدم ادخال عمره
العملية الثانية: اذا كان العمر اقل من ١٢ سنوات قم بالعملية ٣ و اذا كان اكثر من ١٢ سنوات قم بالعملية ٤
العملية الثالثة: اكتب على الشاشة أنت صغير
العملية الرابعة: اكتب على الشاشة أنت كبير
تخيلوا لو أن لدى المعالج سطوراً من الأوامر بشكل مشابه لما سبق، لن يستطيع المعالج انجاز العمليتين الثانية و الثالثة معاً في دورة واحدة، مما سيخفض أداءه كثيراً، خصوصاً اذا تكررت مثل هذه العمليات في البرنامج. ما العمل إذن؟ هنا تأتي تقنية توقع التفرعات. فما هي تقنية تقنية توقع التفرعات؟
نشأت الحاجة لتقنية توقع التفرعات عندما اصبحت المعالجات قادرة على تنفيذ اكثر من تعليمة في دورة الساعة الواحدة، و تقوم هذه التقنية -كما يوحى اسمها- بتوقع تفرعات البرنامج، فعلى حسب المثال السابق عندما نصل الى السطر الثاني، فإن المعالج سيتوقع مثلاً أن المستخدم سيدخل اقل من ١٢، و يقوم بتنفيذ الأمر التالي مسبقاً، فإن صدق توقعه فسيكون قد استفاد من امكانيته انجاز تعليمتين في الثانية على اكمل وجه، أما اذا فشل فسيقوم باعادة المعالجة من مكان الخطأ. المعالج هنا ليس لديه ما يخسره، فلو كان البرنامج مثلاً يحتوي على ٢٠ تفرعاً مثل هذا في الثانية الواحدة، فنجاحه في توقع ١٠ تفريعات منها افضل من ان لا يقوم بتوقع اي تفريع.
النقطة التي نود الوصول لها هي ان المعالجات ليست سواء في نسبة الدقة في توقع التفرعات، و بالتالي فإن مدى كفاءتها في القيام بهذه التقنية هو من الامور التي من شأنها أن ترجح كفة معالج على معالج، و قد تكون سبباً كافياً لتفوق معالج ذي تردد اقل على معالج آخر ذي تردد اعلى.
الذاكرة كاش:
يتم تخزين البرامج في القرص الصلب أو ذاكرة من نوع فلاش، و رغم سرعة وسائط التخزين هذه إلا إن المعالج أسرع بكثير منها، و هذا سيشكل عنق زجاجة في النظام تبطئ من عمله، و هذا ما دعى الى الاستعانة بذاكرة رام، ذاكرة رام هي صغيرة الحجم اذا ما تمت مقارنتها بالقرص الصلب او ذاكرة فلاش، إلا أن ما يميزها هو انها سريعة في قراءة و كتابة البيانات، لذا يتم نقل البرامج (او الاجزاء الهامة منها) إليها ليسهل على المعالج الرجوع لها في اسرع وقت ممكن. و رغم أن ذاكرة الرام سريعة، إلا أنها كانت تتخلف كثيراً عن سرعة المعالج، و لإعطاء الأداء دفعة إضافية، تم ابتكار ذاكرة اطلق عليها ذاكرة كاش، او كما تسميها بعض المصادر العربية بالذاكرة المخبئية، فما هي ذاكرة كاش؟
ذاكرة كاش (في المعالجات الحديثة) هي ذاكرة صغيرة جداً موجودة في المعالج نفسه، و هي موجودة على مستويين أو ثلاثة مستويات. المستوى الأول أصغر مساحة من المستوى الثاني، إلا أنها اسرع كذلك، و تخزن فيها البيانات و التعليمات التي يحتاجها بشكل فوري المعالج بحيث تكون تحت تصرفه اثناء تنفيذ البرنامج، أما البيانات و التعليمات التي من المحتمل ان يحتاجها المعالج فيما بعد فإن تخزن في الذاكرة كاش من المستوى الثاني، و عند الحاجة اليها يتم نقلها الى الكاش من المستوى الأول و هكذا، و تتحكم دائرة ذكية في تحديد اي من البيانات يجب ان تخزن في الذاكرة كاش و اي من البيانات اكثر اهمية او اقل اهمية. كلما كان ذكاء هذه الدائرة اكبر، كلما كانت كفاءة المعالج اكثر، فلا فائدة من معالج بتردد ٥٠ جيجاهرتز إذا كانت كفاءته في ادارة ذاكرة كاش ضعيفة.
ماذا عن معالجات الأجهزة الذكية؟
يعتقد البعض انه من الممكن المقارنة بين الأجهزة الذكية و الحواسيب العادية من ناحية المعالجات، لأن كلاهما يعتمد نفس ارقام الجيجاهرتز، و الصحيح أنه لا توجد مقارنة بينهما.
المعالجات الموجودة في الأجهزة الذكية تختلف كثيراً، و تركيزها ليس على الأداء بقدر ما هو على توفير طاقة البطارية و الحد من الحرارة. عندما نقول ان تردد معالج الهاتف الفلاني هو ٢ جيجاهيرتز، فذلك لا يعني انه يعمل على تردد ٢ جيجاهرتز طوال الوقت، بل يعني أن اعلى تردد يصل اليه في وقت ما هو ٢ جيجاهيرتز، فمن غير العملي و المنطقي أن يعمل معالج الجهاز الذكي طوال الوقت على تردد ٢ جيجاهيرتز، لأن ذلك سيستهلك كامل طاقة البطارية في وقت قصير، كما أنه سيسبب مشاكل كبيرة في الحرارة.
يتم تصميم معالجات الأجهزة الذكية بحيث تقوم بذكاء برفع التردد و تخفيضه حسب الحاجة، فعندما يتم تشغيل برنامج يتطلب الكثير من طاقة المعالجة، يقوم المعالج برفع تردده في النطاق الذي لا يسبب مشاكل للحرارة، و عندما لا تكون هناك حاجة يقوم المعالج بتخفيض تردد توفيراً للطاقة و تلافياً لارتفاع الحرارة. يقوم المعالج بتخفيض و رفع التردد بشكل سريع بدون ان يحس بذلك المستخدم، إلا أن المعالجات تتفاوت في كفاءتها في القيام بهذا العمل، و لنظام التشغيل دوره في هذا الشأن، و من شأن ذلك أن يحدد اداء و سرعة المعالج.
و لكي نقرب الصورة، لكم ان تتخيلوا ان لدينا سيارتان، واحدة سرعتها القصوى ٢٠٠كيلومتر في الساعة و الاخرى سرعتها القصوى ١٦٠كيلومتر في الساعة، فلو تسابقت السياراتان في شارع مستقيم فإن الغلبة للسيارة ذات السرعة ٢٠٠كلم في الساعة، اما اذا تم السباق في شارع مليء بالمنعطفات (تماماً كما يحدث لمعالجات الاجهزة الذكية)، فإن الغلبة ستكون من نصيب السيارة التي تستطيع التعامل بكفاءة اكبر مع المنعطفات و تخفيف و زيادة السرعة، و تستطيع المحافظة على اكبر سرعة ممكنة معظم الوقت.
ماذا عن تعدد أنوية المعالجات؟
تعدد المعالجات يساعد كثيراً في تحسين قوة المعالجة، و قد تم تصميمه لكي يساعد في تحسين اداء المهام المهام المتعددة، كما انه يفيد في البرامج التي تتعامل مع كميات كبيرة من البيانات، حيث يتم توزيع هذه البيانات على أنوية المعالج ليتم انجازها في اسرع وقت ممكن.
اضافة لذلك فقد تم الاستفادة من تعدد الأنوية في الكثير من البرامج الاحترافية كبرامج معالجة الصور و الصوتيات، و ذلك عبر تصميم البرامج من الأساس لكي تستفيد من تعدد الأنوية.
لكن نعود لنقول ليس عدد الأنوية هو المؤشر الوحيد لأداء المعالج، فمعمارية المعالج المميزة، من الممكن ان تتغلب على معالجات بأنوية اكثر عدداً، و هذا ما يفسر بعض المعالجات ثنائية النواة على معالجات اجهزة اخرى رباعية النواة.