~/ کامپیوتر چیه؟

شاید اگه ما تو دهه ۶۰ میلادی بدنیا اومده بودیم و با روش ها و سخت افزارهای اون موقع کامپیوتر رو یاد گرفته بودیم خیلی راحت تر و دقیق تر میتونستیم بفهمیم که کامپیوتر(ها) واقعا چجوری کار می‌کنن. (!!!Z80)

تو دنیای پیچیده‌‌یه الان با این همه تنوع سخت افزار و نرم افزار، کمتر کسی پیدا میشه که بپرسه “کامپیوتر اصلا چی هست و چجوری کار میکنه؟”.

یه خاطره‌ی مرتبط با این موضوع:

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

یه چیزی که توجه من رو جلب کرد این بود که برای قبول کردن دانشجوها و اشتراک اون ها تو کلاس های آموزشی باهاشون مصاحبه می‌کرد و اولین سوال تکنیکالی که ازشون می‌پرسید این بود:

انواع و اقسام جواب هارو میشنیدیم:

و غیره..

از اونجایی که این آدم یه معلم واقعی بود، همیشه بعد از پرسیدن این سوال و گرفتن جواب(های) بی‌ربط، ماژیک رو برمیداشت و روی تخته یه شکل می‌کشید که ۳ قسمت داشت:

            +-------+     +-------+     +-------+
            |  CPU  |     |  RAM  |     |  I/O  |
            +-+   +-+     +-+   +-+     +-+   +-+
              |   |         |   |         |   |
    ----------+   +---------+   +---------+   +----------
Bus
    -----------------------------------------------------

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

کارش چیه؟ حساب و کتاب! دقیقا! دو-دوتا-چهارتا! جمع، تفریق، ضرب، تقسیم.

چجوری این کار رو انجام میده؟ سوال خوبیه! یه بخشی از اون مربوط به ساختار و “مدل” پردازنده میشه و یه بخشی از اون هم مربوط به معماری که بر پایه‌ی اون پردازنده مورد نظر ساخته شده.

یه پردازنده بخش های مختلفی داره و آشنایی با اونها رو از رجیسترها(registers) شروع می‌کنیم.

رجیستر ها کارشون نگه داشتن اطلاعات بصورت موقته و سرعت دسترسی به اون‌ها هم خیلی زیاده. (یکی از “داخلی ترین” قسمتهای یه پردازنده بحساب میان.)

حجم(size) رجیستر ها تعیین کننده یه چیز خیلی مهمه: چه مقدار RAM رو یه CPU میتونه بصورت مستقیم آدرس دهی کنه. (و خیلی چیزای دیگه که بعدا باهاشون آشنا میشیم.)

معماری ای که ما کارمون رو باهاش شروع میکنیم ۳۲بیتی حساب میشه ولی حالا اصلا ۳۲بیت یعنی چی؟

به زبان ساده: ۳۲ تا بیت!

حالا بیت چیه؟ چراغ! یا روشنه یا خاموش و از اونجایی که پردازش کامپیوتر بصورت دیجیتال انجام میشه، چیزی مثل “تقریبا روشن” یا “یکم خاموش” وجود نداره. وضعیت هرکدوم از این چراغها یا صفر(0) میتونه باشه یا یک(1). دقیقا! همون باینری یا مبنی ۲ یا دو-دویی.

برای اینکه این پست خیلی طولانی نشه و موضوعات مختلف هم خیلی باز نمونن بهتره همینجا تموم بشه و برای یادگیری مطالب بعدی هم خودتون به سلیقه خودتون از هرجایی که دوست دارید و با استفاده هر منبعی که خواستید اصول اولیه باینری رو یاد بگیرید و با تبدیل اعداد از/به مبنی های دیگه(مخصوصا hex یا hexadecimal) آشنا بشید.

موفق و سربلند باشید.