قابل توجه کاربران گرامی: تاپیک معرفی اعضاء برای آشنایی بیشتر با یکدیگر (حتما شرکت کنید) لینک

Deepcool
Green MSI


نمایش نتایج: از 1 به 5 از 5
Like Tree6Likes
  • 3 Post By asdaf
  • 3 Post By asdaf

موضوع: بررسی پایه های معماری پردازنده اصلی و کامپیوتر

  1. #1
    Active Member
    asdaf آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    qom
    نام واقعی
    Mohammad.Ali
    نوشته ها
    161
    تشکر شده 1,297 بار در 165 پست
    asdaf آنلاین نیست.

    بررسی پایه های معماری پردازنده اصلی و کامپیوتر

    به نام خدا

    با وجود کسانی که حتی رشته دانشگاهی مرتبط با این موضوع دارند اما این مسائل فقط در سطح تئوری و کتاب ها باقی میماند
    و کسانی نیستند که این مسائل را عملی کنند یا اینکه معماری های جدیدی را از این نظر بررسی نمایند
    بنده حقیر تصمیم گرفتم که برای دوستان با توجه به مطالعات خودم به صورت پایه و نکات اصلی به ساده ترین شیوه ممکن توضیح دهم

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

    اگه وجود جریان را برابر با یک و نبود انرا برابر با صفر قرار دهیم با کنار هم قرار دادن ترانزیستور هایی میتوانیم
    حالت هایی به نام GATE را ایجاد کنیم

    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]

    که نتیجه و جریان اصلی و نهایی را با توجه به صفر یا یک بودن دو جریان دیگر و روشن یا خاموش شدن ترانزیستور تایین کرد
    شکل های ابتدایی مثل ( یا و هیچ کدام و هردو و...) که با استفاده هوشمندانه از اینها میتوان اعمال اصلی ریاضی را ساخت

    که با ان ALU می گویند
    با کنار هم قرار دادن 32 عدد از Alu های یک بیتی می توان یک 32 بیتی را داشت
    یعنی تا حرف 32 عددی باینری یا 32 تا سیم و اتصال ورودی را پشتیبانی میکند
    که بزرگترین عدد باینری 32 حرفی که 32 تا یک پشت سر هم باشد به عدد ده دهی رقم 4294967295 می باشد

    Register
    حافظه ساخته شده از ترانزیستور است که حالت روشن یا خاموشی ترانزیستور داده های درون انرا نشان میدهد
    تمام تراشه و سخت افزار تشکیل شده است ریجستر و Alu و BUS یعنی سیم کشی بین انها هست
    و در حالت ها و وظایف مختلف اسامی خاصی به انها داده میشود و هیچ چیز دیگری به جز اینها وجود ندارد
    و ما فقط ترانزیستور خالص داریم
    حالا ممکنه بعضیا بگن چطور تیمی که مسئولین سخت افزار ان 10 نفر است و بقیه انها نرم افزار هستند
    تراشه با چندین میلیون ترانزیستور رو طراحی میکنند ؟!!!!! و چقدر براشون زمان می بره!!!!

    در واقع اینجا بلاک ها و قطعات اماده با مشخصات معین وجود دارد
    انها تنها این قسمت ها را کنار هم قرار میدهند و کار اصلی انها این است که برای خواسته خودشان چه الگوریتم مناسبی طراحی کنند و چطور با قطعات موجود انرا پیاده کنند
    امروزه توسط نرم افزار بلاک های اماده از ریجستر و ALU و باس ها را کنار هم قرار میدهند
    و نرم افزار با بانک داده خوش انرا پیاده سازی میکنند و مسئولیت نیروی انسانی فقط بهینه سازی این قسمت ها است

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

    [Only registered and activated users can see links. ]

    IO ریجستری است که ورودی قسمت های سخت افزاری خارجی نظیر کیبورد یا مودم در این قسمت ذخیره میشود
    Cpu داده های IO را دریافت و با دستوراتی که در مموری درباره ان وجود دارد مقایسه میکند
    این عملیات باعث هدر رفت وقت cpu برای IO و ممموری میشود . در این مواقع پردازنده اختصاصی به نام DMA وجود دارد
    که داده های IO با مموری را خودکار مقایسه میکند و در صورت وجود دستورالعمل داده را برای CPU ارسال می نماید


    Instruction Register (IR)
    در محله ارسال fetch دستورات از مموری خارجی برای انجام عملیات به این ریجستر انتقال داده می شود

    Program Counter (PC)شمارنده عملیات ها هربار که عملی انجام میشود عددی به مقدار اولیه اضافه میشود
    و در این ریجستر ذخیره میشود تا هر بار که مموری و دیگر بخش ها بخواهند بدانند که در چه مرحله ای هستند به این ریجستر مراجعه کنند

    ALU دارای یک ریجیستر است و به ان Accumulator یا ریجستر کاری می گویند

    ISA instructionبرای کوتاه کردن دستورات و نام گذاری قسمت ها و عملیات مختلف سخت افزاری از نام گزاری اختصاصی و کوتاه شده به زبان باینری استفاده میشود
    و زبان Assembly نشانه گزاری این علامت ها به زبان انسانی است
    مثلا برای عملیات جمع عبارت 00 در باینری و Add به صورت Assembly می توان در نظر گرفت
    دستورت ISA برای هر سخت افزاری متفاوت هست و ریجستر ها و قسمت های مختلف سخت افزاری نیز می توان اسم کوتاه شده داد

    [Only registered and activated users can see links. ]


    Decodeوظیفه این قسمت ان است که دستورات فشرده ISA را به زبان قابل فهم برای سخت افزار ترجمه کند

    [Only registered and activated users can see links. ]

    همان طور که در تصاویر داده شده است هر حرف باینری میتواند اشاره به یک قسمت سخت افزاری داشته باشد

    [Only registered and activated users can see links. ]

    یک دیکودر دو حرفی به چهار حرفی را می بینید که با قطعات ساده GATE ساخته شده است
    و حالت های مختلف دو حرف اشاره به یکی از چهار قسمت سخت افزاری است
    در حالت های پیشرفته تر دیکودر های دو مرحله ای یا دیکودر هایی که بخش پردازشی و ALU دارند نیز وجود دارد
    که با حجم داده کم ادرس ها و عملیات های طولانی باینری را ایجاد میکند به صورتی که برای ماشین و هر بخش پردازشی قابل فهم باشد


    چهار مرحله اصلی برای معماری پایه و ساده ترین شکل پردازنده RISC وجود دارد

    Fetch
    یعنی پرتاب و دستور العمل از حافظه به ریجستر IR کپی میشود و یک شماره به PC اضافه میشود
    Decode
    دستوران ترجمه میشوند و بخش های پردازشی مورد نظر فعال می گردنند و یک شماره به PC اضافه می شود که نشان میدهد در مرحله دوم پردازش قرار داریم
    Execute
    در این مرحله محاسبات ترجمه شده توسط واحد محاسباتی انجام میشود PC همانند قبل
    Write back
    نتیجه محاسبات در ریجستر اولیه ذخیره می گردد و پایان عملیات


    این مراحل در پردازنده ساده مقابل به ساده ترین شکل ممکن نمایش داده شده است

    [Only registered and activated users can see links. ]

    100 مقدار اولیه شمارنده برنامه PC است
    و ALU پایین ان وظیف اضافه کردن عدد یک به ریجستری جاری ان PC با هر بار جلو رفت مرحله پردازش است
    سه BUS و سیم کشی اصلی وجود دارد. که هرکدام به بخش مخصوص خودشان متصل است داده و جریان و کنترل
    IR ریجستر دستور عمل قبل از ورود به دیکود که در اینجا به ان Control Unit گفته میشود
    B و C و D و E هرکدام ریجستری جانبی برای انجام عملیات داده ورودی به ALU اصلی است
    A حافظه جاری یا Accumulator است

    در تصویر دستور العمل اول مقدار A را برابر 10 قرار ده

    [Only registered and activated users can see links. ]

    دستور العمل دوم مقدار B را برابر 15 قرار ده

    [Only registered and activated users can see links. ]

    دستور العمل سوم مقدار A و B را جمع کن که در ریجستر جاری برابر 25 شده است

    [Only registered and activated users can see links. ]

    در اینجا تصاویری از معماری پیچیده تر از نوع پنج مرحله ای RISC را می بینید

    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]


    ظهور پردازنده های Pipeline

    در معماری های قبلی همیشه برای پردازش یک دستور باید تمام مراحل را می رفت و تا اتمام ان دستور دیگری ارسال نمیشد

    [Only registered and activated users can see links. ]

    مثلا تولید یک لباس شویی را در نظر بگیریم که یک لباس مراحل شستن و وخشک کردن و اتو کشیدن را دارد
    ماشین لباس شویی 30 دقیقه و خشک کن 40 دقیقه و اتو کشیدن 20 دقیقه طول میکشد
    اگر یک فرد مراحل ترتیبی را دنبال کند همیشه یک لباس 90 دقیقه طول می کشد که برای چهار لباس 6 ساعت خواهد شد

    [Only registered and activated users can see links. ]

    اگر فرد شیوه خط لوله را یاد بگیرد و تمام مراحل پیوسته در حال انجام باشد
    و در زمانی که لباس اولی شسته شده است و به خشک کن میرود لباس شویی بیکار نباشد و لباس دومی را بندازد
    می بینیم که از 6 ساعت به 3.5 ساعت برای چهار لباس می رسیم
    شیوه خط لوله همانند خط تولید برای خودروها میباشد

    مثلا انتظار داشتیم که حداقل cpu دیگه مثل گرافیک نباشد اما می بینیم که اینجا هم مشابه هم هستند
    و الان می بینیم که تمام پردازنده های مدرن از ALU های متصل به هم استفاده میکنند
    اما چطور ممکن است ؟

    درسته استقلال نرم افزاری هر دستور العمل حفظ شده است و ما اینجا موازات نداریم بلکه
    اسم به کار برده شده در اینجا throughput یا افزایش ضرفیت است
    برای اینکار از ILP یا instruction level parallelism به شیوه متفاوت استفاده شده است


    قسمت های دیگر برای این ALU های خط لوله ادرس دهی انجام میدهند بخش هایی مثل DECODE و ...
    پردازش انها به این قسمت ها ارسال میشود البته ممکن است که در بعضی معماری ها قسمت اختصاصی پردازنه مخصوص خودشان را داشته باشند

    طول خط لوله و تعداد قسمت های ان به اندازه مراحل پردازش است

    [Only registered and activated users can see links. ]

    به دلیل انکه در هر بار عملیات خط لوله تمام داده های ان بیرون داده میشود هر عملیات خط لوله را Clock Cycle می گویند
    Clock cycle چرخه کلاک فقط مربوط به داده ها می شود نه دستورالعمل یک پردازش
    هر رنگ نشان دهنده یک پردازش های یک دستور العمل است که به ترتیب قسمت های خط لوله را در کلاک های متفاوت می پیماید
    در هر عملیات خط لوله یا چرخه کلاک داده یک دستورالعمل فقط در یکی از مراحل خط لوله وجود دارد
    به تعداد مراحل خط لوله clock cycle حداقل باید انجام شود تا یک دستور العمل مرحله به مرحله به اخر برسد

    [Only registered and activated users can see links. ]

    دستورالعمل 1 بعد از F1 به D1 می رسد و F که فارق شده است پردازش F2 را انجام میدهد


    به دلیل اینکه شیوه دسته بندی و پردازش دستور العمل موازی نیست و متفاوت است هر مرحله درون خط لوله را یک کلاک میگویند
    در صورت افزایش مرحله خط لوله یا بزرگتر شدن ان کلاک پردازنده نیز افزایش می یابد اما تاخیر و چرخه و خطا نیز به همان اندازه زیاد میشود



    Data Hazard

    این مشکل به خاطر افزایش ضرفیت پذیرش دستورالعمل هاست و در پردازنده های غیر خط لوله این مشکل وجود ندارد
    از انجایی که شیوه ارسال پردازش ها زنجیری و پشت سر هم است در صورتی که نیاز به داده ای داشته باشد که هنوز پردازش نشده است
    در خط لوله بحران صورت میگیرد که در اینجا Stall به شیوه هایی که قبلا شنیده اید صورت نمی گیرد

    bubble

    خط لوله به کار خودش ادامه میدهد اما برای ان دستورالعمل پردازش درون خط لوله bubble یا حباب ایجاد میشود
    که خالی از پردازش خواهد ماند تا زمانی که از تمام مراحل خط لوله خارج شود

    [Only registered and activated users can see links. ]

    به همین خاطر در این پردازنده ها برای جلوگیری از این اتفاقات اولویت کد نویسی خیلی اهمیت دارد و از قبل داده ها باید تعریف و پردازش شوند
    البته سیستم هایی وجود دارد که پردازش را با نادیده گرفتن مقدار مورد نیاز انجام میدهند
    که به ان out-of-order execution یا پردازش خارج از دستور می گویند


    Branch

    یا شاخه حالت هایی در الگوریتم است که نتیجه نهایی مشخص نیست و وابسته به حالت های دیگری است
    و در برنامه نویسی مثال ان IF است و دوراهی هایی که پاسخ ان بله یا خیر است و با توجه به پاسخ مسیر تغییر میکند
    شاخه ها حالت بحرانی یا Hazard می باشند برای حل این موضوح branch prediction در پردازنده ها ساخته شده است
    در صورتی که نتیجه شاخه را به درستی پیشبینی کند باعث میشود که پردازنده کار کمتری انجام دهد و از زمان جلوتر بیفتد
    اما در صورتی که نتیجه به درستی پیش بینی نشود تاخیر بیشتری میدهد یا حتی ممکن است داده های کل خط لوله پاک سازی شود

    پردازنده های RISC انعطاف کمتری در شاخه ها و الگوریتم های IF دار دارند
    برای حل این موضوع پردازنده های CISC که مخصوص شاخه ها و Branch و بحران ها طراحی شده اند ایجاد شد

    Complex instruction set computing

    ساده ترین نوع این پردازنده دو قسمت اضافه در خط لوله دارند که بعد از دیکود و مشخص شدن دستورالعمل

    [Only registered and activated users can see links. ]

    دسترسی به ریجستری در مراحل خط لوله دارند و و میتوانند داده را در ریجستری ایجاد یا بخوانند
    پردازنده های CISC نسبت به RISC ازادی برنامه نویسی بیشتری دارند اما ساختمان و خط لوله بزرگتر با مصرف بیشتر و تاخیر بیشتر هستند

    شکل امروزی اخرین پردازنده های اینتل و ZEN به این صورت است

    [Only registered and activated users can see links. ]

    بعد از دیکود و مشخص شدن دستور العمل به خط لوله های اختصاصی و مجزا حرکت میکنند
    خط لوله داده های شناور Floating point همان SIMD های کلاسیک برای پردازش های درکلاس گرافیک است
    که اینتل AVX و SSE را را برای ان توسعه داده است

    این داستان ادامه دارد .....
    Olesius, TERRORIST and mohammad72 like this.


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  2. 9 کاربر بابت این ارسال مفید از asdaf تشکر کرده اند:

    a.aryaiee (23rd October 2016),amirsss (23rd October 2016),ErfanDL (23rd October 2016),golabettruter (23rd October 2016),mohammad72 (23rd October 2016),Olesius (23rd October 2016),overclock990 (23rd October 2016),Reza Y (30th October 2016),TERRORIST (23rd October 2016)



  3. #2
    Moderator
    TERRORIST آواتار ها
    تاریخ عضویت
    Sep 2012
    محل سکونت
    هر جایی که عملیات تروریستی باشه.
    نام واقعی
    Behzad
    نوشته ها
    1,876
    تشکر شده 14,391 بار در 1,956 پست
    TERRORIST آنلاین نیست.
    درود

    بسیار مطلب خوبی قرار دادید، یک نکته ای هستش این که پردازنده های Intel بر خلاف IBM و دیگر شرکتهای سازنده واحد پردازشی مرکزی ، بایت را از سمت چپ به راست شماره گذاری می کند ولی پردازنده های ساخت IBM و ... بایتها از سمت راست به چپ شماره گذاری


    Motherboard : Asus X99-Deluxe-USB 3.1 Processor : Intel Core i7 6900K
    Main Memory : GSkill Ripjaws 4 | 4×4GB=16GB DDR4 2800MHz Graphics Card : XFX DD AMD RADEON 2* R9 390X
    Cooling : Cooler Master MasterAir Maker 8 Power Supply : GREEN GP850B-OC+ Evo 80Plus Platinum


  4. 3 کاربر بابت این ارسال مفید از TERRORIST تشکر کرده اند:

    asdaf (24th October 2016),golabettruter (23rd October 2016),mohammad72 (23rd October 2016)



  5. #3
    Moderator
    Olesius آواتار ها
    تاریخ عضویت
    Aug 2012
    محل سکونت
    Overclockingheroes.com
    نام واقعی
    Ali
    سن
    29
    نوشته ها
    1,212
    تشکر شده 10,193 بار در 1,321 پست
    Olesius آنلاین نیست.
    ممنون محمد علی جان مثل همیشه عالی بود و لذت بردیم


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply
    this is my life homie, you decide yours

    چارلی چاپلین: آدم خوبــــــــــی باش
    ولی وقتت رو برای اثباتش به دیگران تلف نکن... !

    همیشه آنچه که درباره "من" می دانی باور کن،
    نه آنچه که پشت سر "من" شنیده ای "من" همانم که دیده ای نه آنکه شنیده ای... !


  6. 4 کاربر بابت این ارسال مفید از Olesius تشکر کرده اند:

    a.aryaiee (23rd October 2016),asdaf (24th October 2016),golabettruter (23rd October 2016),mohammad72 (23rd October 2016)



  7. #4
    Assistant
    a.aryaiee آواتار ها
    تاریخ عضویت
    Aug 2016
    سن
    29
    نوشته ها
    87
    تشکر شده 362 بار در 91 پست
    a.aryaiee آنلاین نیست.
    عالی بود عزیز


    Motherboard : Not Specified Processor : Not Specified
    Main Memory : Not Specified Graphics Card : Not Specified
    Cooling : Not Specified Power Supply : Not Specified

  8. 3 کاربر بابت این ارسال مفید از a.aryaiee تشکر کرده اند:

    asdaf (24th October 2016),mohammad72 (23rd October 2016),Olesius (23rd October 2016)



  9. #5
    Active Member
    asdaf آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    qom
    نام واقعی
    Mohammad.Ali
    نوشته ها
    161
    تشکر شده 1,297 بار در 165 پست
    asdaf آنلاین نیست.
    برای کسانی که به نظرشون این تاپیک خیلی نا مفهوم است . پیشنهاد میکنم قبل از اینجا این تاپیک را نیز مطالعه کنند
    [Only registered and activated users can see links. ]
    برای درک بهتر
    مشابه VLIW داده تولید میکند و هر بخشی داده مخصوص خودش را دارد
    اما دستور العمل های پردازش CPU در یک بخش پردازشی ثابت نمی مانند بلکه به صورت ضربدری و مورب جابه جا میشوند ..
    هربار که بخشی از خط لوله را میرود در واقع بخشی از دستورالعمل پردازش شده است و مانند یک کلاک میماند
    کلاک خط لوله clock cycle با کلاک دستورالعمل کاملا متفاوت هستند بر خلاف گرافیک ها که به خاطر موازات یکی هستند

    توضیحات اضافه هم بدم که ترتیب برنامه نویسی همیشه مهم است و ضرورت کلی است
    اما در مسئله خط لوله حساسیت بیشتری وجود دارد . و باید زمان خیلی زودتری تعاریف را انجام بدهند .
    دلیلش ام این بود که در غیر خط لوله تا نتیجه نهایی مشخص نشده دستور دیگری نمیاید و این مشکلات را ندارد .
    اما مشکلات جدید همش به خاطر بهره کشی بیشتر از سخت افزار پدید امده است. .
    مثال شرایط بحرانی خط لوله مانند این است که تا من نتیجه نهایی دستورالعملی را نبینم نمی تونم تصمیم گیری کنم
    اما اگه دستور من وارد خط لوله شود در صورتی که نتیجه نهایی ان دستورالعمل هنوز مراحل خط لوله را میگزراند
    و هنوز داخل ریجستری ثبت نشده باعث ایجاد حباب میشود
    و تاخیر به اندازه ای خواهد بود تا نتیجه ای که به ان نیاز دارم در ریجستری ثبت شود
    و تا پردازش بتواند ادامه کار خود را بکند .
    هرچقدر خط لوله طولانی تر باشد احتمال ایجاد حباب بیشتر میشود و عمق فاجعه و تاخیر نیز به میزان حداکثر طول خط لوله افزایش می یابد .
    خط لوله بزرگتر cock cycle کندتری به خاطر بیشتر بودن حجم تولید داده ها نیز دارد
    در پردازنده های CISC دستوراتی برای برنامه نویسی همانند load و store وجود دارند که پیغام میدهند
    که نتیجه این پردازش برای دستوات بعدی ذخیره شود و بعدا برای پردازش دیگری بار گذاری شود .

    در این معماری ها همیشه بعد از دیکود شدن دستورات از خودشان نشانه ای برای دستورات دیگری که در خط لوله هستند باقی می گزارند
    همون طور که گفتم تمام این مشکلات و راه حل ها فقط برای بهره گیری بیشتر و افزایش ضرفیت cpu ایجاد شده است.

    یک تصویر از خط لوله jaguar ببینید .

    [Only registered and activated users can see links. ]

    در بالا مقیاسی برای کلاک هست و برابر یک مرحله یا یک قسمت از خط لوله می باشد
    همون طور که گفتم هر قسمت یک پردازش یا جلو رفت از دستور العمل هست و یک کلاک به حساب میاید
    کل خط لوله هم زمان داده های مختلفی به روش ILP بیرون میدهند برابر یک clock cycle
    در بخش هایی از خط لوله پردازشی به قسمت های دیگری و خط لوله های دیگر اختصاصی ارجاء داده میشوند
    عملیات دیکود و پردازش از قسمت ها و مراحل زیادی تشکیل شده .

    [Only registered and activated users can see links. ]

    یک تصویر از پردازش دستور منطقی از معماری Amd 64 می بینیم
    Fetch از دو قسمت و مرحله و ارسال داده به دو قسمت مجزا تشکیل شده
    در بخش decode ابتدا داده برداشت و سپس در دو مرحله به زبان ماشین ترجمه میشود
    در مرحله pack دستوراتی که ادرس سخت افزاری یا همان op code یکسانی دارند در یک بسته قرار می گیرند
    یک دیکود دیگر نیز در پایان انجام میشود
    Dispatch به معنای اعزام و ارسال است و بعد از ان مرحله دسته بندی
    AGU و ALU مرحله اجرا دستورات است .
    AGU به مرحله برای دستورات Hazard یا Branch که احتیاج به عمل ذخیره یا دریافت ریجستری دارند گفته میشود
    در پایان مرحله ذخیره در کش است

    داده های floating point رو صریح بگم که اطلاعی ندارم
    همان قدر که خودتون در مطالب بیرون می توانید پیدا کنید
    و مربوط به عالم ریاضیات و و برنامه نویسی میشود و بیشتر وارد نمی شوم .

    اما بگویم که در بخش سخت افزاری ALU های 128 یا 256 بیتی وجود دارد
    به نام Multiply و ADD که تر کیب این دو یک محاسبه داده های شناور را انجام میدهد

    [Only registered and activated users can see links. ]

    طبق تصویر مرحله B مرحله ضرب و MUL و مرحله C بخش جمع و ADD می باشد

    [Only registered and activated users can see links. ]

    در این تصویر نمونه یک عملیات شناور را می بینید
    عدد باینری که قرار است در عدد شماره 1 ضرب شود
    مرحله 2 طبق عدد 1 میزان اولیه را تکثیر و MUL میکند
    و مرحله 3 جمع ADD انها است

    [Only registered and activated users can see links. ]

    داده شناور اگر در یک مرحله برای یک بخش 128 بیتی انجام نشد می تواند در دو مرحله انجام دهد تا 256 بیتی شود
    یا اگر دو بخش 128 بیتی داشت می تواند با ترکیب اینا یک 256 بیتی را انجام دهد


    *************************************************

    در معماری CISC های پیشرفته امروزی همون طور که در اخرین تصویر پست قبلی قرار دادم خط لوله های اختصاصی برای دستور العمل ها وجود دارد
    و اگر فرض کنیم هر بار که پردازشی میاید فقط یکی از خط لوله های اختصاصی را مشغول میکند و دیگر خط لوله ها بیکار باقی می مانند .
    برای افزایش ضرفیت بیشتر و بهره گیری بیشتر اینتل SMT را ایجاد کرد
    که همانند معماری superscalar هر خط لوله اختصاصی thread و نخ خودشان را داشته باشند
    مثلا اگر دیکود دستورالعملی برای بخش های منطقی integer فرستاد دیگر بکار نماند و دستور دیگری را برای Floating point بفرستد .
    هر خط لوله اختصاصی همانند چند پردازنده مستقل هستند که همگی شان decode و fetch مشترک دارند
    البته هم زمان از decode استفاده نمی شود بلکه نوبتی برای خط لوله ها استفاده میشود

    در اینجا amd تصمیم گرفت با مشارکت مهندسین گرافیک خودش با cpu فلک را سقف بشکافند و طرحی نو در اندازند

    [Only registered and activated users can see links. ]

    تصویر تبلیغاتی و فرقی که با هم دارند را مشاهده بفرمایید
    اینجا amd یک مسیر و فلسفه کاملا متفاوت از هدف اینتل از SMT را در پیش گرفت

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

    اما چرا بولدوزر شکست خورد .
    طبق بررسی سایت ها سیستم عامل نمی توانسته تشخیص بدهد که دستور العمل متعلق به کدام هسته است و نتیجه را از کدام هسته بگیرد .
    سیستم cache هسته ها از نوع white through بود یعنی به صورتی ساخته شده بود تا داده بین هسته ها مشترک باشد
    اما سرعت پایین تری داشت .که تاثیر در سرعت تک هسته ای دارد
    به خاطر مشکل سیستم عامل در شناسایی هسته ها باعث شده بود که میزان اشتباه و گم شدن اطلاعات کش افزایش پیدا کنه .
    به همین خاطر میزان کش رو افزایش دادن.

    در SISD یا نخ یک اسکالر X و Y مشخص هستند
    در واقع در گرافیک ها این مشکل وجود ندارد چون در SIMT نخ ها همگی به صورت قفل شده هستند
    و وقتی یک مختصات ادرس دهی در میان نخ ها مشترک باشد از طریق مختص دیگر در میان کش می توان به اطلاعات رسید

    در بولدوزر یک بعد دیگر به اطلاعات نخ ها اضافه شده بود و ان هم ادرس کدام هسته از ماژول هست .
    در steamroller این مشکل با اضافه کردن یک decode مستقل و کد نویسی و ادرس دهی مستقل برای هر هسته تا حدود زیادی حل شد .
    در excavator هم کش به میزان زیادی کاهش پیدا کرده است

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

    یک تصویر که خود AMD اعلام کرده که 4 هسته jaguar برابر یک ماژول و دو هسته steamroller است

    [Only registered and activated users can see links. ]



    یک بار دیگه بر اسلاید های معماری zen خودتون نگاهی بیندازید
    اما اینبار با مطالب این تاپیک در تاریکی نور خواهید دید ....
    به بخش ها و اسامی اشنایی که می بینید بماند .

    [Only registered and activated users can see links. ]

    فقط نکاتی رو اشاره کنم
    Branch prediction با استفاده از نتایج دستور العمل های قبلی و ادرس دهی op code دستورات جدید
    نتیجه شاخه را پیش بینی میکند .

    Integer rename تکنیکی برای افزایش پاسخ دهی و کاهش تاخیر و نوعی موازات برای دستورالعمل هاست
    به صورتی که با تغییر نام ادرس ریجستر ها در کد نویسی دستورالعمل ها باعث میشود
    که مثلا دستوری که احتیاج به نتیجه ای دارد به جای اینکه بعد از اجرای کامل ان دستورالعمل اجرا شود
    با تغییر نام ان کمیت به ادرس نتیجه دستور العمل اصلی با هم یا بلافاصله در خط لوله بعد از ان اجرا شوند
    AGU برای ذخیره یا بارگزاری داده هایی است که لازم دارد
    اینبار Amd فلسفه SMT اینتل را درک کرده و برای هر بخش اختصاصی نخ تعیین کند. معماری Superscalar

    و یا با clock Gating می تواند قسمت هایی که برای پردازش لازم نیستند را کاهش مصرف دهد
    و برای افزایش کلاک بخش های مورد استفاده بهره ببرد


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  10. 4 کاربر بابت این ارسال مفید از asdaf تشکر کرده اند:

    First.Last (31st October 2016),golabettruter (28th November 2016),Olesius (30th October 2016),TERRORIST (30th October 2016)



کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •