مقدمة:
تحدثنا في آخر موضوع (اقرأ-فكك-نفذ:وحدة المعالجة المركزية CPU: الجزء الأول (مقدمة)) عن المعالج بشكل مختصر، لكن قبل أن نكمل من الضروري أن نتعرف على عنصر مهم جدا في عمل الحاسوب قبل أن نكمل حديثنا على المعالج و لعدة اسباب سنناقشها في موضوع اليوم، لكن لنفهم أول ما هي الذاكرة؟
الذاكرة: هي أحد عناصر الحاسوب التي تقوم بتخزين البيانات ولها أنواع مختلفة:
-
دائمة (non-volatile) و تقسم إلى نوعين:
-
ذواكر أولية (عادة مسؤولة عن تخزين برامج الاقلاع):
- (EEPROM EPROM PROM, ROM, Flash).
- هذه الذواكر تكون مخصصة للقراءة فقط عادة يتم تخزين برمجيات المصنع (firmware) المسؤولة عن طبيعة عمل اي نظام حاسوبي بدأً من أصغر متحكم رقمي حتى معظم الخوادم.
-
الذواكر الثانوية (عادة ما يتم تخزين بيانات المستخدم عليها و يكون حجمها أكبر من الذواكر الأولية و تشمل:
- القرص الصلب و أقراص الحالة الصلبة HDD & SSD
- المرن Floppy
- المضغوط CD
- ذواكر الأشرطة Tape memory
-
و تستخدم هذه الذواكر لتخزين بيانات المستخدم و عبر الزمن تطورت لتصبح أكبر فأكبر و يتم انتاج وحدات تخزين ذات مساحات و اداء عالي مثل ال NVMe و PCI4
-
-
غير دائمة (Volatile) كذواكر التخزين العشوائية بأنواعها:
- SRAM, DRAM
- VRAM
- swap
- ZRAM
هذه الذواكر تقوم بتخزين البرامج التي يتم\سيتم تنفيذها ضمن ذاكرة مؤقتة و تخزين البيانات التي تم\يتم معالجتها في حال تم استخدامها مرة أخرى، هذه النقطة مهمة جداً عندما نكمل الحديث عن المعالج لاحقاً
كيف يتم تخزين البيانات و استرجاعها
هذا الأمر يعود إلى واجهة التخاطب Communication Interface التي تتعامل بها وحدة التخزين في الحاسوب سواء:
- PATA
- SCSI
- SAS
- SATA
- NVMe
- Parallel
و غيرها ما يستخدم خارج بنية الداخلية لبعض الحواسيب
- USB
- SDIO
- SPI
- MMC
لن نتطرق إلى كثير من هذه البروتوكولات لأن الأمر سيطول بذلك انما سنقتصر على المبادئ فقط و المبادئ بسيطة
1- جميع الذواكر بشتى أنواعها و سبل التخاطب تربط كل قيمة (data\value) بعنوان (Address)و كل قيمة حجمها 1 Byte و لها عنوان فريد بها، بمعنى أنه لو أردت قراءة قيمة عنوان ما، فما عليك سوى إعادة قيمة من مؤشر بهذا العنوان. بشيء مشابه لهذا
*((int *)0xff73000)
\\ ملاحظة هذا الكود لن يعمل على لينكس لأن البنية الذاكرية لا يتم كشفها لمساحة المستخدم (userland) بشكل مباشر وإلا ستفتح بوابة كبيرة و خطرة لوصول الناس الخطأ إلى بياناتك الحساسة بشكل يسير
هذه ابسط طريقة لقراءة قيمة في عنوان و السبب هو أنك تقوم بمعالجته و استدعائه عبر مكتبة c اما لو تكلمنا عن الحاسوب كبنية أو لغة منخفضة المستوى سيكون الموضع أصعب قليلاً..
المعالج
تحدثنا عنه في الموضوع السابقة و تحدثنا عن كيفية معالجته العمليات الحسابية و المنطقية و تكلمنا عن وجود ذواكر سريعة للغاية تعمل بسرعة المعالج تدعى المسجلات (Registers) لاحظ وجود هذه المسجلات يساعد عمل المعالج بشكل أسرع و أكثر كفائة، لكن لدينا مشكلة..
المعالج لا يوجد لديه شيء آخر!
لا يوجد ذاكرة تخزين للبرمجيات و لا ذاكرة كبيرة بشكل كافي لوضع البرامج عليها لتنفيذه بل لدينا ذواكر صغيرة لكن سريعة جدا و مخصصة لتخزين أرتال عمليات ستنفذ و عمليات حسابية سيتم معالجتها لاحقاً
لكن هذا لن يعوض فقد الحاسوب لهذه الذواكر الكبيرة المهمة خصوصاً لو ذهبت الى المتجر و اشتريت معالج جديد و حاولت تغذيته بخطوط التغذية خاصته (5فولط و 1.1 فولط) ستتفاجئ بهذه الأمور:
-
المعالج مبدأياً لن يعمل (إذ عليك عمل reset عند أول نبضة يعمل بها المعالج لإعادة المعالج إلى الحالة الصفرية و هذا الأمر تقوم به عادة اللوحة الأم أو عبر دارة تولد نبضة واحدية طول فترة التشغيل ك monostable 555
-
يقوم المعالج بمزامنة النبضات الداخلية خاصته مع نبضات النظام (عادة تكون ضمن لوحة الأم دارة تقطيع لتشكيل هذه النبضات و ارسالها إلى عناصر تحتاجها) أو إذا كان الحاسوب من الأجيال القديمة (او متحكم مصغر) فسيكون هناك كـ(كريستالة الكوارتز) تقوم بتوليد هذه النبضة؛ الهدف من هذا هو تنظيم عمل الحاسوب إذ أن كل عنصر في الحاسوب تتم من خلاله الحوسبة يحتاج إلى مولد نبضات يعمل على تنظيم تزامنه مع باقي العناصر في الحاسوب (المزيد عن هذا في موضوع آخر)
-
يقوم المعالج بعدها بقراءة العناوين بحثا عن عمليات او عنوان يبدأ منه بتنفيذ الأوامر، تسمى هذه العملية بتسلسل التهيئة (Initialization Sequence) حيث يخطوا المعالج خطوته الأولى بعملية البدء (القراءة-التفسير-التنفيذ) حيث يعمل على قراءة القيمة الموجودة بعنوان يدعى (reset vector)، يقوم المعالج بقراءة التعليمة الموجودة في العنوان (والتي غالباً ما تكون قفزة إلى عنوان آخر بهدف البدء بتنفيذ برمجية البدء كالـ BIOS)
-
هنا تأتي أهمية ذاكرة الROM إذا تساعد على حفظ برمجية الاقلاع بوحدة تخزين يقوم المعالج بقرائتها عند بدء تشغيل الحاسوب
ماذا بعد؟
بعد الانتهاء من اقلاع الBIOS يقوم الحاسوب بالانتقال إلى وحدة تخزين أخرى يشير إليها الـBIOS عند انتهائه للعمل، ويقوم بالبحث عن محمل الإقلاع، هذه الرحلة ستكون بموضوع آخر سنتطرق غليه لاحقاً، لكن سيدور في بالكم شيء أهم من هذا:
كيف يفهم الحاسوب من هو من!
مثلاً كيف يفرق الحاسوب بين الذاكرة الثابتة و الرام، أو كيف يتم الوصول إلى الوحدة الفلانية بين كل الوحدات؟!
هذا ما سنتعرف عليه بالمواضيع القادمة، أرجو أن يكون هذا الموضوع قد أفادكم و تعرفتم على الحاسوب برؤية أعمق، بالمواضيع السابقة سنتعرف على الـBIOS و كذلك سنتعرف على بنى الحاسوب و طريقة تعامل المعالج مع الذواكر و العناصر المحيطية الأخرى.
و السلام عليكم و رحمة الله.

