Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ симуляторах ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² простой ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… симуляторах, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ симуляции, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‡Π°Ρ‰Π΅ всСго сталкиваСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ трассах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС распространСны Π² ΠΊΡ€ΡƒΠ³Π°Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части я рассказал, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ симуляторы Π²ΠΎΠΎΠ±Ρ‰Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ± уровнях модСлирования. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° основС Ρ‚Π΅Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π½Ρ‹Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ³Π»ΡƒΠ±ΠΆΠ΅ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ симуляции, ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ трассы, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ эмуляции.

ΠŸΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор (full platform simulator), ΠΈΠ»ΠΈ β€œΠžΠ΄ΠΈΠ½ Π² ΠΏΠΎΠ»Π΅ β€” Π½Π΅ воин”

Если трСбуСтся ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ устройства, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ для этого устройства ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ ΠΈΠ»ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ устройство ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Однако ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΡ‚Ρ€Ρ‹Π²Π΅ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ инфраструктуры Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Для запуска ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° потрСбуСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ процСссор, ΠΏΠ°ΠΌΡΡ‚ΡŒ, доступ ΠΊ шинС для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ опСрационная систСма (ОБ) ΠΈ сСтСвой стСк. Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ этому ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ сСрвСр ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

ΠŸΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор создаСт ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для запуска ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ софтвСрного стСка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС, начиная с BIOS ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈ заканчивая самой ОБ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΅Π΅ подсистСмами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сСтСвой стСк, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ, прилоТСниями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ уровня. Для этого Π² Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° устройств ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°: процСссор ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, диск, устройства Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΌΡ‹ΡˆΡŒ, дисплСй), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π° самая сСтСвая ΠΊΠ°Ρ€Ρ‚Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π±Π»ΠΎΠΊ-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° чипсСта x58 ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel. Π’ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΌ симуляторС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° этом чипсСтС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° рСализация Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° пСрСчислСнных устройств, Π² Ρ‚ΠΎΠΌ числС ΠΈ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ IOH (Input/Output Hub) ΠΈ ICH (Input/Output Controller Hub), Π½Π΅ нарисованных Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Π½Π° Π±Π»ΠΎΠΊ-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅. Π₯отя, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΌΠ°Π»ΠΎ устройств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ ПО, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ собираСмся Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ. МодСли Ρ‚Π°ΠΊΠΈΡ… устройств ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ.

Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

Π§Π°Ρ‰Π΅ всСго ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ симуляторы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ инструкций процСссора (ISA, см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ). Π­Ρ‚ΠΎ позволяСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сам симулятор. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ISA Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ остаСтся Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ постоянным, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, уровня API/ABI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ мСняСтся Ρ‡Π°Ρ‰Π΅. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, рСализация Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ инструкций позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ ПО, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΡƒΠΆΠ΅ скомпилированный ΠΊΠΎΠ΄ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ€ΠΎΠ²Π½ΠΎ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ копию (Β«Π΄Π°ΠΌΠΏΒ») ТСсткого диска, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΠΎΠ±Ρ€Π°Π·Π° для ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΌ симуляторС ΠΈ – вуаля! – ОБ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² симуляторС Π±Π΅Π· всяких Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ симуляторов

Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

Как Π±Ρ‹Π»ΠΎ упомянуто Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅, сам процСсс симуляции всСй систСмы Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ всСх Π΅Π΅ устройств, довольно нСбыстроС мСроприятиС. Если Π΅Ρ‰Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС это Π½Π° совсСм Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΌ ΠΈΠ»ΠΈ логичСском, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ станСт ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. А Π²ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ инструкций являСтся подходящим Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΈ позволяСт ОБ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° скоростях, достаточных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ для ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠ³ΠΎ взаимодСйствия с Π½ΠΈΠΌΠΈ.

Π—Π΄Π΅ΡΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π· умСстно Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ Ρ‚Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ симуляторов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ Π² IPS (instructions per second), Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π² MIPS (millions IPS), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ количСствС инструкций процСссора, выполняСмых симулятором Π·Π° ΠΎΠ΄Π½Ρƒ сСкунду. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ симуляции зависит ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сама симуляция. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Β«Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠΈΒ» (slowdown) симулятора ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ систСмой.

