مادة CS 206، تنظيم حاسبات (Computer Organization) بجامعة الاميرة نورة بنت عبدالرحمن هي المادة اللي تاخذك من عالم البرمجة والكود الى الجانب الثاني من القصة: ايش اللي يصير جوا الجهاز لما تشغلين برنامجك؟ في مواد البرمجة تعلمتي تكتبين اوامر وتشوفين نتائج على الشاشة. بس هل فكرتي كيف المعالج يفهم هذي الاوامر؟ كيف الذاكرة تخزن بياناتك؟ وكيف المكونات المختلفة تتواصل مع بعض؟
هذي المادة تجاوب على كل هذي الاسئلة. وتحديدا عند جامعة الاميرة نورة، CS 206 تعتبر مادة اساسية في خطة علوم الحاسب لانها تربط بين مفاهيم البرمجة اللي تعلمتيها ومفاهيم العتاد (Hardware) اللي يشغل كل شيء. لو فهمتي هذي المادة صح، راح تتغير نظرتك للبرمجة بالكامل وتصيرين مبرمجة تفهم الصورة الكاملة.
📋 ملخص سريع
- رمز المادة: CS 206 / عال 206، تنظيم حاسبات (Computer Organization)
- الساعات المعتمدة: 3 ساعات
- المتطلب السابق: CS 110 او CS 111 (اساسيات البرمجة) + مقدمة في التصميم المنطقي (Digital Logic)
- المواضيع الاساسية: تمثيل البيانات (ثنائي وست عشري)، مكونات المعالج (ALU, CU, Registers)، تصميم المعالج، الذاكرة (Cache, RAM, ROM)، مجموعة التعليمات (ISA)، الانابيب (Pipelining)، نظام الادخال والاخراج (I/O)، معمارية الناقل (Bus Architecture)
- يقود الى: مواد انظمة التشغيل، الشبكات، المعمارية المتقدمة، الانظمة المدمجة
ليش تنظيم الحاسبات مهم لكل طالبة حاسب
كثير من الطالبات يسالون: “انا تخصصي برمجة، ليش ادرس عتاد؟” والجواب بسيط: لان البرامج ما تشتغل في الهواء. كل سطر كود تكتبينه يتحول لتعليمات يفهمها المعالج، ويتخزن في الذاكرة، وينتقل عبر الناقلات. لو ما فهمتي هذي الطبقة، راح تكونين مبرمجة تكتب كود بدون ما تفهم ليش بعض الحلول ابطأ من غيرها.
خلينا ناخذ مثال عملي: لو كتبتي برنامج يتعامل مع مصفوفة كبيرة، والبرنامج يمر على العناصر بترتيب عشوائي بدل ما يمر بالتسلسل. من ناحية البرمجة النتيجة واحدة، لكن من ناحية الاداء الفرق كبير جدا. ليش؟ لان الذاكرة المخبئية (Cache) تتعامل بشكل افضل مع البيانات المتسلسلة. هذا الشيء ما راح تفهمينه الا لما تدرسين تنظيم الحاسبات.
فهم هذي المادة يفيدك في عدة مجالات:
- تحسين اداء البرامج: تعرفين ليش بعض الحلول اسرع من غيرها على مستوى العتاد
- انظمة التشغيل: مادة انظمة التشغيل تفترض انك فاهمة كيف المعالج يشتغل وكيف الذاكرة منظمة
- الانظمة المدمجة: لو تبين تشتغلين على IoT او الروبوتات، لازم تفهمين العتاد
- المقابلات الوظيفية: بعض الشركات تسال عن مفاهيم مثل Cache وPipelining في المقابلات التقنية
- مشروع التخرج: لو مشروعك يتعامل مع اداء عالي او انظمة مدمجة، هذي المادة اساسية
ℹ️ الفرق بين تنظيم الحاسبات ومعمارية الحاسبات
كثير من الطالبات يخلطون بين المصطلحين. تنظيم الحاسبات (Computer Organization) يتكلم عن كيف المكونات متصلة ببعض وكيف تشتغل عمليا. معمارية الحاسبات (Computer Architecture) يتكلم عن التصميم العام والقرارات عالية المستوى مثل حجم الكلمة وعدد المسجلات. CS 206 تركز على التنظيم مع لمحات عن المعمارية.
1. تمثيل البيانات: كيف الحاسب يفهم الارقام والحروف
اول شيء لازم تفهمينه: الحاسب ما يفهم العربي ولا الانجليزي ولا حتى الارقام العشرية اللي نستخدمها يوميا. الحاسب يفهم شيء واحد فقط: صفر وواحد. كل شيء تشوفينه على الشاشة، من الصور والنصوص الى الفيديوهات والالعاب، مبني على تسلسلات من اصفار وواحدات.
النظام الثنائي (Binary)
النظام الثنائي يستخدم رقمين فقط: 0 و 1. كل خانة اسمها بت (bit)، وكل 8 بتات تساوي بايت (byte).
تحويل من عشري الى ثنائي (مثال: الرقم 13):
13 ÷ 2 = 6 باقي 1
6 ÷ 2 = 3 باقي 0
3 ÷ 2 = 1 باقي 1
1 ÷ 2 = 0 باقي 1
النتيجة (من تحت لفوق): 1101
تحويل من ثنائي الى عشري (مثال: 1101):
1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 8 + 4 + 0 + 1
= 13
النظام الست عشري (Hexadecimal)
النظام الست عشري يستخدم 16 رمز: 0-9 ثم A-F (حيث A=10، B=11، C=12، D=13، E=14، F=15). نستخدمه لان كتابة الارقام بالثنائي طويلة جدا. كل رقم ست عشري يمثل 4 بتات بالظبط.
مثال: الرقم الثنائي 11011110 يتحول الى:
1101 1110
D E
النتيجة: DE (بالست عشري)
التحويل بين الانظمة
| العشري | الثنائي | الست عشري |
|---|---|---|
| 0 | 0000 | 0 |
| 5 | 0101 | 5 |
| 10 | 1010 | A |
| 15 | 1111 | F |
| 255 | 11111111 | FF |
تمثيل الاعداد السالبة
الحاسب يستخدم طريقة اسمها المتمم الثنائي (Two’s Complement) لتمثيل الاعداد السالبة. الخطوات بسيطة:
- اكتبي الرقم بالثنائي
- اقلبي كل البتات (0 يصير 1 والعكس)
- اضيفي 1
مثال: تمثيل -5 في 8 بتات:
5 بالثنائي: 00000101
بعد القلب: 11111010
بعد اضافة 1: 11111011
اذا -5 = 11111011
💡 حيلة سريعة للاختبار
لو طلبوا منك تحولين رقم عشري كبير الى ست عشري، حوليه اول للثنائي وبعدين قسمي البتات مجموعات من 4 من اليمين. هذي الطريقة اسرع واقل اخطاء من التقسيم المباشر على 16.
2. مكونات المعالج: قلب الحاسب
المعالج (CPU) هو الدماغ اللي يشغل كل شيء في جهازك. بس هذا الدماغ ما يشتغل لحاله، يتكون من اجزاء متخصصة تتعاون مع بعض. تخيلي المعالج مثل مطبخ مطعم: فيه الشيف اللي يقرر ايش ينطبخ (وحدة التحكم)، فيه ادوات الطبخ اللي تنفذ الشغل (وحدة الحساب والمنطق)، وفيه رفوف قريبة تخزن المكونات اللي يحتاجها الشيف بسرعة (المسجلات).
وحدة الحساب والمنطق (ALU - Arithmetic Logic Unit)
هذي الوحدة اللي تسوي كل العمليات الحسابية والمنطقية. الجمع، الطرح، الضرب، المقارنة، AND، OR، NOT… كلها تصير هنا. ALU تاخذ مدخلين وتطلع نتيجة واحدة.
مثال: لما تكتبين في برنامجك x = a + b، هذي العملية تنفذها ALU. المدخل الاول هو قيمة a، المدخل الثاني هو قيمة b، والنتيجة تتخزن في x.
وحدة التحكم (CU - Control Unit)
وحدة التحكم هي “المدير” اللي ينظم الشغل. ما تسوي اي حسابات بنفسها، لكنها:
- تجيب التعليمة من الذاكرة (Fetch)
- تفك رموز التعليمة وتفهم ايش المطلوب (Decode)
- ترسل اشارات للاجزاء المختصة عشان تنفذ (Execute)
هذي الدورة (Fetch-Decode-Execute) هي اساس شغل المعالج. كل تعليمة في برنامجك تمر بهذي الخطوات الثلاث.
المسجلات (Registers)
المسجلات هي اصغر وحدة تخزين في الحاسب واسرعها. عددها محدود (مثلا 32 مسجل في معمارية MIPS)، لكنها اسرع بكثير من الذاكرة العادية. السبب انها موجودة داخل المعالج نفسه.
اهم المسجلات:
| المسجل | الاسم الكامل | الوظيفة |
|---|---|---|
| PC | Program Counter | يحفظ عنوان التعليمة التالية |
| IR | Instruction Register | يحفظ التعليمة الحالية اللي تنفذ |
| MAR | Memory Address Register | يحفظ عنوان الذاكرة المطلوب الوصول له |
| MDR | Memory Data Register | يحفظ البيانات اللي جت من الذاكرة او رايحة لها |
| ACC | Accumulator | يخزن النتائج المؤقتة للعمليات الحسابية |
⚠️ نقطة اختبارية مهمة
لا تخلطين بين MAR و MDR. MAR يحمل العنوان (وين ابي اروح في الذاكرة)، بينما MDR يحمل البيانات (ايش لقيت هناك او ايش ابي احط هناك). هذا السؤال يتكرر كثير في اختبارات CS 206.
دورة التعليمة (Instruction Cycle)
كل تعليمة في البرنامج تمر بهذي المراحل:
- الجلب (Fetch): وحدة التحكم تقرا العنوان من PC وتجيب التعليمة من الذاكرة
- فك الترميز (Decode): وحدة التحكم تحلل التعليمة وتحدد العملية المطلوبة
- التنفيذ (Execute): ALU تنفذ العملية الحسابية او المنطقية
- التخزين (Store): النتيجة تتخزن في مسجل او في الذاكرة
3. الذاكرة: من الاسرع الى الاكبر
الذاكرة في الحاسب مو نوع واحد. فيه تدرج هرمي (Memory Hierarchy) كل ما طلعتي فيه صارت الذاكرة اسرع واصغر واغلى، وكل ما نزلتي صارت اكبر وارخص لكن ابطأ. فهم هذا التدرج من اهم المفاهيم في CS 206.
التدرج الهرمي للذاكرة
المسجلات (Registers) -- الاسرع والاصغر
↓
الذاكرة المخبئية (Cache) -- سريعة جدا
↓
الذاكرة الرئيسية (RAM) -- متوسطة
↓
القرص الصلب (HDD/SSD) -- الاكبر والابطأ
مقارنة بين انواع الذاكرة
| النوع | السرعة | الحجم | التكلفة | متطايرة؟ |
|---|---|---|---|---|
| المسجلات | اسرع شيء (< 1 ns) | بايتات قليلة | الاغلى | نعم |
| Cache L1 | ~1 ns | 32-64 KB | غالية جدا | نعم |
| Cache L2 | ~4 ns | 256 KB - 1 MB | غالية | نعم |
| Cache L3 | ~10 ns | 4-32 MB | متوسطة | نعم |
| RAM | ~100 ns | 4-64 GB | معقولة | نعم |
| SSD | ~100 μs | 256 GB - 4 TB | رخيصة | لا |
| HDD | ~10 ms | 1-16 TB | ارخص | لا |
الذاكرة المخبئية (Cache)
الذاكرة المخبئية هي بطلة هذا الموضوع. الفكرة بسيطة: المعالج سريع جدا والذاكرة الرئيسية بطيئة نسبيا. بدل ما المعالج ينتظر الذاكرة في كل مرة، نحط طبقة صغيرة وسريعة بينهم تخزن البيانات اللي يستخدمها كثير.
Cache Hit: المعالج يطلب بيانات ويلقاها في الكاش. ممتاز، يكمل شغله بسرعة.
Cache Miss: المعالج يطلب بيانات وما يلقاها في الكاش. يضطر يروح للذاكرة الرئيسية (ابطأ بكثير).
Hit Rate: نسبة المرات اللي المعالج لقى البيانات في الكاش. كل ما كانت النسبة اعلى، الاداء افضل.
ℹ️ مبدأ المحلية (Locality Principle)
الكاش يشتغل لان البرامج عادة تتبع نمطين: المحلية الزمنية (لو استخدمتي بيانات الحين، احتمال كبير تستخدمينها مرة ثانية قريب) و المحلية المكانية (لو استخدمتي بيانات في عنوان معين، احتمال كبير تستخدمين البيانات اللي جنبها). لهذا السبب الحلقات (loops) تستفيد كثير من الكاش.
RAM vs ROM
| الخاصية | RAM | ROM |
|---|---|---|
| الاسم | Random Access Memory | Read-Only Memory |
| القراءة والكتابة | تقدرين تقرين وتكتبين | قراءة فقط (غالبا) |
| متطايرة | نعم (تنمسح لما يطفى الجهاز) | لا (تبقى حتى بدون كهرباء) |
| الاستخدام | تخزين البرامج اللي تشتغل حاليا | تخزين BIOS وبرامج الاقلاع |
| السرعة | سريعة | ابطأ من RAM |
💡 طريقة سهلة للتذكر
تخيلي RAM مثل السبورة في الصف: تكتبين عليها وتمسحين بسرعة، لكن لما تطلعين من الصف كل شيء ينمسح. ROM مثل الكتاب المطبوع: ما تقدرين تعدلين عليه بسهولة، لكنه يبقى حتى لو سكرتي الكتاب وحطيته في الدرج.
4. مجموعة التعليمات (ISA - Instruction Set Architecture)
مجموعة التعليمات هي “اللغة” اللي يفهمها المعالج. كل معالج له مجموعة تعليمات خاصة فيه. لما تكتبين كود بـ Java او Python، المترجم (Compiler) يحول كودك في النهاية الى تعليمات من هذي المجموعة.
انواع التعليمات
التعليمات تنقسم الى اربع فئات رئيسية:
- تعليمات حسابية ومنطقية: مثل ADD (جمع)، SUB (طرح)، AND، OR
- تعليمات نقل البيانات: مثل LOAD (حمل من الذاكرة) و STORE (خزن في الذاكرة)
- تعليمات التفرع: مثل BEQ (اقفز لو متساويين) و BNE (اقفز لو مختلفين)
- تعليمات خاصة: مثل NOP (لا تسوي شيء) و HALT (وقف التنفيذ)
مثال على تعليمة بلغة التجميع
# مثال بمعمارية MIPS
ADD $t0, $t1, $t2 # t0 = t1 + t2
LW $t0, 0($s0) # حمل كلمة من الذاكرة الى t0
SW $t0, 4($s0) # خزن قيمة t0 في الذاكرة
BEQ $t0, $t1, label # لو t0 = t1 اقفزي الى label
تنسيقات التعليمات
في معمارية MIPS (اللي غالبا تدرسونها في PNU)، كل تعليمة حجمها 32 بت وتنقسم الى ثلاث تنسيقات:
R-Type (تعليمات المسجلات):
| opcode (6) | rs (5) | rt (5) | rd (5) | shamt (5) | funct (6) |
I-Type (تعليمات فورية):
| opcode (6) | rs (5) | rt (5) | immediate (16) |
J-Type (تعليمات القفز):
| opcode (6) | address (26) |
CISC vs RISC
| الخاصية | CISC | RISC |
|---|---|---|
| الاسم | Complex Instruction Set | Reduced Instruction Set |
| عدد التعليمات | كثير | قليل |
| طول التعليمة | متغير | ثابت |
| مثال | Intel x86 | MIPS, ARM |
| الفلسفة | تعليمة واحدة معقدة تسوي شغل كثير | تعليمات بسيطة وسريعة |
| الاستخدام | الكمبيوترات المكتبية | الجوالات والاجهزة المدمجة |
⚠️ ISA من اصعب مواضيع المادة
كثير من الطالبات يضيعون في موضوع تنسيقات التعليمات والتحويل بين لغة التجميع والكود الالي. المفتاح هو انك تحفظين جدول opcodes وتتمرنين على تحويل تعليمات يدويا. حلي كل تمرين في الكتاب ولا تكتفين بقراءة الحل.
5. الانابيب (Pipelining): كيف المعالج يصير اسرع
الانابيب من اذكى الافكار في تصميم المعالجات. الفكرة انك بدل ما تنتظرين تعليمة تخلص بالكامل قبل ما تبدين التالية، تبدين التعليمة التالية وانتي لسا ما خلصتي الاولى.
تشبيه الغسيل
تخيلي عندك 4 حمولات غسيل وعندك غسالة ومجفف وطاولة طي وخزانة:
بدون Pipelining (تسلسلي):
حمولة 1: غسل → تجفيف → طي → تخزين
حمولة 2: غسل → تجفيف → طي → تخزين
حمولة 3: ...
كل حمولة تنتظر اللي قبلها تخلص بالكامل. بطيء جدا.
مع Pipelining (تداخل):
حمولة 1: غسل → تجفيف → طي → تخزين
حمولة 2: غسل → تجفيف → طي → تخزين
حمولة 3: غسل → تجفيف → طي → تخزين
حمولة 4: غسل → تجفيف → طي → تخزين
كل مرحلة تشتغل على حمولة مختلفة في نفس الوقت. اسرع بكثير.
مراحل الانابيب في المعالج
المعالج يقسم تنفيذ التعليمة الى 5 مراحل:
- IF (Instruction Fetch): جلب التعليمة من الذاكرة
- ID (Instruction Decode): فك ترميز التعليمة وقراءة المسجلات
- EX (Execute): تنفيذ العملية في ALU
- MEM (Memory Access): الوصول للذاكرة (لو مطلوب)
- WB (Write Back): كتابة النتيجة في المسجل
مشاكل الانابيب (Hazards)
الانابيب مو دايما تشتغل بسلاسة. فيه ثلاث مشاكل رئيسية:
1. تعارض البيانات (Data Hazard):
تعليمة تحتاج نتيجة تعليمة قبلها ما خلصت بعد.
ADD $t0, $t1, $t2 # t0 = t1 + t2
SUB $t3, $t0, $t4 # t3 = t0 - t4 ← تحتاج t0 بس ما جاهز بعد
الحل: التمرير (Forwarding) - ترسلين النتيجة مباشرة من مرحلة EX بدون ما تنتظرين WB.
2. تعارض التحكم (Control Hazard):
تعليمة تفرع (Branch) ما تعرفين وين راح تروح الا بعد ما تنفذ.
BEQ $t0, $t1, label # هل t0 = t1؟ ما نعرف الا لما ننفذ
ADD $t2, $t3, $t4 # هل ننفذ هذي ولا نقفز؟
الحل: التنبؤ بالتفرع (Branch Prediction) - المعالج يتوقع ايش راح يصير ويبدا ينفذ. لو توقعه غلط، يلغي اللي سواه ويبدا من جديد.
3. تعارض هيكلي (Structural Hazard):
مرحلتين مختلفتين تحتاج نفس المورد في نفس الوقت (مثلا الذاكرة).
الحل: فصل ذاكرة التعليمات عن ذاكرة البيانات (Harvard Architecture).
ℹ️ حقيقة مهمة عن Pipelining
الانابيب ما تخلي التعليمة الواحدة تنفذ اسرع. نفس التعليمة تاخذ نفس الوقت. الميزة هي ان الانتاجية (Throughput) تزيد لان المعالج يشتغل على عدة تعليمات بالتوازي. هذا الفرق بين وقت التعليمة (Latency) و معدل الانتاج (Throughput).
6. نظام الادخال والاخراج ومعمارية الناقل
اخر قطعة في الصورة: كيف المعالج يتواصل مع العالم الخارجي؟ كيف تطبعين ملف؟ كيف تحفظين على الفلاش؟ كيف الكيبورد يوصل ضغطاتك للبرنامج؟ هذا كله يمر عبر نظام الادخال والاخراج (I/O System) و معمارية الناقل (Bus Architecture).
الناقل (Bus)
الناقل هو مجموعة الاسلاك اللي تربط المكونات ببعض. فيه ثلاث انواع:
- ناقل البيانات (Data Bus): ينقل البيانات الفعلية بين المكونات
- ناقل العناوين (Address Bus): ينقل عناوين الذاكرة
- ناقل التحكم (Control Bus): ينقل اشارات التحكم (اقرا، اكتب، قاطع)
عرض ناقل العناوين يحدد حجم الذاكرة اللي يقدر المعالج يوصل لها. مثلا: ناقل عناوين 32 بت يقدر يوصل لـ 2³² = 4 GB من الذاكرة.
طرق الادخال والاخراج
فيه ثلاث طرق رئيسية يتواصل فيها المعالج مع اجهزة الادخال والاخراج:
1. الاستقصاء (Polling):
المعالج يسال الجهاز كل شوية: “عندك شيء؟ عندك شيء؟” مثل ما تسالين صديقتك كل 5 دقائق “وصلتي؟”. بسيطة لكن تضيع وقت المعالج.
2. المقاطعات (Interrupts):
الجهاز ينادي المعالج لما يكون عنده شيء. مثل ما صديقتك ترسل لك رسالة لما توصل بدل ما تسالينها كل شوية. اكفأ بكثير.
3. الوصول المباشر للذاكرة (DMA - Direct Memory Access):
الجهاز ينقل البيانات مباشرة للذاكرة بدون ما يمر عبر المعالج. مثل ما شركة التوصيل تحط الطرد عند الباب بدون ما تنتظرك تفتحين. مثالي للبيانات الكبيرة مثل نقل ملف من القرص الصلب.
| الطريقة | السرعة | استخدام المعالج | الاستخدام |
|---|---|---|---|
| Polling | بطيئة | عالي جدا | اجهزة بسيطة |
| Interrupts | متوسطة | منخفض | معظم الاجهزة |
| DMA | سريعة | شبه معدوم | نقل بيانات كبيرة |
اخطاء شائعة في مادة تنظيم الحاسبات
من تجربة الطالبات اللي درسن CS 206، هذي اكثر الاخطاء اللي تتكرر:
1. حفظ بدون فهم:
كثير من الطالبات يحاولون يحفظون جداول التحويل والتعليمات بدون ما يفهمون الخطوات. المشكلة ان الاختبار يجيب ارقام وتعليمات جديدة ما شفتيها قبل. لازم تفهمين الطريقة مو تحفظين النتيجة.
2. اهمال التمارين العملية:
المادة فيها جزء كبير من التحويلات والحسابات. القراءة لحالها ما تكفي. لازم تمسكين ورقة وقلم وتحلين بيدك. كل تمرين تحلينه يثبت الفكرة اكثر.
3. الخلط بين Cache Hit و Cache Miss:
Cache Hit يعني البيانات موجودة في الكاش (حظ حلو). Cache Miss يعني ما هي موجودة ولازم تروحين للذاكرة الرئيسية (حظ سيء). كثير يقلبون المفهوم.
4. نسيان ان Pipelining يزيد الانتاجية مو السرعة:
التعليمة الواحدة ما تخلص اسرع بسبب الانابيب. اللي يزيد هو عدد التعليمات اللي تخلص في الثانية.
5. الخلط بين MAR و MDR:
MAR يحمل العنوان، MDR يحمل البيانات. تذكري: A = Address (عنوان)، D = Data (بيانات).
6. اهمال Two’s Complement:
كثير من الطالبات يظنون ان تمثيل الاعداد السالبة موضوع بسيط. بس في الاختبار يجي بشكل متكرر وبطرق مختلفة. تاكدي انك فاهمة الخطوات وتقدرين تطبقينها بسرعة.
⚠️ خطا قاتل في اختبارات CS 206
لما تحسبين نطاق الذاكرة باستخدام عرض ناقل العناوين، تذكري ان النتيجة بالبايتات مو بالبتات. ناقل عناوين 16 بت يعني 2¹⁶ = 65,536 عنوان = 64 KB (مو 64 Kb). الفرق بين B الكبيرة و b الصغيرة يفرق 8 اضعاف.
خطة مذاكرة CS 206 من الصفر للامتياز
-
الاسبوع 1-2: تمثيل البيانات. ابدي بالتحويل بين الانظمة (ثنائي، عشري، ست عشري). تمرني على Two’s Complement. حلي 20 تمرين تحويل على الاقل حتى تصير العملية تلقائية عندك.
-
الاسبوع 3-4: مكونات المعالج ودورة التعليمة. ارسمي مخطط المعالج بيدك وسمي كل جزء. افهمي دورة Fetch-Decode-Execute بالتفصيل. اكتبي ملخص من صفحة واحدة عن كل مكون ووظيفته.
-
الاسبوع 5-6: مجموعة التعليمات (ISA). ذاكري تنسيقات التعليمات R-Type و I-Type و J-Type. حلي تمارين تحويل من Assembly الى Machine Code والعكس. هذا الموضوع يحتاج تمرين كثير.
-
الاسبوع 7-8: الذاكرة والتدرج الهرمي. ارسمي هرم الذاكرة واحفظي الترتيب والخصائص. افهمي كيف الكاش يشتغل ومتى يصير Hit ومتى يصير Miss. حلي تمارين حساب Hit Rate.
-
الاسبوع 9-10: الانابيب (Pipelining). ارسمي مخططات الانابيب يدويا لمجموعة تعليمات. تعرفي على انواع Hazards الثلاث وحلولها. هذا الموضوع يحتاج تمثيل بصري عشان تفهمينه.
-
الاسبوع 11-12: I/O والمراجعة النهائية. ادرسي طرق الادخال والاخراج الثلاث. راجعي كل المواضيع بالترتيب واعملي اختبارات تجريبية. ركزي على المواضيع اللي حسيتي انها صعبة.
خلاصة: CS 206 تغير نظرتك للبرمجة
مادة CS 206 تنظيم الحاسبات بجامعة الاميرة نورة مو مادة حفظ. هي مادة فهم تغير طريقة تفكيرك كمبرمجة. بعد ما تخلصين هذي المادة، ما راح تكتبين كود بنفس الطريقة. راح تعرفين ان كل متغير تعرفينه يتخزن في مكان معين بالذاكرة، وان كل عملية حسابية تمر عبر ALU، وان ترتيب الوصول للبيانات يأثر على الاداء بسبب الكاش.
المفتاح الاساسي للنجاح في هذي المادة هو التمرين العملي. لا تكتفين بقراءة الشرائح. مسكي ورقة وقلم، حولي ارقام، ارسمي مخططات، تتبعي تنفيذ التعليمات خطوة بخطوة. كل تمرين تحلينه بيدك يساوي عشر صفحات قراءة.
ولا تنسين ان هذي المادة ترتبط بمواد كثيرة بعدها. انظمة التشغيل تبني على مفاهيم الذاكرة والمعالج اللي تتعلمينها هنا. فاستثمري وقتك الحين وراح يرجع لك الاستثمار اضعاف في المواد الجاية.
لو تحتاجين نصائح اكثر عن طرق المذاكرة، اطلعي على دليل الاستعداد للاختبارات اللي يغطي استراتيجيات عملية تقدرين تطبقينها على اي مادة تقنية.