هل يمكنك شرح كيفية عمل أجهزة الكمبيوتر من الألف إلى الياء؟
لفهم أجهزة الكمبيوتر، يجب عليك أولا قبول حقيقة فيزيائية. لا يوجد سحر داخل الكمبيوتر. فقط إشارات كهربائية. وبشكل أكثر دقة، فقط جهد مرتفع وجهد منخفض.
المادة الأساسية للرقائق التي نستخدمها اليوم هي السيليكون. السيليكون هو شبه موصل. لأشباه الموصلات خاصية فيزيائية: عن طريق تطعيمها بعناصر مختلفة والتحكم في الجهد الكهربائي على القطب، يمكنك التحكم في ما إذا كانت توصل الكهرباء أم لا. هذه البنية المجهرية التي يمكن تشغيلها وإيقافها بالكهرباء تسمى ترانزستور.
تحتوي المعالجات الحديثة على عشرات المليارات من الترانزستورات. عملية 3 نانومتر الحالية من TSMC تعني أن هذه الترانزستورات تُصنع بحجم صغير بشكل لا يصدق بحيث يمكن وضع عشرات المليارات منها على قطعة سيليكون بحجم ظفر الإصبع.
تحتاج فقط إلى تذكر وظيفة أساسية واحدة للترانزستور. إذا طبقت جهدا مرتفعا على طرف التحكم الخاص به، فإنه يوصل. إذا طبقت جهدا منخفضا، فإنه ينقطع. هذه هي الحقيقة الفيزيائية الأساسية. نعرف الجهد المرتفع بأنه 1 منطقي والجهد المنخفض بأنه 0 منطقي. كل علوم الكمبيوتر مبنية على هاتين الحالتين.
باستخدام الترانزستورات، يمكننا دمجها في بوابات منطقية.
لنفترض أننا وصلنا ترانزستورين على التوالي. يمكن للتيار أن يتدفق من طرف إلى آخر – مما ينتج خرجا 1 – فقط عندما يستقبل طرفا التحكم جهدا مرتفعا، أي عندما يكون كلا المدخلين 1. إذا كان أي منهما 0، ينقطع التيار ويكون الخرج 0. تسمى هذه الدائرة الفيزيائية بوابة AND.
بنفس المنطق، إذا تم توصيل ترانزستورين على التوازي، يتدفق التيار – مما ينتج خرجا 1 – طالما أن أحد المدخلين على الأقل هو 1. فقط عندما يكون كلاهما 0 يكون الخرج 0. هذه هي بوابة OR.
باستخدام طريقة توصيل مختلفة قليلا، حيث إدخال 1 يعطي خرجا 0 وإدخال 0 يعطي خرجا 1، نصنع بوابة NOT.
مع بوابات AND وOR وNOT، يدخل العالم الفيزيائي رسميا إلى العالم الرياضي. أوصي بشدة بكتاب دراسي كلاسيكي هنا اسمه Code، لتشارلز بيتزولد. هذا الكتاب لا يحتوي على حشو – يبدأ من التلغراف ويشرح كيفية توصيل البوابات المنطقية. إنه مثالي لبناء تلك الطبقة الأولى من الحدس الفيزيائي. يجب أن تطلع عليه بعد قراءة هذا المقال – سيبهرك بالتأكيد.
الآن بعد أن أصبح لدينا بوابات منطقية، كيف نجعل الكمبيوتر يقوم بالجمع؟
في النظام الثنائي، 1 زائد 1 يساوي 10. هذا يعني أن البت الحالي يصبح 0، ونحمل 1 إلى الموضع التالي. هاتان في الواقع عمليتان منطقيتان. أولا، تحديد البت الحالي: إذا كان كلا المدخلين 1، فالبت الحالي هو 0. إذا كان أحد المدخلات 1 والآخر 0، فالبت الحالي هو 1. يمكن تنفيذ هذا المنطق من خلال الجمع بين البوابات الأساسية التي ناقشناها – نسميها بوابة XOR. ثانيا، تحديد الحمل: فقط عندما يكون كلا المدخلين 1 يحدث الحمل، وهي بالضبط وظيفة بوابة AND.
قم بتوصيل بوابة XOR وبوابة AND معا، وستكون قد نفذت فيزيائيا جمع رقم ثنائي واحد. هذا يسمى نصف الجامع. قم بتوصيل عدة أنصاف جامع بتسلسل، مع معالجة إشارة الحمل، وستحصل على جامع كامل. إذا قمت بتوصيل 64 من هذه الجامعات الكاملة، ستحصل على دائرة فيزيائية يمكنها جمع أرقام ثنائية 64 بت.
عندما تكتب سطر الكود a = b + c، ما يحدث على المستوى الأدنى هو أن الإشارات الكهربائية التي تمثل b وc تندفع في وقت واحد إلى دائرة الجامع هذه المكونة من عشرات الآلاف من الترانزستورات. بعد تأخير فيزيائي قصير للغاية، ينتج الطرف الآخر من الدائرة جهودا مرتفعة ومنخفضة مستقرة تمثل النتيجة.
هذا ما يسمى وحدة الحساب والمنطق. إنها ليست مكونا أساسيا غامضا على الإطلاق – إنها مجرد شبكة كثيفة من البوابات المنطقية شبه الموصلة، موصلة بأسلاك ثابتة وفقا لقواعد رياضية صممها البشر. بالإضافة إلى الجمع، من خلال تكوينات توصيل مختلفة، يمكنها أيضا أداء الطرح وإزاحة البتات وحتى الضرب.
لكن مجرد القدرة على الجمع ليست مفيدة. النتيجة هي مجرد مجموعة من الإشارات الكهربائية – بمجرد قطع الطاقة أو تغير الإدخال، تختفي النتيجة. يجب أن يكون الكمبيوتر قادرا على تذكر البيانات. هذا يقودنا إلى الذاكرة والمسجلات.
كيف نستخدم الإشارات الكهربائية لتذكر حالة؟ اخترع مهندسو الإلكترونيات دائرة بارعة للغاية تسمى قلاب. وهي دائرة بوابة منطقية مع حلقة تغذية مرتدة. ببساطة، يتم إرجاع إشارة الخرج إلى المدخل. هذا التصميم يسمح للدائرة بالحفاظ على حالتها الحالية من الجهد المرتفع أو المنخفض باستخدام التغذية المرتدة الداخلية، حتى بعد إزالة الإدخال الأصلي.
عندما تعطي هذا القلاب إشارة كتابة محددة، فإنه يحدث حالته الداخلية ويغلقها. ما لم ترسل له إشارة كتابة أخرى، سيحتفظ بذلك الرقم 0 أو 1 إلى أجل غير مسمى.
رتب 64 قلابا في صف واحد، ويمكنك تخزين رقم ثنائي 64 بت. داخل المعالج، بجانب وحدة الحساب والمنطق مباشرة، تسمى وحدات التخزين فائقة السرعة هذه المصنوعة من القلابات بالمسجلات. موقعها الفيزيائي بجوار دائرة الحساب مباشرة، مما يعني أن الإشارة الكهربائية تقطع أقصر مسافة ممكنة، لذلك فهي سريعة للغاية. بالطبع، هي أيضا مكلفة للغاية في التصنيع، لذلك لا يمكن أن تكون إلا صغيرة جدا.
هنا يجب أن أوصي بشدة بكتاب أسطوري تماما: Computer Systems: A Programmer’s Perspective، المعروف في أوساط تكنولوجيا المعلومات باسم CSAPP. إنه الكتاب الدراسي المستخدم في جامعة كارنيجي ميلون. ما يجعله لا يصدق هو أنه يبني جسرا من لغة التجميع إلى هندسة الأجهزة وأنظمة التشغيل. بمجرد فهمه، ستعرف لماذا بعض الأكواد تعمل بسرعة وبعضها ببطء – لأنك ستبدأ في كتابة الكود بعقلية فيزيائية المستوى.
إذا كنت تريد المضي قدما وربط أنظمة التشغيل وتنظيم الكمبيوتر والشبكات وغيرها من الأساسيات الأساسية بشكل منهجي دفعة واحدة، فقد جمعت مجموعة تغطي هياكل البيانات والخوارزميات وتنظيم الكمبيوتر والمزيد.
أكثر من مليون تحميل عبر الإنترنت – أساسيات الكمبيوتر التي سترفع مهاراتك.
لنواصل التحرك إلى الخارج. ماذا لو لم تكن المسجلات كافية؟ نحتاج إلى تخزين أكبر. هنا يأتي دور شرائح RAM الموصولة بلوحة الأم. الاسم التقني هو ذاكرة الوصول العشوائي الديناميكية، أو DRAM.
المبدأ الفيزيائي لـ DRAM مختلف تماما عن المسجلات. بدلا من القلابات، تستخدم مكثفات مجهرية لتخزين الشحنة الكهربائية. المكثف المشحون هو 1، وغير المشحون هو 0. لأن بنية المكثف بسيطة للغاية – تحتاج فقط إلى ترانزستور واحد ومكثف واحد لتخزين بت واحد من البيانات – يمكن جعل السعة كبيرة جدا. اليوم، عشرات أو حتى مئات الجيجابايت شائعة.
لكن المكثفات لها عيب قاتل: إنها تفقد الشحنة. إذا تركت وشأنها، فإن الشحنة التي تمثل 1 تتسرب بالكامل في غضون ميلي ثانية، لتصبح 0. لذلك يجب أن تحتوي اللوحة الأم على دائرة تحكم مخصصة تقرأ البيانات من الذاكرة وتعاود شحنها على فترات قصيرة للغاية. هذا يسمى التحديث الديناميكي. هذا هو السبب في أنه عند فصل الطاقة عن جهاز الكمبيوتر الخاص بك، يختفي كل شيء في الذاكرة على الفور.
الآن لدينا وحدة حساب ومنطق يمكنها إجراء العمليات الحسابية، ومسجلات وذاكرة يمكنها تخزين البيانات. السؤال الأساسي هو: كيف تبدأ هذه الأشياء الجامدة في التحرك؟ من يأمرها أن تقوم بالجمع أولا، ثم الضرب، وأخيرا تخزين النتيجة؟
هذه هي مهمة وحدة التحكم، وهي الآلية الأساسية التي تجعل الكمبيوتر آلة.
تحتوي اللوحة الأم على مذبذب بلوري – بلورة كوارتز تولد إشارة نبضية بتردد ثابت طالما أن الطاقة موصولة. على سبيل المثال، إذا كان معالجك مصنفا بتردد 4.0 جيجاهرتز، فهذا يعني أن هذه البلورة تولد 4 مليارات انتقال من الجهد المرتفع إلى المنخفض كل ثانية.
هذا هو نبض قلب الكمبيوتر. جميع البوابات المنطقية والقلابات داخل المعالج تعمل في تزامن صارم مع هذا النبض.
داخل المعالج، هناك مسجل خاص جدا يسمى عداد البرنامج. لا يحتوي إلا على عنوان ذاكرة.
عندما يدق النبض الأول، يقوم المعالج بأول شيء: جلب التعليمات. يرسل العنوان المخزن في عداد البرنامج إلى الذاكرة عبر المسارات المعدنية على اللوحة الأم. ترسل الذاكرة مرة أخرى السلسلة الطويلة من 0 و1 المخزنة في ذلك العنوان.
هذه السلسلة الطويلة من 0 و1 هي التعليمات. عندما تعود التعليمات إلى المعالج، تدخل إلى وحدة التحكم. وحدة التحكم هي أيضا مجرد مجموعة من البوابات المنطقية الموصولة بأسلاك ثابتة – مهمتها هي فك الترميز. على سبيل المثال، عندما ترى أن الأرقام القليلة الأولى من 0 و1 القادمة هي 1011، فإن بنيتها الداخلية للتوصيل تحدد أن هذه الفولتية المرتفعة والمنخفضة تقوم بتنشيط المفتاح المؤدي إلى دائرة الجمع في وحدة الحساب والمنطق. في نفس الوقت، يحدد الجزء المتبقي من التعليمات أي المسجلات تحتوي على قيمتي البيانات المراد جمعهما.
عندما يدق النبض التالي، تبدأ مرحلة التنفيذ. تستقبل دائرة الجمع المنشطة البيانات، وتندفع الإشارات الكهربائية عبر شبكة البوابات المنطقية للجامع في لحظة، ويتم إنتاج النتيجة.
في النبض التالي، يتم كتابة النتيجة مرة أخرى إلى المسجل المحدد.
أخيرا، يزداد عداد البرنامج تلقائيا بمقدار واحد، مشيرا إلى التعليمات التالية في الذاكرة. ثم تتكرر الدورة. مليارات المرات في الثانية.
هذه هي الحقيقة الكاملة للمستوى الأدنى لكيفية عمل الكمبيوتر. لا يوجد أي ذكاء متقدم على الإطلاق – فقط مذبذب بلوري يدق بشكل أعمى، وعداد برنامج يزيد العناوين ميكانيكيا، ووحدة تحكم تبدل مسارات الإشارة بشكل آلي بناء على 0 و1 التي تقرأها، ووحدة حساب ومنطق تحول مستويات الجهد الواردة بشكل سلبي إلى مستويات جهد جديدة.
كود Python أو Java الذي تكتبه في عملك اليومي يتم في النهاية ترجمته بواسطة برنامج يسمى المترجم إلى سلسلة طويلة ومملة من تعليمات الآلة الخاصة بهندسة المعالج – 0 و1 خالصان.
عند هذه النقطة، لقد أكملت بالفعل السلسلة بأكملها من الرمل (السيليكون) إلى البرنامج. كثير من الناس يشعرون أنهم فهموا في هذه المرحلة، لكن في بيئة الصناعة الواقعية اليوم، مجرد فهم مبادئ المعالج التقليدية لا يصل حتى إلى درجة النجاح.
نظرا للموضوع الأكثر سخونة حاليا لنماذج الذكاء الاصطناعي الكبيرة، يجب أن أوسع آفاقك. دعنا نرى كيف يبدو مشهد القوة الحاسوبية الحقيقية اليوم.
أي فريق يعمل اليوم على نماذج كبيرة، سواء للتدريب أو الاستدلال، لا يمكنه مطلقا استخدام المعالجات للحساب. لماذا؟
لأن المعالجات صممت للتعامل مع التحكم المنطقي المعقد. انظر إلى المعالج: جزء كبير من مساحته مخصص للتنبؤ بالتفرع وإدارة الذاكرة المؤقتة ووحدة التحكم. الجزء المستخدم فعليا للحساب العددي الخالص – وحدة الحساب والمنطق – ليس كبيرا. الأمر أشبه بأن المعالج مثقف عالي التعليم يتفوق في عمليات الإدارة المعقدة. اطلب منه حساب 1+1، يمكنه فعل ذلك، وقد يحلل أيضا ما إذا كان هناك خطأ – لكنه يمكنه معالجة عدد قليل فقط في كل مرة.
الجوهر الرياضي في صميم النماذج الكبيرة هو ضرب المصفوفات على نطاق واسع للغاية. على سبيل المثال، ضرب مصفوفتين بحجم عدة آلاف في عدة آلاف. هذا يتطلب مئات الملايين من عمليات الضرب والجمع. المنطق بسيط للغاية – ضرب-جمع، ضرب-جمع – بدون أي تفرعات معقدة، لكن حجم البيانات هائل.
إذا استخدمت معالجا تقليديا لحساب هذا، يمكنه بالتأكيد تنفيذ مليارات التعليمات في الثانية، لكن أمام مئات المليارات من المعاملات، سيكون كقطرة في محيط.
لفهم ما تحسبه النماذج الكبيرة فعليا، إذا كان حدسك الرياضي لا يزال يعتمد على الصيغ المحفوظة، أوصيك بشدة بمشاهدة “جوهر الجبر الخطي” من 3Blue1Brown. لتسهيل المراجعة والاستنتاج، يمكنك استخدام هذه المجموعة من ملاحظات 3Blue1Brown بالصينية والإنجليزية. إنها تحقق تصورا بديهيا حقيقيا لضرب المصفوفات المتقدم والتحولات الخطية. بعد مشاهدتها، سيكون لديك صورة ذهنية فيزيائية حقيقية لعمليات الضرب والتراكم عبر آلاف المعاملات.
ملاحظات الجبر الخطي لـ 3Blue1Brown: ربما أفضل مجموعة صينية-إنجليزية على الإنترنت
طبيعة هذه الحسابات المصفوفية الهائلة أدت إلى ولادة GPU، وحدة معالجة الرسومات – التي يجب أن تسمى الآن وحدة الحوسبة المتوازية للأغراض العامة.
فلسفة تصميم GPU معاكسة تماما لـ CPU. إنها تزيل معظم دوائر التحكم المعقدة والذاكرة المؤقتة الكبيرة، وتملأ كل مساحة فيزيائية متحررة بأبسط وحدات الحساب والمنطق الممكنة. شريحة NVIDIA H100 الحالية تحتوي على عشرات الآلاف من أنوية الحوسبة. على الرغم من أن كل نواة قد تعمل بتردد أقل من نواة المعالج ولديها منطق تحكم ضعيف، إلا أنها يمكنها جميعا العمل في وقت واحد.
تخيل GPU كتشكيل من 100,000 طالب مدرسة ابتدائية لا يعرفون سوى الحساب. أنت تعطيهم أمرا بسيطا للغاية: اضرب الرقم على يسارك بالرقم على يمينك. جميع الطلاب 100,000 يحسبون النتيجة في وقت واحد على نفس دقة الساعة. بالنسبة لعمليات المصفوفات المتوازية بشكل هائل التي تتطلبها النماذج الكبيرة، فإن GPU أكثر كفاءة بمئات إلى آلاف المرات من CPU.
في الواقع، الذكاء الاصطناعي – مثل جامع المعالج – ليس غامضا إلى هذه الدرجة. إنه لا يزال مجرد طبقة تلو الأخرى من المنطق والمصفوفات. إذا كنت تريد بناء فهمك للتعلم العميق من الصفر، أوصي بكتاب أشاد به الكثيرون على تويتر لإزالة الغموض تماما عن الذكاء الاصطناعي: Deep Learning with Python. عندما تفهم حسابات التنسور في الانتشار الأمامي والخلفي، ستدرك أنه لا يوجد سحر داخل النماذج الكبيرة أيضا.
بعد قراءة هذا الكتاب، أزيل الغموض تماما عن الذكاء الاصطناعي!
عد إلى الأجهزة. عندما نقوم بتحسين الخوارزميات منخفضة المستوى، يذهب معظم جهدنا إلى القتال مع عرض النطاق الترددي للذاكرة. هذا هو أيضا المكان الذي يتعثر فيه العديد من المبرمجين المتقدمين.
لأن وحدة الحساب والمنطق تحسب بسرعة كبيرة. كما ذكرنا سابقا، تخزن وحدات الذاكرة البيانات عن طريق شحن وتفريغ المكثفات، وهي على مسافة فيزيائية معينة من المعالج أو GPU – الإشارات الكهربائية تستغرق وقتا للانتقال عبر اللوحة الأم. أكبر تحد يواجه رقائق الذكاء الاصطناعي اليوم هو ما تسميه الأوساط الأكاديمية عنق الزجاجة لفون نيومان.
أي: آلاف أنوية الحوسبة تنتهي من معالجة البيانات في أيديهم في لحظة، ثم لا يمكنهم إلا البقاء خاملين، في انتظار نقل بيانات جديدة من الذاكرة البطيئة. حتى لو جعلت دوائر الحوسبة على الشريحة أسرع، إذا لم تتمكن من تغذية البيانات بسرعة كافية، فإن القوة الحاسوبية تهدر.
لحل هذه المشكلة، تم دفع مهندسي الأجهزة إلى أقصى الحدود. بما أن وحدات الذاكرة العادية بعيدة جدا وبطيئة جدا، لماذا لا يتم تغليف الذاكرة وشريحة GPU مباشرة على نفس الركيزة؟ لزيادة عرض القناة لنقل البيانات، بدلا من استخدام الأسلاك التقليدية، يستخدمون تقنية تسمى الفواصل البينية السيليكونية – حفر آلاف الثقوب الموصلة المجهرية داخل السيليكون لتوصيل الذاكرة وأنوية الحوسبة مباشرة. هذا ما تم الترويج له بشكل كبير كذاكرة عالية النطاق الترددي، أو HBM.
إذا كان هذا الجزء يثيرك بعمق وتريد تأمين راتب مرتفع لا يمكن الاستغناء عنه كمهندس معماري أو مطور منخفض المستوى في عصر الذكاء الاصطناعي القادم، أوصيك بشدة بقراءة Computer Architecture: A Quantitative Approach. هذا الكتاب من تأليف اثنين من الحائزين على جائزة تورينج، وكل مهندس أجهزة في وادي السيليكون تقريبا لديه نسخة. يستخدم كميات هائلة من البيانات الحقيقية والصيغ ليخبرك لماذا يجب تصميم الرقائق بهندسات ذاكرة مؤقتة محددة وأين تقع عنق الزجاجة في التوازي متعدد النوى بالضبط. على الرغم من أنه جاف بشكل لا يصدق للقراءة، وبعض الفصول صعبة جدا، إلا أنه الطريق الضروري لسد الفجوة المعرفية في الفهم منخفض المستوى.
عد إلى سؤالك الأصلي. لماذا لا تزال تشعر بالارتباك بعد تعلم كل هذه المصطلحات؟ لأن التعليم التقليدي يقطع الصلة الحيوية بين الكيانات الفيزيائية والتجريدات المنطقية.
عندما تعامل المعالج كصندوق أسود سحري، تبدو تلك المصطلحات كتعريفات غير مفهومة. ولكن إذا اتبعت القوانين الفيزيائية إلى الأعلى:
- لأن الفولتية المرتفعة والمنخفضة يمكن أن تشكل بوابات منطقية، حصلنا على وحدات حسابية يمكنها إجراء العمليات الرياضية.
- لأن دوائر التغذية المرتدة يمكنها تثبيت حالات الجهد، حصلنا على مسجلات يمكنها تخزين البيانات.
- لأننا كنا بحاجة إلى التحكم بشكل إيقاعي في تدفق الإشارات الكهربائية، حصلنا على مذبذبات بلورية ووحدات تحكم.
- لأن هذا النظام معقد جدا بحيث لا يمكن للبشر إدخال مستويات الجهد مباشرة، اخترعنا مجموعات التعليمات، وغلفنا 0 و1 بلغة التجميع، وأخيرا في C وPython.
كممارس خاض غمار هذه الصناعة، أستطيع أن أقول لك بمسؤولية كبيرة: في هذا العصر، أطر العمل الأمامية تأتي وتذهب، وهندسات الخدمات المصغرة الخلفية تزدهر لبضع سنوات، وحتى هندسات نماذج الذكاء الاصطناعي الكبيرة تتطور بسرعة مذهلة. العديد من تقنيات تطوير التطبيقات عالية المستوى التي تتعلمها اليوم قد تصبح قديمة في العام القادم. في الواقع، النماذج الكبيرة نفسها يمكنها بالفعل أداء العديد من مهام البرمجة الأساسية بشكل أفضل من المبرمج العادي.
لكن الشيء الوحيد الذي لا يتغير أبدا هو هذه المجموعة من مبادئ تشغيل الكمبيوتر الأساسية المتجذرة في فيزياء أشباه الموصلات. بغض النظر عن كيفية تجريد البرمجيات، بغض النظر عن مدى تطور الخوارزميات، كل شيء يعود في النهاية إلى تقلبات الجهد على قطعة من السيليكون. كلما كان تحسين الأداء أكثر تقدما، كلما كان جدولة الحوسبة أكثر حداثة، كلما احتاج المهندسون إلى القدرة على الرؤية من خلال جميع طبقات التجريد البرمجية وإدراك حالة تشغيل الأجهزة الأساسية مباشرة.
لا تعتقد أن هذه المعرفة منخفضة المستوى بعيدة عنك. عندما تواجه قطعة كود تستهلك أداء بشكل كبير، ولأنك تفهم آلية خطوط التخزين المؤقت على المستوى الأدنى، تقوم بتعديل ترتيب المصفوفات في الذاكرة لتحسين معدلات إصابة ذاكرة التخزين المؤقت بشكل كبير – مما يجعل الكود يعمل أسرع بعشر مرات – في تلك اللحظة، ستشعر بإحساس هائل بالسيطرة الذي يأتي من إتقان المبادئ الأساسية.