Uploaded by Mohammad Bajaa

معدَّل

advertisement
‫المعهد العالي للعلوم التطبيقيَّة والتكنولوجيا‬
‫مادَّة بنيان الحواسيب‬
‫القسم النظري‬
‫للطالب‪ :‬محمد علي حسين بجعه‬
‫د‪ .‬نزار الحافظ‬
‫‪I‬‬
‫شكر‬
‫شكراً لكلِّ من ساهم معي يف إنشاءِ هذا العمل وخصوصاً ك َّلاً من مطيع برهوم وحممد عدنان قطايه لدعمهما‬
‫الدؤوب فيما أحتاجه من عونٍ ووقت‪ .‬متمنِّياً أن يكون مفيداً للطلَّاب يف السَّنوات القادمة‪.‬‬
‫وأخصُّ بالشُّكر اجلزيــل‬
‫الدكتور نزار احلافظ الذي كان مشرفاً على العمل أوالً بأوَّل يف تصحيح األخطاء وتدقيقها‪.‬‬
‫إهداء‬
‫إىل روح والدي املتوفِّي علي حممد حسني جبعه وإىل والدتي الغالية ميَّاده آصف الشويخ عسى اهلل أن يطيل يف عمرها‬
‫ال واضحاً على احملبَّة واإلخالص‪.‬‬
‫وأخي الكبري وقدوتي نواف علي حسني جبعه الذي سيبقى يل مثا ً‬
‫أمتنَّىً من كُ ِّل من استفاد من هذا الكتاب بالدَّعوة لوالدي بأن يُغفر له يف قربه وأن يُنسأ له يف أثره‪.‬‬
‫دمشق في ‪4/4/2019‬‬
‫الطالب مح َّمد علي حسين بجعه‬
‫‪I‬‬
‫محتوى الكتاب‪:‬‬
‫‪II‬‬
III
‫أوَّل محاضرة بنيان حاسوب‬
‫متدنية المستوى‪ ،‬وهي التي‬
‫لدينا تعليماتٌ بسيطة جدا ً هي كلُّها التعليمات األساسيَّة في اللغات ِّ‬
‫تعمل كل العمل (تعليمات اآللة)‪.‬‬
‫المقرر على‪:‬‬
‫سنتعرف في هذا‬
‫َّ‬
‫َّ‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫أنواع التعليمات‪ ،‬تمثيلها وأنواع العمليَّات في التعليمة الواحدة‪.‬‬
‫(أنماط العنونة‪ ،‬نسق الت َّعليمات ونماذج عنونة لعدد من المعالجات) كلها تندرج في‬
‫تصميم التعليمات لوحدة المعالجة‪.‬‬
‫ِّ‬
‫الذَّاكرة والذَّاكرة الخابية‪.‬‬
‫الذَّاكرة ال َّداخليَّة ‪( ROM,RAM‬خارج ال‪ ) CPU‬أنواعها وتنظيمها‪.‬‬
‫الذواكر الخارجية‪:‬‬
‫)‪Hard Disk, Flash Memory, RAID, CD, DVD, Tapes (Floppy Disks‬‬
‫مع تنظيمها جميعا ً وعملها‪.‬‬
‫مالحظة‪ RAID :‬هي مجموعة من األقراص يتم الوصول إليها بشكل منطقي وكأنها قرص‬
‫واحد وهي تستعمل لتوفير البيانات بشكل أمثلي ‪ redundancy‬أو تطوير األداء أو كالهما‪.‬‬
‫‪ ‬ال َّدخل والخرج ‪ I/O‬بنيتها‪ ،‬أنماطها‪ ،‬معالجة المقاطعات وأمثلة على بنيتها‪.‬‬
‫‪ ‬النفاذ المباشر إلى الذاكرة ‪ DMA‬بنيته‪ ،‬وظيفته وعمله‪.‬‬
‫مقدمة لبنيان الحاسوب وتنظيمه‪:‬‬
‫ِّ‬
‫تعريف بنيان الحاسوب (‪:)Computer Architecture‬‬
‫هو الخصائص التي لها تأثير مباشر على التنفيذ الفعلي للبرنامج‪.‬‬
‫مثالً‪:‬‬
‫‪ :Instruction Set -1‬كلما كان لها تكامل أقوى كلما كان الحاسوب أفضل‪.‬‬
‫‪ :Data Types -2‬وهي أنواع المعطيات التي يستطيع الحاسوب التعامل معها‪.‬‬
‫‪ -3‬أنماط العنونة‪ :‬مثالً العنونة المباشرة وغير المباشرة والفورية و‪...‬إلخ‬
‫‪ -4‬آليات ‪ :I/O‬عند زيادة تعقيد أنماط العنونة يربح المبرمج أن تكون العنونة أفضل ولكن‬
‫البرمجة تصبح معقَّدة أكثر‪ .‬مثال ‪ RISC‬أنماط عنونتها معقَّدة وقليلة أما ‪َّ Intel‬‬
‫فإن‬
‫أنماط عنونتها كثيرة وبسيطة‪.‬‬
‫‪1‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫تعريف تنظيم الحاسوب )‪ : (Computer Organization‬يشير إلى الوحدات العملياتيَّة‬
‫وتوصيالتها الداخلية التي تدير خصائص بنيان الجهاز‪.‬‬
‫مثال‪ :‬تفاصيل القرص الصلب غير مرئية بالنسبة للمبرمج وكذلك بالنسبة إلشارات التحكم‬
‫‪(( Control Signals‬ال يهتم المبرمج بما يحدث بإشارات التحكم))‪.‬‬
‫للفهم أكثر‪:‬‬
‫عند تصميم ع َّدة معالجات من نفس الشركة ولكن خصائصها مختلفة‪ ،‬نحن نقوم بزيادة وتحسين‬
‫تنظيم الحاسوب )‪ (Computer Organization‬مثاالً على ذلك (تسريع النفاذ إلى الذاكرة‬
‫وزيادة حجم ال‪ ) Cache‬وهذا طبعا ً ينعكس على األداء والسعر معاً‪.‬‬
‫أي بالمختصر‪:‬‬
‫*لها ذات البنيان واألداء مختلف الختالف تنظيم الحاسوب*‬
‫بنية الحاسوب وعمله‪:‬‬
‫بنيته‪ :‬هي الطريقة التي تترابط بها المكونات مع بعضها‪.‬‬
‫وظيفته‪ :‬هي كل واحدة من المكونات وماهيَّة وظيفتها بحد ذاتها‪.‬‬
‫الحظ‪:‬‬
‫‪ ..‬يوجد اختالف بين البنية والبنيان‪..‬‬
‫وظائف الحاسوب‪:‬‬
‫‪ -1‬معالجة المعطيات‪.‬‬
‫‪ -2‬تخزين المعطيات‪.‬‬
‫ونخزنها في ذاكرة‬
‫صلب‬
‫‪ -3‬نقل المعطيات‪ :‬مثالً نقوم بنقل بعض ال‪ Data‬من القرص ال َّ‬
‫ِّ‬
‫الوصول العشوائي ‪ RAM‬ونقوم بمعالجتها أو ننقل تعليمة من سجل إلى سجل‪(( .‬سترد‬
‫ِّ‬
‫السجالت بعد قليل))‬
‫‪ -4‬جهة مركزية تنظم العمل (تح ُّكم)‪.‬‬
‫‪2‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫آلية التحكُّم‬
‫مجرد ‪:High level‬‬
‫واآلن البنيان من منظور‬
‫َّ‬
‫الحظ ال يوجد وحدة تحكم في هذا المستوى‪.‬‬
‫‪3‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ :BUS‬له الكثير من األنواع والخصائص وهو عبارة عن التوصيالت الداخلية التي تربط بين‬
‫‪ CPU‬و ‪ MM‬و ‪.I/O‬‬
‫‪ ‬يوجد ‪ BUS‬خاص بين ‪ CPU‬و ‪.MM‬‬
‫‪ ‬يوجد ‪ BUS‬سريع يرى بطاقة ال َّ‬
‫شبكة والطرفيَّات األخرى‪.‬‬
‫‪BUS‬‬
‫لمن لم يعرف ما هو ال‪ BUS‬حتى اآلن إليكم هذا الشكل‪:‬‬
‫‪4‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫عمق النَّظرة حاليا ً إلى ال‪ CPU‬ومحتوياته‪:‬‬
‫ن ِّ‬
‫السجالت‪ :‬هي ذاكرة سريعة جدا ً وسعتها صغيرة ٌ جدا ً مثالً ‪.64bit‬‬
‫وحدة الحساب والمنطق ‪ :ALU‬تدير العمليات الحسابية مثل جمع األعداد الصحيحة والحقيقيَّة‬
‫وكذلك تدير العمليَّات المنطقيَّة ‪.Bitwise‬‬
‫مالحظة ‪ :-1-‬كان يوجد ما يسمى بـ ِّ ‪( Co-Processor‬معالج مساعد) وهو معالج إضافي‬
‫للحسابات الحقيقيَّة‪ ،‬أيضا ً يوجد ‪ Graphics Processor‬وهو لمعالجة الصور‪.‬‬
‫مالحظة ‪ :-2-‬عندما يكون تصميم ال‪ CPU‬جيد ما أمكن وبسيط بحيث نعيد العمليَّات مثل‬
‫سابقة (العمليات الحقيقيَّة ومعالجة الصور) إلى معالجات خاصة ونربح بهذا أن نريح‬
‫ال َّ‬
‫ال‪.CPU‬‬
‫وحدة الت َّحكم‪ :‬نتكلَّم عنها في المحاضرة القادمة‪.‬‬
‫‪5‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪6‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫وحدة الت َّحكم ‪ :Control Unit‬وهي تتألف من ثالثة أقسام كالتالي‪:‬‬
‫يعرف تتاليا ً من التعليمات الصغريَّة التي تنفَّذ في كل دورة من‬
‫‪ِّ :Sequencing logic -1‬‬
‫دورات التَّعليمة (…‪)Execute, Fetch, etc‬‬
‫صة بوحدة‬
‫‪ :Control Unit Registers and Decoders -2‬هي س َّجالت صغيرة خا َّ‬
‫التَّح ُّكم تستَعمل عند تنفيذ التَّعليمات‪.‬‬
‫مالحظة‪ :‬يجب أن نجد لهذه الت َّعليمات ‪ Sequencing logic‬لكي نعلم تسلسل التعليمات‬
‫التي يتم تنفيذها‪.‬‬
‫‪ -3‬ذاكرة التَّحكُّم ‪ :Control Memory‬تحوي برنامجا ً صغريا ً ‪ Mini-Program‬لكل‬
‫تعليمة آلة‪.‬‬
‫‪َّ ‬‬
‫إن وحدة التحكم تستعين بلغ ِّة ‪ RTL‬لتقوم بتوصيف العمل ألج ِّل كل تعليمة من الت َّعليمات‬
‫سابقة وهي تنفذ الت َّعليمات التي يجلبها ال‪ CPU‬من الذاكرة )…‪.(Hard Disk ,RAM,‬‬
‫ال َّ‬
‫وتقارنها في‬
‫خالصة‪ :‬تأتي الت َّعليمة المراد تنفيذها من ال‪ CPU‬فتأخذها وحدة التحكم‬
‫ِّ‬
‫‪ Control Memory‬مع نظيرتها وتقوم بمعالجتها على هذا األساس‪.‬‬
‫‪7‬‬
‫المحاضرة ‪-2-‬‬
‫ثاني محاضرة بنيان حاسوب‬
‫تنظيم الحاسوب ووظائفه‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫*تاريخ تطور الحاسوب‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ :1624‬آلة باسكال‬
‫‪ :1671‬آلة ليبينتز‬
‫‪ :1823‬آلة باباج‬
‫نهاية القرن التاسع عشر‪Hollerith punched cards machine :‬‬
‫‪ :1924‬والدة ‪.IBM‬‬
‫‪(Electronic Numerical Integrator and Calculator) ENIAC :1946‬‬
‫هو يعتبر أول حاسوب يعمل على الطاقة الكهربائية وبوظيفة ثابتة ومحدَّدة‪.‬‬
‫صل بالكامل بالص َّمامات الميكانيكية ‪ 18000( Vacuum Tubes‬صمام) وهو ضخم‬
‫وهو مو َّ‬
‫ج َّدا ً وزنه ‪ 30‬طن اخترعه الجيش األمريكي وكانت وظيفة هذا الحاسوب هي متابعة مسارات‬
‫القذائف ويشغل مساحة ‪ 1500‬قدم مربَّعة‪ ،‬ال توجد فيه أي دارة تكاملية باإلضافة إلى أنَّه‬
‫يستهلك طاقة كهربائية هائلة ‪ 140KW‬وهي طاقة تكفي لتخديم مبنى بالكامل‪.‬‬
‫‪ ‬يقوم بـ ِّ ‪ 5000‬عملية جمع في الثانية ولديه ‪ 20‬سجل للحسابات وكل شيء فيه يعمل‬
‫بالقواطع‪.‬‬
‫‪8‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫صورة تاريخيَّة لقسم من الحاسوب ‪ENIAC‬‬
‫مالحظة‪ :‬الص َّمام الميكانيكي هو عبارة عن أداة صعبة التعامل ح َّل محلَّها الديودات‬
‫والترانزستورات الحقاً‪.‬‬
‫*فون نويمان ووالدة مفهوم بنيان الحاسوب‪:‬‬
‫كانت فكرته أن يتم تخزين البرنامج بذاكرة بدالً عن التوصيالت بحيث ال يضطر المبرمج إلى‬
‫التغيير كل مرة في القواطع والص َّمامات لكي ينشئ برنامجا ً ما وبحيث يستطيع تخزين هذا‬
‫البرنامج في الذَّاكرة ويتم تنفيذه ضمن قواعد معيَّنة والتَّنفيذ تسلسلي لتعليمات البرنامج‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫اكتمل إنجازه عام ‪.1952‬‬
‫وض َع فون نويمان نموذجا ً‬
‫لبنيان الحاسوب العام‪.‬‬
‫ِّ‬
‫فيه وحدة الحساب والمنطق وتعمل على النظام الثنائي‪.‬‬
‫وتنفذها‪.‬‬
‫تفسر التَّعليمات من الذَّاكرة ِّ‬
‫فيه وحدة تح ُّكم ِّ‬
‫وحدات دخل وخرج يتم التح ُّكم بها عن طريق وحدة التحكم‪.‬‬
‫اآلن الحاسوب الناتج هو‪IAS (Princeton Institute for Advanced Studies) :‬‬
‫األوليَّة‪.‬‬
‫وهو يجمع جميع الخصائص ال َّ‬
‫سابقة ولكن بحالتها َّ‬
‫‪9‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫وتنفذها تباعاً‪.‬‬
‫تنفذ التَّعليمات التي تقرؤها من الذاكرة عن طريق ‪ِّ CPU‬‬
‫تذكرة‪ :‬وحدة التحكم ِّ‬
‫المكون ‪.Buffer‬‬
‫*قبل البدء بشرح بنيان ‪ IAS‬يجب أن تكون عزيزي القارئ على علم بماهيَّة‬
‫ِّ‬
‫يشكل حاجزا ً يمنع مرور الكلمات بشكل عشوائي‪ ،‬بل تمر كل‬
‫تعريف ال‪ : Buffer‬هو مكون ِّ‬
‫كلمة عليه على التسلسل تباعا ً‪.‬‬
‫صورة توضيحية لل‪ Buffer‬الذي يمرر كلمة طولها ‪ 40‬بت‬
‫‪10‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫صورة توضيحية لل‪ Buffer‬وتوصيله وطريقة نقل البيانات فيه‬
‫َّ‬
‫سابقة وهو أنَّه عند نقل‬
‫إن توضيح فكرة ال‪ Buffer‬تصبح أفضل عن طريق الصورة ال َّ‬
‫البيانات من الذاكرة إلى أحد وحدات اإلخراج مع العلم أن الذَّاكرة مش َّكلة من تسلسل من‬
‫الكلمات‪ ،‬بالتالي تذهب هذه الكلمات تباعا ً وفق تسلسل منطقي عن طريق ‪ Bus‬كما هو موضَّح‬
‫في ال َّ‬
‫شكل (األسهم الخضراء) وبوجود ال‪ Buffer‬تذهب البيانات كلمة تلو األخرى نحو وحدة‬
‫سوداء‪ .‬اآلن بفرض َّ‬
‫أن وحدة‬
‫اإلخراج وكذلك ت َّم تمثيل الكلمة المؤلَّفة من ‪ 40‬بت بالمربَّعات ال َّ‬
‫‪ I/O‬هي وحدة إدخال استنتج كيفيَّة مرور البيانات منها إلى الذَّاكرة‪.‬‬
‫ملحوظة‪َّ :‬‬
‫إن ال‪ Buffer‬الذي شرحناه آنفا ً هو ‪Memory Buffer Register‬‬
‫‪11‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫بنيان ‪:IAS‬‬
‫‪ 1000 ‬كلمة وكل كلمة تأخذ حيز ‪.40bit‬‬
‫من الممكن أن يكون في الكلمة عدد ‪ binary‬أو يكون فيها تعليمتان كل واحدة ‪ 20bit‬وفي هذه‬
‫الحالة تنفَّذ التعليمة اليساريَّة ث َّم اليمينيَّة وتكون التَّعليمة الواحدة مؤلَّفة من ‪ 8‬بتات تعبر عن‬
‫ال‪ OPCODE‬أو الرقم الذي يقابل تنفيذ تعليمة معيَّنة بين التَّعليمات المتاحة في لوحة التَّحكم‬
‫ومن ث َّم يوجد ‪ 12‬بِّت وهي لعنوان الذَّاكرة الذي سيتم تنفيذ التَّعليمة عليه‪.‬‬
‫السجالت‪:‬‬
‫مجموعة من ِّ‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫)‪ :Memory Buffer Register (MBR‬يحتوي كلمة لتخزينها في الذاكرة أو‬
‫تلقي كلمة من الذاكرة أو من‬
‫إلرسالها إلى أحد وحدات اإلخراج وكذلك هو مسؤول عن ِّ‬
‫أحد وحدات اإلدخال‪.‬‬
‫)‪ :Memory Address Register (MAR‬يأخذ عنوان الكلمة الحاليَّة الموجودة في‬
‫‪.MBR‬‬
‫)‪ :Instruction Register (IR‬يحتوي ال‪ 8‬بتات لل‪ OPCODE‬للتعليمة التي تنفَّذ في‬
‫الوقت الحالي‪.‬‬
‫)‪ :Instruction Buffer Register (IBR‬الكلمة مؤلَّفة من تعليمتين والتنفيذ يبدأ من‬
‫التعليمة اليسارية ‪ ،‬وظيفة هذا ال‪ Buffer‬هي أنَّه يحتوي التعليمتين‪.‬‬
‫عداد التعليمات )‪ :(Program Counter‬يحتوي عنوان الكلمة الالحقة المؤلَّفة من‬
‫تعليمتين ((انظر تمثيل الكلمة في الصفحة التالية)) لجلبها من الذاكرة‪.‬‬
‫ال ُمراكم (‪ &Accumulator )ACC‬باقي الضرب ‪:)MQ(Multiplier Quotient‬‬
‫يستخدمان لحفظ معامالت ونتائج وحدة الحساب والمنطق حفظا ً مؤقَّتاً‪ .‬مثالً عند ضرب‬
‫عددين على ‪ 40‬بت يكون الناتج على ‪ 80‬بت فيكون هناك ‪ 40‬بت منها في المراكم‬
‫وال‪ 40‬األخرى في سجل باقي الضرب‪.‬‬
‫‪12‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تمثيل الكلمة‪:‬‬
‫**عدد**‬
‫**تعليمتان**‬
‫مثالً كتعليمتين ‪ 01009(Hex) :‬و )‪ ، 53210(Hex‬وكعدد ‪:‬‬
‫)‪.9(Decimal‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪13‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫صلة للحاسوب ‪:IAS‬‬
‫اآلن البنية المف َّ‬
‫الحظ كيف يكون ِّاتجاه األسهم واستنتج كيف يقوم ‪ IAS‬بالتَّعامل مع تعليمة واردة من وحدة‬
‫إدخال ما ولتكن جمع عددين ووضع الناتج في الذاكرة الرئيسية أو جلب معلومات من الذاكرة‬
‫الرئيسية و إرسالها إلى وحدات اإلخراج ولتكن ال َّ‬
‫شاشة على سبيل المثال‪.‬‬
‫َّ‬
‫*عودة إلى تاريخ الحواسيب‪:‬‬
‫األولي ‪ IAS‬حتى‬
‫‪ ‬بقيت األجهزة تعمل بالص َّمامات على الرغم من ظهور النموذج َّ‬
‫األول من الحواسيب‪.‬‬
‫عام‪ 1957‬وهي ِّ‬
‫تشكل بمجملها الجيل َّ‬
‫‪ ‬الجيل الثَّاني قام باستبدال الص َّمامات بالترانزستورات وهي أصغر وأرخص وتبدد‬
‫صمامات وبقي هذا الجيل حتى عام ‪ .1964‬أحد حواسيب هذا الجيل‬
‫حرارة أقل من ال َّ‬
‫كان الحاسوب ‪ IBM7094‬كان يوجد فيه قنوات تنقل ال‪ DATA‬بحيث توجد تعليمات‬
‫خاصة للتحكم بهذه التجهيزات‪.‬‬
‫‪14‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ ‬الجيل الثالث حتى عام ‪ SSI, MSI .1971‬كانت الدارات المتكاملة في هذا الجيل في‬
‫بداياتها‪ .‬فوضع مور قانونه منذ بداية ظهور هذا الجيل وحتى يومنا هذا والذي ينص َّ‬
‫أن‬
‫عدد الترانزستورات الفعَّالة على نفس الرقاقة اإللكترونية يتضاعف كل ‪ 18‬شهراً‪.‬‬
‫‪ ‬الجيل الرابع حتى عام ‪LSI .1977‬‬
‫‪ ‬الجيل الخامس حتى عام ‪VLSI .1991‬‬
‫‪ ‬الجيل السادس حتى اآلن ‪.ULSI‬‬
‫َّ‬
‫(إن متطلَّبات التَّبريد خفت مع الترانزستورات والسبب أن طريقة استهالكها للطاقة أفضل‬
‫وتختلف باختالف الترانزستور المعتمد)‪.‬‬
‫مالحظات‪______________________________________________ :‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪15‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪:‬األربعاء‪16/1/2019‬‬
‫من أمثلة الجيل الثالث للحواسيب‪ :‬سلسلة ‪ IBM300‬ومنها‪:‬‬
‫حاسوب ‪:IBM360‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ظهر عام ‪.1964‬‬
‫غير متوافق مع ‪ IBM7000‬وظه َر بديالً عنه‪.‬‬
‫له نفس ال‪. Instruction sets‬‬
‫سرعته أكبر‪.‬‬
‫زادت عدد بوابات الدَّخل والخرج لزيادة تخديم المستخدم‪.‬‬
‫مخدمات المستخدم (شاشة‪ ،‬لوحة مفاتيح) يتم وصلها عن طريق كبل ‪( Serial‬لم يكن هناك‬
‫‪.)USB‬‬
‫‪ ‬ذاكرة أكبر‪.‬‬
‫‪ ‬كلفة أكبر‪.‬‬
‫‪.Multiplexed switch structure ‬‬
‫حاسوب ‪:DEC PDP-8‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫أيضا ً ظهر عام ‪.1964‬‬
‫أول حاسوب صغير نسبيا ً ‪.Minicomputer‬‬
‫ال يتطلب التبريد (درجة حرارة الغرفة مناسبة مثالً)‪.‬‬
‫تستطيع وضعه في زاوية من زوايا المخبر‪.‬‬
‫سعره ‪ $16000‬فقط!‬
‫دعم ميزة التطبيقات الخفيَّة وهي التي تعمل في خلفيَّة الشاشة‪.‬‬
‫فيه نظام ‪ BUS‬وهو نظام توصيل عبارة عن خطوط ‪ DATA‬وخطوط عناوين وهكذا‪.‬‬
‫‪16‬‬
‫المحاضرة ‪-2-‬‬
‫ثالث محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫سمات األجيال الالحقة (الذاكرة‪-‬المعالجات‪-‬األداء)‪:‬‬
‫‪.1‬الذاكرة‪ :‬من أنصاف النواقل ‪.Semiconductors‬‬
‫مالحظة مهمة‪ :‬خلية الذاكرة قبالً كانت ‪ Core Memory‬وهي تأخذ القيمة ‪ 0‬أو ‪ 1‬عبر‬
‫المغنطة‪.‬‬
‫المصممون قادرينَ على وضعِّ ‪ 256‬بت‬
‫‪ ‬عندما ظهرت ال‪ Semiconductors‬أصب َح‬
‫ِّ‬
‫من الذاكرة الجديدة محل بت واحدد فقط من الذاكرة ‪.Core‬‬
‫بالتالي وحسب قانون مور بدأت الذواكر بالتضخم شيئا ً فشيئاً‪:‬‬
‫… >‪1K -> 4K -> 16K -> …. -> 1G -> … -> 16G -‬‬
‫‪.2‬المعالجات‪ :‬ظهرت أجيال متالحقة من المعالجات‪.‬‬
‫ب ‪ 8bits‬وهو معالج صغري‬
‫أول معالج أنتجته ‪ Intel‬في عام ‪ 1974‬هو المعالج ‪ِّ 8080‬‬
‫ب‪ 8bits‬هنا هو أنَّه‬
‫ش َّكل نقلةً نوعية ألنه صغير ويستطيع القيام بأعمال فعَّالة‪ ،‬والمقصود ِّ‬
‫يعمل على قناة ‪ BUS‬مؤلَّفة من بايت واحد يقوم فيها بعمليات التخزين والقراءة واإلضافة‪.‬‬
‫بعدها بأواخر السبعينات ظهر ‪ 8086‬وهو يعمل على قناة من ‪ 16‬بت‪.‬‬
‫بعدها عام ‪ 1981‬ظهر ‪ 80386‬وهو بقناة ‪ 32‬بت وكذلك أصبح يقوم بعمل متعدد المهام فكان‬
‫من طالئع المعالجات التي دعمت ميزة المقاطعات والتي فعَّلت بدورها الـ‪. Multitasking‬‬
‫ميزة ال‪ Multitasking‬تقتصر على أنَّه عند إنجاز عمل طويل وقيام المستخدم بطلب عملية‬
‫سهلة يتم تنفيذ العميلة السهلة ثم إكمال العمل الطويل وهذا يزيد من إرضاء المستخدم‪.‬‬
‫‪17‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫تغذية راجعة عن المعالجات قبالً‪:‬‬
‫‪:8086‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫سعة قناة نقل المعطيات ‪ 16‬بت‪.‬‬
‫أقوى من ‪.8080‬‬
‫يسترجع بعض التعليمات بسرعة‪.‬‬
‫يوجد ‪ Cache‬فيها تعليمات أيضا ً لتسريع األداء‪.‬‬
‫‪ :8088‬نفس ‪ 8086‬ولكن يزيد عنه بـ ِّ ‪ BUS‬خارجي‪.‬‬
‫‪ :80286‬فيه ‪ 134000‬ترانزستور و‪ 16MB‬معنونة بحيث يمكن الوصول إلى أي مكان فيها‪.‬‬
‫بعده أتى ‪ 80386‬الذي يدعم الـ‪ Multitasking‬ثم ظهر ‪ 80486‬الذي يحوي ‪ 1.4‬مليون‬
‫ترانزستور‪ ،‬كانت ال‪ Cache‬فيه أقوى وأصبح هناك ‪ Pipelining‬أو ما يسمى بخطوط‬
‫اإلنتاج ووضع مع هذا المعالج ‪ Co-Processor‬يهتم بالعمليات المعقدة على األعداد الحقيقية‪.‬‬
‫شرح ‪** :Pipelining‬يشترط لهذه الخاصة أن يكون هناك ‪ Buffers‬شواغر في المعالج**‬
‫عندما يقوم الـ‪ Buffer‬بجلب تعليمة ما من الذاكرة يصبح شاغرا ً لكي يقوم بعمل ‪Fetch‬‬
‫للتعليمة التي تليها وبالتالي في المرحلة التي يقوم بها المعالج بعمل ‪ Decode‬للتعليمة األولى‬
‫جلب التعليمة الثانية وكذلك األمر في التعليمات الالحقة بحيث تكون هناك تعليمة‬
‫فإنه يكون قد‬
‫َ‬
‫قيد التنفيذ وتعليمة بعدها تتم ترجمتها وكذلك تعليمة بعد التي تتم ترجمتها تكون قيد اإلحضار‬
‫سابق واستنتج عمل ‪*Pipelining‬‬
‫الرسم ال َّ‬
‫*انظر َّ‬
‫‪18‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪:Pentium‬‬
‫‪ ‬يحوي ‪ 3.1‬مليون ترانزستور‪.‬‬
‫‪.Superscalar or Multiple pipelining ‬‬
‫لم يعد هناك الحاجة لعمل ‪ pipelining‬منفرد فحسب بل أصبحت تتضمن عدة ‪Pipelining‬‬
‫تعمل على التوازي بالكامل‪(( .‬خطوط إنتاج متعددة لمهام مختلفة مستقلة متعدِّدة))‪.‬‬
‫‪:Pentium-Pro‬‬
‫‪ Superscalar ‬متزايد‪.‬‬
‫‪ ‬التنفيذ والتنبؤ التفرعي‪ :‬يكون ال‪ CPU‬ينفذ التعليمات بشكل متسلسل ثم يصادف تعليمة‬
‫تجعله يقفز إلى مكان آخر في التعليمات فيضع ‪ pipeline‬لكتلة تعليمات أو أكثر بعدد‬
‫مرات القفز ثم بعد االنتهاء وحفظ الناتج في الذاكرة يرجع ال‪ CPU‬إلى التعليمة التي بدأ‬
‫منها ويعود إلى تنفيذ التعليمات بشكل متسلسل‪.‬‬
‫‪19‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ ‬تحليل تدفق البيانات‪ :‬يتأكد ال‪ Compiler‬من أن التعليمات مرتبطة ببعضها أم ال‪.‬‬
‫مثالً ال‪ Compiler‬يرى التعليمتين‪:‬‬
‫‪C=A+B‬‬
‫‪K = C +1‬‬
‫هو يرى َّ‬
‫أن ‪ C‬التي في التعليمة الثانية يجب أن يتم حسابها في التعليمة األولى فينفذ التعليمتين‬
‫على التسلسل‪.‬‬
‫ولو كانت التعليمتان على الشكل التالي‪:‬‬
‫‪K=C*M‬‬
‫‪F=A+B‬‬
‫ال‪ Compiler‬تأكد أن ال دخل لهما ببعض فينفذهما على التوازي عن طريق خ َّ‬
‫َطي إنتاج‪.‬‬
‫‪ Speculative Execution ‬التنفيذ التأملي‪ :‬هو تنفيذ عدة تعليمات إلى األمام وهذا ما‬
‫يجعل المعالج في حالة عمل دائم‪.‬‬
‫**كل ما سبق يجعل ال‪ CPU‬يعمل بأقصى طاقته**‬
‫‪:Pentium II‬‬
‫‪ ‬فيه ‪ 7.5‬مليون ترانزستور‪.‬‬
‫‪ ‬لديه تكنولوجيا معالجة الصور والفيديو والصوت وهذا بفضل تكنولوجيا ‪.MMX‬‬
‫‪:Pentium III‬‬
‫‪ ‬فيه ‪ 9.5‬مليون ترانزستور‪.‬‬
‫‪ ‬تعليمات نقطة عائمة إضافية لمعالجة ال ‪3D-Graphics‬‬
‫‪:Pentium 4‬‬
‫‪ ‬فيه ‪ 42‬مليون ترانزستور‪.‬‬
‫‪ ‬تعليمات النقطة العائمة أقوى وتحسينات على الملتيميديا‪.‬‬
‫يشكل المعالج‪.‬‬
‫بعد هذا أصبحنا نضع ال‪ Cores‬وهي لها ذات البنيان اجتماعها على التوازي ِّ‬
‫‪20‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪.3‬األداء‪ :‬الفضل األكبر لزيادة األداء‪:‬‬
‫& ‪Branch prediction & pipelining‬‬
‫‪Data Flow Analysis & Speculative Execution‬‬
‫مسرعات األداء بحيث يكون السعر أقل‪.‬‬
‫يمكن تخفيف التَّصميم واستبعاد أحد ِّ‬
‫الشكل القادم يبين تأثير كل واحد مما سبق آنفا ً في تطور أداء المعالجات‪.‬‬
‫مالحظات على الدَّرس إن وجدت‪:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪21‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫األول*****‬
‫*****نهاية ال َّدرس َّ‬
‫‪22‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫***بداية ال َّدرس الثَّاني***‬
‫كيف يفهم الحاسوب ما نكتبه من تعليمات في لغة ‪ C++‬مثالً ؟‬
‫َّ‬
‫إن لغة ‪ C++‬هي لغة عالية المستوى تتم ترجمتها إلى لغة أبسط تسمى بـ ِّ ‪ Assembly‬ومنها‬
‫تفسر‬
‫عن طريق ‪ Assembler‬يتم تحويل لغة ال‪ Assembly‬إلى لغة اآللة وكذلك بدورها ِّ‬
‫اآللة ذلك على شكل أصفار وواحدات‪.‬‬
‫يوضح ال َّ‬
‫شكل التالي ذلك‪:‬‬
‫شرح آخر مستطيل‪ :‬طبعا ً تأتي إشارات التحكم على شكل سلسلة من األصفار والواحدات إلى‬
‫معرفة بأوتومات منتهي حتمي فإنَّها تقوم بتنفيذ العمل والوصول إلى ما يطلب‬
‫اآللة وبما أنَّها َّ‬
‫منها بالوصول إلى حالة نهائية وإرجاع المطلوب وتتكرر العملية‪...‬‬
‫مالحظة‪ :‬هناك ‪ one-to-one mapping‬بين كود اآللة وكود ال‪ Assembly‬ومعنى هذا هو‬
‫َّ‬
‫أن العملية الواحدة على لغة عالية المستوى ممكن أن تتضاعف باستخدام ‪.Assembly‬‬
‫مثالً‪:‬‬
‫‪High Level Language: C = A + B‬‬
‫‪Assembly: ADD C, A, B‬‬
‫‪23‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدرس الثَّاني‬
‫تاريخ‪:‬الثالثاء‪22/1/2019‬‬
‫تذكرة‪ :‬المسؤول عن تنفيذ التَّعليمات في الحاسوب هو ال ‪.CPU‬‬
‫‪ ‬هناك تعليمات قصيرة تأخذ حيز كلمة واحدة فقط‪.‬‬
‫‪ ‬هناك تعليمات طويلة ممكن أن تأخذ حيز أكثر من كلمة وهي حسب التعليمة‪.‬‬
‫كيفية تنفيذ التعليمة الواحدة‪:‬‬
‫لتكن لدينا التعليمة ‪ADD A,B‬‬
‫‪ -1‬يقوم ال‪ CPU‬بجلب التعليمة من الذاكرة ‪.Fetch instruction‬‬
‫‪ -2‬يقوم ال‪ CPU‬بعمل ‪ Decode‬للتعليمة لكي يعلم ماهيَّتها‪ ،‬بشكل أوضح َّ‬
‫فإن ال‪CPU‬‬
‫يقوم بمعرفة ال‪ opcode‬للتعليمة وبالتالي يعلم ماذا تفعل هذه التعليمة(في مثالنا‬
‫يعلم أنَّها تعليمة جمع)‪.‬‬
‫‪ -3‬يقوم ال‪ CPU‬بجلب ال‪ operands‬من الذاكرة‪( .‬يجلب كل من ‪ A‬و ‪ B‬من‬
‫الذاكرة)‪.‬‬
‫‪ -4‬معالجة المعطيات وتنفيذ التعليمة‪.‬‬
‫‪ -5‬إظهار النتائج‪.‬‬
‫مالحظة‪ :‬يجب تحليل التعليمة لنعلم عدد ال‪ operands‬فيها أو ربما ال تستدعي التعليمة أي‬
‫‪ operand‬وتكون التعليمة في هذه الحالة هي عبارة عن تعليمة معالجة فقط‪.‬‬
‫بفرض َّ‬
‫أن لدينا التعليمة التالية ‪ C: =A+B‬المكتوبة بلغة عالية المستوى وهي عملية معقدة‬
‫بثالث معامالت بحيث تتنفذ بضربة واحدة ومكافؤها في لغة ‪ Assembly‬المتوسطة هي‪:‬‬
‫‪Load A, R1‬‬
‫‪Load B, R2‬‬
‫‪ADD R1, R2‬‬
‫‪Store R1, C‬‬
‫‪24‬‬
‫المحاضرة ‪-2-‬‬
‫رابع محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫دورة التعليمة ‪:‬‬
‫‪ :HALT‬هي تعليمة النهاية للتعليمات التي ينفذها ال‪ CPU‬لبرنامج موجود في الذاكرة‪.‬‬
‫ففي الشكل التالي لنفرض أن هذه التعليمات المتتالية هي تعليماتٌ لبرنامج ما ‪:‬‬
‫تمثل التعليمة النهائية ال‪ HALT‬الذي تحدثنا عنه وهي تكافئ تعليمة ‪ return‬في التابع‬
‫)(‪ Main‬في لغة البرمجة ‪.C++‬‬
‫تذكرة ببعض السجالت‪:‬‬
‫)‪ :IR(Insruction Register‬يحوي التعليمة الحالية التي قمنا بعمل ‪ Fetch‬لها ونريد عمل‬
‫‪ Decode‬لها كذلك‪.‬‬
‫‪ :I/O Address Register‬يستخدم لتخزين عنوان بوابة (دخل\خرج) ‪،‬مثالً لوحة المفاتيح‪.‬‬
‫‪ :I/O Buffer Register‬يستخدم للحصول على محرف من بوابة (الدخل\ الخرج)‪.‬‬
‫‪25‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال على تنفيذ التعليمات لبرنامج (‪:)Program Execution‬‬
‫البرنامج مكون من ثالث تعليمات وهي تعليمة للقراءة وتعليمة للتخزين وتعليمة للجمع‪.‬‬
‫معرف الوصول لها‪.‬‬
‫يجب تحديد ‪ opcode‬لكل تعليمة بحيث يكون هو ِّ‬
‫‪Instruction’s work‬‬
‫‪LOAD‬‬
‫‪STORE‬‬
‫‪ADD TO ACCUMULATOR‬‬
‫‪OPCODE‬‬
‫‪0001‬‬
‫‪0010‬‬
‫‪0101‬‬
‫مالحظة‪ :‬يكون اختيار البتات خاصا ً بالمعالج والقصد هنا هو الحد بين حيز البتَّات الخاص‬
‫بالـ‪ OPCODE‬وحيز البتات الخاص بالـ‪.ADDRESS‬‬
‫اآلن انظر إلى الشكل‪:‬‬
‫‪26‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫الحظ أنه في الخطوة األولى كان ال ‪ PC‬عند ال ‪ 300‬أي أنَّه جلب التعليمة في العنوان ‪300‬‬
‫من الذاكرة ووضعها في ‪.IR‬‬
‫في الخطوات الثانية والثالثة والرابعة قام ال‪ CPU‬بتحميل التعليمة في ‪ IR‬والغرض هنا هو‬
‫جمع العددين الموجودين في الموقعين ‪ 940‬و‪ 941‬كما هو مبين في الصورة‪.‬‬
‫في الخطوتين األخيرتين تم تخزين الناتج كما هو متوقع في الموقع ‪.941‬‬
‫مالحظة‪ :‬ال يمكن للـ‪ CPU‬تنفيذ التعليمة وهي في الذاكرة بل يقوم أوالً بجلبها من الذاكرة ثم‬
‫يزيد العداد ويتم تنفيذ التعليمة **استعن بالشكل لمالحظة ذلك**‪.‬‬
‫المقاطعات ‪Interruptions‬‬
‫المقاطعة بشكل عام هي الحدث الذي يتم إنشاؤه عن طريق أحد أجهزة الطرفيَّات لكي يعلم‬
‫الـ‪ CPU‬بأنَّه قام بإنهاء العمل الموكل إليه وهذه المقاطعة يجب أن تنَفَّذ عندما ينهي الـ‪CPU‬‬
‫دورة التعليمة الكاملة‪.‬‬
‫‪ ‬من الممكن أن يقوم ال‪ CPU‬بعمل إخفاء (‪ )Mask‬للمقاطعة حتى ينهي دورة التعليمة‬
‫ومن ثم ينفذ العمل الذي تطلبه المقاطعة‪.‬‬
‫تعريف المقاطعة‪ :‬هي تخديم لمكان آخر بحيث يتوقف التنفيذ الحالي وهذا ينعكس على دورة‬
‫التعليمة‪.‬‬
‫‪27‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫هنا نالحظ التغيير في مخطط دورة التعليمة بحيث أصبح الـ‪ CPU‬يتأكد بعد تنفيذ كل تعليمة ما‬
‫إذا كان لديه أي مقاطعات لكي يقوم بتخديمها وهذا ما يفسر عدم استجابة ‪ CPU‬في بعض‬
‫األحيان ألنه لم ين ِّه التعليمة التي هو فيها وبالتالي لم يصل إلى فحص ما إذا كان هناك‬
‫مقاطعات أم ال‪.‬‬
‫البنية الداخلية للـ‪: CPU‬‬
‫مالحظة‪ :‬إن األسهم التي تنزل إلى أسفل الصورة تذهب إلى الذواكر بأنواعها‪.‬‬
‫الحظ وجود ال‪ BUS‬الداخلي الذي يشكل صلة الوصل بين مكونات وحدة التحكم و الطرفيات‬
‫األخرى‪.‬‬
‫لنحاول الفهم أكثر عن طريق مثال ‪ ،‬بفرض أن ال‪ CPU‬مشغول بعملية نسخ ملفات من مكان‬
‫آلخر على القرص الصلب وأتت مقاطعة من أحد وحدات اإلدخال (لوحة المفاتيح) لكي يجمع‬
‫ال‪ CPU‬عددين يحدد قيمتهما المستخدم‪ ،‬طبعا ً نحن نعلم أن مصدر المقاطعة هو لوحة المفاتيح‬
‫سيتقبَّل ال‪ CPU‬المقاطعة ومن ثم ستكمل رحلتها قصيرة األمد‪ ،‬ستصل إلى ال‪ BUS‬الداخلي‬
‫ومنه إلى وحدة المعالجة والمنطق‪ .‬بعد ذلك وبعد الحصول على النتيجة ستضع ‪ ALU‬النتيجة‬
‫على ال‪ BUS‬من جديد ومن ث َ َّم سيتم كتابة هذه النتيجة على الذاكرة أو إظهارها على أحد‬
‫وحدات اإلخراج‪.‬‬
‫‪28‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪ ‬بعد وجود ال‪ Cache‬أصبح طلب التعليمات وتحصيل النتائج اللحظيَّة أسرع بكثير ألنَّه‬
‫بتخزين التعليمات والمعطيات فيها ف َّ‬
‫إن ال‪ CPU‬يختصر الكثير من الوقت والجهد وذلك‬
‫الختالف بنية ال‪ Cache‬كونها ذاكرة ساكنة وكذلك ألنها صغيرة الحجم ما يس ِّهل‬
‫البحث فيها والكتابة والقراءة وكذلك ألنها أقرب ما يكون إلى ‪.CPU‬‬
‫‪ ‬هناك سجالت في وحدة التح ُّكم مختلفة عن ‪َ R1‬و ‪ R2‬وربما نستطيع الوصول إليها‬
‫وربما ال وذلك يعتمد على المعالج بحد ذاته‪.‬‬
‫َّ‬
‫‪َّ ‬‬
‫سجالن قابالن للتغير من قبل المبرمج وهما‬
‫جلين ‪ R1‬و ‪ R2‬هما‬
‫الس ِّ‬
‫إن كل من ِّ‬
‫موجودان لتسهيل عمل المبرمج‪.‬‬
‫صة ‪:FLAGS‬‬
‫تعريف مؤشرات األحداث الخا َّ‬
‫ٌ‬
‫خاص ما‪.‬‬
‫حدث‬
‫هي مؤشرات تع ِّلم ال‪ CPU‬ما إذا طرأ‬
‫ٌّ‬
‫‪29‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال‪:‬‬
‫لنقل أننا أردنا جمع عددين على ‪ 2‬بايت أي ‪ِّ 16‬بت بالتالي لدينا ِّبت لإلشارة و‪ 15‬بت للعدد‬
‫وليكن لدينا العددان‬
‫‪A = 0100000000000000‬‬
‫‪B = 0100000000000000‬‬
‫من الواضح أن نتيجة الجمع موجودة ومعروفة بالنسبة للقارئ ولكنَّها غير موجودة بالنسبة‬
‫للمعالج لذلك سيتم رفع ‪ Carry Flag‬الذي سيقوم بإعالم ال‪َّ CPU‬‬
‫بأن هناك زيادة حصلت في‬
‫عملية الجمع‪.‬‬
‫تغذية راجعة‪:‬‬
‫بفرض لدينا ‪ BUS‬عرض خط المعطيات فيه هو ‪ 8‬بايت ( ‪ 64‬بت )أي أنَّه يستطيع طلب ‪8‬‬
‫بايت بكل نبضة ساعة للـ‪ ،CPU‬ولدينا ساعة ال‪ CPU‬تعمل على ‪ 66( 66MHz‬مليون نبضة‬
‫في الثانية الواحدة)‪.‬‬
‫إذا ً َّ‬
‫فإن ال‪ BUS‬يسمح بنقل ‪ 528‬ميغا بايت بالثانية الواحد (كحد أقصى) ‪.‬‬
‫ويساوي ‪ 4.224‬غيغا بت بالثانية‪.‬‬
‫‪30‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫نتعرف معا ً على بعض األشياء األساسية‪:‬‬
‫قبل البدء في المفهوم القادم يجب أن‬
‫َّ‬
‫‪َّ ‬‬
‫إن ال‪ Operand‬يتمثَّل بكلمة بالذاكرة أو مجموعة من الكلمات(‪ )Block‬وكذلك يمكن‬
‫أن يكون عدد حقيقي أو ما إلى ذلك وهو يختلف اختالفا ً كليَّا ً عن ال‪.Operator‬‬
‫فالـ‪ Operator‬هو معامل للجمع أو الطرح أو & أو‪ ...‬إلخ‪.‬‬
‫‪َّ ‬‬
‫إن مفهوم كتابة العبارات الرياضية بلغة الحاسوب هو أمر معقَّد قام بحله أوائل‬
‫المخترعين وهو يقوم على تحويل شكل العبارة الرياضية إلى شكل أسهل من حيث‬
‫التعامل لذلك لدينا ثالثة أشكال )‪.(Infix,Prefix,Postfix‬‬
‫لتكن لدينا العبارة الرياضية‪:‬‬
‫‪C=A+B‬‬
‫َّ‬
‫إن تفسير العبارة الرياضيَّة على الطرف اليميني من تعليمة اإلسناد يقع على عاتق أحد‬
‫األساليب الثالثة المذكورة‪.‬‬
‫‪Prefix (Operator First): +AB‬‬
‫‪Infix: A+B‬‬
‫‪Postfix (Operator Last): AB+‬‬
‫سنشرح طريقة ال‪ prefix‬فقط وسنترك للقارئ االستنارة بمعرفة كل من ‪ Infix‬و ‪.Postfix‬‬
‫في حالة ‪ Prefix‬سيتم التعزيز بالرسم لتوضيح األمر باستعمال المكدس‪.‬‬
‫ت المعادلة بعد‪.‬‬
‫هنا لم يحدث أي شيء ولم تأ ِّ‬
‫‪31‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫توضع العملية على ال‪ Stack‬أيضا ً وال توضع بسجل منفصل‬
‫أن العالقة أو المعادلة معقدة ج َّدا ً وبالتالي َّ‬
‫والسبب أنه بفرض َّ‬
‫فإن السجالت ال تكفي لتخزين‬
‫العمليات والمكدس هو الخيار األفضل‪.‬‬
‫اآلن أصبحت عملية الجمع جاهزة لإلتمام‪.‬‬
‫يقوم اآلن ال‪ CPU‬بعمل ‪ pop‬لكل من المعاملين ويضع ناتج الجمع في ال‪.Accumulator‬‬
‫‪:Stack Pointer‬‬
‫يفيد في الكثير من التطبيقات كالعوديَّة والتوابع وغيرها‪ ،‬باختصار عند حاجتنا للقفز من محل‬
‫من الرماز المصدري(الكود) إلى مكان آخر فإننا حتما ً سنحتاج إلى ‪.Stack Pointer‬‬
‫‪32‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدرس الثَّاني‬
‫تاريخ‪:‬األربعاء‪23/1/2019‬‬
‫نموذج عمل الـ‪:CPU‬‬
‫لنتكلم عن األسهم الداخلة إلى الـ‪:CPU‬‬
‫‪ :Instructions‬وهي التعليمات التي قام الـ‪ CPU‬بعمل ‪ Fetch‬لها‪.‬‬
‫‪ :Data‬وهي عندما يقوم بجلب الـ‪.Operands‬‬
‫‪ :Interrupt Signals‬وهي ليعلم الـ‪ CPU‬ما إذا كان هنالك مقاطعة من أحد الطرفيَّات‪.‬‬
‫واألسهم الخارجة هي عبارة عن عناوين لكي يعلم الـ‪ CPU‬موقع ال‪Operands‬ـ ويقوم‬
‫بإرسال ال‪ Data‬إليه وكذلك إشارات تحكم‪.‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪33‬‬
‫المحاضرة ‪-2-‬‬
‫خامس محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الذاكرة ‪:Memory‬‬
‫باختصار تشكل الذاكرة مصفوفة من الكلمات حجمها ‪ N‬كلمة نقرأ منها ونكتب فيها ونعطيها‬
‫عناوين لتعطينا ‪ DATA‬ونخزن فيها ‪.DATA‬‬
‫أحد طرفيات اإلدخال أو اإلخراج ‪:I/O Module‬‬
‫تختلف عنونة ‪ I/O‬عن عنونة الذاكرة إلزالة الغموض بحيث يكون مجال العناوين مختلفا ً‬
‫بينهما‪.‬‬
‫‪34‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫يمكن أن يكون هناك تفاعل مباشر بين ‪ CPU‬و ‪ I/O‬وكذلك األمر بين ‪ CPU‬والذَّاكرة‪.‬‬
‫شكل توصيل ال‪:BUS‬‬
‫مبدأ الخط المباشر‪ :‬يكون هناك محاولة كتابة على الخط المطلوب بالتالي يعطي ال‪CPU‬‬
‫خطأً(‪ )Error‬حتى ينهي الذي يحاول الكتابة عملَه‪.‬‬
‫سابق وبالتالي ال يستطيع أن يشغل خط‬
‫صل على المبدأ ال َّ‬
‫مشاكل هذا التوصيل أنَّه مو َّ‬
‫المعطيات أو العناوين أو التح ُّكم إال جهاز واحد على األكثر وهذا ما تم تالفيه كما سنرى اآلن‪.‬‬
‫اآلن نموذج لحاسوب حديث مع ‪: PCI-BUS‬‬
‫‪35‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫يتألَّف هذا النموذج بشكل رئيسي من األنواع التالية من خطوط النَّقل (‪:)BUS‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪‬‬
‫‪‬‬
‫‪ :System Bus‬هو ‪ BUS‬خاص بالنِّظام وأوامره‪.‬‬
‫‪ :Local Bus‬خاص ليبحث عن المعلومة في ‪ Cache‬وإذا لم يجدها يذهب نحو الذاكرة‬
‫ليبحث فيها‪.‬‬
‫‪ :High Speed Bus‬هو خط نقل سريع توضع عليه بعض الطرفيات المهمة‪.‬‬
‫‪ :Expansion Bus‬هو أبطأ خط نقل توضع عليه الزيادات البطيئة نسبيا ً لذلك تَّدفُّق‬
‫المعطيات على هذا الخط قليل‪.‬‬
‫الحظ هنا ما يس َّمى بـ ِّ ‪ Local Bus‬وهو خاص ليبحث عن المعلومة في ‪ Cache‬وإذا لم‬
‫يجدها يذهب نحو الذاكرة‪.‬‬
‫تشكل‬
‫األول والثاني وكذلك الثَّاني والثَّالث وهي ِّ‬
‫الحظ أيضا ً نقاط اتِّصال المستويين َّ‬
‫الجسور بين هذه المناطق‪.‬‬
‫نستطيع أن نقول َّ‬
‫أن مكونات الحاسوب تربط فيما بينها مجموعة من ‪ BUSES‬وال ترتبط‬
‫بمسرى وحيد فقط‬
‫أداء ال‪: )CPU Performance( CPU‬‬
‫نبدأ بتعريف مقادير مه َّمة ‪:‬‬
‫‪ :CPI‬هو العدد الوسطي لنبضات الساعة في التعليمة الواحدة‪.‬‬
‫بفرض َّ‬
‫أن لدينا البرنامج التَّالي‪:‬‬
‫‪LOAD A, R1‬‬
‫‪STORE B, R2‬‬
‫‪ADD R1, R2‬‬
‫َّ‬
‫إن كالً من تعليمتي التخزين والقراءة تأخذان دورتي تعليمات تقريبا ً ومثاالً على طريقة‬
‫الحساب َّ‬
‫فإن تعليمة القراءة ‪ LOAD‬تستهلك أول دورة لتجلب ‪ A‬من الذَّاكرة وتستهلك ثاني‬
‫دورة لكي تخزن قيمة ‪ A‬في الذاكرة‪ ،‬وتعليمة ‪ ADD‬تستهلك دورة واحدة وبالتالي أصبح‬
‫مجموع الدورات في البرنامج السابق هو ‪ 5‬واآلن لنحسب ‪:CPI‬‬
‫‪5‬‬
‫‪= 1.667‬‬
‫‪3‬‬
‫‪36‬‬
‫= ‪CPI‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫بما َّ‬
‫أن ‪ CPI‬يمثِّل العدد الوسطي لنبضات الساعة ولدينا عدد التعليمات فيكفي أن نعلم ما هو‬
‫الزمن المستغرق من قبل الحاسوب للدورة الواحدة لنعلم المقدار َّ‬
‫َّ‬
‫الزمني لتنفيذ البرنامج‪.‬‬
‫)‪CPU Time = (N) * (CPI) * (The time consumed for a single instruction‬‬
‫حيث َّ‬
‫أن ‪ N‬هو عدد التَّعليمات في البرنامج‪.‬‬
‫كذلك نستطيع تفريق التَّعليمات وزمن وعدد كل منها فيكون‪:‬‬
‫‪n‬‬
‫‪CPI = ∑ CPI i . Ii‬‬
‫‪i=1‬‬
‫وحدات قياس أداء ال‪:CPU‬‬
‫‪Clock rate‬‬
‫‪CPI ∗106‬‬
‫=‬
‫عدد التعليمات‬
‫‪∗106‬زمن التنفيذ‬
‫= ‪MIPS‬‬
‫صحيحة‪.‬‬
‫وهذا مؤشر إذا كان المبرمج يتعامل مع األعداد ال َّ‬
‫‪ ‬دوما ً معالجات ‪ Intel‬تأخذ أكثر من دورة واحدة‪.‬‬
‫‪ ‬هناك حسابات حقيقية تأخذ عدد تعليمات كبير جدا ً مثل حساب )…‪.(Tan, Sin,‬‬
‫عدد عمليات النقطة العائمة التي تنفَّذ‬
‫‪∗106‬زمن التنفيذ‬
‫‪∑ni=1 Execution Timei‬‬
‫‪37‬‬
‫‪1‬‬
‫‪n‬‬
‫= ‪MFLOPS‬‬
‫= ‪Arithmetic Mean‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال‪:‬‬
‫ليكن لدينا برنام ٌج نت َج عنه ‪ 2‬مليون تعليمة على ساعة تردُّدها ‪.400MHz‬‬
‫استعن بالجدول وأوجد كالً من ‪ CPI‬و ‪.MIPS‬‬
‫‪Instruction Mix‬‬
‫‪60%‬‬
‫‪18%‬‬
‫‪CPI‬‬
‫‪1‬‬
‫‪2‬‬
‫‪12%‬‬
‫‪10%‬‬
‫‪4‬‬
‫‪8‬‬
‫‪1‬‬
‫‪400∗106‬‬
‫نمط التعليمة‬
‫حساب ومنطق‬
‫تخزين\قراءة من ال ‪Cache‬‬
‫إذا ت َّم إيجاد المطلوب فيها‬
‫‪Branch‬‬
‫ذهب إلى ال‪ Cache‬ولم يجد‬
‫َ‬
‫ضالته فيها وأكمل إلى‬
‫الذاكرة‬
‫= ‪1 Cycle‬‬
‫‪CPI = 0.6*1 + 0.18*2+0.12*4+0.1*8 = 2.24‬‬
‫‪= 178.57‬‬
‫‪400∗106‬‬
‫‪2.24∗106‬‬
‫=‬
‫‪Clock rate‬‬
‫‪CPI ∗106‬‬
‫= ‪MIPS‬‬
‫فكرة عن الـ‪ :Benchmarks‬هي برمجيات مكتوبة بلغة عالية المستوى تم تصميمها الختبار‬
‫األداء وهي محمولة يمكن وضعها على ذاكرة متوسطة السعة وهي تختلف تبعا ً للمواصفات‬
‫واإلصدارات‪.‬‬
‫مالحظات على الدَّرس إن وجدت‪:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪38‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫*****نهاية ال َّدرس الثَّاني*****‬
‫‪39‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫***بداية ال َّدرس الثَّالث***‬
‫لقد تطرقنا في الدروس الماضية إلى بنيان الحاسوب وتنظيمه والمقاطعات داخله وكيفية تطوره‬
‫على مدى السنين المنصرمة ‪ ،‬اآلن سنتعلم كيفية تصميم تعليمات المعالج‪:‬‬
‫تعليمة اآللة‪:‬‬
‫تعلمنا في الدرس الماضي َّ‬
‫أن تعليمة اآللة تحجز عددا ً من البِّتات ولها ‪ OPCODE‬وكذلك لها‬
‫لنتعرف عليها بتفصيل أكثر‪:‬‬
‫عنوان‪ ،‬اآلن‬
‫َّ‬
‫عناصر تعليمة اآللة‪:‬‬
‫‪( OPCODE -1‬ضروري)‬
‫‪ -2‬معامل مصدر (‪( )Source Operand‬غير ضروري)‬
‫‪ -3‬معامل نتيجة (‪( )Result Operand‬غير ضروري)‬
‫‪ -4‬عنوان التَّعليمة التَّالية (للقفز بين التَّعليمات) (غير ضروري)‬
‫خاص بها فقط‪.‬‬
‫كل تعليمة فريدة ‪-‬في الكود البرمجي آللة معينة‪ -‬لها ‪OPCODE‬‬
‫ٌّ‬
‫مثال على شكل التَّعليمة العام‪:‬‬
‫يجب تعريف تعليمات كل تعليمة منها لها ‪ OPCODE‬خاص بها‪ ،‬مثالً‪:‬‬
‫‪40‬‬
‫المحاضرة ‪-2-‬‬
‫سادس محاضرة بنيان حاسوب‬
‫الدرس الثَّالث‬
‫تاريخ‪:‬الثالثاء ‪29/1/2019‬‬
‫كذلك يحب حجز مكان ِّللمعامل المصدر وكذلك حجز مكان ِّللمعامل النتيجة‪.‬‬
‫أنواع التَّعليمات‪( :‬تختلف بحسب تعاملها مع المعطيات)‬
‫‪ -1‬تعليمات تقوم بمعالجة المعطيات‪.‬‬
‫‪ -2‬تعليمات تقوم بتخزين المعطيات‪.‬‬
‫‪ -3‬تعليمات تقوم بنقل البيانات إلى وحدات الدخل أو وحدات الخرج‪.‬‬
‫‪ -4‬تعليمات القفز (‪)test & Branch: Low-level‬‬
‫مالحظة‪ :‬من الممكن أن يكون هناك تعليمات خاصة بالمبرمج يضيفها هو لتحسين أداء‬
‫برامجه‪.‬‬
‫متغير حسب التعليمة والتَّعامل‪ .‬وكل ‪ Operand‬إما أن يكون‬
‫عدد العناوين لل‪operands‬‬
‫ِّ‬
‫دخالً للتعليمة أو أن يكون خرجا ً لها‪.‬‬
‫مثالً لتكن لدينا التعليمة‪:‬‬
‫‪ADD A, B‬‬
‫يفسر ما هو الدخل في هذه التَّعليمة وما هو الخرج‪.‬‬
‫‪ -1‬المصمم يجب أن ِّ‬
‫‪ -2‬يشترط الوضوح في تفسير التَّعليمة‪.‬‬
‫‪ ‬التعليمة التي تأخذ ثالث معامالت بالضرورة‪:‬‬
‫يوجد فيها تكافؤ بين العبارتين التاليتين‪OP A, B, C ≡ A ← B OP C :‬‬
‫سابق سيتم إنجاز التوصيف‬
‫عند إجراء التعليمة على اآللة وهي الطرف اليساري من التَّكافؤ ال َّ‬
‫لها وهو الطرف اليميني لهذا التَّكافؤ‪.‬‬
‫مثال‪:‬‬
‫‪ADD A, B, C‬‬
‫ع ِّلمنا أنَّه سيتم جمع ‪ B‬و ‪ C‬وسيتم وضع الناتج في ‪.A‬‬
‫من توصيف التَّعليمة ال َّ‬
‫سابق َ‬
‫سمات التَّعليمة التي تأخذ ثالث معامالت هي أنَّنا بعدد تعليمات قليل منها نستطيع حل المشاكل‬
‫ولكنها تحتاج لبعض العمل اإلضافي ألنها أطول في التفسير من التعليمات التي تتضمن عدد‬
‫أقل من المعامالت‪.‬‬
‫‪ ‬التعليمة التي تأخذ معاملين بالضرورة‪:‬‬
‫يوجد فيها تكافؤ بين العبارتين التاليتين‪OP A, B ≡ A ← A OP B :‬‬
‫‪41‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال‪:‬‬
‫‪ADD A, B‬‬
‫كذلك من توصيف التعليمة السابق علمنا أنَّه سيتم جمع قيمة ‪ B‬إلى ‪ A‬وسيتم وضع الناتج في ‪A‬‬
‫(الحظ َّ‬
‫أن ‪ A‬هو متغير دخل وخرج في الوقت نفسه)‪.‬‬
‫مالحظة‪ :‬أسلوب التعليمتين يقوم بتقليل طول التعليمة ولكن يحتاج إلى بعض العمل اإلضافي‪.‬‬
‫‪ ‬التعليمة التي تأخذ معامل واحد بالضرورة‪:‬‬
‫يوجد فيها تكافؤ بين العبارتين التاليتين‪OP A ≡ ACC ← ACC OP A :‬‬
‫مثال‪:‬‬
‫‪ADD A‬‬
‫أن قيمة المعامل ‪ A‬الذي سيتم جلبه من الذاكرة هي ‪َّ 7‬‬
‫لنفترض َّ‬
‫وأن القيمة الَّتي كانت مخزنة‬
‫في المراكم في آخر عمليَّة هي ‪ 3‬فنستطيع بوضوح أن نعلم أنَّه سيتم جمع قيمة ‪ A‬إلى القيمة‬
‫الموجودة في المراكم وسيتم تخزين القيمة الجديدة في المراكم نفسه أي بعد هذه العملية‬
‫ستصبح القيمة الموجودة في المراكم هي ‪.10‬‬
‫‪ ‬التعليمة التي ال تأخذ أي معامل بالضرورة‪:‬‬
‫يوجد فيها تكافؤ بين العبارتين التاليتين‪OP ≡ T ← (T − 1) OP T :‬‬
‫َّ‬
‫إن الحرف ‪ T‬الموجود في الطرف اليميني من التَّكافؤ هو يرمز إلى ق َّمة المكدس (‪)Stack‬‬
‫الموجود في الذاكرة والحرف )‪ (T-1‬إلى العنصر التالي فيه‪ ،‬بالتالي سوف تتم العمليَّة كالتالي‪:‬‬
‫المرجوة‬
‫عمل ‪ POP‬لكل من العنصرين الموجودين على قمة ال‪ Stack‬ومن ثم تطبيق العملية‬
‫َّ‬
‫‪ (T − 1) OP T‬وعمل ‪ Push‬للنتيجة على قمة ال‪. Stack‬‬
‫‪42‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫صورة توضح العنصرين الذين ستتم عليهما العملية‬
‫مؤشر قمة‬
‫المكدس‬
‫صورة توضح ال‪ Stack‬بعد القيام بالعمليَّة ‪OP‬‬
‫مؤشر قمة‬
‫المكدس‬
‫مالحظة‪ :‬الحظ َّ‬
‫أن العنصر الذي يسبق قمة ال‪ Stack‬هو الذي يكون الطرف اليساري من‬
‫العمليَّة وكذلك العنصر الذي في قمة ال‪ Stack‬هو الذي يشكل الطرف اليميني لذلك يجب‬
‫االنتباه إلى كون بعض العمليات غير تبديلية كالطرح والقسمة وغيرها‪.‬‬
‫‪43‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال‪:‬‬
‫‪Push A‬‬
‫‪Push B‬‬
‫‪SUB‬‬
‫‪POP C‬‬
‫َّ‬
‫إن كل التعليمات السابقة تكافؤها تعليمة واحدة في لغة عالية المستوى وهي ‪.C=A-B :‬‬
‫أمثلة للتعليمات المختلفة لتنفيذ التعليمة ‪:‬‬
‫𝐁‬
‫𝐂‬
‫=𝐀‬
‫‪ ‬بثالث معامالت‪:‬‬
‫‪Div A, B, C‬‬
‫مالحظة‪ :‬يجب االنتباه إلى َّ‬
‫أن شكل التعليمة ثابت فال يجوز وضع أقواس وال يجوز‬
‫االجتهاد في الكتابة َّ‬
‫ألن هذا يعتبر خطأ في البرمجة‪.‬‬
‫‪ ‬بمعاملين‪:‬‬
‫‪MOV A, B‬‬
‫‪DIV A, C‬‬
‫يتم وضع قيمة ‪ B‬في ‪ A‬ومن ثم القيام بقسمة ‪ A‬على ‪ C‬وتخزين القيمة في ‪ .A‬وبالتالي‬
‫الحصول على القيمة المرادة في ‪.A‬‬
‫‪ ‬بمعامل واحد فقط‪( :‬نحتاج ‪)ACC‬‬
‫‪LOAD B‬‬
‫‪DIV C‬‬
‫‪STORE A‬‬
‫يتم وضع قيمة ‪ B‬في المراكم ثم قسمة قيمة المراكم (والتي هي ‪ )B‬على ‪ C‬ثم تخزين‬
‫النتيجة في ‪.A‬‬
‫‪44‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ ‬بدون معامالت‪( :‬ال تنس القاعدة ‪)OP ≡ T ← (T − 1) OP T‬‬
‫‪Push B‬‬
‫‪Push C‬‬
‫‪DIV‬‬
‫‪POP A‬‬
‫الحظ أنَّنا قمنا بعمل ‪ِّ Push‬لـ ‪ B‬قبل عمل ‪ Push‬لـ ِّ ‪ C‬وذلك لكي نستطيع أداء عمليَّة‬
‫القسمة بشكل صحيح‪ ،‬في التعليمة الثالثة ت َّمت القسمة‬
‫ناتج العملية من ال‪ Stack‬في ‪.A‬‬
‫𝐁‬
‫𝐂‬
‫وفي الخطوة األخيرة ت َّم تخزين‬
‫مالحظة أخيرة‪ :‬ال يجوز القيام بعمل تعديل على ال‪ Operands‬بل يجب استخدام وسطاء‬
‫آخرين وذلك من أجل سالمة منطق البرنامج‪.‬‬
‫تمرين ‪:‬‬
‫قم بكتابة الخوارزمية التي تعطينا ناتج العملية التَّالية‪:‬‬
‫𝐁‪𝐀−‬‬
‫𝐄 ∗ )𝐃 ‪(𝐂 +‬‬
‫=𝐘‬
‫وذلك باستخدام تعليمات بـ ِّ ‪ 3‬معامالت وكذلك باستخدام تعليمات بمعاملين وتعليمات بمعامل‬
‫واحد و تعليمات بدون معامالت‪.‬‬
‫حلك حيث َّ‬
‫أن‬
‫تذكرة‪ :‬بعد أن تقوم بالمحاولة بنفسك في هذا التمرين فإنك تستطيع التأكد من ِّ‬
‫الحل موجود في القسم النَّظري للمادَّة لذلك اذهب وابحث عنه‪.‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪45‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدرس الثَّالث‬
‫تاريخ‪:‬األربعاء‪30/1/2019‬‬
‫العناوين الكثيرة ‪ Vs‬العناوين القليلة‪:‬‬
‫كلما أضفنا عناوينا ً أخرى في التعليمة‪:‬‬
‫‪ -1‬تكون لدينا تعليمات معقدة ولكنَّها أكثر قوة‪.‬‬
‫‪ -2‬يلزمنا سجالت أكثر والسبب هو أن اإلكثار من عدد المعامالت يحتاج إلى اإلكثار من‬
‫عدد السجالت‪.‬‬
‫‪ -3‬ستصبح تعليمات البرنامج أقل‪.‬‬
‫كلما قللنا العناوين في التعليمة‪:‬‬
‫قوة‪.‬‬
‫‪ -1‬تكون التعليمة أقل تعقيدا ً ولكنَّها ظاهريا ً تكون أقل َّ‬
‫‪ -2‬تصبح تعليمات البرنامج أكثر‪.‬‬
‫‪ -3‬تكون عمليات ‪ fetch‬وكذلك ‪ Execute‬أسرع وذلك َّ‬
‫ألن عدد ال‪ Operands‬قليل‪.‬‬
‫القرارات التَّصميميَّة‪:‬‬
‫‪ -1‬قائمة العمليَّات‪ :‬هي العدد الذي سيتم التزود به من التعليمات وكذلك أنواع التعليمات‬
‫التزود بها وما هو مدى تعقيدها‪.‬‬
‫التي سيتم‬
‫ُّ‬
‫‪ -2‬أنواع المعطيات‪ :‬الحجوم التي يستطيع البرنامج التعامل معها مثالً‪(Byte, 2Bytes, :‬‬
‫صة بالدَّخل والخرج أم ال‪.‬‬
‫‪ )...16Bytes‬وما إذا كان هناك معطيات خا َّ‬
‫أحقيَّة للمصمم في تصميم‬
‫‪ -3‬تصميم التعليمة الواحدة‪ :‬إ َّما يتم التقيد بها أو أن يكون هناك ِّ‬
‫التعليمة التي يريد‪.‬‬
‫‪ -4‬الس َّ‬
‫جالت‪ :‬عدد السجالت التي سنحتاجها في البرنامج‪.‬‬
‫‪ -5‬أنماط العنونة‪ :‬أنواع األنماط المراد التَّعامل معها ومدى فعالية كل نمط‪.‬‬
‫أنواع ال‪: OPERANDS‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫من الممكن أن يكون ال‪Operand‬‬
‫من الممكن أن يكون ال‪Operand‬‬
‫من الممكن أن يكون ال‪Operand‬‬
‫من الممكن أن يكون ال‪Operand‬‬
‫عبارة عن ‪ flag‬مثال‪.‬‬
‫عنوانا ً يتم الوصول إليه في الذاكرة أو ال‪. Cache‬‬
‫عددا ً صحيحا ً أو عشرياً‪.‬‬
‫محرفا ً (‪ Character‬من لوحة ‪.)ASCII‬‬
‫بيانات منطقيَّة مثل أن يكون ال‪ Operand‬هو‬
‫‪46‬‬
‫المحاضرة ‪-2-‬‬
‫سابع محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫المعالج ‪ x86‬وأنواع معطياته‪:‬‬
‫سم َح معالج ‪ x86‬بتوصيف أطوال كلمات مختلف أي َّ‬
‫أن أنواع المعطيات ممكن أن تكون‬
‫مختلفة ونستطيع توصيفها كعنوان ضمن التَّعليمة‪.‬‬
‫أنواع العمليَّات (‪:)Operations‬‬
‫‪ -1‬عمليات نقل المعطيات‪ :‬مثا ٌل عليها ‪ Move, Store, Load, Push, Pop‬ويجب تحديد‬
‫المصدر فيها وكذلك الوجهة ومقدار المعطيات‪.‬‬
‫مثالً‪:‬‬
‫‪ :Move‬قم بنقل الكلمة التالية أو الـ (‪ )Block‬التالية من المصدر إلى الوجهة‪.‬‬
‫‪ :Store‬قم بنقل الكلمة التالية أو الـ (‪ )Block‬التالية من المعالج إلى الذاكرة‪.‬‬
‫‪ :Load‬قم بنقل الكلمة من الذاكرة إلى المعالج‪.‬‬
‫‪ ‬تنويه‪ :‬القصد بـ ‪ Block‬هنا هو كتلة من البايتات يكون حجمها محدَّداً‪.‬‬
‫طبعا ً يوجد في كل معالج أكثر من تعليمة >‪ <Load‬على سبيل المثال‪َّ ،‬‬
‫وإن هذا مفيد لكي‬
‫يقوم المعالج بالتعامل مع أنماط متعددة من المعطيات وكذلك يوجد تعليمات متعدِّدة من كل‬
‫تعليمة تفيد في الت َّعامل مع أنماط مختلفة من المعطيات‪.‬‬
‫انظر الجدول في الصفحة التالية وشاهد عدد تعليمات ‪ Load‬و ‪ Store‬كل واحدة منها‬
‫لنمط معطيات مختلف وكل واحدة باسم مختلف وكل منها لها ‪ OPCODE‬مختلف وذلك في‬
‫جهاز ‪.IBM EAS/390‬‬
‫‪47‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ -2‬عمليات حسابيَّة‪ :‬مثالً …‪.Add ,Subtract ,Multiply, Divide,‬‬
‫قد تتض َّمن الزيادة (‪ )a++‬وقد تتضمن النقصان(‪ )a--‬وقد تتض َّمن العكس(‪.)-a‬‬
‫‪ -3‬عمليات منطقيَّة‪ :‬عمليَّات ‪:Bitwise‬‬
‫مثالً ‪ cmp‬وهي تعليمة المقارنة ‪ ، Compare‬كذلك ‪ Shift‬وهي تعليمة اإلزاحة‬
‫ويوجد أيضا ً تعليمة ‪ ،Rotate‬أيضا ً عمليات …‪.And, Or, Not,‬‬
‫طبعا ً هناك نوعان من ال‪:Shift‬‬
‫‪ :Logical Right Shift ‬وهو إزاحة منطقية إلى اليمين‪:‬‬
‫وهي وضع ‪ 0‬في يسار العدد وإزاحة كل بت إلى اليمين بمقدار ‪ 1‬وبالتالي يبقى أول‬
‫بِّت بحيث يتم االستغناء عنه‪.‬‬
‫‪48‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ :Arithmetic Right Shift ‬وهو إزاحة حسابية إلى اليمين‪:‬‬
‫هنا يبقى ِّبت إشارة العدد كما هو ويتم نسخ قيمة بت إشارة العدد كما هو موضَّح ووضعه على‬
‫البت الذي على اليمين وإزاحة البتات األخرى إلى اليمين كما هو موضَّح‪.‬‬
‫‪ :Right Rotate ‬تدوير لليمين‪:‬‬
‫الصورة تقوم بتوضح ما سيحدث عند اإلزاحة وال يحتاج إلى شرح‪.‬‬
‫مثال مهم لما سبق‪:‬‬
‫مالحظة‪ :‬هناك تعليمات معقَّدة يتم تنفيذها في معالجات ‪ RISC‬تستطيع تنفيذ إزاحة متعدِّدة إلى‬
‫اليمين أو اليسار في ‪ Cycle‬واحدة فقط أما المنطق فيقتضي أن تكون كل إزاحة واحدة ضمن‬
‫‪ Cycle‬واحدة فقط وبالتالي عند تنفيذ ثالث إزاحات لليمين فمن المفترض أن تأخذ ‪3Cycles‬‬
‫في حين أنها أخذت ‪ Cycle‬واحدة فقط‪.‬‬
‫‪49‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫إن السبب في هذا َّ‬
‫في الحقيقة َّ‬
‫أن معالجات ‪ RISC‬تدعم وجود تعليمات إزاحة تجعل المبرمج‬
‫يختار نوع اإلزاحة ومقدارها بالكامل فقط في تعليمة واحدة‪.‬‬
‫‪ -4‬عمليات تحويل (‪ :)Conversion‬وهي التعليمات التي تهتم بالتحويل من نمط إلى نمط‬
‫مثالً التحويل من النمط ‪ Binary‬إلى النمط ‪.Decimal‬‬
‫‪ -5‬عمليات إدخال وإخراج‪ :‬من الممكن أن تكون تعليمتي القراءة أو الكتابة العاديتين‪.‬‬
‫‪ -6‬عمليات تحكم النظام‪ :‬يجب أن يكون هناك إطار حماية خاص لكي يقوم المبرمج بكتابة‬
‫التعليمات أي يجب أن يدخل إلى نمط كتابة المبرمج لهذه التعليمات‪ ،‬المهم أن يكون هذا‬
‫المبرمج له سماحيَّة الكتابة‪.‬‬
‫أمثلة على أنماط يمكن للمبرمج أن يستخدم بيئة التعامل مع تعليمات النظام‪:‬‬
‫‪Kernel Mode ‬‬
‫‪Ring 0 80386 ‬‬
‫‪ -7‬عمليات النَّقل‪ :‬لها نوعان هما القفز غير الشرطي و القفز الشرطي‪:‬‬
‫‪ BR (Unconditional Branch) ‬أثناء تنفيذ التعليمات من الممكن أن نصادف تعليمة‬
‫كهذه ووظيفتها هي القيام باالنتقال بتنفيذ التعليمات إلى مكان آخر بين التعليمات وهو‬
‫انتقال غير مشروط‪.‬‬
‫”‪BR X :”Go to X : Instruction Address‬‬
‫شكل التعليمة‪:‬‬
‫‪ BRZ (Conditional Branch) ‬هو نوع آخر من التعليمات وهو انتقال مشروط يأخذ‬
‫َّ‬
‫سجالً أو ‪ Operand‬بحيث أن يتم القفز إلى مكان آخر بين التعليمات ولكن‬
‫دخالً له‬
‫بحيث أن تكون قيمة السجل الدَّخل أو ال‪ Operand‬الدَّخل صفراً‪.‬‬
‫”)‪BRZ R1 X:”Go to X if(R1 == 0‬‬
‫شكل التعليمة‪:‬‬
‫‪ BRE (Conditional Branch) ‬هذا النوع من التعليمات يأخذ دخالً له سجلين وكذلك‬
‫عنوان التعليمة المراد القفز إليها بحيث أنه إذا كان السجلين متساويين يذهب إلى عنوان‬
‫التعليمة المذكور‪.‬‬
‫شكل التعليمة‪:‬‬
‫”)‪BRE R1 R2 X:”Go to X if(R2 == R1‬‬
‫َّ‬
‫سجالً أو ‪ .Operand‬يشترط أن تكون‬
‫‪ ISZ (Conditional Branch) ‬يأخذ دخالً له‬
‫قيمة السجل صفرا ً كي ينفذ التعليمة التالية وإال يقوم بزيادة السجل وتجاهل التعليمة‬
‫التالية‪.‬‬
‫شكل التعليمة‪:‬‬
‫‪ISZ R1‬‬
‫‪50‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تمثيل توضيحي لعمل بعض من التعليمات السابقة‬
‫الحظ التمثيل واستنتج كيف يسير البرنامج‪.‬‬
‫*يُشترط وجود أنواع العمليات السبع السابقة على التعليمات في كل معالج حيث أنه‬
‫يجب عليه أن يقوم بتوفيرها‪*.‬‬
‫من الممكن أن يكون تعاملنا مع تعليمات القفز أسهل باستخدام بتات اإلشارة ‪Flags‬‬
‫وأشهر هذه البتات هي ‪:‬‬
‫‪ :N‬عندما يصبح العدد الذي نتعامل معه سالباً‪.‬‬
‫‪ :Z‬عندما يصبح العدد الذي نتعامل معه صفراً‪.‬‬
‫‪ :C‬عندما يصبح هناك حمل في أحد عمليَّات الجمع‪.‬‬
‫‪ :V‬عندما يحدث لدينا ‪ Overflow‬أي عند جمع عددين على ‪ 6‬بِّت وإظهار الناتج على‬
‫‪ 6‬بِّت أيضا ً لذلك عندما تكون النتيجة على ‪ 7‬بِّت تصبح قيمة البت ‪V‬هي ‪.1‬‬
‫‪51‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫االستدعاءات المتداخلة(‪:)Nested Procedure Calls‬‬
‫بما أننا نقوم بالقفز من مكان آلخر بين التعليمات فإننا نحتاج إلى طريقة تؤمن لنا‬
‫االنتقال متى نريد وبحيث نعلم ما هو المكان الذي كنا فيه سابقاً‪ ،‬إن عدم التَّفكير في‬
‫السجالت يكمن في َّ‬
‫أن عددها محدود أي أننا ال نستطيع االنتقال أكثر من خطوات قليلة ‪64‬‬
‫مثالً ولهذا قمنا بتوظيف ‪ Stack‬خاص بهذا األمر‪ .‬أي أنه عند االنتقال من تعليمة إلى‬
‫مكان تعليمة آخر نقوم بعمل ‪ Push‬لعنوان التعليمة التي تلي تعليمة ‪ Call‬في الـ‪Stack‬‬
‫وبالتالي عند الوصول ألول ‪ Return‬نقوم بعمل ‪ Pop‬للعنوان السابق في الـ‪Stack‬‬
‫وبالتالي يرجع المعالج إلى حيث كان ويكمل تنفيذ التعليمات‪.‬‬
‫‪52‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫الحظ أنَّه عند استدعاء ‪ Proc1‬يتم تخزين عنوان التعليمة التي تلي ‪ Call Proc1‬في‬
‫ال‪ Stack‬واستنتج كيف يسير البرنامج كامالً عن طريق األسهم وال‪ Stack‬المرفقة‪.‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪53‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫األول من‬
‫مقدمة‪ :‬سيتم‬
‫ُّ‬
‫التطرق اآلن إلى تكملة للمحاضرة السابعة وهذه التكملة هي نهاية الجزء َّ‬
‫الدَّرس الثَّالث ومن ثم سنبدأ معا ً بالجزء الثَّاني من هذا الدَّرس وهو أنماط العنونة‪.‬‬
‫خصائص مهمة عن المعالج‪:‬‬
‫‪ ‬كل معالج له ‪ Manual‬مشابه للمثال الذي ذكرناه عن معالج ‪ IBM EAS/390‬بحيث‬
‫يعلم المبرمج ماهية التعليمات الَّتي يوفِّرها هذا المعالج وأنماط المعطيات التي يمكنه‬
‫التعامل معها من خالل تلك التعليمات‪.‬‬
‫‪ ‬يتض َّمن المعالج تعليمات خاصة به تساعده على القيام بعمله وهي غير مرئية بالنسبة‬
‫للمبرمج‪.‬‬
‫عودة إلى معالج ‪:x86‬‬
‫قائمة ببعض التعليمات التي يوفرها إلى معالج ‪x86‬‬
‫‪54‬‬
‫المحاضرة ‪-2-‬‬
‫ثامن محاضرة بنيان حاسوب‬
‫الدرس الثَّالث‬
‫تاريخ‪ :‬الثالثاء ‪5/2/2019‬‬
‫‪55‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سنقوم بالشرح عن بعض التعليمات وسنترك لك ‪-‬عزيزي القارئ‪ -‬مه َّمة التعرف على‬
‫التعليمات بشكل عام وفهم عملها‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ :PUSHA‬نحن نعلم ما هي مهمة التعليمة ‪ PUSH‬واآلن َّ‬
‫إن التعليمة ‪ PUSHA‬هي‬
‫تعليمة وضع جميع السجالت (‪ 64‬سجل) في المكدس ‪.Stack‬‬
‫‪ :MOVSX‬تقوم بنقل قيمة مخزنة على ‪ int64‬إلى قيمة من النمط ‪ int32‬بحيث يتم‬
‫تحديد القسم الذي سيتم نقله‪ ،‬فإما أن يتم نقل القسم اليساري أو أن يتم نقل القسم اليميني‪.‬‬
‫‪ : IN, OUT‬وهي تعليمة خاصة بالدخل أو الخرج من بوابة معينة‪.‬‬
‫‪ :BTS‬تقوم باختبار قيمة في ِّبت ما وتضع فيه قيمة معينة وهذا يتم في عملية واحدة‬
‫فقط بحيث يتم القيام بالعملية بدون مقاطعة‪.‬‬
‫‪ :MOVS/LOADS‬خاصة بنقل وتخزين المتحوالت من النمط ‪.string‬‬
‫‪ :WAIT‬تقوم بتأخير تنفيذ البرنامج وتأخذ دخالً لها المدَّة المحددة للتأخير‪.‬‬
‫مالحظة‪ :‬يتم تقسيم مناطق الذاكرة إلى أقسام ‪ 4( Segments‬أقسام مثالً) بحيث يتعامل معها‬
‫المعالج بشكل منطقي‪.‬‬
‫‪56‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫ترتيب وضع البايتات في الذاكرة عند الكتابة (‪:)Byte Order‬‬
‫تذكرة‪ :‬إن أرقام العدد المكتوب بالنظام العشري هي من ‪ 0‬إلى ‪ 9‬وبالتالي يكفي لكتابة عدد من‬
‫النظام العشري بالنظام الثنائي هو استخدام ‪ 4‬بتات‪.‬‬
‫مالحظة‪ :‬نعرف اآلن عالقة وزن للبت الواحد‪ ،‬في العدد المكتوب بالنظام الثنائي )‪10011(2‬‬
‫َّ‬
‫إن البت األخف وزنا ً هو البت األول من اليمين والسبب هو أنَّه عند إرجاع العدد إلى النِّظام‬
‫العشري على سبيل المثال َّ‬
‫فإن هذا العدد سيمثل العدد ‪ 1‬في النِّظام الجديد أما العدد ‪ 1‬الثاني من‬
‫اليمين سيمثل العدد ‪ 2‬بالنِّظام العشري وكذلك العدد ‪ 1‬من اليسار سيمثل العدد ‪ 16‬بالنظام‬
‫العشري وبالتالي نقول عن العدد ‪ 1‬من من اليمين هو البت األخف وزنا ً (‪ )LSB‬أما العدد ‪1‬‬
‫من اليمين هو البت األثقل وزنا ً (‪.)MSB‬‬
‫‪MSB: The Most Significant Bit‬‬
‫‪LSB: The Least Significant Bit‬‬
‫بالعودة للدرس ‪ :‬عند تخزين عدد ما في الذاكرة وليكن العدد ‪ 12345678‬فإن كل رقم منه يتم‬
‫تخزينه على ‪ 4‬بت وبالتالي كل عددين معا ً يشغالن بايتا ً واحدا ً إذا ً يكفي ‪ 4‬بايت لكي نخزن‬
‫العدد السابق في الذاكرة‪.‬‬
‫مشكلة ‪:Endian‬‬
‫َّ‬
‫إن تعليمات المعالج تتعامل مع معامالت بطول معين ومحدود وبالتالي كان ال بد من إيجاد‬
‫طريقة للتعامل مع األعداد الكبيرة وبالتالي لجأ المصممون إلى التخزين في الذاكرة وعند‬
‫التخزين فيها ظهر وصفان لترتيب تخزين البايتات‪:‬‬
‫الوصف األول ‪ :Big-Endian‬وهو الوصف الذي يقتضي بأن يكون البايت األثقل وزنا ً في‬
‫العنوان األصغر‪.‬‬
‫الوصف الثاني ‪ :Little-Endian‬هذا الوصف يقتضي بأن يكون البايت األخف وزنا ً في‬
‫العنوان األصغر‪.‬‬
‫كانت المشكلة األساسية بالنسبة للمبرمجين هي اعتماد إحدى الطريقتين السابقتين ولكن كان‬
‫هذا في السابق‪ ،‬معالجات العصر الحديث أي ما بعد عام ‪ 1992‬معظمها تعمل بالنمطين‪.‬‬
‫‪57‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫ضع البايتات‬
‫في الشكل السابق الحظ فرق الترتيب بين ‪ Big-Endian‬و‪ Little-Endian‬في تو ُّ‬
‫في الذاكرة‪.‬‬
‫مالحظات‪______________________________________________ :‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪58‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مثال على بنية معطيات مكتوبة بلغة ‪:C‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫َّ‬
‫إن المتغيرات ‪ a, pad, f‬هي من النمط ‪ int‬إذا ً فهي تكتب على ‪.4Byte‬‬
‫َّ‬
‫إن المتغير ‪ b‬هو من النمط ‪ double‬وهو يكتب على ‪.8Byte‬‬
‫َّ‬
‫إن المؤشر ‪ c‬هو من النمط *‪ char‬وهو يكتب على ‪ 4Byte‬والسبب أنَّه يحوي بداخله‬
‫عنوان (‪ )Operand‬وهو عنوان أول محرف من مصفوفة محارف‪.‬‬
‫إن ‪ d‬هي مصفوفة من المحارف وبما َّ‬
‫َّ‬
‫أن سلسلة المحارف التي بداخلها مكونة من ‪7‬‬
‫محارف فقط وكل محرف منها يكتَب بايت واحد وبالتَّالي يبقى البايت األخير فارغا‬
‫بحيث أن يصل المعالج إلى كلمة جديدة عند التخزين التالي‪.‬‬
‫َّ‬
‫إن المتغير ‪ e‬هو من النمط ‪ short‬وهو يكتب على ‪.2Byte‬‬
‫الحظ‪ :‬الكلمة مكونة من ‪.4Bytes‬‬
‫نتيجة‪ :‬ال يحدث فرق عند كتابة بايت واحد فقط بالنَّمطين ‪ Little-Endian‬و‪.Big-Endian‬‬
‫‪59‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫لنجعل النَّظرة أعمق في الذاكرة بحيث نرى كل بايت وماذا يحوي من قيم‪:‬‬
‫‪ ‬استنتج الفرق بين كل من ‪ Little-Endian‬و‪.Big-Endian‬‬
‫‪ ‬استنتج َّ‬
‫أن محارف المصفوفة ‪ d‬يبقى لها نفس العناوين‪.‬‬
‫َّ‬
‫المخزن فيها مهما‬
‫مرة عند بداية الكلمة التالية للكلمة‬
‫‪ ‬استنتج كيف يخزن المعالج في كل َّ‬
‫كانت سعة التخزين ولو كانت ‪ 1‬بايت فقط من أصل ‪ 4‬بايت‪.‬‬
‫‪60‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫القسم الثَّاني من الدَّرس‪:‬‬
‫أنماط العنونة‬
‫تذكير مهم‪َّ :‬‬
‫إن التعليمة تتألَّف من حقلين‪ :‬حقل خاص بعنوان التَّعليمة ‪ OPCODE‬وحقل خاص‬
‫بعنوان المعامل ‪.OPERAND‬‬
‫أماكن قيم المعامالت‪:‬‬
‫‪ ‬القيمة المرادة موجودة في التعليمة في حقل العنوان أساسا ً وال حاجة للذهاب إلى الذاكرة‬
‫أو إلى الس َّ‬
‫جالت‪.‬‬
‫‪ ‬أن تكون القيمة موجودة في الذاكرة ويتم الوصول إليها عن طريق عنوانها الموجود في‬
‫التعليمة أو في أحد السجالت بحيث يكون رقم السجل موجود في التعليمة‪.‬‬
‫‪ ‬أن يكون عنوان القيمة موجودا ً في سجل ما مع بعض اإلزاحة (رقم السجل موجود في‬
‫السجل‪.‬‬
‫التعليمة)‪ ،‬من الممكن أن تكون اإلزاحة موجودة في التَّعليمة أو في ِّ‬
‫مالحظة‪ :‬هناك معالجات مثل ‪ RISC‬تقتصر بأوامر التعامل مع الذَّاكرة على جلب المعطيات‬
‫السجالت من أجل كل العمليات األخرى‪.‬‬
‫وتخزينها فقط ‪ Load/Store‬وتتعامل مع ِّ‬
‫أنماط العنونة‪:‬‬
‫‪ -1‬عنونة فورية‪ :‬يوجد في التعليمة في حقل العنوان قيمة المعامل وهي القيمة المنشودة‪.‬‬
‫خصائصها‪:‬‬
‫‪ o‬فال تحتاج إلى ذهاب إلى الذاكرة ألن القيمة موجودة أصالً‪.‬‬
‫‪ o‬كذلك ال تحتاج للذَّهاب إلى السجالت‪.‬‬
‫‪ o‬سريعة جدا ً‬
‫‪ o‬قصيرة ومداها محدود وهذا يتعلق بسعة التعليمة‪.‬‬
‫مثال‪ ADD 5 :‬بحيث يقوم المعالج بجمع القيمة ‪ 5‬للـ‪. Accumulator‬‬
‫‪ -2‬عنونة مباشرة‪ :‬حقل العنوان موجود فيه عنوان القيمة المطلوبة أي َّ‬
‫أن العنوان الفعلي‬
‫موجود في الذَّاكرة )‪.Effective Address EA = address field (A‬‬
‫‪61‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫خصائصها‪:‬‬
‫‪ o‬مدى العنوان فيها محدود‬
‫‪ o‬فيها ذهاب واحد للذاكرة لجلب القيمة المطلوبة من العنوان الفعلي‪.‬‬
‫مثال‪ ADD A :‬يقوم المعالج بجلب القيمة الموجودة في العنوان ‪ A‬ويقوم بجمعها مع‬
‫المراكم ‪.ACC‬‬
‫‪ -3‬عنونة غير مباشرة‪ :‬سبب وجود هذا النمط من العنونة هو أنَّه من الممكن أن يكون‬
‫عنوان المعامل يكتب على بتَّات أكثر من مدى العنوان في التعليمة وبالتالي لكي يصل‬
‫المعالج إلى العنوان المطلوب عليه الذهاب للذاكرة لجلب عنوان المعامل ومهما كان طول‬
‫هذا العنوان فالعملية ستتم بنجاح‪.‬‬
‫خصائصها‪:‬‬
‫‪ o‬أكثر مرونة‪.‬‬
‫‪ o‬توفر مساحة كبيرة للعنوان‪.‬‬
‫‪ o‬من الممكن عمل أكثر من عنونة غير مباشرة بوقت واحد وذلك بحسب طول‬
‫المعامل‪.‬‬
‫‪ o‬هي أبطأ والسبب أنَّه بكل زيادة لعنوان فيها يتم الذَّهاب مرة أخرى للذاكرة‪.‬‬
‫‪62‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مثال‪ ADD (A) :‬يقوم المعالج بالذهاب إلى العنوان الموجود داخل التعليمة ويأخذ القيمة‬
‫الموجودة في الذاكرة التي يؤشر عليها ذلك العنوان ويعتبرها عنوانا ً جديدا ً ويذهب إليه‬
‫ويجلب القيمة المرادة ويقوم بجمعها مع المراكم ‪.ACC‬‬
‫تمرين ‪( :1‬من النظري)‬
‫‪63‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫حل التمرين‪:‬‬
‫‪ .a‬يصبح في المراكم ‪ ACC‬القيمة ‪.20‬‬
‫‪ .b‬يأخذ المعالج القيمة الموجودة في العنوان ‪ 20‬وهي القيمة ‪.40‬‬
‫‪ .c‬يأخذ المعالج القيمة الموجودة في العنوان ‪ 20‬وهي ‪ 40‬ويعتبرها عنوانا ً جديدا ً ويأخذ‬
‫القيمة التي يؤشر عليها هذا العنوان وبالتالي يصبح في المراكم القيمة ‪.60‬‬
‫‪ .d‬يصبح في المراكم ‪ ACC‬القيمة ‪.30‬‬
‫‪ .e‬يأخذ المعالج القيمة الموجودة في العنوان ‪ 30‬وهي القيمة ‪.50‬‬
‫‪ .f‬يأخذ المعالج القيمة الموجودة في العنوان ‪ 30‬وهي ‪ 50‬ويعتبرها عنوانا ً جديدا ً ويأخذ‬
‫القيمة التي يؤشر عليها هذا العنوان وبالتالي يصبح في المراكم القيمة ‪.70‬‬
‫‪ -4‬عنونة بسجل‪ :‬ال‪ Operand‬موجود في سجل في حقل العنوان‪.‬‬
‫خصائصها‪:‬‬
‫‪ o‬أصغر مساحة في حقل العنوان (‪ 64‬سجل فقط!)‪.‬‬
‫‪ o‬سريعة جدا ً والتَّنفيذ كذلك‪.‬‬
‫‪ o‬ال تحتاج للذَّهاب للذاكرة‪.‬‬
‫‪ o‬هناك لغات عالية المستوى تدعمها مثل لغة ‪.C‬‬
‫في لغة ‪ C‬مثالً‪:‬‬
‫لتكن لدينا التعليمتان التاليتان‪:‬‬
‫;‪int a, b‬‬
‫;‪register int a, b‬‬
‫عند استخدام متحول ما بكثرة في البرنامج َّ‬
‫فإن التعليمة الثَّانية هي الخيار األفضل ولكن‬
‫المتحوالت ألن عدد السجالت قليل‪ ،‬والفائدة من‬
‫هذا يقتصر على عدد قليل من‬
‫ِّ‬
‫الس َّ‬
‫جالت أنَّها ال تتطلَّب الذهاب إلى الذَّاكرة‪.‬‬
‫ِّ‬
‫‪64‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدرس الثَّالث‬
‫تاريخ‪ :‬األربعاء‪6/2/2019‬‬
‫‪ -5‬عنونة غير مباشرة بسجل‪ :‬السجل يحوي عنوان لمعامل في الذاكرة‪.‬‬
‫خصائصها‪:‬‬
‫‪ o‬أسرع من العنونة غير المباشرة العاديَّة ألنَّها أقل بمقدار ذهاب واحد للذَّاكرة عن‬
‫العنونة غير المباشرة‪.‬‬
‫‪ o‬مدى العنوان فيها وهو المدى الذي يشير إليه السجل كبير‪.‬‬
‫السجالت‪.‬‬
‫‪ o‬محدودة لقلة عدد ِّ‬
‫‪ o‬كذلك الحال فيها لتعدُّد العنونة غير المباشرة فمن الممكن أن يحوي السجل‬
‫عنوانا ً يأخذ إلى عنوان ما في الذاكرة وذلك العنوان كذلك يحوي عنوانا ً آخر‬
‫وهكذا‪.‬‬
‫هنا‪ :‬العنوان الفعلي هو محتوى السجل كما رأينا )‪.EA = (R‬‬
‫‪ -6‬عنونة مع إزاحة‪ :‬عنوان المعامل موجود في سجل‪ ،‬ولكن باإلضافة لذلك يوجد إزاحة‬
‫بجانب عنوان السجل في التعليمة وبالتالي محتوى السجل يؤشر على عنوان في الذاكرة‬
‫وبزيادة قيمة اإلزاحة يتم الوصول إلى العنوان المطلوب‪.‬‬
‫مالحظة‪ :‬من الممكن أن يتبادل كل من السجل والعنوان األدوار بحيث يحوي السجل‬
‫مقدار اإلزاحة ويحوي حقل الـ‪ Address‬العنوان المطلوب‪.‬‬
‫‪65‬‬
‫المحاضرة ‪-2-‬‬
‫تاسع محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫هنا‪ :‬العنوان الفعلي هو محتوى السجل مضافا له قيمة اإلزاحة ‪.EA = (R) + A‬‬
‫مكونا ً من جزئين هما ال‪)Program Counter( PC‬‬
‫‪ -7‬عنونة نسبيَّة‪ :‬يكون العنوان َّ‬
‫مضافا ً له إزاحة محدودة بمقدار ‪.A‬‬
‫هنا‪ :‬العنوان الفعلي هو محتوى ال‪ PC‬وهو محتوى التعليمة التالية باإلضافة لقيمة‬
‫اإلزاحة المحدودة ‪.EA = (PC) + A ،A‬‬
‫تمرين ‪( :2‬متعلق بال ‪)PC-Relative‬‬
‫أن التعليمة الحالية التي يتم تنفيذها هي في الموقع ‪ 138114‬ونحن نعلم َّ‬
‫الحل‪ :‬بما َّ‬
‫أن‬
‫طول التَّعليمة هو ‪ 2‬بايت من نص المسألة بالتَّالي َّ‬
‫فإن الـ‪ PC‬سيشير إلى التعليمة التالية‬
‫والَّتي عنوانها هو عنوان التَّعليمة الحالية مضافا ً لها قيمة عدد بايتات التعليمة الحاليَّة إذا ً‬
‫يكون‪:‬‬
‫‪Target Address = (PC) + current instruction length + DISPLACEMENT‬‬
‫‪Target Address = 138114 + 2 + (-16) = 138100‬‬
‫‪66‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ -8‬عنونة باستعمال سجل قاعدي )‪:(Base-Register Addressing‬‬
‫يضع عنوان بداية ‪ Segment‬معيَّن في ‪ Base-Register‬وهذا يتيح الوصول إلى مقاطع‬
‫مختلفة من الذَّاكرة‪ ،‬ومن الممكن أن يكون السجل صريحا ً في التعليمة أو أن يكون ضمنياً‪.‬‬
‫إذا أراد المستخدم عمل إزاحة فيجب أن يستخدم أحد األنماط السابقة ‪8,7,6‬‬
‫‪ -9‬عنونة مفهرسة (‪:)Indexed Addressing‬‬
‫تشبه العنونة السابقة ولكن يتبادل السجل والعنوان األدوار وهذا يفيد في قراءة وتخزين‬
‫المصفوفات ذات الطول القصير نسبيا ً (مصفوفة محارف مثالً) بحيث َّ‬
‫أن العدد الموجود‬
‫في السجل يساوي طول المصفوفة‪.‬‬
‫هنا‪ :‬العنوان الفعلي عبارة عن العنوان ‪ A‬مضافةً له اإلزاحة ‪ ،R‬أي ‪EA = A + R‬‬
‫ويستعمل ذلك في حلقة بحيث كلَّما تتم قراءة حرف نزيد قيمة العداد بحيث نصل إلى‬
‫القيمة الموجودة في السجل‪.‬‬
‫عنونة بالمكدس ‪:Stack‬‬
‫‪-10‬‬
‫تعرفنا عليها سابقاً‪ ،‬انظر المثال التالي‪:‬‬
‫َّ‬
‫‪C=A–B‬‬
‫‪Push A‬‬
‫‪Push B‬‬
‫‪SUB‬‬
‫‪Pop C‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫الحظ َّ‬
‫أن ال‪ operand‬موجود ضمنيَّا ً في قمة المكدس‪.‬‬
‫سة له عند‬
‫تذكرة‪ :‬ال مهرب من استخدام المكدس في البرنامج فالحاجة تكون ما َّ‬
‫االستدعاءات العوديَّة وكذلك يستخدم في بنى المعطيات الديناميكية مثل األشجار والبيان‬
‫‪ Graph‬التي َّ‬
‫تخزن على الكومة ‪.Heap‬‬
‫مالحظات‪______________________________________________ :‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪67‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الحظ كيفية استخدام كل نمط من أنماط العنونة المختلفة (من النظري)‬
‫تصميم التعليمة‪:‬‬
‫ولنتعرف الفروق بينهما‪:‬‬
‫‪ ‬يوجد تو ُّجهان في تصميم التعليمات وهما ‪ RISC‬و‪CISC‬‬
‫َّ‬
‫‪RISC‬‬
‫‪CISC‬‬
‫عدد قليل من التعليمات في البرنامج الواحد عدد كبير من التعليمات في البرنامج الواحد‬
‫أنماط عنونة قليلة وبسيطة‬
‫تنوع كبير في أنماط العنونة‬
‫تعليمات أكثر تعقيدا ً‬
‫نماذج قليلة وبسيطة من التعليمات‬
‫ال يوجد عنونة غير مباشرة‬
‫يوجد عنونة غير مباشرة‬
‫الوصول للذاكرة مقتصر على تعليمتي‬
‫يوجد تعليمات تعالج المعامالت في الذاكرة‬
‫‪ Load/Store‬فقط‬
‫من الممكن أن توجد تعليمة ‪ Load‬مع تعليمة ال توجد أي تعليمة ‪ Load‬مع تعليمة حسابية‬
‫حسابية‬
‫طول التعليمة ثابت بحيث يتم عمل‬
‫أطوال مختلفة االشكال للتعليمات‪.‬‬
‫‪ Decode‬لها بسهولة وكل تعليمة تأخذ‬
‫‪1Cycle‬‬
‫‪68‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫كيفيَّة تصميم التَّعليمة الواحدة‪:‬‬
‫هذا يتعلق ِّبنسق ال ِّبتَّات في التعليمة بحيث يجب أن تحتوي التعليمة‪:‬‬
‫‪.OPCODE ‬‬
‫مصرح عنها أو ضمنيَّة مثل ‪.ACC‬‬
‫‪ OPERANDS ‬سوا ًء كانت‬
‫َّ‬
‫طبعا ً من الممكن أن يوجد أكثر من نسق للتعليمة‪.‬‬
‫مالحظة‪ :‬مثالً من الممكن أن يكون لدينا تعليمتين فيها ‪ 4‬بتات لل‪ OPCODE‬ولكن كل واحدة‬
‫بنسق مختلف وبالتالي يجب إزالة الغموض على المعالج حتى يختار التعليمة الصحيحة ويتم‬
‫هذا بتحديد قيم ال‪ OPCODE‬التي تأخذها كل واحدة من التعليمتين بحيث تكون القيم متمايزة‬
‫تماما ً بينهما‪.‬‬
‫العوامل التي تؤثر على عدد البتَّات في التعليمة الواحدة‪:‬‬
‫‪ -1‬حجم الذاكرة‪.‬‬
‫‪ -2‬تنظيم الذاكرة‪.‬‬
‫‪ -3‬بنية الـ‪ BUS‬والسعة األعظميَّة له‪.‬‬
‫‪ -4‬تعقيد ال‪ CPU‬وكذلك سرعته‪.‬‬
‫‪ -5‬عدد أنماط العنونة وعدد المعامالت‪.‬‬
‫‪ -6‬حجم العنوان وهذا يتعلق بمدى العناوين األمثلي المتاح‪.‬‬
‫‪ -7‬نمط التعامل مع السجالت والذاكرة‪.‬‬
‫مثال على حاسوب يعمل بحجم تعليمة ثابت‪PDP-8 :‬‬
‫‪ ‬طول التعليمة هو ‪ 12‬بت منها ‪ 3‬لل‪ OPCODE‬و‪ 7‬للعنوان و‪ 2‬بت لتحديد نمط العنونة‬
‫(بت للعنونة المباشرة \غير المباشرة وبت تحديد الصفحة "الصفحة ‪ 0‬أو الصفحة‬
‫الحاليَّة")‬
‫‪ ‬كلمات الذاكرة كلها مؤلَّفة من ‪ 12‬بت‪.‬‬
‫‪ ‬عنوان الذاكرة مؤلف من ‪ 12‬بت‪.‬‬
‫‪69‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪:PDP-10‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫يوجد فيه مدى تعليمات كبير (‪ 365‬تعليمة)‪.‬‬
‫طول التعليمة والكلمة هو ‪ 36‬بت‪.‬‬
‫طول عنوان الذاكرة هو ‪ 36‬بت‪.‬‬
‫يوجد فيه ‪ 16‬سجل كل واحد منها طوله ‪ 18‬بت‪.‬‬
‫أنماط العنونة التي يدعمها هي العنونة الفورية والمباشرة وغير المباشرة والمفهرسة التي‬
‫تدعم اإلزاحة كما رأينا‪.‬‬
‫‪70‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مثال على حاسوب يعمل على التو ُّجه ‪ CISC‬في تعليماته‪:‬‬
‫‪:PDP-11‬‬
‫أطوال تعليماته مختلفة‪ ،‬وفيه‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫معالج ‪ minicomputer‬يعمل على ‪ BUS‬سعته ‪ 16‬بت‪.‬‬
‫‪ 8‬سجالت على ‪ 16‬بت‪.‬‬
‫‪ 4‬سجالت لألعداد الحقيقية‪.‬‬
‫‪ 13‬تعليمة بمعاملين أو معامل واحد أو بدون معامالت‪.‬‬
‫طول ال‪ OPCODE‬متغير (من ‪ 4‬بت إلى ‪ 16‬بت)‪.‬‬
‫كل من المصدر والوجهة على ‪ 6‬بت (‪ 3‬بت لتحديد سجل و‪ 3‬بت لتحديد نمط العنونة)‪.‬‬
‫‪ ‬صورة لحاسوب ‪ PDP-11/40‬مع العلم َّ‬
‫أن موقع‬
‫المعالج أسفل هذا الحاسوب‪:‬‬
‫‪71‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدرس الثَّالث‬
‫تاريخ‪ :‬الثالثاء‪19/2/2019‬‬
‫‪( :VAX ‬يتبع حاسوب ‪ VAX‬في ترتيب البايتات النمط ‪)Little Endian‬‬
‫‪VAX700‬‬
‫‪ -1‬هذا الحاسوب كان يتعامل مع أطوال مختلفة من التعليمات حيث َّ‬
‫أن طول التعليمة الواحدة‬
‫يتراوح بين بايت واحد و‪ 37‬بايت‪.‬‬
‫‪َّ -2‬‬
‫إن كل تعليمة تحوي ‪ OPCODE‬طوله (‪ )1-2‬بايت ليشمل كامل الحاسوب بشكل إجمالي‬
‫حوالي ‪ 300‬تعليمة‪.‬‬
‫‪ -3‬كل تعليمة تحوي عددا ً من المعامالت يصل حتى ‪ 6‬معامالت ومن الممكن أال تحوي أي‬
‫معامالت (‪.)0 Operands‬‬
‫‪ -4‬من الممكن أن يكون التوصيف على أكثر من بايت مع وجود (‪ 4‬بتات لنمط العنونة و‪4‬‬
‫بتات للسجل) ويوجد ‪ 12‬نمط عنونة‪.‬‬
‫أمثلة‪:‬‬
‫‪ ‬تعليمة بدون معامالت وبـ ِّ‪ OPCODE‬على ‪ 1‬بايت‪:‬‬
‫‪ o‬اسم التعليمة‪RSB :‬‬
‫‪ o‬المهمة‪ :‬الرجوع من تنفيذ تابع أو مقطع فرعي في البرنامج‪.‬‬
‫‪ o‬كتابة التعليمة عند التنفيذ‪RSB :‬‬
‫‪72‬‬
‫المحاضرة ‪-2-‬‬
‫عاشر محاضرة بنيان حاسوب‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫صفة على ‪ 2‬بايت ‪:CLRL‬‬
‫‪ ‬تعليمة مو َّ‬
‫‪ o‬اسم التعليمة‪.CLRL :‬‬
‫‪ o‬المهمة‪ :‬القيام بمسح القيمة في السجل ‪.R9‬‬
‫‪ o‬شرح أكثر عن التعليمة‪ :‬أول بايت أي السطر األول ‪ D 4‬هو تعليمة المسح التي‬
‫تقابلها ‪ ،CLRL‬والبايت الثاني ‪ 5 9‬يتألف من قسمين‪:‬‬
‫‪ 5 ‬يحدد نمط العنونة والعنونة المختارة هنا هي العنونة بسجل‪.‬‬
‫‪ 9 ‬يحدد رقم السجل المطلوب‪.‬‬
‫‪ o‬كتابة التعليمة عند التنفيذ‪.CLRL R9 :‬‬
‫صفة على ‪ 6‬بايت ‪:MOVW‬‬
‫‪ ‬تعليمة مو َّ‬
‫‪ o‬اسم التعليمة‪.MOVW (move word) :‬‬
‫‪ o‬المهمة‪ :‬هي نقل كلمة من موقع إلى آخر ويتم هذا عن طريق تحديد نمط العنونة‬
‫الذي سيتم اعتماده وموقع السجل الذي سيتم النقل منه وموقع السجل الذي سيتم‬
‫النقل إليه‪.‬‬
‫في حالتنا هنا‪:‬‬
‫‪ ‬أول بايت هو لل‪. OPCODE‬‬
‫‪ ‬ثاني بايت يحدد نمط العنونة والسجل للكلمة التي سيتم نقلها (الكلمة المصدر)‪.‬‬
‫نمط العنونة المعتمد هو النمط عنونة بإزاحة والسجل الذي يعتبر محتواه هو‬
‫مقدار اإلزاحة هو ‪.R4‬‬
‫‪73‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫َّ‬
‫إن تحديد القيمة ‪ C‬في البايت الثاني تعني أن الموقع المصدر يكتب على ‪ 2‬بايت‪.‬‬
‫‪ ‬ثالث ورابع بايت هي للموقع المصدر الذي سيتم البدء منه ومن ثم إضافة اإلزاحة‬
‫وهي كما قلنا القيمة الموجودة في ‪.R4‬‬
‫تذكرة‪ :‬الحظ نمط ‪ VAX‬في ترتيب البايتات هو ‪.Little Endian‬‬
‫(راجع الصفحة ‪(58‬‬
‫‪ ‬خامس بايت يحدد نمط العنونة والسجل للكلمة التي سيتم النقل إليها (الكلمة‬
‫الوجهة)‪.‬‬
‫نمط العنونة المعتمد هو النمط ‪ Base-Register Addressing‬والسجل الذي‬
‫يعتبر محتواه هو مقدار اإلزاحة هو ‪.R11‬‬
‫َّ‬
‫إن تحديد القيمة ‪ A‬في البايت الخامس تعني أن الموقع الوجهة يكتب على بايت‬
‫واحد فقط‪.‬‬
‫‪ ‬سادس بايت هو للموقع الوجهة الذي ستتم إضافة مقدار اإلزاحة في ‪ R11‬إليه‬
‫وهو أيضا ً يساوي بالكتابة العشرية القيمة ‪.25‬‬
‫‪ o‬كتابة التعليمة عند التنفيذ‪.MOVW 356(R4) ,25(R11) :‬‬
‫الترجمة الفعلية للتعليمة‪:‬‬
‫)‪MOVW (356 + R4), (25 + R11‬‬
‫صفة على أكثر من ‪ 5‬بايت ‪:ADDL3‬‬
‫‪ ‬تعليمة مو َّ‬
‫‪ o‬اسم التعليمة‪.ADDL3 :‬‬
‫‪74‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ o‬المهمة‪ :‬تقوم بجمع القيمة المباشرة ‪ 5‬مع عدد صحيح من النمط ‪ integer‬محتوى‬
‫في السجل ‪ R0‬وتخزين الناتج في عنصر المصفوفة ]‪.A[R2‬‬
‫سبب التخزين في الموقع الذي عنوانه ‪ A‬مجموعا ً له قيمة ‪ R2‬مضروبة بـ ِّ‪ 4‬هي‬
‫َّ‬
‫أن ‪ A‬هو مؤشر بداية المصفوفة أي أنَّه عنوان بدايتها وبما أن كل سجل يحجز ‪4‬‬
‫بايتات في الذاكرة بالتالي للوصول إلى العنصر الذي دليله هو محتوى ‪ R2‬بالتالي‬
‫يجب أن يتحرك المؤشر ‪ R2*4‬مرة‪.‬‬
‫‪ o‬كتابة التعليمة عند التنفيذ‪.ADDL3 #5 ,R0 , @A[R2] :‬‬
‫‪:X86 ‬‬
‫سابقة ‪ Prefix‬وهي من ‪ 0‬إلى ‪ 4‬بايت بحيث تؤدي أدا ًء معيَّنا ً‬
‫‪ o‬يوجد ما يسمى ال َّ‬
‫(تكرار تعليمة مثالً)‪.‬‬
‫‪ o‬طول الـ‪ OPCODE‬فيه متغير من ‪ 1‬بايت إلى ‪ 3‬بايت‪.‬‬
‫‪ o‬يوجد ‪ 2‬بايت لتوصيف العنونة (اختياري) ويتألَّف من بايت ‪ Mod R\M‬وبايت‬
‫‪.Scale Index‬‬
‫شكل تعليمة حاسوب ‪X86‬‬
‫‪ o‬يوجد إزاحة (اختياري)‪.‬‬
‫‪ o‬يوجد حقل للعنونة الفورية (اختياري)‪.‬‬
‫‪75‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ :SIB‬في عملية ‪ Indexing‬عندما نقوم بعمل عنونة لمصفوفة حجمها كبير جدا ً فهو‬
‫يتكفل بهذا األمر‪.‬‬
‫رغم كل هذا التعقيد في شكل التعليمة‪َّ ،‬‬
‫إن ‪ X86‬يتعامل مع معامل واحد في الذاكرة‬
‫في حين َّ‬
‫أن ‪ VAX‬يتعامل مع عدة معامالت في الذاكرة‪.‬‬
‫مثال على الحواسيب التي فيها تكون التعليمة بطول ثابت ‪:RISC‬‬
‫نوع الحاسوب المستخدم هو ‪MIPS4000‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫فيه طول محدد للتعليمة ‪.32bit‬‬
‫‪ BUS‬داخلي لنقل المعطيات بطول ‪.32bit‬‬
‫‪ BUS‬داخلي للعناوين بطول ‪.32bit‬‬
‫سجالت متعدِّدة االستعماالت كل منها طوله ‪ 32bit‬وعددها ‪ 32‬يمكن توصيفها على ‪5‬‬
‫بتات‪.‬‬
‫يعتمد ‪ MIPS‬على ثالث أشكال للتعليمات‪:‬‬
‫‪ o‬تعليمات السجالت (‪.)R Format‬‬
‫‪ o‬تعليمات تحوي على قيم فورية (‪.)I Format‬‬
‫‪ o‬تعليمات القفز (‪.)J Format‬‬
‫تعليمات السجالت (‪:)R Format‬‬
‫شكلها‪:‬‬
‫‪ ‬يتم تحديد عمل التعليمة عن طريق حقلي ال‪ OPCODE‬وال‪ Function‬حيث َّ‬
‫أن طول‬
‫كل منهما هو ‪ 6‬بتات‪.‬‬
‫‪ ‬يوجد فيها ثالثة سجالت ‪ Rs, Rt, Rd‬طول كل منها ‪ 5‬بتات حيث يكون أول سجلين‬
‫هما المصدر والسجل الثالث هو الوجهة‪.‬‬
‫‪ ‬عند استعمال تعليمة بسجلين يكون السجل األول هو المصدر والسجل الثاني هو‬
‫الوجهة‪.‬‬
‫‪76‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ ‬يوجد حقل إزاحة ‪ Shift‬عند الحاجة إليه ويتم تحديد مسار اإلزاحة يمينيَّةً كانت أم‬
‫يساريَّة من ال‪ OPCODE‬وال‪. Function‬‬
‫أمثلة‪:‬‬
‫‪ ADD $R2, $R3, $R4‬‬
‫الشرح‪ :‬قم بجمع كل من ‪ R2‬و‪ R3‬وضع الناتج في ‪.R4‬‬
‫‪ SLL $R5, $R3, 3‬‬
‫الشرح‪ :‬قم بإزاحة السجل ‪ R5‬ثالث مرات إلى اليسار إزاحة منطقية وضع الناتج في ‪.R3‬‬
‫تذكرة‪ :‬شرح اإلزاحة المنطقية والحسابية موجود في الصفحة ‪.49‬‬
‫تعليمات تحوي على قيم فورية (‪:)I Format‬‬
‫شكلها‪:‬‬
‫‪ ‬حقل ال‪ OPCODE‬يكفي لتحديد التعليمة (طوله ‪ 6‬بتات)‪.‬‬
‫‪ ‬هناك سجالن فقط‪ ،‬األول يعتبر المصدر والثَّاني يعتبر الوجهة (طول كل منهما هو ‪5‬‬
‫بتات)‪.‬‬
‫‪ ‬حقل القيمة الفوريَّة طوله ‪ 16‬بت وهو يحدد القيمة الفورية التي سيتم استعمالها في‬
‫التعليمة‪.‬‬
‫أمثلة‪:‬‬
‫‪ ADDI $R21, $R13, -10‬‬
‫الشرح‪ :‬قم بجمع القيمة الفورية ‪ -10‬مع قيمة السجل ‪ R21‬وضع الناتج في ‪.R13‬‬
‫)‪ LW $R2 ,100($R5) (LOAD WORD‬‬
‫الشرح‪ :‬ضع في ‪ R2‬الكلمة الموجودة في الموقع ‪.100+R5‬‬
‫)‪BNQ $R13, $R8, proc1 (Branch if not Equal‬‬
‫اقفز إلى التابع ‪ proc1‬عند عدم تساوي قيمتي السجلين ‪ R13‬و‪.R8‬‬
‫‪77‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫تعليمات القفز (‪:)J Format‬‬
‫شكلها‪:‬‬
‫‪ ‬حقل ال‪ OPCODE‬يكفي لتحديد التعليمة (طوله ‪ 6‬بتات)‪.‬‬
‫‪ ‬مدى القفز هو ‪ 26‬بت لتحديد العنوان الوجهة‪.‬‬
‫‪ ‬أمثلة‪:‬‬
‫‪ J target3‬‬
‫الشرح‪ :‬اقفز إلى العنوان ‪ target3‬المؤلف من ‪ 26‬بت‪.‬‬
‫‪ JAL proc2‬‬
‫الشرح لالطالع‪( :‬من ‪)MIPS R4000 Microprocessor User’s Manual‬‬
‫مالحظة‪ :‬يوجد أيضا ً حاسوب ‪ ARM‬الذي يتبع مسار التعليمة الثابتة ‪.RISC‬‬
‫‪78‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مقارنة بين ‪ MIPS4000‬و‪:X86‬‬
‫هي ذاتها المقارنة بين الحواسيب التي تتبع المسار ‪ CISC‬و ‪ RISC‬الموجودة في الصفحة‬
‫الثامنة والستين مضافا ً لها أنه غالبا ً تتبع معالجات ‪ CISC‬نمط ‪ Little-Endian‬وفي المقابل‬
‫تتبع معالجات ‪ RISC‬نمط ‪.Big-Endian‬‬
‫بشكل عام يأتي السؤال بالنسبة لطالب المعلوميات هو أن تكون معطيات المسألة هي‬
‫معالج مع تعليماته ويجب بناء البنية المناسبة لشكل التعليمة‪.‬‬
‫مثال مهم‪:‬‬
‫ليكن لدينا معالج يعمل بتو ُّجه ‪ CISC‬في تعليماته بحيث يكون الـ‪ OPCODE‬لكل تعليمة هو‬
‫‪ 8‬بتات مع خط معطيات ‪ 8‬بتات ولديه ‪ 16‬خط عنونة تصل فيها إلى ‪ 216‬موقعا ً مختلفا ً‬
‫وطول التعليمات متغير من تعليمة ألخرى‪.‬‬
‫ستكون أشكال التعليمات هي‪:‬‬
‫‪79‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مثال مهم‪:‬‬
‫ليكن لدينا معالج لديه ما يلي‪:‬‬
‫‪ -1‬ال‪ OPCODE‬للتعليمة هو ‪ 8‬بتات‪.‬‬
‫‪ -2‬خط معطيات ‪ 8‬بتات‪.‬‬
‫‪ -3‬خط عناوين ‪ 16‬بت‪.‬‬
‫قم بتنفيذ البرنامج التالي مع العلم َّ‬
‫أن تنفيذ البرنامج يبدأ من العنوان ‪:100H‬‬
‫‪LDA 3000H‬‬
‫‪ADI 37H‬‬
‫‪STA 3200H‬‬
‫الحل‪:‬‬
‫‪80‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪81‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪82‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مالحظات على الدرس إن وجدت‪:‬‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫*****نهاية ال َّدرس الثَّالث*****‬
‫‪83‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫الرابع*****‬
‫*****بداية ال َّدرس َّ‬
‫الذاكرة والذاكرة الخابية‪:‬‬
‫يزود نظام الحاسوب بتراتبية معينة للوصول ألنظمة الذاكرة الفرعيَّة بعضها يصل إليها‬
‫المعالج بشكل مباشر (داخليَّة) والبعض اآلخر يصل إليها المعالج عبر وحدة دخل\خرج‬
‫(خارجية)‪.‬‬
‫تراتبيَّة الذَّاكرة‪:‬‬
‫داخليَّة‪:‬‬
‫‪ -1‬سجالت المعالج‪.‬‬
‫‪ -2‬ذاكرة التخزين المؤقت أو الذاكرة الخابية مع مستوياتها (‪.)Cache Memory‬‬
‫‪ -3‬الذاكرة الرئيسيَّة مثل ذاكرة الوصول العشوائي )‪.(RAM‬‬
‫خارجيَّة‪:‬‬
‫صلب‪.‬‬
‫‪ -1‬القرص ال َّ‬
‫‪ -2‬األقراص اللَّيزريَّة(‪ )CD-RW/DVD-RW‬واألشرطة الممغنطة (‪.)Tapes‬‬
‫تتعلَّق سرعة أنظمة الذَّاكرة بما يلي‪:‬‬
‫‪ -1‬الموقع‪ :‬تختلف سرعة نقل البيانات عند جلبها من سجالت المعالج عن سرعة نقلها عند‬
‫جلبها من الذاكرة المركزيَّة (وحدة داخليَّة) وعن سرعة جلبها من سواقة األقراص‬
‫الليزريَّة مثالً (خارجيَّة)‪.‬‬
‫‪ -2‬السعة‪ :‬تتعلق بحجم الكلمة الواحدة وعدد الكلمات أو البايتات‪.‬‬
‫‪ -3‬وحدة النَّقل‪:‬‬
‫‪ o‬داخليَّة‪ :‬عادة ً تكون محدَّدة بسعة ال‪ BUS‬الخاص بنقل المعطيات‪.‬‬
‫‪ o‬خارجيَّة‪ :‬عادة ً تكون عبارة عن ‪ Block‬وهي أكبر بكثير من الكلمة الواحدة‬
‫‪ o‬من الممكن أن تكون وحدة معنونة بشكل خاص ولتكن ‪ σ‬بحيث يتم التعامل بها‬
‫مع وحدة ذاكرة معيَّنة وبذلك تكون ‪ σ‬هي أصغر وحدة ممكنة‪.‬‬
‫مثالً نعلم َّ‬
‫أن أصغر وحدة في الذَّاكرة هي الكلمة التي تتألف من بايت واحد في أغلب األحيان‪.‬‬
‫‪84‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم ‪11‬‬
‫الرابع‬
‫الدرس َّ‬
‫تاريخ‪:‬األربعاء‪20/2/2019‬‬
‫‪ -4‬طريقة الوصول‪:‬‬
‫هناك أربع طرق‪:‬‬
‫‪ ‬النَّفاذ التسلسلي‪ :‬يبدأ من بداية الذَّاكرة ويقرأ بالترتيب وكأنَّه يقرأ من‬
‫شريط َّ‬
‫والزمن في هذه الطريقة يعتمد على مكان المعطيات والمكان‬
‫سابق لها‪ ،‬زمن الوصول في هذه الطريقة أيضا ً يعتمد على مكان‬
‫ال َّ‬
‫مؤشر القراءة‪.‬‬
‫سابق الذي كان عليه‬
‫المعطيات الوجهة والمكان ال َّ‬
‫ِّ‬
‫سمة إلى ‪ Blocks‬ولدينا‬
‫‪ ‬النَّفاذ المباشر‪ :‬تكون ال َّذواكر في هذه الطريقة مق َّ‬
‫عنوان لكل ‪ Block‬ويتم الوصول للمعطيات في هذه الطريقة عن طريق‬
‫القفز بين كل ‪ Block‬للوصول للوجهة المطلوبة ثم عند إيجاد ال‪Block‬‬
‫المنشودة يتم النَّفاذ بشكل تسلسلي في محتوياتها حتى الوصول إلى‬
‫الوجهة‪ ،‬زمن الوصول في هذه الطريقة أيضا ً يعتمد على مكان‬
‫مؤشر القراءة‪.‬‬
‫سابق الذي كان عليه‬
‫المعطيات الوجهة والمكان ال َّ‬
‫ِّ‬
‫يعرف مكانا ً‬
‫‪ ‬النَّفاذ العشوائي‪ :‬في هذه الطريقة يصبح كل عنوان مفرد ِّ‬
‫محدَّدا ً في الذَّاكرة‪ ،‬زمن الوصول إلى المعلومة مستقل عن مكان مؤشر‬
‫سابق والحالي ومثال على ذلك ذاكرة ‪.RAM‬‬
‫القراءة ال َّ‬
‫‪ ‬النَّفاذ الجماعي (‪ :)Associative‬في هذه الطريقة يوجد ترويسة (‪)tag‬‬
‫أمام كل ‪ block‬موجود في الذاكرة بحيث أنَّه عند القراءة تتم مقارنة‬
‫ترويسة الوجهة مع كل الترويسات الموجودة لكل ‪ Block‬بحيث يتم‬
‫الوصول إلى ال‪ Block‬الهدف بضربة واحدة وهذه الطريقة نراها في‬
‫ذاكرة ال‪ ، Cache‬زمن الوصول إلى المعلومة مستقل عن مكان مؤشر‬
‫سابق والحالي‬
‫القراءة ال َّ‬
‫‪85‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫صورة توضح هرميَّة تراتبيَّة الذاكرة‬
‫‪ -5‬األداء‪ :‬يتعلق األداء بكل مما يلي‪:‬‬
‫‪ ‬زمن الوصول‪ :‬هو َّ‬
‫الزمن المنصرم بين إعطاء عنوان في الذاكرة وجلب‬
‫القيمة منها عند هذا العنوان‪.‬‬
‫‪ ‬زمن دورة التعليمة الواحدة‪ :‬نعلم أن الذَّاكرة ديناميكية وليست ساكنة‬
‫وبالتالي هي تتألَّف من اجتماع عدد كبير من الماسكات (‪ ،)Latches‬في‬
‫كل ‪ Latch‬موجود في هذه الذاكرة يتم تخزين قيمة البت كشحنة في‬
‫مكثفة طفوليَّة وعند القراءة من الذَّاكرة من الممكن أن تضيع قيمة البت‬
‫تسرب الشحنة لذلك نحتاج إلى دارات تغذية وتحديث‬
‫بسبب ُّ‬
‫(‪.)Refreshing circuits‬‬
‫زمن دورة التعليمة = زمن الوصول ‪ +‬زمن تحديث قيم البتات‪.‬‬
‫‪ ‬معدَّل النَّقل‪ :‬هو معدَّل البيانات التي يمكن نقلها في الدفعة الواحدة‪.‬‬
‫‪ -6‬نوع المادَّة المعتمدة في صناعتها‪:‬‬
‫‪ ‬أنصاف النواقل‪ :‬مثل ذاكرة ‪.RAM‬‬
‫‪ ‬مغناطيسية‪ :‬مثل أقراص التخزين وأقراص ‪.Floppy‬‬
‫‪ ‬ليزرية (ضوئية)‪ :‬مثل ‪ CD‬و‪.DVD‬‬
‫‪ ‬غير ذلك‪.Bubble, Hologram :‬‬
‫‪86‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ -7‬الخصائص الفيزيائية‪:‬‬
‫‪ :Decay ‬هو ضعف الوسيط الذي يتم تخزين المعلومات عليه أو ضياع‬
‫المعلومات من الوسيط بعد فترة‪.‬‬
‫‪ :Volatility ‬هو عدم إمكانية الوصول إلى المعلومات ضمن الذاكرة إال‬
‫بوجود التيَّار الكهربائي‪.‬‬
‫الخاصيَّة التي تحدد ما إذا كانت المعلومات في وسيط‬
‫‪ :Erasable ‬هي‬
‫ِّ‬
‫التخزين قابلةً للمسح أم ال‪.‬‬
‫‪ :Power consumption ‬هو معدَّل الطاقة المستهلكة في وسيط‬
‫التخزين‪.‬‬
‫‪ -8‬التنظيم‪ :‬هو طريقة وضع بتات الكلمة الواحدة في الذاكرة وهو غالبا ً يختلف من وسيط‬
‫تخزين إلى وسيط آخر‪.‬‬
‫سابقة مثالً كلما زادت السعة زاد‬
‫*يبقى السعر الذي يعتمد على كل من الخصائص ال َّ‬
‫سعر الذاكرة وكذلك كلما كان معدل تناقلها أسرع زاد سعرها*‬
‫تراتبية الذواكر من جديد‪:‬‬
‫‪ -1‬سجالت المعالج‬
‫‪L1 Cache -2‬‬
‫‪L2 Cache -3‬‬
‫‪ -4‬الذاكرة الرئيسيَّة‬
‫‪ -5‬ذاكرة التخزين المؤقت على القرص (‪ :)Disk Cache‬ذاكرة التخزين المؤقت على‬
‫القرص هي آلية لتحسين الوقت المستغرق في القراءة من قرص ثابت أو الكتابة‬
‫إليه‪ .‬اليوم‪ ،‬عادة ما يتم تضمين ذاكرة التخزين المؤقت على القرص كجزء من‬
‫القرص الثابت‪ .‬يمكن أن تكون ذاكرة التخزين المؤقت على القرص جز ًءا محددًا‬
‫من ذاكرة الوصول العشوائي (‪.)RAM‬‬
‫‪ -6‬القرص الصلب‪.‬‬
‫‪ -7‬األقراص الليزرية‪.‬‬
‫‪.Tapes -8‬‬
‫‪87‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مالحظة‪ :‬يمكن تصنيع حاسوب كل الذاكرة فيه تكون ساكنة وبالتالي سيكون معدل النَّقل سريع‬
‫جدا ً ومضمون ولن يحتاج إلى ذاكرة ‪ً Cache‬‬
‫ألن ال‪ Cache‬بتعريفها هي ذاكرة ساكنة تكون‬
‫َّ‬
‫محطة مؤقَّتة لحفظ المعلومات‪ ،‬سيترتب على هذا األمر َّ‬
‫أن الكلفة ستكون عالية جداً‪.‬‬
‫الذَّاكرة الخابية (‪:)Cache Memory‬‬
‫هي ذاكرة ساكنة وهي مقدار صغير ج َّدا ً من المعلومات موجودة بين الذاكرة الرئيسيَّة والمعالج‬
‫وظيفتها تسريع األداء بحيث أنها تعتبر محطة تخزين مؤقت للمعلومات القادمة من المعالج‬
‫والقادمة إليه‪.‬‬
‫‪ ‬من الممكن أن تكون خابية ضمن المعالج‪.‬‬
‫صورة توضح توضَّع الذاكرة الخابية‬
‫فيما بعد أصبح هناك مستويات للذاكرة الخابية (مثالً الذاكرة الخابية بثالث مستويات)‪:‬‬
‫ذاكرة التخزين المؤقت ‪ ،L1‬أو ذاكرة التخزين المؤقت األساسية‪ ،‬سريعة للغاية ولكنها صغيرة‬
‫نسبيَّا ً‪ ،‬ويتم تضمينها عادة ً في شريحة المعالج كمخزن مؤقت لوحدة المعالجة المركزية‪،‬‬
‫والمستوى الثالث من ذاكرة التخزين المؤقت )‪(L3‬هي ذاكرة مخصصة تم تطويرها لتحسين أداء‬
‫كل من (‪ )L2‬و (‪ .)L1‬يمكن أن تكون (‪ )L2‬و (‪ )L1‬أسرع بشكل ملحوظ من )‪ ،(L3‬على الرغم‬
‫من أن ‪ L3‬عادة ً ما تكون ضعف سرعة ذاكرة الوصول العشوائي‪.‬‬
‫‪88‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫نقل المعطيات وفائدة الذاكرة الخابية‪:‬‬
‫ى من عنوان معين في الذاكرة‪ ،‬يتم الفحص ما إذا كانت‬
‫تطلب وحدة المعالجة المركزيَّة محتو ً‬
‫المعلومة موجودة في الذاكرة الخابية ‪ Cache‬فإذا وجدت المعلومة فيها يجلب المعالج‬
‫المعلومات من ‪ Cache‬والعمليَّة سريعة‪ ،‬وإذا لم توجد المعلومة يتم الذَّهاب للذاكرة وتجلب‬
‫المعلومة من العنوان المذكور مع ال‪ Block‬الذي يحويها ويتم وضع ال‪ Block‬كامالً في ال‬
‫‪ Cache‬ويأخذ المعالج محتوى العنوان المطلوب‪.‬‬
‫*مخ َّ‬
‫طط تفصيلي يوضح العمليَّة*‬
‫تنظيم المعلومات ضمن ال‪: Cache‬‬
‫الرئيسيَّة‪.‬‬
‫يوجد مقابلة بين الذاكرة الخابية والذاكرة َّ‬
‫يمكن تقطيع الذاكرة الرئيسيَّة إلى عدد كبير جدا ً من ‪ Blocks‬والذاكرة الخابية تتسع لـِّعدد ‪C‬‬
‫من ال‪ Blocks‬فقط بحيث كل ‪ Block‬يتألَّف من عدد ‪ K‬من الكلمات وكل من هذه ال‪Blocks‬‬
‫لها ‪ Tag‬خاص بها من أجل ضمان أسرع وصول إليها‪.‬‬
‫‪89‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الرئيسيَّة والذاكرة الخابية (الحظ ال‪ Tag‬لكل ‪* )Block‬‬
‫* شكل يوضح التقابل بين الذاكرة َّ‬
‫بفرض َّ‬
‫أن الذاكرة الخابية امتألت في لحظة من اللحظات وجاء ‪ Block‬إليها‪ ،‬ماذا يحدث؟‬
‫يتم استخدام أحد خوارزميات التفريغ لل‪( Cache‬خوارزمية التبديل) أي تبديل أحد أسطر ال‬
‫سطر الذي سيتم حذفه اختياري حسب الخوارزمية المعتمدة (من‬
‫‪ Cache‬بالسطر الجديد وال َّ‬
‫الممكن أن يكون السطر األقدم أو السطر األول أو األخير أو حتى سطر عشوائي)‪.‬‬
‫سياسة الكتابة على الذاكرة‪:‬‬
‫عند كتابة المستخدم لكلمة من أجل تخزينها في الذاكرة فهي ال تكتب مباشرة على الذاكرة ألن‬
‫هذا األسلوب بطيء في الذهاب إلى الذاكرة والرجوع منها‪ ،‬بل يتم كتابتها في الذاكرة الخابية‬
‫حتى ينتهي المستخدم ثم ينتقل ال‪ Block‬بالكامل لتتم كتابته على الذاكرة‪.‬‬
‫‪90‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫يمكن وضع تصميم لل‪ Cache‬كالتالي‪:‬‬
‫يترك للقارئ فهم طريقة الكتابة والقراءة باالعتماد على ما ت َّم ذكره آنفاً‪.‬‬
‫تصميم الذاكرة الخابية‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫أنماط العنونة‬
‫الحجم‪ :‬كلما زاد حجم ال‪ Cache‬تصبح أفضل وأغلى من حيث السعر‬
‫ولكن هذا األمر يبقى حتى حد معين بعده يصبح تكبير الذاكرة غير مفيد‬
‫َّ‬
‫ألن زمن الفحص فيها سيأخذ وقتا ً أطول‪.‬‬
‫طريقة التقابل بينها وبين الذاكرة الرئيسيَّة‬
‫خوارزميَّة التَّبديل‬
‫سياسة الكتابة‬
‫حجم ال‪Block‬‬
‫عدد الذواكر الخابية‬
‫‪91‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫التقابل بين الذاكرة الخابية والذاكرة الرئيسيَّة‪:‬‬
‫لتكن لدينا ذاكرة خابية ‪ Cache‬حجمها ‪ 64KByte‬أي أنَّها مؤلَّفة من ‪ 216‬بايت وليكن حجم‬
‫كل ‪ Block‬في هذه الذَّاكرة هو ‪ 4Byte‬ولدينا أيضا ً ذاكرة رئيسيَّة حجمها ‪ 16MByte‬بالتَّالي‪:‬‬
‫يتكون من ‪ 4‬بايتات‪.‬‬
‫‪‬‬
‫تتكون ال َّذاكرة الخابية من ‪ 214‬خط‪ ،‬كل خط َّ‬
‫َّ‬
‫‪ ‬يمكن جلب أكثر من ‪ 16000 Block‬من الذاكرة ووضعها في الذاكرة الخابية‪.‬‬
‫سابقة*‬
‫*صورة توضح شكل الذَّاكرة الخابية ال َّ‬
‫الرئيسيَّة عن طريق ‪ 24‬خط عنونة‬
‫‪ ‬يمكن الوصول إلى عنوان أي بايت من الذاكرة َّ‬
‫َّ‬
‫ألن‪:‬‬
‫)𝑒𝑡𝑦𝐵( ‪16 (𝑀𝑒𝑔𝑎 𝐵𝑦𝑡𝑒) = 16 ∗ 220 (𝐵𝑦𝑡𝑒) = 224‬‬
‫وبذلك نعلم أنَّه يوجد ‪ 224‬موضع مختلف في الذاكرة‪.‬‬
‫‪92‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم ‪12‬‬
‫الرابع‬
‫الدرس َّ‬
‫تاريخ‪:‬األربعاء‪27/2/2019‬‬
‫سابقة*‬
‫*رسم توضيحي لكيفيَّة الوصول إلى أي بايت من الذاكرة ال َّ‬
‫شرح‪ :‬يأتي عنوان البايت المراد عن طريق خط عنونة مؤلَّف من ‪ 24‬بت وبذلك يتم تحديد كل‬
‫سطر الذي يوجد فيه البايت وكذلك تحديد العمود وذلك عن طريق ‪ Decoders‬وبالتالي‬
‫من ال َّ‬
‫الوصول لمكان البايت‪.‬‬
‫التَّقابُل المباشر (‪:)Direct Mapping‬‬
‫‪ ‬عن طريق هذا التقابل تكون كل كتلة من الذاكرة تقابَل بسطر واحد وواحد فقط في‬
‫الذاكرة الخابية(‪.)Cache‬‬
‫‪ ‬بما َّ‬
‫الرئيسيَّة هي من مضاعفات ‪2‬‬
‫أن‬
‫حجم كل من الذاكرة الخابية والذاكرة َّ‬
‫َ‬
‫الرئيسيَّة من‬
‫بالضَّرورة‪ ،‬بالتَّالي مهما كان حجم الذاكرة الخابية سيكون حجم الذاكرة َّ‬
‫مضاعفات حجم الذاكرة الخابية‪.‬‬
‫صغيرة التي‬
‫الرئيسيَّة مق َّ‬
‫سمة إلى عدد 𝑡‪ 2‬من الذواكر ال َّ‬
‫لتبسيط المفهوم نعتبر الذَّاكرة َّ‬
‫حجمها يساوي حجم ال‪ Cache‬عندئذ كل خط في ال‪ Cache‬سيكون مسبوقا ً بالعدد 𝑡‬
‫الذي يشير إلى عدد البتَّات الالزم لتمييز ال‪ Block‬القادم من أحد تلك الذواكر‪.‬‬
‫‪93‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الرئيسيَّة والذاكرة الخابية‬
‫*شكل يبين التقابل بين الذاكرة َّ‬
‫في طريقة التقابل المباشر*‬
‫‪94‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫بأول خط فقط من الذاكرة‬
‫‪ ‬هذا التَّقابل يجعل أول ‪ Block‬من كل ذاكرة صغيرة يرتبط َّ‬
‫الخابية وكذلك الحال بالنِّسبة لكل ‪ Block‬موجود في كل ذاكرة صغيرة بحيث يوجد‬
‫لكل خط في الذاكرة الخابية عدد من ال‪ Blocks‬يساوي 𝑡‪.2‬‬
‫الرئيسيَّة‪.‬‬
‫ملحوظة‪ِّ s :‬‬
‫يمثل عدد ال‪ Blocks‬في الذَّاكرة َّ‬
‫‪ ‬ال يجوز وجود سطرين (خطين) من الذاكرة الخابية بحيث يكون لهما نفس ال‪.Tag‬‬
‫صفحة ‪:29‬‬
‫عودة إلى المثال في ال َّ‬
‫بما َّ‬
‫أن كل ‪ Block‬يتألَّف من ‪ 4‬بايتات فنستعمل التَّخطيط التَّالي‪:‬‬
‫سبب جعل حقل ال‪ Tag‬عبارة عن ‪ 8‬بتات‪:‬‬
‫𝑦𝑟𝑜𝑚𝑒𝑀 𝑛𝑖𝑎𝑀 𝑓𝑜 𝑒𝑧𝑖𝑆‬
‫‪224‬‬
‫( ‪𝑇𝑎𝑔 𝐵𝑖𝑡𝑠 = 𝐿𝑜𝑔2‬‬
‫‪) = 𝐿𝑜𝑔2 ( 16 ) = 8‬‬
‫𝑒‪𝑆𝑖𝑧𝑒 𝑜𝑓 𝐶𝑎𝑐ℎ‬‬
‫‪2‬‬
‫سبب جعل حقل ال‪ Line‬عبارة عن ‪ 14‬بت‪َّ :‬‬
‫إن عدد األسطر (الخطوط) في الذاكرة‬
‫الخابية هو ‪ 214‬أي أننا نحتاج لتحديد أي خط في هذه الذاكرة إلى ‪ 14‬بت‪.‬‬
‫‪95‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سبب جعل حقل ال‪ word‬عبارة عن ‪ 2‬بت‪ :‬بما َّ‬
‫أن كل ‪ Block‬تتألَّف من ‪ 4‬بايتات‬
‫وبما َّ‬
‫أن حجم الكلمة الواحدة هو بايت واحد بالتالي لتحديد أي بايت من هذه البايتات بدقة‬
‫نحتاج إلى ‪ 2‬بت‪.‬‬
‫كيفيَّة عمليَّة البحث في هذه ال َّ‬
‫طريقة‪:‬‬
‫صل مهم‪:‬‬
‫سيتم توضيح هذه الفقرة عن طريق مثال مفَ َّ‬
‫ليكن لدينا‪:‬‬
‫‪ -1‬ذاكرة رئيسيَّة بحجم ‪ 128‬بايت‪.‬‬
‫‪ -2‬ذاكرة خابية بحجم ‪ 32‬بايت‪.‬‬
‫‪ -3‬حجم ال‪ Block‬يساوي ‪ 8‬بايت‪.‬‬
‫الرئيسيَّة من ‪.16 Block‬‬
‫إذا ً تتألَّف الذاكرة الخابية من ‪ 4‬أسطر وتتألف الذاكرة َّ‬
‫نستنتج َّ‬
‫الرئيسيَّة والذَّاكرة الخابية يكونان كالتالي‪:‬‬
‫أن كل من شكلي الذاكرة َّ‬
‫‪96‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫وكما أسلفنا سيكون التالي محققاً‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫السطر األول من الذاكرة الخابية سيكون فارغا ً أو يحوي ‪ Block‬من الذاكرة في‬
‫الموقع (‪.)0000,0100,1000,1100‬‬
‫السطر الثَّاني من الذاكرة الخابية سيكون فارغا ً أو يحوي ‪ Block‬من الذاكرة في‬
‫الموقع (‪.)0001,0101,1001,1101‬‬
‫السطر الثَّالث من الذاكرة الخابية سيكون فارغا ً أو يحوي ‪ Block‬من الذاكرة في‬
‫الموقع (‪.)0010,0110,1010,1110‬‬
‫الرابع من الذاكرة الخابية سيكون فارغا ً أو يحوي ‪ Block‬من الذاكرة في‬
‫السطر َّ‬
‫الموقع (‪.)0011,0111,1011,1111‬‬
‫اآلن ستظهر فائدة البتَّات الزا ِّئدة في كل سطر من ال‪ Cache‬وهي ‪:Tag Bits‬‬
‫األول في الذاكرة الخابية هي ‪ 01‬فإنَّه يعلمنا َّ‬
‫بفرض َّ‬
‫بأن البلوك‬
‫أن بتات ال‪ Tag‬للسطر َّ‬
‫الموجود في هذا السطر هو من الموقع ‪.0100‬‬
‫‪97‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سبب‪َّ :‬‬
‫إن رقم سطر الذاكرة الخابية هو ‪ 00‬وهو يشكل البتات األقل وزنا ً ‪ LSB‬من الموقع‬
‫ال َّ‬
‫األصلي وكذلك َّ‬
‫تشكل البتات األكثر وزنا ً ‪ MSB‬من الموقع األصلي‬
‫إن بتات ال‪ِّ Tag‬‬
‫واجتماعها كما نرى هو ‪ 0100‬وكذلك الحال بالنسبة للسطر الثاني من الذاكرة الخابية حيث‬
‫الرئيسيَّة‪.‬‬
‫أنَّها تحوي محتوى العنوان ‪ 1101‬من الذاكرة َّ‬
‫اآلن كيفيَّة طلب العناوين من قبل ال‪ CPU‬وفائدة ال‪: Cache‬‬
‫بفرض َّ‬
‫أن ال‪ CPU‬قام بطلب العناوين التَّالية‪:‬‬
‫‪0000010 -1‬‬
‫‪0101011 -2‬‬
‫‪0100011 -3‬‬
‫‪0101111 -4‬‬
‫‪ ‬أثناء َّ‬
‫األول سيتم تقسيم العنوان القادم بال َّ‬
‫شكل التَّالي‪:‬‬
‫الطلب َّ‬
‫‪98‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪Tag Bits‬‬
‫)‪Cache Index(Line‬‬
‫‪Word‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫األول في الذاكرة الخابية‪ ،‬وبما َّ‬
‫أن‬
‫البتين لل‪ Cache Index‬نعلم أنَّنا في ال َّ‬
‫عن طريق ِّ‬
‫سطر َّ‬
‫هناك ‪ Block‬موجو ٌد في الذاكرة الخابية مع ‪ Tag Bits‬والتي قيمتها في الذاكرة الخابية هي‬
‫القيمة ‪ ،0 0‬تتم مقارنة ‪ Tag Bits‬في ال‪ Cache‬مع ‪ Tag Bits‬الموجودة في العنوان القادم‬
‫من ال‪ CPU‬وبما أنَّهما متساويين َّ‬
‫فإن ذات ال‪ Block‬التي يطلبها ال‪ CPU‬من الذاكرة موجودة‬
‫األول من الذاكرة الخابية دون‬
‫في ال‪ Cache‬وبذلك يجلب ال‪ CPU‬البايت الهدف من السطر َّ‬
‫الحاجة للذهاب للذاكرة وبذلك يكون لدينا ‪.Cache Hit‬‬
‫‪ ‬أثناء َّ‬
‫الطلب الثَّاني سيتم تقسيم العنوان القادم بال َّ‬
‫شكل التَّالي‪:‬‬
‫)‪Cache Index(Line‬‬
‫‪Word‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫كذلك الحال وبنفس َّ‬
‫الطريقة سيكون لدينا ‪.Cache Hit‬‬
‫‪Tag Bits‬‬
‫‪1‬‬
‫‪0‬‬
‫أثناء َّ‬
‫الطلب الثَّالث سيحدث لدينا ‪ Cache Miss‬وسيضطر المعالج للذهاب للذَّاكرة لجلب ال‬
‫‪ Block‬مع التذكير َّ‬
‫بأن ال‪ CPU‬سيقوم بوضع هذا ال ‪ Block‬في ال‪. Cache‬‬
‫في َّ‬
‫علل ذلك‪.‬‬
‫الرابع سيحدث ‪ِّ ،Cache Hit‬‬
‫الطلب َّ‬
‫‪99‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مل َّخص سريع‪ :‬عند طلب عنوان ذاكرة ما‪ ،‬يتم تقسيم هذا العنوان إلى ال َّ‬
‫شكل‪:‬‬
‫‪Tag Bits‬‬
‫)‪Cache Index(Line‬‬
‫‪Word‬‬
‫سطر ال‪ Cache‬الذي ي َمثَّل رقمه ببتات الـ ‪ Cache Index‬من ث َّم‬
‫وبذلك يذهب ال‪ CPU‬إلى َّ‬
‫يقوم بمقارنة بتات ال‪ Tag‬لكل من العنوان القادم من ال‪ CPU‬وسطر ال‪ Cache‬وعند‬
‫تساويهما يكون لدينا ‪ Cache Hit‬وغير ذلك يكون لدينا ‪ Cache Miss‬ويجلب ال‪ CPU‬ال‬
‫سطر الذي ي َمثَّل رقمه ببتات ‪Cache‬‬
‫‪ Block‬من الذاكرة ويضعها في الذاكرة الخابية في ال َّ‬
‫‪.Index‬‬
‫مثال آخر‪:‬‬
‫الحظ ال َّ‬
‫شكل واستنتج ما سبق‪.‬‬
‫‪100‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫ال َّ‬
‫شكل العام للعنوان في التَّقابل المباشر‪:‬‬
‫‪Word‬‬
‫‪w‬‬
‫)‪Cache Index(Line‬‬
‫‪r‬‬
‫‪Tag Bits‬‬
‫‪s-r‬‬
‫بالتالي‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طول العنوان يساوي ‪.s+w‬‬
‫عدد الكلمات التي يمكن الوصول إليها‪.2s+w :‬‬
‫سطر في ‪.2w = Cache‬‬
‫حجم ال‪ = Block‬حجم ال َّ‬
‫عدد ال‪ Blocks‬في الذاكرة الرئيسيَّة = ‪.2s‬‬
‫عدد األسطر في الذاكرة الخابية = ‪.2r‬‬
‫طول حقل ال‪ )s-r( = Tag‬من البتات‪.‬‬
‫حجم الذاكرة الخابية = ‪.2r+w‬‬
‫خصائص التقابل المباشر‪:‬‬
‫‪ ‬بسيط‪.‬‬
‫‪ ‬غير مكلف‪.‬‬
‫‪ ‬الموقع ثابت لمجموعة من ال‪ Blocks‬وبالتالي إذا كان البرنامج يصل إلى أكثر من‬
‫سطر ستزيد احتماليَّة عدم حصول ال‪ Cache‬على‬
‫‪ Block‬التي تشير إلى نفس ال َّ‬
‫المعلومة وذهاب المعالج إلى الذَّاكرة‪.‬‬
‫تمرين‪ :‬بفرض َّ‬
‫أعط ‪ 4‬عناوين كتل في الذَّاكرة والتي‬
‫أن ال‪ CPU‬أعطى العنوان )‪ِّ 351234(Hex‬‬
‫تقابَل في سطر واحد في ال‪. Cache‬‬
‫سابق بالنِّظام الثُّنائي‪:‬‬
‫الحل‪ :‬نقوم بكتابة العنوان ال َّ‬
‫‪351234(Hex) = 001101010001001000110100(Bin).‬‬
‫مع العلم َّ‬
‫أن عدد ال ِّبتَّات في العنوان هو كالتَّالي‪:‬‬
‫‪Word‬‬
‫‪2‬‬
‫)‪Cache Index(Line‬‬
‫‪14‬‬
‫‪101‬‬
‫‪Tag Bits‬‬
‫‪8‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫يكون‪:‬‬
‫‪Tag Bits‬‬
‫)‪Cache Index(Line‬‬
‫‪Word‬‬
‫‪00110101‬‬
‫‪00010010001101‬‬
‫‪00‬‬
‫من الواضح َّ‬
‫أن تغيير ال‪ Tag‬في كل مرة كفيل بتوليد عنوان يرتبط بنفس السطر في الذاكرة‬
‫الخابية‪ ،‬بمعنى أنَّه طالما كان )‪ Cache Index(Line‬ثابتا ً وال‪ Tag‬يتغيَّر َّ‬
‫فإن العنوان الجديد‬
‫سطر في ال‪.Cache‬‬
‫سيؤشر إلى نفس ال َّ‬
‫ِّ‬
‫مثالً‪:‬‬
‫لتكن ‪ Tag Bits‬تأخذ القيم التَّالية(بالبت)‪:‬‬
‫‪0000 0001‬‬
‫‪0010 0011‬‬
‫‪1101 1101‬‬
‫‪1111 1111‬‬
‫يصبح لدينا العناوين التالية التي تحقق المطلوب‪:‬‬
‫‪011234(Hex).‬‬
‫‪231234(Hex).‬‬
‫‪DD1234(Hex).‬‬
‫‪FF1234(Hex).‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫التَّقابُل الجماعي (‪:)Associative Mapping‬‬
‫‪ ‬طريقة التَّقابل هذه تسمح بتخزين أي ‪ Block‬من الذاكرة الرئيسيَّة في أي مكان في‬
‫الذاكرة الخابية‪.‬‬
‫نتيجة‪ :‬ال حاجة لحقل )‪ Cache Index(Line‬في هذه َّ‬
‫الطريقة‪.‬‬
‫إن حقل ال‪ Tag‬في هذه َّ‬
‫‪َّ ‬‬
‫يعرف ‪ Block‬من الذَّاكرة‪.‬‬
‫الطريقة ِّ‬
‫‪ ‬االختالف يأتي في تصميم ال‪ Cache‬بحيث أنَّه عند البحث تتم مقارنة ال‪ Tag‬من‬
‫العنوان المطلوب مع ال‪ Tags‬لجميع أسطر ال‪ Cache‬في ضربة واحدة‬
‫(‪.)1Cycle‬‬
‫‪ ‬هذه َّ‬
‫الطريقة تقلل الوقت وجيدة لكنَّها غالية من حيث التجهيزات ‪.Hardware‬‬
‫‪102‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫انظر الشكل‪:‬‬
‫الحظ كيف تتم مقارنة ال‪ Tag‬مع جميع ال‪ Tags‬في ال‪. Cache‬‬
‫عند حصول مطابقة نحصل على ‪.Cache Hit‬‬
‫عند عدم حصول مطابقة نحصل على ‪ Cache Miss‬ويضطر ال‪ CPU‬إلى الذهاب للذَّاكرة ثم‬
‫المصمم‪:‬‬
‫يرجع بال‪ Block‬ويضعه في ال‪ Cache‬بطريقة يحددها‬
‫ِّ‬
‫من الممكن أن توضع ال‪ Block‬التي تم جلبها من الذاكرة في‪:‬‬
‫‪ ‬أول سطر متاح في ال‪. Cache‬‬
‫‪ ‬آخر سطر متاح في ال‪. Cache‬‬
‫‪ ‬سطر عشوائي في ال‪. Cache‬‬
‫تساؤل‪ :‬بفرض َّ‬
‫أن ال‪ CPU‬قام بطلب عنوان ولم يجده في ال‪ Cache‬فذهب إلى الذاكرة‬
‫وجلبه وعند محاولة وضعه في ال‪ Cache‬اتضح َّ‬
‫أن ال‪ Cache‬ممتلئة‪ ،‬ما الحل؟‬
‫‪103‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫هنا يتم استخدام خوارزميَّات التبديل بحيث من الممكن أن توضع ال‪ Block‬التي تم جلبها من‬
‫الذاكرة بدالً من‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫أول سطر متاح في ال‪. Cache‬‬
‫آخر سطر متاح في ال‪. Cache‬‬
‫سطر عشوائي في ال‪. Cache‬‬
‫سطر األقدم في ال‪. Cache‬‬
‫ال َّ‬
‫ويوجد أيضا ً بدائل أخرى من الممكن أن يحددها المصمم‪.‬‬
‫مثال‪:‬‬
‫‪ ‬الحظ حجم ال‪. Cache‬‬
‫‪ ‬الحظ ال‪. Tag‬‬
‫‪104‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫بالتالي يمكن أن نعرف مثاالً للعنوان في طريقة ‪:Associative Mapping‬‬
‫‪Tag Bits‬‬
‫‪ 22‬بت‬
‫‪Word‬‬
‫‪ 2‬بت‬
‫تمرين ‪ :1‬بفرض َّ‬
‫أن ال‪ CPU‬قام بطلب العنوان )‪ 16339C(Hex‬قم بحساب ‪.Tag ,w‬‬
‫سداسي عشر إلى ثنائي )‪ (Binary‬ونحسب ‪ w‬من البتين‬
‫الحل‪ :‬نقوم بتحويل العنوان ال ُّ‬
‫األقل رتبة ‪ Least Significant Bits‬ونحسب ‪ Tag‬من بقيَّة البتات (عددها ‪.)22‬‬
‫‪9‬‬
‫‪C‬‬
‫‪1001‬‬
‫‪1100‬‬
‫بالتَّالي يصبح لدينا‪:‬‬
‫‪w‬‬
‫‪00‬‬
‫إذا ً‪:‬‬
‫‪0111‬‬
‫‪1110‬‬
‫‪3‬‬
‫‪0011‬‬
‫‪3‬‬
‫‪0011‬‬
‫‪Tag‬‬
‫‪1000 1100‬‬
‫‪6‬‬
‫‪0110‬‬
‫‪0101‬‬
‫‪1‬‬
‫‪0001‬‬
‫‪00‬‬
‫)‪w = 0(Hex‬‬
‫)‪Tag = 058CE7(Hex‬‬
‫تمرين ‪ :2‬بفرض َّ‬
‫سابقة‬
‫أن ال‪ CPU‬قام بطلب العنوان )‪ FFFFFC(Hex‬قم بإعادة الخطوات ال َّ‬
‫واحسب كل من ‪ Tag‬و ‪.w‬‬
‫بنفس طريقة التقابل المباشر نالحظ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طول العنوان يساوي ‪.s+w‬‬
‫عدد الكلمات التي يمكن الوصول إليها‪.2s+w :‬‬
‫سطر في ‪.2w = Cache‬‬
‫حجم ال‪ = Block‬حجم ال َّ‬
‫عدد ال‪ Blocks‬في الذاكرة الرئيسيَّة = ‪.2s‬‬
‫عدد األسطر في الذاكرة الخابية غير محدَّد‪.‬‬
‫طول حقل ال‪ )s( = Tag‬من البتات‪.‬‬
‫‪105‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫الرابع‬
‫الدرس َّ‬
‫التَّقابل بالمجموعات (‪:)Set Associative Mapping‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طريقة التَّقابل هذه تقوم بتقسيم الذاكرة إلى عدد 𝑖‪ 2‬من المجموعات ‪.Sets‬‬
‫يكون الوصول إلى كل مجموعة مشابها ً للوصول إلى سطر الذاكرة الخابية في‬
‫التَّقابل المباشر (‪.)Direct Mapping‬‬
‫تتكون كل ‪ Set‬من مجموعة من األسطر‪.‬‬
‫َّ‬
‫سطر في المجموعة الواحدة مشابها ً للوصول إلى سطر الذَّاكرة‬
‫يكون الوصول إلى ال َّ‬
‫الخابية في التَّقابل الجماعي (‪ ،)Associative Mapping‬أي أنَّه يمكن ألي‬
‫كتلة(‪ )Block‬في الذاكرة أن تقابَل في مجموعة (‪ )Set‬معطاة‪.‬‬
‫هدف هذه َّ‬
‫الطريقة هو تقليل تعقيد الذَّاكرة الخابية من حيث الدارات الدَّاخلية ألنه‬
‫كما الحظنا تعتبر طريقة ‪ Fully Associative‬معقَّدة إلى حد كبير‪.‬‬
‫صة من هذه الحالة العا َّمة بحيث‬
‫مالحظة‪ :‬طريقة ‪ Fully Associative‬هي حالة خا َّ‬
‫تكون‪:‬‬
‫‪2𝑖 = 1 → 𝑖 = 0‬‬
‫‪ ‬طبعا ً "بالتَّعريف" تكون طريقة التَّقسيم هذه مرتبطة بعدد ‪ K‬وهو عدد المجموعات‬
‫الَّذي سيتم التَّقسيم إليه أي َّ‬
‫𝒊𝟐 = ‪K‬‬
‫أن‪:‬‬
‫قارنات في حقل ال‪َّ Tag‬‬
‫ألن المقارنة تكون‬
‫‪ ‬يكون تقليل التَّعقيد بتقليل عدد الم َ‬
‫المقارنات أقل كان تعقيد الدَّارة أقل‪.‬‬
‫فيزيائيَّة (بال‪ ) Hardware‬أي كلَّما كان عدد‬
‫َ‬
‫تذكرة‪ :‬في طريقة (‪ )Fully Associative‬كانَ يتم مقارنة ال‪ Tag‬للعنوان مع ال‪Tag‬‬
‫لكل سطر موجود في الذَّاكرة الخابية‪.‬‬
‫أصبح يلزم تقسيم جديد للعنوان عندما يطلبه ال‪ CPU‬لكي يبحث في الذاكرة الخابية‬
‫باستعمال هذه الطريقة‪:‬‬
‫‪word‬‬
‫‪w‬‬
‫‪Tag‬‬
‫‪The rest of bits‬‬
‫‪Set Index‬‬
‫‪s‬‬
‫‪106‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم ‪13‬‬
‫تاريخ‪ :‬الثالثاء‪5/3/2019‬‬
‫مثال على نفس الذَّاكرة التي استعملناها في الصفحة ‪:96‬‬
‫*طريقة ‪*2-Way Associative‬‬
‫*طريقة ‪*4-Way Associative‬‬
‫‪107‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫لنقم بشرح َّ‬
‫الطريقة بشكل أكثر تفصيال‪:‬‬
‫‪ ‬بفرض َّ‬
‫أن كل من ال‪ Block‬في الموقع ‪ 0001‬و‪ 0011‬موجودتين في الذاكرة‬
‫سبب هو َّ‬
‫أن‪:‬‬
‫الخابية فإنَّهما ستكونان في المجموعة ‪ Set 1‬وال َّ‬
‫𝑡𝑒𝑠 𝑒‪𝐾 = 21 → 𝐿𝑜𝑔2 (𝐾 ) = 1 → 1 𝑏𝑖𝑡 𝑓𝑜𝑟 𝑠𝑒𝑙𝑒𝑐𝑡𝑖𝑛𝑔 𝑡ℎ‬‬
‫بالتَّالي نحن بحاجة بت واحد لمعرفة مكان انتماء كل ‪ Block‬في حال وجودها في‬
‫أحد أسطر الذَّاكرة الخابية‪.‬‬
‫إذا ً كل ‪ Block‬يكون فيها البت األقل وزنا ً هو ‪ 0‬ينتمي إلى ‪.Set 0‬‬
‫وكل ‪ Block‬يكون فيها البت األقل وزنا ً هو ‪ 1‬ينتمي إلى ‪.Set 1‬‬
‫‪ ‬بقيَّة البتات ستكون هي ال‪ Tag‬الذي يتم البحث عنه‪.‬‬
‫تذكرة‪:‬‬
‫‪ -1‬الذاكرة رئيسيَّة بحجم ‪ 128‬بايت‪.‬‬
‫‪ -2‬الذاكرة خابية بحجم ‪ 32‬بايت‪.‬‬
‫‪ -3‬حجم ال‪ Block‬يساوي ‪ 8‬بايت‪.‬‬
‫‪108‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ ‬في مثالنا بفرض َّ‬
‫أن ال‪ CPU‬قام بطلب العنوان )‪.0001010(Bin‬‬
‫سيكون لدينا‪:‬‬
‫)‪The Tag (3 Bits‬‬
‫)‪The Set (1 Bit‬‬
‫)‪Word (3 Bits‬‬
‫‪000‬‬
‫‪1‬‬
‫‪010‬‬
‫وبالتالي َّ‬
‫فإن ال‪ Block‬الذي ت َّم طلبه سيتم البحث عنه في الذاكرة الخابية في‬
‫قارنات سيتم مقارنة ال‪ Tag‬للعنوان الذي‬
‫المجموعة ‪ Set 1‬وعن طريق دارة الم ِّ‬
‫طلبه ال‪ CPU‬مع ال‪ Tag‬ألسطر المجموعة ‪ Set 1‬ونالحظ هنا عمليَّتي مقارنة تم‬
‫تنفيذها بضربة واحدة وناتج العمليَّة هي ‪.Cache Hit‬‬
‫تمرين‪ :‬لتكن لدينا ذاكرة خابية بحجم ‪ 8-Kbyte‬وحجم السطر فيها يساوي ‪ 16‬بايت‪ ،‬ولدينا‬
‫أيضا ً ذاكرة رئيسيَّة بحجم ‪ 64-Mbyte‬حيث أنَّه يمكن الوصول إلى أي بايت فيها ولتكن‬
‫طريقة المقابلة هي ‪.Two-way Set Associative‬‬
‫أوجد‪:‬‬
‫‪ -1‬أوجد طول العنوان بالبت‪.‬‬
‫‪ -2‬عدد الوحدات القابلة للوصول‪.‬‬
‫سطر‪.‬‬
‫‪ -3‬حجم ال‪ Block‬وحجم ال َّ‬
‫الرئيسيَّة‪.‬‬
‫‪ -4‬عدد ال‪ Blocks‬في الذَّاكرة َّ‬
‫‪ -5‬عدد األسطر في المجموعة الواحدة‪.‬‬
‫‪ -6‬عدد المجموعات‪.‬‬
‫‪ -7‬عدد األسطر في الذاكرة الخابية‪.‬‬
‫‪ -8‬حجم حقل ال‪. Tag‬‬
‫الحل‪:‬‬
‫‪ -1‬طول العنوان يساوي‪:‬‬
‫)𝑦𝑟𝑜𝑚𝑒𝑀 𝑛𝑖𝑎𝑀 𝑓𝑜 𝑒𝑧𝑖𝑆( ‪𝐿𝑒𝑛𝑔𝑡ℎ 𝑜𝑓 𝑡ℎ𝑒 𝑎𝑑𝑑𝑟𝑒𝑠𝑠 = 𝐿𝑜𝑔2‬‬
‫‪𝐿𝑒𝑛𝑔𝑡ℎ 𝑜𝑓 𝑡ℎ𝑒 𝑎𝑑𝑑𝑟𝑒𝑠𝑠 = 𝐿𝑜𝑔2 (226 ) = 26‬‬
‫‪ -2‬عدد الوحدات القابلة للوصول يساوي ‪ 226‬وحدة وكل منها عبارة عن بايت‪.‬‬
‫سطر في الذاكرة الخابية‪.‬‬
‫‪ -3‬حجم ال‪ Block‬يساوي ‪ 16‬بايت وكذلك حجم ال َّ‬
‫الرئيسيَّة‪:‬‬
‫‪ -4‬عدد ال‪ Blocks‬في الذَّاكرة َّ‬
‫‪109‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫𝑦𝑟𝑜𝑚𝑒𝑀 𝑛𝑖𝑎𝑀 𝑓𝑜 𝑒𝑧𝑖𝑆‬
‫‪226‬‬
‫= 𝑠𝑘𝑐𝑜𝑙𝐵 𝑓𝑜 𝑟𝑒𝑏𝑚𝑢𝑁‬
‫‪= 4 = 222‬‬
‫𝑘𝑐𝑜𝑙𝐵 𝑓𝑜 𝑒𝑧𝑖𝑆‬
‫‪2‬‬
‫‪ -5‬أوالً‪ :‬عدد األسطر في الذاكرة الخابية يساوي‪:‬‬
‫𝑒‪𝑆𝑖𝑧𝑒 𝑜𝑓 𝐶𝑎𝑐ℎ‬‬
‫‪213‬‬
‫= 𝑠𝑒𝑛𝑖𝐿 𝑓𝑜 𝑟𝑒𝑏𝑚𝑢𝑁‬
‫𝑠𝑒𝑛𝑖𝐿 ‪= 4 = 29 = 512‬‬
‫𝑘𝑐𝑜𝑙𝐵 𝑓𝑜 𝑒𝑧𝑖𝑆‬
‫‪2‬‬
‫ثانياً‪ :‬بما أنَّه لدينا مجموعتين فبالضرورة سيكون في كل مجموعة نصف عدد األسطر‬
‫أي أنَّه ‪ 256‬سطر في كل مجموعة‪.‬‬
‫‪ -6‬عدد المجموعات ‪.2‬‬
‫‪ -7‬عدد األسطر في الذاكرة الخابية هو ‪.512‬‬
‫‪ -8‬أصبح لدينا التَّقسيم التَّالي‪:‬‬
‫‪Tag‬‬
‫‪21‬‬
‫‪Set‬‬
‫‪word‬‬
‫‪1‬‬
‫‪4‬‬
‫إذا ً عدد بتات ال‪ Tag‬هي ‪.21‬‬
‫تمرين غير محلول‪:‬‬
‫‪110‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫أي ال ُّ‬
‫سابقة هي األفضل من حيث األداء والسعر معاً؟‬
‫طرق ال َّ‬
‫َّ‬
‫المخطط يكفي لكي نعلم َّ‬
‫السعات الصغيرة هي‬
‫هذا‬
‫أن الطريقة األفضل واألرخص عند ِّ‬
‫(‪ )2-way Associative‬وكذلك الفرق بين الطريقتين (‪َ )2-way Associative‬و‬
‫السعة ‪.8KBytes‬‬
‫(‪ )4-way Associative‬يكون واضحا ً عند ِّ‬
‫السعات الكبيرة يصبح الفرق مهمالً بين جميع ُّ‬
‫الطرق‪.‬‬
‫عند ِّ‬
‫ي سطر في‬
‫خوارزميَّات التَّبديل‪ :‬جاءت خوارزميَّات التَّبديل إجابةً على ال ُّ‬
‫سؤال التالي‪ :‬أ ُّ‬
‫الذاكرة الخابية سنقوم بتبديله إذا أردنا جلب كتلة ‪ Block‬جديدة من الذَّاكرة وكانت الذَّاكرة‬
‫الخابية ممتلئة أو كان المكان المخصص للكتلة الجديدة مشغوالً في الذَّاكرة الخابية؟‬
‫في التَّقابل المباشر‪ :‬كان هناك مشكلة في الكتابة في هذه الطريقة وهي بفرض َّ‬
‫أن هناك‬
‫برنامجا ً يستخدم على التَّناوب عنوانين من الذاكرة يؤشران إلى ذات السطر من الذاكرة الخابية‬
‫وبالتالي ستصبح احتماليَّة الحصول على المعلومة بشكل سريع أقل بكثير ففي كل مرة ال يجد‬
‫فيها المعالج العنوان سيذهب إلى الذاكرة ويجلب ال‪ Block‬وسيقوم بوضع ال‪ Block‬الجديدة‬
‫في ال‪ Cache‬وهكذا‪.‬‬
‫‪ ‬ال يوجد َّإال سطر واحد من الذَّاكرة الخابية بحيث يقابل عنوانا ً ما من الذاكرة‪.‬‬
‫‪111‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫في التَّقابل الجماعي والتَّقابل بالمجموعات‪:‬‬
‫هناك الكثير من الخوارزميَّات التي تتيح التَّبديل‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تبديل أول سطر أو آخر سطر‪.‬‬
‫متكرر)‪.‬‬
‫سطر األقل استخداما ً (ال يتم استخدامه بشكل‬
‫تبديل ال َّ‬
‫ِّ‬
‫تبديل أول سطر ت َّمت كتابته )‪.(FIFO‬‬
‫تبديل آخر سطر ت َّم استخدامه‪.‬‬
‫تبديل سطر عشوائي‪.‬‬
‫سياسات كتابة الذاكرة الخابية‪ :‬ما هي خيارات تثبيت التَّعديالت (الكتابات) التي تجري على‬
‫الذاكرة الخابية؟‬
‫طريقة ‪:Write-Through‬‬
‫‪ ‬تقوم هذه الطريقة على َّ‬
‫ي تعديل يطرأ على سطر ما في الذَّاكرة الخابية سيحدث‬
‫أن أ َّ‬
‫تعديالً على الذَّاكرة مباشرة ً بحيث تبقى الذَّاكرة تحوي أحدث المعلومات‪.‬‬
‫‪ ‬هذه َّ‬
‫الطريقة تسمح لوحدات الدَّخل والخرج بالتَّعديل مباشرة ً على الذَّاكرة‪.‬‬
‫‪ ‬يأتي بطء هذه َّ‬
‫الطريقة من بطء الكتابة بسبب تكدُّس التَّعديالت المتتالية على‬
‫‪ Memory Buffer Register‬وذلك في حالة معالجات متعددة تعمل على‬
‫التوازي‪.‬‬
‫‪112‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ ‬أيضا ً في حالة معالجات متعددة تعمل على التوازي‪ ،‬أي تحديث يطرأ على أحد‬
‫سطر إن وجد في‬
‫الذواكر الخابية ألحد المعالجات في سطر ما يقوم بتعديل نفس ال َّ‬
‫الذَّواكر الخابية األخرى وذلك بسبب عملية ‪ Monitoring‬التي يقوم بعملها كل‬
‫‪ CPU‬موجود على ال‪ Bus‬المشترك‪.‬‬
‫*شكل يبين تكدُّس الكلمات عند ‪*Memory Buffer Register‬‬
‫طريقة ‪:Write-Back‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫في هذه َّ‬
‫الطريقة يتم إضافة بت واحد إلى كل سطر في الذاكرة الخابية‪ ،‬وظيفة هذا‬
‫سطر ففي حال وجد أي تعديل‬
‫البت هي إخبار ال‪ CPU‬إذا ما طرأ أي تعديل على ال َّ‬
‫تصبح قيمة هذا البت هي ‪.1‬‬
‫عند التَّعديل على أحد أسطر الذاكرة الخابية ال يتم التَّعديل مباشرة ً على الذَّاكرة‬
‫الرئيسيَّة‪.‬‬
‫َّ‬
‫ي تعديل وفي‬
‫عند الحاجة إلى تبديل أحد األسطر يتم التأكد ما إذا كان قد ت َّم عليه أ ُّ‬
‫الرئيسيَّة‪.‬‬
‫حال اإليجاب تتم كتابة ال َّ‬
‫سطر على الذَّاكرة َّ‬
‫في هذه الطريقة تضطر وحدات اإلدخال واإلخراج إلى المرور بالذاكرة الخابية‬
‫(يكون هناك عدَّة تعديالت على سطر واحد في ال‪ Cache‬دون الحاجة إلى الذَّهاب‬
‫سطر أخيرا ً إلى الذَّاكرة الرئيسيَّة)‪.‬‬
‫الرئيسيَّة وعند االنتهاء يتم نقل ال َّ‬
‫إلى الذَّاكرة َّ‬
‫طبعا ً بطبيعة الحال وجدت الذاكرة الخابية لتسريع القراءة‪ ،‬في الحقيقة ‪ 15%‬فقط‬
‫من العمليَّات على الذَّاكرة الخابية هي عمليَّات كتابة وبالتَّالي ال فرق كبير بين‬
‫َّ‬
‫سابقتين‪.‬‬
‫الطريقتين ال َّ‬
‫‪113‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سطر في الذَّاكرة الخابية فمن الممكن أن يكون معدَّل‬
‫مالحظة‪ :‬عند تكبير حجم ال َّ‬
‫‪ Cache Hit‬أعلى‪.‬‬
‫مالحظات على الدرس إن وجدت‪:‬‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫__________________________________________________‬
‫الرابع*****‬
‫*****نهاية ال َّدرس َّ‬
‫‪114‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫*****بداية ال َّدرس الخامس*****‬
‫الذَّواكر الدَّاخليَّة‪:‬‬
‫‪ ‬الذَّواكر المؤلَّفة من أنصاف النَّواقل (‪:)Semiconductor Memories‬‬
‫نوع الذاكرة‬
‫تصنيف‬
‫الذَّاكرة‬
‫آليَّة محي البيانات‬
‫آليَّة الكتابة‬
‫ذاكرة الوصول‬
‫العشوائي (‪)RAM‬‬
‫ذاكرة القراءة فقط‬
‫(‪)ROM‬‬
‫ذاكرة ‪ROM‬‬
‫القابلة للبرمجة‬
‫(‪)PROM‬‬
‫ذاكرة ‪ROM‬‬
‫القابلة للمحي‬
‫(‪)EPROM‬‬
‫ذاكرة ‪ ROM‬قابلة‬
‫للبرمجة والمحي‬
‫عن طريق الكهرباء‬
‫(‪)EEPROM‬‬
‫الومضيَّة‬
‫الذَّاكرة َ‬
‫‪Flash Memory‬‬
‫ذاكرة للقراءة‬
‫والكتابة‬
‫عن طريق الكهرباء‪ ،‬يمكن‬
‫المحي على مستوى البايت‬
‫عن طريق الكهرباء‬
‫ذاكرة للقراءة فقط‬
‫غير ممكن‬
‫فقدان البيانات‬
‫(عند انقطاع الكهرباء)‬
‫تفقد البيانات عند انقطاع‬
‫التيار الكهربائي‬
‫عن طريق الماسكات‬
‫يتم المحي عن طريق األش َّعة‬
‫فوق البنفسجيَّة‬
‫ذاكرة للقراءة‬
‫معظم األوقات‬
‫ال تفقد البيانات عند‬
‫انقطاع التيار الكهربائي‬
‫عن طريق الكهرباء‬
‫عن طريق الكهرباء‪ ،‬يمكن‬
‫المحي على مستوى البايت‬
‫عن طريق الكهرباء‪ ،‬يمكن‬
‫المحي على مستوى ال‪Block‬‬
‫سبب في ذلك هو أنَّها ال‬
‫مالحظة‪ :‬تصنَّف ذاكرة ‪ Flash‬كذاكرة من النَّوع ‪ ROM‬وال َّ‬
‫تفقد البيانات بداخلها عند انقطاع التَّيَّار الكهربائي‪.‬‬
‫ذاكرة ‪:RAM‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫يقوم ال‪ CPU‬بطلب عنوان من هذه الذَّاكرة فتقوم بإرجاع محتوى العنوان مباشرة ً‬
‫وهذا يخالف اسم هذه الذاكرة ‪ Random Access Memory‬ولكن اقتضت العادة‬
‫أن يتم تسميتها كذلك‪.‬‬
‫تسمح بالقراءة منها والكتابة عليها‪.‬‬
‫تفقد جميع البيانات عند انقطاع التيار الكهربائي‪.‬‬
‫تستَخدم كذاكرة مؤقَّتة‪.‬‬
‫يوجد منها نوعان ذاكرة ‪ RAM‬ساكنة وذاكرة ‪ RAM‬ديناميكيَّة‪.‬‬
‫شكل خلية الذاكرة‪:‬‬
‫‪115‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم‪14‬‬
‫ال َّدرس الخامس‬
‫تاريخ‪ :‬األربعاء‪6/3/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫كل خليَّة من خاليا الذاكرة تتعامل مع الوسط الخارجي بثالثة خطوط‪:‬‬
‫‪ -1‬خط الختيار الخلية بحيث لكل خليَّة عنوان‪.‬‬
‫‪ -2‬خط ‪ Control‬وهو يحدد ما إذا كانت العمليَّة هي عمليَّة قراءة أو عمليَّة كتابة‬
‫‪ -3‬خط يختلف بين حالتي القراءة والكتابة‪.‬‬
‫تذكرة‪ :‬الخليَّة هي عبارة عن بت واحد‪.‬‬
‫‪ ‬في حالة ال‪ Write‬يكون الخط الثَّالث هو خط ‪ Data in‬وهو الكفيل بوضع القيمة‬
‫الجديدة في الخلية‪.‬‬
‫‪ ‬في حالة ال‪ Read‬يكون الخط الثَّالث هو خط ‪ Sense‬ومعنى ذلك أنَّه يأخذ القيمة‬
‫تخزن القيمة بشكل‬
‫ويقوم بمعايرتها لمعرفة قيمتها وخصوصا ً إذا كانت الخليَّة ِّ‬
‫تماثلي (مثالً إذا كانت فلطيَّة هذا البت أكثر من ‪ 3‬فولط فهو يساوي ‪ 1‬منطقي وإذا‬
‫كانت ما دون ال ‪ 2‬فهو يساوي ‪ 0‬منطقي)‪.‬‬
‫*شكل البت في حالة الكتابة*‬
‫*شكل البت في حالة القراءة*‬
‫ذاكرة ‪ RAM‬الديناميكيَّة(‪:)DRAM‬‬
‫‪116‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مكثفات‪.‬‬
‫يتم تخزين البتَّات فيها كشحنات كهربائية في ِّ‬
‫لتسرب ال ُّ‬
‫كما علمنا َّ‬
‫شحنة من المكثِّفة وخصوصا ً في حالة القراءة‬
‫أن هناك احتمال‬
‫ُّ‬
‫صفحة ‪.)86‬‬
‫ولذلك تحتاج إلى دارات تغذية وتحديث (راجع ال َّ‬
‫ساكنة ‪.SRAM‬‬
‫بنيتها الدَّاخليَّة أبسط من البنية الدَّاخلية للذاكرة ال َّ‬
‫الرقاقة ويسمح بتكامل عالي (أي يمكن‬
‫البت الواحد فيها يأخذ حجما ً صغيرا ً في ُّ‬
‫الرقاقة)‪.‬‬
‫وضع الماليين منها على نفس ُّ‬
‫أرخص‪.‬‬
‫شحنتها تخ ََّزن بشكل تماثلي‪.‬‬
‫الرئيسيَّة‪.‬‬
‫تستعمل في الذاكرة َّ‬
‫*شكل الخليَّة الواحدة*‬
‫مبدأ عمل هذه الخليَّة‪ :‬مبدؤها بسيط‪ ،‬إذا كان الترانزستور فعَّاالً (الترانزستور مفتوح) يقوم‬
‫بتمرير المعلومات إن كان من أجل القراءة أو من أجل الكتابة‪ ،‬وإن كان غير فعَّال‬
‫(الترانزستور مغلق) فإنَّه ال يسمح بالقراءة وال الكتابة على الخليَّة‪.‬‬
‫كيف يتم تفعيل الترانزستور في الخليَّة؟‬
‫يكفي أن يتم وضع عنوان الخليَّة على خط ‪ Select‬بحيث يتم تفعيل الخليَّة‪.‬‬
‫مالحظة‪ :‬بفرض لدينا ذاكرة سعتها ‪ ،1Mbytes‬ال حاجة لدينا لعنونة كل الذَّاكرة وتفعيل جميع‬
‫البتات فيها بل نقوم بعنونة البت الذي نحتاجه (إرسال إشارة كهربائية إليه على خط ‪.)Select‬‬
‫‪ ‬تتم عمليَّة ال‪ Write‬بِّوضع القيمة الَّتي نريد وضعها على ‪ Bit Line‬ثم تفعيل‬
‫‪ Select‬للبت الهدف ومن ث َّم يفتح الترانزستور الخاص بذلك البت ثم ت َّ‬
‫خزن القيمة‬
‫صة بهذا البت‪.‬‬
‫في المكثِّفة الخا َّ‬
‫‪117‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ ‬تتم عمليَّة ‪ Read‬بعمل ‪ Select‬أيضا ً للبت الهدف ومن ث َّم يفتح الترانزستور‬
‫الخاص بذلك البت بعد ذلك تهرب ال ُّ‬
‫شحنة الموجودة في المكثِّفة إلى ‪Bit Line‬‬
‫سبب للحاجة إلى عمليَّة كتابة بعد كل عمليَّة قراءة وهو السترجاع قيمة‬
‫(وهذا هو ال َّ‬
‫البت والحفاظ عليها)‪.‬‬
‫ساكنة(‪:)SRAM‬‬
‫ذاكرة ‪ RAM‬ال َّ‬
‫صها‪:‬‬
‫خوا ُّ‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تكون القيم في هذه الذَّاكرة رقميَّة وليست تماثليَّة‪.‬‬
‫ي َّ‬
‫خزن البت في ‪( ON\OFF Switch‬تستعمل مبدأ ‪.)Flip-Flop‬‬
‫نفس الحالة مخزنة بطريقتين للحفاظ على المعلومة وعدم ضياعها‪.‬‬
‫مستقرة أي ال يوجد ضياع في ال ُّ‬
‫شحنة (ال تحتاج إلى دارات‬
‫الحالة في هذه الذَّاكرة‬
‫َّ‬
‫تغذية وتحديث)‪.‬‬
‫تركيبة البت فيها أعقد من تركيبة البت الموجود في ذاكرة ‪ RAM‬الديناميكيَّة وأكبر‬
‫من حيث الحجم‪.‬‬
‫سريعة ولذلك تستَخدم في الذَّاكرة الخابية وهي أسرع من ذاكرة ‪ RAM‬الديناميكيَّة‬
‫الرئيسيَّة‪.‬‬
‫الَّتي ِّ‬
‫تؤلف الذاكرة َّ‬
‫أيضا ً تفقد المعلومات عند انقطاع التَّيَّار الكهربائي‪.‬‬
‫شكل الخليَّة الواحدة في ‪:SRAM‬‬
‫تتألَّف الخليَّة الَّتي تشكل بتَّا ً واحدا ً من ‪ 6‬ترانزستورات وتحافظ على البت بطريقتين (نفس‬
‫المعلومة موجودة هي وعكسها بحيث أنَّه في حال كان أحد الترانزستورات ال يعمل َّ‬
‫فإن‬
‫الترانزستور المقابل يتكفَّل بالحصول على القيمة المرادة)‪.‬‬
‫‪118‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مبدأ عمل هذه الخليَّة‪:‬‬
‫عند القيام بوضع عنوان الخليَّة على خط العنوان ‪ Address line‬يتم تفعيل الخليَّة المرادة‪ ،‬بعد‬
‫ضع القيمة المعاكسة على الطرف‬
‫ذلك تدخل القيمة المرادة على الخلية من 𝑩 ‪ Bit Line‬وتو َ‬
‫المقابل عن طريق ̅‬
‫𝑩 ‪.Bit Line‬‬
‫*صورة توضح شحن الخليَّة بالقيمة ‪*1‬‬
‫وبنفس َّ‬
‫الطريقة يمكن شرح شحن الخليَّة بالقيمة ‪.0‬‬
‫مالحظة‪:‬‬
‫مقارنة بين كل من ذاكرتي ‪ SRAM‬و‪:DRAM‬‬
‫‪SRAM‬‬
‫أيضا ً تحتاج إلى تغذية كهربائيَّة‬
‫حجم البت فيها كبير‬
‫غالية‬
‫ال تحتاج دارات تغذية وتحديث‬
‫‪DRAM‬‬
‫تحتاج إلى تغذية كهربائيَّة‬
‫حجم البت فيها أصغر وتسمح بتكامل عالي‬
‫أرخص‬
‫تحتاج دارات تغذية وتحديث‬
‫ذاكرة القراءة فقط (‪:)ROM Read Only Memory‬‬
‫‪119‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫تستخدم هذه الذَّاكرة للتَّخزين الدَّائم ولذلك َّ‬
‫فإن من ميزاتها عدم فقدانها للمعلومات عند انقطاع‬
‫التَّيَّار الكهربائي‪.‬‬
‫تستعمل هذه الذَّاكرة في حال‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫التَّخزين الدَّائم‪.‬‬
‫الحاجة لبرنامج صغري ي ِّنفذ تعليمات دائمة مثل إقالع الحاسوب‪.‬‬
‫متحكم صغري لتنفيذ برنامج معيَّن (سيرد هذا القسم في الفصل الثَّالث في‬
‫برمجة‬
‫ِّ‬
‫الصغَريَّة)‪.‬‬
‫َّ‬
‫مقرر المتحكمات ِّ‬
‫الحاجة إلى تعليمات ال تتغيَّر فالوصول إليها أسرع عن طريق الذَّاكرة ‪.ROM‬‬
‫الحاجة إلى الوصول إلى جداول لقيم توابع معيَّنة عند قيم معيَّنة يتم استعمالها بكثرة‬
‫دون اللجوء إلى ذاكرة الحاسوب‪.‬‬
‫أنواعها‪:‬‬
‫‪ -1‬ذاكرة ‪ ROM‬العاديَّة‪ :‬تتم برمجتها أثناء التَّصنيع وتكون أغلى سعرا ً ولذلك توجد‬
‫بحجوم صغيرة في نظام الحاسوب‪.‬‬
‫لمرة واحدة فقط (‪:)PROM Programmable ROM‬‬
‫‪ -2‬ذاكرة ‪ ROM‬القابلة للبرمجة َّ‬
‫الرجوع لل َّ‬
‫صة لبرمجتها‪.‬‬
‫شركة‬
‫ِّ‬
‫المصنعة ولكن تحتاج إلى أجهزة خا َّ‬
‫يمكن برمجتها دون ُّ‬
‫‪ -3‬ذاكرة ‪ ROM‬من النَّوع (‪ :)Read Mostly‬أي َّ‬
‫أن المعلومات عليها غالبا ً ما تتم‬
‫قراءتها ولكن هناك احتمال لعمل التَّعديالت عليها في أي وقت ولها أنواع‪:‬‬
‫‪ ‬ذاكرة ‪ ROM‬القابلة للبرمجة والمحي (‪ :)EPROM‬يمكن محي محتويات هذه‬
‫الذَّاكرة عن طريق األش َّعة فوق البنفسجيَّة (تأخذ مدَّة المحي من ‪ 10‬دقائق إلى ربع‬
‫ساعة)‪.‬‬
‫‪ ‬ذاكرة ‪ ROM‬القابلة للبرمجة والمحي كهربائيَّا ً (‪ :)EEPROM‬يمكن محي محتويات‬
‫مقارنةً بوقت‬
‫هذه الذَّاكرة عن طريق الكهرباء ولكنَّها تأخذ وقتا ً أطول للـكتابة‬
‫َ‬
‫الـ ِّقراءة‪.‬‬
‫‪ ‬ذاكرة ‪ :FLASH Memory‬تبقى فيها المعلومات حتَّى عند إزالتها من الحاسوب‬
‫ويمكن محي كل محتوياتها عن طريق الكهرباء‪ ،‬ويكون المحي فيها على مستوى‬
‫الكلمة من الذَّاكرة أو الكتلة‪.‬‬
‫السعات الكبيرة (التي تشغَّل على الحاسوب من‬
‫صلبة ذوات ِّ‬
‫مالحظة‪ :‬األقراص ال َّ‬
‫مداخل ‪USB‬مثالً) ال تعتبَر ‪ FLASH MEMORY‬الختالف مبدأ التَّخزين بين كل منهما‪.‬‬
‫تنظيم الذَّواكر‪:‬‬
‫‪120‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫لتكن لدينا ذاكرة سعتها ‪ 16MBits‬أي أنَّها عبارة عن مصفوفة من 𝟒𝟐𝟐 بت‪.‬‬
‫يمكن النَّظر إليها على أنَّها‪:‬‬
‫‪ ‬عبارة عن ‪ 1M‬من المصفوفات الَّتي طول كل منها هو ‪ 16‬بت‪.‬‬
‫‪ ‬عبارة عن ‪ 16‬مصفوفة طول كل منها ‪ 1M‬بت‪.‬‬
‫‪ ‬عبارة عن ‪ 4‬مصفوفات مربَّعة حجم كل منها ‪= 2048 ∗ 2048‬‬
‫‪ 211 ∗ 211‬بتَّاً‪.‬‬
‫سابقة؟‬
‫سؤال‪ :‬ما هو الفرق بين التَّقسيمات الثَّالثة ال َّ‬
‫الجواب‪:‬‬
‫في الخيار األول يكون‪:‬‬
‫‪ ‬عن طريق ‪ 20‬خط عنونة يمكن الوصول إلى أحد المصفوفات التي عددها ‪1M‬‬
‫والحصول على ‪ 16‬بت دفعة واحدة وستكون هذه البتات هي محتوى العنوان الذي‬
‫قمنا بإدخاله‪.‬‬
‫في الخيار الثاني يكون‪:‬‬
‫سابقة وبالتالي‬
‫‪ ‬عن طريق ‪ 4‬خطوط عنونة سنحصل على أحد المصفوفات ال َّ‬
‫الحصول على محتواها وهي ‪ 1M‬بت‪.‬‬
‫في الخيار الثَّالث يكون‪:‬‬
‫سطر و‪ 11‬بت لتحديد العمود‬
‫‪ ‬تحديد العنوان عن طريق ‪ 22‬بت (‪ 11‬بت لتحديد ال َّ‬
‫من كل مصفوفة وبالتَّالي سنحصل عند طلب عنوان ما على ‪ 4‬بتات بحيث يأتي بت‬
‫يشكل الكلمة "‪ 4‬بتات")‪.‬‬
‫من كل مصفوفة مربَّعة واجتماع هذه البتَّات ِّ‬
‫سطر َّأوالً ثم عنونة العمود (هذا يستغرق‬
‫‪ ‬يكفي ‪ 11‬بت للعنونة بحيث يتم عنونة ال َّ‬
‫دورتي تعليمة) والحصول على الكلمة‪.‬‬
‫** شكل الذَّاكرة في حالة ‪** 4*2048*2048‬‬
‫‪121‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سطر والعمود وإدخال البتات‬
‫سابقة بعد تحديد ال َّ‬
‫مالحظة‪ :‬يمكن الكتابة على الذَّاكرة ال َّ‬
‫سابقة من ‪.Data Buffer Input‬‬
‫ال َّ‬
‫‪ ‬تحتاج هذه الذَّاكرة إلى دارات تغذية وتحديث وهي من النَّوع ‪.DRAM‬‬
‫الرقاقة‪:‬‬
‫ويمكن وضع الدارة ال َّ‬
‫سابقة في هذه ُّ‬
‫‪122‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫سطر‬
‫‪ ‬الحظ وجود ‪ 11‬خط من أجل تحديد العنوان (‪ )A1,…,A10‬بحيث يتم تحديد ال َّ‬
‫المراد ومن ث َّم تحديد العمود ث َّم الحصول على ‪ 4‬بتات كما أسلفنا‪.‬‬
‫‪ ‬الحظ وجود البتات التالية‪:‬‬
‫‪ :VSS‬أرضي الدَّارة (أخفض فولط في الدارة)‪.‬‬
‫‪ :VCC‬الفولط األعلى في الدارة وهو مسؤول عن تشغيل الدارة‪.‬‬
‫)‪ :WE (Write Enable‬لتفعيل الكتابة على الذَّاكرة‪.‬‬
‫)‪ :OE (Output Enable‬لتفعيل القراءة من الذَّاكرة‪.‬‬
‫)‪ :CAS (Column Address Select‬لتحديد العمود أثناء العنونة‪.‬‬
‫سطر أثناء العنونة‪.‬‬
‫)‪ :RAS (Row Address Select‬لتحديد ال َّ‬
‫‪ :D1, …, D4‬البتات األربعة التي تنتج عن عمليَّة القراءة من الذَّاكرة أو التي تدخل في‬
‫عملية الكتابة على الذَّاكرة‪.‬‬
‫سابقة وذاكرة مؤلَّفة من ‪ 8‬ميغا بت ومن النَّوع ‪:EPROM‬‬
‫مقارنة بين الذَّاكرة ال َّ‬
‫نذكر َّ‬
‫أن‪:‬‬
‫𝑠𝑡𝑖𝑏 ‪.8 𝑀𝑒𝑔𝑎 𝑏𝑖𝑡𝑠 = 223‬‬
‫‪123‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫سابقة إلى ‪ 220‬شريحة ذاكرة حجم كل منها هو ‪ 8‬بتات‬
‫‪ ‬ت َّم تقسيم ال َّذاكرة ‪ EPROM‬ال َّ‬
‫وبالتالي نحتاج إلى ‪ 20‬بت للعنونة ومن ث َّم الحصول على كلمة مؤلَّفة من ‪ 8‬بتات‬
‫(نحصل عليها من الشريحة المعنونة)‪.‬‬
‫‪ ‬الحظ وجود البتات التالية‪:‬‬
‫‪ :VSS‬أرضي الدَّارة (أخفض فولط في الدارة)‪.‬‬
‫‪ :VCC‬الفولط األعلى في الدارة وهو مسؤول عن تشغيل الدارة‪.‬‬
‫‪ :A0, …, A19‬هذه الخطوط تضمن تحديد موقع الشريحة الَّتي سيتم أخذ البتات الثمانية‬
‫منها (بدورة تعليمة واحدة) كما ورد قبل قليل‪.‬‬
‫الرقاقة والقدرة على الوصول إلى‬
‫)‪ :CE (Chip Enable‬هذا البت وظيفته تفعيل هذه ُّ‬
‫الذاكرة التي تحويها‪.‬‬
‫‪ :D0, …, D7‬البتات الثَّمانية التي تنتج عن عمليَّة القراءة من الذَّاكرة‪.‬‬
‫سبب َّ‬
‫أن هذه الذاكرة للقراءة فقط*‬
‫*ال يوجد في هذه الذَّاكرة ‪ WE‬وكذلك ‪ RE‬وال َّ‬
‫سبب َّ‬
‫أن هذه الذاكرة لديها ‪ 20‬خط‬
‫* ال يوجد في هذه الذَّاكرة ‪ RAS‬وكذلك ‪ CAS‬وال َّ‬
‫الرقاقة لتوفير الحجم) *‬
‫عنونة (كان السبب هو قلة عدد المغارز ‪ Pins‬على ُّ‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪124‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫مثال على تقطيع لذاكرة حجمها ‪:256KBytes‬‬
‫نذكر‪256 KBytes = 221 𝐵𝑖𝑡𝑠 :‬‬
‫باإلمكان القيام بتقسيم هذه الَّذاكرة إلى ‪ 8‬مصفوفات مربَّعة حجم كل منها هو ‪ 218‬بت‪.‬‬
‫سطر و‪ 9‬لتحديد‬
‫‪ ‬نحتاج في هذه الحالة إلى ‪ 18‬خط عنونة (‪ 9‬بتات منها لتحديد ال َّ‬
‫العمود)‪.‬‬
‫‪ ‬سيكون الخرج في هذه الحالة هو عبارة عن ‪ 8‬بتات (بت من كل مصفوفة مربَّعة)‪.‬‬
‫انظر الشَّكل‪:‬‬
‫سابقة‪:‬‬
‫توسيع الذَّاكرة إلى ‪ 1MBytes‬باالستفادة من الذَّاكرة ال َّ‬
‫الحظ َّ‬
‫أن هذه الذَّاكرة هي عبارة عن اجتماع ‪ 4‬ذواكر حجم كل منها هو ‪ 256KBytes‬فإذا‬
‫نظرنا إلى كل ذاكرة من هذه الذَّواكر األربعة على أنَّها عبارة عن عمود من المصفوفات‬
‫المربَّعة الَّتي تعطي بـ ِّ ‪ 18‬خط عنونة ‪ 8‬بتات يمكن اختيار أحد هذه األعمدة لكي تعطينا ‪8‬‬
‫بتات ولكن الفرق أنَّنا بحاجة لتفعيل أحد هذه األعمدة وبالتَّالي نحتاج ‪ 2‬بت لهذه العمليَّة‬
‫وبالتالي حصلنا على ذاكرة حجمها ‪ 1MBytes‬باالستفادة من ‪ 4‬ذواكر حجم كل منها هو‬
‫عبارة عن ‪.256KBytes‬‬
‫‪125‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الحظ الشَّكل واستنتج ما سبق (‪ 2‬بت تكفي لتحديد أحد األعمدة األربعة)‪:‬‬
‫تصحيح األخطاء في الذَّاكرة ‪:DRAM‬‬
‫‪ ‬هناك بعض األخطاء الدَّائمة التي ال يمكن تصحيحها عند حدوث عطل في أحد‬
‫بتات الذَّاكرة مثل تَلَف المكثِّفة التي تحفظ ال ُّ‬
‫شحنة التي تمثل قيمة البت‪.‬‬
‫‪ ‬هناك بعض األخطاء المؤقَّتة التي يمكن معالجتها وأحد أمثلة هذه األخطاء هو‬
‫المكثفة التي تحفظ ال ُّ‬
‫شحنة التي تمثل قيمة البت بحيث أنَّها تعطي‬
‫تسرب الشحنة من‬
‫ِّ‬
‫ُّ‬
‫قيمة مغايرة للقيمة األصليَّة للبت‪.‬‬
‫‪ ‬يكون تحديد الخطأ وتصحيحه معتمدا ً على خوارزميَّة اسمها‪:‬‬
‫‪ .Hamming Error Correcting‬وفهم َّ‬
‫(لالطالع)‪:‬‬
‫الطريقة‬
‫ِّ‬
‫‪126‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫الدَّرس الخامس‬
‫تاريخ‪ :‬الثالثاء‪12/3/2019‬‬
‫تطور ذاكرة ‪:DRAM‬‬
‫ُّ‬
‫‪ ‬هناك بعض ال َّ‬
‫شركات التي ما زالت تنتج ذواكر ‪ DRAM‬العاديَّة كما رأينا في‬
‫سابقة مع زيادة لسعات هذه الذواكر‪.‬‬
‫األمثلة ال َّ‬
‫سن والذي يحوي على ذاكرة ‪ SRAM‬صغيرة تعتبر‬
‫‪ ‬ظهر نموذج ‪ DRAM‬ال ُمح َّ‬
‫بمثابة ‪ Cache‬وهي تحفظ بداخلها آخر سطر ت َّمت قراءته‪.‬‬
‫سعت فكرة وجود ذاكرة خابية في نموذج ‪ DRAM‬لتصبح بسعات أكبر حيث يت ُّم‬
‫‪ ‬تو َّ‬
‫التعامل معها كمعاملة الذَّاكرة الخابية العاديَّة‪.‬‬
‫مالحظة‪ :‬كان هناك مشكلة في ذواكر ‪ DRAM‬العادية وهي َّ‬
‫أن ال‪ CPU‬ال يعلم الوقت الحقيقي‬
‫المصممون بمزامنة الذَّاكرة ‪ DRAM‬مع ساعة خارجيَّة‪.‬‬
‫لتوفُّر البيانات من الذَّاكرة لذلك قام‬
‫ِّ‬
‫‪ ‬نموذج ذاكرة ‪ DRAM‬المتزامنة )‪:SDRAM (SYNCHRONOUS DRAM‬‬
‫‪ o‬أصبح الوصول إلى الذاكرة في هذا النموذج مقترنا ً بساعة خارجيَّة (غالبا ً‬
‫تكون هذه الساعة هي ساعة المعالج)‪.‬‬
‫‪ o‬آلية العمل‪ :‬يتم تقديم العنوان إلى الذَّاكرة مع العلم مسبقا ً بحجم البيانات الَّتي‬
‫سيتم تناقلها وبالتالي معرفة عدد دورات التَّعليمة للحصول على البيانات‬
‫أن عدد الدورات أصبح معروفا ً َّ‬
‫كاملة وبما َّ‬
‫فإن ال‪ CPU‬يستطيع القيام بعمل‬
‫آخر في هذا الوقت‪.‬‬
‫‪ o‬في هذا النموذج يوجد ما يس َّمى بـ ِّ ‪ :Burst Mode‬وهو حجم البيانات الَّتي‬
‫سيتم تناقلها في الدَّورة الواحدة (يمكن نقل البيانات بأي حجم شرط أن يكون‬
‫متاحا ً مثالً يمكن نقل البيانات بايتا ً تلو اآلخر من عمود محدَّد بعد أن يكون‬
‫سطر والعمود قد ت َّم تعيينهما‪ ،‬ويمكن أيضا ً نقل البيانات صفحةً تلو األخرى‬
‫ال َّ‬
‫وهكذا‪ ،)..‬ميزة هذا النمط هو أنَّه ال يوجد إال نفاذ واحد إلى الذاكرة‬
‫(باالستفادة من معرفة عنوان بداية المصفوفة ومعرفة حجم المعطيات‬
‫المطلوبة يمكن جلبها مباشرة ً ألنَّها متتالية‪.‬‬
‫‪127‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم‪15‬‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الحظ‪:‬‬
‫‪ ‬أنَّه يتم أخذ العنوان في دورة التَّعليمة األولى‪.‬‬
‫سطر في دورة التَّعليمة الثَّانية‪.‬‬
‫‪ ‬يتم تحديد ال َّ‬
‫‪ ‬يتم تحديد العمود في دورة التَّعليمة الثَّالثة‪.‬‬
‫‪ ‬ذاكرة ‪ :RAMBUS‬هي عبارة عن نموذج جديد يختلف بالتَّصميم كليَّا ً عن‬
‫ذواكر ‪ DRAM‬العاديَّة وهي تتميَّز بأنَّها من النوع ‪ ،SDRAM‬قامت بتبنيها‬
‫كل من شركتي ‪ Pentium‬و‪.Itanium‬‬
‫صها األخرى لالطالع‪.‬‬
‫‪ o‬خوا ُّ‬
‫ساعة‬
‫مرة في نبضة ال َّ‬
‫‪ ‬ل َّما كانت ذاكرة ‪ SDRAM‬تقوم بإرسال البيانات َّ‬
‫الواحدة‪ ،‬ظهر الحقا ً ما يس َّمى بـ ِّ )‪SDRAM DDR (Double Data Rate‬‬
‫الذي يقوم بمضاعفة حجم البيانات التي يتم تناقلها في نبضة الساعة الواحدة‬
‫صاعدة والجبهة الهابطة للنَّبضة الواحدة‪.‬‬
‫بحيث يجري النقل لدى الجبهة ال َّ‬
‫*الحظ َّ‬
‫أن ال‪ CPU‬يقوم بصرف نبضة ساعة لتحديد عنوان السطر وصرف نبضة ساعة‬
‫لتحديد عنوان العمود ومن ث َّم يقوم بنقل البيانات‪ ،‬الحظ أيضا ً إرسال حزمة مضاعفة من‬
‫البيانات في كل نبضة ساعة*‬
‫‪128‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫ظاهرة وجود ذاكرة خابية في ذواكر ‪ :DRAM‬تبنَّت فكرة هذه الذَّواكر شركة ‪Mitsubishi‬‬
‫حيث قامت ال َّ‬
‫شركة بِّمكاملة ذاكرة ‪ RAM‬ساكنة بحجم كبير نسبيا ً على ذاكرة ‪ DRAM‬عاديَّة‪.‬‬
‫ساكنة‬
‫حجم الذاكرة الخابية ‪ 16KB‬يحوي ‪ 64‬سطرا ً بحيث يمكن أن تعامل هذه الذاكرة ال َّ‬
‫الصغيرة كذاكرة خابية حقيقيَّة‪ ،‬وهي مفيدة في حالة الوصول العشوائي‪.‬‬
‫ساعدت هذه الذَّواكر على‪:‬‬
‫‪ ‬النَّفاذ التَّسلسلي لـ ِّ ‪ Blocks‬متتالية من الذَّاكرة وبسرعة عالية‪.‬‬
‫‪ ‬يمكن جلب البيانات من الذَّاكرة ‪ DRAM‬إلى الذاكرة الساكنة فيها ‪.SRAM‬‬
‫‪ ‬يمكن اعتبار الذَّاكرة ‪ SRAM‬هي عبارة عن ‪ Buffer‬سريع لمعطيات‬
‫الذاكرة ‪.DRAM‬‬
‫الحظ الشَّكل‪:‬‬
‫*شكل يبين القراءة من ذاكرة ‪*DRAM‬‬
‫في ال َّ‬
‫سطر والعمود عن طريق خطوط عنونة‬
‫شكل السابق يتم الوصول إلى عنواني كل من ال َّ‬
‫‪ Address Lines‬ومعرفة كل منهما عن طريق ‪ RAS‬و ‪CAS‬ومعرفة القراءة من الكتابة عن‬
‫طريق ‪.R/W‬‬
‫نالحظ هنا َّ‬
‫سطر ث َّم العمود المناسبين) و‪t3-t2‬‬
‫أن ‪ t2-t1‬يس َّمى زمن النَّفاذ إلى الذَّاكرة (تهيئة ال َّ‬
‫هو زمن إخراج المعطيات من الذَّاكرة ويتض َّمن إعادة إنعاش الذَّاكرة الدِّيناميكيَّة‪.‬‬
‫*****نهاية ال َّدرس الخامس*****‬
‫‪129‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫*****بداية ال َّدرس السادس*****‬
‫الذَّواكر الخارجيَّة‪:‬‬
‫أنواعها‪:‬‬
‫صلبة‪.‬‬
‫‪ -1‬األقراص ال َّ‬
‫‪ -2‬األقراص الليزريَّة‪.‬‬
‫‪ -3‬األشرطة الممغنطة‪.‬‬
‫صلبة‪ :‬هي عبارة عن أطباق معدنيَّة غالبا ً ما تكون من األلمنيوم‪ .‬تصطف عليها‬
‫األقراص ال َّ‬
‫َّ‬
‫وقطاعات ‪Sectors‬‬
‫البتَّات بحيث يتم تقسيمها إلى مسارات دائريَّة متَّحدة المركز ‪Tracks‬‬
‫ويوجد بينها فراغات ‪ ،Gaps‬لها طريقة وصول سنتحدَّث عنها بعد قليل‪.‬‬
‫‪ ‬حاليَّا ً يتم صناعة هذه األقراص من ُّ‬
‫الزجاج وذلك يقلل أخطاء القراءة‬
‫والكتابة وكذلك أقراص ُّ‬
‫صدمات واألعطال‪.‬‬
‫الزجاج أكثر مقاومة لل َّ‬
‫*الشَّكل العام للقرص (الحظ المسارات الدائريَّة مت َّحدة المركز والق َّ‬
‫طاعات والفراغات) *‬
‫‪130‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تغذية راجعة عن محتويات القرص‪:‬‬
‫المسارات ‪ :Tracks‬هي عبارة عن مسارات دائريَّة متَّحدة المركز (تصطف البتَّات بشكل‬
‫منتظم على كل مسار منها) ويتألَّف كل ‪ Track‬من مجموعة من ‪.Sectors‬‬
‫صلب‪.‬‬
‫القطاعات ‪ :Sectors‬ال‪ Sector‬الواحد فيها يعتبر الوحدة األصغر في القرص ال َّ‬
‫مالحظة‪ :‬كل ‪ Track‬و‪ Sector‬معنون بشكل منفصل‪.‬‬
‫الفراغات ‪ :Gaps‬هي عبارة عن الفراغات الَّتي تقوم بفصل كل مسار عن اآلخر وكذلك تقوم‬
‫بفصل كل ِّق َ‬
‫طاع عن اآلخر‪.‬‬
‫الرأس ‪ :Head‬هو عبارة عن قطعة معدنيَّة مستطيلة ال َّ‬
‫تتحرك حركة ميكانيكيَّة انسحابيَّة‬
‫شكل‬
‫َّ‬
‫َّ‬
‫على نصف قطر القرص عرضها يكون بعرض كل مسار‪ ،Track‬ويوجد وشيعة ملفوفة على‬
‫َّار فيها َيتَولَّد حقل مغناطيسي ⃗‬
‫𝑩⃗ يقوم بتغيير قيم المعطيات عند عبور‬
‫الرأس بحيث إذا َّ‬
‫َّ‬
‫مر تي ٌ‬
‫الرأس على البِّتَّات في قِّ َّ‬
‫طاع معيَّن وقيمة البت الَّذي يتم تغييره تعتمد على اتِّجاه التَّيَّار في‬
‫َّ‬
‫الوشيعة‪.‬‬
‫الرأس أثناء مروره على أحد الق َّ‬
‫طاعات*‬
‫*صورة توضح شكل َّ‬
‫‪131‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الرأس ‪.Head‬‬
‫القراءة والكتابة على القرص‪ :‬الكفيل األساسي في القراءة والكتابة هو َّ‬
‫الرأس بشكل انسحابي حتى‬
‫‪ ‬طريقة الكتابة‪ :‬أثناء دوران القرص‬
‫يتحرك َّ‬
‫َّ‬
‫يدرك ‪ Track‬معيَّن ومن ث َّم يصل إلى ال‪ Sector‬الَّذي سيقوم بكتابة البتَّات‬
‫عليه‪ ،‬عند إدراكه لبداية ال ِّق َّ‬
‫طاع يمر تيَّار في الوشيعة بحسب قيمة البت‬
‫المراد وضعه في ال ِّق َّ‬
‫طاع وبالتَّالي يتم تغيير ال ِّبتَّات والكتابة‪.‬‬
‫َّ‬
‫القطاعات القريبة من المركز‪.‬‬
‫‪ o‬التَّخزين كثيف عند‬
‫‪ o‬التَّخزين يصبح أقل كثافة باالبتعاد عن المركز‪.‬‬
‫‪ o‬تصبح كثافة البِّتَّات قليلة ج َّدا ً عند أطراف القرص‪.‬‬
‫الرأس على البتَّات واحدا ً تلو اآلخر‬
‫يمر َّ‬
‫‪ ‬طريقة القراءة‪ :‬بطريقة عكسيَّة ُّ‬
‫تيار في الوشيعة بحسب قيمة البت وتفسير ما تتم قراءته على‬
‫ومن ث َّم يم ُّر ٌ‬
‫هذا األساس‪.‬‬
‫‪ o‬يدور القرص بسرعة زاويَّة ثابتة‪.‬‬
‫الخطيَّة بطيئة‪.‬‬
‫سرعة‬
‫‪ o‬عند القراءة من مسار قريب من المركز تكون ال ُّ‬
‫ِّ‬
‫الخطيَّة أعلى‪.‬‬
‫سرعة‬
‫الرأس عن المركز أصبحت ال ُّ‬
‫ِّ‬
‫‪ o‬كلَّما ابتعد َّ‬
‫سرعة ًّ‬
‫سبب هو َّ‬
‫الزاويَّة‬
‫أن ال ُّ‬
‫زمن قراءة أي مسار هو ذاته زمن قراءة أي مسار آخر وال َّ‬
‫لتحرك القرص ثابتة‪.‬‬
‫ُّ‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫‪132‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫سؤال‪ :‬ما هي فائدة الفراغات وهل يمكن تصغيرها؟‬
‫الجواب‪ :‬فائدة الفراغات تأتي في فصل كل َّ‬
‫قطاع عن اآلخر وكذلك فصل كل مسار عن اآلخر‬
‫الرأس االنتقال بينها بأريحيَّة وبكفاءة ولكن ال داعي لزيادة حجم الفراغات أكثر‬
‫بحيث يستطيع َّ‬
‫من الالزم‪.‬‬
‫سؤال‪ :‬كيف يمكن زيادة حجم القرص؟‬
‫الرأس أعرض كان عرض كل‬
‫الرأس وحجمه فكلَّما كان َّ‬
‫الجواب‪ :‬يعتمد هذا على عرض َّ‬
‫الرأس سيتم توفير مسارات أكثر‪.‬‬
‫‪ Track‬أكبر وهذا يقتضي أنَّه بتصغير َّ‬
‫سؤال‪ :‬هل تصغير الرأس ‪ Head‬مفيد دوماً؟‬
‫الجواب‪:‬‬
‫‪ ‬تصغير الرأس يعني استخدام تقنيَّة أعقد في صنعه إذا ً هو أكثر سعرا ً من‬
‫الشرائيَّة‪.‬‬
‫حيث القيمة ِّ‬
‫الرأس صغيرا ً لدرجة تجعله عرضةً للعطب والتَّلف‬
‫‪ ‬من الممكن أن يصبح َّ‬
‫من أي تأثير خارجي وذلك غير آمن للمستخدم‪.‬‬
‫ليكن لدينا الشَّكل التالي لترتيب المعطيات‪:‬‬
‫َّ‬
‫مشكلة هذا التَّرتيب هي َّ‬
‫القطاعات ثابت في كل مسار وبالتَّالي تزداد الفراغات باالبتعاد‬
‫أن عدد‬
‫عن المركز‪ ،‬وهذه الزيادة في الفراغات يمكن االستفادة منها لزيادة المساحة‪.‬‬
‫الحظ‪ :‬يوجد ‪َّ 8‬‬
‫قطاعات في كل مسار‪.‬‬
‫‪133‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم‪16‬‬
‫سادس‬
‫الدَّرس ال َّ‬
‫تاريخ‪ :‬األربعاء‪13/3/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫حل مشكلة الفراغات‪:‬‬
‫يوجد نموذج بديل لترتيب ال ِّق َّ‬
‫طاعات اسمه ‪ Multiple Zoned Recording‬يقوم على جعل‬
‫عدد ال ِّق َّ‬
‫سابق‪.‬‬
‫طاعات يزداد باالبتعاد عن المركز وهذا التَّرتيب يع ُّد أكثر فاعليَّة من التَّرتيب ال َّ‬
‫* شكل ‪*Multiple Zoned Recording‬‬
‫الحظ في المسار األقرب إلى المركز يوجد ‪ 4‬قطاعات‪ ،‬في المسار الَّذي بعده يوجد ‪َّ 5‬‬
‫قطاعات‬
‫وهكذا‪ ..‬لكن المشكلة في هذا التَّرتيب البديل للقطاعات تكمن في عدم سهولة تحديد بداية‬
‫القطاعات للمسارات المختلفة‪.‬‬
‫صلب (‪:)Format‬‬
‫القيام بتهيئة القرص ال َّ‬
‫صلب بشكل كامل بأن تصل رأس الكتابة إلى جميع المسارات‬
‫يكفي للقيام بتهيئة القرص ال َّ‬
‫شحنة الموجودة في كل بت من كل َّ‬
‫َّ‬
‫والقطاعات بحيث تقوم بسحب ال ُّ‬
‫قطاع وبالتَّالي إرجاعه كما‬
‫كان (قبل كتابة أي معطيات عليه)‪.‬‬
‫تطورها خصائصا ً‬
‫أقراص وينشيستر (‪ :)Winchester Disks‬حملت هذه األقراص أثناء ُّ‬
‫أكثر كفاءة ومنها‪:‬‬
‫تجعلها َ‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫حزمة مختومة تماما ً معزولة عن الهواء‪.‬‬
‫متحرك على نصف القطر بشكل انسحابي (كانت الرأس ثابتة قبالً)‪.‬‬
‫رأس‬
‫ِّ‬
‫السعة (كان هناك قرص واحد فقط عند بداية ظهور‬
‫أقراص متعددة لزيادة ِّ‬
‫هذه التِّقنيَّة)‪.‬‬
‫تطور نظم‬
‫إمكانيَّة جعل القرص ال َّ‬
‫صلب قابالً لإلزالة وأصبح ذلك ممكنا ً بعد ُّ‬
‫التَّشغيل‪.‬‬
‫‪134‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫قوة رفع بحيث تتم قراءة‬
‫‪ ‬سرعة الدَّوران في قرص وينشيستر ِّ‬
‫تولد َّ‬
‫والرأس‪.‬‬
‫المعطيات وبنفس الوقت ال يحدث تماس مباشر بين القرص َّ‬
‫الرأس والقرص لقراءة‬
‫مالحظة‪ :‬في قرص ‪ FLOPPY‬كان يجب تأمين التَّماس المباشر بين َّ‬
‫المعلومات وكتابتها‪.‬‬
‫*شكل ترتيب البايتات في أحد مسارات قرص وينشيستر‪*SEAGATE ST506‬‬
‫طاعات وداخل الق َّ‬
‫*الحظ طول الفراغات مقدَّرة بطول البايت الواحد بين الق َّ‬
‫طاع الواحد*‬
‫َّ‬
‫القطاع‬
‫حقل ‪ :ID‬أهم الحقول يحوي بداخله عنوان المسار الذي يوجد فيه القطاع وكذلك عنوان‬
‫نفسه وعنوان بدايته‪.‬‬
‫َّ‬
‫مالحظة‪ :‬يحوي ال ِّق َّ‬
‫القطاع بالكامل هو‬
‫طاع الواحد ‪ 512‬بايت من المعطيات المتاحة وحجم‬
‫‪ 600‬بايت‪.‬‬
‫الرأس الثَّابت‪:‬‬
‫في حالة َّ‬
‫‪ ‬يكون هناك رأس للقراءة والكتابة معا ً على كل مسار في القرص‪.‬‬
‫سابقة على ذراع معدنيَّة ثابتة‪.‬‬
‫الرؤوس ال َّ‬
‫‪ ‬تستند جميع ُّ‬
‫الرأس المتحرك‪:‬‬
‫في حالة َّ‬
‫‪ ‬يكون هناك رأس واحدة للقراءة والكتابة‪.‬‬
‫للتحرك على نصف قطر القرص‪.‬‬
‫الرأس على ذراع قابلة‬
‫ُّ‬
‫‪ ‬تستند هذه َّ‬
‫‪135‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫تعدُّد األقراص‪ :‬هذه َّ‬
‫الطريقة أتاحت زيادة مساحة ذاكرة الحاسوب بشكل كبير وكذلك زيادة‬
‫صلب وسبب زيادة سرعة األداء هو َّ‬
‫أن‬
‫سرعة أدائه من حيث القراءة والكتابة على القرص ال َّ‬
‫المعطيات الَّتي تتم كتابتها تُكتب على أقراص متعددة بالتَّوازي وبذلك تقليل زمن الكتابة‬
‫وبنفس الوقت تقليل زمن القراءة‪.‬‬
‫*شكل يبين األقراص المتعددة التي يشكل اجتماعها الذَّاكرة الكُليَّة*‬
‫مزايا تعدُّد األقراص‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫يوجد رأس على كل قرص‪.‬‬
‫تتحرك معا ً حركة انسحابيَّة‪.‬‬
‫الرؤوس جميعها‬
‫َّ‬
‫يتم تقطيع المعطيات إلى عدد األقراص عند كتابتها وقراءتها‪.‬‬
‫شكل‬
‫تتم الكتابة على كل ‪ Track‬مشترك بين جميع األقراص بحيث ت ِّ‬
‫باجتماعها أسطوانة كما في ال َّ‬
‫شكل المجاور‪.‬‬
‫تطور‬
‫مزايا قرص ‪ :Floppy‬القت هذه األقراص رواجا ً واسعا ً في بداية ُّ‬
‫التكنولوجيا بصفتها من أوائل وسائط التَّخزين القابلة لإلزالة سعتها كانت‬
‫صغيرة جدا ً بالمقارنة بتكنولوجيا هذا العصر فقد كانت سعة أغلب هذه‬
‫األقراص ‪ 1.44 Mbytes‬وكذلك كانت بطيئة‪ ،‬تتميَّز برخص ثمنها‪.‬‬
‫‪136‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تغذية راجعة عن أقراص وينشيستر‪:‬‬
‫ت َّم تطوير هذه األقراص عن طريق شركة ‪ IBM‬في الواليات المتحدة األمريكيَّة‪.‬‬
‫َّ‬
‫مشكلة قامت أقراص وينشيستر بتفاديها‪َّ :‬‬
‫القطاعات‬
‫ذرة غبار صغيرة على أحد‬
‫إن سقوط َّ‬
‫الرأس غير قادرة على إكمال عمليَّة القراءة ويعتبر هذا عيبا ً في‬
‫أثناء القراءة كفيل بجعل َّ‬
‫القرص الصلب‪ .‬لذلك‪ ،‬كانت أقراص وينشيستر مغلَّفة بحيث أنَّها معزولة عن الوسط‬
‫الخارجي‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫األقراص متينة وقويَّة ويمكن االعتماد عليها مدى الحياة‪.‬‬
‫رخيصة نسبيَّا ً بالنِّسبة لفعاليتها‪.‬‬
‫القت رواجا ً على مستوى العالم‪.‬‬
‫تطور مستمر وما زالت سعاتها تكبر أكثر فأكثر‪.‬‬
‫ما زالت في ُّ‬
‫نعرف المقدارين التَّاليين‪:‬‬
‫سرعة الوصول‪ِّ :‬‬
‫الرأس إلى المسار المناسب‪ +‬زمن دوران القرص حتى‬
‫زمن الوصول = زمن تحريك َّ‬
‫َّ‬
‫القطاع المطلوب‪.‬‬
‫الوصول إلى‬
‫معدَّل النَّقل‪ :‬هو مقدار البتَّات الَّتي يمكن نقلها خالل ثانية واحدة‪.‬‬
‫بالتَّالي يمكن تعريف العالقة التَّالية‪:‬‬
‫‪1‬‬
‫𝑏‬
‫‪+‬‬
‫𝑁𝑟 𝑟‪2‬‬
‫‪𝑇𝑎 = 𝑇𝑠 +‬‬
‫الكلي‪.‬‬
‫𝑎𝑇‪ :‬زمن الوصول ِّ‬
‫𝑠𝑇‪َّ :‬‬
‫صحيح‪.‬‬
‫الرأس حتى الوصول إلى المسار ال َّ‬
‫الزمن الوسطي لتحريك َّ‬
‫𝑟‪ :‬سرعة دوران القرص مقدَّرة ً بالثَّانية‪.‬‬
‫𝑏‪ :‬عدد البايتات الَّتي سيتم نقلها‪.‬‬
‫𝑁‪ :‬عدد البايتات في المسار الواحد‪.‬‬
‫‪137‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الرأس يساوي ‪ 2 ms‬وسرعة دوران‬
‫تمرين‪ :‬ليكن لدينا قرصا ً صلبا ً مع زمن وسطي لتحريك َّ‬
‫القرص الوسطيَّة تساوي ‪ 15000‬دورة خالل الدَّقيقة الواحدة وليكن هناك ‪َّ 500‬‬
‫قطاع في كل‬
‫َّ‬
‫القطاع الواحد من ‪ 512‬بايت"‪.‬‬
‫مسار "يتألَّف‬
‫أوجد زمن الوصول الكلي إلى ‪ 125‬ق َّ‬
‫طاع متجاور‪.‬‬
‫الحظ‪ :‬في سرعة الوصول يجب التحويل من الدقيقة إلى الثَّانية‪.‬‬
‫الحل‪:‬‬
‫)𝑑𝑛𝑜𝑐𝑒𝑠 𝑟𝑒𝑝 𝑠𝑑𝑛𝑢𝑜𝑟( ‪𝑟 = 15000 (𝑟𝑜𝑢𝑛𝑑𝑠 𝑝𝑒𝑟 𝑚𝑖𝑛𝑢𝑡𝑒) = 250‬‬
‫‪1‬‬
‫𝑏‬
‫‪+‬‬
‫𝑁𝑟 𝑟‪2‬‬
‫‪1‬‬
‫‪125‬‬
‫‪= 2(𝑚𝑠) +‬‬
‫‪+‬‬
‫‪2 ∗ 250 250 ∗ 500‬‬
‫‪𝑇𝑎 = 𝑇𝑠 +‬‬
‫)𝑠𝑚(‪= 2(𝑚𝑠) + 2(𝑚𝑠) + 1(𝑚𝑠) = 5‬‬
‫مالحظة‪ :‬ل َّما كانت القطاعات ال‪ 125‬متجاورة فإنَّنا لم نحتج إال إلى‬
‫‪1‬‬
‫𝑟‪2‬‬
‫‪ 𝑇𝑠 +‬واحدة‪ ،‬أ َّما لو‬
‫كانت القطاعات ال ‪ 125‬مبعثرة على القرص عشوائيَّاً‪ ،‬فإنَّنا كنَّا سنحتاج إلى َّ‬
‫الزمن‬
‫لكل قطاع‪.‬‬
‫‪1‬‬
‫𝑟‪2‬‬
‫‪𝑇𝑠 +‬‬
‫الرأس يساوي ‪ 4 ms‬وسرعة دوران‬
‫تمرين‪ :‬ليكن لدينا قرصا ً صلبا ً مع زمن وسطي لتحريك َّ‬
‫القرص الوسطيَّة تساوي ‪ 15000‬دورة خالل الدَّقيقة الواحدة وليكن هناك ‪ 500‬قطاع في كل‬
‫مسار "يتألَّف القطاع الواحد من ‪ 512‬بايت"‪.‬‬
‫مكون من ‪ 2500‬قطاع بحيث يكون حجمها ال ُّكلي‬
‫بفرض أنَّنا نريد قراءة ملف َّ‬
‫هو‪ ،1.28Mbytes‬احسب زمن النَّقل الك ِّلي في كل من الحالتين‪:‬‬
‫‪ -1‬بفرض َّ‬
‫أن الملف يشغل كامل القطاعات لـ ِّ ‪ 5‬مسارات متجاورة (التنظيم تسلسلي‬
‫للمعطيات)‪.‬‬
‫الزمن الالزم لقراءة نفس المعلومات باستخدام طريقة الوصول العشوائي بدالً‬
‫‪ -2‬احسب َّ‬
‫من الوصول التسلسلي‪.‬‬
‫‪138‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫الحل‪:‬‬
‫)‪1‬‬
‫‪1‬‬
‫𝑏‬
‫‪+‬‬
‫𝑁𝑟 𝑟‪2‬‬
‫‪1‬‬
‫‪2500‬‬
‫‪= 4(𝑚𝑠) +‬‬
‫‪+‬‬
‫)𝑠𝑚(‪= 26‬‬
‫‪2 ∗ 250 250 ∗ 500‬‬
‫‪𝑇𝑎 = 𝑇𝑠 +‬‬
‫)‪2‬‬
‫𝟏‬
‫𝒃‬
‫‪+‬‬
‫𝑵𝒓 𝒓𝟐‬
‫‪1‬‬
‫𝑏‬
‫)𝑠𝑚(‪+ ) = 20(𝑚𝑠) + 10(𝑚𝑠) + 20(𝑚𝑠) = 50‬‬
‫𝑁𝑟 𝑟‪2‬‬
‫‪𝑇𝑎 = 𝑻𝒔 +‬‬
‫‪5‬‬
‫‪= ∑(𝑇𝑠𝑖 +‬‬
‫‪𝑖=1‬‬
‫مقدمة عن تقنيَّة ‪:RAID‬‬
‫مع نمو األعمال التجارية‪ ،‬بدأ ينشأ َّ‬
‫الطلب على بنى معطيات أكثر موثوقية يمكنها الت َّعامل مع‬
‫المكونات المهمة في البنية التحتية المستقرة والقابلة للتطوير هو اإلدارة‬
‫ساسة‪ ،‬أحد‬
‫األنظمة الح َّ‬
‫ِّ‬
‫المناسبة للذاكرة ‪.‬‬
‫تعريف ‪ :RAID‬هو اختصار لمصفوفة تكرار من األقراص المستقلة وهو تقنية للمحاكاة‬
‫محركات أقراص متعددة في ترتيبات مختلفة لتحقيق‬
‫االفتراضية للتخزين يتم استخدامها لتنظيم ِّ‬
‫أهداف معينة مثل التكرار والسرعة والسعة وتحسين الموثوقيَّة ‪.Redundancy‬‬
‫تشترك نظم ‪ RAID‬في خصائص عا َّمة‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تعمل األقراص مستقلَّة بعضها عن بعض أو بالتَّوازي‪.‬‬
‫التكرار لتحسين الموثوقيَّة‪.‬‬
‫تدخل نوعا ً من ِّ‬
‫يراها نظام التَّشغيل قرصا ً منطقيَّا ً منفرداً‪.‬‬
‫ت َّ‬
‫قطع المعطيات في هذه النُّظم إلى ‪ 4‬شرائح‪.‬‬
‫شرائح التي تستخدم حاليَّا ً‬
‫السعات الفائضة لتخزين نسخ من ال َّ‬
‫تستعمل ِّ‬
‫(‪.)Parity‬‬
‫‪139‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫يمكن تصنيف ‪ RAID‬إلى نوعين‪:‬‬
‫‪ ‬الَّذي يتم الت َّح ُّكم به عن طريق نظم التَّشغيل‪.‬‬
‫متخصصة في هذا المجال‪ :‬وهي عبارة عن (جهاز تحكم ومعالج‬
‫‪ ‬أجهزة‬
‫ِّ‬
‫صص) موجودان داخل األقراص التي تدير الذاكرة لتنظيم المعطيات‬
‫مخ َّ‬
‫داخليَّا ً دون تد ُّخل نظم التَّشغيل‪.‬‬
‫قرص منطقي ٍ من أربعة أقراص فيزيائيَّة*‬
‫*الحظ تشكيل‬
‫ٍ‬
‫ت َّم تقسيم ‪ RAID‬إلى ‪ 7‬مستويات‪:‬‬
‫‪ :RAID 0 ‬يتم في هذا المستوى تقسيم المعطيات إلى قطع ‪ Stripes‬بحيث يتم وضع‬
‫َّأول مجموعة من القطع في األقراص على التَّرتيب ومن ث َّم إعادة تكرار العمليَّة حتى‬
‫تشمل القطع جميع األقراص بالكامل‪.‬‬
‫‪140‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫*مثال على تقنيَّة ‪ RAID 0‬في حالة قرصين فقط*‬
‫إيجابيَّات ‪:RAID 0‬‬
‫‪ ‬عمليَّات القراءة والكتابة أفضل وزيادة في األداء‪.‬‬
‫‪ ‬ال يوجد إهدار في المساحة َّ‬
‫ألن األقراص يتم استعمالها بالكامل لتخزين‬
‫معطيات مختلفة‪.‬‬
‫سلبيَّة ‪ RAID 0‬هي عدم وجود نسخة عن أي قطعة في األقراص وبالتَّالي استحالة استرجاع‬
‫المعطيات عند تلف أحد األقراص‪.‬‬
‫مالحظات‪______________________________________________:‬‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫____________________________________________________‬
‫___________________________________________________‬
‫‪141‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫‪ :RAID 1 ‬كذلك هو الحال كما في ‪ RAID 0‬يتم في هذا المستوى تقسيم المعطيات ولكن‬
‫مع بعض التحسينات‪:‬‬
‫‪ ‬يوجد نسخة طبق األصل عن كل قرص (‪ )Mirroring‬وبذلك تكون عملية‬
‫االسترجاع سهلة عند تلف أحد األقراص‪.‬‬
‫‪ ‬تتم عملية القراءة من القرص أو من النُّسخة عن القرص‪.‬‬
‫‪ ‬تتم عملية الكتابة على القرص وكذلك على نسخته‪.‬‬
‫‪ ‬عيب هذه الطريقة هو أنَّها غالية الثمن وكذلك فيها إهدار للمساحة ولكنَّها‬
‫مضمونة في حال تلف أحد األقراص كما أسلفنا‪.‬‬
‫الحظ في هذا الشكل القطع والنُّسخ عن القطع في ‪RAID 1‬‬
‫صلب يعمل بأحد أنظمة ‪ RAID‬ولكنَّه ال‬
‫مالحظة‪ :‬يمكن استخدام نظام التَّشغيل لجعل قرصه ال َّ‬
‫يعطي أدا ًء فيزيائيَّا ً فعليَّا ً كما لو كان القرص أساسا ً من النَّمط ‪.RAID‬‬
‫ي في نمط العمل و تقسيم األقراص‬
‫‪ :RAID 2 ‬في هذا المستوى يوجد‬
‫ٌ‬
‫اختالف فعل ٌّ‬
‫وكذلك يوجد اختالف في طريقة استرجاع المعطيات‪.‬‬
‫‪ ‬بدأ يدخل مفهوم التَّزامن بين األقراص في هذا المستوى‪.‬‬
‫‪ ‬يتم تقطيع األقراص إلى قطع صغيرة جدا ً من مرتبة الكلمة أو البايت‪.‬‬
‫‪ ‬يتم تصحيح األخطاء عن طريق مجموعة ِّق َ‬
‫طع معيَّنة )‪ (Strips‬تس َّمى‬
‫‪ Check Sum‬وسبب وجودها هو من أجل استرجاع المعطيات في حال‬
‫فقدانها ولكن ذلك يكلف وجود أقراص تس َّمى ‪.Parity disks‬‬
‫‪ ‬كلفتها أقل من كلفة ‪ RAID 1‬ولكنَّها غالية كذلك و‬
‫‪ ‬هي تعد نوعا ً ما من التِّكرار ولكن بدالً من تخزين نسخة عن القرص كما‬
‫هي؛ يتم تخزين ال‪.Parity‬‬
‫‪142‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم‪17‬‬
‫سادس‬
‫الدَّرس ال َّ‬
‫تاريخ‪ :‬الثالثاء‪19/3/2019‬‬
‫مالحظة‪ :‬عند ُّ‬
‫َّ‬
‫المخزنة السترجاع المعطيات‪.‬‬
‫تعطل أحد األقراص يتم االستعانة بــ ِّ‪Parity‬‬
‫‪ ‬ال يتم تخزين معلومات المستخدم على أقراص ‪ Parity‬فهي موجودة فقط‬
‫من أجل تصحيح األخطاء واسترجاع المعطيات في األقراص األصليَّة‪.‬‬
‫‪ ‬عند فقدان قيمة أحد البايتات بسبب عطل ما يمكن االستعانة بأقراص‬
‫‪ Parity‬لمعرفة ماهية البايت قبل فقدانه‪.‬‬
‫الحظ في هذا الشكل األقراص األصليَّة وأقراص ‪(RAID 2) Parity‬‬
‫‪ :RAID 3 ‬هذا المستوى المتزامن قريب من ‪ RAID 2‬ولكن مع تخفيض عدد أقراص‬
‫‪ Parity‬ووضع قرص ‪ Parity‬واحد فقط‪.‬‬
‫‪ ‬يتم اكتشاف عدد أقل من األخطاء بسبب تقليل عدد أقراص ‪.Parity‬‬
‫مالحظة‪ :‬يتم االستعانة بأقراص ‪ Parity‬إضافيَّة لزيادة وثوقيَّة المعطيات‪.‬‬
‫تذكرة‪ :‬التَّزامن يعني َّ‬
‫أن الكتابة تتم على جميع األقراص في آن واحد على التَّوازي (راجع‬
‫الصفحة ‪.)136‬‬
‫‪ ‬فيه سرعة عالية من نقل المعطيات‪.‬‬
‫*(‪*)RAID 3‬‬
‫‪143‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫‪ :RAID 4 ‬في هذا المستوى كل قرص يعمل بشكل منفصل (ال يوجد تزامن في الحالة‬
‫العاديَّة)‪.‬‬
‫‪ ‬جيِّد من أجل طلبات (دخل\خرج) منفصلة‪.‬‬
‫‪ ‬يكون حجم القطع كبيرا ً في هذا المستوى بما في ذلك القطع التي تؤلف‬
‫قرص ‪ Parity‬بحيث كل قرص ‪ Parity‬يقوم بتخزين المعلومات الالزمة‬
‫لتصحيح الخطأ واالسترجاع ألربعة قطع ‪ Strips‬مختلفة‪.‬‬
‫*الحظ أنَّ كل قرص ‪ Parity‬لديه معلومات لتصحيح الخطأ واالسترجاع ألربعة قطع ‪ Strips‬مختلفة *‬
‫‪ :RAID 5 ‬لوحظت مشكلة في أقراص ‪ RAID 4‬بأنَّها جميعا ً تعتمد على ‪Parity disk‬‬
‫في تصحيح األخطاء وقد تسبَّب ذلك باختناقات في هذا القرص لتزايد الضغط عليه‪.‬‬
‫دوار على األقراص بحيث يكون‬
‫‪ ‬يتم تخزين كل ‪ Strip‬من ال‪ Parity‬بشكل َّ‬
‫هذا الـ‪ Strip‬مسؤوالً عن تصحيح الخطأ في كل القطع ‪ Strips‬التي تقع‬
‫على نفس الخط األفقي معه‪.‬‬
‫‪ ‬شائع االستخدام في خوادم ال َّ‬
‫شبكة لسرعته في التَّخزين‪.‬‬
‫‪144‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫*الحظ وجود كل ‪ Strip‬من ال‪ Parity‬في أحد األقراص*‬
‫‪ :RAID 6 ‬مثل نظام ‪ ،RAID 5‬لكن لزيادة الموثوقيَّة ت َّم استعمال مستوى ثان (قرص‬
‫آخر) من ال‪.Parity‬‬
‫‪ ‬هنا يتم تخزين ال‪ Parity‬لكل خط أفقي على قرصين منفصلين لالحتياط في‬
‫حال تلف أحد األقراص في لحظة ما ونالحظ في هذه الحالة أنَّنا نستطيع‬
‫استرجاع كافَّة معلومات القرص التَّالف‪.‬‬
‫*(‪*)RAID 6‬‬
‫*في ال َّ‬
‫لكل سويَّة*‬
‫شكل ال َّ‬
‫سابق الحظ وجود قطعتين ‪ِّ two parity strips‬‬
‫األقراص ال َّ‬
‫ضوئيَّة (الليزريَّة)‪:‬‬
‫في بداية ثمانينيَّات القرن الماضي ت َّم اختراع األقراص المضغوطة (‪)CD Compact Disks‬‬
‫أو ما يس َّمى باألقراص الليزريَّة‪ ،‬عندما بدأت هذه التِّقنيَّة كان الغرض األساسي من وجودها هو‬
‫صوت وقد ش َّكلت ثورة ً في نقل المعلومات بحد ذاتها لعدم وجود‬
‫تشغيل الوسائط التي تتعلَّق بال َّ‬
‫‪145‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫السعة كانت سعة كل قرص‬
‫وسائط تخزين بسعتها وبسرعتها في ذلك الوقت‪ ،‬وفي الحديث عن ِّ‬
‫تقارب ‪ 700‬ميغا بايت‪ .‬ظهر بعدها عدَّة أجيال الحقة أتاحت الكثير من العمليَّات عليها‪.‬‬
‫*صورة لمدير شركة مايكروسوفت بيل غيتس وهو جالس على برجٍ عا ٍل من الورق ليُظهر‬
‫مدى سعة القرص المضغوط وهي تُقارب ‪ 330,000‬ورقة*‬
‫يتألَّف القرص المضغوط (‪ )CD-ROM‬من‪:‬‬
‫‪ -A‬قرص من مادَّة مرنة (البالستيك أو‬
‫األكريليك)‪.‬‬
‫‪ -B‬طبقة رقيقة ج َّدا ً من األلمنيوم وظيفتها‬
‫جيد للضَّوء‪.‬‬
‫تأمينَ انعكاس ِّ‬
‫‪ -C‬طبقة عازلة من مادَّة األكريليك‪.‬‬
‫‪ -D‬يمكن إضافة طبقة تجميليَّة من قبل‬
‫ال َّ‬
‫شركة المصنِّعة (اختياري)‪.‬‬
‫مصدر الضَّوء اللَّيزري‬
‫‪146‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫عمليَّة الكتابة‪ :‬في أقراص ‪ CD-ROM‬كانت الكتابة تتم لدى ال َّ‬
‫صنِّعة‪.‬‬
‫شركة الم َ‬
‫عمليَّة القراءة‪ :‬تتم بتسليط ضوء ليزري على القرص وقياس شدَّة االنعكاس منه لمعرفة قيمة‬
‫البت الذي ت َّمت قرا َءته‪.‬‬
‫تعرجات تقسم َّ‬
‫الطبقة التي تتم القراءة منها إلى مستويين (‪)Lands And Pits‬‬
‫الحظ وجو َد ُّ‬
‫وهي حفَر ونتوءات‪:‬‬
‫‪ ‬عند وجود استمرار في النُّتوء المقروء أو الحفرة المقرو َءة يتم ترجمة هذا‬
‫االستمرار إلى أصفار‪.‬‬
‫‪ ‬عند وجود تغيُّر (حفرة‪/‬نتوء) أو تغيُّر (نتوء‪/‬حفرة) يتم ترجمة هذا التَّغيُّر‬
‫إلى واحدات‪.‬‬
‫مالحظة‪ :‬في القرص المضغوط يكون التَّخزين على مسار واحد (‪ )Spiral‬وهو حلزوني كما‬
‫فسر َّ‬
‫سرعة‬
‫أن ال ُّ‬
‫يوضَّح الشكل المرافق وهو يبدأ في مركز القرص وينتهي في آخره‪ ،‬وهذا ما ي ِّ‬
‫الخطيَّة ثابتة للقرص المضغوط‪.‬‬
‫ِّ‬
‫صفات المسار الحلزوني لـ‪: CD-ROM‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫طوله ‪.5.27Km‬‬
‫الخطيَّة للقراءة تساوي ‪.1.2𝑚𝑠 −1‬‬
‫سرعة‬
‫ال ُّ‬
‫ِّ‬
‫ومن الممكن أن تتضاعف حتى ‪ 24‬مرة كحد‬
‫أقصى‪.‬‬
‫سعة تخزين صوت تساوي 𝑠𝑒𝑡𝑢𝑛𝑖‪.73.2m‬‬
‫كثافة وضع البتَّات منتظمة عليه‪.‬‬
‫‪147‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫صلبة كان التَّخزين على شكل ‪ Tracks‬تشترك بالمركز وكانت سرعة‬
‫تذكرة‪ :‬في األقراص ال َّ‬
‫القرص َّ‬
‫تتحرك حركةً انسحابيَّة‪.‬‬
‫والرأس‬
‫َّ‬
‫الزاويَّة ثابتة َّ‬
‫الرأس يبدأ القرص بالدَّوران بشكل‬
‫الحظ أنَّه عند البحث عن معطيات بعيدة عن مكان وجود َّ‬
‫أسرع حتى يصل إلى تلك المعطيات‪.‬‬
‫الحظ أيضا ً َّ‬
‫أن ال‪ Spiral‬يقسم إلى قِّطاعات طول كل منها هو 𝑠‪.2352 Byte‬‬
‫بنية كُل قطاع (‪ )Sector‬في ال‪: Spiral‬‬
‫يتألَّف ال ِّقطاع الواحد من التَّالي‪:‬‬
‫‪ :SYNC‬وهو عبارة عن شارة البداية ِّل َّ‬
‫قطاع جديد‪.‬‬
‫يشكل عنوان ال‪ Sector‬مع أنماط عمل هذا ال‪ Sector‬وهو يتألَّف من ثالثة أنماط‬
‫‪ :ID‬هو ِّ‬
‫مختلفة وهي كما يلي‪:‬‬
‫َّ‬
‫‪ :Mode 0 ‬في هذا النَّمط يتم تحديد ال ِّق َّ‬
‫كقطاع فارغ لم يتم استعماله‪.‬‬
‫طاع‬
‫‪148‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ :Mode 1 ‬هذا النَّمط يتيح تخزين ‪ 2048‬بايت من المعطيات مع ‪ 288‬بايت‬
‫وظيفتها هي تصحيح األخطاء‪.‬‬
‫‪ :Mode 2 ‬هذا النَّمط يتيح تخزين ‪ 2048‬بايت واستخدام ال‪ 288‬بايت‬
‫األخرى من أجل التَّخزين كذلك وبهذا تصبح سعة التخزين في ال‪Sector‬‬
‫هي ‪ 2336‬بايت ولكن بدون أي ِّ تصحيح للخطأ‪.‬‬
‫َّ‬
‫القطاع‪.‬‬
‫‪ :DATA‬هي معطيات المستخدِّم الَّتي يحويها هذا‬
‫‪ :L-ECC‬هي البايتات الَّتي تستعمل إما لتصحيح الخطأ أو للتخزين كما أسلفنا‪.‬‬
‫الوصول العشوائي في ‪ :CD-ROM‬هذه َّ‬
‫سبب هو َّ‬
‫أن‬
‫الطريقة بطيئة بالنسبة للمستخدم وال َّ‬
‫الرأس تكون مشغولةً بالقراءة من قطاع ما ويطلَب منها القراءة من قطاع آخر بعنوان معيَّن‬
‫َّ‬
‫فتضطر الرأس إلى البحث عن عنوان القطاع في كل القرص‪.‬‬
‫هنا يوجد بعض التقريب‪ ،‬أي َّ‬
‫الرأس تذهب إلى مكان تقريبي لوجود ال ِّقطاع ثم تقوم بالبحث‬
‫أن َّ‬
‫تسلسليَّا ً عنه حتى تجده‪.‬‬
‫عيوب الوصول العشوائي‪:‬‬
‫‪ ‬بطيء‪.‬‬
‫سرعة َّ‬
‫السواقة َّ‬
‫الزاويَّة‬
‫‪ ‬يقوم بإجهاد‬
‫ألن عمليَّة القراءة ستتض َّمن معادلة ال ُّ‬
‫َّ‬
‫لدوران القرص وكذلك‬
‫نبذة عن ‪ :CD-ROM‬كان ظهور القرص المضغوط نقلةً نوعيةً في أوائل الثَّمانينيات من حيث‬
‫التَّخزين والوزن والمتانة وقابليَّة تشغيله على أكثر من جهاز ولكن مع ذلك رافقت هذه الميزات‬
‫سلبيَّات والتي تتض َّمن البطء في القراءة وكذلك أنَّه للقراءة فقط‪.‬‬
‫بعض ال َّ‬
‫لذلك كان ال بُ َّد أن توجد بعض التَّطويرات على هذا القرص‪.‬‬
‫)‪( :CD-Recordable(CD-R‬كان مشهورا ً وغاليا ً وفي بداياته وما زال موجودا ً حتى اآلن)‪.‬‬
‫‪ :WORM (Write Once/Read Many) ‬هذا القرص دعم ميزة الكتابة‬
‫مرات عديدة‪.‬‬
‫عليه ولكن لمرة واحدة فقط مع إتاحة القراءة َّ‬
‫سواقات ‪ CD-ROM‬من حيث القراءة‪.‬‬
‫‪ ‬يتوافق مع َّ‬
‫بالليزر وعن طريق هذا‬
‫‪ ‬طريقة الكتابة تتم عن طريق مادة صبغيَّة تتأثَّر ِّ‬
‫الليزر يتم تحديد ما إذا كانت ِّق َيم البتَّات واحدات أم أصفار‪.‬‬
‫‪149‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫)‪:CD-Read\Write(CD-RW‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هو القرص األكثر استعماالً من عائلة ‪ CD‬والمعلومات عليه قابلة للمحي‪.‬‬
‫الرخص بسبب تنافس ال َّ‬
‫شركات على صناعته‪.‬‬
‫بقي سعره مائالً إلى ُّ‬
‫سواقات الَّتي تدعم القراءة من أقراص ‪ CD-ROM‬تستطيع القراءة‬
‫معظم ال َّ‬
‫منه‪.‬‬
‫نمط الكتابة يعتمد على نظام الحاالت ‪ Phases‬أي أنَّه في كل بت من‬
‫القرص يوجد حالتين هي ‪ 0‬منطقي وكذلك ‪ 1‬منطقي وك ُّل ما يتم فعله هو‬
‫القيام بتغيير الحاالت وبذلك يتغيَّر انعكاس الليزر عن كل حالة وبالتَّالي تغيُّر‬
‫قيم البتَّات المقرو َءة‪.‬‬
‫سابقة‬
‫*بعد النَّجاح في الحصول على نموذج من ‪ CD‬قابل للمحي والكتابة وبالميزات ال َّ‬
‫أصبحت زيادة السعة هي الهدف األساس للجيل القادم من األقراص وهي ‪*DVD‬‬
‫‪:DVD Technology‬‬
‫‪ ‬صار التَّخزين معتمدا ً على وجهي القرص وبالتالي أصبح هناك رأس للقراءة‬
‫وللكتابة على كل من الوجهين وبالتَّالي مضاعفة سعته‪.‬‬
‫عززت هذه التِّقنيَّة مفهوم تعدُّد ال َّ‬
‫َّ‬
‫السعة‬
‫‪‬‬
‫طبقات الذي قام بدوره بمضاعفة ِّ‬
‫على كل من الوجهين من القرص‪.‬‬
‫الخطيَّة لدوران القرص وهذا‬
‫سرعة‬
‫‪ ‬ت َّم تقليل المسافات بين البتَّات وزيادة ال ُّ‬
‫ِّ‬
‫السعة‪.‬‬
‫ما أدَّى كذلك إلى مضاعفة ِّ‬
‫سابقة تصبح لدينا سعة القرص هي ثمانية‬
‫نتيجة‪ :‬عند تطبيق المضاعفات ال َّ‬
‫أضعاف السعة القديمة‪.‬‬
‫مفهوم تعدُّد ال َّ‬
‫طبقات‪:‬‬
‫يقوم على وضع طبقتين أو أكثر من البتَّات‬
‫بحيث يتم تغيير تردُّد الليزر الَّذي يقوم‬
‫بالقراءة وبالتَّالي يقرأ مرة ً من َّ‬
‫الطبقة‬
‫األولى ويقرأ مرة ً من َّ‬
‫الطبقة الثَّانية‪.‬‬
‫‪150‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫نعود إلى خصائص ‪:DVD‬‬
‫‪ ‬سعته عالية ج َّدا ً لدرجة أنَّه يصل إلى ‪ 4.7G‬في َّ‬
‫الطبقة الواحدة‪.‬‬
‫الدقَّة ‪720p‬عليه بالكامل‪.‬‬
‫‪ ‬يمكن وضع فلم عالي ِّ‬
‫سماكة وال َّ‬
‫شكل من أجل أن يصب َح‬
‫‪ ‬ت َّم اعتماد نموذج قياسي منه من حيث ال َّ‬
‫إنتاجه مو َّحداً‪ ،‬وهذا أدَّى إلى حل الكثير من المشاكل‪.‬‬
‫بعض المشاكل في القراءة بين األقراص‪:‬‬
‫األول من ‪.DVD-W‬‬
‫سواقات أقراص ‪ DVD‬ال تقرأ أقراص الجيل َّ‬
‫‪َّ ‬‬
‫األول من ‪ DVD‬ال تقرأ أقراص ‪.CD-RW‬‬
‫سواقات الجيل َّ‬
‫‪َّ ‬‬
‫ت على‬
‫لذلك‬
‫سوق ويثب َ‬
‫انتظر كل من يريد شراء أقراص ‪ DVD‬إلى االنتظار حتى يهدأ ال ُّ‬
‫َ‬
‫نموذج مو َّحد من أقراص ‪.DVD‬‬
‫فرق القراءة بين كل من قرصي ‪ CD‬و‪:DVD‬‬
‫الحظ كيفيَّة القراءة من القرص ‪ CD-ROM‬وكذلك سعته‪.‬‬
‫الحظ كيفيَّة القراءة من القرص ‪ DVD‬وكذلك سعته‪.‬‬
‫‪151‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫أجيال الحقة من األقراص ظهرت الحقاً‪:‬‬
‫ت َّم تصميم أنواع هذه األقراص من أجل استيعاب أفالم بدقَّة عالية ج َّدا ً مثل ‪1080 Full-hd‬‬
‫وكذلك ‪ 4K‬وغيرها من الدقَّات العالية‪.‬‬
‫سواقات هذه األقراص بنفس َّ‬
‫سواقات ‪ DVD‬ولكن الفرق هو َّ‬
‫أن‬
‫الطريقة التي تعمل بها َّ‬
‫تعمل َّ‬
‫طول موجة الليزر فيها يكون أقصر وبالتَّالي يمكن زيادة كثافة النتوءات ‪ Pits‬في أقراصها‬
‫السعة‪.‬‬
‫وهذا ما يتسبَّب بزيادة ِّ‬
‫‪ :HD-DVD ‬يصل حجمه إلى 𝑠𝑒𝑡𝑦𝐵 𝑎𝑔𝑖𝐺 ‪ 15‬في ال َّ‬
‫طبقة الواحدة‪.‬‬
‫‪:Blu-ray ‬‬
‫‪ o‬تكون طبقة المعطيات فيها أقرب إلى ليزر القراءة وبالتَّالي زيادة‬
‫المصمم من زيادة كثافة النتوءات وبالتَّالي‬
‫يمكن‬
‫ِّ‬
‫تركيز الليزر وهذا ِّ‬
‫تصبح المساحة أعلى‪.‬‬
‫‪ o‬يصل فيها حجم ال َّ‬
‫طبقة الواحدة إلى 𝑠𝑒𝑡𝑦𝐵 𝑎𝑔𝑖𝐺 ‪.25‬‬
‫مرة واحدة وكذلك قابلة‬
‫‪ o‬يتوفَّر منه أقراص قابلة للقراءة فقط وللكتابة َّ‬
‫مرات عديدة‪.‬‬
‫للقراءة والكتابة َّ‬
‫سابق‪ ،‬في أقراص ‪ CD‬كان الطول الموجي لليزر الذي يقوم بالمسح كبيرا ً‬
‫الحظ ال َّ‬
‫شكل ال َّ‬
‫وبالتَّالي كانت النتوءات كبيرة لكي يال َح َ‬
‫تطور الليزر وجعل طول الموجة‬
‫ظ االنعكاس‪ ،‬مع ُّ‬
‫أصغر أصبح باإلمكان وضع بتات أكثر في نفس المساحة‪.‬‬
‫الحظ الفرق الهائل في الت َّ ُّ‬
‫سابقة‪.‬‬
‫وزع بين أنواع األقراص ال َّ‬
‫‪152‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األشرطة الممغنطة‪:‬‬
‫هي عبارة عن تقنيَّة ظهرت في أواخر التِّسعينات‪ ،‬هي تقنيَّة بطيئة ورخيصة ج َّدا ً وتصل إلى‬
‫سعات عالية جدا ً مثل 𝑠𝑒𝑡𝑦𝐵𝑇 ‪ 6.4‬توضع عليها المعلومات التي نادرا ً ما تستخدم و كذلك‬
‫تستخ َدم األشرطة الممغنطة في أرشفة المعلومات‪.‬‬
‫يتم النَّفاذ إلى المعطيات بشكل تسلسلي فعند البحث عن معلومة ما يتم البحث في الشريط من‬
‫بدايته حتى الوصول إلى المعلومة الهدف ويمكن تقديم الشريط أو ترجيعه‬
‫(‪ )Forward/Backward‬من المكان الحالي لرأس القراءة‪.‬‬
‫ظهرت من األشرطة الممغنطة العديد من األجيال هي ‪ LTO‬نترك للقارء االستنارة بمعرفة‬
‫المزيد عنها‪.‬‬
‫*****نهاية ال َّدرس السادس *****‬
‫‪153‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬الثالثاء ‪15/1/2019‬‬
‫سابع*****‬
‫*****بداية ال َّدرس ال َّ‬
‫مقدمة‪َّ :‬‬
‫إن الحاسوب يتعامل مع الكثير من وحدات اإلدخال التي تختلف فيما بينها من حيث‬
‫سرعة والتَّصميم فمنها لوحة المفاتيح (أزرار) وكذلك الفأرة‬
‫طريقة التَّعامل مع المستخدم وال ُّ‬
‫ساس حركة) والمايكروفون(صوت) والكثير من َّ‬
‫الطرفيَّات األخرى‪ .‬كذلك‪ ،‬تختلف‬
‫(أزرار وح َّ‬
‫طريقة عرض المعطيات في وحدات اإلخراج ومثاالً على ذلك طريقة عرض المعلومات عن‬
‫طريق ال َّ‬
‫شاشة وكذلك طريقة عرض المعلومات عن طريق الطابعة وغيرها‪.‬‬
‫سبب‬
‫كانَ ال ب َّد أن توج َد طريقة لكيال يتعامل المعالج مع هذه الطرفيَّات بشكل مباشر وال َّ‬
‫أن هذه َّ‬
‫الرئيسي هو َّ‬
‫الطرفيات ال ترتبط بـ ِّ ‪ BUS System‬الخاص بالحاسوب لذلك ت َّم اللُّجوء‬
‫َّ‬
‫إلى نموذج دخل\خرج (‪ )Input/ Output Module‬الَّذي يقوم بالتَّعامل مع ا َّ‬
‫لطرفيَّات بدالً‬
‫عن المعالج‪.‬‬
‫تعريف ‪ :I/O Module‬هو عبارة عن واجهة تستطيع التَّعامل مع الذَّاكرة والمعالج من جهة‬
‫وكذلك تستطيع التَّعامل مع طرفيَّة من طرفيَّات الجهاز أو أكثر من جهة أخرى‪.‬‬
‫*شكل يبين كيفيَّة ارتباط ‪ I/O Module‬بتوصيالت الحاسوب الدَّاخليَّة*‬
‫‪154‬‬
‫المحاضرة ‪-2-‬‬
‫محاضرة بنيان حاسوب رقم‪18‬‬
‫سابع‬
‫الدَّرس ال َّ‬
‫تاريخ‪ :‬األربعاء‪17/3/2019‬‬
‫تصنيف وحدات ‪ I/O‬بحسب طريقة نقل البيانات مع ال َّ‬
‫طرفيَّات‪:‬‬
‫‪ -1‬وحدات قابلة للتَّعامل مع المستخدم‪ :‬ومنها لوحة المفاتيح والفأرة وكذلك الشاشة‬
‫والطابعة وغيرها‪.‬‬
‫‪ -2‬وحدات قابلة للتَّعامل مع اآللة‪ :‬تكون عبارة عن أجهزة وظيفتها المراقبة والتَّح ُّكم‪.‬‬
‫صة بالتَّواصل مع األجهزة البعيدة ومثاالً على ذلك‬
‫‪ -3‬وحدات االتصال‪ :‬هذه الوحدات خا َّ‬
‫يمكن تصنيف بطاقة ال َّ‬
‫شبكة (‪ )NIC‬والمودم (‪ )Modem‬في إطار هذه الوحدات‪.‬‬
‫بنية الجهاز الخارجي‪:‬‬
‫طط إجمالي يبين البنية العا َّمة ألحد ال َّ‬
‫* مخ َّ‬
‫طرفيَّات*‬
‫الحظ وجود ‪ Control Logic‬الَّذي وظيفته هو قراءة حالة ‪ I/O Module‬إن كان جاهزا ً أم‬
‫ال‪ ،‬كذلك الحظ وجود ‪ Buffer‬المسؤول عن نقل المعطيات من وإلى النَّموذج‪.‬‬
‫ساس يختلف باختالف البيئة يقوم بتحويل ما يتم‬
‫‪ ‬في حالة الدَّخل يوجد ح َّ‬
‫قياسه إلى معطيات قابلة للقراءة من قبل الحاسوب‪.‬‬
‫محول يختلف أيضا ً باختالف البيئة يقوم بتحويل‬
‫‪ ‬في حالة الخرج يوجد‬
‫ِّ‬
‫المعطيات القادمة إليه إلى معطيات قابلة للقراءة من قبل المستخدم أو اآللة‬
‫أو وحدة االتصال‪.‬‬
‫قام ‪ I/O Module‬بإراحة ال‪ CPU‬عن مه َّمة التَّعامل مع َّ‬
‫الطرفيات وبالتَّالي تسريع أداء‬
‫الحاسوب بشكل كبير‪.‬‬
‫‪155‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫وظائف ‪:I/O Module‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫التح ُّكم بأجهزة ال َّدخل والخرج وتوقيتها أي جعلها تعمل على ساعة محددة‬
‫تناسب سرعتها‪.‬‬
‫استالم أوامر القراءة والكتابة من ال ‪ CPU‬وارسال الحالة والمعلومات‬
‫المستلمة من الجهاز المستخدم إلى ال‪. CPU‬‬
‫توصيل أوامر ال ‪ CPU‬الخاصة بالقراءة والكتابة إلى الجهاز الهدف واستالم‬
‫البيانات الموافقة منه‪.‬‬
‫تخزين المعطيات المأخوذة من أحد أجهزة الدخل أو من المعالج‪.‬‬
‫إجراء التحويل المناسب على المعطيات لنقلها إلى أحد وحدات اإلخراج‪.‬‬
‫اكتشاف مصادر األخطاء التي تحصل في أجهزة الدخل أو الخرج تمهيدا‬
‫إلرسالها إلى ال‪. CPU‬‬
‫بع َد معرفة وظائف ‪ I/O Module‬ال ب َّد من معرفة ال َّ‬
‫طريقة الَّتي يقوم بها هذا النَّموذج‬
‫بالتَّعامل مع المعالج‪.‬‬
‫عند طلب عمليَّة إدخال أو إخراج يقوم المعالج بفحص حالة ‪ I/O Module‬فيقوم النَّموذج‬
‫بإرسال حالته للمعالج وفي حال جاهزيَّة هذا النَّموذج يقوم المعالج بطلب نقل للمعطيات‪.‬‬
‫‪ ‬في حال كانت العمليَّة هي عمليَّة إدخال‪ ،‬يتلقَّى النَّموذج المعطيات من‬
‫المعالج‪.‬‬
‫‪ ‬في حال كانت العمليَّة هي عمليَّة إخراج‪ ،‬يقوم النَّموذج بنقل المعطيات إلى‬
‫المعالج‪.‬‬
‫انظر إلى الشَّكل التَّالي‪:‬‬
‫عند استخدام النَّموذج (‪ )I/O Module‬يتم تخزين المعطيات في ‪ Data Registers‬ريثما يتم‬
‫نقلها وكذلك عند استخدام أكثر من طرفيَّة‬
‫مربوطة بالنَّموذج يقوم بوضع حالة كل‬
‫طرفيَّة في‬
‫‪.Status/control Registers‬‬
‫الحظ خطوط التح ُّكم والعناوين‬
‫والمعطيات‪.‬‬
‫‪156‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنويه‪ I/O Module :‬له عنوان وهذا العنوان وحيد وله فقط بالضَّرورة‪.‬‬
‫تقنيَّات الدَّخل والخرج‪:‬‬
‫يوجد ثالثة تقنيَّات سيتم شرح كل منها على حدة‪:‬‬
‫‪ -A‬الدخل والخرج ال ُمبرمج (‪:)Programmed I/O‬‬
‫في هذه َّ‬
‫الطريقة عند تنفيذ برنامج ومالحظة َّ‬
‫أن التَّعليمة‬
‫المقروءة هي عبارة عن تعليمة تفاعل مع أحد َّ‬
‫الطرفيَّات‬
‫يتم ما يلي مع العلم َّ‬
‫أن العمليَّة هي عمليَّة قراءة‪:‬‬
‫‪ -1‬يقوم ال‪ CPU‬بطلب أمر قراءة من‪.I/O Module‬‬
‫‪ -2‬يقوم ال‪ CPU‬بقراءة حالة ‪.I/O Module‬‬
‫‪ ‬في حال كان ‪ I/O Module‬جاهزا ً ينتقل‬
‫للخطوة التَّالية (‪.)status bit =1‬‬
‫‪ ‬في حال لم يكن جاهزا ً يرجع للخطوة ‪2‬‬
‫(‪.)status bit =0‬‬
‫‪ ‬في حال وجود خطأ تتم مقاطعة العمليَّة‪.‬‬
‫‪ -3‬يقوم ال‪ CPU‬بقراءة كلمة واحدة فقط من ‪I/O‬‬
‫‪.Module‬‬
‫‪ -4‬يقوم ال‪ CPU‬بكتابة الكلمة التي قرأها في الذَّاكرة‪.‬‬
‫‪ -5‬في حال االنتهاء يتم االنتقال إلى التعليمة التَّالية‪.‬‬
‫الرجوع إلى التعليمة ‪.1‬‬
‫‪ -6‬في حال عدم االنتهاء يتم ُّ‬
‫*يمكن إعادة ذات العمليَّة ولكن في حالة الكتابة بأسلوب‬
‫مماثل*‬
‫الحظ َّ‬
‫أن هذه التِّقنيَّة تجعل ال‪ CPU‬في حالة انتظار دائم‬
‫سبب هو َّ‬
‫أن ال‪ CPU‬ال يعلم الموعد الحقيقي النتهاء العمليَّة‬
‫حتَّى إنهاء كامل العمليَّة وال َّ‬
‫المذكورة وال يوجد أي مقاطعة من قبل النَّموذج بحيث تع ِّلم ال‪ CPU‬إذا انتهت العمليَّة أم ال‪،‬‬
‫ت‬
‫لذلك يتم الفحص بشكل دوري على حالة ‪ ،I/O Module‬بذلك يكون‬
‫هناك ضياعٌ لوق ِّ‬
‫َ‬
‫المعالج على الرغم من بساطة َّ‬
‫الطريقة‪.‬‬
‫‪157‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫مع ذلك هذه َّ‬
‫سس‬
‫الطريقة تجعل لل‪ CPU‬سيطرة ً تا َّمة على الدَّخل والخرج من حيث تح ُّ‬
‫الحاالت ومن حيث توجيه أوامر القراءة والكتابة وكذلك من حيث نقل المعطيات‪.‬‬
‫األوامر الممكن طلبها من ‪:I/O Module‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫يمكن لل‪ CPU‬طلب أوامر التَّح ُّكم بحيث يخبر ‪ I/O Module‬بما عليه‬
‫سواقة‬
‫فعله‪ ،‬ومثاالً على ذلك هو التَّح ُّكم بسرعة دوران القرص في َّ‬
‫األقراص‪.‬‬
‫يمكنه فحص حالة ‪ I/O Module‬في حال كان هناك خطأ أو إذا كان جاهزا ً‬
‫أم ال كما أسلفنا‪.‬‬
‫يمكنه التَّفاعل مع ‪ I/O Module‬من حيث قراءة المعطيات وكتابتها‪.‬‬
‫يمكن لل‪ CPU‬طلب عنوان ‪ I/O Module‬بحيث يقوم بتعريفه وكذلك يقوم‬
‫بعنونة كل جهاز متَّصل بالنَّموذج‪.‬‬
‫هناك طريقتان لعنونة أجهزة ‪ I/O‬وهي‪:‬‬
‫‪ :Memory Mapped I/O‬في هذه الحالة‬
‫تتشارك األجهزة مع الذَّاكرة في مجال العناوين‬
‫ومحاسن هذه َّ‬
‫الطريقة تكمن في إمكانيَّة عنونة‬
‫عدد كبير من أجهزة ‪ I/O‬بحيث يكون كل ‪I/O‬‬
‫هو بمثابة عنوان في الذاكرة يت ُّم القراءة منه‬
‫وكذلك الكتابة عليه‪ ،‬في هذه َّ‬
‫الطريقة ال يمكن‬
‫صة بطرفيَّات ‪.I/O‬‬
‫إنشاء تعليمات خا َّ‬
‫‪ :Isolated I/O‬في هذه الحالة يكون‬
‫لكل من الذَّاكرة وطرفيَّات ‪ I/O‬مجال‬
‫هناك‬
‫عناوين مختلف وبالتَّالي يكون‬
‫َ‬
‫عد ٌد محدَّد مسمو ٌح به من َّ‬
‫الطرفيات‪،‬‬
‫في هذه َّ‬
‫الطريقة يمكن إنشاء تعليمات‬
‫صة بـ ِّ‪ I/O‬فقط بحيث أنَّها تحتاج‬
‫خا َّ‬
‫إلى خطوط ‪ Select‬لتحقيق ذلك‪.‬‬
‫‪158‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫*شكل يبين الفرق بين الطريقتين ‪*Isolated & Memory Mapped‬‬
‫ترك للقارئ التَّم ُّعن في كل من َّ‬
‫سابقتين‪.‬‬
‫الطريقتين ال َّ‬
‫ي َ‬
‫‪ -B‬الدخل والخرج المقود بنظام المقاطعات (‪:)Interrupt Driven I/O‬‬
‫هذه َّ‬
‫الوقت الَّذي يقضيه‬
‫الطريقة تختصر الكثير من َ‬
‫المعالج أثناء انتظاره حتَّى تكون طرفيَّة ‪ I/O‬جاهزة ً‬
‫سبب فيها هو تزويد طرفيَّة ‪ I/O‬بنظام مقاطعة للمعالج‬
‫وال َّ‬
‫بحيث أنَّها عن َد جاهزيَّتها تخبر المعالج بذلك‪.‬‬
‫‪ -1‬يطلب ال‪ CPU‬أمر قراءة من ‪ I/O Module‬ويقوم‬
‫بأداء عمل آخر حتى تصله مقاطعة من َّ‬
‫الطرفيَّة‪.‬‬
‫‪ -2‬تصل مقاطعة إلى ال‪ CPU‬مع حالة ‪.I/O Module‬‬
‫‪ ‬في حال كان ‪ I/O Module‬جاهزا ً ينتقل‬
‫للخطوة التَّالية (‪.)status bit =1‬‬
‫‪ ‬في حال وجود خطأ تتم مقاطعة العمليَّة‪.‬‬
‫‪ -3‬يقوم المعالج بقراءة كلمة واحدة فقط من ‪I/O‬‬
‫‪.Module‬‬
‫‪ -4‬يقوم ال‪ CPU‬بكتابة الكلمة التي قرأها في الذَّاكرة‪.‬‬
‫‪ -5‬في حال االنتهاء يتم االنتقال إلى التعليمة التَّالية‪.‬‬
‫‪159‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الرجوع إلى التعليمة ‪.1‬‬
‫‪ -6‬في حال عدم االنتهاء يتم ُّ‬
‫*يمكن إعادة ذات العمليَّة ولكن في حالة الكتابة بأسلوب مماثل*‬
‫نتعرف التَّجهيزة‪ ،‬من بين عدَّة تجهيزات‪ ،‬الَّتي أصدرت‬
‫كيفيَّة التَّعامل مع مقاطعات متعددة‪( :‬أي كيف‬
‫َّ‬
‫المقاطعة؟)‪.‬‬
‫هناك ‪ 4‬طرق للتَّعامل مع المقاطعات المتعدِّدة‪:‬‬
‫الطريقة جيِّدة في حال ِّة عدد محدود من َّ‬
‫‪ -1‬خط مقاطعة منفرد لكل ‪ :I/O Module‬هذه َّ‬
‫الطرفيَّات َّ‬
‫ألن‬
‫هناك عد ٌد منته من خطوط المقاطعة‪.‬‬
‫‪ :Software Poll -2‬عند قدوم مقاطعة إلى ال‪ ،CPU‬يقوم ال‪ CPU‬بالمرور على كل نموذج ‪I/O‬‬
‫وسيئة هذه َّ‬
‫الطريقة أنَّها بطيئة‪.‬‬
‫على حدة حتى يصل إلى النَّموذج الَّذي رف َع المقاطعة ِّ‬
‫‪ :Daisy chain (Hardware Poll) -3‬في هذه َّ‬
‫الطريقة‪ ،‬عند قدوم مقاطعة إلى ال‪ ،CPU‬يقوم‬
‫ال‪ CPU‬بإرسال إقرار مقاطعة إلى ال‪ Bus‬المشترك بين نماذج ‪ I/O‬فيقوم النموذج الَّذي قام‬
‫بالمقاطعة بإرسال ‪ Vector‬يحمل عنوانه إلى ال‪ CPU‬وبذلك يعلم ال‪ CPU‬من أرس َل المقاطعة‬
‫بالتَّحديد‪.‬‬
‫‪ :Bus Master -4‬في هذه َّ‬
‫الطريقة كل نموذج ‪ I/O‬يجب أن يستحوذ على ال‪ BUS‬حتى يقوم بإرسال‬
‫المقاطعة‪ .‬مثال‪.)PCI , SCSI( ،‬‬
‫سؤال مهم‪ :‬ماذا لو قام جهازان برفعِّ مقاطعة بنفس الوقت؟‬
‫جواب‪( :‬األولويَّة مه َّمة في كل ال ُّ‬
‫طرق) بحيث يتم تخديم النَّموذجِّ ذي األولويِّة األعلى إال في ‪Bus Master‬‬
‫بحيث ال يوجد أي نموذج يستطيع المقاطعة عدا ال‪ Master‬الحالي لل‪. BUS‬‬
‫‪ -C‬النَّفاذ المباشر للذَّاكرة (‪:)Direct Memory Access‬‬
‫هو عبارة عن نموذج ‪ I/O‬إضافي يقوم بالتَّكفُّل بمه َّمة‬
‫التَّعامل مع نماذج ‪ I/O‬وهو موجود على ال‪BUS‬‬
‫الخاص بال‪ CPU‬ونماذج ‪.I/O‬‬
‫وال َّ‬
‫طريقة بكل بساطة هي‪:‬‬
‫‪160‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ -1‬يقوم المعالج بإخبار ال‪َّ DMA‬‬
‫بأن هناك عمليَّة‬
‫قراءة أو كتابة‪.‬‬
‫‪ -2‬يقوم ال‪ DMA‬بتبادل المعطيات مع الذاكرة‬
‫الرئيسيَّة من دون تد ُّخل المعالج وبعد انتهاء نقل‬
‫المعطيات من ‪ ،I/O Module‬يقوم بمقاطعة‬
‫المعالج إلعالمه بانتهاء العمليَّة‪.‬‬
‫إذا ً ما هي بنية ‪ DMA‬وما هي آليَّة عمله؟‬
‫َّ‬
‫سجالت المعطيات والعناوين‬
‫يحوي ‪ DMA‬مجموعة من‬
‫وكذلك فيه نظام تح ُّكم‪ ،‬مع عدد من خطوط المعطيات‬
‫وخطوط العناوين مضافا ً لها ما يحتاجه ال‪ DMA‬لتحقيق‬
‫وظيفته الَّتي تقتضي عدم تكليف ال‪ CPU‬أي عناء بما‬
‫يتعلَّق بمسألة التَّعامل مع طرفيَّات الدَّخل والخرج‪.‬‬
‫آلية عمل ‪:DMA‬‬
‫‪-1‬‬
‫‪-2‬‬
‫‪-3‬‬
‫‪-4‬‬
‫يقوم المعالج بإخبار ‪ DMA‬بما يلي‪:‬‬
‫‪ ‬نوع العمليَّة المطلوبة (قراءة ‪ -‬كتابة)‪.‬‬
‫‪ ‬عنوان َّ‬
‫الطرفيَّة المقصودة‪.‬‬
‫‪ ‬عنوان البداية للمعطيات في الذَّاكرة‪.‬‬
‫‪ ‬حجم هذه المعطيات‪.‬‬
‫يذهب ال‪ CPU‬لعم ِّل أشياء أخرى وفي هذا الوقت يقوم ال‪ DMA‬بالتَّفاعل مع َّ‬
‫الطرفيَّة‪.‬‬
‫يقوم ال‪ DMA‬بعمل ما يس َّمى ‪ Cycle Stealing‬لنقل المعطيات من ‪ I/O Module‬إلى الذَّاكرة‬
‫كلمةً تلو األخرى‪.‬‬
‫يقوم ‪ DMA‬بإرسال مقاطعة تخبر ال‪CPU‬‬
‫بأنَّه قد انتهى من العمل‪.‬‬
‫تعريف ‪ :Cycle Stealing‬هو قيام ال‪ DMA‬بأخذ‬
‫‪ BUS‬المعطيات من ‪ CPU‬واستغالل هذا ال‪ BUS‬في‬
‫إرسال المعلومات إلى الذَّاكرة من طرفيَّة ‪ I/O‬أو‬
‫استقبال المعطيات من الذَّاكرة ووضعها في طرفيَّة‬
‫‪ I/O‬ويكون ال‪ CPU‬متوقِّفا ً في هذا الوقت (لمدَّة دورة‬
‫تعليمة)‪.‬‬
‫طبعا ً بما َّ‬
‫أن هذه العمليَّة تقوم بإيقاف ال‪ CPU‬لمدَّة‬
‫الطرق هذه هي َّ‬
‫دورة تعليمة فسيكون هناك بعض البطء ولكن بالمقارنة بباقي ُّ‬
‫الطريقة األسرع على‬
‫اإلطالق‪.‬‬
‫الحظ الشَّكل الَّذي على اليسار‪:‬‬
‫‪161‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫الحظ َّ‬
‫أن ال‪ DMA‬يقوم بأخذ ال‪ Bus‬في كل تعليمة ‪ Fetch‬أو ‪.Store‬‬
‫مالحظات‪________________________ :‬‬
‫______________________________‬
‫______________________________‬
‫______________________________‬
‫___________________________________________________________‬
‫___________________________________________________________‬
‫إعدادات ‪:DMA‬‬
‫‪:Detached DMA Controller‬‬
‫‪ o‬فيها يكون كل من المعالج وال‪ DMA‬وطرفيَّات ‪ I/O‬وكذلك الذَّاكرة على نفس ال‪. BUS‬‬
‫‪ o‬رخيصة ولكنَّها غير فعَّالة‪.‬‬
‫‪ o‬يتم صرف دورتي تعليمة لقراءة كلمة مثالً(‪ ،)I/O → DMA then DMA → Memory‬وبالتَّالي‬
‫إيقاف المعالج مؤقَّتا ً لدورتين كذلك‪.‬‬
‫‪:Integrated DMA Controller‬‬
‫‪ o‬ال تقع َّ‬
‫الطرفيَّات على ال‪ BUS‬بل لها اتصال مباشر بال‪. DMA‬‬
‫‪ o‬كل عمليَّة نقل تستهلك دورة تعليمة واحدة (‪.)DMA → Memory‬‬
‫‪ o‬يمكن لل‪ DMA‬أن يرتبط بأكثر من جهاز من الطرفيات ويجب أن يكون لدى ‪ DMA‬واجهة لكل‬
‫‪.I/O Module‬‬
‫‪:Separate I/O BUS‬‬
‫‪162‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫‪ o‬أصبح هناك ‪ BUS‬خاص يربط جميع طرفيَّات ‪ I/O‬بـ ِّ‪ DMA‬وهذا ما يخفض عدد واجهات ‪DMA‬‬
‫مع ‪.I/O Modules‬‬
‫‪ o‬كل عمليَّة نقل تستهلك دورة تعليمة واحدة (‪.)DMA → Memory‬‬
‫تقنيَّة ‪:FLY-BY‬‬
‫تمر مرورا ً من ال‪ BUS‬المشترك بين الطرفية والذاكرة دون المرور أو‬
‫هذه التِّقنيَّة تجعل المعطيات ُّ‬
‫التخزين بال‪ DMA‬بحد ذاته‪ ،‬وبذلك يمكن لل‪ DMA‬أن ينقل المعطيات بين منفذ ‪ I/O‬والذَّاكرة مباشرةً‪.‬‬
‫سابع *****‬
‫*****نهاية ال َّدرس ال َّ‬
‫مالحظات‪______________________________________________________:‬‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫‪163‬‬
‫المحاضرة ‪-1-‬‬
‫األول‬
‫الدرس َّ‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
‫تنظيم الحاسوب ووظائفه‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫____________________________________________________________‬
‫‪164‬‬
‫المحاضرة ‪-1-‬‬
‫تاريخ‪ :‬األربعاء ‪9/1/2019‬‬
Download