Transcript for:
مكونات الكمبيوتر وآلية عمله

بسم الله الرحمن الرحيم والصلاة والسلام على أشرف المنسلين سيدنا محمد سنكمل ما بدأناه قبل ذلك في موضوع الكمبيوتر تحدثنا في الكمبيوتر أن لدينا ثلاث حاجات رئيسية لدينا البروسيسور أو CPU وميموري وعندنا الامبوت أوبوت سيستم أو الامبوت أوبوت بريفرال وطبعا الCPU يتوصل مع الميموري ومع الـ Input Output Peripherals عن طريق Puses الرمز ده كده بنسميه Pus Set Pus Set يعني ايه؟ يعني فيه 3 Puses الاساسية اللي هم الـ Data Pus و الـ Address Pus و الـ Control Pus تلاتة دول كده بيكونوا لي اللي هو الشكل اللي انت شايفه قدامك ده. طيب طبعا الـ توصل مع الكلام ده. والتوصيلة بتاعتهم ده يعني. هنبقى نشوفه قدام ان شاء الله.

في لما نشوف انواع ونتكلم عن. وبالتالي احنا هنبدأ بقى ناخد جزء جزء من دول ونشوف هو بيشتغل ازاي وايه مكوناته وايه هي انواعه وهكزا. طيب خلونا نبدأ الاول مع البروسيسور. البروسيسور عندنا بيتكون من 3 حاجات اساسية ايه هي؟ بيبقى عندنا ال ALU ال arithmetic and logic unit و بيبقى عندنا ال control unit و بيبقى عندنا ال register files دي بتبقى مجموعة من ال register go و microprocessor register files او register bank طيب من الاخر كده البروسيسور ده مهمته ان هو يعمل 3 حاجات رئيسية Feature, Decode, Execute والFeature والDecode والExecute دي بنسميها الـ Instruction Life Cycle ده كده اللي هو ايه اللي هو الـ Feature والDecode والExecute Feature, Decode, Execute نريد أن نعرف كيفية تنفيذ الـ Decooder و Executor أولاً، الكود يكون موجود في الـ Room و يوجد الكود في الـ Room و من يشاور على الكود أو الإنستراكشن الذي يحتوي على دور التنفيذ هو الـ Program Counter وهذا الـ Program Counter يكون موجوداً في الـ Register Files سنتحدث عن أنواع الـ Register Files سنعرف أنها General Purpose و Special Purpose الـ Program Counter هو واحد من Special Purpose Registers الموجودة في Register Files الـ Program Counter يكون فيه أدرس المكان الموجود المكان الذي يحتوي على الدور للتنفيذ الـ Next Instruction تركيزاً، الـ Next Instruction ليست الـ Instruction التي تتنفس الآن الـ Next Instruction هي الـ Instruction التي تحتوي على الدور للتنفيذ حسناً، عندما قمت بعمل الـ instruction هنا يوجد الـ instruction عبارة عن zeros و ones حسناً، عندما قمت بعمل الـ instruction feature من يعمل الـ instruction feature؟ الـ control unit حسناً، الـ control unit تعمل ماذا؟ الـ control unit تعمل feature الـ instruction تأخذها من الممورة وتضعها في الـ register هنا هذا الـ register نسميه الـ IR instruction register من اسمه instruction register يبقى هو register اللي بنجيب ال instruction من ال room من بره microprocessor ونحطها جوه microprocessor عشان نقدر نتعامل معاها طيب بعد ما عملت لها feature إللي هيحصل؟ ثواني كده بس هو في حد رفع يده ولا حد عايز يدخل ايوة انا بس عندي سؤال بس تمام تفضل انا طبعا بس من اول ما قلنا بعمل فتش للإنستركتور الإنستركتور ده مميز موضوع في اين؟ الـ instruction تمام الـ instruction ده اللي هو الكود بتاعي الكود بتاعي كود بيبقى متكون من اكتر من instruction الـ instruction دي بتبقى assembly instructions يعني مثلا انت دلوقتي بتكتب الكود بتاعك بال C تمام الـ C يتحول الى assembly و الـ assembly يتحول الى machine language الـ machine language هي 0 و 1 وهي مجموعة instructions تخزينها في الـ flash أو الـ room التي تحتوي على الكود سنعرف قليلاً أن الـ room هو الكود memory الـ code يتنفس بها هو مجموعة الـ instructions 1 2 3 4 و هكذا اللي بيعدي على الانستراكشن دي واحدة واحدة عشان ينفذها هو مين؟ بينفذها بشكل سيكوينشال كده هو البروغرام كون تمام؟ اللي كان بيسأل تمام؟ ماشي ماشي معلش يعني الانستراكشن موجودة في الريجستر ولا موجودة في الروم؟ الانستراكشن موجودة في الروم برا أنا بقى عملت لها و جبتها في ريجستر عندي اسمه. تمام يعني دي زي زي كرام أقطع عشان أنا نفز أو هو أنا جبتها من برة لجوة ليه؟ لأن من الـ الـ CPU بتاعنا ده للـ بيبقى فيه التعامل مع الـ بيبقى صعب شوية فأنا بجيب بعمل لها التعامل يعني مع عن طريق الـ بيبقى صعب فأنا بجيب الـ جوة عندي في بيتي في الـ لأبدأ بشأن تكون من ما و أبدأ بفهمها تمام هل تفهم؟ تمام إذن، لقد قمت بعمل تطبيق لها أحضرتها من الخارج، من الممارسة، أحضرتها في مكان ما، وأحضرتها في الداخل هل يسأل أحد أخر؟ نعم، بإذن الله تفضل هل يزيد او يزيد او لا عندما يقوم بعمل او بعد ان تنفيذ الاستركشن؟ يشاور على الاستركشن التالي يعني دائما يشاور على الاستركشن التي تحتوي عليها في التنفيذ وليس ما يحدث في الاستركشن الآن يعني مثلا اذا قمت بعمل استركشن لأول استركشن تمام انا خلاص عملت فتش انا اول ما عملت فتش البروجرام كاونتر هيروح ينادي على الانستراكشن هيروح يبص على الانستراكشن اللي بعدها هيزيد.

طبعا. البروجرام كاونتر بيزيد من مقدار قد ايه? ده على حسب الاركتكتشن مش شغلناتنا دلوقتي. مفهيم.

برضو حضرتك يعني البروجرام كاونتر بيزيد بعد لما يحصل فتش الاول انستراكشن. اه بالزبط. طيب انا عملت فتش الاول انستراكشن.

