CPU 모델 자동 생성 의사형식 매뉴얼에서 고속 ISS까지

CPU 모델 자동 생성 의사형식 매뉴얼에서 고속 ISS까지
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

**
본 논문은 ARMv6 레퍼런스 매뉴얼의 의사형식 부분을 자동으로 추출·분석하여, 최적화된 SystemC/TLM 기반 명령어 집합 시뮬레이터(ISS)를 생성하는 방법을 제시한다. 추출된 인코딩, 동작 의사코드, 어셈블리 구문을 중간 표현으로 변환하고, 여러 정적 최적화를 적용한 뒤 C/C++ 코드와 Coq 형식 명세를 자동 생성한다. 실험 결과, 손수 작성한 ISS와 동등한 성능과 안정성을 확인하였다.

**

상세 분석

**
이 연구는 임베디드 시스템 검증에서 가장 큰 병목인 CPU 시뮬레이터(ISS) 개발 과정을 크게 자동화한다는 점에서 의미가 크다. 먼저 저자들은 ARMv6 매뉴얼을 텍스트화(pdto​text)한 뒤, 인코딩 표, 의사코드, 어셈블리 구문을 각각 2100·800·500줄 규모의 파일로 추출한다. 이 과정은 OCaml 기반 파서와 lexer를 이용해 AST(Abstract Syntax Tree) 형태로 변환되며, 전체 파이프라인은 약 1400줄의 코드로 구현된다.

핵심은 추출된 AST에 대해 두 종류의 변환을 적용한다는 점이다. 정확성 보장을 위한 변환으로는 함수 호출에 전달되는 복합 식을 별도 함수(예: OverflowFromAdd3)로 분리하고, 주소 지정 모드와 같은 공통 패턴을 인라인화하여 명령어와 주소 지정 모드를 하나의 플랫 구조로 만든다. 또한 레지스터 쓰기‑백과 데이터 어보트 상황을 예외 처리 흐름에 맞게 재배치함으로써, 예외 발생 시 원래 레지스터 값이 보존되도록 한다.

성능 향상을 위한 변환으로는 정적 서브식 사전 계산, 특수화, 그리고 명령어 플래트닝이 있다. 예를 들어, NbOfSetBitsIn(reglist) * 4와 같이 인코딩에만 의존하는 식은 디코더 단계에서 미리 계산해 파라미터로 전달한다. 특수화 단계에서는 조건 플래그나 S 비트와 같이 실행 시점에 거의 변하지 않는 옵션을 고정값으로 치환한 여러 변형 명령어를 생성하고, 실행 빈도 프로파일링 결과를 활용해 비용 대비 효과가 큰 특수화만 유지한다. 플래트닝은 주소 지정 모드와 명령어 본문을 결합해 실제 실행 시점에 인라인된 형태로 만들며, 결과적으로 명령어 수는 두 배 정도 증가하지만 디코더와 실행 루틴이 단순화돼 전체 속도가 크게 상승한다.

코드 생성 단계에서는 80개의 서로 다른 파라미터 구조를 자동으로 정의하고, ARM과 Thumb 두 개의 디코더를 스위치‑문 기반으로 구현한다. 후보 명령어가 여러 개일 경우, 2단계 검증(인코딩 매칭 → 유효성 제약 검사)으로 정확한 명령어를 선택한다. 생성된 ISS는 SystemC/TLM 인터페이스를 제공해 전체 SoC 시뮬레이션에 바로 통합될 수 있다. 또한, 동일한 파이프라인에서 Coq 형식의 형식 명세와 디코더 테스트 케이스를 자동 생성함으로써 검증 가능성을 높인다.

실험에서는 기존에 손수 작성한 ARMv6 ISS와 비교해 90 MIPS 이상의 실행 속도를 유지했으며, 코드 크기와 컴파일 시간은 특수화 정도에 따라 조절 가능함을 보여준다. 이는 의사형식 매뉴얼만으로도 고성능 ISS를 자동 생성할 수 있음을 입증한다.

**


댓글 및 학술 토론

Loading comments...

의견 남기기