본문 바로가기
게임/추가 정보

스위치 에뮬레이터 유즈, 멀티 코어 지원 시작

by 사과향잉크 2020. 5. 10.

 

영상을 보면 업데이트 후 많은 게임이 2배 정도 성능이 향상되었습니다.

i5-4690k 4.2Ghz & GTX 1060 사양에서 포켓몬스터 소드·실드는 14~19프레임에서 29~37프레임으로 향상되었습니다.

슈퍼 스매시 브라더스 얼티밋은 30프레임 중반에서 58~60프레임, 루이지 맨션 3는 15~19프레임에서 37~60프레임까지 차이가 나죠.

파이어엠블렘 풍화설월은 28~30프레임에서 45~56프레임으로 바뀌었고 애스트럴 체인도 2배 이상 좋아졌습니다.

모여봐요 동물의 숲은 22~25프레임에서 27~30프레임을 보여주고 덜 끊깁니다.

 

i7-8700k & GTX 1080 Ti라는 고사양에서는 더욱 큰 차이를 보입니다.

대부분의 게임이 싱글 코어에서는 30프레임 수준이지만 멀티 코어에서는 60프레임까지 향상됩니다.

특히 루이지맨션 3는 20프레임 미만에서 60프레임까지 뛰며 큰 차이를 보이죠.

어떻게 이렇게 차이가 나는 걸까요?

 

포켓몬스터 소드·실드

유즈는 HLE 에뮬레이터로 호라이즌이라 불리는 스위치 OS 대신 자체 OS를 사용합니다.

스위치는 4개의 코어가 있는데 유즈는 시트라에서 가져온 오래된 커널 디자인의 한계로 1개의 코어로 스위치를 모방했습니다. 그에 따라 싱글 코어 성능이 뛰어나야 게임을 원활히 할 수 있었죠.

 

유즈는 이제 1개의 스레드로 CPU를 에뮬레이션하는 대신 여러 스레드로 CPU를 에뮬레이션합니다.

스위치 CPU 코어 하나당 한 개씩 총 4개를 사용하죠. 듣기에는 간단한 것 같지만 아주 힘든 일이었다고 합니다.

시트라가 사용한 것처럼, 3DS에서는 잘 작동한 방식으로 에뮬레이션을 했는데 스위치에서는 잘 되지 않았습니다.

스위치는 더 복잡한 현대 기계였기 때문에 코드는 스위치 OS와 다른데다 복잡했습니다.

 

그래서 프로메테우스라는 이름으로 커널 스케줄링, 부트 관리자, CPU 관리자의 3가지를 완전히 다시 만들었습니다.

스위치 OS의 코드와 동일하게 만들어 스위치와 똑같이 에뮬레이션하게 했죠.

이전까지는 CPU, GPU 에뮬레이션, 오디오 등으로 여러 스레드를 쓰긴 했지만 CPU와 GPU에 하나씩 사용한 반면에 이제는 CPU에 4개, GPU에 1개, 호스트 타이머에 1개를 사용합니다. 4개를 다 쓰는 경우는 거의 없어서 보통은 3개를 쓰죠.

 

파이어엠블렘 풍화설월

개발진은 계획과 개발에 8개월 정도 걸렸습니다.

Blinkhawk는 Cemu, RPCS3, 류진x 등 이미 멀티코어 에뮬레이션을 하는 다른 에뮬레이터를 연구했습니다.

이들은 전부 다른 방식을 사용했죠.

유즈는 멀티코어 사이클 타이머를 이용하는 많은 방식을 시도해봤지만, 제대로 구현하는 건 매우 어려웠기에 호스트 타이밍을 선택했습니다.

 

개발 시작은 2020년 2월 1일이었습니다.

이후 여러 문제에 직면했지만 해결하고 멀티 코어로 슈퍼 마리오 오디세이를 실행하는데 성공했습니다.

그렇지만 많은 버그로 수많은 게임을 제대로 실행할 수 없었습니다.

특히 루이지 맨션 3와 젤다무쌍은 특이한 버그가 있었는데 젤다 무쌍의 경우 스위치의 타이머 정확도보다 유즈의 정확도가 더 높아서 문제가 생겼습니다. 그래서 스위치와 똑같이 덜 정확하게 만들어 해결했죠.

 

루이지 맨션 3

많은 게임의 성능이 향상되었지만 전부는 아닙니다.

왜냐하면 모든 스위치 게임이 스위치 CPU와 멀티스레딩을 효과적으로 사용하지 않기 때문이죠.

슈퍼마리오 오디세이는 1개의 코어에서 모든 걸 처리해 다른 코어를 거의 사용하지 않습니다.

그래서 프레임이 조금 더 안정적으로 유지되긴 하지만, 다른 게임에 비하면 성능이 크게 향상되지 않았죠.

젤다의 전설: 브레스 오브 더 와일드는 성능이 약간 나아지긴 했지만 에뮬레이션한 GPU 때문에 병목 현상을 겪고 있습니다.

에뮬레이션 GPU의 성능은 PC CPU의 싱글 코어 성능, GPU 자체 특성, 드라이버, 대역폭 등의 영향을 받습니다.

램 크기와 속도 등도 영향이 있죠.

 

아직 완벽하게 멀티 코어로 실행하는 건 어렵습니다.

멀티코어를 쓸 때는 ASYNC GPU 설정을 활성화해야하며 일부 모드를 쓸 수 없습니다.

또한 멀티 코어로 실행하면 소리가 느려질 수 있는 문제를 발견했고, 일부 게임은 제대로 실행하지 못할 수도 있습니다.

문제가 생기면 게임 이름, 버전, 저장 파일과 문제가 생긴 과정을 알려달라고 말했습니다.

댓글