البروجرام كاونتر بقى بعد كده هيبقى بيشور على مين? معايا؟ ايوة ايوة على next instruction على next instruction اللي هي اللي بعدها يعني دلوقتي عملت feature instruction دي البروجرام كاونتر هيروح يشاور على اللي بعدها تمام؟ احنا دلوقتي عايزين بقى نتكلم ناخد instruction واحدة كده ونتكلم عن life cycle بتاعتى احنا دلوقتي معنا instruction اللي هي والتاكون دي مثلاً الinstruction دي انا عايز الاول عمل لها feature انا عملت لها feature كـ Control Unit الـDiara بتاعت الـFeature هي Hardware Circuit موجودة جوة الـControl Unit هنا طيب الـDiara دي بتعمل Feature الـInstructions من بره لجوه من بره الـMicro Processor لجوه الـMicro Processor هتعمل له Feature هتحطه فين؟ هتحطه في Register اسمه الـIR الـInstruction Register طيب انت دلوقتي خزنت الـInstruction بتاعتك في الـIR بعد كده عايز تعمل لها ايه؟ بعد كده عايز تعمل لها Decode مين اللي هيعمل Decode؟ دايرة هنا اسمها instruction decoder الـ ID instruction decoder الـ instruction decoder موجودة في اين؟ موجودة برضو جوه الـ control unit تمام؟ حد ده متلغط في اي حاجة دلوقتي؟ طيب، انا دلوقتي بعمل decode للـ instruction يعني ايه decode؟ يعني بفهم الـ instruction انا ليه بفهم الـ instruction؟ انا كـ control unit عايز افهم الـ instruction علشان ابعط للـ ALU signal تقول الـ ALU أن الإنستراكشن جمع، أو ضرب، أو قسمة، أو أي شيء أريد أن أفهم الإنستراكشن لكي أنفذها وبالتالي أحتاج إلى معلومات لكي أفهمها ما هي المعلومات التي أحتاج إليها لكي أفهمها؟ هاتين لكي أقوم بعمل ديكود، أحتاج إلى هاتين أشياء أحتاج إلى و و الـ Instruction Format كما قمنا بإختياره في الـ Micro Processors أو الـ Computer Organization الـ Instruction Format هو عبارة عن الـ Format الذي يحتوي على الـ Instruction سواء الـ Instruction 32-bit أو 8-bit أي أن يكون الـ Micro Processor نفسه فهم الـ Format تمام؟ ما معنى هذا الفورمات؟ يعني أنني لدي 8-bit 8-bit متقسمين لثلاث أشياء وليكن مثلاً 0 0 0 1 1 1 0 1 مثلاً حسناً 8-bit من الأخير يعبر عن ما هو هذا الفورمات لكي أفهم أن المايكروبروسوجر يفهم أن الثلاثة الأولى على بعض هم الأوب كود والأثنين مثلاً أوبراندوان و الاثنين دول open-end 2 هو هنا مقسم الفورمات ايه 3 3 اتنين open-end 1 و open-end 2 ده فورمات ده مثال من ضمن امثلة كتير تمام طبعا في منكو ناس في تلتة مثلا خدت في الكمبيوتر ارغانايزيشن انواع الفورمات و عرفت بالتفصيل الميبس تمام اللي احنا خدناه مع مش عارف ما من اللي بيشرح لكم دلوقتي الدكتور مين بس هو الفكرة ان انت بيبقى عندك انواع كتير قوي من الفورمات ده مثال من ضمن الأمثلة. ده مثال كمان لثمانية بيت فورمات.

اللي انت بتدرسه اتنين وتلاتين. تمام? فاللي ذاكر منكم كتاب زي انت المايكرو بروسيسور هيبقى فاهم ان الفورمات بيبقى لها انواع. ده كده مثال من ضمن الأمثلة. المثال ده انا مقسمه ازاي?

انا مقسمه تلاتة تلاتة اتنين. تلاتة اوب كود تلاتة اوب راند وان تلاتة اوب راند تو. هتقول لي ايه اوب كود ده?

هقول لك الاوب كود ده اللي بيفهمك يعني ايه? يعني مسلا المايكرو بيتعنا بيبقى عنده جدوى. الجدول هذا يسمى الـ instruction set هذا الجدول يوجد داخل ماذا؟ يوجد داخل اثنين ما هم الاثنين؟ الـ opcode و الـ operation الـ opcode هو الثلاثة دول الـ operation هي عملية add إذاً، لكي أفهم أن الـ instruction التي تخزينها هنا نتخزينها هنا مثلاً في المكان ده كده مثلاً 0 0 0 1 1 1 0 1 الـ instruction دي أنا عايز أفهمها، هعمل إيه؟ هاخدها، أحطها في الـ instruction register وبعد ما أحطها في الـ instruction register أنا معايا الـ instruction format أنا عارف إن أول ثلاثة هم دول مين؟ هم دول الـ opcode وبالتالي هاخدهم، أفهمهم أنا كـ instruction decoder فـ instruction decoder لما يفهم الـ instruction دي ويعرف إن هي عملية الـ add هيقوم يعمل إيه؟ سيقوم بإرسال سجنال لاليو يقول له اجمع ويبعث الابرند 1 هنا والابرند 2 هنا كما داخل الاليو هما دول الانبوتس بتاع الاليو تمام وبالتالي أنا مثلا العملية دي كده الكود اللي كان مكتوب كان مكتوب ايه كان مكتوب 7 اللي هما 3 وحيد 7 زائد 1 وبالتالي الابرند 1 اللي داخل الاليو هنا هيبقى 7 وابرند 2 واحد والعملية اللي جايله هتبقى ايه هتبقى جمع وبالتالي الAlu سيطلع لنا ال result بنا اللي هي تبقى 8 هي دي ال execution اللي بيقوم به ال Alu هو دا ال execution تمام؟ طب الناتج اللي طالع لنا من ال Alu دا هيتخزن فين؟ والله هو في ال new microprocessors الميكرو بروسيسور الجديدة بيتخزن في أي ريجستر من ضمن ال general purpose registers احنا هنقول دلوقتي كمان شوية ان ال register file دي عندنا نوعين general purpose و الـ Special Purpose أو Specific Purpose الـ General Purpose مجموعة من الـ Registers والـ Special Purpose مجموعة من الـ Registers من ضمنهم مثلا الـ Program Counter من ضمنهم الـ IR من ضمنهم حاجات تانية في الـ Register في الـ Microprocessors القديمة كان يسموه الـ Accumulator الـ Accumulator كان يتخزن في الـ Natic بتاع الـ ALU ده كده زمان دلوقتي ما عادش فيه Accumulator بيخزنه في أي Register موجود في الـ General Purpose Registers أي روجستر فاضي يعني.

حد عنده مشكلة في الكلام اللي احنا قلناه دلوقتي؟ طيب جميل جدا. تعالوا كده نعيد سريعا على الـ Instruction Life Cycle زي ما احنا قولنا. طيب إعادة سريعة كده الـ Instruction Life Cycle إيه اللي بيحصل فيها؟ بعد ذلك مش موزع. حد عنده أي سؤال؟ بعد ذلك مش موزع. بس بس.

نفهم بي الاستراتيجية نفهم بي الاستراتيجية المفروضة الاستراتيجية هي عملية جمع مين اللي هيفهمها؟ ده اللي هو الاستراتيجية بفهم انها عملية جمع او بفهم انها عملية جمع من الانستراكشن ست انا طبعا لازم اعرف الانستراكشن فورمات عشان اعرف الاب كود انو 3 بيت بالضبط ولازم اعرف الانستراكشن ست عشان افهم ان دي عملية جمع تمام؟ نقول سريعا برضو اللي احنا تمام جميل جدا نعيد سريعا كده على الـ Instruction Life Cycle الـ Instruction Life Cycle اول حاجة احنا بيبقى عندنا Program Counter Program Counter ده بيشاور على الـ Code اللي هو موجود عندنا برا في الـ Room المفروض ان الـ Instruction اللي عليها الـ Next Instruction اللي عليها الدور في التنفيذ هي الـ Instruction اللي انا هعمل لها Feature تمام؟ وبعد ما عمل لها Feature الـ Program Counter هيزيد مع نفسه خلاص هيروح يشاور على الـ Instruction اللي بعدها تمام بعد عمل فترة الانستراكشن سأضعها في الانستراكشن ريجستر وهو ريجستر من ضمن الانستراكشن البروبوس بعد عمل فترة الانستراكشن سأضع فيها عملية ديكود بعد عملية ديكود سأضع فيها عملية ديكود لأنها تحتاج إلى مجموعة من الانستراكشن وانستراكشن فورمات نحن معنا الفورمات فعرفنا أن أول 3 هي الوب كود الانستراكشن ست عرفنا ان التلاتة بتدول معناهم ان هم عملية فايقوم او يعني يبعت سجنال للاليو ان هي عايزه يجمع دلوقتي. طيب هيبعت له سجنال بعملية الجامع ويدخل له وال. طيب وال اللي هم مثلا هيبقوا سبعة وواحد في المثال بتاعنا هيطلعوا اللي هم تمانية. سبعة زائد واحد. الرزلت دي هتتخزن فين?

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

