Skip to content

مبادئ تنظيم الحاسوب

مقدمة

من الترانزستور إلى وحدة المعالجة المركزية، كيف يشكل الحاسوب نظامًا متكاملاً؟ في الفصل السابق، بدأنا من الترانزستورات وقمنا ببناء الجامع والسجلات ووحدة الحساب، وأخيرًا قمنا بتجميع نواة وحدة المعالجة المركزية. لكن وحدة المعالجة المركزية وحدها لا تكفي - فهي تحتاج إلى العمل بالتنسيق مع الذاكرة وأجهزة الإدخال والإخراج، وتحتاج إلى ناقل لتوصيل المكونات المختلفة، وتحتاج إلى نظام تعليمات لقيادتها. في هذا الفصل، سننتقل من المنظور الداخلي لوحدة المعالجة المركزية إلى منظور نظام الحاسوب بأكمله، ونتعمق في فهم معمارية فون نيومان ونظام التعليمات وهرمية التخزين والناقل والإدخال والإخراج.

ماذا ستتعلم في هذا المقال؟

بعد إكمال هذا الفصل، ستحصل على:

  • منظور النظام: فهم كيفية عمل وحدة المعالجة المركزية والذاكرة وأجهزة الإدخال والإخراج معًا بشكل منسق بدلاً من كونك هاوي أجهزة منعزلاً
  • المصطلحات التقنية للأجهزة: إتقان مفاهيم أساسية مثل دورة التعليمات وخط التجميع وCPI ومعدل إصابة الذاكرة المخبأة
  • التفكير في الأداء: فهم الاختناقات ووسائل التحسين في تنظيم الحاسوب
  • أساس للتعلم المستقبلي: بناء أساس متين لأنظمة التشغيل ومعمارية الحاسوب والتطوير المضمن
الفصلالمحتوىالمفاهيم الأساسية
الفصل 1معمارية فون نيومانالبرنامج المخزن، المكونات الخمسة الرئيسية، مسار البيانات
الفصل 2نظام التعليماتتنسيق التعليمات، أنماط العنونة، CISC مقابل RISC
الفصل 3وحدة التحكم في CPUوحدة التحكم، العمليات الدقيقة، دورة التعليمات
الفصل 4نظام التخزينالذاكرة المخبأة، الذاكرة الرئيسية، الذاكرة الافتراضية، آلية التقسيم إلى صفحات
الفصل 5الناقل والإدخال والإخراجتحكيم الناقل، DMA، آلية المقاطعة

0. الصورة الشاملة: نظام أجهزة الحاسوب

في الفصل السابق "من الترانزستور إلى CPU"، فهمنا بالفعل كيفية عمل الجزء الداخلي من وحدة المعالجة المركزية - من جلب التعليمات وفك التشفير والتنفيذ إلى الكتابة الخلفية. لكن وحدة المعالجة المركزية نفسها هي مجرد وحدة تنفيذ، ولجعل الحاسوب "قابلاً للاستخدام" حقًا، نحتاج إلى مجموعة من المكونات الطرفية للتعاون معها.

Detailed CPU Instruction Cycle Demo
CPU
Control Unit CU
PC256Program Counter
IRInstruction Register
MARMemory Address Register
MDRMemory Data Register
Arithmetic Logic Unit ALU
ACC0Accumulator
General Register File
R00
R10
R20
R30
Address Bus
Data Bus
Control Bus
Main Memory
0x100LOAD R0, [0x200]
 0x101LOAD R1, #7
 0x102ADD R0, R1
 0x103STORE [0x201], R0
Data Area
 0x51242
 0x5130
FetchFetch
DecodeDecode
ExecuteExecute
Write BackWrite Back
Step 0 / 32
Click "Clock Pulse" to step through execution, or "Auto Run" to play continuously.

تفكيك طبقة بطبقة: نظام أجهزة الحاسوب

  • الطبقة الأولى: نواة CPU مسؤولة عن تنفيذ التعليمات، وتتضمن وحدة التحكم (التي تصدر إشارات التحكم) ووحدة الحساب (التي تنفذ العمليات الحسابية والمنطقية)

  • الطبقة الثانية: مجموعة السجلات وحدات تخزين عالية السرعة داخل CPU، تشمل السجلات العامة والسجلات المخصصة (PC، IR، MAR، MDR وغيرها)

  • الطبقة الثالثة: الذاكرة الرئيسية الذاكرة المستخدمة لتخزين البرامج والبيانات، تصل إليها CPU عبر ناقل العناوين وناقل البيانات

  • الطبقة الرابعة: أجهزة الإدخال والإخراج أجهزة الإدخال والإخراج متصلة بناقل النظام عبر وحدات تحكم I/O

  • الطبقة الخامسة: ناقل النظام قناة البيانات التي تربط CPU والذاكرة وI/O، وتشمل ناقل العناوين وناقل البيانات وناقل التحكم


1. معمارية فون نيومان: "دستور" الحاسوب الحديث

1.1 مبدأ البرنامج المخزن

في عام 1945، اقترح عالم الرياضيات جون فون نيومان فكرة البرنامج المخزن (Stored-program) الثورية. وضعت هذه الفكرة أساس الحاسوب الحديث.

المفهوم الأساسي

