1684929242_4

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

‫كلية الهندسة‬

‫قسم هندسة امليكاترونيك‬

‫بنيان الحواسيب‬
‫محاضرة ‪4‬‬

‫د‪ .‬فادي متوج‬

‫‪https://manara.edu.sy/‬‬
‫• إلعطاء أوامر لجهاز الكمبيوتر‪ ،‬يجب أن نتحدث لغته‪ .‬تسمى الكلمات املكونة للغة الكمبيوتر بالتعليمات‬
‫(‪ ،)Instructions‬وتسمى مفرداتها مجموعة التعليمات(‪.)Instruction Set‬‬
‫• ربما يظن البعض أن لغات أجهزة الكمبيوتر متنوعة مثل تلك الخاصة بالناس‪ ،‬ولكن في الواقع‪ ،‬فإن لغات‬
‫الكمبيوتر متشابهة ً‬
‫تماما ‪ .‬يحدث هذا التشابه ألن جميع أجهزة الكمبيوتر مصنعة من تقنيات تعتمد على مبادئ‬
‫أساسية مماثلة وألن هناك بعض العمليات األساسية التي يجب أن توفرها جميع أجهزة الكمبيوتر‪.‬‬
‫• في هذه املحاضرة‪ ،‬سندرس مجموعة التعليمات الخاصة بجهاز كمبيوتر حقيقي‪ ،‬كصيغة مكتوبة من قبل‬
‫األشخاص و كصيغة مقروءة من قبل الكمبيوتر‪.‬‬

‫‪https://manara.edu.sy/‬‬
‫التعليمات الحسابية‬
‫مثال‪ :‬إن مهمة املترجم (‪ )Compiler‬هي إسناد متغيرات البرنامج إلى املسجالت‪ .‬على سبيل املثال في العالقة‪:‬‬
‫;)‪f=(g + h)-(i + j‬‬
‫تم إسناد املتغيرات ‪ f‬و ‪ g‬و ‪ h‬و ‪ i‬و ‪ j‬للمسجالت ‪ $s0‬و ‪ $s1‬و ‪ $s2‬و ‪ $s3‬و ‪ $s4‬على الترتيب‪ .‬ما هو كود ‪MIPS‬‬
‫الناتج عن املترجم؟‬
‫الحل‪:‬‬
‫‪add $t0,$s1,$s2‬‬ ‫‪# register $t0 contains g + h‬‬
‫‪add $t1,$s3,$s4‬‬ ‫‪# register $t1 contains i + j‬‬
‫‪sub $s0,$t0,$t1‬‬ ‫)‪# f gets $t0 – $t1, which is (g + h)–(i + j‬‬

‫‪https://manara.edu.sy/‬‬
‫عناوين الذاكرة ومحتويات الذاكرة في تلك‬
‫املو اقع‬
‫• تحتوي العديد من البرامج على متغيرات أكثر من عدد املسجالت التي تمتلكها أجهزة الكمبيوتر‪ .‬وبالتالي‪ ،‬يحاول‬
‫ً‬
‫استخداما في املسجالت ويضع الباقي في الذاكرة‪ ،‬باستخدام تعليمات النقل‬ ‫املترجم االحتفاظ باملتغيرات األكثر‬
‫لنقل املتغيرات بين املسجالت والذاكرة‪.‬‬
‫ُ‬ ‫ً‬
‫• عادة ما يطلق على تعليمة نقل البيانات التي تنسخ البيانات من الذاكرة إلى املسجل تعليمة ‪. load‬‬
‫ً‬
‫متبوعا باملسجل املراد تحميله بالقيمة املسحوبة من الذاكرة‪،‬‬ ‫• صيغة تعليمة ‪ load‬هي كما يلي‪ :‬اسم العملية‬
‫ثم قيمة ثابتة ومسجل مستخدم للوصول إلى الذاكرة‪.‬‬
‫• يشكل مجموع القيمة الثابتة من التعليمة ومحتويات املسجل الثاني عنوان موقع الذاكرة املطلوب الوصول‬
‫إليه‪.‬‬
‫• االسم الفعلي لهذه التعليمة في قائمة تعليمات ‪ MIPS‬هو ‪ ،lw‬وهي اختصار لـ ‪load word‬‬

