컴퓨터 구조를 제로부터 다시 배우고 있습니다. 가르치시는 분들은 고급이라고 하시지만. 아직은 전에 들었던 것들의 반복이네요. 학교다닐때 공부했던것들, 그리고 회사와서 공부했던것들, 회사에서 일하면서 배운것들이 어느정도 섞인 내용들을 다시 보고 있습니다. 확실히 최근 10년간 모바일 컴퓨팅이 많은 발전을 하고, 최근에 PC분야도 나름 큰 발전을 해오고 있는게 아닌가도 싶습니다. 책에만 있던것들이 구현되어서, 검증되고 발전되고, 다시 책으로 쓰여져 나간게 10년도 안된 내용들이 들어가고 있으니까요. ChatGPT도 그런것 중 하나겠죠. 아마도 거대한 자본과, 컴퓨팅자원의 집중 그리고 개별 컴퓨팅 요소들의 가격 하락..(솔직히. 짧은 기간에 비하면 폭락이 맞는거 같습니다.) 덕분에 이번에 PC를 바꾸는데 큰 부담은 없었고, 얻게 된 것도 나름 가성비를 만족하고 있습니다.
요즘은 risc-v 가 점점 커져가고 있어서, 특히나 교육시장(?) 에서 꽤나 좋은 평가를 받으며 교재도 유명하신분이 내고, 설명도 깔금하고, 이런저런 해 볼 수 있는 것도 많이 나온듯 합니다. 실습과정에서 하나는 QEMU(https://www.qemu.org/)를 활용하는 실습, 다른 하나는 GEM5(https://www.gem5.org/)를 이용한 HW Simulation 실습을 했습니다. QEMU는 일종의 만능 에뮬레이터 혹은 Android Game Emulator로도 명성을 얻고 있는 터이고, 이래저래 x86시스템 위에서 각종 코어/시스템들을 에뮬레이팅 해볼 수 있어서 참 좋은 듯 합니다. 단순 활용을 위한 설치는 꽤나 간단한 편이고, 내부의 Emulator 구성요소를 직접 작성하고, 꾸며서 가상의 장치를 더해서 하는건, Android에도 있던터라(AOSP빌드후, $ emulator를 입력하면 뜹니다. 바로.), 나름 요걸 활용해서 이것저것 모델을 만들어 볼까 생각중입니다.(사실 생각한지 오래되었습니다. 20년쯤?…;) 이런글도 있었고요.(https://www.collabora.com/news-and-blog/blog/2016/09/02/building-android-for-qemu-a-step-by-step-guide/). 아마도 최신 코드는 이것일 것 같네요. (https://android.googlesource.com/platform/external/qemu/+/refs/heads/emu-33-release) aosp 기본 master branch에는 포함이 안되어서 따로 받아서, 빌드를 해야할것으로 보입니다. 요것도 다음글.
INFO | Android emulator version 31.3.9.0 (build_id 9070145) (CL:N/A) INFO | Storing crashdata in: /tmp/emu-crash.db, detection is enabled INFO | Duplicate loglines will be removed, if you wish to see each indiviudal line launch with the -log-nofilter flag. WARNING | encryption is off INFO | Info: Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway. ((null):0, (null)) WARNING | cannot add library /mnt/ssd1/AOSP/prebuilts/android-emulator/linux-x86_64/qemu/linux-x86_64/lib64/vulkan/libvulkan.so: failed INFO | added library /mnt/ssd1/AOSP/prebuilts/android-emulator/linux-x86_64/lib64/vulkan/libvulkan.so qemu-system-aarch64: Could not open '/mnt/ssd1/AOSP/out/target/product/generic_arm64/userdata-qemu.img': No such file or directory
그리고 gem5는 뭐랄까. 좀더 본격적으로 HW를 만들어보고, 대강의 평가를 해보는데 좋을 것 같긴하지만… 딱히 FPGA가 있다면, 그걸로 퉁치는게 속도도 좀 더 빠르고 모델 평가도 좀더 정확할 것 같아서.. 애매합니다. 물론 최신 호스트 머신에서라면 시뮬레이션이 그렇게 오래걸릴 것 같진 않은데, 그래도 병렬성/ Wide data전송등이 들어간다면 FPGA가 나을 것 같습니다. 그래도 FPGA 클럭이 기가는 못올라가는게 현실이니, 대등하다고 해야할까요? 이것도 직접 해봐서 뭔가 차이가 있는지 보면 재미있을 것 같네요. x86시뮬레이션이 빠르고, 정확할지. FPGA로 만들어서 해보는게 빠르고 정확할지..