البرنامج المخزن: البرنامج نفسه يُعامل كنوع خاص من البيانات، ويُخزن في الذاكرة مثل البيانات العادية. يمكن لوحدة CPU قراءة وتنفيذ تعليمات البرنامج المخزنة في الذاكرة تمامًا كما تقرأ وتكتب البيانات.

هذا يعني:

  • الحواسيب المبكرة: كانت البرامج تُنفذ عبر توصيلات ثابتة للدوائر، وتغيير البرنامج يتطلب إعادة لحام الدوائر
  • معمارية فون نيومان: البرنامج مخزن في الذاكرة، وتغيير البرنامج يتطلب فقط تعديل محتوى الذاكرة

1.2 المكونات الخمسة الرئيسية

تقسم معمارية فون نيومان الحاسوب إلى خمسة مكونات أساسية:

CPU Register FileHigh-speed storage inside the CPU
Special Registers
PC
0x00401000
Program counter
IR
0x8B450008
Instruction register
MAR
0x00401000
Memory address register
MDR
0x00000000
Memory data register
ACC
0x0000001A
Accumulator
General Purpose Registers
RAX
0x00000000
Return value
RBX
0x00000000
Base register
RCX
0x00000000
Counter register
RDX
0x00000000
Data register
RSI
0x00000000
Source index
RDI
0x00000000
Destination index
RBP
0x00000000
Base pointer
RSP
0x7FFDE000
Stack pointer
Program Status Word (PSW / FLAGS)
CF0Carry flag
PF0Parity flag
AF0Auxiliary carry
ZF0Zero flag
SF0Sign flag
OF0Overflow flag
Registers vs Memory
FeatureRegisterMemory (RAM)
LocationInside the CPUOutside the CPU
Access speedFastest (< 1ns)Slower (50-100ns)
CapacityTiny (bytes)Large (GB)
RoleHold instructions, operands, and resultsStore programs and data
المكونبالإنجليزيةالوظيفةالمكونات الرئيسية
وحدة الحسابALU (Arithmetic Logic Unit)تنفيذ العمليات الحسابية والمنطقيةالجامع، المزلق، المقارن
وحدة التحكمCU (Control Unit)توجيه وتنسيق عمل جميع المكوناتسجل التعليمات، مفكك التشفير، مولد التوقيت
الذاكرةMemoryتخزين البرامج والبياناتسجل عناوين الذاكرة (MAR)، سجل بيانات الذاكرة (MDR)
أجهزة الإدخالInputإدخال المعلوماتلوحة المفاتيح، الفأرة، الماسح الضوئي
أجهزة الإخراجOutputإخراج المعلوماتالشاشة، الطابعة

1.3 مسار البيانات

مسار البيانات (Data Path) هو المسار الذي تتدفق فيه البيانات بين وحدات الوظائف المختلفة. داخل CPU، يربط مسار البيانات:

  • مجموعة السجلات
  • وحدة الحساب والمنطق (ALU)
  • سجل بيانات الذاكرة (MDR)

عرض مسار البيانات (عدد البتات التي يمكن نقلها في المرة الواحدة) يؤثر مباشرة على أداء الحاسوب.

1.4 عنق زجاجة فون نيومان

لمعمارية فون نيومان عنق زجاجة أداء مشهور:

سرعة نقل البيانات بين CPU والذاكرة أقل بكثير من سرعة معالجة CPU.

هذا يؤدي إلى بقاء CPU غالبًا في حالة خمول "في انتظار البيانات". العديد من تقنيات التحسين في الحواسيب الحديثة تتمحور حول هذه المشكلة:

تقنية التحسينالمبدأ
الذاكرة المخبأة (Cache)وضع تخزين صغير عالي السرعة بالقرب من CPU
خط تجميع التعليماتجعل تعليمات متعددة في مراحل مختلفة في نفس الوقت
فائقة التدرج (Superscalar)إصدار تعليمات متعددة في نفس دورة الساعة
تعدد النوىنوى CPU متعددة تتقاسم مهام الحساب

2. نظام التعليمات: واجهة CPU مع البرمجيات

في القسم السابق، تعلمنا الفكرة الأساسية لمعمارية فون نيومان: البرنامج والبيانات كلاهما مخزن في الذاكرة. لكن هذا يثير سؤالاً رئيسيًا - كيف يبدو "البرنامج" المخزن في الذاكرة؟ كيف تقرأه CPU؟

الإجابة هي نظام التعليمات (Instruction Set Architecture, ISA). إذا شبهنا CPU بخدمة، فإن نظام التعليمات هو وثيقة API الخاصة بها - فهو يعرف جميع الأوامر التي يمكن لـ CPU فهمها، وتنسيق كل أمر، ونطاق البيانات التي يمكن للأمر العمل عليها. كل سطر من الكود الذي تكتبه سيُترجم في النهاية إلى سلسلة من استدعاءات "API" هذه.

2.1 من الكود إلى التعليمات: رحلة ترجمة سطر كود واحد

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

🔗 From Code to Instructions: One Line Through the Translation Pipeline

Click each stage to see how source code becomes CPU-executable instructions

