يكي از سادهترين شيوههاي مورد استفاده براي انجام افزايش پارالليسم اين است كه اولين مراحل fetching و decoding دستوري را پيش از اينكه اجراي دستور قبلي تمام شود، شروع كنيم. اين روش سادهترين فرم يك تكنيك بنام instruction pipelining است و در تقريباً تمام سي پي يوهاي عمومي جديد استفاده ميشود. پايپ لاينينگ، با شكستن مسير دستوري و تبديل ان به مراحل جداگانه، باعث ميشود تا در هر زمان بيش از يك دستور اجرا شود. اين جدا كردن را ميتوان با خط مونتاژ مقايسه كرد كه در آن يك دستور در هر مرحله كاملتر ميشود تا اينكه كامل شود.
با اين وجود pipelining ممكن است موقعيتي را بوجود آورد كه در آن يافتههاي عمل قبلي براي كامل كردن عمل بعدي لازم است. اين وضعيت را معمولاً آشفتگي ناشي از وابستگي مينامند. براي جلوگيري از اين وضعيت، بايد توجه بيشتري شود تا در صورت رخ دادن اين شرايط بخشي از خط توليد دستوري را به تأخير اندازيم. بطور طبيعي برآورده كردن اين شرايط نيازمند مدارهايي اضافهاست، بنابراين پردازندههاي pipelined پيچيدهتر از انواع ساب اسكيلر هستند (البته نه خيلي چشمگير). يك پردازندهٔ pipelined ميتواند بسيار نزديك به حد اسكيلر شود، در اين شرايط تنها مانع موجود stallها (دستوري كه بيش از يك چرخهٔ ساعتي در يك مرحله طول ميكشد) هستند. ارتقاء بيشتر در مورد ايدهٔ instruction pipelining منجر به ايجاد روشي شدهاست كه زمان خالي اجزاي سي پي يو را حتي به ميزان بيشتري كاهش ميدهد. طراحيهايي كه گفته ميشود سوپراسكيلر هستند شامل يك خط ايجاد(pipeline) دستور طولاني و واحدهاي اجرايي مشابه متعدد هستند. در يك خط ايجاد سوپرسكيلر دستورهاي متعددي خوانده شده و به dispatcher (توزيع گر) ميروند، توزيع گر تصميم ميگيرد كه آيا دستورها مذكور ميتوانند بطور موازي (همزمان) اجرا شوند يا نه. در صورتي كه پاسخ مثبت باشد، دستورها مذكور به واحدهاي اجرايي موجود ارسال (dispatch) ميشوند. اين كار باعث ميشود تا چندين دستور بهطور همزمان اجرا شوند. بهطور كلي هرقدر يك سي پي يوي سوپرسكيلر بتواند دستورها بيشتري را بطور همزمان به واحدهاي اجرايي در حال انتظار ارسال (dispatch) كند، دستورها بيشتري در يك سيكل مشخص اجرا ميشوند.
توصيفي كه از عملكرد پايهاي يك سي پي يو در بخش قبلي شد، سادهترين فرمي است كه يك سي پي يو ميتواند داشته باشد. اين نوع از سي پي يو كه معمولاً آن را ساب اسكيلر مينامند، يك دستور را روي يك يا دو جزو اطلاعاتي، در يك زمان اجرا ميكند. اين فرايند موجب يك ناكارآمدي ذاتي در سي پي يوهاي ساب اسكيلر ميشود. از آنجايي كه فقط يك دستور در يك زمان اجرا ميشود، كل سي پي يو بايد منتظر بماند تا آن دستور كامل شود تا بتواند به دستور بعدي برود. در نتيجه سي پي يوهاي ساب اسكيلر در موارد دستوري كه بيش از يك پالس ساعت (چرخهٔ ساعتي) براي اجرا شدن كامل طول ميكشند، معلق ميماند. حتي اضافه كردن يك واحد اجرايي ديگر بهبود زيادي روي عملكرد ندارد، و در اين حالت به جاي اينكه يك مسير معلق باشد، دو مسير معلق ميماند و تعداد ترانزيستورهاي بلااستفاده افزايش مييابد. اين طراحي، كه در آن منابع اجرايي سي پي يو ميتواند فقط يك دستور در يك زمان اجرا كند، قادر خواهد بود تا فقط احتمالاً به عملكردي در حد اسكيلر (يك دستور در يك clock) برسد. با اين وجود عملكرد آن تقريباً هميشه ساب اسكيلر (كمتر از يك دستور در يك چرخه) است.
تلاش براي رسيدن به عملكردي در حد اسكيلر يا بهتر از آن منجر به طيفي از روشهاي طراحي شد كه باعث ميشود تا سي پي يو كمتر به صورت خطي و بيشتر به صورت موازي عمل كند. در هنگام استفاده از ترم پارالليسم براي سي پي يوها، دو اصطلاح بطور كلي براي طبقهبندي اين تكنيكهاي طراحي استفاده ميشود. پارالليسم در سطح دستوري (ILP) كه هدف آن افزايش سرعت اجراي دستورها در داخل يك سي پي يو است (يا به عبارتي افزايش استفاده از منابع اجرايي روي همان چيپ (on-die))، و پارالليسم در سطح thread كه هدف آن افزايش تعداد threadهايي است (بطور مؤثر برنامههاي جداگانه) كه يك سي پي يو ميتواند بطور همزمان اجرا كند. هر روش با روش ديگر از نظر نحوهٔ اجرا و نيز تأثير نسبي آنها در افزايش عملكرد سي پي يو براي يك برنامه متفاوت است.
اكثر پردازندهها و در حقيقت اكثر دستگاههايي كه با منطق پالسي و تناوبي كار ميكنند به صورت طبيعي بايد سنكرون يا همزمان باشند. اين بدان معناست كه آنها به منظور همزمان سازي سيگنالها طراحي و ساخته شدهاند. اين سيگنالها به عنوان سيگنال ساعت (پالس ساعت) شناخته ميشوند و معمولاً به صورت يك موج مربعي پريوديك (متناوب) ميباشند. براي محاسبه بيشترين زماني كه سيگنال قادر به حركت از قسمتهاي مختلف مداري پردازندهاست، طراحان يك دوره تناوب مناسب براي پالس ساعت انتخاب ميكنند. اين دوره تناوب بايد از مقدار زماني كه براي حركت سيگنال يا انتشار سيگنال در بدترين شرايط ممكن صرف ميشود بيشتر باشد. براي تنظيم دوره تناوب بايد پردازندهها بايد مطابق حساسيت به لبههاي پايين رونده يا بالا رونده حركت سيگنال در بدترين شرايط تأخير طراحي و ساخته شوند. در واقع اين حالت هم از چشمانداز طراحي و هم از نظر ميزان اجزاي تشكيل دهنده يك مزيت ويژه در سادهسازي پردازندهها محسوب ميشود. اگرچه معايبي نيز دارد، از جمله اينكه پردازنده بايد منتظر المانهاي كندتر بماند، حتي اگر قسمتهايي از آن سريع عمل كنند. اين محدوديت به مقدار زيادي توسط روشهاي گوناگون افزايش قدرت موازي سازي (انجام كارها به صورت همزمان) پردازندهها قابل جبران است. پالش ساعت شامل يك لبه بالا روند و يك لبه پايين رونده است كه اين تغيير حالت با تغيير ولتاژ صورت ميپذيرد.
روشي كه يك پردازنده از طريق آن اعداد را نمايش ميدهد يك روش انتخابي در طراحي است كه البته در بسياري از راههاي اصولي اثر گذار است. در برخي از كامپيوترهاي ديجيتالي اخير از يك مدل الكترونيكي بر پايه سيستم شمارش دسيمال (مبناي ده) براي نمايش اعداد استفاده شدهاست. برخي ديگر از كامپيوترها از يك سيستم نامتعارف شمارشي مانند سيستم سه تايي (مبناي سه) استفاده ميكنند. در حال حاضر تمامي پردازندههاي پيشرفته اعداد را به صورت دودويي (مبناي دو) نمايش ميدهند كه در آن هر عدد به وسيله چندين كميت فيزيكي دو ارزشي مانند ولتاژ بالا و پايين نمايش داده ميشوند.
علت نمايش دهي از طريق اعداد حجم كم و دقت بالا در اعدادي است كه پردازشگر ميتواند نمايش دهد. در حالت دودويي پردازندهها، يك بيت به يك مكان مشخص در پردازنده اطلاق ميشود كه پردازنده با آن به صورت مستقيم در ارتباط است. ارزش بيت (مكانهاي شمارشي) يك پردازنده كه براي نمايش اعداد بكار برده ميشود «بزرگي كلمه»، «پهناي بيت»، «پهناي گذرگاه اطلاعات» يا «رقم صحيح» ناميده ميشود؛ كه البته اين اعداد گاهي در بين بخشهاي مختلف پردازندههاي كاملاً يكسان نيز متفاوت است. براي مثال يك پردازنده ۸ بيتي به محدودهاي از اعداد دسترسي دارد كه ميتواند با هشت رقم دودويي (هر رقم دو مقدار ميتواند داشته باشد) ۲ يا ۲۵۶ عدد گسسته نمايش داده شود. نتيجاتا مقدار صحيح اعداد باعث ميشود كه سختافزار در محدودهاي از اعداد صحيح كه قابل اجرا براي نرمافزار باشد محدود شود و بدين وسيله توسط پردازنده مورد بهرهبرداري قرار گيرد.
مفهوم اساسي يك سي پي يو به صورت زير است: در طراحي يك سي پي يو يك ليست از عمليات بنام مجموعهٔ دستوري به صورت ذاتي وجود دارد كه سي پي يو آنها را انجام ميدهد. چنين عملياتي ممكن است شامل جمع كردن يا تفريق كردن دو عدد، مقايسهٔ اعداد يا پرش به بخشي ديگر از يك برنامه باشد. هركدام از اين عمليات پايهاي توسط توالي خاصي از بيتها نمايش داده ميشود كه اين توالي براي چنين عمليات خاصي اپكد نام دارد. فرستادن يك اپكد خاص به يك سي پي يو باعث ميشود تا سي پي يو عملي را كه توسط اپكد مذكور نمايش داده ميشود انجام دهد. براي اجراي يك دستور در يك برنامهٔ كامپيوتري، سي پي يو از اپكد دستور مذكور و نيز نشانوندهاي آن (براي مثال، در مورد يك عمل جمع، دو عددي كه قرار است با هم جمع شوند) استفاده ميكند. عمل رياضي واقعي براي هر دستور توسط يك زيرواحد از سي پي يو به نام واحد محاسبه و منطق (ALU)انجام ميگيرد. يك سي پي يو علاوه بر اينكه از ALU خودش براي انجام اعمال استفاده ميكند، اعمال ديگري نظير: خواندن دستور بعدي از حافظه، خواندن اطلاعات مشخص شده به صورت نشانوند از حافظه و نوشتن يافتههاي حاصل در حافظه را نيز به عهده دارد. در بسياري از طراحيهاي سي پي يو، يك مجموعهٔ دستوري مشخصا بين اعمالي كه اطلاعات را از حافظه بارگيري ميكنند و اعمال رياضي افتراق ميدهد. در اين مورد اطلاعات بارگيري شده از حافظه در رجيستري ذخيره ميشود و يك عمل رياضياتي هيچ گونه نشانوندي نميگيرد بلكه بسادگي عمل محاسباتي مذكور را روي اطلاعات موجود در رجيستريها انجام داده و آن را در يك رجيستر جديد مينويسد.
كاركرد بنيادي بيشتر ريزپردازندهها عليرغم شكل فيزيكي كه دارند، اجراي ترتيبي برنامههاي ذخيره شده را موجب ميشود. بحث در اين مقوله نتيجه پيروي از قانون رايج نيومن را به همراه خواهد داشت. برنامه توسط يك سري از اعداد كه در بخشي از حافظه ذخيره شدهاند نمايش داده ميشود. چهار مرحله كه تقريباً تمامي ريزپردازندههايي كه از قانون فون نيومن در ساختارشان استفاده ميكنند از آن پيروي ميكنند عبارتاند از: فراخواني، رمزگشايي، اجرا و بازگشت براي نوشتن مجدد.
پيدايش ريز پردازندهها در سال ۱۹۷۰ بهطور قابل توجهي در طراحي و پيادهسازي پردازندهها تأثير گذار بود. از زمان ابداع اولين ريزپردازنده (اينتل۴۰۰۴)در سال ۱۹۷۰ و اولين بهرهبرداري گسترده از ريزپردازنده اينتل ۸۰۸۰ در سال ۱۹۷۴، اين روند رو به رشد ريزپردازندهها از ديگر روشهاي پيادهسازي واحدهاي پردازش مركزي (CPU) پيشي گرفت، كارخانجات توليد ابر كامپيوترها و كامپيوترهاي شخصي در آن زمان اقدام به توليد مدارات مجتمع با برنامهريزي پيشرفته نمودند تا بتوانند معماري قديمي كامپيوترهاي خود را ارتقا دهند و در نهايت ريز پردازندهاي سازگار با مجموعه دستورالعملها ي خود توليد كردند كه با سختافزار و نرمافزارهاي قديمي نيز سازگار بودند. با دستيابي به چنين موفقيت بزرگي امروزه در تمامي كامپيوترهاي شخصي CPUها منحصراً از ريز پردازندهها استفاده ميكنند.
پيچيدگي طراحي پردازندهها همزمان با افزايش سريع فناوريهاي متنوع كه ساختارهاي كوچكتر و قابل اطمينان تري را در وسايل الكترونيك باعث ميشد، افزايش يافت. اولين موفقيت با ظهور اولين ترانزيستورها حاصل شد. پردازندههاي ترانزيستوري در طول دهههاي ۵۰ و ۶۰ ميلادي زمان زيادي نبود كه اختراع شده بود و اين در حالي بود كه آنها بسيار حجيم، غيرقابل اعتماد و داراي المانهاي سوئيچينگ شكننده مانند لامپهاي خلأ و رلههاي الكتريكي بودند. با چنين پيشرفتي پردازندههايي با پيچيدگي و قابليت اعتماد بيشتري بر روي يك يا چندين برد مدار چاپي كه شامل قسمتهاي تفكيك شده بودند ساخته شدند.
رلهها و لامپهاي خلأ كه عموماً به عنوان عناصر سوئيچينگ مورد استفاده قرار ميگرفتند. يك كامپيوتر مفيد به هزاران يا صدها هزار از اين المانهاي سوئيچينگ نياز دارد و سرعت كلي سيستم به سرعت اين سوئيچها وابسته است. كامپيوترهاي لامپ خلأ نزير EDVAC تقريباً ۸ ساعت بدون خرابي كار ميكردند در حالي كه كامپيوترهاي رلهاي مانند طراحي هاروارد خيلي زودتر با مشكل مواجه ميشدند. در نهايت CPUهاي بر پايه لامپ خلأ به دليل سرعت قابل توجه و قابليت اطمينان بيشتر برهم نوعان خود پيروز شدند. اغلب CPUهاي سنكرون نسبت به CPUهاي مدرن با فركانس كلاك كمتري در حد ۱۰۰Hz تا ۴ MHz كار ميكردند كه اين محدوديت به دليل سرعت كم المانهاي سوئيچ بود. سختافزار - واحد پردازش مركزي - CPU (قسمت اول) vida - جمعه، ۲۰ مهر ماه، ۱۳۸۶ ۲۳:۴۲:۴۳ موضوع: واحد پردازش مركزي - CPU (قسمت اول) CPU و اجزاي داخلي آن: CPU يا واحد پردازش مركزي (Central Process Unit)، بخشي از سيستمهاي پردازشي و رايانهها است كه وظيفهٔ آن پردازش اطلاعات، با توجه به برنامهٔ در نظر گرفته شده براي آن است. يك CPU از يك چيپ كه متشكل از تعداد زيادي ترانزيستور است (بين چند هزار تا چند ميليون كه بستگي به مشخصات CPU دارد) تشكيل شدهاست. بلوك دياگرام داخلي يك CPU بهطور خلاصه در شكل زير نشان داده شدهاست: ALU واحد محاسبات و منطق (Arithmetic Logic Unit) است كه وظيفهٔ آن انجام عمليات منطقي نظير جمع، تفريق و … و همچنين عملياتي نظير AND , OR و … بر روي دادهها است. يك ALU را بهطور خلاصه ميتوان يك جمعكننده كامل در نظر گرفت؛ البته با پيچيدگيهاي خاص خود. Registerها وظيفهٔ نگهداري اطلاعات را به صورت موقت در داخل CPU بر عهده دارند كه اين اطلاعات ميتواند اطلاعات دريافتي از درگاههاي ورودي باشد (پورتها) يا اطلاعات حاصل از انجام عمليات منطقي. البته معمولاً يك رجيستر مخصوص كه به آن انباره يا آكامالاتور نيز گفته ميشود وجود دارد كه در اكثر عمليات منطقي شركت ميكند. واحد Memory Interface وظيفهٔ ايجاد ارتباط با حافظهٔ جانبي را بر عهده دارد كه عمل خواندن يا نوشتن از حافظه و انتقال اطلاعات بين CPU و حافظه نيز از وظايف مربوط به اين بخش است. واحد Instruction Fetcher اطلاعات مربوط به دستور العملهاي اجرايي را از واحد حافظه دريافت و به واحد رمز گشايي (Instruction Decoder) تحويل ميدهد. به عبارت ديگر وظيفهٔ بخش Instruction Fetcher، واكشي كدهاي دستور از حافظه با كمك بخش Memory Interface و اعمال آن به بخش رمزگشايي است. واحد رمزگشايي نيز پس از دريافت كد مربوط به دستور مورد نظر، آن را رمز گشايي و عمل مربوط به آن را انجام ميدهد. فاكتورهاي مهم در يك CPU: هر CPU با يك سري از خصوصيات و فاكتورهايي در ساختار طراحي و توليد خود شناخته ميشود كه مهمترين فاكتورها عبارتند از: - پهناي گذرگاه داده: اين خصوصيات به مشخصات ALU و رجيسترهاي مرتبط با آن بستگي دارد و بيانگر اين است كه اطلاعات پردازش شده توسط CPU چند بيتي است. به عنوان نمونه يك CPU كه گذرگاه دادهٔ آن ۱۶ بيتي است، توانايي پردازش اطلاعات و دستورها را به صورت ۱۶ بيتي دارد و به همين دليل به آن پردازندهٔ ۱۶ بيتي اطلاق ميشود. - پهناي گذرگاه آدرس: همانطور كه در شكل نيز نشان داده شد، اطلاعات و همچنين دستورالعملهاي اجرايي در واحدهاي خارجي از CPU نگهداري ميشوند. توسط گذرگاه آدرس ميتوان حافظهها و پورتهاي خروجي را آدرس دهي كرد تا به اين وسيله بتوان به آنها نظم بخشيد و با آنها ارتباط برقرار كرد. پهناي گذرگاه آدرس، نشان دهندهٔ توانايي CPU در آدرس دهي حافظهها يا پورتهاي خارجي ميباشد. به عنوان نمونه يك CPU با گذرگاه ۱۶ بيتي، توانايي آدرس دهي ۶۵۵۳۶ خانه از حافظهٔ خارجي را دارد. - فركانس كاري: فركانس كاري يك CPU بيانگر سرعت كاري آن است و هر ميزان بالاتر باشد، CPU سريعتر عمل ميكند و اطلاعات را پردازش ميكند. در حال حاضر CPUهاي ساخته شده تا محدودهٔ سرعت چند ميليون دستور در ثانيه به پردازش اطلاعات ميپردازند. - شركت سازنده: كه بيانگر اين است كه CPU توسط كدام كمپاني ساخته شدهاست و به كدام خانواده از CPUها تعلق دارد كه معروفترين آنها عبارتند از Intel ,IBM , AMD , Syrex , Motorola, IDT, NIC , IIT. البته طراحي و خصوصيات يك CPU به شرايطي كه قرار است در ان به كار گرفته شود بستگي دارد و سرعت و … با توجه به اين موضوع تعيين ميشود. به عنوان مثال CPUهايي كه بايد در ابر كامپيوترها به كار گرفته ميشوند با CPUهايي كه در سيستمهاي كنترلي كوچك به كار گرفته ميشوند داراي تفاوتهاي بسيار در سطح قدرت پردازش هستند، اما هر كدام با توجه به شرايط كاري خود طراحي شدهاند. بر همين اساس در سيستمهاي پردازشي كوچك به جاي پردازندهها، از ريز پردازندهها استفاده ميشود كه داراي سرعت، حجم و امكانات كمتري نسبت به پردازندههاي معمول هستند، اما با اين حال به خوبي از عهدهٔ كنترل سيستمهاي كوچك بر مي ايند و در ساخت اينگونه سيستمها به كارگيري آنها بسيار با صرفه تر و آسانتر از به كارگيري پردازندهها است. نمونهاي از اين ريز پردازندهها، Z80 و ۸۰۸۶ هستند كه از نظر ساختاري بسيار منطبق با مطالب گفته شده هستند. بهطور مثال بلوك دياگرام داخلي ريز پردازندهٔ Z80 در شكل زير نشان داده شدهاست: نكته: موارد گفته شده تنها بررسي يك CPU به صورت كلي بود، اما در مواردي ممكن است كه اجزاي داخلي CPU، بيش از موارد گفته شده باشد كه بستگي به نوع و طراحي CPU دارد. حافظهٔ كش يكي از اين موارد است كه امروزه در اكثر CPUها كه براي اعمال پردازشي نسبتاً سنگين طراحي شدهاند، در حجمهاي مختلف قرار داده شدهاست.
سيپييو (به انگليسي: Central Processing Unit يا CPU) يا پردازنده (به انگليسي: Processor)، يكي از اجزاء رايانه ميباشد كه فرامين و اطلاعات را مورد پردازش قرار ميدهد. واحدهاي پردازش مركزي ويژگي پايهاي قابل برنامهريزي شدن را در رايانههاي ديجيتال فراهم ميكنند، و يكي از مهمترين اجزاء رايانهها هستند. يك پردازندهٔ مركزي، مداري يكپارچه ميباشد كه معمولاً به عنوان ريزپردازنده شناخته ميشود. امروزه عبارت CPU معمولاً براي ريزپردازندهها به كار ميرود.
عبارت «Central Processor Unit» (واحد پردازندهٔ مركزي) يك ردهٔ خاص از ماشين را معرفي ميكند كه ميتواند برنامههاي رايانه را اجرا كند. اين عبارت گسترده را ميتوان به راحتي به بسياري از رايانههايي كه بسيار قبلتر از عبارت "CPU" بوجود آمده بودند نيز تعميم داد. به هر حال اين عبارت و شروع استفاده از آن در صنعت رايانه، از اوايل سال ۱۹۶۰ رايج شد. شكل، طراحي و پيادهسازي پردازندهها نسبت به طراحي اوليه آنها تغيير كردهاست ولي عملگرهاي بنيادي آنها همچنان به همان شكل باقيماندهاست.
پردازندههاي اوليه به عنوان يك بخش از سامانهاي بزرگتر كه معمولاً يك نوع رايانهاست، داراي طراحي سفارشي بودند. اين روش گرانقيمت طراحي سفارشي پردازندهها براي يك بخش خاص، به شكل قابل توجهي، مسير توليد انبوه آن را كه براي اهداف زيادي قابل استفاده بود فراهم نمود. اين استانداردسازي روند قابل ملاحظهاي را در عصر مجزاي ابر رايانههاي ترانزيستوري و ريز كامپيوترها آغاز نمود و راه عمومي نمودن مدارات مجتمع(IC يا Integrated Circuit) را سرعت فراواني بخشيد. يك مدار مجتمع، امكان افزايش پيچيدگيها براي طراحي پردازندهها و ساختن آنها در مقياس كوچك را (در حد ميليمتر) امكانپذير ميسازد. هر دو فرايند (كوچك سازي و استانداردسازي پردازندهها)، حضور اين تجهيزات رقمي را در زندگي مدرن گسترش داد و آن را به فراتر از يك دستگاه خاص مانند رايانه تبديل كرد. ريزپردازندههاي جديد را در هر چيزي از خودروها گرفته تا تلفنهاي همراه و حتي اسباب بازيهاي كودكان ميتوان يافت.