بررسی ریزپردازنده ها، اجزای سازنده آن ها و وظایف اجزا (قسمت اول)

بازدید: 5748 بازدید
ریزپردازنده

در این متن ابتدا به تفاوت میکروکنترلر و ریزپردازنده ها (میکروپروسسورها) و سپس به بررسی بخشی از قسمت های تشکیل دهنده ریزپردازنده ها به صورت مختصر پرداخته می شود و در نوشتارهای بعدی این مبحث ادامه پیدا کرده و قسمت های دیگر که در این بحث جای نگرفته اند در نوشته های بعدی مورد بررسی قرار خواهند گرفت.

ریزپردازنده ها و میکروکنترلرها

میکروپروسسور یک 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 می فهمد که چه عملیاتی باید انجام گیرد.

انواع حافظه

حافظه در رایانه محل نگهداری و ذخیره داده هاست. حافظه های رایانه به دو دسته کلی تقسیم می شوند.

  1. حافظه ی اصلی (اولیه، درونی): این نوع حافظه در داخل رایانه قرار دارد و برای اجرای برنامه به طور مستقیم توسط ریزپردازنده مورد استفاده قرار می گیرند.
  2. حافظه جانبی (ثانویه، خارجی): این نوع حافظه برای نگه داری داده ها و اطلاعات پرونده ای برای مدت زمان طولانی به کار می رود و در خارج از رایانه قرار دارد.

آدرس دهی حافظه

هر حافظه را به مجموعه هایی از خانه ها تقسیم می کنند که این خانه ها برای نگه داری داده ها به کار می رود. برای خواندن و یا نوشتن در یک خانه حافظه نیاز به آدرس آن خانه است. هر حافظه ای یک شیوه آدرس دهی دارد که به کمک آن خانه های حافظه مورد دستیابی قرار می گیرند.

روش های دستیابی به داده های حافظه

  1. دستیابی ترتیبی
  2. دستیابی مستقیم
  3. دستیابی تصادفی
  4. دستیابی انجمنی

حافظه اصلی

حافظه اصلی از مدارات سریعی ساخته می شوند که برنامه ها و داده های مورد نیاز را در هنگام اجرا نگه داری می کند. که دو نوع است.

  1. ROM
  2. RAM

حافظه ROM

حافظه ROM حافظه ای است فقط خواندنی که محتوای آن یکبار نوشته می شود و بارها خوانده می شود و پس از نصب در کامپیوتر تغییری در آن داده نمی شود. داده ها را به طور دائم یا غیردائم نگهداری می کند. این حافظه انواع مختلفی دارد. تکنولوژی ROM زیرمجموعه ای از RAM می باشد.

  1. PROM: این چیپ در ابتدای ساخت خالی می باشند و باید با داده هایی که دارید برنامه ریزی کنید. برای نوشتن داده ها بر روی این حافظه به دستگاه مخصوصی که ROM programmer نام دارد نیاز داریم. هر بیت باینری یک فیوز است که سالم بودن آن نشانگر یک و در غیر این صورت صفر است و هنگامی که ما برنامه ای را بر روی چیپ های ROM می نویسیم باعث سوختن فیوزهای آدرس هایی می شویم که می خواهیم. ما می توانیم یک را به صفر تبدیل کنیم اما عکس این موضوع ممکن نیست.
  2. EPROM: یک نوع عمومی از PROM است که قابلیت پاک شدن و برنامه ریزی دوباره را دارا می باشد. اما دارای محدودیت در نوشتن است.
  3. EEPROM: نوع دیگری از چیپ های ROM است و از خصوصیات مهم آن این است که قابل پاک شدن و برنامه ریزی توسط مدارهایی است که بر روی آن ها نصب می شوند و به ابزار خاصی نیاز ندارند.

حافظه RAM

عمده حافظه اصلی کامپیوتر از حافظه RAM ساخته می شود. این حافظه قابل خواندن و نوشتن است و وظیفه اصلی آن حفظ داده ها به صورت موقت برای پردازش در CPU است. به RAM حافظه با دسترسی تصادفی نیز می گویند که به این دلیل است که بر خلاف بسیاری از حافظه های دیگر هر داده بدون در نظر گرفتن ترتیب فضاهای حافظه می تواند بر روی فضاهای موجود در RAM قرار بگیرد. این بدان معناست که در هر لحظه و در هر زمان می توان به صورت مستقیم به فضای حافظه RAM بدون در نظر گرفتن ترتیب دسترسی داشت.  معمولا در کامپیوترها دو نوع حافظه RAM وجود دارد.

  1. DRAM: به آن حافظه پویا هم گفته می شود. برای آن که DRAM بتواند داده را در خود نگه دارد باید به طور مداوم رفرش شود و خازن های موجود در آن شارژ شوند. از DRAM در حافظه اصلی یا main memory استفاده می شود.
  2. SRAM: به آن حافظه ایستا گفته می شود. این نوع حافظه نیاز به شارژ متناوب ندارد، زیرا ترانزیستورهای تشکیل دهنده آن تا زمانی که برق قطع نشده است داده را در خود نگه می دارد که موضوع باعث بالا بودن سرعت خواندن و نوشتن در SRAM شده است. از SRAM در ساخت حافظه Cache کامپیوتر استفاده می شود.