1Source code
int a = 10 + 5;
This is high-level code written in an editor. It is easy for humans to read, but the CPU does not understand int or the + operator directly.
2Compiler emits assembly
MOV  R1, #10    ; put 10 into register R1
MOV  R2, #5     ; put 5 into register R2
ADD  R3, R1, R2 ; R3 = R1 + R2
STORE R3, [a]   ; store the result at variable a
3Assembler emits machine code
0001 0001 0000 1010  → MOV R1, #10
0001 0010 0000 0101  → MOV R2, #5
0010 0011 0001 0010  → ADD R3, R1, R2
0100 0011 1000 0000  → STORE R3, [a]
4CPU executes instructions
Clock 1: fetch → decode → execute MOV R1, #10
Clock 2: fetch → decode → execute MOV R2, #5
Clock 3: fetch → decode → execute ADD R3, R1, R2
Clock 4: fetch → decode → execute STORE R3, [a]
💡 Key idea
An instruction set is the CPU API: it defines every command the CPU understands. A compiler translates your high-level language into calls to that API. Different CPUs, such as x86 and ARM, have different instruction sets, just as different services expose different APIs.

سلسلة الترجمة هذه هي المفتاح لفهم نظام التعليمات:

المستوىالمحتوىمن يستطيع فهمه
لغة عالية المستوىint a = 10 + 5;البشر
لغة التجميعMOV R1, #10 / ADD R3, R1, R2البشر (بحاجة إلى تدريب)
كود الآلة0001 0001 0000 1010CPU

لماذا نفهم هذه السلسلة؟

  • عندما ترى خطأ ترجمة، تعرف أن الخطأ حدث في خطوة "اللغة عالية المستوى → التجميع"
  • عندما ترى انهيارًا في وقت التشغيل، تعرف أن المشكلة في مرحلة تنفيذ CPU للتعليمات
  • عند فهم تحسين الأداء، تعرف ما هي التحسينات التي قام بها المصرّف أثناء عملية "الترجمة"
  • عند اختيار معمارية CPU (x86 مقابل ARM)، تعرف أن الاختلاف يكمن في اختلاف "API مجموعة التعليمات"

2.2 كيف تبدو التعليمات؟

بعد معرفة أن الكود يُترجم إلى تعليمات، السؤال التالي هو: ما هو الهيكل الداخلي للتعليمة الواحدة؟

كل تعليمة آلة هي في الأساس سلسلة من الأرقام الثنائية، لكن لها تنسيق داخلي صارم. الجزءان الأساسيان:

  • كود العملية (Opcode): يخبر CPU "ماذا تفعل" - هل هي عملية جمع؟ قفز؟ أم قراءة من الذاكرة؟
  • المُعامل (Operand): يخبر CPU "على من تعمل" - أي سجل؟ أي عنوان في الذاكرة؟ أي ثابت؟

تمامًا كما أن للجملة بنية "فعل + مفعول به"، للتعليمة أيضًا بنية "عملية + كائن":

التعليمة:  ADD  R3, R1, R2
           ───  ──────────
           كود العملية  المُعاملات
           (عملية جمع)  (R3 = R1 + R2)

حسب عدد المُعاملات، تنقسم تنسيقات التعليمات من البسيط إلى المعقد إلى أربعة أنواع:

Machine Instruction FormatOpcode + operands = machine instruction
Opcode8 bits
Destination8 bits
Source 18 bits
Source 28 bits
Example instruction
01101100 00000001 00000010 00000011
Result goes to a new destination without changing sources
Three-address format
Three addresses identify the destination and two source operands separately. The result goes into the destination without modifying the sources.
Common examples
ADD R1, R2, R3R1 = R2 + R3
SUB R1, R2, R3R1 = R2 - R3
MUL R1, R2, R3R1 = R2 × R3
Common opcodes
00000000NOPNo operation
00000001MOVMove data
00000010ADDAddition
00000011SUBSubtraction
00000100MULMultiplication
00000101DIVDivision
00000110ANDLogical AND
00000111ORLogical OR
00001000NOTLogical NOT
00001001XORExclusive OR
00001010SHLShift left
00001011SHRShift right
00001100JMPUnconditional jump
00001101JEJump if equal
00001110JNEJump if not equal
00001111CALLCall subroutine
00010000RETReturn
00010001PUSHPush stack
00010010POPPop stack
00010011LOADLoad from memory
00010100STOREStore to memory
التنسيقالهيكلمثالحالة الاستخدام
صفر عنوانكود العملية فقطRET (عودة)حاسوب المكدس، المُعاملات ضمنية في قمة المكدس
عنوان واحدكود العملية + عنوان واحدINC R1 (زيادة R1 بمقدار 1)عمليات ذات مُعامل واحد
عنوانانكود العملية + عنوانانMOV R1, R2الأكثر استخدامًا، نقل البيانات والعمليات
ثلاثة عناوينكود العملية + ثلاثة عناوينADD R3, R1, R2عدم تدمير المُعامل المصدر

لماذا يوجد العديد من التنسيقات؟

هذه مقايضة بين المساحة والمرونة. تعليمات صفر العنوان هي الأقصر (توفر الذاكرة)، لكنها تحتاج إلى عمليات مكدس إضافية؛ تعليمات ثلاثة عناوين هي الأكثر مرونة (لا تدمر البيانات المصدر)، لكنها تشغل بتات أكثر. تختار معماريات CPU المختلفة مجموعات مختلفة من تنسيقات التعليمات.

2.3 كيف تجد CPU البيانات؟ — أنماط العنونة

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

لنستخدم تشبيه "البحث عن شخص" في الحياة اليومية:

