در این متن ابتدا به تفاوت میکروکنترلر و ریزپردازنده ها (میکروپروسسورها) و سپس به بررسی بخشی از قسمت های تشکیل دهنده ریزپردازنده ها به صورت مختصر پرداخته می شود و در نوشتارهای بعدی این مبحث ادامه پیدا کرده و قسمت های دیگر که در این بحث جای نگرفته اند در نوشته های بعدی مورد بررسی قرار خواهند گرفت.
میکروپروسسور یک IC است که در داخل خود فقط دارای CPU است و فقط توان پردازش اطلاعات را دارد. مانند CPU های پنتیوم. در میکروپروسسورها CPU فاقد ROM و RAM یا سایر حافظه ای جانبی به صورت داخلی هستند و طراح سیستم برای آن که بتواند یک سیستم کارآمد طراحی نماید باید حافظه های جانبی مانند ROM و RAM و سایر ملزومات را به صورت خارجی به CPU متصل کند. همانند آنچه در کامپیوترهای رومیزی مشاهده می کنیم. این امر سبب بالا رفتن هزینه طراحی و تولید در میکروپروسسورها می گردد.
در میکروکنترلرها موضوع طور دیگری است. میکروکنترلرها دارای یک CPU هستند و علاوه بر آن دارای مقدار مشخصی ROM، RAM و سایر حافظه های جانبی به صورت داخلی می باشند. میکروکنترلرها را با نام هایی مانند میکروکامپیوتر می شناسند. میکروکنترلرها برای مقاصد مشخصی طراحی شده اند. در میکروکنترلرها با توجه به ورودی پردازش هایی صورت می گیرد و خروجی حاصل می گردد. از جمله مزیت های آن کوچک بودن مدار و پایین بودن هزینه آن نسبت به میکروپروسسور است.
نکته قابل توجه آن است که از میکروکنترلرها نمی توان به جای میکروپروسسورها استفاده کرد.