انواع pin در یک حافظه

  1. پین داده
  2. پین کنترل
  3. پین آدرس

Access Time

زمان دسترسی به حافظه عبارت است از زمانی که بین تقاضا داده و آماده شدن آن طول می کشد.

حافظه Cache

در صورتی که قسمت فعال برنامه ها و داده ها را در حافظه سریع و کوچکی قرار دهیم، می توانیم با کم کردن میانگین زمان دسترسی به حافظه، زمان اجرای برنامه را کاهش دهیم.این حافظه سریع و کوچک را حافظه Cache می نامند. وقتی که CPU نیاز به دسترسی به حافظه دارد ابتدا حافظه Cache را جست و جو می نماید اگر داده در این حافظه سریع موجود بود از آن استفاده می شود در غیر این صورت با رجوع به حافظه بلوکی از داده که شامل داده مورد نیاز CPU می باشد از حافظه اصلی به حافظه Cache منتقل می گردد.

در حالت کلی CPU برای تشخیص رویدادهای داخلی و خارجی می تواند از ۲ روش بهره گیرد.

  1. Polling: این عبارت به معنای سرکشی کردن می باشد. در این روش کاربر توسط برنامه نویسی با فواصل زمانی دلخواه دائما رویداد مورد نظر را بررسی می کند تا به آن پاسخ داده شود.
  2. وقفه: در این روش CPU بدون در نظر گرفتن رویداد به انجام سایر اعمال مشغول می شود و با وقوع اتفاق مورد نظر، CPU انجام برنامه جاری را متوقف کرده و به بردار وقفه مربوطه پرش و زیروال سرویس وقفه را اجرا می کند و سپس به خطی که پرش از آن جا صورت گرفته بود بر می گردد.

وقفه (Interrupt)

تعریف وقفه

وقفه به معنی تاخیر زمانی نیست بلکه به معنی قطع موقت برنامه جاری و سرویس دادن به زیرروال وقفه است. در واقع وقفه یک دستور فراخوانی است که می دانیم اتفاق می افتد ولی نمی توانیم زمان دقیق رخ دادن آن را مشخص کنیم. وقفه می تواند سخت افزاری یا نرم افزاری باشد.

بردار وقفه

در این جا CPU بدون در نظر گرفتن رویداد، سرگرم انجام رویدادها است و با رخ دادن رویداد مورد نظر اجرای برنامه جاری متوقف شده و پرش به بردار وقفه مربوطه انجام میشود و زیرروال سرویس وقفه ISR را اجرا می کند و پس از اجرای این زیر روال به خطی از برنامه که آن را قطع کرده بود برمی گردد و ادامه می دهد. پس در یک تعریف کلی در صورتی که یک مکان مشخص از حافظه ثابت را به وقفه اختصاص دهیم به طوری که با تحریک وقفه، برنامه به آن مکان که به طور ثابت و مشخص به وقفه اختصاص داده بودیم پرش کند که به آن مکان، بردار وقفه می گوییم. به قسمتی از حافظه که به وقفه اختصاص داده می شود حافظه پشته یا Stack memory گفته می شود.

حافظه پشته

حافظه پشته در واقع لیستی است با ویژگی اولین ورودی آخرین خروجی و پشته محلی برای ذخیره سازی است و اطلاعات را به نحوی ذخیره می کند که همیشه آخرین کمیت ذخیره شده، اولین کمیت بازیابی شونده باشد. در یک کامپیوتر دیجیتال پشته بخشی از حافظه است.

اشاره گر پشته

