سازمان و كار درونی كامپیوترها
درون كامپیوتر
در این بخش مقدمه ای را برای سازمان و كار درونی كامپیوترها فراهم می آوریم. مدل بكار رفته یك مدل عمومی است، ولی مفاهیم مورد استفاده قابل اعمال به همه كامپیوترها از جمله PS/2 , IBM و سازگار با آنهاست. قبل از آغاز این مبحث،مروری بر تعاریف برخی از اصطلاحات در كامپیوتر،مانند كیلو (k) ، مگا،گیگا، بایت، RAM, ROM و غیره مفید است.
بعضی اصطلاحات مهم
یكی از امكانات مهم یك كامپیوتر حافظه موجود در آن است. بنابراین اكنون اصطلاحات بكار رفته برای اندازه حافظه در IBM PC ها و سازگار با آنها را بیان می كنیم. از بحث قبل بیاد دارید كه بیت یك رقم دودویی بود كه می توانست مقدار 0 یا 1 داشته باشد. بایت یك مجموعه 8 بیتی است. نیبل نصف یك بایت، یا 4 بیت است. كلمه دو بایت یا 16 بیت می باشد. نمایش زیر به منظور نشان دادن اندازه نسبی این واحدها ارائه شده است. البته،آنها می توانند هر تركیبی از صفرها و یك ها باشند.
یك كیلوبایت، 10 2 بایت یا 1024 بایت است. اغلب از K برای بیان آن استفاده می شود. مثلاً برخی از فلاپی دیسك ها (یا دیسك نرم) k 356 داده را نگه می دارند. یك مگابایت، یا ساده تر مگ، 20 2 بایت است. این مقدار، كمی بیش از یك میلیون بایت است و مقدار دقیق آن 576/048/1 می باشد. با گذری سریع در ظرفیت به گیگابایت یا 30 2 بایت می رسیم (بیش از 1 بیلیون یا میلیارد)، و یك ترابایت نیز 40 2 بایت است (بیش از 1 تریلیون). برای مثالی از چگونگی كاربرد آنها،فرض كنید كه كامپیوتری دارای 16 مگابایت حافظه باشد. این مقدار برابر با 220 * 16 یا 220 * 4 2 یا 224 است. بنابراین 16 مگابایت 224 بایت می باشد.
در میكروكامپیوترها معمولا از دو نوع حافظه استفاده می شود كه عبارتند از RAM ، كه به معنی حافظه با دستیابی تصادفی است (گاهی هم حافظه خواندن / نوشتن نامیده می شود) و ROM كه به معنی حافظه فقط خواندنی می باشد. RAM بوسیله كامپیوتر برای ذخیره سازی موقت برنامه های در حال اجرا مورد استفاده قرار می گیرد. این برنامه ها یا اطلاعات بعد از خاموش شدن كامپیوتر از بین می روند. به همین دلیل، RAM را گاهی حافظه فرار هم می خوانند. ROM برای برنامه ها و اطلاعات لازم در عملكرد كامپیوتر لازم است. اطلاعات در ROM دائمی است و قابل تعویض بوسیله كاربر نمی باشد و پس از خاموش شدن كامپیوتر هم از بین نمی رود. بنابراین آن را حافظه غیرفرار گوییم.
سازمان درونی كامپیوترها
بخش عملیاتی هر كامپیوتر قابل تفكیك به سه قسمت است: CPU (واحد پردازش مركزی)، حافظه و وسایل I/O (ورودی / خروجی) ، شكل 9-0 ملاحظه شود. نقش CPU اجرای (پردازش) اطلاعات ذخیره شده در حافظه است. عمل وسایل I/O همچون صفحه كلید، مانیتور تصویر (ویدئو) ، تهیه مفاهیم ارتباط و محاوره با CPU است. CPU از طریق رشته ای از سیم ها به نام گذرگاه به حافظه و I/O متصل است. گذرگاه داخل یك كامپیوتر، درست مثل گذرگاههای خیابانی كه مردم رااز مكانی به مكانی دیگر هدایت می كنند، اطلاعات را از جایی به جای دیگر انتقال می دهند. در هر كامپیوتر سه نوع گذرگاه موجود است: گذرگاه آدرس، گذرگاه داده و گذرگاه كنترل.
به منظور شناسایی یك وسیله (حافظه یا I/O ) توسط CPU ، باید آدرسی به آن تخصیص داد. آدرس اختصاص یافته به یك وسله مورد نظر باید منحصر به فرد باشد؛ یعنی دو وسیله مختلف مجاز به داشتن یك آدرس نیستند. CPU آدرس را روی گذرگاه آدرس قرار می دهد (البته به شكل دودویی) و مدار دیكد وسیله را می یابد. آنگاه CPU از گذرگاه داده برای بدست آوردن داده از وسیله یا ارسال داده به آن استفاده می نماید. گذرگاههای كنترل برای تهیه سیگنال های خواندن و نوشتن در وسیله و مطلع ساختن آن از تصمیم CPU برای دریافت اطلاعات و یا ارسال اطلاعات به آن است. از سه گذرگاه فوق، آدرس و داده، توانمندی یك CPU را نشان می دهند.
توضیحی بیشتر درباره گذرگاه داده
چون گذرگاههای داده برای انتقال اطلاعات به و یا از CPU بكار می روند، هر چه گذرگاههای داده بیشتر باشند، CPU بهتر است. اگر گذرگاههای داده را همچون خطوط اتوبان تصور كنیم، واضح است كه هر چه خطوط بیشتر باشند، مسیر بین CPU و وسایل بیرونی (مانند چاپگرها، ROM, RAM و غیره ، شكل 10-0 ملاحظه شود) بهتر خواهد بود. اما افزایش در تعداد خطوط، هزینه ساخت را افزایش می دهد. گذرگاههای حافظه بیشتر،بمعنای CPU و كامپیوتر گرانتر می باشد. اندازه متوسط گذرگاه داده در CPU ها بین 8 و 64 متغیر است، كامپیوترهای اولیه مانند Apple2 از یك گذرگاه داده 8 بیت استفاده می كردند، در حالیكه سوپركامپیوترهایی همچون Cray گذرگاه داده 64 بیتی را به كار می برند. گذرگاههای داده دو طرفه هستند، زیرا CPU از آنها به هنگام دریافت و یا ارسال داده استفاده می كند. توان پردازش CPU به اندازه این گذرگاهها وابسته است، زیرا یك گذرگاه 8 بیتی هر بار قادر است 1 بایت داده را بفرستد،ولی گذرگاه 16 بیتی، 2 بایت را هر بار ارسال می كند كه در نتیجه دو برابر سریعتر خواهد بود.
توضیحی بیشتر درباره گذرگاه آدرس
چون گذرگاه آدرس برای شناسایی وسیله و حافظه متصل به CPU بكار می رود، هر چه گذرگاههای آدرس بیشتر باشند، تعداد وسایلی كه آدرس دهی می شوند بیشتر خواهند بود. به بیان دیگر تعداد گذرگاههای آدرس برای یك CPU ، تعداد مكان هایی را كه با آن محاوره می كند افزایش می دهد. همواره تعداد مكان ها است كه در آن x تعداد خطوط آدرس می باشد و ربطی به اندازه خطوط داده ندارد. مثلا یك CPU با 16 خط آدرس می تواند 65536 (216 ) یا k 64 حافظه را آدرس دهی كند. هر مكان حداكثر 1 بایت داده دارد. به این دلیل است كه غالباً تمام ریزپردازنده های همه منظور را بایت آدرس پذیر می نامند. برای مثالی دیگر، كامپیوتر IBM PC AT از یك CPU با 24 خط آدرس و 16 خط داده استفاده می كند. در این حالت،كل حافظه قابل دسترس،16 مگابایت خواهد بود (مگابایت 16=224) در این مثال 224 مكان وجود دارد، و چون هر مكان یك بایت است،16 مگابایت حافظه موجود خواهد بود. گذرگاه آدرس یك گذرگاه یك طرفه می باشد، و به این معنی است كه CPU از گذرگاه آدرس فقط برای ارسال آدرس به خارج از خود استفاده می كند. بطور خلاصه: تعداد كل حافظه های آدرسپذیر بوسیله یك CPU همیشه برابر با x2 می باشد كه در آن x تعداد بیت های آدرس است و ربطی به اندازه گذرگاه داده ندارد.
CPU و ارتباط آن با RAM و ROM
در پردازش اطلاعات بوسیله CPU ، داده باید در RAM یا ROM ذخیره شود. وظیفه ROM در كامپیوترها ارائه اطلاعات ثابت و دائمی است. این اطلاعات عبارتند از :جداول برای الگوی كاراكترهای مورد نمایش روی صفحه مانیتور، یا برنامه هایی كه در كامپیوتر نقش اساسی دارند، مانند برنامه هایی كه كل RAM موجود در سیستم را می یابند و یا تست می كنند، و یا برنامه هایی كه اطلاعات را روی مانیتور نمایش می دهند. بر عكس، RAM برای ذخیره اطلاعاتی بكار می رود كه غیر دائمی و قابل تغییر با زمان می باشند، مانند انواع سیستم های عامل و بسته های كاربردی مثل بسته های پردازش كلمات و محاسبه مالیاتی. این برنامه ها را برای پردازش توسط CPU در RAM قرار داده می شوند. CPU اطلاعات مورد پردازش را از RAM یا ROM دریافت می نماید. در صورتیكه آن را در آنجا نباید شروع به جستجو در وسایل ذخیره سازی حجیم مانند دیسك می نماید، و سپس اطلاعات را به RAM منتقل می كند به این دلیل، گاهی RAM و ROM را حافظه اصلی می نامند و دیسك ها نیز حافظه ثانوی خوانده می شوند.
درون CPU ها
برنامه ذخیره شده در حافظه دستورالعمل هائی را برای CPU فراهم می سازد تا بر اساس آن عملی را انجام دهد. عمل می تواند یك جمع داده ساده همچون صورتحساب و یا كنترل یك ماشین مانند روبات باشد. برداشت این دستورات از حافظه و اجرای آنها بعهده CPU است. برای انجام اعمال برداشت و اجرا، تمام CPU ها مجهز به امكانات زیر هستند:
1- قبل از هر چیز تعدادی ثبات در اختیار CPU قرار دارد. CPU از این ثبات ها برای ذخیره موقت اطلاعات استفاده می كند. اطلاعات می تواند دو مقدار مورد پردازش و یا آدرس مقدار مورد نظری باشد كه باید از حافظه برداشت شود. ثبات های درون CPU می توانند 8 بیت ، 16 بیت، 32 بیت و یا حتی 64 بیت باشند. اندازه آنها به CPU بستگی دارد. بطور كلی هر چه ثبات ها بیشتر و بزرگتر باشند، CPU مناسب تر است. عیب ثبات های بیشتر و بزرگتر، گرانی CPU می باشد.
2- CPU دارای بخشی بنام ALU (واحد حساب/ منطق) است. بخش ALU در CPU مسئول انجام اعمال حسابی مانند جمع، تفریق، ضرب و تقسیم، و اعمال منطقی مانند AND ، OR و NOT می باشد.
3- هر CPU دارای یك شمارنده برنامه است. نقش شمارنده برنامه اشارهبه آدرس دستورالعمل بعدی برای اجرا است. با اجرای هر دستورالعمل، شمارنده برنامه افزایش یافته و به آدرس دستورالعمل بعدی برای اجرا اشاره خواهد كرد. در این اشاره، محتوای شمارنده برنامه روی گذرگاه آدرس قرار گرفته و دستورالعمل مورد نظر را یافته و آن را از مبدأ برداشت می كند. در IBM PC شمارنده برنامه را IP یا اشاره گر دستورالعمل می خوانند.
4- نقش دیكدر دستورالعمل ، تفسیر دستور برداشت شده توسط CPU است. می توان دیكدر دستورالعمل را همانند یك فرهنگ لغت تصور كرد كه مفهوم هر دستورالعمل را ذخیره نموده و CPU را در برداشت قدم های بعدی پس از دریافت دستورالعمل هدایت می كند. همانطور كه فرهنگ لغت باتعریف هر چه بیشتر لغات نیاز به صفحات بیشتری دارد، CPU هم در درك دستورالعمل های بیشتر نیاز به ترانزیستورهای بیشتری خواهد داشت.
عملیات درونی كامپیوتر
برای نمایش برخی از مفاهیم مورد بحث فوق، تحلیل قدم به قدمی از پردازش یك CPU برای جمع سه عدد در زیر داده شده است. فرض كنید كه یك CPU فرضی دارای چهارثبات با نام های D,C,B,A باشد. این پردازشگر دارای گذرگاه داده 8 بیتی و گذرگاه آدرس 16 بیتی است. بنابراین CPU می تواند به حافظه هایی از 0000 تا FFFFH دسترسی داشته باشد (جمعاً H 10000 مكان) . عملی كه CPU می خواهد انجام دهد عبارتست از قراردادن مقدار 21 در ثبات A و سپس جمع ثبات A با مقادیر H42 و H12 فرض كنید كه كد انتقال مقدار به ثبات A برابر (BOH) 10111000 و كد جمع یك مقدار به ثبات A نیز (04H ) 0100 0000 باشد. مراحل لازم و كد اجرای آنها برابر زیر است:
اگر برنامه اجرایی فوق در مكان هایی از حافظه قرار گیرد كه از H 1400 شروع می شود. محتوای هر مكان حافظه بقرارزیراست:
عملیاتی كه CPU برای اجرای برنامه فوق طی می كند بقرار زیر است:
1- شمارنده برنامه CPU می تواند مقداری بین 0000 و FFFFH داشته باشد. باید 1400 را در شمارنده برنامه نشاند تا آدرس اولین دستورالعمل برای اجرا مشخص گردد. پس از باركردن شمارنده برنامه با آدرس اولین دستورالعمل، CPU آماده اجرا است.
2- CPU ، H 1400 را روی گذرگاه آدرس قرار داده و آن را به خارج ارسال می دارد. مدار حافظه مكان را می یابد و در این هنگام CPU نیز سیگنال READ را فعال می نماید و به این ترتیب بایت مكان H1400 را از حافظه درخواست می كند. این موجب می شود تا محتوای حافظه در مكان H 1400 ، كه B0 است، روی گذرگاه قرار گیرد و به CPU انتقال یابد.
3- CPU دستورالعمل B0 را به كمك مدار دیكد دستورالعمل، دیكد می كند. پس از یافتن تعریف دستورالعمل متوجه می شود كه باید محتوی مكان حافظه بعدی را به ثبات A در داخل CPU بیاورد. بنابراین به مدار كنترل خود فرمان اجرای دقیق آن را صادر می نماید. وقتی كه مقدار H 21 را از مكان 1401 حافظه به درون آورد، دریچه های ورودی همه ثبات ها را بجز ثبات A ، می بندد. بنابراین مقدار H 21 وقتی وارد CPU شود مستقیماً وارد ثبات A می گردد. پس از تكمیل یك دستورالعمل ، شمارنده برنامه به آدرس دستورالعمل بعدی برای اجرااشاره می كند، كه در این حالت 1402 است. سپس آدرس H 1402 به روی گذرگاه آدرس ارسال می شود تا دستورالعمل بعدی برداشت شود.
4- آنگاه از مكان H 1402 ، كد 04 را بر می دارد. پس از دیكد كردن، CPU می فهمد كه باید محتوای ثبات A را با بایتی كه در آدرس بعدی قرار دارد (1403) جمع كند. پس از آوردن مقدار (در این حالت H42 ) به درون CPU ، مقدار درون ثبات A را همراه با این مقدار به ALU برای انجام جمع تحویل می دهد. سپس نتیجه جمع را از خروجی ALU دریافت كرده و در ثبات A قرار می دهد. در این هنگام شمارنده برنامه برابر با H 1404 ، یعنی آدرس دستورالعمل بعدی می گردد.
5- آدرس H 1404 روی گذرگاه آدرس قرار می گیرد و كد درون آن آدرس به داخل CPU آورده شده و سپس دیكد و اجرا می گردد. مجدداً این كد مقداری را به ثبات A می افزاید. شمارنده برنامه به H 1406 اصلاح می شود.
6- نهایتاً، محتوای آدرس 1406 برداشت و اجرا می گردد. این دستورالعمل، HALT ، به CPU می فهماند تا افزایش شمارنده برنامه را متوقف نماید. در غیاب HALT ، CPU به اصلاح شمارنده برنامه ادامه داده و دستورالعمل ها را برداشت می نماید.
اكنون فرض كنید كه آدرس H1403 به جای H 42 ، حاوی 04 باشد. CPU چگونه داده 04 را برای جمع از كد 04 تفكیك می كند؟ بخاطر آورید كه برای این CPU ، كد 04 به معنی انتقال یك مقدار به داخل ثبات A است، بنابراین CPU سعی بر دیكد مقدار بعدی نخواهد كرد، بلكه محتوای مكان حافظه بعدی را بدون توجه به مقدار آن بداخل ثبات A منتقل می سازد.
این فصل با بحثی در موردنقش و اهمیت میكروكنترلرها در زندگی روزمره آغاز می شود. در بخش 1-1 روال انتخاب یك میكروكنترلر، همراه با استفاده از آنها را مورد بحث قرار می دهیم. بخش 2-1 انواع اعضای خانواده 8051 ، همچون 8052 ، 8031 و ویژگی های آنها را پوشش می دهد. بعلاوه انواع مختلف 8051 مانند 8751 ، AT 51C89 و 5000DS را مورد بحث قرار خواهیم داد.