در روزهای ابتدایی شکل گیری مجازیسازی، مجازی سازها به صورت نرمافزاری پیاده سازی میشدند. بهعبارتی نرمافزارها دستورالعملها را به صورت نرمافزاری شبیهسازی میکردند.
در مجازیسازهای نرمافزاری سرعت اجرای ماشینها به دلیل سربار فراوانی که وجود داشته بسیار پایین بود. VMWare از اولین مجازیسازهای نرمافزاری بود.
نسل اول مجازیسازهای سختافزاری با استفاده از اکستنشن VT-x و یا AMD-V پیاده سازی شد. این اکستنشن دستورات ماشینهای مجازی را به صورت سختافزاری اجرا میکردند در نتیجه سرعت اجرای ماشینها افزایش یافت.
با وجود افزایش سرعت مدیریت حافظه و I/O هنوز مشکلی حل نشده بود. Xen از جمله اولین مجازیسازهایی بود که با استفاده از paravirtualization و با تغییر در (کدهای) ماشین مجازی تلاش کرد مشکل مدیریت حافظه و I/O را حل کند.
نسل سوم مجازیسازهای سختافزاری که با نام Second Level Address Translation و یا SLAT شناخته میشود، این نسل با استفاده از اکستنشن NPT/EPT کار میکند و تلاش کردهاست تا مشکل مدیریت حافظه را حل کند. از آنجا که در این روش مدیریت حافظه به صورت شفاف و در پایینترین لایه سخت افزاری انجام میشود هزینه کاهش پیدا میکند.
تا قبل از ساخت NPT/EPT ماشینهای مجازی مدیریت حافظه یا MMU را به صورت نرمافزاری مدیریت میکردند. برای درک بهتر موضوع باید با hardware page tables و مدیریت حافظه آشنا شویم.
سختافزارها قسمتی دارند به نام hardware page tables که در آن جدول محل هر پیج حافظه مشخص شدهاست، اطلاعات برنامه نمونه A به بخشهای کوچکی تقسیم میشود و ممکن است در قسمتهای متفاوت حافظه پخش شود. محل هر بخش از این اطلاعات در hardware page tables دخیره میشود و برنامهها (سیستمعامل) میتوانند با استفاده از اطلاعات این جدول به محل دقیق اطلاعات دسترسی داشته باشند.
در مجازیسازها سیستمعاملهای ماشینهای مجازی نباید به این جدول دسترسی داشته باشند. اگر برنامههای داخل ماشین مجازی به hardware page tables دسترسی داشته باشند میتوانند دادههای ماشینهای دیگر را نیز بخوانند و یا تغییر دهند. در نتیجه مجازیسازی سعی میکند با استفاده از Shadow page tables اطلاعات محل هر پیج حافظه ماشین مجازی را به جدول hardware page tables لینک کند.
نسل سوم مجازیسازهای سختافزاری با افزودن واحد جدیدی به حافظه عمل تبدیل آدرس حافظه را به صورت اتوماتیک و بدون دخالت ماشین مجازی انجام میدهد.