ولكن هي دي بقى نقطة البداية الحقيقية. دي نقطة بداية الكود التنفيذ الكود الحقيقي. تمام?

اللي هي بتبقى مسلا زي اللي هو بيبقى في اول اه تمام? طيب جميل جدا. نحن الآن في برمتال سوفت وير نجعل البروجرام كاونتر يشاور على الريسيت فيكتور وهو أول مكان لأن السترتاب كود يقوم بعمل بعض الأشياء وبعد أن يقوم بهذه الأشياء سنقوم بإعادتها بالتفصيل وبعد أن يقوم بهذه الأشياء سيجمب على المين أو سيقوم ببرانش على المين بعد أن يقوم ببرانش على المين يبدأ في تنفيذ الكود كل هذا والبروجرام كاونتر يعمل بزيادة وهو ينفذ الانستراكشن طيب كيف ينفذ الانستراكشن؟ كما شرحنا الآن حد عنده أي مشاكل؟ طيب، جميل جداً عايزين بقى نقول معلحوظة مهمة جداً إيه هي؟ احنا دلوقتي عندنا مثلاً وليكن Microprocessor 1 وMicroprocessor 2 طيب، Microprocessor 1 المفروض أنه يفهم مثلاً مجموعة معينة يعني مثلاً يفهم أن 0 0 0 هذا عملية جامعة والميكروبروسوسور 2 يفهم أن 1 1 1 هذه هي عملية جامعة كل ميكروبروسوسور يمتلك مجموعة معينة خاصة به وبالتالي الـ Assembly Language ستختلف باختلاف الميكروبروسوسور من كل ميكروبروسوسور للآخر يكون هناك مجموعة مختلفة وعشان كده احنا كنا بنستخدم اللو ليفل لانجلج زي ال-C ال-C كانت قريبة من المايكرو بروسوسور وفي نفس الوقت مفهومة بالنسبة لي كبروغرامر وبالتالي انا كنت بقدر استخدم ال-C افضل من ان انا استخدم الاسيمبلي الاسيمبلي هتبقى صعبة جدا علي تمام وكمان مع ال-High Performance Micro Processors الموضوع بتاعي ان الاسيمبلي الميزة بتاعت الاسيمبلي يعني ان هي بتبقى خلاص سريعة واسرع من ال-C خلاص ما عدتش موجودة لان انا بقى عندي High Performance أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مستخدم أو محلل مست المايكرو بروسيسور 1 ممكن يفهم مثلا الجمع والطرح بس مثلا مايكرو بروسيسور 2 بيفهم جمع وطرح وضرب واسمه ايه ده معنى كده مثلا لو انا بعثت المايكرو بروسيسور 1 ده عملية ضرب ايه اللي هيحصل المفروض انه هو هيبقى عنده حاجة تحولها لاكتر من عملية جمع مين اللي هيحوله العملية بتاعته لاكتر من عملية جمع اللي هي العملية اللي بيفهمها مين اللي هيحوله الضرب اللي هو مايفهمهاش لاكتر من عملية جمع اللي هو بيفهمها الـ Software إذن يجب أن يكون لدينا Hardware وهو الهاردوير الذي يفهم الـ Instruction لذلك لكي نفهم الـ Instruction يجب أن يكون لدينا Hardware وهو الـ Instruction Decoder ويجب أن يكون لدينا Software وهو الـ Compiler يمكن أن يتحول الميكرو بروسوسور 1 إلى أكثر من عملية جمع إذاً، إذا كانت الشركة تحتوي على 2 أسلوب أسلوب الهاردوير، إذا كان هذا الأسلوب ضعيف إذا كان الهاردوير لا يفهم كل المقاطع إذا كان يحتاج إلى أسلوب قوي إذا كان الهاردوير قوي يمكنني استخدام موافقة ضعيفة جداً موافقة ضعيفة بالنسبة لي هي الـ Compiler لكي نفهم الـ Instruction والـ Hardware هو الـ Instruction Decoder هل لديك مشكلة في هذا؟ حسناً، هذا يأخذنا إلى شيء مهم جداً جداً جداً اسمه الـ EISA الـ EISA هو إختصار لـ Instruction Set architecture والinstruction set architecture دي عندنا أنواع نوعين أساسيين حاجة اسمها risk وحاجة اسمها sysc يعني ايه risk ويعني ايه sysc risk اختصار لreduced instruction set computing وسysc اختصار لcomplex instruction set computing طيب يعني ايه reduce من اسمه كده هو reduce يعني ايه يعني بيفهم أوامر قليلة لكن الـCISC يفهم أوامر كثيرة هذا عدد المعطلات في الـRisk يفهم أوامر قليلة وفي الـCISC يفهم أوامر كثيرة إذن سؤال هل يحتاج الـRisk لصفتوير قوي أم ضعيف؟ بالنسبة للـRisk يحتاج لصفتوير ضعيف الـRisk يفهم أوامر قليلة هل يحتاج لصفتوير ضعيف؟ يعني أنه الآن لا يفهم لي سوف يحتاج لها مواد قوية لكي يستطيع الكمبيلر تحويلها لأشياء لا يفهمها إذاً، إذا كان هناك خطأ، فسوف يحتاج لها مواد قوية لكي يفهمها ويفهم السيسك الكثير، فلن يحتاج لها مواد قوية لذلك سوف يكون مواده بسيطة حسناً، لنتحدث عن الهاردوير وبعد كده نرجع نقارن ما بين RISC و SISC تاني احنا عارفين ان الهاردوير اللي بيفهم الانستراكشن هو مين؟ الانستراكشن ديكودر الهاردوير اللي بيفهم الانستراكشن هو الانستراكشن ديكودر طيب الانستراكشن ديكودر ده بقى طرق تصنيعه بتختلف باختلاف ال ISA يعني ايه؟ يعني التختلف على حسب ال ISA بتاعتنا RISC ولا SISC مايكروبرسوسور بتاعنا شغال RISC ولا مايكروبرسوسور بتاعنا شغال SISC طب هتختلف ازاي؟ هقولك انا عندي طريقتين لتصنيع الـ Instruction Decoder ايه هم؟ اول طريقة حاجة اسمها الـ Hardwired تاني طريقة حاجة اسمها الـ Memory Mapped طيب يعني ايه Hardwired و يعني ايه Memory Mapped؟ ايه الفرق ما بينهم؟ سأخبرك أننا قمنا بعمل HardWire وهو عبارة عن قطعة Logic Gates يعني أن الـ Instruction Decoder مصنع من قطعة Logic Gates وبالتالي، هل سيكون الـ Instruction Decoder سريعاً أم بطيئاً؟ سيكون سريعاً، أنا أدخله Input أدخل قطعة Logic Gates إلى Input Logic Circuit أدخله Input، وتخرج لي Input على طول وبالتالي، أنا هنا عندي الهارد ويرد يتصنع من logic gates طب أنا بقى علشان أصنع حاجة تفهم أوامر كتير محتاج عدد الجيتس يزيد ولا ما يزيدش طبعاً محتاج عدد الجيتس يزيد وبالتالي أنا علشان أعمل حاجة بتفهم أوامر كتير أنا محتاج أصنع حاجة أحط عدد من الجيتس كتير طب لو أنا بقى مش محتاج حاجة تفهم عدد أوامر كتير أنا عايز حاجة تفهم عدد أوامر صغير إذن مش هيدرني لو استخدمت عدد الجيتس ليه؟ لأنني لا أحتاج عدد جتس كثير، أنا أحتاج عدد جتس قليل.

