img

روش کار پردازنده‌ها…

/
/
/
پردازنده‌های مدرن چیزهای ساده ای نیستند، اما همان گونه که در این مقاله خواهید خواند، هیچکس نمی تواند بلوکهای ساختمان اصلی را به چنگ آورد.

آیا تا به حال فکر کرده اید چگونه پردازنده در pc شما واقعا کار می کند؟ همان گونه که تراشه‌های جدید باب می شوند ما در باره ویژگیهای هوشمندانه ای مانند پیش بینی انشعاب ، اجرای خارج از سفارش و مخفیگاههایی با سطوح چندگانه چیزهایی می شنویم ، اما همه آنچه که ما تاکنون دریافته ایم توضیحات در سطح بالایی هستند. این نقص توضیح جزییات شگفت آور نیست، با این همه منطقی خواهد بود اگر فرض کنیم مداری شامل میلیاردها ترانزیستور(انتقال دهنده)، برای همه، بجز مجرب ترین مهندسین الکترونیک ، بسیار پیچیده خواهد بود.
در واقع، حتی اگر ما این ویژگیهای پیشرفته را حذف کنیم و روی قابلیت‌های اساسی که از زمان تولید اولین ریزتراشه وجود داشته است متمرکز شویم ، هنوز احتمال دارد به نظر ما برسد که ما در سرزمینی قدم می گذاریم که فقط دلیرترین افراد می تواتند پا بگذارند. حتی اولین ریز پردازنده – اینتل ۲۰۰۴، که در سال ۱۹۷۱ تولید شد- کمتر از ۲۳۰۰ ترانزیستور نداشت که صداهای آن کاملا شبیه مداری در سر شما می پیچید.
با این همه هر کسی که کوچکترین علاقه ای به نحوه کارکردن این گونه چیزها داشته باشد نمی تواند طرز کار پردازنده را تحسین نکند. راز این نکته در درک شیوه منظم شدن این ترانزیستورها نهفته است، چرا که این امر درک عملکرد آنها را بسیار آسانتر می کند. پیش از همه، از ترانزیستورها برا ی ساختن گیتهای (ورودی ها، خروجی ها) مدار منطقی رایانه استفاده می شود، طرز کاری که احتمال دارد درک آن چندان آسان نباشد. علاوه بر آین، به محض این شما به این گیتهای مدار منطقی رایانه مسلط شوید ، دیگر لازم نیست به ترانزیستورها فکر کنید چرا که اکنون می توان این اجزای جدید را بلوکهای ساختمانی تصور کرد که درست در جای خودشان قرار گرفته اند. در مقابل، می توان از گینهای مدار منطقی رایانه برای ایجاد مدارهایی مانند رمزگشاها(رسیور) و قفل‌های ایمنی(ضامن ها) استفاده کرد، که می توان از آنها به صورت بلوکهای ساختمانی پیچیده تری برای تولید حتی مدارهای قوی تری استفاده کرد- و به این ترتیب کار پیش می رود.
با ادامه این روش، سرانجام ما به پردازنده در حال کاری می رسیم که می توان آن را به گونه ای درک کرد که دیگر فکر کردن به آن ترانزیستورهای بیشمار کاملا غیرممکن باشد.
بنابراین، اگر شما همواره در پی دانستن نحوه کار واقعی pc خودتان بوده اید ، اینجا فرصتی است که از آن مطلع شوید. در این رابطه، شما به هیچ دانش الکترونیکی نیازی ندارید – همه آنچه لازم دارید اشتیاق به عزیمت به سفری برای دست یابی به آگاهی و روشن بینی است.
بعلاوه، برای آسان تر کردن امور و تصدیق این نکته که عمل، بهترین شیوه یادگیری است ، شبیه ساز مجازی را به شما معرفی خواهیم کرد که می توانید آن را روی pc خودتان اجرا کنید. این قطعه مفید نرم افزار به شما امکان می دهد مدارهای منطقی رایانه را در جای خودشان بگذارید برای این که دقیقا چگونگی عملکرد آنها را دریابید. پیش از آن که ادامه دهید اگر هوس می کنید همان گونه که پیشرفت می کنید چیزها را آزمایش کنید، «مدار منطقی رایانه سیدار» (مخالف آن) را مشاهده نمایید. هنگامی که این کار را انجام می دهیم ، احتمال دارد شما نخواهید پردازندههای خاص خودتان را بسازید، اما دست کم به بیشتر از یک آگاهی دست خواهید یافت مبنی بر این که چگونه این شاهکارهای مهندسی خلق می شوند چیزی که اغلب مردم آن را کمتر از معجزه تلقی نمی کنند.

