Nand2Tetris — الجزء الأول: من المنطق إلى المعالج › المشروع 5: معمارية الحاسوب 5 / 6 السابق التالي

المشروع 5: معمارية الحاسوب

المشروع 5: معمارية الحاسوب

خلفية

في المشاريع السابقة بنينا أجهزة المعالجة والتخزين الأساسية للحاسوب (ALU وRAM، على الترتيب). وفي هذا المشروع سنجمع كل شيء معًا، فنحصل على منصة Hack Hardware Platform كاملة. وستكون النتيجة حاسوبًا متعدد الأغراض قادرًا على تشغيل البرامج المكتوبة بلغة آلة Hack.

الهدف

أكمل بناء CPU Hack ومنصة Hack Hardware Platform، وصولاً إلى شريحة Computer الأعلى مستوىً.

الشرائح

اسم الشريحة الوصف الاختبار
Memory.hdl نطاق عناوين RAM بالكامل اختبر شريحتك باستخدام ملفي Memory.tst وMemory.cmp المرفقَين.
CPU.hdl CPU Hack اختبر شريحتك باستخدام ملفي CPU.tst وCPU.cmp المرفقَين. وتتوفر أيضًا ملفات اختبار بديلة (أقل شمولاً لكنها لا تتطلب استخدام DRegister المدمج) في CPU-external.tst وCPU-external.cmp.
Computer.hdl شريحة المنصة الأعلى مستوىً اختبر الشريحة بتشغيل بعض برامج Hack عليها. راجع المزيد من التعليمات أدناه.

العقد

يجب أن تكون منصة الحاسوب التي تبنيها قادرة على تنفيذ البرامج المكتوبة بلغة آلة Hack، كما هي محدّدة في الفصل 4. وأظهر هذه القدرة بجعل شريحة Computer خاصتك تشغّل برامج الاختبار الثلاثة الواردة أدناه.

الاختبار

اختبار شريحتي Memory وCPU: من المهم اختبار هاتين الشريحتين على حدة قبل الانتقال إلى بناء شريحة Computer الكلية. استخدم سكربتات الاختبار وملفات المقارنة المذكورة أعلاه.

اختبار شريحة Computer: إنّ طريقة طبيعية لاختبار تنفيذ شريحة Computer الكلية هي جعلها تنفّذ بعض البرامج النموذجية المكتوبة بلغة آلة Hack. ولإجراء مثل هذا الاختبار، يمكن كتابة سكربت اختبار يقوم (i) بتحميل وصف شريحة Computer.hdl إلى محاكي العتاد المرفق، (ii) بتحميل برنامج بلغة الآلة من ملف .hack خارجي إلى جزء ROM من شريحة Computer.hdl المحمّلة، ثم (iii) بتشغيل الساعة عددًا كافيًا من الدورات لتنفيذ التعليمات المحمّلة. ونحن نرفق كل الملفات اللازمة لإجراء ثلاثة اختبارات من هذا القبيل، وهي كالآتي:

البرنامج التعليقات
Add.hack يجمع ثابتَي 2 و3 ويكتب الناتج في RAM[0]. الاختبار الموصى به: ComputerAdd.tst وComputerAdd.cmp. اختبار بديل (أقل شمولاً لكنه يتطلب استخدام RAM16K المدمجة فقط): ComputerAdd-external.tst وComputerAdd-external.cmp.
Max.hack يحسب أكبر قيمة بين RAM[0] وRAM[1] ويكتب الناتج في RAM[2]. الاختبار الموصى به: ComputerMax.tst وComputerMax.cmp. اختبار بديل (أقل شمولاً لكنه يتطلب استخدام RAM16K المدمجة فقط): ComputerMax-external.tst وComputerMax-external.cmp.
Rect.hack يرسم مستطيلًا عرضه 16 بكسل وطوله RAM[0] في أعلى يسار الشاشة. الاختبارات الموصى بها: testComputerRect.tst وComputerRect.cmp. اختبار بديل (أقل شمولاً لكنه لا يتطلب استخدام أي من الشرائح المدمجة): ComputerRect-external.tst وComputerRect-external.cmp.

