آبجی
28th October 2009, 01:55 PM
یکی از تکنولوژی های نسبتا قدیمی ولی کارآمد پردازنده های اینتل تکنولوژی Hyper-Threading است که در این مقاله قصد بررسی آن به صورت پایه و اصول آن را داریم .
http://www.daneshema.com/upload/mayor/upload/image/technology_engineering/computer/article/Hyper-Threading%20.jpg
سوالاتی که اول از همه در ذهن ما پیش می آید این است که HT یا همان Hyper-Threading دقیقا چه تاثیری در پردازش دارد ؟ آیا تاثیر آن به این اندازه هست که ما یک مقاله را به آن اختصاص بدیم ؟ قبل از پاسخ به این مسائل باید به نحوه کارکرد برنامه ها و پردازشگر های معمولی پرداخت تا کامل موجه موضوع شوید ...
پردازنده های جدید تنها توانایی سروکارداشتن با یک دستورالعمل از یک یک برنامه در نقطه خاصی از زمان دارند . این اطلاعات که به پردازنده فرستاده می شوند Thread یا همان رشته نام دارند . چیزی که در اینجا من قصد گفتنش را دارم این است که چیزی که شما به عنوان Multi-Tasking می شناسید یا عبارت دیگر اجرا بیشتر از یک برنامه در یک زمان واقعا درست نیست و این عمل رخ نمی دهد .
در واقع پردازشگر با تقسیم زمان و پاور میان برنامه ها و تعویض آن میان برنامه ها من و شما را فریب داده و شما فقط احساس Multi-Tasking را دارید .
اما قضیه در پردازنده (CPU ) های دو هسته متفاوت است و توانایی کار بر روی ۲ رشته از نرم افزار را دارند ولی بازهم این مشکل وجود دارد که هر پردازشگر در آخر محدود در کار بر روی یک رشته در یک زمان است ! و این مشکل زمانی حل می شود که نرم افزار توانایی جدا سازی آن را به دو قسمت داشته باشد که بتواند آن را در یک واحد زمانی در دو پردازنده پردازش شود که هر روز بر تعداد این برنامه ها زیاد می شود .
● اصول کار Hyper-Threading
پردازنده اینتل Pentium ۴ ۳.۰۶ Ghz اولین پردازنده ای بود که توانایی پردازش دو رشته مستقل را در یک زمان داشت . این کار با SMT ( Multi-Thread Simultaneous) یا کار بر روی چندین رشته در یک زمان قابل انجام است و در صورتی که سیستم عامل این امکان را داشته باشد پردازنده در واقع به دو پردازنده منطقی تقسیم می شود که هر دو از یک منبع که آن پردازنده فیزیکی است بهره می برند . یا به زبان تر با تکنولوژی Hyper-Threading شما می توانید با داشتن یک پردازنده فیزکی یا برای مثال همان Intel P۴ ۳.۰۶ Ghz می توانید پردازنده خود را به دو قسمت منطقی تقسیم کنید و از آن ها بهره ببرید که در این حالت شما توانایی پردازش دو یا چندین رشته را در یک زمان خواهید داشت .
با استفاده از این تکنولوژی هیچ گاه لود پردازنده شما به ۱۰۰ % نمی رسد چراکه با HT شما همیشه توانایی رفتن به پردازش محاسبات دیگری در آن واحد را دارید .
همان گونه که در بالا مشاهده می کنید در یک پردازنده معمولی ( Super Scalar ) زمانی که پردازنده به صورت کامل مشغول پردازش اطلاعات می باشد و این در حالی است که چیزی حدود ۵۰ درصد آن استفاده نشده و به کار گرفته نمی شود ! در قسمت Multi-Processing نیز با وجود اینکه دو پردازنده در حال پردازش دو رشته مستقل هستند باز هم چیزی حدود ۵۰ درصد از آن استفاده نمی شود .
ولی در قسمت Hyper-Threading به این گونه است که یک پردازنده در حال کار بر روی دو رشته در یک زمان می باشد و کارایی CPU چیزی حدود ۵۰ الی ۹۰ درصد افزایش می یابد و واحد های اجرایی تقریبا همگی در حال کار هستند .
و در آخرین قسمت که در عکس مشاهده می شود استفاده از یک پردازنده دو هسته ای با تکنولوژی Hyper-Threading است که در این حالت شود توانایی استفاده از چهار رشته مستقل را در آن واحد دارید و به بیان دیگر شما دارای ۴ پردازشگر منطقی و دو پردازشگر فیزیکی هستید .
البته در پردازش بعضی از واحد ها ، واحد های اجرایی تداخل پیدا کرده و این کار باعث افزایش سرعت پردازنده نمی شود چراکه پردازنده باید برای جدا سازی آن ها باید هر کدام یک بار پردازش کند . با این وجود در صورتی که سیستم عامل ها پشتیبانی بیشتری از این تکنولوژی کنند و کمپانی های نرم افزاری نیز نرم افزار های خود را بر پایه و اساس این تکنولوژی بنویسند شما خواهید دید که با Hyper-Threading توانایی مشاهده سرعت و قدرت پردازش بسیار بالاتری هستید . به خصوص زمانی که شما در حال اجرا دو برنامه کاملا متفاوت هستید که هیچ گونه تداخلی با هم ندارند . همان گونه که در بالا ذکر شد در صورتی که برنامه ها وسیستم عامل ها توانایی پشتیبانی کامل از HT را نداشته باشند در برنامه هایی که SMT در آن ها کار نمی کند کارایی سیستم از یک پردازنده معمولی نیز پایین تر است ! اما خبر خوشحال کننده اینکه سیستم عامل لینوکس ، XP و ویستا هر سه به صورت کامل از این تکنولوژی پشتیبانی می کنند .
http://www.daneshema.com/upload/mayor/upload/image/technology_engineering/computer/article/Hyper-Threading%20.jpg
سوالاتی که اول از همه در ذهن ما پیش می آید این است که HT یا همان Hyper-Threading دقیقا چه تاثیری در پردازش دارد ؟ آیا تاثیر آن به این اندازه هست که ما یک مقاله را به آن اختصاص بدیم ؟ قبل از پاسخ به این مسائل باید به نحوه کارکرد برنامه ها و پردازشگر های معمولی پرداخت تا کامل موجه موضوع شوید ...
پردازنده های جدید تنها توانایی سروکارداشتن با یک دستورالعمل از یک یک برنامه در نقطه خاصی از زمان دارند . این اطلاعات که به پردازنده فرستاده می شوند Thread یا همان رشته نام دارند . چیزی که در اینجا من قصد گفتنش را دارم این است که چیزی که شما به عنوان Multi-Tasking می شناسید یا عبارت دیگر اجرا بیشتر از یک برنامه در یک زمان واقعا درست نیست و این عمل رخ نمی دهد .
در واقع پردازشگر با تقسیم زمان و پاور میان برنامه ها و تعویض آن میان برنامه ها من و شما را فریب داده و شما فقط احساس Multi-Tasking را دارید .
اما قضیه در پردازنده (CPU ) های دو هسته متفاوت است و توانایی کار بر روی ۲ رشته از نرم افزار را دارند ولی بازهم این مشکل وجود دارد که هر پردازشگر در آخر محدود در کار بر روی یک رشته در یک زمان است ! و این مشکل زمانی حل می شود که نرم افزار توانایی جدا سازی آن را به دو قسمت داشته باشد که بتواند آن را در یک واحد زمانی در دو پردازنده پردازش شود که هر روز بر تعداد این برنامه ها زیاد می شود .
● اصول کار Hyper-Threading
پردازنده اینتل Pentium ۴ ۳.۰۶ Ghz اولین پردازنده ای بود که توانایی پردازش دو رشته مستقل را در یک زمان داشت . این کار با SMT ( Multi-Thread Simultaneous) یا کار بر روی چندین رشته در یک زمان قابل انجام است و در صورتی که سیستم عامل این امکان را داشته باشد پردازنده در واقع به دو پردازنده منطقی تقسیم می شود که هر دو از یک منبع که آن پردازنده فیزیکی است بهره می برند . یا به زبان تر با تکنولوژی Hyper-Threading شما می توانید با داشتن یک پردازنده فیزکی یا برای مثال همان Intel P۴ ۳.۰۶ Ghz می توانید پردازنده خود را به دو قسمت منطقی تقسیم کنید و از آن ها بهره ببرید که در این حالت شما توانایی پردازش دو یا چندین رشته را در یک زمان خواهید داشت .
با استفاده از این تکنولوژی هیچ گاه لود پردازنده شما به ۱۰۰ % نمی رسد چراکه با HT شما همیشه توانایی رفتن به پردازش محاسبات دیگری در آن واحد را دارید .
همان گونه که در بالا مشاهده می کنید در یک پردازنده معمولی ( Super Scalar ) زمانی که پردازنده به صورت کامل مشغول پردازش اطلاعات می باشد و این در حالی است که چیزی حدود ۵۰ درصد آن استفاده نشده و به کار گرفته نمی شود ! در قسمت Multi-Processing نیز با وجود اینکه دو پردازنده در حال پردازش دو رشته مستقل هستند باز هم چیزی حدود ۵۰ درصد از آن استفاده نمی شود .
ولی در قسمت Hyper-Threading به این گونه است که یک پردازنده در حال کار بر روی دو رشته در یک زمان می باشد و کارایی CPU چیزی حدود ۵۰ الی ۹۰ درصد افزایش می یابد و واحد های اجرایی تقریبا همگی در حال کار هستند .
و در آخرین قسمت که در عکس مشاهده می شود استفاده از یک پردازنده دو هسته ای با تکنولوژی Hyper-Threading است که در این حالت شود توانایی استفاده از چهار رشته مستقل را در آن واحد دارید و به بیان دیگر شما دارای ۴ پردازشگر منطقی و دو پردازشگر فیزیکی هستید .
البته در پردازش بعضی از واحد ها ، واحد های اجرایی تداخل پیدا کرده و این کار باعث افزایش سرعت پردازنده نمی شود چراکه پردازنده باید برای جدا سازی آن ها باید هر کدام یک بار پردازش کند . با این وجود در صورتی که سیستم عامل ها پشتیبانی بیشتری از این تکنولوژی کنند و کمپانی های نرم افزاری نیز نرم افزار های خود را بر پایه و اساس این تکنولوژی بنویسند شما خواهید دید که با Hyper-Threading توانایی مشاهده سرعت و قدرت پردازش بسیار بالاتری هستید . به خصوص زمانی که شما در حال اجرا دو برنامه کاملا متفاوت هستید که هیچ گونه تداخلی با هم ندارند . همان گونه که در بالا ذکر شد در صورتی که برنامه ها وسیستم عامل ها توانایی پشتیبانی کامل از HT را نداشته باشند در برنامه هایی که SMT در آن ها کار نمی کند کارایی سیستم از یک پردازنده معمولی نیز پایین تر است ! اما خبر خوشحال کننده اینکه سیستم عامل لینوکس ، XP و ویستا هر سه به صورت کامل از این تکنولوژی پشتیبانی می کنند .