الزامات
پیش از این که به این نکته توجه کنیم که چگونه یک پردازنده کار می کند، لازم است به یادمان بیاوریم که یک پردازنده چه کاری انجام می دهد.
خیلی ساده است، باید دستورالعملها را یکی یکی از حافظه بخوانید، و سپس آنها را به ترتیب اجرا کنید. از آنجایی که دستورالعملها رمزهای دوتایی هستند در مرحله اجرا ، ابتدا از آنها رمزگشایی می شود به این ترتیب پردازنده می تواند عملکرد صحیحی داشته باشد، که احتمال دارد جمع کردن دو عدد، یا تفریق عددی از عدد دیگر ، یا نوشتن نتیجه ای از روی حافظه باشد.
در حالی که دستورالعملها به صورت عادی یکی پس از دیگری در حافظه اجرا می شوند، همچنین لازم است دستور العملهایی تهیه کنید که باعث شوند این اجرا با مکانهای مختلف در حافظه و سایر مکانهایی منطبق باشد که این کار را فقط در صورتی که نتیجه خاصی از دستورالعمل پیشین گرفته می شود، انجام می دهند؛ که این انشعاب شرطی نامیده می شود.
در ضمن پردازندههای مدرن سعی می کنند دهها دستور العمل مختلف داشته باشند، که این امر در واقع برنامه ریزی آنها را در عین حال آسانتر می کند و پردازندهها فقط به تعداد کمی دستورالعمل نیاز خواهند داشت تا بتوانند واقعا هر مشکلی را که بتوان به صورت منطقی حل کرد، رفع کنند. برای مثال، ضرب و تقسیم در اغلب پردازندههای پیشین وجود نداشت زیرا با استفاده از چندین جمع و تفریق می توانستند به قابلیت مشابهی دست یابند. در واقع، اولین رایانه، کودک ۱۹۴۸ منچستر، فقط هفت دستورالعمل داشت اما در واقع رایانه ای جهانی بود.
در حالی که به چگونگی عملکرد پردازندهها نگاه می کنیم، قصد نداریم به دلایل لزوم وجود دستورالعملها فکر کنیم ، بلکه چگونگی عملکرد تعدادی از دستورالعمهای عمومی تر را بررسی خواهیم کرد.
پردازندههای امروزی دستگاههای ثبت با مصرف عمومی متعددی دارند که نواحی از حافظه داخلی پردازنده هستند که در آنها عملیات منطقی و ریاضی انجام می شود. مشابه پردازندههای بسیار قدیمی، فرض خواهیم کرد که فقط یک دستگاه ثبت مورد استفاده عمومی به نام انباشتگر وجود دارد.
معمولا دستورالعملهای منطقی و حسابی با ترکیب مقداری با مقداری در مکان خاصی در حافظه و نوشتن نتیجه در پشت انباشتگر کار می کنند. بنابراین، اگر انباشتگر شامل مقدار عددی ۴ و مکان حافظه شامل عدد ۲ باشد، دستورالعمل جمع ، مقدار عددی ۶ خواهد بود که در انباشتگر نوشته می شود.
همه دستورالعملهای منطقی و ریاضی در انباشتگر روی مقدار کار می کنند، اما لازم است از مقادیر بسیاری برای یک برنامه استفاده شود، بنابراین دو دستورالعمل حیاتی دیگر لازم است.
ستون محتوا در جدول بالاتر شامل فرمان‌های مربوط به دستگاههای ثبت است که در جدول پایین تر نشان داده شده است و سپس در انباشتگر نوشته می شوند. جدول صفحه قبل اجرای قسمتی از برنامه ای را نشان می دهد، که ترکیبی از ۴ دستورالعمل در یک پردازنده ۸ بیت است. هدف برنامه انجام یک محاسبه ساده ریاضی، ذخیره نتیجه در مکان ۱۹ حافظه است.
ما چگونگی ذخیره هر دستورالعمل در حافظه، مفهوم آن، و چگونگی تغییر مقادیر در انباشتگر و مکان حافظه -در حالی که هر دستور العمل اجرا می شود- را می بینیم.
هیچ پردازنده واقعی این زبان رایانه(بیسیک) نخواهد بود اما ، در نمونه ساده شده ما هر دستورالعمل ۸ بیتی ترکیبی از یک رمز عملیاتی ۳ بیتی است که نوع دستورالعمل را تعریف می کند ، و یک آدرس ۵ بیتی مکان حافظه است که در آن دستورالعمل عمل می کند. ما همچنین مقادیر اولیه داده هایی که برنامه بر اساس آنها در مکان‌های ۱۶ تا ۱۹ حافظه عمل می کند را می بینیم.