قبل اختبار شريحة Computer خاصتك على أيٍّ من البرامج أعلاه، اقرأ ملف .tst ذا الصلة وتأكد من فهمك للتعليمات المُعطاة إلى المحاكي. وقد يكون دليل TDL مرجعًا مفيدًا هنا.

الموارد

انظر الفصل 5، ودليل HDL، ودليل TDL، (للاطلاع)، ومجموعة شرائح Hack.

الأدوات التي تحتاجها لهذا المشروع هي محاكي العتاد المرفق والملفات المذكورة أعلاه. وإذا كنت قد حمّلت حزمة برامج Nand2Tetris Software Suite، فإن هذه الملفات مخزّنة في مجلد projects/05 خاصتك.

نصائح

أكمل بناء الحاسوب بالترتيب التالي:

Memory: تتضمّن هذه الشريحة ثلاثة أجزاء: RAM16K، وScreen، وKeyboard. أما Screen وKeyboard فمتاحان كشريحتين مدمجتين، فلا حاجة إلى تنفيذهما. وعلى الرغم من بناء شريحة RAM16K في المشروع 3، فإننا نوصي باستخدام نسختها المدمجة، لأنها توفر واجهة رسومية ملائمة للتنقيح.

CPU: يمكن بناء هذه الشريحة وفقًا لتنفيذ CPU المقترح الوارد في الشكل 5.9 من الفصل 5، باستخدام شريحتي ALU والمسجّل المبنيتين في المشروعين 2 و3 على الترتيب. غير أننا نوصي باستخدام أجزاء مدمجة بدلًا منهما، وتحديدًا ARegister وDRegister. فالنسخ المدمجة من هاتين الشريحتين لها نفس الواجهة ونفس الوظائف تمامًا مثل شريحة Register المحدّدة في الفصل 3؛ لكنها تتميز بآثار جانبية على الواجهة الرسومية تأتي في متناول اليد لأغراض الاختبار.

من حيث المبدأ، قد يتضمّن تنفيذ CPU خاصتك شرائح داخلية من مواصفاتك الخاصة، أي شرائح غير مذكورة في الشكل 5.9 من الفصل 5. لكن هذا غير مستحسن، وسيؤدي على الأرجح إلى تصميم CPU أقل كفاءة. فإن اخترت إنشاء شرائح جديدة غير مذكورة في الكتاب، فتأكد من توثيقها واختبارها على حدة بعناية قبل وصلها في المعمارية.

ذاكرة التعليمات: استخدم شريحة ROM32K المدمجة.

Computer: يمكن بناء شريحة Computer الأعلى مستوىً وفقًا للتنفيذ المقترح الموضّح في الشكل 5.10 من الفصل 5.

الأدوات

يمكن تنفيذ واختبار جميع الشرائح المذكورة في هذا المشروع، بما فيها شريحة Computer الأعلى مستوىً، باستخدام محاكي العتاد المرفق. وهذه لقطة شاشة لاختبار برنامج Rect.hack على تنفيذ لشريحة Computer.

يرسم برنامج Rect الموضّح أعلاه مستطيلًا عرضه 16 بكسل وطوله RAM[0] في أعلى يسار الشاشة. وإليك ملاحظة مثيرة للاهتمام: عادةً، حين تشغّل برنامجًا على حاسوب ما ولا تحصل على النتيجة المرجوة، تستنتج أن البرنامج معطوب. أما في حالتنا هذه، فإن برنامج Rect المرفق خالٍ من العلل. وبذلك، فإن كان تشغيل هذا البرنامج ينتج نتائج غير متوقعة، فهذا يعني أن منصة الحاسوب التي يعمل عليها (Computer.hdl و/أو بعض أجزاء شريحتها من المستوى الأدنى) معطوبة. وإذا كان الأمر كذلك، فعليك تنقيح شرائحك.