ثباتی که آدرس پشته را نگهداری می کند اشاره گر پشته (Stack pointer) نامیده می شود و مقدار آن همیشه به آخرین کمیت ذخیره شده در پشته اشاره می کند. ثبات های فیزیکی پشته همواره فقط برای خواندن و یا نوشتن در دسترس می باشند. اطلاعاتی که باید پیش از فراخوانی زیربرنامه ها در حافظه ذخیره شود تا پس از بازگشت به برنامه اصلی بازیابی شود در این سگمنت ذخیره می شود. پشته دارای دو دستور کلی است.

  1. Push: به معنی درج کمیت می باشد. با استفاده از این دستور در زبان برنامه نویسی اسمبلی داده مورد نظر در حافظه پشته قرار داده می شود و عملوند مورد نظر خود را به پشته اضافه می کند.
  2. Pop: به معنی حذف کمیت می باشد. با به کارگیری این دستور داده مورد نظر از پشته برداشته می شود و عملوند موردنظر خود را از پشته بر میدارد. داده ای که برداشته می شود همان آخرین داده ای است که در پشته گذاشته می شود.

به طور کلی می توان گفت در هنگام رخ دادن وقفه (معمولا با دستور فراخوانی Call) همه اطلاعات در حال اجرا Push می شوند و با دستور return اطلاعات Pop می شوند.

انواع وقفه

۲۵۶ سطح اولویت توسط پردازنده های ۸۰x86 پشتیبانی می شود که می توان آن را به ۳ گروه اصلی تقسیم کرد.

  1. وقفه های داخلی سخت افزاری: وقفه های داخلی سخت افزاری به دلیل رخ دادن وضعیت معین که در حین اجرای یک برنامه پیش آمده تولید می شوند و یا وقفه هایی که در اثر Trap ایجاد می گردد.
  2. وقفه های خارجی سخت افزاری: این وقفه ها خارج از CPU و توسط دستگاه های جانبی مانند صفحه کلید، چاپگر، کارت های ارتباطی تولید می شوند. دستگاه های جانبی با ارسال وقفه به CPU خواستار قطع اجرای برنامه فعلی شده و CPU را متوجه خود می کنند.
  3. وقفه های نرم افزاری: وقفه های نرم افزاری در نتیجه دستورالعمل int در یک برنامه در حال اجرا تولید می شوند. برنامه نویس می تواند با دادن دستور int یک وقفه نرم افزاری تولید کند. بدین ترتیب بلافاصله اجرای برنامه فعلی را متوقف می کند و CPU را به روتین وقفه هدایت می کند. وقفه های نرم افزاری را می توان به دو گروه تقسیم نمود.
  • وقفه های DOS
  • وقفه های BIOS

اولویت وقفه

در حالت کلی وقفه های خارجی اولویت بالاتری نسبت به وقفه های داخلی دارند. اولویت وقفه ها به ترتیب جدول بردار وقفه است. در جدول بردار وقفه هر وقفه ای که آدرس کم تری دارد یا به عبارتی در جدول بردار وقفه بالاتر است اولویت بیش تری هم در پاسخ گویی خواهد داشت. به لحاظ اولویت بندی وقفه ها به دو دسته تقسیم می شوند.

  1. تک سطحه: اولویت وقفه ثابت و توسط کارخانه تعیین می شود.
  2. چند سطحه: اولویت وقفه در هر پروژه ای می تواند تعیین و تغییر یابد. هر چه عدد بردار وقفه کم تر باشد اولویت وقفه بالاتر است.

هر منبع وقفه دارای یک پرچم یا Flag است. پرچم همیشه پایین است. اگر پرچمی بالا برود یعنی وقفه رخ داده است در غیر این صورت وقفه رخ نداده است.

نقطه وقفه

نقطه وقفه یا نقطه انفصال (Break point) به مکان توقف عمدی یا مکث در سورس کد یک برنامه گفته می شود. از وقفه های حاصل از این نوع نقاط به منظور اشکال زدایی برنامه (debug) در آن مکان استفاده می شود. معمولا از نقاط انفصال برای توقف برنامه پیش از رسیدن به یک دستور معین استفاده می شود. در واقع نقاط وقفه ابزاری هستند که به توسعه دهنده کمک می کند تا در یک لحظه خاص یا در هنگام رسیدن به یک دستور معین، اطلاعات مورد نیاز نسبت به وضعیت برنامه و مقدار متغیرها را به دست آورد و در صورت لزوم تغییرات مورد نیاز را اعمال نموده و اجرای برنامه را از همان نقطه ادامه دهد.

وقفه شرطی

وقفه شرطی بر اساس بیت سرریز یا Overflow است و در صورت ایجاد سرریز در اعمال محاسباتی علامت دار یک می شود.

منبع : نواندیشان

ادامه مطلب