گیتهای منطق رایانه
ترانزیستور بنیادی ترین بلوک ساختمان الکترونیکی است. در مدارهای آنالوگ (مشابه) این اجزا می توانند به صورت آمپلی فایرها (تقویت کننده‌های برق) عمل کنند، اما در دستگاههای الکترونیکی دیجیتال به صورت کلیدهای برق عمل می کنند. به عبارت دیگر، آنها وجود و فقدان یک ولتاژ روی یک مدار برای کتترل جریان یک جریان برق در مدار دیگری را امکان پذیر می کنند. در اینجا ما قصد نداریم در باره عملیات آنها تحقیق کنیم، بلکه کلام آخر این است که برای ساختن بنیادی ترین مدارهای منطق رایانه که با عنوان گیتهای منطقی و معکوس کننده ها شناخته می شوند، فقط چند ترانزیستور لازم است. بنابراین ، برای چیدن زمین بازی و حرکت توپ در آن، بیایید عملکرد این عناصر بنیادی منطق رایانه را ببینیم.
از هم اکنون، همان گونه که ما با مدارهای منطق رایانه ای سروکار داریم که به نوبه خود با عددهای صفر و یک کار می کنند، انحصارا در باره این مقادیر منطقی صحبت خواهیم کرد، با این که آن مقادیر در مدارهای برق به صورت دو سطح ولتاژ مختلف، به طور معمولی با ولتاژ ۰ برای ۰ یک منطق رایانه و یک ولتاژ غیر صفر (در اصل ۵+ ولت اما نزدیکتر به یک ولتاژ پایین تر ) برای یک منطق رایانه ۱ ارائه می شوند.
ساده ترین مدار منطقی معکوس کننده نامیده می شود، توضیحی که کاملا یک توضیح خودساخته است. آن فقط یک ورودی و یک خروجی دارد، مقداری که معکوس مقدار ورودی آن است. پس اگر ورودی یک ۰ باشد، خروجی یک ۱ خواهد بود و برعکس.