‫‪https://manara.edu.sy/‬‬
‫عناوين الذاكرة ومحتويات الذاكرة في تلك‬
‫املو اقع‬
‫• تحتوي لغات البرمجة على متغيرات بسيطة تحتوي على عناصر بيانات مفردة‪ ،‬كما هو الحال في املثال السابق ‪،‬‬
‫ً‬
‫تعقيدا مثل املصفوفات‪.‬‬ ‫ولكنها تحتوي ً‬
‫أيضا على بنى بيانات أكثر‬
‫• يمكن أن تحتوي بنى البيانات املعقدة هذه على العديد من عناصر البيانات أكثر من عدد املسجالت املوجودة في‬
‫الكمبيوتر‪ .‬كيف يمكن للكمبيوتر أن يمثل ويصل إلى مثل هذه البنى الكبيرة؟‬
‫• يمكن للمعالج االحتفاظ بكمية صغيرة فقط من البيانات في املسجالت‪ ،‬لكن ذاكرة الكمبيوتر تحتوي على مليارات‬
‫من عناصر البيانات‪ .‬وبالتالي‪ ،‬يتم االحتفاظ ببنى البيانات (املصفوفات) في الذاكرة‪.‬‬
‫• تحدث العمليات الحسابية فقط على املسجالت في تعليمات ‪ ،MIPS‬وبالتالي‪ ،‬يجب أن تتضمن مجموعة تعليمات‬
‫‪ MIPS‬تعليمات تنقل البيانات بين الذاكرة واملسجالت‪ .‬تسمى هذه التعليمات تعليمات نقل البيانات ‪Data‬‬
‫‪. Transfer Instructions‬‬
‫• تستخدم مجموعة تعليمات ‪ MIPS‬في الواقع عنونة البايت‪،‬حيث تمثل كل كلمة أربعة بايتات‪.‬‬
‫• للوصول إلى كلمة في الذاكرة‪ ،‬يجب أن تحتوي التعليمات على عنوان الذاكرة لهذه الكلمة‪.‬‬

‫‪https://manara.edu.sy/‬‬
‫عناوين الذاكرة ومحتويات الذاكرة في تلك‬
‫املو اقع‬
‫• باإلضافة إلى ربط املتغيرات باملسجالت‪ ،‬يحجز املترجم لبنى البيانات مثل املصفوفات مواقع في‬
‫الذاكرة‪.‬‬
‫• يمكن للمجمع بعد ذلك وضع عنوان البداية الصحيح في تعليمات نقل البيانات‪.‬‬
‫نظرا ألن معظم بنى املعطيات تتعامل مع وحدات البايت الفردية‪ .‬لذلك‪ ،‬يتطابق عنوان الكلمة مع‬ ‫• ً‬
‫عنوان واحد من ‪ 4‬بايت داخل الكلمة‪ ،‬وتختلف عناوين الكلمات املتسلسلة بمقدار ‪.4‬‬
‫ً‬
‫• على سبيل املثال‪ ،‬يوضح الشكل جانبا عناوين ‪ MIPS‬الفعلية للكلمات؛ عنوان البايت للكلمة الثالثة‬
‫هو ‪.8‬‬
‫• في ‪ ،MIPS‬يجب أن تبدأ الكلمات من العناوين التي تعد من مضاعفات الرقم ‪ .4‬وهذا املتطلب يسمى‬
‫ً‬
‫تقييد املحاذاة (‪( ،)alignment‬سنرى الحقا أن املحاذاة تؤدي إلى عمليات نقل أسرع للبيانات‪).‬‬
‫• تنقسم أجهزة الكمبيوتر إلى تلك التي تستخدم عنوان أقص ى اليسار أو بايت "النهاية الكبيرة ‪"big end‬‬
‫كعنوان للكلمة مقابل تلك التي تستخدم بايت أقص ى اليمين أو "النهاية الصغيرة ‪."little end‬‬
‫• تتبع مجموعة تعليمات ‪ MIPS‬نمط العنونة ‪big end‬‬

