معماری فون نویمان

معماری وُن نویمان ، یک مدل طراحی برای یک رایانهٔ ارقامی است که از یک واحد پردازش مرکزی و یک حافظهٔ مجزا مستقل برای نگه‌داری از اطلاعات و دستورالعمل‌ها استفاده می‌کند. این طراحی به خاطر جان فون نویمان (دانشمند علوم رایانه‌ای) نامگذاری شده‌است. از این قبیل رایانه‌ها، کار یک ماشین تورینگ را انجام می‌دهند و یک معماری ترتیبی دارند.

یک رایانهٔ ارقامی با برنامهٔ ذخیره شده به گونه‌ای است که دستورهای برنامه‌ریزی شده مانند داده‌ها را در حالت خواندنی-نوشتنی در حافظه دسترسی تصادفی (RAM) نگه‌داری می‌کند.

از معماری این مدل استنتاج می‌شود چون گذرگاه‌ها بین واحدها به اشتراک گذاشته شده‌اند بنابراین در هر لحظه فقط یکی از حالت‌های آوردن دستورها یا انجام عملیات روی داده‌ها صورت می‌گیرد که به آن گلوگاه فون نیومن می‌گویند.

تاریخچه 
کامپیوترهای اولیه دارای برنامه های مشخص و ثابتی بوده اند. برخی از کامپیوترهای امروزین برای سادگی و یا اهداف آموزشی هنوز از طراحی این کامپیوترها استفاده می کنند؛ مثلاً ماشین حساب های رومیزی (در اصل) نیز یک کامپیوتر برنامه ثابت محسوب می شود، چرا که تنها می تواند به پردازش اعداد و اِعمال عملگرهای ریاضیاتی بپردازد و از آن نمی توان برای اجرای یک برنامه ی پردازش واژه و یا بازی کردن استفاده کرد. تغییر برنامه چنین کامپیوترهایی نیاز به تغییر مدارهای آن و در کل تغییر ساختار و طراحی جدیدی دارد. کامپیوترهای اولیه آن قدر هم برای کار خاصی برنامه‌ریزی نشده بودند؛ یعنی غالباً طراحی آن ها به گونه ای بود که برای کار خاصی قابل استفاده باشد تا برنامه ی آن ها. برنامه‌ریزی دوباره یک کامپیوتر، اگر اصلاً ممکن هم بود، فرایند بسیار دشواری می طلبید؛ فرایندی که با فلوچارت ها و کاغذهای یادداشت  شروع می شد و سپس با طراحی های جزئی و مهندسی-شده و کار طاقت فرسایی چون مداربندی دستی و بازسازی ماشین همراه می شد. نصب و رفع اشکال یک برنامه روی انیاک می توانست سه هفته زمان برد.
با پیشنهاد کامپیوتر برنامه-دار، اوضاع دگرگون شد. یک کامپیوتر برنامه-دار، به همراه طراحی فیزیکی خود، مجموعه ای دستورالعمل را شامل می شود و می تواند در حافظه مجموعه ای از دستوراتی (برنامه ها) را برای محاسبات ذخیره کند.
طرح برنامه داربودن کامپیوتر قابلیت خودتغییردهندگی یک کد را فراهم می کند. یکی از انگیزه های اولیه داشتن کد خودتغییردهنده نیاز به برنامه ای با توانایی افزایش و یا در غیر این صورت بهبود قسمت آدرس دستورات، بود؛ چرا که در طراحی های اولیه، اپراتورها، خود مجبور به انجام دستی آن ها بودند. البته با گسترش ثبات های شاخص و آدرس دهی غیرمستقیم به عنوان اجزای معماری کامپیوتر، اهمیت این مورد کمرنگ تر شد. فایده دیگر برنامه-داربودن کامپیوتر، نشاندن داده های پراستفاده در جریان دستورات بوسیله آدرس دهی فوری بود. امروزه دیگر کدهای خودتغییردهنده چندان مورد توجه نیستند چرا که فهم و رفع اشکالات آن ها دشوار و همچنین تحت پردازش خط لوله های مدرن و نقشه های حافظه نهان ناکارآمد است.

قابلیت ها 
در مقیاس بزرگ، قابلیت کار با دستورات به عنوان داده، در واقع پدید آمدن اسمبلرها، کامپایلرها، پیونددهنده ها، باردهنده ها و ابزارهای برنامه‌ریزی خودکار را ممکن ساخت و ایده "برنامه هایی که برنامه می نویسند" را واقعیت بخشید. هم چنین منجر به این شد که اکوسیستم پیچیده ی محاسبه کننده ی خودمیزبان در معماری ماشین های فون نویمان شکوفا گردد.
برخی از زبان های سطح بالا باعث ارتقای معماری فون نویمان شدند: با فراهم کردن روشی انتزاعی و مستقل ازماشین برای کنترل کد قابل اجرا در زمان اجرا شدن (مانند LISP) و یا با استفاده از اطلاعات زمانِ اجرا برای تنظیم کامپایل درجا (مانند زبان های میزبان در ماشین مجازی جاوا، یا زبان های مورد استفاده در مرورگرهای وب).
در مقیاس کوچک، می توان با تکنیک های کامپایل درجا، به بعضی از عملیات های تکرارشونده مانند بیت بلیت یا شیدرهای پیکسلی یا رأسی روی پردازنده های کلی سرعت بخشید. این یکی از قابلیت های کد خودتغییردهنده است که همچنان مورد استفاده قرار گرفته و محبوب می باشد.

تفاوت معماری فون نویمان و هاروارد 
در رایانه‌های شخصی دو نوع معماری عمده وجود دارد.

 معماری فون نویمان: در سال 1945 توسط جان فون نویمان طراحی شد و در حال حاضر به عنوان پایه تقریباً همه رایانه های مدرن خدمت می کند. در آن‌ها امکان واکشی (fetch) یک دستورالعمل و یک داده به‌صورت همزمان وجود ندارد زیرا هر دو از یک گذرگاه مشترک استفاده می‌کنند. این مسئله که به گلوگاه معماری فون نویمان نیز معروف است، باعث کاهش کارایی اینگونه سیستم‌ها می‌شود. این معماری ارزانتر است.
 معماری هاروارد: بر پایه رایانه اصلی رله مستقر در هاروارد مارک اول بنا برای ذخیره دستورالعمل های نوار پانچ طراحی شده است که سیستم های حافظه جداگانه ای را به کار می برد. ایده معماری هاروارد تقسیم حافظه به دو بخش است یکی برای داده ها و دیگری برای برنامه ها. بر خلاف معماری فون نویمان که از یک گذرگاه واحد استفاده می کند تا بتواند دستورالعمل های حافظه را منتقل کند و داده ها را از یک بخش از رایانه به بخش دیگر انتقال دهد، معماری هاروارد فضای حافظه جداگانه ای برای داده ها و دستورالعمل ها دارد. معماری هاروارد یک مفهوم نسبتاً جدید است که در درجه اول در میکروکنترلرها و پردازش سیگنال های دیجیتال مورد استفاده قرار می گیرد. همچنین این معماری گرانتر از سابق است.

جستارهای وابسته 

 معماری هاروارد
 ماشین تورینگ

منابع 

 ویکی‌پدیای انگلیسی

جان فون نویمان
رده‌های رایانه
مسئله‌های حل‌نشده
معرفی‌شده‌های ۱۹۴۵ (میلادی)
معرفی‌شده‌های مرتبط با رایانه در ۱۹۴۵ (میلادی)
معماری رایانه
طبقه‌بندی فلین