كيف تعمل شرائح الحاسوب؟


الـMicroprocessor الحديث هو وحدة معقدة جدًا ، و لقد استغرق العمل عليها من طرف آلاف الأشخاص عقودًا لكي تصبح على ما هي عليه اليوم.

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

أي نظام حديث يعمل على أساس التجريد؛ بمعنى وحدات بسيطة تُبنى عليها أشياءًا أكثر تعقيدًا.

في رأيي الـprocessor الحديث يمكن تقسيمه إلى الطبقات الرئيسية الآتية:

1. الأجهزة (transistors).
2. الدارات الكهربائية.
3. البوابات المنطقية.
4. وحدات منطقية بسيطة.
5. المعالج processor.
6. البرمجيات.

لنستهل الحديث بالانطلاق من أرضية وسط، ليست مستعصية على الفهم و لا بعيدة عن معالج فعلي: البوابات المنطقية.

تأخذ بوابة منطقية عددا من المداخل، تكون إما 0 و إما 1، و تعطي نتيجة bit واحد عبارة عن 0 أو 1 أيضا، وفقا لبعض القواعد. مثلًا، بوابة AND سوف تنتج 1 فقط إذا كانت جميع مداخلها عبارة عن 1.

يمكنك الآن أن تتساءل “و لكن ماذا تعني ب 0 و 1 ؟ماذا يعني ذلك إذا تحدثنا عن الكهرباء؟”

الجواب معقد بشكل خيالي.

يمكن أن يعني ذلك:

-مستوى من التوتر (0 يعني 0 volt … يعني 1 volt )

-ذبذبة كهربائية (0 يعني لا توجد ذبذبة، 1 يعني ذبذبة 1 volt في كل نانوثانية، جزء من بليون ثانية)

-فوتون ( 0 يعني لا يوجد أي فوتون، 1 يعني 1000 فوتون)

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

الآن، هل هذه الأمور البسيطة تمكننا حقا من فعل الأشياء؟

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

” ولكن انتظر”، سوف تقول” ماذا يعني العدد من منظور 0 و 1؟ أنا أعرف فقط أعدادا مثل 57 و42 ، و هي عبارة عن أرقام من 0 إلى 9، ليس فقط 0 و 1″.

هذا صحيح، و لكن انظر، 57 هو فقط تعبير عن الرقم أسفله، و الذي هو في الحقيقة 5×10+7 . يمكنك أيضا تمثيل 57 كالآتي:

و هكذا ! لقد حصلت عليها؛ 57 هي نفسها 111001 في هذا النظام الجديد. يمكنك أن تقنع نفسك بأن أي رقم يكتب على هذا الشكل.

و الآن لننتقل إلى المجمع. قبل كل شيء، سوف نحتاج لبناء ” نصف-مجمع”، أو ذلك الذي يأخذ اثنين bits و يقوم بجمعهما، ليعطي في النهاية اثنين bits.

إذن، إذا كان كلا هذين ال bits عبارة عن 0، ستكون النتيجة 00، إذا كان واحدًا منهما فقط 1، سوف نحصل على 01 ، و إذا كان الاثنان 1 النتيجة ستصبح 10.

لنفكر بروية، و نأخذ ال bit الأول أولًا، بعد القليل من الوقت، نكتشف أن”أوه! هذا الـbit هو 1 فقط إذا كان المدخلان كلاهما 1. إذن هذا ما يمكننا الحصول عليه عن طريق بوابة AND. رائع!” الآن قمنا بنصف العمل. تبقى جزء واحد.

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

” لا تقلق” سأقول لك،” سوف نوظف مهندس دارات هائلًا يمكنه تصميم مثل هذه البوابة خلال نومه، الآن لنرسم صورة عن دارتنا الجديدة الرائعة؛ نصف-المجمع.

و لكن الآن أنت تقول، ” يمكننا أن نجمع فقط أعداد 1bit. شركتنا المنافسة يمكنها جمع أعداد فوق 1 بليون. كيف نقوم بذلك؟” الجواب هو -مفاجأة- التجريد.

هل ترى، تصميمنا الحالي يمكنه جمع رقمين ذوي 1bit فقط، و النتيجة هي مجموع و “باقي” ، و الذي يحتاج الآن أن يضاف إلى الـbit الأعلى الموالي. هذا يحتاج إلى إضافة 3bits، و التي لا يستطيع أن يقوم بها صغيرنا.

لذا بعد يوم كامل من التفكير المتعب في هذا، نجد أن هذه ستكون دارة جيدة لعمل ذلك و سنسميها “مجمعًا كاملًا”.