‫‪https://manara.edu.sy/‬‬
‫ترجمة عبارة حسابية عندما تكون‬
‫املعامالت في الذاكرة‬
‫مثال‪ :‬افترض أن املتغير ‪ h‬مرتبط بالسجل ‪ $s2‬وأن العنوان األساس ي للمصفوفة ‪ A‬موجود في‪$s2‬ما هو برنامج لغة األسمبلي ‪MIPS‬‬
‫للعبارة التالية؟‬
‫;]‪A[12] = h + A[8‬‬
‫الحل‪:‬‬
‫‪lw‬‬ ‫)‪$t0,32($s3‬‬ ‫]‪# Temporary reg $t0 gets A[8‬‬
‫‪add $t0,$s2,$t0‬‬ ‫]‪# Temporary reg $t0 gets h + A[8‬‬
‫‪sw‬‬ ‫)‪$t0,48($s3‬‬ ‫]‪# Stores h + A[8] back into A[12‬‬

‫‪https://manara.edu.sy/‬‬
‫معامالت ثابتة أو فورية‬
‫ُ‬ ‫ن‬ ‫ً‬
‫• تقدم مجموعة تعليمات ‪ MIPS‬نسخا من التعليمات الحسابية يكو فيها أحد املعامالت قيمة ثابتة‪ .‬يطلق على‬
‫تعليمة الجمع مع معامل واحد ثابت اسم ‪ add immediate‬أو‪. addi‬‬
‫• مثال ‪ :‬إلضافة ‪ 4‬للمسجل ‪ $s3‬نكتب فقط التعليمة ‪:‬‬
‫‪addi $s3,$s3,4‬‬ ‫‪# $s3 = $s3 + 4‬‬
‫• نصادف املعامالت الثابتة بشكل متكرر‪ ،‬وبتضمين الثوابت داخل التعليمات الحسابية‪ ،‬تكون العمليات أسرع‬
‫بكثير وتستخدم طاقة أقل مما لو تم تحميل الثوابت من الذاكرة‪.‬‬

‫‪https://manara.edu.sy/‬‬
‫‪Signed and Unsigned Numbers‬‬
‫• يتم االحتفاظ باألرقام في أجهزة الكمبيوتر كسلسلة من اإلشارات اإللكترونية العالية واملنخفضة‪ ،‬وبالتالي يتم تمثيل‬
‫األرقام في الحواسيب بالنظام الثنائي‪.‬‬