نمط العنونةالتشبيهمثال التعليمةالشرح
العنونة الفوريةالشخص يقف أمامك مباشرةMOV R1, #100البيانات مكتوبة مباشرة في التعليمة، الأسرع
العنونة بالسجلاتالاتصال الداخلي بزميلMOV R1, R2البيانات في السجلات داخل CPU، سريعة جدًا
العنونة المباشرةتعرف رقم الغرفة، تذهب مباشرةMOV R1, [0x1000]عنوان الذاكرة مكتوب في التعليمة
العنونة غير المباشرةتسأل الاستقبال "في أي غرفة تشانغ سان"MOV R1, [R2]السجل يحتوي على العنوان، تحتاج إلى بحث إضافي
العنونة بالمؤشر"المبنى 3 + الطابق 5" لحساب الغرفةMOV R1, [R2+10]العنوان الأساسي + الإزاحة، يستخدم للوصول إلى المصفوفات
Addressing ModesHow an instruction finds operand locations
Immediate addressingImmediate Addressing
Definition
The operand is embedded directly in the instruction and is immediately available.
Instruction format
MOV R1, #100
Example
MOV R1, #100 ; R1 = 100
Immediate value 100 is stored directly in the instruction, so no register or memory lookup is needed.
Execution process
1CPU reads immediate value 100 directly from the instruction
2Write the immediate value into target register R1
3Execution completes without extra memory access
Characteristics
SpeedFast
FlexibilityLow
Addressing mode comparison
Addressing modeFormatSpeedUse case
Immediate addressingMOV R1, #100FastestConstant assignment and initialization
Register addressingMOV R1, R2FastestRegister-to-register data transfer
Direct addressingMOV R1, [100]Relatively fastAccessing global variables
Indirect addressingMOV R1, [R2]Relatively fastPointers and array traversal
Indexed addressingMOV R1, [R2 + R3]Relatively fastArray access and loops
Based addressingMOV R1, [R2 + 100]Relatively fastStruct fields and function parameters
Relative addressingJMP LABELFastestLoops and conditional branches

لماذا نحتاج إلى العديد من أنماط العنونة؟

السيناريوهات المختلفة تحتاج إلى استراتيجيات "بحث عن البيانات" مختلفة:

  • تعيين الثوابت (x = 100) ← العنونة الفورية، البيانات في التعليمة نفسها
  • عمليات المتغيرات (a + b) ← العنونة بالسجلات، البيانات محملة مسبقًا في السجلات
  • الوصول إلى المصفوفات (arr[i]) ← العنونة بالمؤشر، العنوان الأساسي + إزاحة الفهرس
  • عمليات المؤشرات (*ptr) ← العنونة غير المباشرة، السجل يحتوي على العنوان

أنت لا تفكر في أنماط العنونة عندما تكتب arr[i]، لكن المصرّف يختار تلقائيًا النمط الأنسب.

2.4 قائمة قدرات CPU — تصنيف التعليمات

الآن نعرف تنسيق التعليمات وأنماط العنونة، السؤال الأخير: ما هي الأشياء التي يمكن لـ CPU فعلها فعليًا؟

يمكن تصنيف جميع التعليمات إلى ست فئات رئيسية، وهي تغطي جميع العمليات التي يمكن للحاسوب القيام بها:

النوعماذا يفعلالتعليمات الممثلةالكود الذي تكتبه المقابل
نقل البياناتنقل البياناتMOV, LOAD, STORElet x = y، تمرير معاملات الدوال
العمليات الحسابيةالجمع والطرح والضرب والقسمةADD, SUB, MUL, DIVa + b، count++
العمليات المنطقيةعمليات البتاتAND, OR, NOT, XORflags & 0xFF، التحقق من الصلاحيات
عمليات الإزاحةالإزاحة لليسار واليمينSHL, SHRx << 2 (مكافئ للضرب في 4)
نقل التحكمالقفز والاستدعاءJMP, CALL, RETif، for، استدعاء الدوال
الإدخال والإخراجالتواصل مع الأجهزة الطرفيةIN, OUTقراءة لوحة المفاتيح، الكتابة على الشاشة

رؤية أساسية

كل الكود الذي تكتبه - مهما كانت منطق الأعمال معقدًا أو رسوميات UI مبهرة - سيتم تفكيكه في النهاية إلى مجموعات من هذه العمليات الأساسية الست. "ذكاء" CPU لا يكمن في قدرتها على فعل أشياء معقدة، بل في قدرتها على تنفيذ هذه العمليات البسيطة بمعدل مليارات المرات في الثانية.

2.5 فلسفتان في التصميم: CISC مقابل RISC

هناك خلاف أساسي في تصميم نظام التعليمات: هل ينبغي جعل كل تعليمة قوية قدر الإمكان، أم جعل كل تعليمة بسيطة قدر الإمكان؟

أنتج هذا الخلاف معسكرين رئيسيين، يؤثران مباشرة على كل جهاز تستخدمه اليوم:

⚔️ Two Design Philosophies: CISC vs RISC

Click a comparison dimension to see the core differences between instruction set styles