منطق رایانه سیدار
اگر شما می خواهید در حین مطالعه این مقاله ، بعضی از مدارهای ما را آزمایش کنید شبیه ساز منطق رایانه سیدار از : sourceforge.net/projects/cedarlogic این امکان را برای شما فراهم می کند بدون این که مجبور شوید اجزای واقعی را به یکدیگر جوش دهید.
در عوض، شما به سادگی اجزایی را از کتابخانه‌های آن انتخاب می کنید وآنها را روی صفحه نمایش وصل می کنید. همچنین شما می توانید کلیدهای برق را برای تولید ۰ ثانیه یا ۱ ثانیه ( همان گونه که به ترتیب سیاه و قرمز نشان داده شده)، به ورودیها وصل کنید، و LEDها را به خروجی هایی اضافه کنید که بر این نکته دلالت دارند که آیا آنها ۰ ثانیه یا ۱ ثانیه (باز هم به صورت سیاه و قرمز) هستند.
در حالی که در یک پردازنده واقعی، ورودی ها به خروجی‌های سایر مدارها وصل خواهند شد، خروجی ها ، به نوبه خودبه ورودی‌های در عین حال با مداربندی بیشتری متصل خواهند شد، استفاده از کلیدهای برق و LEDها راه آسانی برای درک شما از چگونگی عملکرد یک مدار فراهم می کند.
همان گونه که در جای دیگری از مقاله بحث شده، در نمای صفحه مونیتور، دو گیت AND، دو معکوس کننده و یک گیت OR برای تولید یک گیت XOR وصل شده اند. با روشن و خاموش کردن دو کلید برق و مشاهده LED در خروجی مدار ، می توانیدمشاهده کنید که در واقع یک ۱ در هر کدام هز ورودی ها یک ۱ است. به عبارت دیگر، اگر دو ورودی متفاوت باشند، آن فقط یک ۱ را مطابق خروجی اش تولید می کند.
منطق رایانه سیدار علاوه بر گیتهای ساده منطق رایانه، بلوکهای ساختمانی منطق رایانه بسیاری مانند رمزگذارها، رمزگشاها، مولتی پلکسرها، و غیره دارد. بنابراین، برای مثال به شما نشان داده شده که می توانید یک رمزگشای از ۲ تا ۴ از ۴ گیت AND و دو معکوس کننده تولید کنید، هنگامی که در آینده به یکی نیاز داشته باشید انتخاب بلوک ساختمانی خاصی از کتابخانه ساده تر خواهد بود.
ما نمونه هایی خواهیم دید که در آنها از معکوس کننده ها استفاده شده است اما، پیش از آن لازم است تعدادی از بلوکهای ساختمانی اساسی تری را معرفی کنیم.
این بلوکها گیت نامیده می شوند و، در حالی که داشتن گیتهایی با ورودی‌های بیشتر امکان دارد، همه نمونه‌های ما دو ورودی و یک خروجی دارند.
یک گیت OR خروجی ۱ می دهد در هرکدام (یا هر دو) ورودی‌های آنS 1 هستند ( بدین معنا که یک AND دیگر)، به عبارت دیگر خروجی یک ۰ است. نمادهای مربوط به این سه جزئ منطقی اولیه در نموداری در انتهای صفحه ۹۵ نشان داده شده است و ، زیر هر یک ، جدول به اصطلاح درستی که عملیات آن خلاصه شده، ترسیم شده است.
ما فرض کردیم که امکان برخورداری از گیتهایی با بیش از دو ورودی وجود دارد و برای مشاهده این نکته که چگونه از اجزای منطقی ساده می توان برای راه انداختن انواع پیچیده تری استفاده کرد، بیایید به یک گیت OR دارای چهار ورودی فکر کنیم.اگر این اتفاق برای شما روی نداده که یکی از این گیتها را داشته باشید،می توانید این گیتها را به آسانی و با استفاده از سه گیت دارای دو ورودی با خروجی‌های دو تغذیه اولیه در ورودی‌های سومین ایجاد کنید. در واقع، شما می توانید با استفاده از چندین گیت دارای دو ورودی از هردو نمونه گیتهای OR و گیتهای AND با هر تعداد ورودی ایجاد کنید.
همچنین می توان از معکوس کننده‌های دارای دو گیت OR دارای بیش از دو ورودی و گیتهای AND برای تولید سایر انواع گیتها، مانند گیتNOR و گیت NAND استفاده کرد.
علائم اختصاری ‘not OR’ و ‘not AND’ به این مفهوم هستند که این گیتها خروجیهایی مخالف گیتهای OR و گیتهای AND دارند، بنابراین با سیم کشی یک معکوس کننده به خروجی یک گیت OR یا یک گیت AND می توان آنها را ایجاد کرد.
نوع اصلی گیت دیگر، گیت منحصر به فرد OR (گیت-XOR) است که یک ۱ در خروجیش تولید می کند اگر در یکی از خروجی هایش – نه هر دو- یک ۱ نباشد. همچنین می توان گیتهای ساده تری ساخت – در این نمونه شما به دو گیت AND ، دو معکوس کننده و یک گیت OR نیاز خواهید داشت. از آن جائی که ما پس از این با گیتهای NOR ، گیتهای NAND و گیتهای XOR مواجه خواهیم شد، نمادها و جداول واقعی آنها را همچنین در نمودار صفحه ۹۵ نشان داده ایم.