از اجزای مهم تشکیل دهنده یک ریزپردازنده می توان I/O، ROM، RAM و CUP را برشمرد. همه ی موارد ذکر شده قابل آدرس دهی می باشند.
آن دسته از ثبات هایی که در داخل ریزپردازنده قرار دارند را ثبات های داخلی می نامند. ثبات هایی که داخل حافظه های RAM و ROM و I/O قرار دارند را ثبات های خارجی می نامند.
عملیات پردازش در یک پردازنده را می توان به ۳ بخش کلی خواندن داده ها، انجام دستورات منطقی بر روی داده ها و بازنویسی داده ها تقسیم کرد. انجام دستورات منطقی بر روی داده ها در پردازنده تنها زمانی ممکن است که ما واحد عملیاتی آن را در پردازنده طراحی کرده باشیم و سپس نوع عملیات که قرار است بر روی داده اعمال شود را به واحد پردازش معرفی کنیم. از آن جا که تمام اطلاعات در سیستم دیجیتال توسط بیت ها قابل انتقال است این دستورالعمل ها که در اصطلاح به آن opcode یا همان operation code گفته می شود نیز به صورت باینری در حافظه قرار می گیرند. نوع کد در opcode نهفته است و CPU با دیکُد کردن opcode می فهمد که چه عملیاتی باید انجام گیرد.
حافظه در رایانه محل نگهداری و ذخیره داده هاست. حافظه های رایانه به دو دسته کلی تقسیم می شوند.
هر حافظه را به مجموعه هایی از خانه ها تقسیم می کنند که این خانه ها برای نگه داری داده ها به کار می رود. برای خواندن و یا نوشتن در یک خانه حافظه نیاز به آدرس آن خانه است. هر حافظه ای یک شیوه آدرس دهی دارد که به کمک آن خانه های حافظه مورد دستیابی قرار می گیرند.
حافظه اصلی از مدارات سریعی ساخته می شوند که برنامه ها و داده های مورد نیاز را در هنگام اجرا نگه داری می کند. که دو نوع است.
حافظه ROM حافظه ای است فقط خواندنی که محتوای آن یکبار نوشته می شود و بارها خوانده می شود و پس از نصب در کامپیوتر تغییری در آن داده نمی شود. داده ها را به طور دائم یا غیردائم نگهداری می کند. این حافظه انواع مختلفی دارد. تکنولوژی ROM زیرمجموعه ای از RAM می باشد.
عمده حافظه اصلی کامپیوتر از حافظه RAM ساخته می شود. این حافظه قابل خواندن و نوشتن است و وظیفه اصلی آن حفظ داده ها به صورت موقت برای پردازش در CPU است. به RAM حافظه با دسترسی تصادفی نیز می گویند که به این دلیل است که بر خلاف بسیاری از حافظه های دیگر هر داده بدون در نظر گرفتن ترتیب فضاهای حافظه می تواند بر روی فضاهای موجود در RAM قرار بگیرد. این بدان معناست که در هر لحظه و در هر زمان می توان به صورت مستقیم به فضای حافظه RAM بدون در نظر گرفتن ترتیب دسترسی داشت. معمولا در کامپیوترها دو نوع حافظه RAM وجود دارد.
زمان دسترسی به حافظه عبارت است از زمانی که بین تقاضا داده و آماده شدن آن طول می کشد.
در صورتی که قسمت فعال برنامه ها و داده ها را در حافظه سریع و کوچکی قرار دهیم، می توانیم با کم کردن میانگین زمان دسترسی به حافظه، زمان اجرای برنامه را کاهش دهیم.این حافظه سریع و کوچک را حافظه Cache می نامند. وقتی که CPU نیاز به دسترسی به حافظه دارد ابتدا حافظه Cache را جست و جو می نماید اگر داده در این حافظه سریع موجود بود از آن استفاده می شود در غیر این صورت با رجوع به حافظه بلوکی از داده که شامل داده مورد نیاز CPU می باشد از حافظه اصلی به حافظه Cache منتقل می گردد.
در حالت کلی CPU برای تشخیص رویدادهای داخلی و خارجی می تواند از ۲ روش بهره گیرد.
وقفه به معنی تاخیر زمانی نیست بلکه به معنی قطع موقت برنامه جاری و سرویس دادن به زیرروال وقفه است. در واقع وقفه یک دستور فراخوانی است که می دانیم اتفاق می افتد ولی نمی توانیم زمان دقیق رخ دادن آن را مشخص کنیم. وقفه می تواند سخت افزاری یا نرم افزاری باشد.
در این جا CPU بدون در نظر گرفتن رویداد، سرگرم انجام رویدادها است و با رخ دادن رویداد مورد نظر اجرای برنامه جاری متوقف شده و پرش به بردار وقفه مربوطه انجام میشود و زیرروال سرویس وقفه ISR را اجرا می کند و پس از اجرای این زیر روال به خطی از برنامه که آن را قطع کرده بود برمی گردد و ادامه می دهد. پس در یک تعریف کلی در صورتی که یک مکان مشخص از حافظه ثابت را به وقفه اختصاص دهیم به طوری که با تحریک وقفه، برنامه به آن مکان که به طور ثابت و مشخص به وقفه اختصاص داده بودیم پرش کند که به آن مکان، بردار وقفه می گوییم. به قسمتی از حافظه که به وقفه اختصاص داده می شود حافظه پشته یا Stack memory گفته می شود.
حافظه پشته در واقع لیستی است با ویژگی اولین ورودی آخرین خروجی و پشته محلی برای ذخیره سازی است و اطلاعات را به نحوی ذخیره می کند که همیشه آخرین کمیت ذخیره شده، اولین کمیت بازیابی شونده باشد. در یک کامپیوتر دیجیتال پشته بخشی از حافظه است.
ثباتی که آدرس پشته را نگهداری می کند اشاره گر پشته (Stack pointer) نامیده می شود و مقدار آن همیشه به آخرین کمیت ذخیره شده در پشته اشاره می کند. ثبات های فیزیکی پشته همواره فقط برای خواندن و یا نوشتن در دسترس می باشند. اطلاعاتی که باید پیش از فراخوانی زیربرنامه ها در حافظه ذخیره شود تا پس از بازگشت به برنامه اصلی بازیابی شود در این سگمنت ذخیره می شود. پشته دارای دو دستور کلی است.
به طور کلی می توان گفت در هنگام رخ دادن وقفه (معمولا با دستور فراخوانی Call) همه اطلاعات در حال اجرا Push می شوند و با دستور return اطلاعات Pop می شوند.
۲۵۶ سطح اولویت توسط پردازنده های ۸۰x86 پشتیبانی می شود که می توان آن را به ۳ گروه اصلی تقسیم کرد.
در حالت کلی وقفه های خارجی اولویت بالاتری نسبت به وقفه های داخلی دارند. اولویت وقفه ها به ترتیب جدول بردار وقفه است. در جدول بردار وقفه هر وقفه ای که آدرس کم تری دارد یا به عبارتی در جدول بردار وقفه بالاتر است اولویت بیش تری هم در پاسخ گویی خواهد داشت. به لحاظ اولویت بندی وقفه ها به دو دسته تقسیم می شوند.
هر منبع وقفه دارای یک پرچم یا Flag است. پرچم همیشه پایین است. اگر پرچمی بالا برود یعنی وقفه رخ داده است در غیر این صورت وقفه رخ نداده است.
نقطه وقفه یا نقطه انفصال (Break point) به مکان توقف عمدی یا مکث در سورس کد یک برنامه گفته می شود. از وقفه های حاصل از این نوع نقاط به منظور اشکال زدایی برنامه (debug) در آن مکان استفاده می شود. معمولا از نقاط انفصال برای توقف برنامه پیش از رسیدن به یک دستور معین استفاده می شود. در واقع نقاط وقفه ابزاری هستند که به توسعه دهنده کمک می کند تا در یک لحظه خاص یا در هنگام رسیدن به یک دستور معین، اطلاعات مورد نیاز نسبت به وضعیت برنامه و مقدار متغیرها را به دست آورد و در صورت لزوم تغییرات مورد نیاز را اعمال نموده و اجرای برنامه را از همان نقطه ادامه دهد.
وقفه شرطی بر اساس بیت سرریز یا Overflow است و در صورت ایجاد سرریز در اعمال محاسباتی علامت دار یک می شود.
برچسب:
نویسنده: کاوه محمدزادگان