Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Kompyuter tizimi simulyatorlari haqidagi maqolaning ikkinchi qismida men kompyuter simulyatorlari haqida oddiy kirish shaklida, ya'ni o'rtacha foydalanuvchi tez-tez duch keladigan to'liq platformali simulyatsiya haqida, shuningdek soat bo'yicha gapirishni davom ettiraman. -ishlab chiquvchilar doiralarida tez-tez uchraydigan soat modeli va izlari.

Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Π’ birinchi qism Men umuman simulyatorlar nima ekanligini, shuningdek, simulyatsiya darajalari haqida gapirdim. Endi, bu bilimlarga asoslanib, men bir oz chuqurroq sho'ng'ishni va to'liq platformali simulyatsiya, izlarni qanday to'plash, ular bilan keyin nima qilish kerakligi, shuningdek, soatma-soat mikroarxitektura emulyatsiyasi haqida gapirishni taklif qilaman.

To'liq platforma simulyatori yoki "Dalada yolg'iz jangchi emas"

Agar siz ma'lum bir qurilmaning ishlashini o'rganmoqchi bo'lsangiz, masalan, tarmoq kartasi yoki ushbu qurilma uchun proshivka yoki drayverni yozmoqchi bo'lsangiz, unda bunday qurilmani alohida simulyatsiya qilish mumkin. Biroq, uni infratuzilmaning qolgan qismidan ajratilgan holda ishlatish juda qulay emas. Tegishli drayverni ishga tushirish uchun sizga markaziy protsessor, xotira, ma'lumotlar avtobusiga kirish va boshqalar kerak bo'ladi. Bundan tashqari, drayver ishlashi uchun operatsion tizim (OT) va tarmoq stekini talab qiladi. Bundan tashqari, alohida paket generatori va javob serveri talab qilinishi mumkin.

To'liq platformali simulyator to'liq dasturiy ta'minot to'plamini ishga tushirish uchun muhit yaratadi, u BIOS va bootloaderdan tortib OT ning o'zi va uning turli quyi tizimlari, masalan, bir xil tarmoq stek, drayverlar va foydalanuvchi darajasidagi ilovalarni o'z ichiga oladi. Buning uchun u ko'pgina kompyuter qurilmalarining dasturiy modellarini amalga oshiradi: protsessor va xotira, disk, kiritish / chiqarish qurilmalari (klaviatura, sichqoncha, displey), shuningdek, bir xil tarmoq kartasi.

Quyida Intel'dan x58 chipsetining blok diagrammasi keltirilgan. Ushbu chipsetdagi to'liq platformali kompyuter simulyatori sanab o'tilgan qurilmalarning ko'pchiligini, jumladan, blok diagrammada batafsil tasvirlanmagan IOH (Kirish/chiqish uyasi) va ICH (Kirish/chiqish boshqaruvchisi uyasi) ichidagi qurilmalarni amalga oshirishni talab qiladi. . Amaliyot shuni ko'rsatadiki, biz ishlatmoqchi bo'lgan dasturiy ta'minot tomonidan foydalanilmaydigan qurilmalar ko'p emas. Bunday qurilmalarning modellarini yaratish shart emas.

Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Ko'pincha, to'liq platformali simulyatorlar protsessor ko'rsatmalari darajasida amalga oshiriladi (ISA, pastga qarang). oldingi maqola). Bu simulyatorning o'zini nisbatan tez va arzon yaratish imkonini beradi. ISA darajasi ham yaxshi, chunki u tez-tez o'zgarib turadigan, masalan, API/ABI darajasidan farqli o'laroq, ko'proq yoki kamroq doimiy bo'lib qoladi. Bundan tashqari, ko'rsatmalar darajasida amalga oshirish sizga o'zgartirilmagan ikkilik dasturiy ta'minotni ishga tushirishga imkon beradi, ya'ni allaqachon tuzilgan kodni haqiqiy apparatda qo'llanilganidek hech qanday o'zgarishsiz ishga tushirishga imkon beradi. Boshqacha qilib aytadigan bo'lsak, siz qattiq diskingizning nusxasini ("axlat") qilishingiz mumkin, uni to'liq platformali simulyatorda model uchun tasvir sifatida ko'rsatishingiz va voila! – Operatsion tizim va boshqa dasturlar simulyatorga qoβ€˜shimcha harakatlarsiz yuklanadi.

