loading...
divaneshgh
divaneshgh بازدید : 43 شنبه 26 آذر 1390 نظرات (0)
برای توضیح کار ماشین پیچیده ای مثل کامپیوتر ابتدا باید جزئیات بی نهایتش را حذف کنیم و آن را تا حد امکان ساده کنیم... برای این کار فقط یک پردازنده و یک حافظه متصل به پردازنده را تصور می کنیم!

پردازنده از چند قسمت تشکیل شده که مهمترین قسمتهای آن "واحد حساب و منطق" (ALU) و "واحد کنترل" (Controller) است. در اصل تمام درخواست ها (دستورات کد شده برنامه ها) ابتدا از حافظه وارد واحد کنترل شده و این واحد وظیفه دیکد کردن دستورات را دارد و هر دستور را به واحد مربوطه انتقال می دهد تا انجام شود. (چیزی شبیه واحد پذیرش در بیمارستان!)

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

در این بین دستوراتی برای پردازنده در نظر گرفته شده که بتواند مقدار شمارنده را عوض کند تا روند حرکت کار تغییر کند. به این پرش (JUMP) گفته می شود.

با توجه به این که دستور چه باشد (مثل پرش٬ جمع٬ تفریق٬ ...) مقداری را بر دستور الزام می کند (مثل پرش به کدام آدرس؟ جمع یا تفریق چه مقادیری؟ ...). به این ترتیب به دستور٬ "عملگر" و به مقادیر لازم "عملوند" گفته می شود. نکته دیگر در رابطه با دستور "طول علوند" است. مثلا برای جمع دو عدد یک بایتی٬ دو بایت فضا لازم است که اگر یک بایت هم به دستور جمع اختصاص دهیم می شود سه بایت. ولی برای جمع دو عدد اعشاری ۱۶ بایت فضا لازم است... یعنی پردازنده برای اینکه بداند بعد از عملگر جمع باید چند بایت از حافظه را بخواند٬ باید نوع دستور جمع را بداند! به عبارت دیگر کد عملگر جمع یک بایتی ها با کد عملگر جمع دو بایتی ها متفاوت است.

به عنوان نمونه برنامه زیر محتوای دو متغیر (رجیستر) را با هم جمع می کند.

زبان اسمبلیکد عملیاتی هگزادسیمالکد عملیاتی باینریآدرس حافظه برنامه

LD A,E

7B

01111011

1800

ADD A,D

82

10000010

1801

LD L,A

6F

01101111

1802

LD A,0

3E00

0011111000000000

1803

ADC A,0

CE00

1100111000000000

1805

LD H,A

67

01100111

1807

RST 38H

FF

11111111

1808

به طور خلاصه می توان عملکرد کنترلر پردازنده را مانند چرخ دنده ای تشبیه کرد که با توجه به جریان ورودی الکتریسیته (دستور عملگر) می چرخد و مسیر جریان های دیگر (عملوندها) را به سمت واحد مخصوص هدایت می کند تا عمل مورد نظر در آن واحد ها صورت بگیرد...

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

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

EXbloglor.comEX<-m->http://programmingtips.blogfa.com/post-3.aspx<-mm->ماشین کامپیوتر<-mmm->
ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 63
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 6
  • آی پی امروز : 12
  • آی پی دیروز : 16
  • بازدید امروز : 377
  • باردید دیروز : 27
  • گوگل امروز : 2
  • گوگل دیروز : 1
  • بازدید هفته : 495
  • بازدید ماه : 1,099
  • بازدید سال : 4,983
  • بازدید کلی : 105,197