تمام؟ مفهوم الجزئية دي ولا عيد تاني؟ معايا؟ هل يمكن أن نقول أن الهارد ويرد مع الأشياء السيمبلية؟ نعم بالضبط، هو مع الأشياء السيمبلية، والذي هو من؟ هو يفهم أهمية قليلة؟ هو المخطط بالضبط هو المخطط نقول مرة أخرى لأنني لا أفهم الهارد ويرد هو عبارة عن مجموعة من الجيتس مجموعة الجيتس هذه المفروض ان هي بتترجم لي امر معين انا بدي اخليها input هتطلعلي output هو ده signal اللي هتروح لل ALU طب ال-input اللي داخل للسيستم ده علشان بقى يبقى عندي variety علشان يبقى عندي تنوع في عدد ال-instructions يبقى عندي عدد instructions كتير المفروض اعمل ايه؟ المفروض عدد الجثث ده هيزيد غصب عني مش بيقديه تمام؟ وبالتالي لما عدد الجثث دي زيد اللي هيحصل؟ هيظهر عندي مشكلة ان انا مش هقدر اعمل عدد الجثث ده كله هذا مكلف ويحتاج لعمل عدد جيتس قليل من يحتاج لعمل عدد جيتس قليل؟ النظام الذي يفهم عدد جيتس قليل الذي لا يحتاج لفهم عدد جيتس قليل فالرزق هو الذي يحتاج عدد جيتس قليل بالنسبة للمستخدمين، لو كان لديهم أمر لا يفهموه، فسيحولونه لأكثر من ما يفهمونه وبالتالي، في الـRisk، سنستخدم الـHardWire بالنسبة لـ MemoryMap لدي Memory و موجود داخلها مجموعة الـ InstructionSet وهي مجموعة الـ Instructions التي نفهمها يدور داخل الممورة و بعد ذلك يظهر لك الـ Overage فهنا يقوم بعمل عملية Search يدور داخل الممورة وبالتالي حاجة مثل هذه كهاردوير ليس مكلفة لكنها ستغير لماذا ستغيب؟ لأنني لسه سأدور على المستخدمات التي أريدها ولكن هنا كأنني كنت أدخله بإنبوت يظهر لي أوجود ولكن هنا لسه سأدور وبالتالي من الذي سيدور ومن الذي سيريد الحوار هذا؟ عدد المستخدمات الكثير لماذا؟ لأن الـ LogicGates ستكون مكلفة بالنسبة له لأنه يقوم بعمل LogicGates كثيراً، الممورية ستكون أرخص وبالتالي هو يقوم بعمل MemoryMap لو كان عدد المستخدمات الكثير لأنه لو قم بعمل HardWired سيكلفه فلوس مفهومة كده الجزئية ديت؟ يبقى مين بقى اللي بيشتغل ميموري مابت؟ مفيش غيره السيسك مصبوط طيب فهمنا الفرق ما بين الرسك والسيسك فهمنا مين بيشتغل كإنستركشن ديكودر مين اللي بيعمل إستركشن ديكودر بتاعته هارد ويرد ومين اللي بيعمل إستركشن ديكودر بتاعته ميموري مابت تمام؟ تمام نحن قلنا أن الـ Instruction Decoder لو تفهم أوامر قليلة التي هي الـ Hardware تحتاج لـ Software قوي في حالة الـ Hardware يحتاج لـ Compiler قوي لكي يحول الأوامر التي لا يفهمها الـ RISK إلى الأوامر التي يفهمها وفي الـ Memory Map لدينا عدد من الأوامر كبير فإذا أنا لست أحتاج لكمبايلر قوي لأن الأوامر كلها تقريباً ستكون موجودة عندي تمام؟ كل الأوامر التي أحتاجها ستكون موجودة عندي وبالتالي أنا في الكمبايلر في حالة الهاردوير سأحتاج لكمبايلر عالي في حالة الميموري ماب لن أحتاج لكمبايلر عالي طيب تعالوا بقى من الكلام الذي قلناه نقارن ما بين السيسك والريسك سؤال بقى هنقارن ما بينهم من حيث إيه؟ التحليفة السرعة بالنسبة لنا هما الـ embedded system challenges حسناً لنقارن بينهم من حيث الـ size الـ cost الـ performance و الـ power consumption أول شيء بالنسبة لنا دعنا نتحدث عن المزيد حسناً المزيد من سيكون حجمه أكبر؟ أن أقوم بعمل بـ بالـ بالـ أو أن أقوم بعمله بالـ من سيكون حجمه أكبر؟ الـ وهو أو بالنسبة للـ أصحاب الممارسة الحجم الأكبر سيكون الـ هي التي ستقوم بعمل سيركت أكبر الحجم الأكبر ولا الأحسن؟ لا الحجم الأكبر وليس الأحسن، لن نتحدث عن الأحسن، نتحدث عن المنزل كمنزل، ستكون المنزل أكبر وبالتالي، لماذا؟ لأنه مجموعة من المنزل وإنما المنزل الآخر، سأخزن فيه وإنشاء دورته إذن سيكون المنزل أكبر في المنزل بينما سيكون أقل في المنزل فهل سيكون المنزل فقط مخزنًا؟ لا، سيكون ALU أيضًا من هو الـ ALU؟ أكبر؟ أكيد الـ SISC لماذا؟ لأن الـ SISC يفهم أوامر كثيرة يحتاج الـ ALU تفهم كل الأوامر وإنما الـ RISC الـ ALU صغيرة وبالتالي الـ 2 سيضيعوا بعضاً يعني الـ ALU كبيرة و الـ ALU صغيرة الـ ALU صغيرة و الـ ALU كبيرة وبالتالي الـ 2 سيكونوا تقريباً في كتابة كتابة كبيرة بالنسبة لـ COST من سيكلفني أكثر الـ RISC أم الـ SISC؟ يوجد نوعين من الكوست نوع للسوفت وير ونوع للهارد وير من لسوفت وير أغلى؟ الـ CISC أم الـ RISC؟ من سيحتاج كمبيلر قوي؟ هذا الـ CISC من سيحتاج كمبيلر قوي قوي الـ RISC لأنه يحتاج كمبيلر قوي بالضبط الـ RISC لأنه يحتاج كمبيلر قوي لأنه يحتاج كمبيلر قوي لكي يحول الـ RISC لأنه يحتاج كمبيلر قوي الهاردوير هو بالنسبة لي instruction decoder ال instruction decoder في الريسك هارد ويرد فهو هيفهم أوامر قليلة وبالتالي الهاردوير قليل ككست إنما النحة الثانية في الريسك هيبقى العكس هتلاقي أن الsoftware إنت مش محتاج software قوي بينما الهاردوير بتاعك هيبقى hardware قوي فهيكلفك فلوس وبالتالي برضو software هيروح مع الهاردوير فهيبقوا الاتنين برضو تقريبا زي سيئة هيا نرى الـ Performance من منهم سيكون أسرع؟ هل سيكون أسرع من وجهة نظر الـ Instruction Decoder أن أبحث عن الأمر أسرع؟ هيا أخبركم من وجهة نظر الـ Instruction Decoder من سيجد الـ Instruction أسرع؟ الـ Hardwired أم الـ Memory Map الـ Hardwired بالضبط الـ Hardwired هي التي ستجد الـ Instruction بسرعة لماذا؟ لأنه عبارة عن logic gates ولكن المموري مابدنة لسه بخش وضوّر ولكن احنا ما خدناش بالنا هنا من حاجة في السرعة الperformance مش performance للهاردوير بس الperformance هي performance للهاردوير والسوفتوير كمان ففي السوفتوير الinstruction decoder هيضيعه في المموري الcompiler مش هيضيعه لأنه compiler هيبقى بسيط في الcisk إنما في الrisk compiler مش هيبقى بسيط compiler هياخد وقت انه يحول عملية الدرب مثلاً لأكتر من عملية جامعة فهمني؟ يبقى هنا الوقت اللي هضيعه في التحويل من ضرب أو من جامعة مثلا الوقت اللي هضيعه في التحويل هنا أنا هضيعه هناك في السيرش هضيعه في السيرش في مين؟ في الميموري ماذا؟ وبالتالي برضو تقريبا الاتنين زي سيئين طيب بالنسبة للpower consumption، power consumption برضو بالنسبة للALU وبالنسبة للinstruction decoder تجد أن الـ ALU هنا تستهلك بر قوة أقل و تفهم أهمية قليلة و الـ Instruction Decoder يستهلك بر قوة كبيرة لأنه معمول بالـ Logic Gates و هناك العكس الـ ALU ستستهلك بر قوة عالية و الـ Instruction Decoder سيستهلك بر قوة قليلة و كتوتل سيكون أيضاً في الـ Performance Z إذاً المحصلة الـ 2 هي ذاتية إذاً لأمتى سأستخدم هذا أو سأستخدم هذا سأستخدم هذا أو سأستخدم هذا عندما أحصل على سيستم يجب أن أستخدمه فيه risk وعندما أحصل على سيستم يجب أن أستخدمه فيه sysk أنا أحصل على سيستم لا يحتاج إليه أوامر كثيرة أنا أحتاج أوامر قليلة وسيستم لا يكلفني فأنا سأذهب إلى risk لأنني أحتاج عدد معين من الأوامر وهو ما سنعتمد عليه سنعمل دائماً على risk الـ sysk هو الـ high performance الكمبيوتر وما إلى ذلك ونحن نستمر في التحقيق هذا بالنسبة للميكرو بروسيسور تعالوا نتكلم على تاني مكونات من الكمبيوتنج سيستم وهي الريجستر فايل او تاني مكونات من الميكرو بروسيسور نفسه اصلي وهي الريجستر فايل احنا قلنا ميكرو بروسيسور بيتكون من ايه بيتكون من الاليو و ال control unit و register files اخر شيء لم نتحدث عنه هو Register Files لنأخذها واحدة ونتحدث عن أنواعها طبعاً نتحدثنا عن Controllant ومن خلالها Instruction Decoder و دائرة الـ Feature و نتحدثنا عن U و أنها Arithmetic & Logic Connect و قلنا أنها تقوم بالتحقيق بالنسبة لRegister Files يوجد نوعين من Register Files نذكرهم سريعاً هم الـ General Purpose Registers و Special Purpose or Special Function Registers طيب الـ General Purpose Register بتعمل ايه؟ زي ما اتكلمنا قبل كده في مثال سابق احنا بنعمل فيها اي حاجة ممكن تخزن الداتا بشكل مؤقت يبقى بتخزن الداتا بشكل مؤقت انما الـ Special Purpose Register لا ده الـ Special Purpose Register دي كل واحد ليه Specific Purpose كل رجستر يبقى له وظيفة معينة هو الوحيد اللي بيقوم بيها زي ايه بقى؟ يبقى الـ General Purpose Register تكلمنا عنهم قبل كده اللي هو احنا ممكن مثلاً نخزن فيه result بدل ما نخزنها في الـ Accumulator اللي هو بالنسبة لنا Special Purpose Register لا احنا هنخزنها في أي General Purpose Register لحد ما نرجع تاني نعمل لها Store تمام؟ نخلي بالنا برضو احنا بعد نخزننا الـ result نجي نطلع فوق هنا تاني الـ result اللي خرجت لنا دي نحن سنخزينها هنا بشكل مؤقت وليس بشكل دائم لماذا نخزينها بشكل مؤقت؟ لأنها ليست المكان الذي تخزين فيه سنرجعها في الممورة سنخزينها في الـ Data Memory سنتحدث الآن عن أنواع الممورة سترجع كيف؟ سترجع من طريق الباسيس اللي بيجيب البيانات من الرينال بيحطها في ريجستر اللي هو الCPU صح؟ طبعاً اللي هيرجعها بردك الCPU صح؟ اه الControl Unit بتاعتنا هي اللي هتروح تعمل لها ستور طيب تعال ده نكمل كلامنا احنا قلنا اذاً الGeneral PIPs Registers دي اللي هو هيتخزن فيها الدادة بشكل مؤقت لحد ما تروح تتخزن في الميموري بشكل دائم بقى إذاً، هذه المهمة يمكن استخدامها في أي شيء. نفتكر هنا كلمة كيورد، كنا نستخدمها في C. كنا نستخدم كيورد اسمها ريجستر، كانت قليلة.

