واحد محاسبه و منطق (Arithmetic & Logic Unit) به اختصار (ALU)، مداری دیجیتالی است که عملیات حساب و منطق را انجام میدهد. یک قطعه اساسی از واحد پردازش مرکزی در کامپیوتر است. و حتی سادهترین میکروپردازندهها نیز دارای یک واحد محاسبه و منطق برای کارهایی از قبیل محاسبات اولیه مانند جمع و تقسیم و ... هستند. پردازندههای موجود درپردازشگر(CPU)های مدرن و و پردازندههای گرافیکی(GPU) داری واحد محاسبه و منطق قدرتمند ودر عین حال پیچیدهای هستند. ممکن است هر قطعه دارای بیش از یک واحد محاسبه و منطق باشد. جان فون نویمن که یک ریاضی دان بود مفهوم ALU را در سال 1945، هنگامی که در حال نوشتن گزارش برای کامپیوتر جدید خود به نام EDVAC بود، مطرح کرد.
معماری CPU از نظر دستورالعملهای ALU به دو شکل RISC و CISC
RISC که مخفف Reduced instruction Set Computing یا مجموعه دستورها ساده شده است در واقع نوعی از طراحی CPU است که پایه و اساس آن، سادهسازی دستورها است که منجر به بازده بالا و سرعت بخشیدن به اجرای دستورها میشود. پردازندهای که براساس این طراحی ساخته میشود را RISC (بخوانید ریسک) مینامند. مهمترین و معروفترین معماری که براساس RISC طراحی شده، ARM است. درست نقطه مقابل ریسک، طراحی دیگری با نام CISC وجود دارد که مخفف Complex Instruction Set Computing یا مجموعه دستورها پیچیده است که معماری x86 اینتل براساس آن طراحی شده و پردازنده کامپیوترهای رومیزی و لپتاپها و بسیاری از ابزارهای دیگر از آن بهره میبرند. ایده اصلی RISC اولین بار توسط جان کوکی از IBM و در سال ۱۹۷۴ شکل گرفت، نظریه او به این موضوع اشاره داشت که یک کامپیوتر تنها از ۲۰ درصد از دستورها نیاز دارد و ۸۰ درصد دیگر، دستورها غیرضروری هستند. پردازندههای ساخته شده براساس این طراحی از دستورها کمی پشتیبانی میکنند به این ترتیب به ترانزیستور کمتری نیز نیاز دارند و ساخت آنها نیز کم هزینه است. با کاهش تعداد ترانزیستورها و اجرای دستورها کمتر، پردازنده در زمان کمتری دستورها را پردازش میکند. کمی بعد اصطلاح RISC توسط یک استاد دانشگاه کالیفورنیا به نام دیوید پترسون ایجاد شد. هر دو طراحی RISC و CISC به مراتب در انواع و اقسام ابزارها بکار گرفته میشوند، اما مفهوم کلی RISC در واقع سیستمی است که در آن به پردازش دستورها کوچک و به شدت بهینه شده پرداخته میشود، درست برخلاف CISC که در آن دستورها پیچیده ارسال میشوند. یکی از تفاوتهای عمده بین RISC و CISC نیز در نحوه دسترسی به حافظه و ذخیره و اجرای اطلاعات برروی آن است. در ریسک دسترسی به حافظه تنها از طریق دستورالعملهای حاصلی قابل انجام است و به عنوان مثال نمیتوان از بخشی از دستور add به حافظه دسترسی داشت. علاوه بر ARM شرکتهای بسیار دیگری از جمله Intel i860, AMD 29k, ARC و غیره از طراحی RISC برای ساخت پردازنده استفاده میکنند، اما به لطف گسترش تلفن و تبلتها، معماری ARM به عنوان برجستهترین معماری مبتنی بر RISC شناخته میشود.
معماری cpu از نظر باس های داده و برنامه (هاروارد و وننیومن)
میکروپروسسور باید فضای حافظه برای نگهداری برنامه (کد) و داده داشته باشد. در حالی که کد دستورالعمل را برای cpu فراهم می کند، داده اطلاعات را برای پردازش فراهم می نماید. کامپیوترهای اولیه از یک گذرگاه برای داده و کد استفاده می کردند. به این گونه معماری ون نیومن می گویند. به همین علت در کامپیوترهای ون نیومن، امکان دسترسی همزمان به کد و داده وجود ندارد. چون هر کدام باید برای اتمام کار دیگری صبر کند، سرعت پردازش cpu کاهش پیدا می کند. برای سرعت بخشیدن به فرایند اجرای برنامه بعضی از cpu ها از معماری هاروارد استفاده می کنند. در معماری هاروارد باس های جدا برای کد و داده وجود دارد. در این صورت به ۴ مجموعه باس نیاز داریم:
- مجموعه ای از باس های داده برای انتقال داده به داخل و خارج cpu
- مجموعه ای از باس های آدرس برای دسترسی به داده
- مجموعه ای از باس های داده برای انتقال کد به داخل و خارج cpu
- باس آدرس برای دسترسی به کد
پیاده سازی معماری هارواد داخل یک میکروکنترلر که تمام حافظه ها داخلی و فاصله ها در حد میکرون و میلی متر است، ساده خواهد بود. اما پیاده سازی معماری هاروارد برای سیستم هایی مثل کامپیوترهایی با مدل x86 IBM بسیار گران است. زیرا RAM و ROM هایی که داده و کد را نگهداری می کنند، خارج cpu قرار دارند. معماری هاروارد ناگزیر به داشتن تعداد زیادی پایه است که از خود میکروپروسسور بیرون آمده باشد. به همین دلیل شما در کامپیوترهای معمولی معماری هاروارد را نمی بینید. در حالی که میکروکنترلرهایی مانند PIC از معماری هاروارد استفاده می کنند. اما اگر نیازی به حافظه ی خارجی برای کد و داده داشته باشند، از معماری ون نیومن استفاده می کنند. معماری ون نیومن در دانشگاه پرینستون تولید شده است، در حالی که معماری هاروارد محصول دانشگاه هاروارد است.
مرحله ی اول طراحی یک CPU
در مورد طراحی CPU شاید گفتن اولین مرحله چیست درست نباشد ولی بدون شک مشخص کردن کدهای RTL اولین مرحله از شروع طراحی سخت افزار است. هنگامی که ما کدها و دستورات را در سطح Register-transfer level مشخص کردیم میتوانیم دستورات را دسته بندی کنیم و اولین مرحله از برنامه نویسی VHDL یعنی طراحی یک ALU که هدف ما را اجرا نماید شروع کنیم.البته نوع معماری RISC یا CISC و یا نوع باسها که هاروارد باشد یا ون نیومن باید در مرحله ی RTL نویسی انتخاب شود تا مدل ALU طراحی شده مشخص گردد.در طراحی ALU بر اساس معماری RISC ما با دستورات کمتری سرو کار داریم و طراحی ALU ساده تر میشود و در واقع دسستورات پر کاربرد دستوارت دیگر را پوشش میدهند.
طراحی ALU32 بیتی با VHDL و شبیه سازی با مدل سیم 10.1
ALU طراحی شده دارای یک رجیستر دستور 3 بیتی است و در نتیجه 8 دستور را میتواند اجرا نماید این 8 دستور به شکل زیر هستند:
when "000" => enum_op <= op_and
when "001" => enum_op <= op_xor
when "010" => enum_op <= op_add
when "100" => enum_op <= op_a_and_nb
when "101" => enum_op <= op_a_xor_nb
when "110" => enum_op <= op_sub
when "111" => enum_op <= op_compare
when others => enum_op <= op_nop
مدار طراحی شده با VHDLرا در شبیه ساز مدل سیم ورژن 10.1C تست کرده ایم و خروجی به شکل زیر بوده است:
همانظور که در شکل بالا مشخص است خروجی شبیه ساز دو عدد 3000 و 1000 را از هم کم میکند و سپس عدد 2000 و 6000 را با هم جمع میکند که نتایج به درستی نمایش داده شده است.
توضیحات بیشتر | قیمت : 10000 تومان |