برخی دستور العملهای ساده
همراه با گیتهایی که پیش از این مشاهده کردیم ، می توانیم تعدادی از دستورالعملهای عمومی پردازنده مانند NOT, OR, AND, و XOR را اجرا کنیم. هر یک از اینها با اجرای تابع منطقی مربوط و نوشتن نتیجه در انباشتگر کار می کند. ما مدارهایی را برای یک پردازنده ۴ بیتی امتحان خواهیم کرد بنابراین ابعاد مدارهای ما مناسب هستند اما اصل همان اصل مدار برای یک طرح ۶۴ بیتی خواهد بود.
برای مثال، یک دستورالعمل NOT 4 بیتی فقط هر یک از پردازندههای ۴ بیتی در انباشتگر را معکوس می کند در نتیجه برای مثال، ۰۰۰۰به ۱۱۱۱ یا ۰۱۱۰ به ۱۰۰۱ تبدیل می شود.
یک دستورالعمل OR روی ورودی‌های ۴ بیتی کار می کند، یعنی یکی از انباشتگر و دیگری از حافظه، اعمال OR در بیتهای انفرادی در هر کدام برای تولید خروجی آن.
بنابراین، اگر انباشتگر حاوی ۰۰۰۱ و مکان حافظه حاوی ۱۰۰۰ باشد ، یک مقدار ۱۰۰۱ در انباشتگر نوشته خواهد شد.
همان گونه که در نمودار بالا نشان داده شده است احتمالا به هیچ وجه غیرمنتظره نیست که یاد بگیریم برای اجرای یک دستورالعمل NOT 4 بیتی فقط چهار معکوس کننده لازم است، در حالی که یک دستورالعمل OR 4 بیتی به چهار گیت OR نیاز دارد. توجه کنید که در مدار ما خطوط متقاطع به یکدیگر وصل نمی شوند. هنگامی که دو خط متصل می شوند، یک لکه سیاه در تقاطع نشان داده می شود.
چیزی که احتمال دارد عجیب بنظر برسد این است که بعضی از ورودی ها از انباشتگر می آیند و خروجی همچنین به انباشتگر می رود، و به این دلیل مهندسین برق آن را یکی از شرایط مسابقه می نامند. به عبارت دیگر، مدار با تلاش برای اضافه کردن داده ها از حافظه به نتیجه ای که پیش از این در انباشتگر نوشته شده است، حفظ خواهد شد.
برای پیشگیری از این امر، در ابتدا نتیجه باید در یک مکان حافظه موقت داخلی نوشته شود ، و سپس ، این در انباشتگر نوشته می شود. پس از این ما مدارهایی را مشاهده خواهیم کرد که بزای تولید مکانهای حافظه داخلی مانند انباشتگر از آنها استفاده می شود.

همه دستورالعملها به سادگی اینها نیستند.
برای توضیح این نکته، ما دستورالعمل ADD را بررسی خواهیم کرد.
همان گونه که در دبستان آموختیم ، در اعداد اعشاری، اگر نتیجه بزرگتر از ۹ باشد ، هر بار یک رقم به نزدیکترین عدد اضافه می شود. همان گونه که در رایانه ها استفاده می شود ، همین امر در مورد اعداد جفت روی می دهد، اما اکنون ضرورت دارد ، اگر نتیجه بیش از عدد ۱ باشد ، جمع ارقام ر به ستون بعدی منتقل کنیم. آن حاصل این است، برخلاف NOTهای ۴ بیتی، ORها، AND ها، و XORها، هر بیت نمی تواند به صورت مستقل کار کند. در عوض، مدار برای هر بیت، ورودی یک رقم نقلی را از رقم مجاور کوچکتر آن می گیرد و خروجی یک رقم نقلی را به رقم مجاور آن منتقل می کند.
در نمودار سمت چپ ، برای انجام دادن یک جمع ۴ بیتی، ۴ افزایشگر ۱ بیتی متصل شده اند.در این نمودار همچنین مداری برای یکی از آن افزایشگرها نشان داده شده است. توجه خواهید کرد که در افزایشگر ۴ بیتی که رقم نقلی در یکی از کمترین بیت است نه به چیزی متصل شده ، نه بامعنا ترین بیت را بعمل می آورد. در واقع ، آنها به سایر قسمتهای پردازنده متصل خواهند شد، اما ما در اینجا بر آن سرپوش خواهیم گذاشت.