و الآن لدينا بين أيدينا قوة الجمع الموجودة في العالم.

هل ترى؟ الآن يمكننا أن نشكل سلسلة من 32 من هذا الصديق الصغير كالآتي:
و سيكون بين أيدينا عملاق يمكنه جمع أعداد تفوق 1 بليون في لمح البصر.

ها هي الأخبار الرائعة: يمكنك الآن أن تصنع بوابات أفضل، و ستصبح دارتك أفضل. هذه هي قوة التجريد.

بالطبع ،كما يبدو، طريقتنا في جمع الأشياء ليست بهذه الروعة. يمكنك أن تقوم بما هو أحسن، الأفضل في الحقيقة.

و لكن بسبب صديقنا التجريد، يمكننا القيام بذلك بعيدا عن البوابات. إذا كانت دارتك الجديدة أحسن بمرتين من القديمة، و لديك بوابات أسرع بمرتين، فلديك دارة أسرع بأربع مرات.

إنه أحد أكبر المساهمين في التحسن بآلاف المرات في عقود قليلة. بنينا بوابات أصغر، أسرع، و أقل استهلاكًا للطاقة.

و قد اكتشفنا طرقا أفضل لعمل نفس الحسابات، و بعد جمعها ببعضها عملت كأنه السحر!

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

و قد صنعنا أيضا دارة صغيرة يمكنها أن تخزن قيمة ( بمعنى أن نتيجتها ستعتمد على القيمة التي كتبت فيها من قبل). لنلقبها بـflip-flop.

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

في هذه الحالة، يجب ألا نعتبر ال bits كأرقام فقط. دعنا نحاول أن نمثل ” الأفعال” نفسها بـbits. لنقل أن 0 تعني “اجمع”و 1 تعني “اضرب”.

الآن، دعنا نبني دارة صغيرة ترى االـbit على أنه “أمر”، و تختار بين مدخلين، I0 و I1، و تنتج I0 إذا كان الأمر 0، و I1 إذا كان 1. إنه Multiplexer المضمم أو مُوزّع.

“رائع”، تقول” الآن نحتاج فقط لمضمم لنختار بين نتائج مجمع و مضاعف، لنحصل على الحل ! في الحقيقة يمكننا الحصول على العديد من المضممات للاختيار بين العديد من المخارج- لقد حصلنا لأنفسنا على آلة رائعة حقًا.

لكن انتظر-لدينا فكرة أخرى. هل تتذكر الـflip-flops الصغيرة الممتعة التي صنعناها سابقًا؟

حسنًا، ماذا لو وصلنا مضمم 1024-1 بـ1024 flip-flop؟ لدينا الآن ما يسمى بذاكرة 1Kilobit. يمكننا أن نعطيها عنوانًا، و ستعطينا بالمقابل bit الذي كان مُخزنًا في هذا المكان المُرقم. إضافةً إلى ذلك، هذه الـbits يمكنها أن تكون إما “أرقامًا” (معلومات) أو “أوامر” (تعليمات).

ها هو الشيء الرائع حقًا: لدينا كل شيء نحتاجه لبناء المعالج Processor:

• قبل كل شيء، لدينا نظام ذاكرة MEM يشتمل على كل “الأوامر” (التعليمات) و “الأرقام” (المعلومات).
• ثانيا، لدينا رقم يدعى “Program counter” نستعمله لاختيار التعليمة التي سيتم تطبيقها من نظام الذاكرة MEM. عادة تزداد ب 1 في كل خطوة.
• ثالثا، لدينا وحدة حسابية مشكلة من مضممات.
• رابعا، نزود الوحدة بالمدخلين انطلاقا من الذاكرة MEM.
• أخيرا، هناك نوعان من التعليمات: تعليمات البيانات، و تعليمات التحكم.

كل تعليمة بيانات تحتوي على أربعة أشياء:عنوانان لتحديد أي رقمين نختار من MEM، أمر بالعملية التي يجب القيام بها، و موقع آخر لوضع النتيجة المحصول عليها.

تعليمات التحكم، تقوم ببساطة بوضع عنوان آخر في البرنامجProgram counter .

هذا الشيء الذي صنعته للتو يدعى آلة Von- Neumann ( أجل، أناس مثله اكتشفوا كل هذه الأشياء سنة 1945).

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

حسنا، عندما قلت سابقا أن هذه الطريقة التي يصنع بها جميع االـProcessors، قصدت بذلك “نظريًا”، و بـ” نظريُا” أقصد “دعنا نعتبر بقرة جسما كرويُا” نظريًا.