НаиболСС распространСнныС Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ симуляторы, Ρ‚Π΅ ΠΆΠ΅ QEMU, VirtualBox ΠΈΠ»ΠΈ VmWare Workstation, ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ΄Π΅Ρ‚ Π² симуляторС. Π’Π°ΠΊ происходит благодаря Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² процСссорах ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ возмоТности Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ трансляции ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ интСрСсным Π²Π΅Ρ‰Π°ΠΌ. Π­Ρ‚ΠΎ всС Ρ‚Π΅ΠΌΠ° для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½ΠΎ Ссли совсСм ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‚ΠΎ виртуализация – это аппаратная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ соврСмСнных процСссоров, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ симуляторам Π½Π΅ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ инструкции, Π° ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° исполнСниС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ процСссор, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ симулятора ΠΈ процСссора ΠΏΠΎΡ…ΠΎΠΆΠΈ. Бинарная трансляция – это ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ гостСвого машинного ΠΊΠΎΠ΄Π° Π² хостовый ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ исполнСниС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ процСссорС. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ симуляция лишь Π½Π΅Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ€Π°Π· Π² 5-10, Π° часто Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ систСма. Π₯отя Π½Π° это влияСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму с нСсколькими дСсятками процСссоров, Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π² эти нСсколько дСсятков Ρ€Π°Π·. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, симуляторы Ρ‚ΠΈΠΏΠ° Simics Π² послСдних вСрсиях ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ многопроцСссорноС хостовоС Β«ΠΆΠ΅Π»Π΅Π·ΠΎΒ» ΠΈ эффСктивно Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°ΡŽΡ‚ симулируСмыС ядра Π½Π° ядра Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ симуляции, Ρ‚ΠΎ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° нСсколько порядков, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 1000-10000 Ρ€Π°Π·, ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ выполнСния Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π±Π΅Π· симуляции. А Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ логичСских элСмСнтов ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π΅Ρ‰Π΅ Π½Π° нСсколько порядков. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² качСствС эмулятора Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ FPGA, Ρ‡Ρ‚ΠΎ позволяСт сущСствСнно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π“Ρ€Π°Ρ„ΠΈΠΊ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ скорости симуляции ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

ΠŸΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Π°Ρ симуляция

НСсмотря Π½Π° Π½Π΅Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния, ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ симуляторы довольно распространСны. ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² процСссора Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ – вСдь, казалось Π±Ρ‹, ΠΏΠΎΡ‡Π΅ΠΌΡƒ просто Π½Π΅ Π²Π·ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя выполнСния для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции. Но Ρ‚Π°ΠΊΠΎΠΉ симулятор Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСмя выполнСния ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ инструкции ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – инструкция доступа Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Если Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ячСйка памяти доступна Π² кэшС, Ρ‚ΠΎ врСмя выполнСния Π±ΡƒΠ΄Π΅Ρ‚ минимально. Если Π² кэшС Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅Ρ‚ (Β«ΠΏΡ€ΠΎΠΌΠ°Ρ… кэша», cache miss), Ρ‚ΠΎ это сильно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ врСмя выполнСния инструкции. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Ρ‚ΠΎΡ‡Π½ΠΎΠΉ симуляции Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° модСль кэша. Однако модСлью кэша Π΄Π΅Π»ΠΎ Π½Π΅ ограничиваСтся. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΆΠ΄Π°Ρ‚ΡŒ получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти ΠΏΡ€ΠΈ Π΅Π΅ отсутствии Π² кэшС. ВмСсто этого ΠΎΠ½ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции, выбирая Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ зависят ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° чтСния ΠΈΠ· памяти. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Β«Π½Π΅ ΠΏΠΎ порядку» (OOO, out of order execution), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ простоя процСссора. Π£Ρ‡Π΅ΡΡ‚ΡŒ всС это ΠΏΡ€ΠΈ расчСтС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния инструкций ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² процСссора. Π‘Ρ€Π΅Π΄ΠΈ этих инструкций, выполняСмых, ΠΏΠΎΠΊΠ° оТидаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ чтСния ΠΈΠ· памяти, ΠΌΠΎΠΆΠ΅Ρ‚ встрСтится опСрация условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния условия нСизвСстСн Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ процСссор Π½Π΅ останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° Π΄Π΅Π»Π°Π΅Ρ‚ Β«ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β», выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции с мСста ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ branch predictor, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΌ симуляторС.

ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ основныС Π±Π»ΠΎΠΊΠΈ процСссора, Π΅Π΅ Π·Π½Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Бимуляторы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм: всСм Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ симулятор ΠΈ Π½ΠΈΠΊΠΎΠΌΡƒ нСизвСстныС ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈ трассы

