ز زمان رايانههاي اوليه كه در سال ۱۹۴۱ ساخته شده بودند تا كنون فناوريهاي ديجيتالي رشد نمودهاست، معماري فون نوِيمن يك رايانه را به چهار بخش اصلي توصيف ميكند: واحد محاسبه و منطق (Arithmetic and Logic Unit يا ALU)، واحد كنترل يا حافظه، و ابزارهاي ورودي و خروجي (كه جمعاً I/O ناميده ميشود). اين بخشها توسط اتصالات داخلي سيمي به نام گذرگاه (bus) با يكديگر در پيوند هستند.
حافظه
در اين سامانه، حافظه بصورت متوالي شماره گذاري شده در خانهها است، هركدام محتوي بخش كوچكي از دادهها ميباشند. دادهها ممكن است دستورالعملهايي باشند كه به رايانه ميگويند كه چه كاري را انجام دهد باشد. خانه ممكن است حاوي اطلاعات مورد نياز يك دستورالعمل باشد. اندازه هر خانه، و تعداد خانهها، در رايانهٔ مختلف متفاوت است، همچنين فناوريهاي بهكاررفته براي اجراي حافظه نيز از رايانهاي به رايانه ديگر در تغيير است (از بازپخشكنندههاي الكترومكانيكي تا تيوپها و فنرهاي پر شده از جيوه يا ماتريسهاي ثابت مغناطيسي و در آخر ترانزيستورهاي واقعي و مدار مجتمعها با ميليونها فيوز نيمه هادي يا MOSFETهايي با عملكردي شبيه ظرفيت خازني روي يك تراشه تنها).
پردازش
واحد محاسبه و منطق يا ALU دستگاهي است كه عمليات پايه مانند چهار عمل اصلي حساب (جمع و تفريق و ضرب و تقسيم)، عمليات منطقي (و، يا، نقيض)، عمليات قياسي (براي مثال مقايسه دو بايت براي شرط برابري) و دستورها انتصابي براي مقدار دادن به يك متغير را انجام ميدهد. اين واحد جائيست كه «كار واقعي» در آن صورت ميپذيرد.
البته CPUها به دو دسته كلي RISC و CISC تقسيمبندي ميشوند. نوع اول پردازش گرهاي مبتني بر اعمال ساده هستند و نوع دوم پردازشگرهاي مبتني بر اعمال پيچيده ميباشند. پردازشگرهاي مبتني بر اعمال پيچيده در واحد محاسبه و منطق خود داراي اعمال و دستورهايي بسيار فراتر از چهار عمل اصلي يا منطقي ميباشند. تنوع دستورها اين دسته از پردازندهها تا حدي است كه توضيحات آنها خود ميتواند يك كتاب با قطر متوسط ايجاد كند. پردازندههاي مبتني بر اعمال ساده اعمال بسيار كمي را پوشش ميدهند و در حقيقت براي برنامهنويسي براي اين پردازندهها بار نسبتاً سنگيني بر دوش برنامهنويس است. اين پردازندهها تنها حاوي ۴ عمل اصلي و اعمال منطقي رياضي و مقايسهاي به علاوه چند دستور بياهميت ديگر ميباشند. هرچند ذكر اين نكته ضروري است كه دستورها پيچيده نيز از تركيب تعدادي دستور ساده تشكيل شدهاند و براي پيادهسازي اين دستورها در معماريهاي مختلف از پيادهسازي سختافزاري (معماري CISC) و پيادهسازي نرمافزاري (معماري RISC) استفاده ميشود.
(قابل ذكر است پردازندههاي اينتل از نوع پردازنده مبتني بر اعمال پيچيده ميباشند)
واحد كنترل همچنين اين مطلب را كه كدامين بايت از حافظه حاوي دستورالعمل فعلي اجرا شوندهاست را تعقيب ميكند، سپس به واحد محاسبه و منطق اعلام ميكند كه كدام عمل اجرا و از حافظه دريافت شود و نتايج به بخش اختصاص داده شده از حافظه ارسال گردد. بعد از يك بار عمل، واحد كنترل به دستورالعمل بعدي ارجاع ميكند (كه معمولاً در خانه حافظه بعدي قرار دارد، مگر اينكه دستورالعمل جهش دستورالعمل بعدي باشد كه به رايانه اعلام ميكند دستورالعمل بعدي در خانه ديگر قرار گرفتهاست).
ورودي/خروجي
بخش ورودي/خروجي (I/O) اين امكان را به رايانه ميدهد تا اطلاعات را از جهان بيرون تهيه و نتايج آنها را به همانجا برگرداند. محدوده فوقالعاده وسيعي از دستگاههاي ورودي/خروجي وجود دارد، از خانواده آشناي صفحهكليدها، نمايشگرها، نَرمديسك گرفته تا دستگاههاي كمي غريب مانند رايابينها (webcams). (از ساير ورودي/خروجيها ميتوان موشواره mouse، قلم نوري، چاپگرها (printer)، اسكنرها، انواع لوحهاي فشرده(CD, DVD) را نام برد).
چيزي كه تمامي دستگاههاي عمومي در آن اشتراك دارند اين است كه آنها رمزكننده اطلاعات از نوعي به نوع ديگر كه بتواند مورد استفاده سيستمهاي رايانه ديجيتالي قرار گيرد، هستند. از سوي ديگر، دستگاههاي خروجي آن اطلاعات به رمز شده را رمزگشايي ميكنند تا كاربران آنها را دريافت نمايند. از اين رو يك سيستم رايانه ديجيتالي يك نمونه از يك سامانه دادهپردازي ميباشد.
دستورالعملها
هر رايانه تنها داراي يك مجموعه كمتعداد از دستورالعملهاي ساده و تعريف شده ميباشد. از انواع پركاربردشان ميتوان به دستورالعمل «محتواي خانه ۱۲۳ را در خانه ۴۵۶ كپي كن!»، «محتواي خانه ۶۶۶ را با محتواي خانه ۰۴۲ جمع كن، نتايج را در خانه ۰۱۳ كپي كن!»، «اگر محتواي خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع كن!» اشاره كرد.
دستورالعملها در داخل رايانه بصورت اعداد مشخص شدهاند - مثلاً كد دستور العمل (copy instruction) برابر ۰۰۱ ميتواند باشد. مجموعه معين دستورالعملهاي تعريف شده كه توسط يك رايانه ويژه پشتيباني ميشود را زبان ماشين مينامند. در واقعيت، اشخاص معمولاً به زبان ماشين دستورالعمل نمينويسند بلكه بيشتر به نوعي از انواع سطح بالاي زبانهاي برنامهنويسي، برنامهنويسي ميكنند تا سپس توسط برنامه ويژهاي (تفسيرگرها (interpreters) يا همگردانها (compilers) به دستورالعمل ويژه ماشين تبديل گردد. برخي زبانهاي برنامهنويسي از نوع بسيار شبيه و نزديك به زبان ماشين كه اسمبلر (يك زبان سطح پايين) ناميده ميشود، استفاده ميكنند؛ همچنين زبانهاي سطح بالاي ديگري نيز مانند پرولوگ نيز از يك زبان انتزاعي و چكيده كه با زبان ماشين تفاوت دارد بجاي دستورالعملهاي ويژه ماشين استفاده ميكنند.
معماريها
در رايانههاي معاصر واحد محاسبه و منطق را به همراه واحد كنترل در يك مدار مجتمع كه واحد پردازشي مركزي (CPU) ناميده ميشود، جمع نمودهاند. عموماً، حافظه رايانه روي يك مدار مجتمع كوچك نزديك CPU قرار گرفته. اكثريت قاطع بخشهاي رايانه تشكيل شدهاند از سامانههاي فرعي (به عنوان نمونه، منبع تغذيه رايانه) يا دستگاههاي ورودي/خروجي.
برخي رايانههاي بزرگتر چندين CPU و واحد كنترل دارند كه بصورت همزمان با يكديگر درحال كارند. اينگونه رايانهها بيشتر براي كاربردهاي پژوهشي و محاسبات علمي بكار ميروند.
كارايي رايانهها بنا به تئوري كاملاً درست است. رايانه دادهها و دستورالعملها را از حافظهاش واكشي (fetch) ميكند. دستورالعملها اجرا ميشوند، نتايج ذخيره ميشوند، دستورالعمل بعدي واكشي ميشود. اين رويه تا زماني كه رايانه خاموش شود ادامه پيدا ميكند. واحد پردازنده مركزي در رايانههاي شخصي امروزي مانند پردازندههاي شركت اي-ام-دي و شركت اينتل از معماري موسوم به خط لوله استفاده ميشود و در زماني كه پردازنده در حال ذخيره نتيجه يك دستور است مرحله اجراي دستور قبلي و مرحله واكشي دستور قبل از آن را آغاز ميكند. همچنين اين رايانهها از سطوح مختلف حافظه نهانگاهي استفاده ميكنند كه در زمان دسترسي به حافظه اصلي صرفهجويي كنند.
برنامهها
برنامه رايانهاي فهرستهاي بزرگي از دستورالعملها (احتمالاً به همراه جدولهايي از داده) براي اجرا روي رايانه هستند. خيلي از رايانهها حاوي ميليونها دستورالعمل هستند، و بسياري از اين دستورها به تكرار اجرا ميشوند. يك رايانه شخصي نوين نوعي (درسال ۲۰۰۳) ميتواند در ثانيه ميان ۲ تا ۳ ميليارد دستورالعمل را پياده نمايد. رايانهها اين مقدار محاسبه را صرف انجام دستورالعملهاي پيچيده نميكنند. بيشتر ميليونها دستورالعمل ساده را كه توسط اشخاص باهوشي «برنامه نويسان» در كنار يكديگر چيده شدهاند را اجرا ميكنند. برنامهنويسان خوب مجموعههايي از دستورالعملها را توسعه ميدهند تا يكسري از وظايف عمومي را انجام دهند (براي نمونه، رسم يك نقطه روي صفحه) و سپس آن مجموعه دستورالعملها را براي ديگر برنامهنويسان در دسترس قرار ميدهند. (اگر مايليد «يك برنامهنويس خوب» باشيد به اين مطلب مراجعه نماييد)
رايانههاي امروزه، قادرند چندين برنامه را در آن واحد اجرا نمايند. از اين قابليت به عنوان چندكارگي (multitasking) نام برده ميشود. در واقع، CPU يك رشته دستورالعملها را از يك برنامه اجرا ميكند، سپس پس از يك مقطع ويژه زماني دستورالعملهايي از يك برنامه ديگر را اجرا ميكند. اين فاصله زماني اكثراً بهعنوان يك برش زماني (time slice) نام برده ميشود. اين ويژگي كه CPU زمان اجرا را بين برنامهها تقسيم ميكند، اين توهم را بوجود ميآورد كه رايانه همزمان مشغول اجراي چند برنامهاست. اين شبيه به چگونگي نمايش فريمهاي يك فيلم است، كه فريمها با سرعت بالا در حال حركت هستند و به نظر ميرسد كه صفحه ثابتي تصاوير را نمايش ميدهد. سيستمعامل همان برنامهاي است كه اين اشتراك زماني را بين برنامههاي ديگر تعيين ميكند.
سيستمعامل
كامپيوتر هميشه نياز دارد تا براي بكار انداختنش حداقل يك برنامه روي آن در حال اجرا باشد. تحت عملكردهاي عادي اين برنامه همان سيستمعامل يا OS كه مخفف واژههاي Operating System است. سيستم يا سامانه عامل بر اساس پيشفرضها تصميم ميگيرد كه كدام برنامه براي انجام چه وظيفهاي اجرا شود، چه زمان، از كدام منابع (مثل حافظه، ورودي/خروجي و…) استفاده شود. همچنين سيستمعامل يك لايه انتزاعي بين سختافزار و برنامههاي ديگر كه ميخواهند از سختافزار استفاده كنند، ميباشد، كه اين امكان را به برنامه نويسان ميدهد تا بدون اينكه جزئيات ريز هر قطعه الكترونيكي از سختافزار را بدانند بتوانند براي آن قطعه برنامهنويسي نمايند. در گذشته يك اصطلاح متداول بود كه گفته ميشد با تمام اين وجود كامپيوترها نميتوانند برخي از مسائل را حل كنند كه به اين مسائل حل نشدني گفته ميشود مانند مسائلي كه در مسير حلشان در حلقه بينهايت ميافتند. به همين دليل نياز است كه با كمك روشهاي خاص بطور مثال به چند بخش تقسيم نمودن مسئله يا روشهاي متداول ديگر از رخ دادن اين خطا تا حد امكان جلوگيري نمود. از جمله سيستم عاملهاي امروزي ميتوان به مايكروسافت ويندوز، مكينتاش اپل و لينوكس و بي اس دي اشاره كرد.