Thousands of complex instructions
Instruction count
Tens to hundreds of streamlined instructions
One instruction can do many things
Single instruction
One instruction does one thing
Variable length (1-15 bytes)
Instruction length
Fixed length, often 4 bytes
Complex instructions take multiple cycles
Execution speed
Most instructions complete in one cycle
Higher
Power use
Lower
Harder to optimize because lengths vary
Pipeline
Easier to optimize because instructions are regular
Lighter because hardware does more
Compiler burden
Heavier because software optimizes more
🌍 Real-world choices
💻 Your computerx86 (CISC)Compatible with decades of software
📱 Your phoneARM (RISC)Low power consumption and longer battery life
🍎 Apple SiliconARM (RISC)High performance per watt reshaped laptops
🔬 RISC-V boardRISC-V (RISC)Open and royalty-free for IoT and education

لنستخدم تشبيهًا للفهم:

  • CISC مثل السكين السويسري: سكين واحد يدمج مقصًا وفتاحة زجاجات ومفك براغي... وظائف متعددة لكن كل منها ليس بالضرورة الأفضل
  • RISC مثل مجموعة أدوات احترافية: كل أداة تفعل شيئًا واحدًا فقط، لكنها تفعله بسرعة وكفاءة

لماذا يستخدم هاتفك ARM وحاسوبك x86؟

  • x86 (CISC) سيطر على سوق الحواسيب الشخصية والخوادم لمدة 40 عامًا، وراكم نظامًا بيئيًا ضخمًا من البرمجيات. تغيير المعمارية يعني إعادة ترجمة جميع البرمجيات
  • ARM (RISC) سيطر على الأجهزة المحمولة بفضل استهلاكه المنخفض للطاقة. بطارية الهاتف صغيرة، وكل ميلي واط مهم
  • Apple Silicon أثبت أن RISC يمكنه تحقيق أداء عالٍ - شرائح سلسلة M تفوقت على منافسي x86 في الأداء واستهلاك الطاقة معًا
  • RISC-V هي معمارية RISC مفتوحة المصدر، تنمو بسرعة في مجالات IoT والتعليم وشرائح الذكاء الاصطناعي

ملخص: نظام التعليمات هو الجسر الذي يربط البرمجيات بالأجهزة. الكود الذي تكتبه يُترجم عبر المصرّف إلى تعليمات، والتعليمات تخبر CPU من خلال كود العملية والمُعاملات ماذا تفعل وعلى من تفعل، وأنماط العنونة تحدد من أين تأتي البيانات. تصاميم مجموعات التعليمات المختلفة (CISC/RISC) تحدد خصائص أداء CPU وسيناريوهات الاستخدام المناسبة.

الآن نعرف "البنية الثابتة" للتعليمات - كيف تبدو وما هي أنواعها. السؤال التالي هو: كيف ينفذ الجزء الداخلي من CPU هذه التعليمات خطوة بخطوة؟ هذا هو عمل وحدة التحكم.


3. وحدة التحكم: "مركز القيادة" لـ CPU

3.1 مكونات وحدة التحكم

وحدة التحكم هي "عقل" CPU، وهي مسؤولة عن تنسيق عمل جميع المكونات وفقًا لمتطلبات التعليمات:

How the Controller WorksHow control signals coordinate CPU components
Control Unit CU
Instruction Register IR
Instruction Decoder
Timing Generator
Output control signals:
PC→MAR
MEM→MDR
MDR→IR
IR→ID
ALU→ACC
ACC→MDR
PC
Program Counter
MAR
Address Register
Memory
Main Memory
MDR
Data Register
IR
Instruction Register
ID
Decoder
ALU
Arithmetic Logic Unit
ACC
Accumulator
Current microinstruction
Core controller concepts
Control signals:Electrical signals emitted by the controller to control each component on the data path.
Timing:CPU operations advance by clock ticks; each tick performs specific micro-operations.
Hardwired vs microprogrammed:Hardwired controllers are fast but complex; microprogrammed controllers are flexible but slightly slower.
المكونالوظيفة
عداد البرنامج (PC)تخزين عنوان التعليمة التالية
سجل التعليمات (IR)تخزين التعليمة الجاري تنفيذها حاليًا
مفكك تشفير التعليماتتحليل كود العملية والمُعاملات للتعليمة
مولد التوقيتإنتاج إشارات النبضات، والتحكم في توقيت المكونات
مولد تسلسل العمليات الدقيقةإنتاج سلسلة إشارات التحكم اللازمة لتنفيذ التعليمة
Program Status Word (PSW)The CPU status indicators
CF
0
Carry flag
PF
0
Parity flag
AF
0
Auxiliary carry
ZF
0
Zero flag
SF
0
Sign flag
TF
0
Trap flag
IF
1
Interrupt flag
DF
0
Direction flag
OF
0
Overflow flag
How operation results affect flags
Result:
0
CF:0PF:0AF:0ZF:0SF:0TF:0IF:1DF:0OF:0
Typical flag uses
🔀
Conditional jumps
JE, JNE, JG, JL and similar instructions decide jumps based on ZF, SF, and OF.
Arithmetic
Multi-word arithmetic uses CF for carry and OF for signed overflow.
🔄
Loop control
Loop instructions often use ZF to detect the loop ending condition.

3.2 دورة التعليمات

تحتاج CPU إلى المرور بدورة تعليمات كاملة لتنفيذ تعليمة واحدة، وتشمل عادةً:

  1. دورة الجلب (Fetch): قراءة التعليمة من الذاكرة إلى IR
  2. دورة فك التشفير (Decode): تحليل معنى التعليمة
  3. دورة التنفيذ (Execute): تنفيذ العملية
  4. دورة الوصول إلى الذاكرة (Memory Access): إذا تطلب الأمر الوصول إلى الذاكرة
  5. دورة الكتابة الخلفية (Write Back): كتابة النتيجة مرة أخرى إلى السجلات أو الذاكرة