‫ً‬
‫مختلفا تمثل األرقام من ‪ 0‬إلى )‪ ( (232 −1‬أي‬ ‫• يبلغ طول كلمة ‪ً 32 MIPS‬بتا‪ ،‬لذا يمكننا تمثيل ‪ 232‬نمط ‪ 32‬بت‬
‫من ‪ 0‬إلى ‪:)4،294،967،295‬‬

‫‪https://manara.edu.sy/‬‬
‫‪Signed and Unsigned Numbers‬‬
‫• برامج الكمبيوتر تتعامل مع كل من األعداد املوجبة والسالبة‪ ،‬لذلك نحتاج إلى تمثيل نستطيع من خالله تمييز‬
‫األعداد املوجبة عن السالبة‪.‬‬
‫• في لغة البرمجة ‪ ،C‬على سبيل املثال‪ ،‬تسمى األعداد بإشارة باألعداد الصحيحة (يتم التصريح عنها كـ ‪ int‬في‬
‫البرنامج) بينما يتم التصريح عن األعداد بدون إشارة كـ ‪unsigned int‬‬

‫‪https://manara.edu.sy/‬‬
‫األعداد الصحيحة بإشارة‬
‫‪Signed Integers‬‬
‫توجد عدة طرق لتمثيل األرقام بإشارة (األرقام املوجبة و السالبة) ‪:‬‬
‫‪ -‬املتمم األحادي ‪1's complement‬‬
‫‪ -‬املتمم الثنائي ‪2's complement‬‬

‫• في األعداد بإشارة ينفسم املجال إلى جزأين متساويين‪:‬‬


‫‪ -‬الجزء األول يمثل األعداد املوجبة‬
‫‪ -‬الجزء الثاني يمثل األعداد السالبة‬

‫• سيكون التركيز على تمثيل األعداد بإشارة من خالل املتمم الثنائي باعتبار أنه هو املستخدم على نطاق واسع في الكومبيوتر‬
‫لتمثيل األعداد الصحيحة بإشارة ‪.‬‬

‫‪https://manara.edu.sy/‬‬
‫تمثيل األعداد بإشارة باستخدام املتمم‬
‫الثنائي‬
‫• إليجاد مطال القيمة بإشارة ممثلة باستخدام املتمم‬

‫الثنائي نقوم بإسناد وزن سلبي للبت األكثر أهمية ‪MSB‬‬

‫‪https://manara.edu.sy/‬‬
‫مجال األعداد بإشارة‬

‫• من أجل األعداد بـ ‪ n‬بت يكون املجال ‪:‬‬

‫)‪-2n–1 to (2n–1 – 1‬‬

‫‪https://manara.edu.sy/‬‬
‫تشكيل املتمم الثنائي‬

‫• مثال‪ :‬مثل العدد (‪) 36-‬بحسب املتمم الثنائي؟‬

‫• توجد طريقة أخرى للحصول على املتمم الثنائي‪:‬‬


‫✓نبدأ بالبحث من الخانة األقل أهمية عن أول ورود لـ ‪1‬‬
‫✓نترك كل األصفار على يمينه بدون تغيير‬
‫✓نقلب كل الخانات على يساره ( نجعل األصفار واحدات و بالعكس)‬

‫‪https://manara.edu.sy/‬‬
‫خانة اإلشارة‬
Sign Bit

https://manara.edu.sy/
‫توسعة خانة اإلشارة‬
‫• يمكن توسعة العدد بإشارة من خالل تكرار خانة اإلشارة في أقص ى اليسار بعدد خانات التوسعة‬

‫املطلوبة دون أن يؤثر ذلك على إشارة و مطال العددج‬

‫• مثال‪ :‬وسع العدد ‪ 10110011‬بحيث يصبح طوله ‪ 16‬بت؟‬

‫‪10110011 = -77‬‬ ‫‪11111111 10110011 = -77‬‬

‫• مثال ‪ :‬وسع العدد ‪ 01100010‬بحيث يصبح طوله ‪ 16‬بت؟‬


‫‪01100010 = +98‬‬ ‫‪00000000 01100010 = +98‬‬

‫‪https://manara.edu.sy/‬‬
‫ترجمة تعليمات لغة التجميع إلى‬
‫تعليمات لغة اآللة‬

‫فيما يلي معنى كل اسم من الحقول في تعليمات ‪: MIPS‬‬


‫• ‪ : op‬العملية األساسية التي تقوم بها التعليمة (حسابية – تحتوي معامل ثابت‪ -‬تعليمة قفز)‪ ،‬يسمى هذا الحقل رمز العملية‬
‫‪.opcode‬‬
‫• ‪ : rs‬املسجل الذي يحتوي على املعامل األول للتعليمة‪.‬‬
‫• ‪ :rt‬املسجل الذي يحتوي على املعامل الثاني للتعليمة‪.‬‬
‫•‬
‫‪ :rd‬مسجل الوجهة الذي يخزن نتيجة العملية‪.‬‬
‫• ‪ :shamt‬مقدار اإلزاحة‪ .‬يتم استخدام هذا الحقل مع تعليمات اإلزاحة‪ ،‬وبالتالي يحتوي الحقل القيمة صفر من أجل التعليمات‬
‫الحسابية‪.‬‬
‫• ‪ :funct‬الوظيفة‪ .‬من خالل هذا الحقل وحقل ‪ op‬السابق يتم تحديد نوع التعليمة الواجب تنفيذها بشكل دقيق‬
‫‪https://manara.edu.sy/‬‬
‫ترجمة تعليمات لغة التجميع إلى‬
‫تعليمات لغة اآللة‬
‫‪add $t0,$s1,$s2‬‬ ‫مثال‪ :‬حول التعليمة التالية من لغة التجميع (لغة األسمبلي) إلى لغة اآللة‬
‫الحل‪:‬‬

‫• تقوم هذه التعليمة بجمع محتوى املسجل ‪ $s1‬مع محتوى املسجل ‪ $s2‬و تضع نتيجة املجموع في املسجل ‪$t1‬‬
‫• كل جزء من هذه األجزاء املكونة للتعليمة يسمى حقل ‪:‬‬
‫‪ -‬يخبر الحقالن األول واألخير (الحقل ‪ op‬و الحقل ‪ً )funct‬‬
‫معا جهاز الكمبيوتر أن هذه التعليمة تنجز عملية جمع‪.‬‬
‫‪ -‬يعطي الحقل الثاني رقم املسجل الذي يمثل املعامل األول لعملية الجمع (‪)17 = $s1‬‬
‫‪ -‬يعطي الحقل الثالث معامل املصدر اآلخر لعملية الجمع (‪)18 = $s2‬‬
‫‪ -‬يحتوي الحقل الرابع على رقم املسجل الذي سيحصل على املجموع (‪)8 = $t0‬‬
‫‪ -‬الحقل الخامس غير مستخدم في هذه التعليمة‪ ،‬لذلك يتم تعيينه على قيمة ‪.0‬‬

‫‪https://manara.edu.sy/‬‬
‫صيغ التعليمات‬
Instruction Formats

)‫ بت‬32( ‫ تمتلك جميع التعليمات نفس الطول‬MIPS ‫• في مجموعة تعليمات‬

)register ‫ إلى‬R ‫ (ترمز‬R-type ‫ أو‬R-format •

I-type ‫ أو‬I-format •

https://manara.edu.sy/
‫صيغ التعليمات‬
‫‪Instruction Formats‬‬
‫• ‪ I-format‬أو ‪I-type‬‬

‫]‪lw $t0,32($s3) # reg $t0 gets A[8‬‬

