احتمالاً تا حالا نام «ریزپردازنده» (Microprocessor) را بارها شنیدهاید. اصطلاح "micro" به معنای بسیار کوچک و "processor" به معنای چیزی است که کارها را تسریع میکند؛ بنابراین در مفهوم کلی اصطلاح " Microprocessor" به معنای ...
آموزش ریزپردازنده
آموزش زبان اسمبلی
آماده کردن دانشجو برای بازار کار
ارتقای سواد علمی و عملی در زمینه معماری و سخت افزار کامپیوتر
احتمالاً تا حالا نام «ریزپردازنده» (Microprocessor) را بارها شنیدهاید. اصطلاح "micro" به معنای بسیار کوچک و "processor" به معنای چیزی است که کارها را تسریع میکند؛ بنابراین در مفهوم کلی اصطلاح " Microprocessor" به معنای چیز بسیار کوچکی است که میتواند وظایف مختلف را طبق دستور سرعت دهد؛ اما تعریف واقعی ریزپردازنده کمی متفاوت از این خواهد بود. در ریزپردازنده یک تراشه الکترونیکی کوچک حاوی ترانزیستور است که در واحد پردازش مرکزی کامپیوتر (CPU) و سایر دستگاههای الکترونیکی یافت میشود. عملکرد اصلی آن گرفتن ورودی، پردازش و سپس ارائه خروجی مناسب است. دوره آموزش ریزپردازنده و اسمبلی با هدف آموزش این درس مهم از رشته مهندسی کامپیوتر ارائه شده و این ترند مخصوصاً در حوزه معماری کامپیوتر و سختافزار بسیار حائز اهمیت است.
در ادامه معرفی کوتاهی از آموزش رایگان ریزپردازنده و اسمبلی خواهیم داشت و بعد در کنار معرفی دوره مفصل در رابطه با ریزپردازنده و زبان اسمبلی صحبت خواهیم کرد.
دوره آموزش رایگان ریزپردازنده و اسمبلی در 23 جلسه و 33 ساعت آموزشی هماکنون در اختیار کاربران عزیز مکتب خونه قرار دارد. این دوره مربوط به درس ریزپردازنده و اسمبلی بوده و از کلاس دکتر اسماعیل ثنایی ضبط شده است. در این درس استاد به مباحث مهم و پیشرفتهای از ریزپردازنده و اسمبلی خواهد پرداخت.
این درس از دو قسمت اصلی تشکیل میشود:
هدف اصلی این درس ایجاد دید مهندسی لازم برای انجام پروژههای مربوط به سیستمهای دیجیتال هم بهصورت Single board و هم بهصورت سیستمی بر روی PC است. در نهایت دانشجویان قادر خواهند بود که در هنگام مواجهه با یک پروژه، قدمهای اصلی، ملاحظات، محدودیتها و راهحلها را ارائه، تحلیل و بررسی کنند و بهترین راهحل را برگزینند.
دوره آموزش رایگان ریزپردازنده و اسمبلی برای تمامی دانشجویان رشته مهندسی کامپیوتر در هر دو گرایش سختافزار و نرمافزار و دانشجویان برق الکترونیک بسیار مناسب بهحساب میآید و با این حال این دوره فقط مختص به آنها نخواهد بود، بلکه هرکسی که علاقهمند به مباحث معماری کامپیوتر است میتواند از محتوای ارزشمند این دوره آموزشی بهره ببرد.
همچنین این درس ریزپردازنده پیشنیاز مهمی برای درس سیگنالها و سیستمها است و برای کسانی که علاقهمند به کار عملی و ورود به بازار کار هستند نیز بسیار ایده آل بهحساب میآید. لازم است که برای ورود به بازار کار با جنبههای تئوری و عملی این علم آشنا باشید.
مهمترین اختراع تکنولوژیکی در زمانهای اخیر ریزپردازنده است. پیشرفت در فناوری مدارهای مجتمع این امکان را برای مهندسان شرکت اینتل آمریکا فراهم کرد تا در سال 1971 یک کامپیوتر قابلبرنامهریزی میکرو بر روی یک تراشه توسعه دهند. این دستگاه ("Intel 4004") از حدود 2300 ترانزیستور تشکیل شده بود. تراشهای که با استفاده از فناوری MOS کانال P-gate سیلیکونی ساخته شده است. بعدها این تراشه بهعنوان ریزپردازنده نامگذاری شد.
ریزپردازندهها معمولاً از سیلیکون ساخته میشوند و اغلب «تراشه منطقی» یا «پردازنده» نامیده میشوند. خانواده ریزپردازنده نسل اول 8 بیتی بود؛ اما امروزه ما از هر دو ریزپردازنده 32 بیتی و 64 بیتی استفاده میشود. در 44 سال گذشته تعداد ترانزیستورهای مورد استفاده در ریزپردازندهها بهشدت افزایش یافته است. اکنون ریزپردازندههایی داریم که بیش از شش میلیون ترانزیستور دارند.
در ظاهر، کار ریزپردازنده ممکن است کار آسانی به نظر برسد، اما ریزپردازندههای مدرن تریلیونها دستورالعمل را در ثانیه انجام میدهند. هیچ فناوری باورنکردنیتر از ریزپردازنده نیست. در هر ثانیه، تریلیونها باز و بسته شدن سوئیچ در یکهزارم اینچ زیر سطح رخ میدهد.
از زمانی که کامپیوتر روشن میشود تا زمانی که خاموش میشود، ریزپردازنده میلیونها عملیات منطقی و حسابی را انجام خواهد داد. این عملیات از تعداد کمی از فضاهای نگهداری به نام ثبات استفاده میکند. عملیات حسابی معمولی شامل جمع، تفریق و مقایسه دو یا چند مقدار است. برای انجام عملیات، ریزپردازنده باید دستورالعملهای خاصی را دریافت کند. هنگامیکه یک کامپیوتر راهاندازی میشود، ریزپردازنده اولین مجموعه دستورات خود را از سیستم اصلی ورودی-خروجی دریافت میکند. سرعت ریزپردازنده با مگاهرتز (M-Hz) یا گیگاهرتز اندازهگیری میشود. در دوره آموزش ریزپردازنده و اسمبلی نحوه کار ریزپردازندهها بهصورت کامل تشریح شده است.
اولین ریزپردازنده 4 بیتی بود. سپس ریزپردازندههای 8 بیتی، 16 بیتی، 32 بیتی و در نهایت 64 بیتی را بهتدریج با گذشت زمان و با پیشرفت فناوری مدرن به وجود آمدند. ما میتوانیم آن را به روشهای مختلفی طبقهبندی کنیم، اما رایجترین و متداولترین آنها، ریزپردازندهها به دو دسته طبقهبندی میشوند که عبارتاند از:
با توجه به قابلیت کار:
1. ریزپردازندههای اختصاصی یا میکروکنترلر
2. ریزپردازندههای عمومی
3. پردازندههای بیت اسلایس
با توجه به خصوصیات:
1· پردازندههای RISC
2· پردازندههای CISC
3· پردازندههای ویژه
ریزپردازنده یا میکروکنترلر اختصاصی کامپیوتری بهحساب میآید که در یک مدار مجتمع وجود دارد که برای انجام یک کار یا یک نوع کار اختصاص داده شده است. آنها در شرایطی استفاده میشوند که توابع محاسباتی محدودی موردنیاز خواهد بود. این ریزپردازنده دستگاه ورودی اختصاصی دارد و اغلب دارای نمایشگری برای خروجی است. همچنین این ریزپردازنده شامل حافظه، تجهیزات جانبی ورودی/خروجی قابلبرنامهریزی و همچنین یک پردازنده خواهد بود.
میکروکنترلرها بیشتر برای کاربردهای تعبیه شده طراحی شدهاند و بهشدت در دستگاههای الکترونیکی با کنترل خودکار مانند تلفنهای همراه، دوربینها، اجاقهای مایکروویو، ماشینهای لباسشویی و غیره استفاده میشوند. آنها معمولاً 4 بیتی هستند و برای مصرف انرژی کم طراحی شدهاند. این نوع از ریزپردازندهها با نام مدارهای مجتمع خاص برنامه (Application specific integrated circuits) یا نیز شناخته میشوند.
این نوع ریزپردازندهها برای مصارف مختلف طراحی شدهاند. آنها طیف گستردهای از برنامهها را دارند که به یک عملکرد محدود نمیشوند. آنها را میتوان برای همه یا بیشتر اعضای یک دسته یا گروه برنامه اعمال کرد. ریزپردازندههای کامپیوتر و تلفنهای همراه اندرویدی رایجترین و محبوبترین نمونه آن هستند. آنها میتوانند اکثر برنامهها را تحت شرایط خاص و با کمک برنامهنویسی یا برنامههای کاربردی اضافی اجرا کنند
برخی از پردازندهها ظرفیت کاری محدودی دارند. آنها در انجام بسیاری از کارهای دشوار مفید نیستند، اما میتوانند با اضافه کردن یک به یک آنها در ساخت پردازندههای بزرگ مفید باشند. این کار بسیار پرهزینه و زمانبر است و بهسختی از این نوع ریزپردازنده استفاده میشود.
هرچند که در دوره آموزش ریزپردازنده و اسمبلی با همه اصطلاحات مربوط به دنیای اسمبلی و ریزپردازنده آشنا خواهیم شد ولی ذکر آنها در این بخش از توضیحات هم خالی از لطف نیست.
ALU محاسبات یا پردازش واقعی دادهها را انجام میدهد. ALU ماشینحساب کامپیوتر است. توابع ALU عبارتاند از:
واحد کنترل حرکت دادهها و دستورالعملها را به داخل و خارج از CPU کنترل میکند. همچنین عملکرد ALU را کنترل میکند. واحد کنترل دادهها را وارد یا خروجی را پردازش یا ذخیره نمیکند. بلکه این عملیات را آغاز و کنترل میکند. واحد کنترل همچنین با دستگاههای ورودی برای شروع انتقال دادهها یا دستورالعملها به حافظه و با دستگاههای خروجی برای شروع انتقال نتایج از حافظه ارتباط برقرار میکند.
رجیسترها (Registers) مکانهای حافظه ویژهای برای ذخیرهسازی اطلاعات موقت هستند، رجیسترها تقریباً شبیه حافظه چرکنویس (scratchpad). هر ثبات از بیش از یک فلیپ فلاپ ساخته شده است. ALU از دادههای ذخیره شده در ثباتها استفاده میکند. انواع مختلفی از رجیسترها استفاده میشود. در میان آنها، (accumulator register) «رجیستر تجمعکننده» و (memory address register) «رجیستر آدرس حافظه» یا فقط (address register) «رجیستر آدرس» و (instruction register) «رجیستر دستورالعمل» معروفترین هستند.
رجیستر تجمعکننده دادهها را تا تکمیل یک دستورالعمل ذخیره میکند. نتیجه یک عملیات حسابی نیز توسط آن ذخیره میشود و هر بار که یک عملیات حسابی اتفاق میافتد این اتفاق خواهد افتاد. رجیستر آدرس حافظه حاوی آدرسی است که دادهها از آنجا و از کدام حافظه میآیند. رجیستر آدرس حافظه دارای آدرس باینری است که در آن دادهها درجایی در حافظه ذخیره میشود. رجیستر دستورالعمل، دستورالعمل موردنیاز و ثبات بافر را ارائه میدهد. کار انواع رجیستر در دوره آموزش ریزپردازنده و اسمبلی مورد بررسی قرار گرفته است.
«واحد باس» (Bus unit) اطلاعات دیجیتال را در سراسر تراشه و کامپیوتر حمل میکنند و حافظه محلی از محاسبات روی تراشه پشتیبانی میکند. بسیاری از اتصالات باس مانند گذرگاه آدرس، گذرگاه کنترل، گذرگاه حافظه گذرگاه داده و غیره وجود دارد. ریزپردازندههای پیچیدهتر اغلب شامل بخشهای دیگری مانند بخشهایی از حافظه تخصصی، به نام حافظه پنهان، برای سرعت بخشیدن به دسترسی به دستگاههای ذخیرهسازی اطلاعات خارجی هستند.
ریزپردازنده نمیتواند بهطور خودکار کار کند. برای انجام یک کار مشخص به دادههایی به نام دستورالعمل نیاز دارد؛ بنابراین هنگام صحبت در مورد ریزپردازندهها، باید دستورالعملهای آنها و نحوه اجرای آنها را بدانیم.
«دستورالعمل» (Instruction) اطلاعات یا روشی است که با آن میتوان کار موردنیاز را انجام داد. دستورالعملهای ریزپردازنده در حافظه باید به شکل قابلخواندن ماشین باشد. این دستورالعمل از دو بخش تشکیل شده است. اولین مورد «یک کد عملیات» و «یک یا چند عملوند» خواهد بود. این معمولاً بهعنوان فرمت دستورالعمل شناخته میشود.
اجرای دستورالعمل یکی از وظایف اصلی ریزپردازنده است. دستورالعملها یکی پس از دیگری اجرا میشوند. اجرای دستور معمولاً توسط دو چرخه انجام میشود و آنها عبارتاند از;
در ابتدای اجرای دستورالعمل، واحد پردازش مرکزی (CPU) برخی از دادهها و دستورالعملها (برنامه) را از حافظه اصلی خود واکشی میکند و آنها را در مناطق حافظه موقت داخلی خود به نام «رجیستر» ذخیره میکند. فرآیند واکشی دادهها و دستورالعملها از طریق مسیری به نام باس امکانپذیر است.
پس از آن، CPU دستورالعملی را که به تازگی واکشی کرده است، ارزیابی کرده یا آن را معنا میکند. به این فرآیند «رمزگشایی» (دیکد | Decode) میگویند. CPU تمام دستورالعملها را رمزگشایی کرده و مناطق درون ریزپردازنده را برای مرحله بعدی آماده میکند. کل فرآیند یا چرخه بهعنوان چرخه واکشی شناخته میشود.
این مرحله وظایف زیادی برای انجام ندارد. در این مرحله دستور رمزگشایی انجام شده و نتیجه ساخته میشود. سپس نتیجه برای استفادههای بیشتر در رجیستر حفظ خواهد شد؛ بنابراین چرخهای که در واقع دستورات داده شده را اجرا میکند، چرخه اجرا نامیده میشود.
موضوع مهم دیگری که در دوره آموزش ریزپردازنده و اسمبلی مورد بحث قرار خواهد گرفت، زبان برنامهنویسی اسمبلی خواهد بود. برنامهنویسی به زبان اسمبلی عبارت است از نوشتن دستورالعملهای ماشین به شکل «مونومون» (دستورالعمل کمککننده به حافظه | mnemonic)، با استفاده از اسمبلر برای تبدیل این مونومون ها به دستورالعملهای واقعی پردازنده و دادههای مرتبط.
زبان اسمبلی یک زبان برنامهنویسی سطح پایین برای ریزپردازندههای قدیمی و سایر دستگاههای قابلبرنامهریزی است. نوشتن به زبان ماشین واقعاً سخت بود و از این رو زبان اسمبلی به وجود آمد. این نوع زبان برنامهنویسی به برنامهنویسان آن زمان کمک میکرد تا کارآمدتر و راحتتر برنامهنویسی کنند. این زبان نیاز به اسمبلر یا برنامه مترجم دارد که برای تبدیل حافظهها و عملوندها به زبان ماشین استفاده میشود. بیشتر مردم این زبان را بهعنوان زبان اسمبلی avr میشناسند ولی با این حال این زبان برای اغلب میکروکنترلرها و ریزپردازندهها به کار گرفته میشود.
زبان اسمبلی ابتداییترین زبان برنامهنویسی موجود برای هر پردازنده است. زبانهای اسمبلی معمولاً فاقد امکانات سطح بالا مانند متغیرها و توابع هستند. این زبان ساختارها و مجموعهای از دستورات مشابه زبان ماشین را دارد، اما به برنامهنویس اجازه میدهد تا از نامها به جای اعداد استفاده کند. این زبان هنوز برای برنامهنویسان در مواقعی که سرعت لازم است یا زمانی که نیاز به انجام عملیاتی دارند که در زبانهای سطح بالا امکانپذیر نیست، بسیار مفید خواهد بود.
برخی از ویژگیهای مهم برنامهنویسی به زبان اسمبلی در زیر آورده شده است:
برخی از مزایای زبان اسمبلی به صورت موارد زیر است:
برخی از معایب زبان اسمبلی به صورت موارد زیر است:
مجموعه دستورالعملهای زبان اسمبلی در ریزپردازنده اینتل 8085 با توجه به برنامهنویسی زبان اسمبلی بهصورت فهرست موارد زیر است:
درس ریزپردازنده و اسمبلی یکی از مهمترین دروس برای علاقهمندان به درس معماری کامپیوتر بهحساب میآید. دوره آموزش ریزپردازنده و اسمبلی با هدف آموزش این درس مهم تهیه شده است. اگر به فکر ارتقای مهارتهای خود بهعنوان یک مهندس کامپیوتر یا یک معمار کامپیوتر هستید، هماکنون با شرکت در دوره آموزش رایگان ریزپردازنده و اسمبلی قدم محکم و اول خود را در این مسیر بردارید و یا اگر در این زمینه سابقه دارید با این دوره آموزش زبان اسمبلی و ریزپردازنده مهارتهای خود را ارتقا دهید.
اطلاعات بیشتر
از مجموع 3 امتیاز
3 نظردکتر اسماعیل ثنائی عضو هیأت علمی دانشکده برق دانشگاه صنعتی شریف از سال ۱۳۶۵ میباشند. زمینهی فعالیت ایشان الکترونیک دیجیتال است.
اطلاعات بیشتر