Wasmi 2.0 - 가장 빠른 Wasm 인터프리터를 만드는 기술

4 days ago 15

WebAssembly 인터프리터 Wasmi 2.0이 8개월간의 엔진 개편을 마치고 출시됨. Apple M2 Pro의 자체 벤치마크에서 1.0보다 평균 약 2.2배 빠른 실행 성능을 기록하면서 빠른 시작 속도도 유지함 다음 명령으로 넘어가는 과정을 꼬리 호출로 바꾸고, 계산 중간값을 하드웨어 레지스터에 보관해 반복적인 메모리 읽기와 쓰기를 줄임 객체 접근과 함수 호출에서 불필요한 조회와 잠금을 제거하면서도, 같은 모듈의 여러 인스턴스가 바이트코드를 공유해 메모리를 아끼는 구조는 유지함 SIMD를 켜면 일반 값까지 저장 공간이 커지던 문제를 없앰. CoreMark에서 기존 버전은 약 8% 느려졌지만, 2.0은 활성화 여부에 따른 성능 차이가 측정 잡음 수준임 CPU의 분기 예측을 방해하던 코드 생성 문제를 수정하자 CoreMark 점수가 약 50% 상승함. 전체 실행 성능 향상과는 별개로, 단일 변경 중 가장 큰 개선을 기록함 버전 간 일관된 연료 계량, WebAssembly 결정론적 프로필 지원, 바이너리 크기를 줄이는 validate 크레이트 기능과 CLI 개선이 추가됨. 다음 주요 버전인 Wasmi 3.0은 WebAssembly 3.0 전체 지원을 목표로 함 출시와 성능 비교 Wasmi는 효율성과 다양한 기능을 갖춘 WebAssembly 인터프리터로, IoT 기기, 플러그인 시스템, 클라우드 호스트, 스마트 계약, 경량 게임 콘솔에 사용할 수 있음 플러그인 활용 사례로 Typst, Zellij, Josh가 있음 스마트 계약 분야에는 Soroban, Ripple, 게임 콘솔에는 Firefly Zero가 있음 2.0은 실행 성능에 집중한 릴리스로, Apple M2 Pro에서 wasmi-benchmarks 실행 성능의 기하평균이 1.0 대비 약 2.2배 높음 비교 대상은 Wasm3, WAMR fast-interpreter, Wasmtime Pulley, Makepad Stitch, Wasmi 1.0이며, 모두 2.0 설계에 영감을 줌 하드웨어별 특성을 확인하기 위해 Apple M2 Pro, AMD EPYC 7763, Intel Xeon Platinum 8370C에서 측정함 공개 벤치마크 프로젝트로 자신의 기기에서도 재현할 수 있으며, 공개된 결과는 지원하는 전체 벤치마크와 런타임의 일부임 실행 성능 개선에도 시작 성능은 대체로 1.0과 비슷한 수준을 유지하며, 비교 결과상 가장 빠른 이식 가능한 Wasm 인터프리터...

Read Entire Article