3.3 العمليات الدقيقة

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

النبضةالعملية الدقيقةإشارة التحكم
T1PC → MARPCout, MARin
T2MEM → MDRMEMout, MDRin
T3MDR → IRMDRout, IRin
T4PC + 1 → PCPC+1, PCin

3.4 وحدة التحكم بالتوصيلات الصلبة مقابل وحدة التحكم بالبرنامج الدقيق

الخاصيةوحدة التحكم بالتوصيلات الصلبةوحدة التحكم بالبرنامج الدقيق
طريقة التنفيذدوائر منطقية توافقيةتسلسل تعليمات دقيقة (برنامج ثابت)
السرعةسريعةأبطأ قليلاً
صعوبة التصميممعقدةأبسط نسبيًا
المرونةضعيفة (التعديل يتطلب إعادة تصميم الدوائر)جيدة (تعديل البرنامج الدقيق يكفي)
التطبيق النموذجيمعالجات RISCمعالجات CISC المبكرة

4. نظام التخزين: لماذا نحتاج إلى الذاكرة المخبأة؟

4.1 هيكل هرمية التخزين

تشكل أجهزة التخزين في الحاسوب هيكلًا هرميًا:

Storage HierarchyFrom fastest to slowest, smallest to largest
Registers
Fastest
Smallest (KB)
Cache
Very fast
Small (MB)
Memory
Fast
Medium (GB)
Disk
Slow
Large (TB)
Network/Cloud
Slowest
Unlimited
Detailed comparison
Storage levelAccess timeTypical capacityCost
Registers< 1 nsA few KBHighest
L1 cache~1 ns64 KBVery high
L2 cache~3 ns256 KBHigh
L3 cache~10 ns8 MBMedium
Memory~100 ns8-32 GBMedium-low
SSD~100 μs256 GB-2 TBLow
HDD~10 ms1-10 TBLowest
Locality principle
Programs tend to access recently accessed locations (temporal locality) and nearby locations (spatial locality)
By exploiting locality, caches can significantly improve performance.
المستوىنوع التخزينوقت الوصولالسعة النموذجيةالموقع
السجلاتSRAM<1nsبضع KBداخل CPU
ذاكرة مخبأة L1SRAM~1ns32-64KBبالقرب من نواة CPU
ذاكرة مخبأة L2SRAM~3-10ns256KB-1MBداخل شريحة CPU
ذاكرة مخبأة L3SRAM~10-20ns2-16MBداخل شريحة CPU / مشتركة
الذاكرة الرئيسيةDRAM~50-100ns8-64GBعلى اللوحة الأم
SSDFlash~10-100μs256GB-2TBعلى اللوحة الأم
HDDقرص مغناطيسي~5-10ms1-10TBداخل الصندوق

تشبيه فروق السرعة

إذا شبهنا وصول CPU إلى ذاكرة L1 المخبأة بـ أخذ ورقة من على المكتب:

  • الوصول إلى الذاكرة الرئيسية ← ركوب المصعد إلى المتجر في الطابق السفلي لشراء ورق
  • الوصول إلى SSD ← قيادة السيارة إلى مدينة أخرى لشراء ورق
  • الوصول إلى HDD ← ركوب الطائرة إلى بلد آخر لشراء ورق

يمكن أن يصل فرق السرعة إلى ملايين المرات!

4.2 مبدأ الذاكرة المخبأة

الذاكرة المخبأة (Cache) هي تخزين سريع يقع بين CPU والذاكرة الرئيسية، وتقوم فكرتها الأساسية على مبدأي المحلية:

مبدأ المحلية

  • المحلية الزمنية: إذا تم الوصول إلى بيانات ما للتو، فمن المحتمل جدًا أن يتم الوصول إليها مرة أخرى قريبًا
  • المحلية المكانية: إذا تم الوصول إلى بيانات ما، فمن المحتمل أن يتم الوصول إلى البيانات المجاورة لها أيضًا

طريقة عمل الذاكرة المخبأة

  1. الإصابة (Hit): البيانات التي تريدها CPU موجودة في الذاكرة المخبأة، تُقرأ مباشرة
  2. الخطأ (Miss): البيانات غير موجودة في الذاكرة المخبأة، يجب تحميلها من الذاكرة الرئيسية
معدل الإصابة = عدد مرات الإصابة / إجمالي عدد مرات الوصول
متوسط وقت الوصول = معدل الإصابة × وقت الذاكرة المخبأة + (1-معدل الإصابة) × وقت الذاكرة الرئيسية
Cache PrinciplesThe bridge between CPU and memory
CPU core
L1 cache
64 KB~1ns
L2 cache
256 KB~5ns
L3 cache
8 MB~15ns
Main memory
16 GB~100ns
Cache operation demo
Operation log
Why does cache work? Locality principle
⏱️
Temporal locality
Recently accessed data is likely to be accessed again.
Variables inside loops
📦
Spatial locality
After one item is accessed, nearby data is likely to be accessed.
Array traversal and sequential execution
Cache mapping methods
Each memory block maps to exactly one cache line.
SpeedFastest
Hit rateLower
Implementation complexityLowest
Hit-rate calculation
Average access time = H × Tc + (1-H) × Tm
2 ns
100 ns
90%
Average access time = 12 ns

