احتمالا اگر کامپیوتر بخونید، بعد از اخذ درس مدار منطقی، درس «معماری کامپیوتر» رو اخذ میکنید. معماری کامپیوتر درس جالبیه، یه جورایی کاربرد روتین مدار منطقی رو میبینید و «مهندسی سخت افزار» یاد میگیرید. اتفاقی که در لایه های پایین کامپیوتر میافته رو درک میکنید و در نهایت، میفهمید که یک کامپیوتر چطور برنامه اجرا میکنه و ... .
مفهومی که در بطن این درس نهفته، مفهومیه به نام «سازمان کامپیوتر» که خب، کمتر بهش توجه میشه. در این ویرگول قصد دارم در مورد تفاوت این دو واژه با هم صحبت کنم :)
معماری کامپیوتر، در واقع عبارت کوتاه شده «معماری مجموعه دستور العمل» کامپیوتره. موضوع اینه که وقتی قراره یک معماری طراحی کنیم، معمولا در نظر میگیریم که کامپیوتر ما قراره چه کنه، مثلا آیا میتونه دستورات پرشی (مثل fork و branch ) انجام بده؟ میتونه ضرب رو مستقیما انجام بده؟ میتونه وقفه (Interrupt) های مخصوص ارتباط با پرینتر رو داشته باشه؟ اینها میشه معماری.
بیاید یک مثال ساده ببینیم.
عکس بالا، معماری پردازنده MIPS رو به صورت سادهشده نشون میده (جهت اطلاعات بیشتر و حتی درک کارکرد، به کتاب معماری کامپیوتر آقای پترسون مراجعه کنید). همونطور که در تصویر مشخصه، ما فقط مشخص کردیم چه اجزایی میخوایم. مثلا ممکنه در ALU هم مشخص کرده باشیم چی میخواهیم :
اما موضوع مهم اینه که مشخص نکردیم هر کدوم از این اجزا، چطور ساخته شدن. یا مثلا عملیات جبری رو چطور انجام میدن و ... .
برای بررسی اون مورد به «سازمان» نیاز داریم.
سازمان کامپیوتر یعنی هربخشی، چطور پیاده سازی شده باشه! بذارید مثال ملموس تر بزنم. عملیات ضرب میتونه توسط Shift منطقی یا محاسباتی انجام شه، میتونه به این شکل هم پیاده بشه :
و خب در طراحی سازمان کامپیوتر، ما در واقع در مرحله Feasibility Study یا «امکانسنجی» هستیم. مثلا اگر فقط قرار باشه ضرب در ۲،۴،۸ و ... انجام بشه، شیفت رجیستر گزینه منطقی تریه تا Binary Multiplier. ولی وقتی مثلا ضرب در ۵ هم داریم، منطقی تر استفاده از ضرب کننده دودوییه.
دو تفاوت عمده اینجا مطرح میشه که در ذیل بهشون اشاره میکنم
امیدوارم که این مطلب به دردتون خورده باشه. در مطالب آینده سعی میکنم در مورد معماری کامپیوتر بیشتر توضیح بدم :)