دستور العمل رمزگشایی کردن
اکنون ما می توانیم درک کنیم که از مدار به تنهایی برای انجام برخی از دستورالعملهای ساده تر استفاده می شد، اما این کافی نیست. برای این که این مدارها بخشی از یک پردازنده کامل را شکل دهند، وسایلی مورد نیاز است تا نوع عملیات لازم را با توجه به دستورالعملی که در حال اجراست ، گزینش نماید. به هر حال، پیش از همه، ما به معرفی تعداد بیشتری از بلوکهای ساختمانی پایه مدارهای منطقی نیاز داریم.
نخستین مدار یک رمزگشا نامیده می شود و ساده ترین نمونه آن – رمزگشای ۲ تا ۴ – در سمت چپ نمودار صفحه ۹۸ نشان داده شده است.
دو ورودی را به صورت یک عددجفت، با ورودی ۱ که قابل توجهترین بیت و ورودی ۰ که کمترین بیت است را تصور کنید ، و فهمیدن این نکته باید آسان باشد که آن ، یک ۱ را فقط در یکی از چهار خروجی خود ، با توجه به مقدار دوتایی در ورودی‌های آن تولید می کند. بنابراین ، اگر ورودی۱ و ورودی ۰ به ترتیب ۰ و ۰ باشند، ۱ در خروجی ۱ است؛ ورودی‌های ۱ و ۰ در خروجی ۲ یک ۱ ارائه می دهند؛ در ضمن این که ۱ و ۱، یک ۱ در خروجی ۳ تولید می نمایند.
آن یک رمزگشای ۲ تا ۴ نامیده می شود چنان که یکی از چهار خروجی وابسته به مقدار ورودی ۲ بیتی آن را تولید می نماید. به شیوه مشابه، رمزگشاهای ۳ تا ۸ یا ۴ تا ۱۶ را می توان ساخت.
اکنون که ما چگونگی ساختن یکی از گیتهای منطقی را مشاهده نمودیم، رمزگشای ۲ تا ۴ را به صورت یک بلوک ساختمانی در جای درست خودش در نظر خواهیم گرفت و از آن برای عنصر منطقی پیچیده تری که در سمت راست همان نمودار صفحه ۹۸ نشان داده شده است استفاده می نماییم. مدار یک مولتی پلکسر نامیده می شود و آن مقدار (به عبارتی، ۰ یا ۱ ) را روی یکی از چهار ورودی با برچسب M0 تا M4 را با توجه به یک رقم جفت در ورودی ۱ و ورودی ۰ گزینش می نماید، و آن ورودی را به خروجی آن انتقال می دهد. پس توسعه دادن این مولتی پلکسر ۲ تا ۴ به یک مولتی پلکسر ۳ تا ۸ یا بزرگتر آسان است.
اکنون ما مولتی پلکسرهایی داریم، آن گام بزرگی نیست برای این که مداری ایجاد کند که بتواند عملیات درست را با توجه به دستورالعملی که اجرا می شود، انجام دهد، و نمودار بالا یکی از روشهای انجام آن را نشان می دهد.

پردازنده‌ها در در ماین کرافت
ماین کرافت به صورت ورژن دبجیتالی لگو توصیف شده، شباهتی که احتمال دارد درخواست بازی را برعهده داشته باشد. در حالی که بسیاری از بازیهای رایانه ای از هدف یا نتیجه منفردی برخوردارند، بازیگران ماین کرافت فقط به واسطه تصورشان در تصمیم گیری در باره آنچه ساخته می شود ، محدود می شوند. یک بازیگر ماین کرافت با کاربری اوهمگانیشا به صورت آشکاری تصور روشنی دارد به صورتی که او با ساختن یک پردازنده ۱۶ بیتی در ماین کرافت اثبات می شود. اگرچه آن از به اصطلاح خاکستر سنگ سرخ – جوهر خاصی که می تواند به صورت نوعی فیوز کند کار یا سیمی _ برای کنترل عملیاتی شامل جنبش مکانیکی پیستونها استفاده می کند، این تولید عجیب و غریب همه مدارهای منطقی و بیشتر که ما در اینجا پیاده می کنیم را کنترل می نماید.
اگرچه آن می تواند کار بسیار بیشتری از کار یک پردازنده دهه ۱۹۸۰ انجام دهد ، اما به طور ویژه ای سریع نیست. با میانگین یک دستورالعمل برای هر چهار ثانیه ، آن هزاران بار از قدیمی ترین رایانه کندتر است، چه برسد به معادلهای فوق سریع امروزی. به عبارت دیگر، عمل کردن در این مسیر پیاده رو به این مفهوم است که شما می توانید در واقع آنچه را که روی می دهد مشاهده کنید.
هر دستورالعمل مختلف یک شماره دوتایی منحصر به فرد دارد که آپ کد آن نامیده می شود بنابراین ، برای مثال، اگر ما فقط ۴ دستورالعمل داشتیم(در واقع احتمال ندارد هیچ پردازندهی این تعداد ناچیز دستورالعمل را داشته باشد اما این مثال برای این است که خواندن نمودار ما آسانتر باشد) و پس از این آپ کدهای ۲ بیتی احتمال دارد کد OR، ۰۰،کد NOT،۰۱ و غیره باشد.
اکنون اگر فرض کنیم که آپ کد دستورالعملی که درحال حاضر اجرا می شود در یکی دیگر از دستگاههای ثبت داخلی پردازنده به نام دستگاه ثبت دستورالعمل ذخیره شود، عملیات مدار باید به صورت کامل درک شود، حتی اگرچه خطوط متصل کننده احتمال دارد ذره ای باشد که به سختی بتوان آن را دنبال کرد. با توجه به مقدار آپ کد، داده ۴ بیتی که به انباشتگر می رود از هر یک از مدارهای OR,NOT, ADD, یاLOAD گزینش می شوند. شما مشاهده خواهید کرد که دستورالعمل NOT به این دلیل که به داده حاصل از حافظه متکی نیست فقط از انباشتگر ورودی دارد، اما دستورالعمل LOAD برعکس عمل می کند. در واقع چیزها پیچیده تر هستند زیرا، به جای نوشتن نتیجه ای در انباشتگر، دست کم یک دستورالعمل دیگری باید در حافظه نوشته شود و دستورالعمل‌های شاخه سبب مقداری برای نوشتن در عین حال دستگاه ثبت می شود که شمارنده برنامه نام دارد و حاوی آدرس دستورالعمل بعدی است که باید اجرا شود. با این وجود احتمال دارد تصور ما به این باور کشیده نشود که با مدارات در عین حال بیشتر خروجی‌های مدارهای مختلف را می توان گزینش کرد و با توجه به آپ کد به مقصد مناسبی هدایت نمود.