4.3 طرق تخطيط الذاكرة المخبأة

الطريقةالمبدأالمزاياالعيوب
التخطيط المباشركل كتلة ذاكرة يمكن وضعها في موقع ثابت واحد فقطبسيط وسريعمعدل تصادم مرتفع
التخطيط الترابطي المجموعيكل كتلة ذاكرة يمكن وضعها في N موقع (N-way)توازن بين السرعة ومعدل الإصابةتنفيذ معقد
التخطيط الترابطي الكاملأي موقعأدنى معدل تصادمتنفيذ صعب (يحتاج مقارنة جميع العلامات)

4.4 الذاكرة الافتراضية

الذاكرة الافتراضية هي تجريد مهم يوفره نظام التشغيل:

  • كل عملية تعتقد أنها تمتلك مساحة عناوين افتراضية كاملة
  • نظام التشغيل مسؤول عن ترجمة العناوين الافتراضية إلى عناوين فعلية
  • الصفحات غير المستخدمة بشكل متكرر يمكن إخراجها إلى القرص (مساحة التبديل)

تشبيه الذاكرة الافتراضية

تخيل الذاكرة الافتراضية مثل إدارة غرف الفندق:

  • أنت (العملية) تعتقد أن المبنى كله لك
  • في الواقع، الفندق (نظام التشغيل) يخصص لك فقط الغرف التي تحتاجها حاليًا
  • الغرف غير المشغولة يتم "إخراجها" إلى المستودع (القرص)
  • الغرف المطلوبة يمكن "إدخالها" في أي وقت

5. الناقل والإدخال والإخراج: "الأوعية الدموية" للحاسوب

5.1 ناقل النظام

الناقل (Bus) هو قناة البيانات التي تربط مكونات الحاسوب المختلفة:

Computer Bus SystemAddress bus, data bus, and control bus
CPU
Control unit
ALU
Address bus32 bits
Data bus64 bits
Control busControl signal
Main memory
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
Operation flow
Bus concepts
Address bus
CPU sends memory addresses over a one-way path.
Data bus
Transfers actual data in both directions.
Control bus
Transfers read/write and other control signals.
نوع الناقلالوظيفةالاتجاهالعرض النموذجي
ناقل العناويننقل عناوين الذاكرةأحادي الاتجاه (CPU→الذاكرة)32 بت/64 بت
ناقل البياناتنقل البياناتثنائي الاتجاه32 بت/64 بت
ناقل التحكمنقل إشارات التحكمثنائي الاتجاهخطوط إشارة متعددة

5.2 تحكيم الناقل

عندما تطلب أجهزة متعددة استخدام الناقل في نفس الوقت، نحتاج إلى آلية تحكيم لتحديد من يستخدمه أولاً:

طريقة التحكيمالشرح
التحكيم المركزيمحكم مركزي يتخذ القرار بشكل موحد
التحكيم الموزعكل جهاز يتفاوض بشكل مستقل

5.3 طرق الوصول إلى أجهزة الإدخال والإخراج

الطريقةالمبدأالمزاياالعيوب
الاستعلام البرمجيCPU تستطلع حالة I/O بشكل دوريبسيطاستخدام منخفض لـ CPU
طريقة المقاطعةجهاز I/O يخطر CPU بنشاط بعد الاكتمالCPU يمكنه العمل بالتوازيمعالجة المقاطعة لها تكلفة إضافية
DMAجهاز I/O يصل مباشرة إلى الذاكرةCPU لا تشارك على الإطلاقيحتاج إلى وحدة تحكم DMA
I/O Method ComparisonProgrammed I/O · Interrupt-driven I/O · DMA
Programmed I/OProgrammed I/O
Workflow
1CPU polls the I/O device status
2Device busy? Keep waiting
3Device ready, send read/write command
4CPU reads or writes data byte by byte
5Check whether transfer is complete
6If incomplete, keep polling
CPU involvementHigh
SpeedSlow
ComplexityLow
Three I/O methods compared
FeatureProgrammed I/OInterrupt-driven I/ODMA
CPU involvementInvolved throughoutOnly handles interruptsAlmost uninvolved
Data transferCPU moves each byteCPU moves each wordDevice transfers directly to memory
ProsSimple and flexible controlHigh CPU efficiencyCPU is fully freed
ConsLow CPU utilizationInterrupt overheadComplex hardware
Best forSimple or low-speed devicesLow/medium-speed devicesHigh-speed bulk transfer

5.4 مبدأ DMA

DMA (Direct Memory Access، الوصول المباشر للذاكرة) يسمح لأجهزة الإدخال والإخراج بتبادل البيانات مباشرة مع الذاكرة:

How Networks ConnectThe complete path from sending to receiving
💻
Sender
192.168.1.100
📧
Mail app
📧
Application layer
Mail software creates the message content
🔐
Transport layer
TCP adds port numbers and sequence numbers
🌐
Network layer
IP adds source and destination addresses
🔌
Data link layer
Ethernet adds MAC addresses
Physical layer
Convert to electrical signals and send
🖥️
Receiver
192.168.1.200
📧
Mail app
Data encapsulation process
7Application layer
Message content: "Hello!"
6Presentation layer
Encoding: UTF-8
5Session layer
Session ID: sess_123
4Transport layer
TCP header: port 25
3Network layer
IP header: 192.168.1.100 → 192.168.1.200
2Data link layer
Ethernet frame: MAC address
1Physical layer
Bitstream: 01010101...
Network protocol stack (OSI model)
Sender
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
Receiver
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
  • بدون DMA: CPU تشارك بشكل كامل في نقل البيانات، ولا يمكنها فعل أي شيء آخر
  • مع DMA: CPU تخبر وحدة تحكم DMA "من أين إلى أين تنقل وكم تنقل"، ثم تنتقل لتنفيذ مهام أخرى، وعند اكتمال DMA يتم إخطار CPU

