گفتيمكه هر كس براي آن كه بتواند از آنچه در ذهن به عنوان يك نرمافزار داردطراحي خوبي داشته باشد، بهتر است كه درك صحيح و نسبتا كاملي از كاركردرايانه و منطق آن داشته باشد و با اجزاي سيستم و منابع مورد نياز و نيزمنابعي كه در اختيار است آشنا باشد.
پردازنده
پردازنده كه در واقع مهمترين بخش و اصليترينمنبع سختافزاري سيستم است، به واحد پردازش مركزي ياCPU معروف است.درونCPU دو بخش عمده وجود دارد كه به واحد محاسبه و منطق و واحد كنترلمعروف است.
همانطور كه از نام اين واحدها مشخص است، تماميكارهاي محاسباتي در واحد محاسبه و منطق انجام ميگيرد و واحد كنترل، بخشياست كه به واحد محاسبه و منطق نظارت دارد و امور آن را كنترل ميكند. دركنار اين 2 واحد، حافظههاي كوچك و بسيار سريعي به نام ثبات (register)قرار دارند كه كار نگهداري موقت دادهها را به عهده دارند.
هرپردازنده تعداد مشخص و انواع معيني ثبات دارد كه وظيفه هريك از آنها مشخصاست. اندازه ثباتها نيز به نوعCPU بستگي دارد. به عنوان مثال،پردازندههاي قديمي،8086, 8088,80286 پردازندههايي بودند كه هم اندازهثباتها و هم اندازه گذرگاههاي دروني آنها 16 بيت بود. پردازندههاي80386 و 80486 و پس از آن پردازندههاي پنتيوم، ساختار 32بيتي دارند.پردازندههاي 64بيتي نيز كه چند سالي است طراحي شدهاند گوياي اندازهثباتها و گذرگاههاي خود هستند. در مورد ثباتها كمي جلوتر، بيشتر صحبتخواهيم كرد.
در كنار ثباتها حافظههاي ديگري هستند كه به پرچم(Flag) معروف هستند. هرFlag يك بيت است كه ميتواند مقدار صفر يا يك را بپذيرد.
البتهپرچمها هم به صورت يك ثبات درونCPU قرار دارند، اما مانند ثباتها ازآنها استفاده نميشود. از ثباتها معمولا به صورت واحدهاي حافظه 8، 16و 32بيتي استفاده ميشود، اما پرچمها به صورت بيت به بيت مورد استفاده قرارميگيرند.
پرچمها
در صورتي كه از زبان اسمبلي استفاده كنيد، در ساختبرنامهها و نوشتن رابطهها، گاهي لازم ميشود كه حالتي بررسي شود كه درصورت رخ دادن آن يك كار بخصوص و در غير اينصورت كار ديگر انجام شود. صفريا يك بودن يك بيت ميتواند گوياي آن باشد كه آن حالت يا وضعيت رخ دادهاست يا خير.
به عنوان مثال فرض كنيد ميخواهيم محتواي دو ثبات رابا هم مقايسه كنيم. بعد از آنكه عمل مقايسه انجام شد برابر بودن محتوايآن دو ثبات از بررسي يك بيت به نام Zero Flag انجام ميشود. به اين معنيكه اگر آن بيت 1 باشد به آن معناست كه محتواي دو ثبات با هم برابربودهاند و اگر صفر باشد به معناي نابرابر بودن دو ثبات خواهد بود.
پرچمهاي ديگري نيز وجود دارند كه هر كدام به منظور خاصي به كار گرفته ميشوند و معناي بخصوصي نيز دارند.
گاهينيز بررسي دو يا چند پرچم به طور همزمان ميتواند ما را به يك نتيجه خاصبرسانند. اغلب براي برنامهنويسان اين سوال مطرح ميشود كه چرا اين بيتهابيت پرچم ناميده شدهاند. شايد دانستن علت نامگذاري اين بيتها به پرچم،شخص را به درك بهتري از كاربرد آنها برساند. هنگامي كه يك قله توسط شخص يايك گروه كوهنورد فتح ميشود پرچمي در قله قرار داده ميشود.
باقرار دادن آن پرچم، اگر اشخاص ديگري به آنجا راه بيابند متوجه ميشوند كهاين قله قبلا توسط گروه ديگري فتح شده است و اگر پرچمي وجود نداشتميتوانند نتيجه بگيرند كه خود اولين كساني هستند كه قله را فتح ميكنند.با مفهومي مشابه، پرچم را ميتوان براي رخ دادن يا ندادن يك وضعيت دررايانه به كار برد.
وظايف پردازنده
به طور كلي ميتوان وظايف پردازنده را در 3 عمل خلاصه كرد:
1 - واكشي
2 - رمزگشايي
3 - اجرا
واكشيعمل خواندن يك دستورالعمل از برنامه و قرار دادن آن در صف برنامه است.پس از اينكه اين كار انجام شد عمل رمزگشايي صورت ميگيرد. مفهومرمزگشايي در اينجا با عمل رمزگشايي در امنيت و ارتباطات متفاوت است.
رمزگشايي در امنيت معادل كلمهdecrypt است، اما در اينجا معادلكلمهdecode است كه به عمل ترجمه آدرس و واكشي عملوندهاي آن از حافظهاست. پس از اينكه عمل رمزگشايي نيز انجام شد نوبت به اجراي دستورالعملميرسد. به طور كلي اجرا در اينجا معناي انجام محاسبات مورد نياز ذخيره درثباتها و حافظه اصلي و تغيير وضعيت پرچمها است.
حافظه
بدون شك هم براي ذخيرهسازي دائمي دادهها و همبراي نگهداري موقت آنها به حافظه نياز داريم. اما در ذخيرهسازي دادهها 2مساله اهميت دارد. يكي حجم دادهاي است كه ميخواهيم ذخيره كنيم و ديگريزمان نياز مجدد و رجوع به داده ذخيره شده است.
ديسك سخت پرظرفيتترين، ارزانترين و درعينحال كندترين رسانه ذخيره داده است.
حافظه اصلي يا RAM از ديسك سخت سريعتر و بهخاطر گرانتر بودن از آن، ظرفيت كمتري دارد.
ثباتهانيز حافظههايي هستند كه فوقالعاده سريع و گرانقيمت هستند و در نتيجهظرفيت آنها محدود و تعداد آنها براي هر پردازنده مشخص است.
يكبرنامهنويس اسمبلي بايد بداند كه چه زمان بايد داده روي ديسك سخت ياحافظه اصلي نوشته شود و چه زمان براي نگهداري داده از ثباتها استفادهكند.
به عنوان مثال براي محاسبات سريع و نگهداري نتايج ميانيمحاسبات بهتر است از ثباتها، براي نگهداري نتايج و ثبت دادههاي بزرگتراز حافظه اصلي و براي ذخيرهسازي دائمي اطلاعات از ديسك سخت استفاده شود.البته براي اين امور محدوديتي وجود ندارد، اما استفاده نادرست و نابجا ازهر كدام از اين حافظهها ميتواند كارايي و سرعت برنامه را به شدت تحتتاثير قرار دهد.
به عنوان مثال، اگر براي نگهداري نتايج ميانيمحاسبات از ديسك سخت استفاده شود، خواندن و نوشتن روي ديسك سخت هزارانبرابر بيشتر از آن محاسبات به طول خواهد انجاميد.
ثباتها
ثباتهاي داخل پردازنده به چند نوع تقسيمبنديميشوند. يك سري از آنها به ثباتهاي عمومي معروف هستند كه از آنها برايذخيرهسازي موقت دادهها در هر نوع پردازش و محاسباتي استفاده ميشود و دربه كارگيري آنها محدوديت خاصي وجود ندارد. اين ثباتها در پردازندههاي16بيتيAX ،BX،CX،DX نام دارند. ثباتهايي نيز وجود دارند كه به ثباتهايكنترلي معروفند. ثبات پرچم و ثباتي به نام IP از اين دسته هستند. ثباتIP ياInstruction pointer حاوي آدرس محلي است كه براي تعيين آدرسدستورالعمل بعدي به كار ميرود. ثباتهاي ديگري نيز به نام سگمنت(segment) و انديس (index) وجود دارند كه توضيح كاربردهاي آنها بحث وزمان بيشتري ميطلبد و ما قصد نداريم در اينجا به تمام جزئيات بپردازيم.