ورود

View Full Version : چند سوال در مورد pc و x86



alipoor90
سه شنبه 28 خرداد 1392, 10:01 صبح
سلام
یه سری سوال پایه ای در معماری x86 واسم پیش اومده
1-برای کار با فضای io فقط دستورات in /out یا get/put استفاده میشه؟ اصلا cpu چجوری به چیپست حالی میکنه این دیتا و ادرسی که داره مینویسه یا میخواد بخونه مربوط به فضای io هست یا مموری؟
2- نحوه کار memory mapped input outputs به چه صورتی هست؟ یعنی سیستم عامل چجوری به سخت افزار حالی میکنه فلان دیوایس که به فلان پورت وصل شده محلش در حافظه فلان ادرس باشه؟
3-interupt vector table همون محلی هست که ادرس بردار وقفه های نرم افزاری توش ذخیره میشه؟ یعنی وقتی از دستور INT استفاده میشه پردازنده به این محل مراجعه میکنه؟
4-اگه بله برنامه نویس میتونه هر ادرسی رو که میخواد در محل مربوط به هر وکتور بزاره؟
5- وقتی bios اجرا میشه ادرس های روتین های خودش رو در این جدول قرار میده؟
6-IRQ ها مشابه همون اینتراپت های سخت افزاری در میکروکنترلر ها هستن؟
7-هر کدوم از این IRQ ها یه پین جدا روی پروسسور دارن؟ اعمال کردن اینها وظیفه چی هست ؟ ایا south bridge اینا رو اعمال میکنه؟
8- هر کدوم از IRQ ها به طور ثابت مربوط به یک پورت یا دیوایس هستن یا میشه تعیین کرد مثلا فلان دیوایس ها از فلان IRQ استفاده کنن و کلا دستکاریش کرد؟
9- چجوری تعیین میشه وقتی هر IRQ رخ داد پردازنده به کجا مراجعه کنه؟ (و ایا باید در همون فضای اینتراپت وکتور تیبل تعیین بشه؟)
10-وقتی وقفه ای رخ میده پردازنده به طور خودکار قبل اجراش محتویات ریجیستر ها رو ذخیره میکنه؟(اگه اره کجا و چطور تعیین میشه؟)
11-rom بایوس فقط memory mapped هست یا واقعا در اول کار محتویاتش در رم کپی میشه؟(کلا این مپ کردنش یا کپی کردنش وظیفه north bridge هست؟)
12- پردازنده در زمان اجرا به طور خودکار از اولین خونه رم که یه int vector هست شروع میکنه و قبل از شروع پردازنده ادرس روتین های بایوس در این تیبل قرار میگیره یا اینکه پردازنده به طور خودکار از ادرس خاص rom بایوس شروع میکنه؟
13- اگه میشه چند رفرنس در زمینه معماری IBM PC و سخت افزارش و اسمبلی و ... معرفی کنید
با سپاس

m.j_banitaba
جمعه 31 خرداد 1392, 20:46 عصر
3-interupt vector table همون محلی هست که ادرس بردار وقفه های نرم افزاری توش ذخیره میشه؟
بله همونه.اما در معماری 32bit یه تفاوتی داره یعنی به جای interupt vector table از مفهوم interrupt description table استفاده میشه. و شما در هنگام برنامه نویسی فقط می توانید به جداول محلی را تغییر دهید و جداول اصلی در دست سیستم عامل است و تنها با مجوز حلقه پایین تر به آنها دسترسی دارید.

5- وقتی bios اجرا میشه ادرس های روتین های خودش رو در این جدول قرار میده؟
بله. bios در مود 16bit اجرا میشه و در سیستم 32bit این روند تغییر میکنه.

6,7,8
اینجا رو مطالعه کن (http://en.wikipedia.org/wiki/Programmable_Interrupt_Controller)

10-وقتی وقفه ای رخ میده پردازنده به طور خودکار قبل اجراش محتویات ریجیستر ها رو ذخیره میکنه؟(اگه اره کجا و چطور تعیین میشه؟)
اینکه رخداد یک یک وقفه یا استثنا باعث تغییر وظیفه بشه یا نه بستگی به محتویات جدول توصیفگر وقفه داره.
در ضمن معماری جدید کامپیوتر با آنچه که در طراحی bus می خوانید ،فرق داره و دیدتان راجع به northbridge and southbridge باید تغییر دهید. این معماری چیزی شبیه شبکه است و northbridge نوعی هاب است.

tdkhakpur
جمعه 31 خرداد 1392, 21:06 عصر
برای کار با فضای io فقط دستورات in /out یا get/put استفاده میشه؟ اصلا cpu چجوری به چیپست حالی میکنه این دیتا و ادرسی که داره مینویسه یا میخواد بخونه مربوط به فضای io هست یا مموری؟in , out کدهای مخصوص به کار با دستگاههای جانبی متصل به bus هست و cpu با دیدن این کد تو صف پردازش خودش وقفه سخت افزاری رو تیک میزنه همونی که وقفه ها توی کدهاشون ازش استفاده میکنن.

نحوه کار memory mapped input outputs به چه صورتی هست؟ یعنی سیستم عامل چجوری به سخت افزار حالی میکنه فلان دیوایس که به فلان پورت وصل شده محلش در حافظه فلان ادرس باشه؟خب همه چی با کد صورت میگیره که تقریبا در این مورد ثابته وقتی in یا out میکنید و یک کد هم به عنوان شناسه بهش میدید cpu هم این کد رو به bus آدرس میده و اونجا این کد قرار داده میشه و همه دستگاهها که همواره این آدرس رو چک میکنن (کلاک پالس و ...) اگه آدرس خودش باشه شروع به فعالیت و کار میکنه.
به همین راحتی.()

-IRQ ها مشابه همون اینتراپت های سخت افزاری در میکروکنترلر ها هستن؟تقریبا همه میکرو کنترها که cpu دارن کارشون مشابه هست با تفاوت در کدها.
سوالهای زیادی دارید اما نتیجه اونها تقریبا مشابه هست
ببینید کلا همه چی با کد رد و بدل میشه یعنی باس آدرس به عنوان محل تلاقی سخت افزارها با همدیگه و بالاخص cpu هست اگه به هر طریقی عدد و کد اتصال با سخت افزار رو بلد باشی و بفرستی تو این آدرس و یک تیک به پین وقفه اون سخت افزار بزنی ()میاد و کدشو از این آدرس یعنی bus آدرس میگیره و سریع میره کارش رو انجام بده حالا کارش هر چی هست سوای از اینکه بازم توی درگاه آدرس یه کد و آدرس دیگه قرار بدهو.