دستگاههای ثبت و زمان سنج ها
اگرچه ما مشاهده کردیم که در هر پردازنده دستگاههای متعددی نیاز است ، هنوز از نوع مدارهایی که برای ایجاد این سطوح از حافظه داخلی استفاده می شوند آگاهی نداریم. در واقع شیوه‌های بسیاری برای تولید حافظه وجود دارند، اما ما به یک شیوه ساده نظری می اندازیم که باز هم، خارج از گیتهای منطقی انجام می شود.
مدار نشان داده شده مخالف یک ضامن نوع D نامیده می شود و ، در ضمن پیگیری عملیات آن به آسانی سایر مدارهایی که ما مشاهده کردیم، نیست، آن در واقع یک ذخیره حافظه ۱ بیتی است ، همان گونه که اگر شما آن را در شبیه ساز سیدار جستجو کنید ( صفحه ۹۵ را مشاهده نمایید) آن را کشف خواهید نمود. آن، مقدار را روی ورودی آن یادآوری می کند، هنگامی که علامت زمان سنج از ۰ به ۱ می رود، و بدین ترتیب داده‌های ذخیره شده روی خروجی با برچسب Q ظاهر می شوند. یک دستگاه ثبت مانند انباشتگر در یک پردازنده ۴ بیتی به هیچ وجه پیچیده تر از چهار ضامن نوع D متصل به یکدیگر نیست به طوری که همه ۴ بیتها همزمان ذخیره می شوند. از آنجایی که داده ها در یک دستگاه ثبت فقط هنگامی ذخیره می شود که یک علامت از ۰ به ۱ می رود، خروجی بلافاصله از تغییرات ورودی تبعیت نمی کند اما ، در عوض، به یک سیگنال زمان بندی وابسته است. در واقع ما پیش از این نمونه ای از دلایل ضرورت این امر را دریافتیم. برای پیشگیری از یک به اصطلاح شرط مسابقه، خروجی دستورالعملهای پردازنده را نمی توان بلافاصله در دستگاه ثبت نوشت اما باید در یک دستگاه ثبت موقت نوشته شود و سپس، بعدا در یک زمان کوتاه، مقدار به انباشتگر منتقل می شود. شمارنده برنامه نمونه دیگری است که باید به صورت دوره ای افزایش یابد، بنابراین به محض این که دستور العمل پیشین اجرا شده باشد می توان دستورالعمل بعدی را از حافظه بیرون کشید. مدارهایی که عمل می کنند چون وضعیت یک علامت برمبنای زمان سنج پردازنده تغییر می کند که آخرین قطعه پازلی است که ما قصد داریم در باره آن تحقیق کنیم. در ساده ترین پردازندهها زمان سنج به صورت خارجی در مادربرد تولید می شود و یک علامت موجی چهارگوش تولید می کند که به صورت دوره ای بین۰ و ۱ تلنگری می زند، سرعتی که بسامد زمان سنج می شود. در حالی که زمان سنج اصلی را می توان OFF-CHIP تولید کرد، اگرچه، پردازنده معمولا به بیرون کشیدن علائم مختلف داخلی از زمان سنج نیاز دارد.برای مثال، احتمال دارد طراحی پردازنده ایجاب کند که دستورالعملی از حافظه بیرون کشیده شود، سپس رمزگشایی، اجرا و سرانجام نتیجه در انباشتگر یا حافظه نوشته شود. این بدان مفهوم است که برای اجرای کامل یک دستورالعمل چهار چرخش زمان سنج لازم است اما پردازنده به بدست آوردن چهار علامت زمان بندی داخلی نیاز دارد تا هر مرحله از عملیات را در توالی صحیح آن آغاز کند.
ما هنوز قصد نداریم نمودار مدار دیگری ارائه دهیم ، اما همچنین می توان از ضامن نوع D برای تولید یکی از چهار علامتی استفاده کرد که وضعیت را به توالی در هر تیک از زمان سنج سیستم تغییر می دهد. همه آنچه مورد نیاز است چهار ضامن از نوع D با خروجی Q است که هر یک به ورودیD مجاور و خروجی چهارمین حلقه پشت ورودی نخستین متصل شده اند . این شمارنده یک حلقه نامیده می شود و ، در مدت معینی همان گونه که شما فقط یکی از ضامن‌های از نوع D را تنظیم می کنید که در وضعیت ۱ قرار بگیرد زمانی که پردازنده برای نخستین بار روشن می شود ( که مسلما شدت برق بیشتری از یک بیت لازم است) ، هر بار که ساعت سیستم از ۰ به ۱ بچرخد آن ۱ به دور حلقه حرکت می کند، و بدین ترتیب یک ۱ فقط در یکی از خروجی‌های آن در هر زمان فراهم می شود.

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