كنا عندما نقوم بإنشاء وضع قبلها كلمة ريجستر، كان يحدث ما يحدث. أحد يقول لي، تتخزن في الـ General Purpose Register بالضبط لكي تكون قريبة من الـ CPU مزبوط لكي تكون قريبة من الـ CPU لكي يسهل على الـ Microprocessor أن يتواجد باستمرار تمام؟ حسناً، يبقى الموضوع أسرع بالنسبة له ماشي؟ موضوع المموري الأسرع والمموري الأبطأ سنتحدث عنه بالتفصيل قدام إن شاء الله قليلاً ولكن بالنسبة لنا عندما تضع كلمة register في كودك، تخزينها في General Purpose Register. هل أكون متأكد أنها تخزن في General Purpose Register؟ هذا سؤال مهم، لا، لأن الـRegisters تكون مشغولة، ويشغل الـCompiler. إذاً، عندما أضع كلمة كيوورد في Register، أبقى أضع نفسي تحت رحمة الـCompiler. يمكن أن يخزن الـCompiler في Register، ويمكن أن يتعامل معها من المموري.

ولكن لو استخدمت كلمة register هل ينفع استخدام الادرس operator قبل هذا الفريابول؟ لا لا ينفع لماذا؟ لأن هذا سيكون إضافة للسينتاكس بالنسبة له ولم يفهمه الكمبيولر ويقول لك أنك مدهان لرجستر لماذا يفعل هذا؟ لأن كلمة register تفهم أن هذا الفريابول سيتضع داخلها ومع ذلك، يمكنك تحقيق الريجستر الموجودة داخلها هو مش بيتعامل معاها على ان هي أدرس أصلاً ليه؟ أدرس ده بالنسبة للحاجات اللي موجودة برا أدرس ده بالنسبة للحاجات اللي موجودة هنا في الميموري ده كده أدرسيس بالنسباله إنما الحاجات اللي موجودة هنا ده هو عرفها باسمها يعني في ريجستر مثلاً R0 في ريجستر تاني R1 في ريجستر تالت اسمه Program Counter الريجستر دي هو عرفها باسمها عندما يكتب أسيمبلي لا يكتب أدرس الريجستر عندما يكتب أسيمبلي يكتب مثلاً add وليكن مثلاً أنه كله capital أي أن يكون على حسب الأسيمبلي يكتب مثلاً أد، أنا هضيف مين لمين، وبعد كده أخزنه في اين؟ يعني مثلاً بضيف R0 و R1 و R2 الدولار ساين ده بيدل على أدرس يعني، إن هو ريجستر، الدولار ساين ده بيرمز إن هو ده ريجستر من ضمن الريجسترز اللي جاوه وبالتالي هو كده هياخد اتنين ويخزنهم في التالت، يجمع اتنين ويخزنهم في التالت، ده كده الاسيمبلي بتاعه إذاً عندما يحول الأشياء إلى أسامي فهو يتعامل مع أسامي وليس مع أدرس فعندما تأتي في كودك و تكتب له أدرس فهو سيقول لك لا يا معلم هذا خطأ بالنسبة لي لماذا؟ لأنك قبل ذلك تعرفت كلمة رجستر هذه جزئية مهمة أيضاً لنحن نتركها أي شيء أيضاً قادم في C سنتحدث عنها بشكل سريع كما قلت تعالوا نتحدث عن Special Functional Register أو Special Purpose Register بشكل من التفصيل بقى اول حاجة عندنا البروجرام كاونتر مين البروجرام كاونتر؟ البروجرام كاونتر ده بيشيل عنوان الامر اللي عليه الدور ان هو يتنفس ان هو الـNext Instruction اللي هو موجود في الـRoom طبعاً البروجرام كله اصلاً موجود في الـRoom فاول ما الـMicro Processor بيعمل feature للأمر البروجرام كاونتر ايه؟ بيروح يشاور على الـNext Instruction عطولاً يبقى ده كده ايه؟ يبقى ده كده البروجرام كاونتر وده كده طبعاً بيشاور على الـNext Instruction بعدها يوجد stack pointer يشاور على أخر مكان في stack يوجد منه أنواع كثيرة وعادة يعني أن stack pointer يعمل عكس الممورية 0x00 0x01 0x02 لا يزيد المستكب المتوازن فالتوب سيكون هنا عندما نضغط على المستكب سنضغط على هذا المكان و يتحرك إلى المكان الأعلى وهو أدرس أقل يتحرك عكس الممارس و عكس الموقع هذا في معظم المشاريع ولكن في معظم المشاريع المتوازنة يمكن أن يتحرك مع الممارس أو عكس الممارس في ال Intel Microprocessors مثلاً وفي ال ARM طيب جميل جداً ده كده بالنسبة للStack Point بالنسبة للأكيوميليتور احنا قلنا ايه على الأكيوميليتور قبل كده مين هو الأكيوميليتور كان بيتخزن فيه ال result زماني بالضبط كان بيتخزن فيه ال result مؤقتاً فيه اللي هي ال result اللي طلع من ال ALU تخزن فيه بشكل مؤقت لحد ما يعمل لها السور بعد كده في الميموري ان شاء الله ولكن هو بتخزن فيه بشكل مؤقت. حاليا ما عادش موجود. بس كاكيوميليتر وظيفته ايه? بتبقى وظيفته كده ان هو يخزن الداتا بشكل مؤقت.