تشبيه DMA

هذا مثل طلب الطعام للتوصيل:

  • بدون DMA: تذهب شخصيًا إلى المتجر لشراء المكونات، والعودة إلى المنزل، وغسل المكونات، والطهي (مشاركة كاملة في العملية)
  • مع DMA: تتصل لتقديم الطلب، وعامل التوصيل يوصله مباشرة إلى المطبخ (شخص آخر يتولى الأمر، وأنت فقط "تستلم" في النهاية)

5.5 آلية المقاطعة

المقاطعة هي آلية مهمة جدًا في نظام الحاسوب:

  1. بعد إكمال جهاز I/O للعملية، يرسل طلب مقاطعة إلى CPU
  2. CPU تكمل التعليمة الحالية ثم تستجيب للمقاطعة
  3. CPU تحفظ الحالة الحالية، وتنتقل إلى برنامج معالجة المقاطعة
  4. بعد اكتمال المعالجة، تستعيد الحالة وتواصل التنفيذ

6. تحسين أداء CPU: تقنية خط التجميع

6.1 خط تجميع التعليمات

خط تجميع التعليمات هو تقنية توازٍ تجعل CPU تعمل بأقصى كفاءة:

CPU Instruction PipelineFive stages: Fetch → Decode → Execute → Memory → Write Back
Fetch(IF)
Decode(ID)
Execute(EX)
Memory(MEM)
Write Back(WB)
ADD R1,R2,R3
SUB R4,R1,R5
LOAD R6,[R4]
STORE R6,[R7]
AND R8,R1,R6
Total cycles0
Completed instructions0
CPI0
Pipeline principle

Sequential execution: each instruction finishes before the next starts, so N instructions require N × 5 cycles.

Pipeline execution: multiple instructions occupy different stages at once; ideally CPI ≈ 1.

مبدأ عمل خط التجميع

التنفيذ المتسلسل (5 تعليمات، 15 دورة):
التعليمة 1: IF→ID→EX→MEM→WB
التعليمة 2:            IF→ID→EX→MEM→WB
التعليمة 3:                         IF→ID→EX→MEM→WB
...

التنفيذ بخط التجميع (5 تعليمات، 9 دورات):
التعليمة 1: IF→ID→EX→MEM→WB
التعليمة 2:    IF→ID→EX→MEM→WB
التعليمة 3:       IF→ID→EX→MEM→WB
...

في الحالة المثالية، CPI (عدد الدورات لكل تعليمة) لـ N من التعليمات ≈ 1

6.2 مخاطر خط التجميع

على الرغم من أن خط التجميع يحسن الأداء، إلا أنه يجلب أيضًا مشاكل المخاطر (Hazard):

النوعالسببالحل
خطر بنيويتضارب موارد الأجهزةزيادة الأجهزة / تنفيذ متباعد
خطر البياناتالتعليمة التالية تحتاج نتيجة السابقةإعادة توجيه البيانات / فقاعات / جدولة
خطر التحكمتعليمات القفز تغير تدفق التنفيذفتحة التأخير / التنبؤ بالتفرع

7. ملخص: كيف "يعمل" الحاسوب؟

لنستخدم المصطلحات التقنية لربط العملية بأكملها:

بعد بدء البرنامج، يقوم نظام التشغيل بتحميل الملف القابل للتنفيذ من القرص إلى الذاكرة. وحدة الجلب (IF) في CPU تقرأ التعليمة من الذاكرة إلى سجل التعليمات (IR) عبر ناقل العناوين. وحدة التحكم تقوم بفك تشفير التعليمة (ID)، وتتعرف على نوع العملية ثم تنتج إشارات التحكم المناسبة. وحدة الحساب (EX) تنفذ العمليات الحسابية والمنطقية، وإذا تطلب الأمر الوصول إلى الذاكرة يتم ذلك عبر ناقل البيانات (MEM)، وأخيرًا تُكتب النتيجة مرة أخرى (WB) إلى السجلات أو الذاكرة. العملية بأكملها مدفوعة بالساعة، وسلسلة العمليات الدقيقة التي تصدرها وحدة التحكم تنسق عمل جميع المكونات بشكل منظم.


قراءة إضافية

الموضوعمحتوى التعلم المتعمق الموصى به
معمارية الحاسوب"Computer Organization and Design: Hardware/Software Interface" - Patterson & Hennessy
معمارية CPU الدقيقة"Computer Systems: A Programmer's Perspective" - Bryant & O'Hallaron
معمارية مجموعة التعليماتدليل معمارية ARMv8، دليل Intel x64
مبدأ الذاكرة المخبأةبروتوكول تناسق الذاكرة المخبأة (MESI)، استراتيجيات كتابة الذاكرة المخبأة
أنظمة التشغيلالفصل التالي "أنظمة التشغيل"

الخطوة التالية

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