Симуляція доступу до пам’яті: наскільки це важко?

Симуляція доступу до пам’яті: наскільки це важко?


Є багато речей, які ми припускаємо, щоб спростити життя. Наприклад, дроти не мають опору або інших дивних ефектів. Кристалічні осцилятори випромінюють свою точну частоту. Але напевно наша модель того, як комп’ютер зберігає та завантажує пам’ять, є точною, чи не так? Ви розміщуєте дані в певному місці, а потім видаляєте їх. в [FEX-Emu] Розробники мають іншу точку зору. Це не так просто, якщо у вас є кеш-пам’ять і, можливо, кілька ЦП.

Основна проблема: якщо один ЦП (або, точніше, головний шина) записує в розташування, чи має інший ЦП доступ до нового значення? Загальна модель упорядкування пам’яті X86 дає програмістам сильні гарантії щодо того, коли завантаження та сховища є видимими, тоді як ARM навмисно використовує слабшу модель пам’яті, яка вимагає значно більшого упорядкування для продуктивності та ефективності упорядкування.

Теоретично емулятор міг би це компенсувати, перевівши прості операції пам’яті x86 в операції вибірки/вибору ARM, але робити це для майже кожного посилання на пам’ять може бути дорогим. Нові розширення ARM, такі як LRCPC, значно допомагають, тоді як Apple застосувала більш прямий підхід, додавши в Apple Silicon режим TSO, сумісний із x86. Це дозволяє користувацьким завантаженням і збереженням працювати так, як очікується від перекладеного коду x86 за відносно низькою ціною.

З непослідовним доступом і атомарними операціями все стає набагато поганіше. Програмне забезпечення X86 регулярно виконує доступи, для яких ARM погано підходить, а x86 забезпечує дивовижні атомарні гарантії в межах лінії кешу. FEX іноді доводиться виловлювати помилки синхронізації та динамічно виправляти перекладений код із перешкодами. Дискретні операції ще гірші: деякі вимагають екскурсії через ядро ​​та сигнальні процесори, і можуть бути в сотні чи тисячі разів повільнішими, ніж зазвичай. Нові ядра Oryon від Qualcomm покращують ситуацію, підтримуючи синхронізовані атоми кешу, тоді як Valve оптимізує ядро ​​Linux, яке безпосередньо обробляє деякі несумісні атоми.

Є ще один особливо поганий куток, пов’язаний із записом пам’яті GPU. Комп’ютерні ігри часто очікують спеціальної семантики x86 під час запису в некешовані буфери, призначені для дискретних графічних процесорів. ARM наразі не має чистого еквівалента для деяких із цих магазинів, і FEX вимірює пропускну здатність у найгіршому випадку більш ніж у 800 разів повільніше, зменшуючи деякі ігри до рівня менше 1 FPS. Системи UMA працюють набагато краще, оскільки драйвери часто можуть замінити просту кеш-пам’ять.

Це довга стаття, але це гарна ілюстрація того, чому сучасні емулятори не стільки займаються перекладом інструкцій, скільки переглядають десятиліття архітектурних припущень, від яких тихо залежить програмне забезпечення. Звичайно, не всі емулятори чи відтворення процесора настільки точні, і часто цього достатньо. Але інколи вам потрібна розвага, яка справді відповідає епосі та веде себе так само, як оригінал.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *

Delta Air Lines (m1h262p) Delta Air Lines (m1h26g2) 애벗잡담잡이 애벗태양새 애벗얼가니새 애벗찌르레기 압드알쿠리참새 압딤황새 아버데어시스티콜라 이상한덤불개개비 에이버트북미덤불멧새 아비시니아캣버드 아비시니아크림슨윙 아비시니아지상코뿔새 아비시니아지상지빠귀 아비시니아긴발톱할미새 아비시니아올빼미 아비시니아파랑새 아비시니아낫부리후투티 아비시니아슬레이티딱새 아비시니아지빠귀 아비시니아왁스빌 아비시니아검은딱새 아비시니아동박새 아비시니아딱따구리 아카시아얼룩바벳 아카시아박새 아카디아딱새 아체직박구리 도토리딱따구리 아크레앤트슈라이크 아크레토디타이런트 아다마와멧비둘기 애들레이드솔새 아델리펭귄 애드미럴티매미새 아페프비둘기 아프간잡담잡이 아프간눈참새 아프리카줄무늬올빼미 아프리카검은오리 아프리카검은칼새 아프리카푸른딱새 아프리카푸른박새 아프리카넓적부리새 아프리카시트릴 아프리카목걸이멧비둘기 아프리카뜸부기 아프리카크림슨윙핀치 아프리카뻐꾸기 아프리카뻐꾸기매 아프리카뱀목가마우지 아프리카사막솔새 아프리카어두운색딱새 아프리카난쟁이물총새 아프리카에메랄드뻐꾸기 아프리카발가락물닭 아프리카파이어핀치 아프리카물수리 아프리카꾀꼬리 아프리카참매 아프리카풀올빼미 아프리카녹색비둘기 아프리카회색딱새 아프리카회색코뿔새 아프리카회색딱따구리 아프리카하리어매 아프리카매수리 아프리카산악잡담잡이 아프리카황조롱이 아프리카후투티 아프리카물꿩 아프리카습지하리어 아프리카올리브비둘기 아프리카대머리황새 아프리카검은머리물떼새 아프리카종려칼새 아프리카긴꼬리딱새 아프리카펭귄 아프리카피쿨렛 아프리카얼룩코뿔새 아프리카얼룩할미새 아프리카밭종다리 아프리카팔색조 아프리카난쟁이거위 아프리카난쟁이물총새 아프리카뜸부기 아프리카붉은눈직박구리 아프리카갈대개개비 아프리카강제비 아프리카바위 종다리류 아프리카성따오기 아프리카소쩍새 아프리카때까치딱새 아프리카은부리참새 아프리카제비물떼새 아프리카도요 아프리카저어새 아프리카점박이나무타기 아프리카검은딱새 아프리카뜸부기 아프리카지빠귀 아프리카볏도요 아프리카숲올빼미 아프리카노랑솔새 아가미왜가리 날렵한박새딱딱새