اطلاعیه

Collapse
No announcement yet.

علت انتقال متغیرها(یا عملوندها) به ALU برای انجام محاسبات

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    علت انتقال متغیرها(یا عملوندها) به ALU برای انجام محاسبات

    با سلام به تمامی دوستان
    چرا در میکرپروسسورها و میکروکنترلرها،اگر قرار باشد که یک عمل محاسباتی(مانند +،-،* و/) در زبان ماشین انجام گیرد،حتما باید یکی از 2عملوند(یا متغیر یا محتوای متغیر)از حافظه به داخل یکی از ثباتهای CPU(که واحد ALU در آن است) منتقل شود تا دستور محاسبه(از قبیل+،-،*و/)اجرا شود.
    آیا نمیشود مثلا 2 عدد را که در حافظه اند را مستقیما(بدون انتقال یکی از آنها به داخل ثباتهای CPU) جمع(یا -،*و/)کرد و حاصل را در یکی از خانه های حافظه ذخیره نمود؟
    با سپاس
    زیبا باش و بخند بر هرآنچه زشتی است،چرا که تنهاترین شان تو ،زیبایی است.

    #2
    پاسخ : علت انتقال متغیرها(یا عملوندها) به ALU برای انجام محاسبات

    سلام.
    اگه بخوام خیلی ساده بگم اینه که
    پردازشگر، فقط پردازش رو روی داده هایی انجام میده که درون رجیسترهای خودش باشه
    اگه اصطلاح "کش" ( ک : فتحه) را شنیده باشی که در سیستمهای کامپیوتری استفاده میکنن
    مثلا میگن فلان سی پی یو، کشش 6 مگابایت ه، اشاره به همین قضیه داره
    معمولا سرعت پردازنده ها از سرعت حافظه ها خیلی بیشتره
    برای اینکه از نظر طمان بندی و سرعت، با هم منطبق بشن، از "کش" استفاده میکنن
    مثلا میکرو کنترل ای وی آر اتمگا8، حدود 30 تا رجیستر هشت بیتی داخلی داره
    این رجیسترها، رابط پردازنده، با دنیای خارج هستن.
    بخاطر عمینه که در خیلی از پردازنده ها، زمان برنامه نویسی مخصوصا به زبان اسمبلی
    برای تمام اعمالی که مربوط به ALU میشه، داده ها را درون رجیستر های داخلی پردازنده میریزیم.
    از طرفی، پردازنده طوری طراحی شده که، تمام اعمال را، فقط با همون رجیسترها انجام بده.
    این هایی که گفتم، از کتاب Z80 خونده بودم.
    موفق باشی.
    .
    .
    .
    دوستای دیگه، گه جایی رو اشتباه کردم، اصلاح کنن لطفا
    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

    دیدگاه


      #3
      پاسخ : علت انتقال متغیرها(یا عملوندها) به ALU برای انجام محاسبات

      نوشته اصلی توسط محمدصادق رستمی
      سلام.
      اگه بخوام خیلی ساده بگم اینه که
      پردازشگر، فقط پردازش رو روی داده هایی انجام میده که درون رجیسترهای خودش باشه
      اگه اصطلاح "کش" ( ک : فتحه) را شنیده باشی که در سیستمهای کامپیوتری استفاده میکنن
      مثلا میگن فلان سی پی یو، کشش 6 مگابایت ه، اشاره به همین قضیه داره
      معمولا سرعت پردازنده ها از سرعت حافظه ها خیلی بیشتره
      برای اینکه از نظر طمان بندی و سرعت، با هم منطبق بشن، از "کش" استفاده میکنن
      مثلا میکرو کنترل ای وی آر اتمگا8، حدود 30 تا رجیستر هشت بیتی داخلی داره
      این رجیسترها، رابط پردازنده، با دنیای خارج هستن.
      بخاطر عمینه که در خیلی از پردازنده ها، زمان برنامه نویسی مخصوصا به زبان اسمبلی
      برای تمام اعمالی که مربوط به ALU میشه، داده ها را درون رجیستر های داخلی پردازنده میریزیم.
      از طرفی، پردازنده طوری طراحی شده که، تمام اعمال را، فقط با همون رجیسترها انجام بده.
      این هایی که گفتم، از کتاب Z80 خونده بودم.
      موفق باشی.
      .
      .
      .
      دوستای دیگه، گه جایی رو اشتباه کردم، اصلاح کنن لطفا
      بله درسته
      رجیسترها در واقه فلیپ فلاپهایی در اختیار مستقیم پردازنده ها هستند و بدلیل اینکه از ساختار لچ برای نگهداری حافظه استفاده میکنن در مقابل حافظه که داده ها رو در خازنهای کوچیک ذخیره میکنن , بطور عجیبی سریعتره
      در واقع رجیستر ها و سگمنت ها از گیت ساخته شدن و بنابراین در یک سیکل کلاک داخلی , پردازنده میتونه به اطلاعات دسترسی داشته باشه یا حتی بیشتر از یک دستور در سیکل
      *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
      *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

      دیدگاه


        #4
        پاسخ : علت انتقال متغیرها(یا عملوندها) به ALU برای انجام محاسبات

        نوشته اصلی توسط amir-ak
        با سلام به تمامی دوستان
        چرا در میکرپروسسورها و میکروکنترلرها،اگر قرار باشد که یک عمل محاسباتی(مانند +،-،* و/) در زبان ماشین انجام گیرد،حتما باید یکی از 2عملوند(یا متغیر یا محتوای متغیر)از حافظه به داخل یکی از ثباتهای CPU(که واحد ALU در آن است) منتقل شود تا دستور محاسبه(از قبیل+،-،*و/)اجرا شود.
        آیا نمیشود مثلا 2 عدد را که در حافظه اند را مستقیما(بدون انتقال یکی از آنها به داخل ثباتهای CPU) جمع(یا -،*و/)کرد و حاصل را در یکی از خانه های حافظه ذخیره نمود؟
        با سپاس
        شما میتونین از یک دستور جمع استفاده کنین که هردو عملوند در حافظه قرار دارند اما خود سیستم همیشه عملوند اول از حافظه به یک رجیستر مخصوص میاره
        دلیلش هم اینه که در سیکل اجرا شما تنها 1 بار دسترسی به حافظه دارین و اگه بخواین 2 عملوند از حافظه بخونین دچار مشکلی به نام هازارد داده میشین و عملا قادر به اجرای دستور نخواهید بود
        [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

        دیدگاه

        لطفا صبر کنید...
        X