Simulyatorning ishlashi

Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Yuqorida aytib o'tilganidek, butun tizimni, ya'ni uning barcha qurilmalarini simulyatsiya qilish jarayoni juda sekin. Agar siz bularning barchasini juda batafsil darajada, masalan, mikroarxitektura yoki mantiqiy darajada amalga oshirsangiz, unda bajarish juda sekinlashadi. Ammo ko'rsatmalar darajasi mos tanlov bo'lib, OS va dasturlarni foydalanuvchi bilan qulay muloqot qilish uchun etarli tezlikda bajarishga imkon beradi.

Bu erda simulyatorning ishlashi mavzusiga to'xtalib o'tish o'rinli bo'ladi. Odatda u IPS (sekundiga ko'rsatmalar), aniqrog'i MIPS (million IPS) da, ya'ni simulyator tomonidan bir soniyada bajariladigan protsessor ko'rsatmalari soni bilan o'lchanadi. Shu bilan birga, simulyatsiya tezligi simulyatsiya o'zi ishlaydigan tizimning ishlashiga ham bog'liq. Shuning uchun, simulyatorning "sekinlashishi" haqida dastlabki tizimga nisbatan gapirish to'g'riroq bo'lishi mumkin.

QEMU, VirtualBox yoki VmWare Workstation kabi bozordagi eng keng tarqalgan to'liq platformali simulyatorlar yaxshi ishlashga ega. Simulyatorda ish ketayotgani foydalanuvchi uchun sezilmasligi ham mumkin. Bu protsessorlarda amalga oshirilgan maxsus virtualizatsiya imkoniyatlari, ikkilik tarjima algoritmlari va boshqa qiziqarli narsalar tufayli sodir bo'ladi. Bularning barchasi alohida maqola uchun mavzu, ammo qisqasi, virtualizatsiya zamonaviy protsessorlarning apparat xususiyati bo'lib, u simulyatorlarga ko'rsatmalarni taqlid qilishni emas, balki ularni bajarish uchun to'g'ridan-to'g'ri haqiqiy protsessorga yuborish imkonini beradi, agar, albatta, arxitekturasi simulyator va protsessor o'xshash. Ikkilik tarjima - mehmon mashina kodini xost kodiga tarjima qilish va keyinchalik haqiqiy protsessorda bajarilishi. Natijada, simulyatsiya biroz sekinroq, 5-10 marta va ko'pincha hatto haqiqiy tizim bilan bir xil tezlikda ishlaydi. Bunga ko'plab omillar ta'sir qilsa-da. Misol uchun, agar biz bir necha o'nlab protsessorli tizimni taqlid qilmoqchi bo'lsak, tezlik darhol bir necha o'nlab marta pasayadi. Boshqa tomondan, so'nggi versiyalardagi Simics kabi simulyatorlar ko'p protsessorli xost uskunasini qo'llab-quvvatlaydi va simulyatsiya qilingan yadrolarni haqiqiy protsessor yadrolariga samarali parallellashtiradi.

Agar biz mikroarxitektura simulyatsiyasi tezligi haqida gapiradigan bo'lsak, u odatda simulyatsiyasiz oddiy kompyuterda bajarilganidan taxminan 1000-10000 marta sekinroq bo'lgan bir necha buyurtmalardir. Va mantiqiy elementlar darajasida amalga oshirish bir necha darajalar bo'yicha sekinroq. Shuning uchun, bu darajadagi emulyator sifatida FPGA ishlatiladi, bu esa unumdorlikni sezilarli darajada oshirishi mumkin.

Quyidagi grafik simulyatsiya tezligining model detaliga taxminiy bog'liqligini ko'rsatadi.

Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Beat-by-beat simulyatsiyasi

Past tezlikka qaramay, mikroarxitektura simulyatorlari juda keng tarqalgan. Protsessorning ichki bloklarini simulyatsiya qilish har bir buyruqning bajarilish vaqtini aniq taqlid qilish uchun zarur. Bu erda tushunmovchilik paydo bo'lishi mumkin - axir, nima uchun har bir ko'rsatma uchun bajarilish vaqtini dasturlash kerak emas. Ammo bunday simulyator juda noto'g'ri bo'ladi, chunki bir xil ko'rsatmani bajarish vaqti qo'ng'iroqdan qo'ng'iroqqa farq qilishi mumkin.

Eng oddiy misol - xotiraga kirish bo'yicha ko'rsatma. Agar so'ralgan xotira joyi keshda mavjud bo'lsa, unda bajarish vaqti minimal bo'ladi. Agar bu ma'lumot keshda bo'lmasa ("keshni o'tkazib yuborish"), bu ko'rsatmani bajarish vaqtini sezilarli darajada oshiradi. Shunday qilib, aniq simulyatsiya uchun kesh modeli talab qilinadi. Biroq, masala kesh modeli bilan cheklanmaydi. Protsessor ma'lumotlar keshda bo'lmaganda xotiradan olinishini kutmaydi. Buning o'rniga u xotiradan o'qish natijasiga bog'liq bo'lmaganlarni tanlab, keyingi ko'rsatmalarni bajarishni boshlaydi. Bu protsessorning bo'sh vaqtini minimallashtirish uchun zarur bo'lgan "tartibsiz" ijro (OOO, tartibsiz bajarilish) deb ataladi. Tegishli protsessor bloklarini modellashtirish ko'rsatmalarni bajarish vaqtini hisoblashda bularning barchasini hisobga olishga yordam beradi. Xotiradan o'qish natijasi kutilayotgan vaqtda bajariladigan ushbu ko'rsatmalar orasida shartli o'tish operatsiyasi paydo bo'lishi mumkin. Agar shartning natijasi hozircha noma'lum bo'lsa, protsessor yana bajarishni to'xtatmaydi, balki "taxmin" qiladi, tegishli bo'limni amalga oshiradi va o'tish nuqtasidan boshlab ko'rsatmalarni faol ravishda bajarishni davom ettiradi. Tarmoqli bashoratchi deb ataladigan bunday blok mikroarxitektura simulyatorida ham amalga oshirilishi kerak.

Quyidagi rasmda protsessorning asosiy bloklari ko'rsatilgan, uni bilish shart emas, u faqat mikroarxitekturani amalga oshirishning murakkabligini ko'rsatish uchun ko'rsatilgan.

Kompyuter tizimlarining simulyatorlari: tanish to'liq platformali simulyator va soat yo'nalishi bo'yicha noma'lum va izlar

Haqiqiy protsessordagi barcha bu bloklarning ishlashi maxsus soat signallari bilan sinxronlashtiriladi va modelda ham xuddi shunday bo'ladi. Bunday mikroarxitektura simulyatori aniq tsikl deb ataladi. Uning asosiy maqsadi ishlab chiqilayotgan protsessorning ishlashini aniq bashorat qilish va/yoki muayyan dasturning, masalan, benchmarkning bajarilish vaqtini hisoblashdir. Agar qiymatlar talab qilinganidan past bo'lsa, u holda algoritmlar va protsessor bloklarini o'zgartirish yoki dasturni optimallashtirish kerak bo'ladi.

Yuqorida ko'rsatilgandek, soatma-soat simulyatsiyasi juda sekin, shuning uchun u faqat dastur ishlashining ma'lum momentlarini o'rganishda qo'llaniladi, bu erda dasturning haqiqiy bajarilishi tezligini aniqlash va qurilmaning kelajakdagi ishlashini baholash kerak bo'ladi. prototipi simulyatsiya qilinmoqda.

Bunday holda, dasturning qolgan ish vaqtini taqlid qilish uchun funktsional simulyatordan foydalaniladi. Foydalanishning bu kombinatsiyasi haqiqatda qanday sodir bo'ladi? Birinchidan, funktsional simulyator ishga tushiriladi, unga OS va o'rganilayotgan dasturni ishga tushirish uchun zarur bo'lgan barcha narsalar yuklanadi. Axir, bizni operatsion tizimning o'zi ham, dasturni ishga tushirishning dastlabki bosqichlari, uning konfiguratsiyasi va boshqalar qiziqtirmaydi. Biroq, biz ham bu qismlarni o'tkazib yubora olmaymiz va darhol dasturni o'rtadan bajarishga o'tamiz. Shuning uchun, bu barcha dastlabki qadamlar funktsional simulyatorda bajariladi. Dastur bizni qiziqtirgan paytgacha bajarilgandan so'ng, ikkita variant mavjud. Modelni soat bo'yicha model bilan almashtirishingiz va bajarishni davom ettirishingiz mumkin. Bajariladigan kodni ishlatadigan simulyatsiya rejimi (ya'ni oddiy kompilyatsiya qilingan dastur fayllari) bajarishga asoslangan simulyatsiya deb ataladi. Bu eng keng tarqalgan simulyatsiya variantidir. Yana bir yondashuv ham mumkin - izga asoslangan simulyatsiya.