طيب. تخزن فيه الداتا بشكل مؤقت. طيب.

بعد كده عندنا قلنا عليه قبل كده وهو يعني ايه اي ار? instruction register بالضبط ما هو instruction register هو الذي يخزن فيه instruction من الممورة بالضبط عندما أقوم بعملها بعد ذلك يوجد شيء يسمى PSW process status word word ال process status word دي بتبقى مجموعة من الفلاكس نخلي بالنا بقى يعني ايه فلاكس كل واحد منهم بيبقى ليه وظيفة معينة الفلاكس دي بيبقى كل فلاك بالتاية معينة تمام وهكذا في مثلا بالتاية تبقى بتدل على sign طب هقولك بتدل على sign يعني ايه بتدل على الاشارة بتاعة ال result يبقى اذا هي بتدل على sign بتاعة اخر عملية حصلها execution على ال ALU تمام إذاً، إذا أردت أن أرى النتيجة، سأقرأ البتية بشكل مباشر، وهي بـ PSW سأرى هل هذه البتية بزيرو أو واحد، بزيرو تكون مباشرة، فهذا الرقم كان مباشرة، وإذا كان واحداً فهذا الرقم كان نجداً إذن هذه البتية تدل على إشارتي، هل أخري عملية قمت بها بالـ ALU، هل كانت بزيرو أو واحداً؟ حسناً، جميل جداً هل معنى كده ان اخر instruction اتنفذت بال ALU هي ال instruction اللي sign بتاعتها هتبقى موجودة في flags؟ هل هذا يعني أن أخر مقاومة تنفيذت مطلقاً هي المقاومة التي ستغير الفلاكس؟ لا، لماذا؟ لأن هناك مقاومات لا تتعدي على الـ ALU أصلاً سأخبرك بمثل ما هي مقاومة جمب مثل المقاومة الجمب لا تحتاج إلى الـ ALU في أي شيء لا تحتاج إلى تقديم المقاومة مثل المقاومة الإنكريمنت المقاومة الإنكريمنت تزود مثلاً لـ X++، فهذا X++ سيتحول إلى Increment في بعض المايكرو بروسيسور هذا لو أنه يعني فهم هذه الـ Instruction، لو أنه فعلاً موجود داخلها كلمة Increment كـ Instruction فهمني؟ لو أنه موجود فعلاً كلمة داخلها، الـ Instruction داخلها، الـ Assemble Instruction داخلها لو أنها موجودة داخلها، سيحول هذه السطر إلى كلمة Increment ولو أنها ليست موجودة داخلها، فهو سيقوم بعمل أي شيء؟ بكل بساطة سيحولها إلى Add X و تمام؟ طبعا هو هيبقى الاول عمل اكس دي جابها في ريجستر عنده R1 مثلا وبعد كده يجمعها على الواحد ويخزنها بقى في اي مكان واضح معايا وبالتالي الانكريمنت دي اصلا مش هتعدي على الاليو اذا انا بعد ما اعمل انكريمنت الاليو هتغير الاليو هتعدي عليها حاجة لا اذا الفلاك ده الفلاك بتاع الساين مثلا هيتغير لا مش هيتغير بعد الامر بتاع انكريمنت لانه ايه لأنه أصلاً الأمر ده مش هيعد على الـ ALU مفهومة كده جزيه دي ولا مش مفهومة؟ طيب كميل جداً تاني تاني، تمام دلوقتي احنا عندنا flags تمام؟ ال flags دي منها واحد اسمه sign flag ال sign flag ده يا باش مهندسة بيدل على إيه؟ بيدل على الإشارة بتاعة آخر result الـ ALU عملتها الـ ALU دلوقتي جمعت لي 7 زائد 1 فطلعت 8 الـ bit دي هيبقى موجود فيها 0 ليه؟ لأن الـ 0 بيدل على أن result بتاعتنا كانت positive يبقى أنا لو رحت بعد العملية دي بعد الـ instruction اللي أنا عملت فيها addition دي وبصيت على sign bit دي هلقيها إيه؟ هلقيها بـ 0 طيب لو أنا بقى عملت instruction ما عدتش على الـ U أصلا زي الـ instruction بتاعة x++ دي الـ instruction دي هتتحول كـ assembly للأمر increment الـ Increment ده لما يجي يتنفذ هيتنفذ والـ X دي في المموري يعني هو هيزودها وهي في المموري مش هيروح أصلاً يجيبها وبعد كده يجمع بالـ ALU وهكذا لا، هو هيزودها وهي في مكانها تمام؟ إذن الـ Instruction دي هتعدي على المموري الـ Instruction دي قصدي هتعدي على الـ ALU بزبط مش هتعدي على الـ ALU إذن الـ ALU بيبقى فيها فالفلاكس هي اخر عملية ينفذها هل هذه الجزئية مفهومة؟ ما هي هذه الفلاكس؟ هذه الفلاكس هي ساين فلاك وهناك اوفر فلو فلاك وهناك زيرو فلاك ما هو زيرو فلاك؟ زيرو فلاك مثلاً مثل عملية جمع ونتجك كان بزيرو لو كانت نتجك بزيرو ستكون هذه المجموعة واحدة لو كانت نتجك بزيرو ستكون هذه المجموعة زيرو هذا مثلاً زيرو فلاك وفي مثلا overflow flag وفي عندنا flags كتير بقى auxiliary carry أو half carry يعني اللي هو نص الرقم وفي negative flag وفي zero flag وفي carry flag في flags كتير قوي ولكن كلام دا كله بس للعلم يعني احنا عندنا flags يا جماعة والflags دي بتتغير بأخر عملية حصلت على ال ALU والرجستر دا كله على بعض اسمه ال PSW أو ال process status register أو ال process status word register يعني لو عايز تفهم الكلام ده كله من جوه ده كده مادة Microprocessor ده كده تروح تذكر ال Intel Microprocessor زي Intel Microprocessor مرجع بتاع زي Intel Microprocessor وتشوف بقى الكلام اللي جوه شغال عامل ازاي وتفهم Assembly Instructions بقى والكلام ده كله او ممكن تقرأ برضو في كتاب لطيف بتاع دكتور العدوي يالله يرحمه بتاع جامعة حلوان بيبقى شرح الكلام ده والراجل كاتب بالعربية الكلام ده كله مشروح بالعربية ممكن المرجع دي كلها بقى نزلها لكم على Drive مثلاً او حالاً حسناً، هذه الجزئية التي قمنا بها، هل لدينا أحد مشكلة بها؟ حسناً، هذا هو الـ Registered Files كما نرى، نحن قد قمنا بخلص أول component من أي computing system قلنا أن أي computing system يتكون من ثلاث أشياء أحد يقول لي ما هي هذه؟ ال cpu بالضبط و ram و int برفرنس المموري يمكن أن تكون رم أو رم و المموري و خلاص و الـ Input Out الميموري تكون مجموعة من الـ Locations كل Location حجمه ماذا؟ هذا يختلف على حسب الـ Architecture يمكن أن يكون الميكرو بروسوسور 8-bit Architecture ستقول لي ما هي ميكرو بروسوسور 8-bit؟ 8-bit يعني عرض الـ Register الميموري يكون 8-bit معنى آخر أيضاً أن الـ ALU الـ 2 Operants الذين دخلون الـ ALU كما رأينا قبل ذلك آخرهم 2 Operants اخرهم يبقوا 8 بت لو زادوا عن 8 بت هنعمل حاجة اسمها slicing يعني هيقسمهم هنقسمها لأكثر من عملية زي ما تيجي تجمع رقمين كده مثلا كلا الرقمين 16 بت وانت عندك اصلا architecture بتاعك ال data bus بتاعه 8 بت اللي هو بيسموه micro processor أو micro controller 8 بت وبالتالي انت محتاج تعمل ايه محتاج تقسم ال 16 بت دولة لأكثر من عملية تمام نعود للمراجعة نحن الآن لدينا الممورة عبارة عن مجموعة من الـ Locations كل Location وإذا اخترت أن الـ Archive 8-bit فهو كل Location عبارة عن 8-bit وكل Location يتكون من مجموعة من الـ Bits 8-bit بالنسبة لنا هو الـ Byte فلو الـ Location 1-byte يكون Location 8-bit الـ Bit 1 تكون قيمة من 2 أكيد إما 0 أو 1 0 مثلاً تمثلنا الـ Ground، الـ Low، الـ 0 Volt الـ 1 تمثلنا الـ VCC، الـ High، الـ 5 Volt و هكذا نترك نظرة أن هناك عامل مهم جداً في الممورة اسمه الـ Access Time ما هو Access الممورة؟ Access الممورة يعني أقوم بإقراء أو إكتشاف فيها الـ Access Time يختلف من Read أو Write الـ Access Time يختلف من Read أو Write بيبقى اكبر من ال access time بتاع ال read تمام؟ يعني ال write ابطأ من ال read تمام؟ تمام طيب فكلما قل ال access time كلما زادت ايه؟ كلما زادت سرعة المموري اذا ال access time ده عامل مهم بالنسبة لي ولا لا؟ عامل مهم بالنسبة لي ونشوف دلوقتي كمان شوية ايه العوامل اللي بتأثر على المموري طيب المموري ال basic ال basic memory element هو الفليف لوب طبعاً flip-flop أنواع بس هو بيبقى d-flip-flop تمام؟ d-flip-flop ده بيبقى شكله عامل إزاي؟ بيبقى بالشكل ده كده بيبقى ليه input اللي هو d ده كده ال-input بتاعه وال-q ده كده ال-output بتاعه وبقى ليه clock والعلامة دي كده، علامة السبعة دي كده مع ال-clock معناها إن هي بتتغير بتغير ال-rising edge تمام؟ لو rising edge من غير إيه؟ من غير ما حط complementهم من غير ما حط الدايرة دي وعلامة السبعة دي عموما معناها clock تمام؟ تمام طيب اذا دي كده الclock فاذا الclock هتدخل على def flip flop وهيبقى دخل له ام حد يتكلم؟ طب نخلص الفكرة دي وبعد كده تبقى تسع طيب. هيبقى داخله وخارج منه.