Π Π°Π±ΠΎΡ‚Π° всСх этих Π±Π»ΠΎΠΊΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ процСссорС синхронизуСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ сигналами, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ происходит ΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ симулятор Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΌ (cycle accurate). ОсновноС Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ процСссора ΠΈ/ΠΈΠ»ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ врСмя выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ°. Если значСния Π±ΡƒΠ΄ΡƒΡ‚ Π½ΠΈΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ…, Ρ‚ΠΎ потрСбуСтся Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ Π±Π»ΠΎΠΊΠΈ процСссора ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅, потактовая симуляция ΠΎΡ‡Π΅Π½ΡŒ мСдлСнная, поэтому Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ исслСдовании ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ устройства, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ модСлируСтся.

ΠŸΡ€ΠΈ этом для симуляции ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ симулятор. Как Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ использованиС происходит Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ? Π‘Π½Π°Ρ‡Π°Π»Π° запускаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ симулятор, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ загруТаСтся ОБ ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для запуска исслСдуСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π΅Π΄ΡŒ нас Π½Π΅ интСрСсуСт Π½ΠΈ сама ОБ, Π½ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ стадии запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΅Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Однако ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эти части ΠΈ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с сСрСдины ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС эти ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡŽΡ‚ΡΡ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ симуляторС. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° исполнилась Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ нас ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°. МоТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ модСль Π½Π° ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π Π΅ΠΆΠΈΠΌ симуляции, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ исполняСмый ΠΊΠΎΠ΄ (Ρ‚.Π΅. ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ скомпилированныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ), Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ симуляциСй ΠΏΠΎ исполнСнию (execution driven simulation). Π­Ρ‚ΠΎ самый распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ симуляции. Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ – симуляция Π½Π° основС трасс (trace driven simulation).

Бимуляция Π½Π° основС трасс

Она состоит ΠΈΠ· Π΄Π²ΡƒΡ… шагов. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ симулятора ΠΈΠ»ΠΈ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ систСмС собираСтся ΠΈ записываСтся Π² Ρ„Π°ΠΉΠ» Π»ΠΎΠ³ дСйствий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΎΠΉ Π»ΠΎΠ³ называСтся трассой (trace). Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ исслСдуСтся, трасса ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ исполняСмыС инструкции, адрСса памяти, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ прСрываниям.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг – это Β«ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅Β» трассы, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ симулятор Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ трассу ΠΈ выполняСт всС инструкции, записанныС Π² Π½Π΅ΠΉ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ врСмя выполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ куска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики этого процСсса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ попадания Π² кэш.

Π’Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с трассами являСтся Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, запуская ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ описанным Π²Ρ‹ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ воспроизводим ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, измСняя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ кэша, Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΠ»ΠΈ настраивая ΠΈΡ…, ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΄Π°Π΅Ρ‚ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. ВсС это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ с модСлью ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° устройства Π΄ΠΎ создания Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°.

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСобходимости ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° прилоТСния ΠΈ сбора трассы, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° с трассой. К плюсам ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ достаточно ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ лишь ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ устройства ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ симуляция ΠΏΠΎ исполнСнию Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π˜Ρ‚Π°ΠΊ, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли особСнности ΠΏΠΎΠ»Π½ΠΎΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ симуляции, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровнях, ΠΏΠΎΡ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ ΠΈ трассы. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΎΠΏΠΈΡˆΡƒ основныС сцСнарии использования симуляторов, ΠΊΠ°ΠΊ Π² Π»ΠΈΡ‡Π½Ρ‹Ρ… цСлях, Ρ‚Π°ΠΊ ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… компаниях.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