Izga asoslangan simulyatsiya

U ikki bosqichdan iborat. Funktsional simulyator yordamida yoki haqiqiy tizimda dastur harakatlari jurnali yig'iladi va faylga yoziladi. Ushbu jurnal iz deb ataladi. Ko'rib chiqilayotgan narsaga qarab, iz bajariladigan ko'rsatmalar, xotira manzillari, port raqamlari va uzilish ma'lumotlarini o'z ichiga olishi mumkin.

Keyingi qadam, soatma-soat simulyatori izni o'qiyotganda va unda yozilgan barcha ko'rsatmalarni bajarganda, izni "o'ynash" dir. Oxirida biz dasturning ushbu qismini bajarish vaqtini, shuningdek, ushbu jarayonning turli xususiyatlarini, masalan, keshdagi xitlar foizini olamiz.

Izlar bilan ishlashning muhim xususiyati determinizmdir, ya'ni simulyatsiyani yuqorida tavsiflangan usulda bajarish orqali biz bir xil harakatlar ketma-ketligini qayta-qayta takrorlaymiz. Bu model parametrlarini (kesh, bufer va navbat o'lchamlari) o'zgartirish va turli xil ichki algoritmlardan foydalanish yoki ularni sozlash orqali ma'lum bir parametr tizimning ishlashiga qanday ta'sir qilishini va qaysi variant eng yaxshi natijalarni berishini o'rganish imkonini beradi. Bularning barchasi haqiqiy apparat prototipini yaratishdan oldin prototip qurilma modeli bilan amalga oshirilishi mumkin.

Ushbu yondashuvning murakkabligi birinchi navbatda dasturni ishga tushirish va izni yig'ish zarurati, shuningdek, kuzatuv faylining katta hajmidadir. Afzalliklari shundan iboratki, qurilma yoki platformaning faqat bir qismini taqlid qilish kifoya qiladi, bajarish orqali simulyatsiya odatda to'liq modelni talab qiladi.

Shunday qilib, ushbu maqolada biz to'liq platformali simulyatsiya xususiyatlarini ko'rib chiqdik, turli darajalarda amalga oshirish tezligi, soat bo'yicha simulyatsiya va izlar haqida gapirdik. Keyingi maqolada men shaxsiy maqsadlarda ham, yirik kompaniyalarda rivojlanish nuqtai nazaridan ham simulyatorlardan foydalanishning asosiy stsenariylarini tasvirlab beraman.

Manba: www.habr.com

a Izoh qo'shish