وطبعا بيبقى داخله. دي مسلا بتبقى تغير مع يعني بتغير مع يعني هو هيغير بتاعه مع كل. تعال نشوف مسار. انا دلوقتي لو عندي بتاعي بالشكل ده كده.

مسلا. وال بتاعتي طبعا بيبقى سابتة. كده مسلا. خليها سابتة.

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

جميل جدا. دي كده بتاعت كل عن التانية. طبعا بتبقى ماشية بفريقوانسي سابت. طيب. الأوبوت اللي هيطلع لي هيبقى شكله عامل ازاي؟ قال لك ان الـ Input هيظهر على الـ Output مع كل Rising Edge يعني مثلا الـ Input هيبقى بدء من صفر مع اول Rising Edge ايه اللي هيحصل؟ الـ Input هيظهر على الـ Output فالـ Output هيظهر بكام؟ هيظهر بايه؟ بواحد هيفضل مكمل بواحد حتى لو حصل Falling Edge حتى لو حصل Level حتى لو حصل اي حاجة الى ان يحدث مين؟ الى ان يحدث الـ Rising تاني يطلع الـ Input بتاعه اللي هو 0 ويفضل ماشي برضه نفس الكس تمام يبقى مع كل Rising Edge هيتلع ال Input على ال Output وهيظل محتفظ بالقيمة بتاعنا ال Def Flip Flop ده هو أقل Element ممكن تحتفظ بال 0 أو تحتفظ بال 1 طبعا بتتكون من مجموعة من ال Gets Land Gets و كلام ده طبعا مش قصتنا دلوقتي طيب حد عنده مشكلة في كلام اللي اتقل؟ حد عنده سؤال؟ لو حد رفع ايده تفضل.

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