برای انجام آن راه سختی در پیش است
اگرچه، خوشبختانه این مقاله از چگونگی عملکرد یک پردازنده شما را آگاه می کند، اما ما هنوز به دلیل عدم برخورداری از یک مدار کامل در حال کار، راهی طولانی در پیش داریم. در عوض، «بیل بازبی»، آزمایشگر آماتور یک پردازنده ۸ بیتی کامل به نام ماژیک-۱ طراحی کرده است. علاوه بر این، همان گونه که شما می توانیددرسایت:
WWW.homebrewcpu.com
مشاهده نمایید او در واقع آن را در یک سخت افزار واقعی ساخته است. برای آزمایش، این سایت به وسیله پردازنده ساخت خانه بازبی هدایت می شود و به شما فرصت می دهد برخی از بازیهای دهه ۱۹۸۰ را بیازمایید. این کاملا مناسب است چرا که ماژیک-۱ که به وسیله پردازنده Zilog Z80 الهام شده بود ، به صورت گسترده ای در رایانه‌های خانگی آن زمان استفاده می شد.
ما برای این که بفهمیم که چرا هر کسی وسوسه می شود در چنین تعهد عظیمی درگیر شود از بازبی پرسیدیم انگیزه او از این کاوش چه بوده است. بدیهی ترین پرسش این است که چرا هرکسی درگیر شدن در چنین تعهد عظیمی را برمی گزیند. نکته جالب این است که پاسخ وی تا حدودی استدلالی چرخشی بود.
او به ما گفت: «من ماژیک-۱ را ساختم زیرا نمی دانستم چگونه ماژیک-۱ را بسازم»’ من مرد نرم افزار هستم و احساس می کردم در واقع ، آن چنان که باید، چیز چندانی در باره چگونگی عملکرد CPU ها نمی دانم. فکر کردم ساختن یکCPU کوچولوی ۴ بیتی – چیزی که در واقع بتوان در یک یا دو پایان هفته انجام داد- مفید خواهد بود. من برخی از کتابهای مربوط به عملیات CPU را خواندم و از ساده و سطح پایین بودن آنها شگفت زده شدم.»
در واقع، بازبی در پایان ساختمان یک طرح ۸ بیتی را ساخت زیرا او چیزی قابل تر از یک بیت می خواست و آن را با استفاده از ۷۴ سری از تراشه‌های منطقی ساخت که بلوکهای ساختمانی مبنایی مانند گیتهای منطقی، رمز گذارها، رمزگشاها، مولتی پلکسرها و مشابه آنها را فراهم می کردند. وی اقرار کرد: « این امور باعث شد که پروژه به طرحی عظیم تبدیل شود».

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

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

It is main inner container footer text