آشنایی با پردازنده های چند هسته ای
پردازنده ها نقش اساسی در سرعت و کارایی کامپیوتر دارند. مغز اصلی یک کامپیوتر پردازنده آن محسوب میشود. شرکت های تولید کننده پردازنده های کامپیوتر از اولین روز تولید همیشه در صدد بالا بردن توان پردازنده های خود بوده اند.
پردازنده چند هستهای به چه معناست؟ یعنی تعدادی از این هستههای پردازشی (Core Processors) روی سطح یک Die قرار گیرند. توجه داشته باشید که سطح یک Die معمولا چیزی حدود 150 تا 180 میلیمتر مربع است. یعنی به اندازه یک سکه کوچک میباشد.
از حدود سال 1384 تا به امروز، پردازندهها دارای 2 یا تعداد بیشتری هسته پردازشی شدند. دقت داشته باشید که همیشه تعداد هستههای پردازشی زوج است، نه فرد!! البته در معدود دفعاتی دیده شده است که شرکت سازنده یکی از پردازندههای چهارهستهای خود را خاموش کرده است و به عنوان پردازندهای 3 هستهای وارد بازار کرده، اما همیشه یادتان باشد که پردازندهها تعداد هستههای زوج دارند.
در پردازنده های نسل قدیم ارتقا سرعت با افزایش فرکانس کاری پردازنده کار نسبتا ساده ای به نظر میرسد. اما این عمل باعث اتلاف زیادی گرما در پردازنده میشد و عمر این قطعه را کم میکرد. از این رو احتیاج به تکنولوژی جدیدی بود که با افزایش کارایی پردازنده از تولید گرمای اضافی در آن ها جلوگیری کند.
برای رفع این مشکل پردازنده های چند هسته ای شروع به شکل گرفتن کردند. به این شکل که در کنار پردازنده یک میکرو پروسسور دیگر نیز با ظرفیت حافظه Cash در سطح 1 و 2 وجود دارد.
حافظه Cash سطح 1 نزدیک به هسته اصلی پردازنده میباشد. و از سرعت بالاتر و ظرفیت کمتری برخوردار است.
حافظه Cash سطح 2 از ظرفیت بزرگتری برخوردار است ولی سرعت کمتری نسبت به حافظه Cash سطح 1 دارد. به عنوان مثال ذخیره کردن یک فایل Word در حافظه بزرگتر انجام میگیرد.
دو شرکت Intel و AMD از تولید کننده های اصلی پردازنده ها هستند. چند هسته کردن پردازنده ها باعث شده که بر مشکلات توان و دما در پردازنده ها بتوانند غلبه کنند. اما منسجم کردن حافظه های Cash سطح 1 و 2 نیز چالش بزرگی برای تولید پردازنده های چند هسته ای به شمار میاید.
اگر برنامه نویسان برنامه های خود را برای کار با این نوع پردازنده ها بهینه سازی نکنند عملا این نوع پردازنده ها کارایی خاصی را نخواهند داشت.
Intel تعداد زیادی پردازنده چند هسته ای متفاوت تولید میکند. پنتیوم D در کامپیوترهای رومیزی استفاده میشود. Core 2 Due هم در محیط لپ تاپ و هم در رومیزی، پردازنه Xeon در سرویس دهنده ها استفاده میشود.
AMD دارای طیف Althon برای کامپیوترهای رومیزی، Tution برای لپ تاپها و Opteron برای سرویس دهندهها و ایستگاه های کاری است. اگر چه Core 2 Due و Althon 64x2 هر دو برروی یک پایهاند ولی ساختارهای آنها بسیار متفاوت اند.
آشنایی با حافظه Cache
حافظه نهانگاهی یا Cache ، حافظه ای سریع درون پردازنده مرکزی است که جهت صرفه جویی در زمان مراجعه به حافظه اصلی بکار میرود.
زمانی که پردازنده مرکزی به مکانی در حافظه اصلی نیاز داشته باشد احتمالا در آینده نزدیک مجددا به آن محل دسترسی خواهد داشت که به این اصلی همجواری زمانی میگویند. همچنین اگر پردازنده مرکزی به مکانی در حافظه اصلی نیاز داشته باشد احتمالا در آینده نزدیک به مکانهای مجاور آن نیز نیاز خواهد داشت که به این اصل همجواری مکانی میگویند. بر این اساس حافظه نهانگاهی در زمان دسترسی به یک مکان حافظه مکانهای مجاور آن را نیز به درون پردازنده مرکزی میآورد تا در صورت نیاز سریعتر قابل دسترسی باشند و این اطلاعات را تا زمانی که مورد نیاز باشند در پردازنده مرکزی حفظ میکند.
چون با افزایش سرعت پردازنده مرکزی، پردازنده مرکزی زمان بیشتری را در حال انتظار پاسخ حافظه اصلی میگذراند، حجم حافظه نهانگاهی تاثیر زیادی در بهبود کارایی پردازنده مرکزی دارد. برای آن که حافظه نهانگاهی تاثیر مثبتی در کارایی سیستم داشته باشد میبایست جستجو درون آن در زمان بسیار کوتاهی انجام شود. تشخیص این که آیا داده مورد نیاز پردازنده مرکزی درون حافظه نهانگاهی هست یا نه بایست بسیار بسرعت انجام شود. به همین دلیل ساختار حافظه نهانگاهی کاملا با ساختار حافظه اصلی متفاوت است و بسیار پیچیده تر است و هرچه حجم حافظه نهانگاهی افزایش یابد این پیچیدگی نیز بیشتر میشود. به همین دلیل حافظه نهانگاهی بسیار گرانتر است و افزایش قیمت پردازنده با افزایش حجم حافظه نهانگاهی بسیار زیاد است.
حافظه نهان (Cache) چیست؟
اگر تاکنون یک کامپیوتر شخصی خریده باشید قطعا اصطلاح (Cache) را شنیده اید. کامپیوتر های مدرن دارای هر دو نوع کش های L1 و L2 حتی L3 هستند همچنین ممکن است از مقدار آن (سلرون، سلرون دی، فول) چیزهایی شنیده باشید این موضوع نشان میدهد که حافظه نهان یک فرایند مهم در علم کامپیوتر است که بروی هر کامپیوتری ظاهر می شود.
کاشه سازی یک فناوری مبتنی بر زیر سیستم حافظه کامپیوتر شما است. هدف اصلی یک کاشه شتاب دهی کامپیوتر شما و در عین حال پایین نگه داشتن قیمت آن است. کاشه سازی به شما امکان می دهد تا وظایف کامپیوتر خود را با سرعت بیشتری انجام دهید. برای درک ایده اصلی موجود در پشت یک سیستم کاشه اجازه دهید کار را با یک مثال فوق العاده ساده آغاز کنیم که برای نشان دادن مفاهیم کاشه سازی از یک کتابدار (پردازنده) استفاده می کند. اجازه بدهید یک کتابدار (پردازنده) را در پشت میزش تصور کنیم.او آنجا نشسته است تا کتبی که میخواهید.
را در اختیار شما قرار دهد برای ساده تر کردن وضعیت اجازه بدهید فرض کنیم که شما خودتان (کاربر پشت کامپیوتر) نمی توانید کتاب مورد نظر را بردارید شما باید کتاب مورد نظر خود برای مطالعه را از کتابدار (پردازنده) بخواهید تا وی آن را از یک مجموعه قفسه (یعنی بخش های مختلف پردازنده اعداد صفر و یک را ترجمه کند که این اعداد در RAM هستند) در سالن نگهداری کتابها (RAM) برای شما بیاورد ابتدا اجازه بدهید کار را با یک کتابدار فاقد کاشه آغاز کنیم.
اولین مشتری (اولین برنامه ایی که شما اجرا کرده اید) از راه میرسد او کتاب موبی دیک (یک برنامه مثل فتو شاپ) را در خواست میکند کتابدار (پردازنده) به سالن نگهداری کتاب (RAM) رفته و کتاب مورد نظر را برداشته به بخش مراجعه برگشته (یعنی ترجمه می کند و به مانیتور میفرستد) و کتاب را به مشتری می دهد بعدا مشتری برای باز گرداندن کتاب به کتابخانه بر می گردد (برنامه را می بندد) کتاب دار (پردازنده) کتاب مورد نظر را گرفته و آن را به سالن نگهداری بر می گرداند.
سپس کتابدار به بخش مراجعه باز گشته (یعنی منتظر اجرای فرمانهای بعدی شماست (حتی حرکت موس) و منتظر مشتری بعدی میماند فرض کنیم مشتری بعدی نیز کتاب موبی دیک را در خواست کند(یعنی دوباره برنامه فتوشاپ را اجرا کنیم) به این ترتیب کتابدار باید به سالن نگهداری(RAM) برگردد تا کتابی را که اخیرا با آن سرو کار داشته است را برداشته و به مشتری (کاربر) تحویل دهد.
در این مدل کتابدار (پردازنده) ناچار است برای آوردن هر کتاب (اجرای یک برنامه) یک چرخه کامل را طی نماید حتی کتاب های مشهوری که به دفعات در خواست شده است (یعنی برنامه هایی که به دفعات اجرا می شوند و بسته می شوند).
اجازه دهید یک کوله پشتی (حافظه نهان) را در اختیار کتابدار قرار دهیم تا بتواند 10 کتاب را در آن ذخیره کند (یعنی کتابدار دارای یک کاشه 10 کتابی است) او در این کوله پشتی حداکثر 10 عدد از کتابهایی را نگهداری می کند که مشتریان برگردانده اند اجازه دهید از مثال قبلی استفاده کنیم اما اینبار با کتابداری که به کاشه سازی جدید و بهبود یافته مجهز شده است.
روز آغاز میشود کوله پشتی کتابدار خالی است اولین مشتری از راه میرسد و موبی دیک را در خواست می کند جای تعجب نیست که کتابدار برای آوردن کتاب ناچار است به سالن نگهداری مراجعه کند او کتاب را به مشتری میدهد بعدا مشتری بازگشته و کتاب را به کتابدار می دهد کتابدار بجای مراجعه به سالن به سالن نگهداری کتاب را در کوله پشتی خود قرار میدهد یک مشتری از راه میرسد و باز هم کتاب موبی دیک را در خواست می کند کتابدار پیش از انکه به سالن نگهدار مراجعه کند بررسی می کند که آیا کتاب مورد نظر در کوله پشتی وی قرار دارد یا نه.
او کتاب مورد نظر را می یابد و تمام کاری که باید انجام دهد این است که آن را از کوله پشتی در آورد و به مشتری بدهد و کار به پایان می رسد.
اگر تا کنون برای خود کامپیوتری تهیه کرده باشید، واژه "Cache" برای شما آشنا خواهد بود. کامپیوترهای جدید دارای Cache از نوع L1 و L2 می باشند. شاید در هنگام خرید یک کامپیوتر از طرف دوستانتان توصیه هائی به شما شده باشد مثلا: "سعی کن از تراشه های Celeron استفاده نکنی چون دارای Cache نمی باشند!"
Cache یک مفهوم کامپیوتری است که بر روی هر نوع کامپیوتر با یک شکل خاص وجود دارد. حافظه های Cache، نرم افزارهای با قابلیت Cache هارد دیسک و صفحات Cache همه بنوعی از مفهوم Caching استفاده می نمایند. حافظه مجازی که توسط سیستم های عامل ارائه می گردد نیز از مفهوم فوق استفاده می نماید.
مبانی Caching
Caching یک تکنولوژی استفاده شده برای زیر سیستم های حافظه، در کامپیوتر است. مهمترین هدف یک Cache افزایش سرعت و عملکرد کامپیوتر بدون تحمیل هزینه های اضافی برای تهیه سیستم است. با استفاده از Cache عملیات کاربران با سرعت بیشتری انجام خواهد شد.
حافظه Cache چیست؟
فرض کنیم که شما هر روز به رستوران می روید. هر روز راس ساعت 5 بعد از ظهر سفارش غذا می دهید. هر روز 4 نوع غذا را به ترتیب خاص سفارش می دهید. راس ساعت 5 همبرگر سفارش می دهید، گارسون سفارش شما رو بررسی می کند، به آشپزخونه میرود، بعد از 1 دقیقه همبرگر را برای شما می آورد، شما همبرگر را خورده و سفارش سوسیس می دهید. مجددا سفارش توسط گارسون به آشپزخانه منتقل شده و بعد از یک دقیقه غذا آماده می شود. به همین ترتیب شما سه غذای دیگه را سفارش داده و برای هر غذا 1 دقیقه معطل میشوید. خوب شما هروز همین غذاها را سفارش داده و برای آماده شدن هر غذا 1 دقیقه معطل می شوید. گارسون با خودش فکر می کند که برای اینکه هم خودش کمتر کار کند و هم شما کمتر معطل شوید، 1 میز دیگر آماده از غذاهای شما را تهیه کند و بلافاصله بعد از سفارش شما غذا را روی میزتان قرار دهد.
در اینجا گارسون "باس"، آشپزخانه "رم"، و میز آماده "کش" در نظر گرفته می شوند. بعد از چند روز شما همبرگر را میخورید، طبق عادت گارسون برای شما سوسیس می آورد، اما شما میگویید که امروز پیتزا می خواهم! اینجا گارسون مجددا مجبور میشود که 1 دقیقه شما را در انتظار نگه دارد تا پیتزا را برایتان بیاورد. در اینجا گارسون میز دومی را تهیه می کند که بر اساس انتخاب های دوم شما چیده شده است. بدین ترتیب شما اگر غذایی را سفارش دهید که در میز اول نباشد، اما در میز دوم باشد بلافاصله غذا را میل می کنید و معطل نمی شوید. میز دوم در اینجا کش سطح دو یا "Cache L2" است. اصطلاحی که امروزه در رابطه با فول کش یا هالف کش گفته میشود همین کش سطح 2 است. اصول کار پردازنده بدین صورت که پیش بینی دستورات بعدی را کرده و جواب دستورات را در حافظه ی نهان یا همون کش قرار میدهد. جالب است که بدانید پردازنده 90% دستورات بعدی را درست حدس میزند و اگر حدس پردازنده غلط از کار در بیاد مجبور است که به حافظه ی رم مراجعه نماید که همین مراجعه باعث تاخیر زیادی در کار پردازنده میشود. نکته قابل گفتن این است که این حافظه بسیار گران قیمت است و به صرفه نیست که برای بالا بردن سرعت کامپیوتر حافظه کش تهیه کنید (مجبورید پردازنده را هم عوض کنید!).
کتابداری را در نظر بگیرید که در یک کتابخانه مسئول تحویل کتاب به متقاضیان است. فرض کنید در سیستم فوق (درخواست و تحویل کتاب) از مفهوم Cache استفاده نمی گردد. اولین متقاصی کتابی را درخواست می نماید(فرض شده است که متقاضی خود نمی تواند مستقیما" کتاب مورد نظر را از قفسه مربوطه،بردارد)، کتابدار، کتاب مورد نظر را از قفسه مربوطه پیدا و در ادامه آن را تحویل متقاضی می نماید. متقاضی پس از ساعاتی مراجعه و کتاب را تحویل می دهد. کتابدار، کتاب تحویلی را مجددا" در قفسه مربوطه قرار می دهد. پس از لحظاتی یک متقاضی دیگر مراجعه و همان کتاب قبلی را درخواست می نماید، کتابدار مجددا" می بایست به بخش مربوطه در کتابخانه مراجعه و پس از بازیابی کتاب، آن را در اختیار متقاضی دوم قرار دهد.همانگونه که ملاحظه می گردد، کتابدار مکلف است برای تحویل هر کتاب (ولو کتاب هائی که فرکانس استفاده از آنان توسط متقاضیان زیاد باشد) به بخش مربوطه مراجعه و پس از یافتن کتاب آن را در اختیار متقاضیان قرار دهد. آیا روشی وجود دارد که با استناد به آن بتوان عملکرد و کارآئی کتابدار را بهبود بخشید ؟
در پاسخ به سوال فوق می توان با ایجاد یک سیستم Cache برای کتابدار، کارآئی آن را افزایش داد. فرض کنید بخشی را با ظرفیت حداکثر ده کتاب در مجاورت (نزدیکی) کتابدار آماده نمائیم. کتاب هائی که توسط متقاضیان برگردانده می شود، در بخش فوق ذخیره خواهند شد. مثال فوق را با در نظر گرفتن سیستم Cache ایجاد شده برای کتابدار مجددا" دنبال می نمائیم. در ابتدای فعالیت روزانه، بخش Cache خالی بوده و هنوز در آن کتابی قرار نگرفته است. اولین متفقاصی مراجعه و کتابی را درخواست می نماید. کتابدار می بایست به بخش مربوطه مراجعه و کتاب را از قفسه مربوطه براشته و در اختیار متقاضی قرار دهد. متقاضی پس از تحویل کتاب، چند ساعت بعد مراجعه و کتاب را تجویل کتابدار خواهد داد. کتابدار، کتاب تحویلی را در بخش پیش بینی شده برای Cache قرار می دهد. لحظاتی بعد متقاضی دیگر مراجعه و درخواست همان کتاب را می نماید.کتابدار در ابتدا بخش مربوط به Cache را جستجو و در صورت یافتن کتاب، آن را به متقاضی تحویل خواهد داد. در این حالت ضرورتی به مراجعه کتابدار به بخش و قفسه های مربوطه نخواهد بود. در روش فوق زمان تحویل کتاب به متقاضی بهبود چشمگیری پیدا خواهد کرد. در صورتیکه کتاب درخواستی توسط متقاضی در بخش Cache کتابخانه نباشد، چه اتفاقی خواهد افتاد؟ در ابتدا مدت زمانی صرف خواهد شد که کتابدار به این اطمینان برسد که کتاب درخواستی در بخش Cache موجود نمی باشد (جستجو) یکی از چالش های اصلی در رابطه با طراحی Cache به حداقل رساندن زمان جستجو در Cache است.سخت افزارهای جدید، زمان فوق را به صفر نزدیک کرده اند. پس از حصول اطمینان از عدم وجود کتاب در بخش Cache، کتابدار می بایست با مراجعه به بخش مربوطه آن را انتخاب و در ادامه در اختیار متقاضی قرار دهد.
با توجه به دو مثال فوق، چندین نکته مهم در رابطه با Cache استنباط می گردد:
- تکنولوژی Cache، استفاده از حافظه های سریع ولی کوچک، بمنظور افزایش سرعت یک حافظه کند ولی با حجم بالا است
- زمانیکه از Cache استفاده می گردد، در ابتدا می بایست محتویات آن بمنظور یافتن اطلاعات مورد نظر بررسی گردد. فرآیند فوق را Cache hit می گویند. در صورتیکه اطلاعات مورد نظر در Cache موجود نباشند (Cache miss)، کامپیوتر می بایست در انتظار تامین داده های خود از حافظه اصلی سیستم باشد (حافظه ای کند ولی با حجم بالا)
- اندازه Cache محدود بوده وسعی می گردد که ظرفیت فوق حتی المقدور زیاد باشد، ولی بهرحال اندازه آن نسبت به رسانه های ذخیره سازی دیگر بسیار کم است.
- این امکان وجود خواهد داشت که از چندین لایه Cache استفاده گردد.
Cache در کامپیوتر:
کامپیوتر، ماشینی است که زمان انجام کارها توسط آن با واحدهای خیلی کوچک اندازه گیری می گردد.زمانیکه ریزپردازنده قصد دستیابی به حافظه اصلی را داشته باشد، می بایست مدت زمانی معادل 60 نانوثانیه را برای این کار در نظر بگیرد. سرعت فوق بسیار بالا است ولی سرعت ریزپردازنده بمراتب بیشتر است. ریزپردازنده قادر به داشتن سیکل هائی به اندازه دو نانوثانیه است. تفاوت سرعت بین پردازنده و حافظه کاملا" مشهود بوده و قطعا" رضایت پردازنده در این خصوص کسب نخواهد شد. پردازنده می بایست تاوان کند بودن حافظه را خود بپردازد. انتظار پردازنده و هرز رفتن زمان مفید وی کوچکترین تاوانی است که می بایست پردازنده پذیرای آن باشد.
بمنظور حل مشکل فوق، فرض کنید از یک نوع حاص حافظه، با ظرفیت کم ولی با سرعت بالا (30 نانوثانیه)، استفاده گردد. سرعت دستیابی به حافظه فوق دو مرتبه سریعتر نسبت به حافظه اصلی است.این نوع حافظه راL2 Cache می نامند. فرض کنید از یک حافظه بمراتب سریعتر ولی با حجم کمتر استفاده و آن را مستقیما" با پردازنده اصلی درگیر نمود. سرعت دستیابی به حافظه فوق می بایست در حد و اندازه سرعت پردازنده باشد.این نوع حافظه ها را L1 Cache می گویند.
در کامپیوتر از زیرسیستمهای متفاوتی استفاده می گردد.از Cache می توان در رابطه با اکثر زیر سیستمهای فوق استفاده تا کارآئی آنان افزایش یابد.
تکنولوژی Cache:
یکی از سوالاتی که ممکن است در ذهن خواننده این بخش خطور پیدا کند این است که "چرا تمام حافظه کامپیوترها از نوع L1 Cache نمی باشند تا دیگر ضرورتی به استفاده از Cache وجود نداشته باشد؟" در پاسخ می بایست گفت که اشکالی ندارد و همه چیز هم بخوبی کار خواهد کرد ولی قیمت کامپیوتر بطرز قابل ملاحظه ای افزایش خواهد یافت. ایده Cache، استفاده از یک مقدار کم حافظه ولی با سرعت بالا (قیمت بالا) برای افزایش سرعت و کارآئی میزان زیادی حافظه ولی با سرعت پایین (قیمت ارزان) است.
در طراحی یک کامپیوتر هدف فراهم کردن شرایط لازم برای فعالیت پردازنده با حداکثر توان و در سریعترین زمان است. یک تراشه 500 مگاهرتزی، در یک ثانیه پانصد میلیون مرتبه سیکل خود را خواهد داشت (هر سیکل در دونانوثانیه). بدون استفاده از L1 و L2 Cache، دستیابی به حافظه حدودا" 60 نانوثانیه طول خواهد کشید. بهرحال استفاده از Cache اثرات مثبت خود را بدنبال داشته و باعث بهبود کارآئی پردازنده می گردد.اگر مقدار L2 Cache معادل 256 کیلو بایت و ظرفیت حافظه اصلی معادل 64 مگابایت باشد، 256000 بایت مربوط به Cache با استفاده از روش های موجود قادر به Cache نمودن 64000000 بایت حافظه اصلی خواهند بود.