Site icon Re:제로부터 시작하는 개발자 생활

SimpleScalar 탐사기

구글에서 검색하면 여러 해외/국내 대학에서의 LAB파일들 Project설명 문서들이 보이고, 하나씩 읽어보면서 버전 별로 변경된 것들을 따라가면서 구조를 유추해보고 있습니다. 대개 시간순으로 이전내용들에서 조금씩 덧붙여지는 내용들이 불어나면서 복잡한게 더해지는데, 다행이 simulator binary가 큰 덩어리의 기능은 따로따로 확인 가능하게 해두어서 순서만 잘 따라가면 기존 히스토리를 배우는게 가능할 듯 합니다.

SimpleScalar는 현재 4.0정도까지 나와 있는 듯함 www.simplescalar.com가 최신사이트인듯 하지만 왜인지 접근이 안됨. 대신 구글에서 검색되는 [Simple Scalar v 4.0 (univr.it), simple-tutorial-2up.pdf (umich.edu)]을 참고하면, 2.0이 2000년대 초반 발표되고, 3.0으로 많은 대학등에서 발표자료등에 언급되면서 수업에 사용되고, 4.0에 접어들면서 나름 현재 Microprocessor구조의 기능을 좀 더 따라 잡은 듯함…. 하지만 그래도 Alpha나 MIPS기준인건 여전한 듯 함.

Trouble shooting : Alpha ISA를 이용한 test simulator와 workload일 경우, alpha-linux-gnu-gcc를 이용해서 최신 Ubuntu 시스템 등에서 -static을 주고 컴파일하더라도 sim-outorder에 태우면 오른쪽과 같은 문제가 발생함. 해결방법은 gem5와 유사하게, syscall emulation의 uname call return의 값을 그냥 현재 OS와 맞춰주는 것 : FATAL: kernel too old 문제 해결하기 : 네이버 블로그 (naver.com)

아래 처럼 release, version 필드는 최신으로 맞춘후에 make로 다시 빌드하여 실행

target-alpha-linux/syscall.c

   case SYSCALL_UNAME: // 339
      {
        alpha_utsname buf;
        uint64_t vaddr;

        strcpy(buf.sysname,  "Linux");             // modeling linux OS
        strcpy(buf.nodename, "mypc");          // hostname
        strcpy(buf.release,  "5.15.0-75-generic"); // kernel version ...
        strcpy(buf.version,  "Tue Jun 6 23:10:23 UTC 2023"); // kernel built on
        strcpy(buf.machine,  "alpha");             // modeling alpha isa
        strcpy(buf.domainname, "");                // 


왼쪽에 따라서, Statistics 결과들에 대해서 따라해 볼 경우 hack_guide_v2 (washington.edu)

sim-safe –> sim-fast –> sim-cache –> sim-bpred -> sim-outorder –> sim-mase 이것으로 보이고, sim-profile의 경우 functional simulation에 대한 profiling 결과를 따와서 특정 시점에서 복원해 볼 수 있는 걸로 보임.

Exit mobile version