معايا? يا باش موانس ايوة ايوة تمام تمام مش باش موانس ممكن نحط ده في اخر جزئية ده اخر جزئية هو بالنسبة لنا فيه input تمام وفيه output وفيه clock الclock دي بتبقى ثابتة الفريكونسي بتاعها ثابت يعني التايم ده كده ثابت ده كده الperiod cycle تمام بتاع الclock و هذا الوقت سابق و الفريقونسي هو 1 على الوقت و دائما سابق الوقت و هذا الوقت يأتي من أسلاتور و أي شيء أخر و هذا الوقت يجب أن يدخل الى المين و يدخل الى الميموري و يجب أن يغير القيمة التي دخلت على الانبوت و تخرج على الأوجود في حالة واحدة و هذا يعني أنه يجب أن يكون موضوعاً مفرحاً يعني الكلوك بتاعتنا هي دي كده رايزنج ايج ده كده ليفل هاي ده كده فولنج ايج فولنج ايج يعني بتقع من الهاي لللو وده كده ليفل لو تمام وبالتالي انا مع كل رايزنج ايج الامبوت هيظهر على الاوت فانا دلوقتي رسم لك رسمة للامبوت اهو وبقول لك هاتلي الاوت هتعمل ايه هتيجي مع كل طلعة بتاعت الكلوك اللي هي الرايزنج ايج بتاعته يعني تغيرلي تطلعلي الامبوت على الاوت هنا ستجد الـ Input هوي سيظهر على الـ Output و سيبقى هوي حتى تكون الـ Colloquy Rising Edge فالـ Input Low سيظهر على الـ Output Low سيكون Low و سيكمل Low حتى نقابل Rising Edge تلك المفهومة و يوجد Delay لكن لا نتحدث عنه الآن كل هذا ليس مهماً جداً يعني الكلام بتاع الـ Deep Flip Flop و Rising Edge و Falling Edge و الكلام دا كله مش مهمة قوي بس انا بس بفهمك ايه هو الـ Basic Element بتاع الميمر طيب فكل بت بقى بتتكون من Deep Flip Flop مجموعة من الـ Deep Flip Flops و جنب بعض كده 8 Deep Flip Flops يكونولك ايه؟ يكونولك ريجستر حلو و كده جميل اسمه 8 Bit Register تمام؟ طيب الـ Register دا بيبقى في منو انواع يعني الـ Shift Register نفسه بيبقى في منو انواع بس دا برضو مش قصتنا دلوقت ازاي بنعمل Read Write بقى؟ يعني ازاي بنطلع بنعمل Read او Write في الميموري احنا طبعاً بنبقى متوصلين ما بيننا اللي هو احنا تسي بي يو وما بين الميموري بايه بباس او باس ست زي ما قولنا الباس ست ده انت علشان تعرف علشان تعرف تقرا من الميموري محتاج ايه الباس ست ده ثلاث حاجات DataBus و AddressBus و ControlBus الـ Data Bus هو الـ Architecture التي تتعلق بـ 2-Operation التي تتعلق بـ ALU التي سنتحدث عنها قليلاً الـ Address Bus هو الذي يحدد لك الـ Maximum Memory Size الذي يمكنني التوصل إليه لماذا أحدد Maximum Memory Size؟ لكي أستطيع الفرق بين كل Location والثاني لا أفهم كلامك كمهندس سأقول لك أنه إذا كان لدي Address Bus عبارة عن Line 1 يعني إما أخرج على 0 أو أخرج عليه 1 إذاً، هل يمكن أن يتوصل بكم Location؟ هل يمكن أن يحدد كم Location؟ يمكن يحدد لي 2 locations طيب لو عندي 2 address line يعني 0 0 0 1 1 0 1 1 يبقى انا كده ممكن احدد كم location ممكن احدد 4 location و هكذا إذاً لو أنا عندي n أدرس لينز أنا بحدد مموري سايز ماكس مم كام 2 أس n مفهومة جزئية دي دي كده كانوا 2 دي كده 2 أس 2 دي كده كانوا 1 أصدي بيتاية واحدة بقت 2 أس 1 بيتاية 2 دي كده كانوا بيتايتين بقت 2 أس 2 باربعة n أدرس لينز هتطلعلي 2 أس n من أدرس لينز 2 أس n ده عدد الـ locations بتاعة ايه بطاعة الميموري. طب ليه بعرف بليه بحدد عدد الـ Locations؟ عشان لو رايح اكتب على عنوان معين في الميموري، عند الميموري هي متقسمة الـ Locations. تمام؟ أنا عايز اكتب على العنوان ده، أنا لازم أطلع الـ Address بتاعه على الـ Address Line.

يعني ايه؟ هنفترض مثلاً للتبسيط، ان الميموري بتاعتنا 8 Locations بس. لو الميموري بتاعتنا 8 Locations، أنا محتاج كم Address Line علشان أقدر افصل ما بين الادريسيز 3 بالضبط محتاج 3 ادريس لينز ليه؟ عشان الماكسيمن ميموري يبقى 2-3 اللي هو 8 لوكيشنز وبالتالي انا عندي هنا 0000 001 0010 011 001 004 يعني 101 1101111 تمام؟ أدي 12345678 مفهومة كده الجزئية دي؟ وبالتالي أنا لو عايز أكتب على العنوان ده مثلة هطلع على الادرس لينز اللي هما التلاتة بت بتوع ايه؟ 111 يبقى أول ما يطلع على الادرس لينز 111 هيروح يأكسس اللوكيشن ده هيروح بقى يعمل في ايه؟ access يعني هريد أو هريد لو عايز أريد هعمل ايه؟ سأرسل لك على الادرس line الادرس الذي أريده وسأرسل له على ال control line read لزره وهو سيرسل لي على ال data line الميمور سيستقبل لي على ال data line ال data الموجودة هنا طبعا قلنا ان ال data الموجودة هنا عدد ال bits سيكون هو عدد ال lines لدى ال data line تمام؟ هل تفهم هذه الجزئية؟ إذا أردت أن أقوم برأيك ماذا سأفعل؟ لو عايزة write في location مفروض اعمل ايه؟ بالنسبة للأدرس هعمل ايه الاول؟ هبعت على الادرس location right وعلى ال control right بالضبط هبعت الادرس على الادرس bus و هبعت على ال control right اللي هي واحد وهبعت ال data بقى اللي انا عايز اكتبها على ال data bus عشان يكتب في ال location ده وهي دي عملية اللود وعملية ال store من الاخر بكل بساطة انا بلود من المموري او بستور في الممور حد عنده مشكلة في الكلام اللي احنا قلناه ده كله؟ ماشي صمعت اري وقت الريد بيبقى على وقت الريد نعم وقت الريد بيعمل وقت الريد لان وقت الريد انا بروح اقرأ بس من اللوكيشن انما وقت الريد انا هروح ممكن مثلا في الفلاش همسح اللي مكتوب في اللوكيشن وبعد كده هكت فيه تمام؟ طيب ما يميز الميموري بقى؟ عندنا 3 حاجات عندنا الـ Capacity وعندنا الـ Speed اللي هي الـ Access Time يعني اللي احنا قلنا عليه قبل كده وعندنا الـ Organization دول الـ 3 حاجات اللي بيميزوا لي أي ميموري الـ Capacity طبعاً احنا عارفينها هي كم بت الميموري دي كم بت من الحجم الميموري قديه السايز بتاع الميموري قديه طبعاً السايز بتاع الميموري مين اللي بيحدده؟ هل تحصلون على المهمة؟ نعم، نحن نحصل على المهمة حسناً، بالنسبة للسبيد، ما هو السبيد؟ هو مقابلة المهمة بالنسبة للتجميع، ما هو التجميع؟ التجميع يعني أنني أريد مهمة 16 كيلوغرام وليس هناك 16 كيلوغرام أنا لا أملك مهمة 16 كيلوغرام أما أنت، أملك مهمة 4 كيلوغرام هذا هو المستندر الذي يوجد في السوق لا يوجد 16 كيلوغرام مثل المقاومات يكون لديك مقاومة 220 كيلوغرام لا يوجد لديك المقاومة التي تريدها نفس القصة أنت لا تملك المموري التي تريدها تريد ممورة 16 كيلوغرام والذي يوجد في السوق 4 ستقوم بميزة الممورة أنها مجموعة يمكن أن أضع 4 كل واحدة فيهم ب4 وراء بعض يدوني 16 كيلوغرام تمام؟ يبقى بجيب اربعة من اللي هم 4 ووصلهم ببعض يدوني 16 التوتر المتاعنا. طيب كل الكلام اللي احنا قلنا ده بقى ده كان مجرد مقدمة للميموري تعالى بقى نخش في ايه؟ في ايه هي الميموري؟ نتكلم بقى على انواع الميموري وتقسيمة الميموري عندنا وايه الميموري اللي احنا بنستخدمها في الامبدد وايه اللي مش بنستخدمها وايه كل الكلام ده كله ده اللي هنتكلم فيه دلوقتي طيب الميموري ثلاث أنواع في عندنا الفولاتيل في عندنا النون فولاتيل وفي عندنا الهايبرد ايه بقى الفرق ما بين الفولاتيل والنون فولاتيل والهايبرد وايه هي انواع الفولاتيل وايه هي انواع النون فولاتيل وايه هي انواع الهايبرد وكل واحدة من دول بتتكون من ايه في الالكترونيكس بتتكون من ايه بالظبط ده بقى للمفروض هنعرفه ولكن هناخد بريك صغير ونرجع ان شاء الله كمان اه ربع ساعة.