كما ترى الـCPU الخاص بمنافسك يمكنه بسهولة شديدة أن يتفوق على Von-Neumann CPU الأساسي الخاص بك.

لديك فقط 1000Kilobits من الذاكرة، منافسك يمكنه أن يتعامل مع مليارات (GB) أو تريليونات (TB) من الـbits من الذاكرة.

و لكن الآن تقول، لا توجد طريقة تمكن هؤلاء من صنع مليار للمضمم الواحد. و الحصول على معلوماته خلال نانوثانية واحدة. صحيح. صلصتهم السرية هي شيء يدعى المكان Locality.

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

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

فكرة قوية أخرى يمكنك القيام بها تسمى out-of –order processing ( المعالجة دون احترام الترتيب). المفهوم وراء هذه الفكرة يمكن تمثيله بالبرنامج الآتي و الذي يحسب X=(A+B)*(C+D).

1. يجمع A و B و يخزنها في U.
2. يجمع C و D و يخزنها في V.
3. يضرب U في V و يخزنها في X.

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

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

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

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

طبعا هناك فقط الأساسيات. ما تراه في الأعلى هو ما يكافئ الجواب على سؤال ” كيف تعمل سيارة F1؟ ” بأن تقول “لديها عجلات، و مقود يُوجه العجلات، و مُحرك لتشغيل العجلات” .

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

الصنع:

أحد الأعمال الفذة الرائعة للتكنولوحيا كان هو القدرة على اختراع و وصل الملايير من الـtransistors الصغيرة، كل واحد أصغر من 100 نانومتر ( نعم إنه نانومتر، بمعنى واحد من مليار متر) ، نموذج دقيق محدد من طرف مصممي الدارات، و مهندسي الـCPU- كل ذلك لا يجعل منه زهيد الثمن.

من الواضح أن اختراع و وصل عدد هائل من ال transistors واحدًا تلو الآخر عمليًا مستحيل باستعمال اليد، أو حتى باستعمال أي شكل من التقنيات، في الواقع.

للتغلب على ذلك، نصنع الشرائح بالاعتماد على طريقة تسمى photolithography الليثوغرافيا الضوئية، و هذا هو السبب وراء الثمن الزهيد للـProcessors مقارنة مع تعقيد صنعها.

الفكرة مشابهة لكيفية ” تحميض الأفلام” للحصول على الصور التناظرية ( إذا ما تذكر ذلك أحد). أولًا سأقوم بوصف كيفية صنع نموذج من أكسيد السيليكون على السيليكون ( يستخدم ذلك في بوابات الtransistors ).

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

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

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

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

أنواع الذاكرة:

كما قلت سابقا، يمكنك صنع ذاكرة عن طريق توصيل flip-flops بالمضممات. لكن تلك ليست طريقة فعالة لعمل الأشياء.

Flip-flop واحدة تستهلك حوالي 15 إلى 20 transistors. لكن، عمليا هناك نوعان لبنية الذاكرة:

Static RAM ذاكرة ثابتة ( أو باختصارSRAM) تستعمل transistors6 لكل bit، و ذاكرة ديناميكية DynamicRAM ( أو باختصارDRAM) ، و التي تستعمل فقط transistor واحدا و مكثفا واحدا لكل bit.

الذاكرة الثابتة هي أساسا دارتا NOT متصلتان في حلقة كالآتي:

من الواضح أن هناك حالتين ممكنتين ل A و B، إما A=1 ، B=0 أو A=0 ،B=1 . الفكرة هي تطبيق بعض التوتر الخارجي لدفع الحلقة إلى حالة أو إلى أخرى، و التي ستكون إذن الbit “المخزن” ، ثم قراءة التوتر عند A أوB ل”قراءة” الbit.

و من ناحية أخرى،DRAM، الذاكرة الديناميكية هي أكثر تطبيقا و تبدو تقريبا كما يلي:

في هذا التصميم، الtransistor يعمل كمبدل لتخزين الشحنة في المكثف، و في هذه الحالة تقرأ ك0 ، و إلا ك 1.

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

المخابئ The caches في شريحة هي عموما SRAM ذاكرة ثابتة بما أنها سريعة.

و مع ذلك، فإن الذاكرات الأساسية لحاسوب هي عموما DRAM، بما أنها أصغر حجمًا، و بذلك يمكن لشريحة واحدة استيعاب كمية أكبر من الذاكرة.


إبتسام الراجي

المصدر