الفكر الصافي

الجمعة، مارس ٠٧، ٢٠٠٨

SD-MOC حاسوب نبع من الملل

طبعا هذا الموضوع هو عبارة عن نكته اكثر من كونه موضوع تقني الا اني قررت مشاركتكم لارى انطباعاتكم
SD-MOC هي اختصار لـ Simple Data Manipulation and Output Computer وهو بكل بساطة حاسوب بسيط جدا جدا (لدرجة اني اصاب بالضحك كلما القيت نظرة على مخططاته) قدراته لا تتعدى تخزين النصوص وربما عمليات حسابية بسيطة..
فترة الاجازة تكاد تقتلني، وفي الاوقات التي لا اراجع فيها لامتحان الرياضيات احاول ان اشغل نفسي باشياء تبعدني عن الافكار الشريرة :)..
بعد مشاهدتي لفلم Pirates of Silicon Valley اتتني فكرة تصميم حاسوب صغير يصلح لتجارب بناء نظام تشغيل ومعالج رسوم وتحكم بالذاكرة، وعلى الرغم من اني لا امتلك بعد اية معلومات عن هذه المواضيع فقد قررت البدء الان بالتجريب والمحاكاة..
حسب التصميم المبدئي يتكون الحاسوب من لوحة مفاتيح صغيرة، وحدة الحاسوب وشاشة صغيرة احادية الالوان..

وهذا شكل توضيحي للبنية الداخلية..



حيث تمثل IPU وحدة معالجة المدخلات "Input Processing Unit" و مهمتها ببساطة قراءة البتس من لوحة المفاتيح وترجمتها ثم نقلها الى المعالج المركزي. اما وحدة معالجة الرسوميات GPU فتستقبل البيانات الكتابية والاوامر من نظام التشغيل على هيئة Strings و تمثلها على الشاشة. وحدة المعالجة المركزية CPU تنفذ نظام التشغيل الذي يقوم بدوره بالتنسيق بين وحدتي الدخل والخرج، التحكم بالذاكرة وتمثيل وتنفبذ اوامر المستخدم.

حتى الان ليست لدي اية مخططات ثابتة لنظام التشغيل، الا اني استطيع رسم عدة خطوط رئيسية:

يقوم نظام التشغيل بثلاث خطوات هي قراءة المدخلات، تحليل المدخلات وتنفيذ المدخلات، بحيث من الممكن ان يكون التنفيذ اما تنفيذ امر او اضهار البيانات على الشاشة (كما في حالة كتابة نص فان كل حرف يضهر على الشاشة حالة كتابته). من ناحية قراءة البيانات فان النظام يحتوي على Puffer لحفظ المدخلات مؤقتا ليقوم بتحليلها واستخراج المعاملات Parameters لكل امر مثلا او من هذا القبيل.

النقطة الاخرى هي تقسيم الذاكرة، حيث ان ذاكرة النظام او الـ ROM تنقسم الى قسمين الاول يحتوي على جدول بالاوامر الموجودة في النظام والقسم الاخر يحتوي على خطوات تنفيذ هذه الاوامر حيث يحمل كل امر في الجدول مؤشرين Pointers لعنوان البداية والنهاية في قسم التنفيذ الخاص بالامر. غرضي من هذا التقسيم هو الاستفادة القصوى من حجم الذاكرة وايضا تسريع الوصول الى الامر حيث يتم البحث فقط في جدول يحتوي كل سطر فيه امر واحد.

النقطة الاخيرة بالنسبة لنظام التشغيل هي انه شبه منفصل تماما عن وحدة الاخراج، اي انه يرسل الحروف او الصور على هيئة Strings الى الـ GPU التي تقرر بدورها في اي سطر و خانة ستكتب الحروف، بالتأكيد يستطيع النظام ارسال اوامر مثل Clear Screen او New Line او Tab الا انه غالبا لا يكترث لموقع الـ Cursor على الشاشة. ربما ستكون هنالك حاجة لاوامر مثل GoTo x,y .. اعتقد اني سافكر فيها لاحقا. فائدة الفصل هذا هي امكانية تركيب شاشة مختلفة الحجم دون الحاجة للتغير في النظام.

حسنا لنتحدث قليلا عن الـ GPU:
مهمة وحدة الرسوميات الرئيسية هي تمثيل الحروف المستقبلة من النظام على شاشة نقطية، اي ان الشاشة تمثل على هيئة مصفوفة نقاط ويتم ترجمة كل حرف الى مجموعة نقاط تدمج في مصفوفة الشاشة. كما تقوم ايضا بترتيب البيانات على الشاشة مثلا قص النص الى سطر جديد اذا امتد الى خارج الشاشة وما الى ذلك.
يتمثل كل حرف على الشاشة بمصفوفة نقاط (ارتفاع 8) * (عرض 6) وتحمل الـ GPU في الـ ROM الخاصة بها جدولا يترجم كل حرف الى مصفوفة، يتم دمجها في مصفوفة الشاشة الكاملة استنادا الى موقع الـ Cursor الحالي على الشاشة. كما تحتوي ايضا على ذاكرة لعدة سطور تمكننا من التقليب في محتوى الشاشة الى الاعلى والاسفل (نوع من انواع الـ Input History).

حتى الان لم اقم باي تصنيع مادي للحاسوب، حيث ان الوضع المادي لايسمح لشراء شاشة و معالجات وقطع ذاكرة، الا اني بدات بدلا من ذلك على الاقل بمحاكاة بلغة الـ C++ مع مكتبة Qt ، قطعت شوطا في وحدة الرسوميات واكاد اكون قد انتهيت، لكني لا اعتقد اني ساصل الى النهاية لان المشروع هذا كما ذكرت نبع من الملل، وكلام الليل يمحوه النهار. وهذه صورة للشاشة الافتراضية :)


3 تعليقات:

  • أزال أحد مشرفي المدونة هذا التعليق.

    حسب Anonymous غير معرف, في ٤:٥٦ ص  

  • أسعد...قرأت الموضوع مرتين؟؟
    لكن لم افهم فائدة الفكرة؟؟ الموضوع عبارة عن إدخال وعرض..؟؟

    حسب Blogger Thamood, في ٩:٢٧ ص  

  • شكرا لقرائتك للموضوع مرتين.. الفكرة فائدتها تضييع وقت واكتساب خبرة برمجية وربما يتطور الموضوع ايضا الى هاردوير و real-time programming. سأضع ان شاء الله قريبا مقال اخر عن التطورات..

    حسب Blogger Suleihi, في ٣:٢٥ ص  

إرسال تعليق

الاشتراك في تعليقات الرسالة [Atom]



<< الصفحة الرئيسية