‫• يتم وضع ‪( 19‬من أجل ‪ )$s3‬في حقل ‪ ،rs‬و ‪( 8‬من أجل ‪ )$t0‬في الحقل ‪ ،rt‬و ‪ 32‬في حقل العنوان‪.‬‬

‫• نالحظ أن معنى الحقل ‪ rt‬قد تغير بالنسبة لهذه التعليمات‪ :‬في تعليملة ‪ ،lw‬يحدد الحقل ‪ rt‬مسجل الوجهة الذي يتلقى نتيجة التعليمة‪.‬‬

‫• الحقول الثالثة األولى من صيغ التعليمات من النوع ‪ R‬و النوع ‪ I‬هي بنفس الحجم ولها نفس األسماء ؛ طول الحقل الرابع في النوع ‪ I‬يساوي‬

‫مجموع أطوال الحقول الثالثة األخيرة من النوع ‪R.‬‬

‫• يتم تمييز التنسيقات بالقيم املوجودة في الحقل األول‪ :‬يتم تعيين مجموعة مميزة من القيم لكل صيغة في الحقل األول (‪ )op‬حتى يعرف الجهاز ما‬

‫إذا كان سيعامل النصف األخير من التعليمات على أنه ثالثة حقول (‪ )R-type‬أو كحقل فردي (‪.)I-type‬‬

‫‪https://manara.edu.sy/‬‬
‫صيغ التعليمات‬
Instruction Formats

https://manara.edu.sy/
‫مثال‬

‫• إذا كان املسجل ‪ $t1‬يحتوي على العنوان األساس للمصفوفة ‪ A‬و ‪ $s2‬يتوافق مع ‪ ،h‬فإن التعليمة التالية‬

‫;]‪A[300] = h + A[300‬‬

‫• يتم التعبير عنها بلغة التجميع كما يلي‪:‬‬

‫]‪lw $t0,1200($t1) #reg $t0 gets A[300‬‬

‫‪add $t0,$s2,$t0‬‬ ‫]‪#reg $t0 gets h + A[300‬‬

‫]‪sw $t0,1200($t1) # Stores h + A[300] back into A[300‬‬

‫• ما هو كود لغة اآللة ‪ MIPS‬لهذه التعليمات الثالثة؟‬

‫‪https://manara.edu.sy/‬‬
‫مثال‬

: ‫• الحل‬

https://manara.edu.sy/
https://manara.edu.sy/

You might also like