Parallelized Logic Simulation

얼마전부터 parallel simulation이 큰 이슈가 되었습니다. 몇몇 기사에서는 3세대 simulation 기법이라고 이야기하더군요.

Verilog-XL 처럼 interpreter 형태를 1세대로, 2 세대를 finesim, VCS, NCVerilog 처럼 compiled 형태를 2세대로, 그리고, 다수의 processor를 동시에 쓰는 형태를 3세대로 이야기하는 거죠.

그간 simulation에서 multicore를 사용하는 건 별로 없었죠.  정확히는 wave dump나 assertion/coverage check 같은 걸 병렬로 하는 건 있었지만, simulation core 자체를 multicore로 하는게 별로 없었던 거죠.

제 기억에 남는 건 DAC13의 must see list에 있었던 rocketsim이 처음이었던 것 같습니다. GPU를 사용해서 VCS와 같이 사용했을때 gate level simualtion을 대략 23배 빠르게 해준다는 이야기때문이었죠.

그러다가 조금 조용해졌었는데, Best EDA Tool 2016 #3에 뽑혔을때 조금 더 많은 이야기를 접할 수 있었고, 작년 DVCON2017에서는 Cadence의 Xcelium(Rocketsim을 인수한 다음 이름을 바꾼 거죠.)과 Synopsys의 VCS FGP(위 link의 Cheetah VCS가 이름을 바꾼 겁니다.)가 본격적으로 마케팅하는 것을 볼 수 있었습니다. 이전에 DVCON2017에 대해서 적은 글에도 간략하게 적었습니다만, 두 툴간에 신경전(서로 은근히 까는?)도 있었고요.

Xcelium의 경우 GPU기반에서 출발해서 Multi-core 형태로 발전한 상태였고, 배경에는 simulation의 경우 단순한 연산보다 복잡한 연산이 많아서 GPU보다 processor core를 병렬적으로 사용하는게 좋더라.. 는 담당 엔지니어의 설명이 있었습니다.

사실 VCS FGP에 대해서는 비교적 잘 모르던 상태에서 들었는데, VCS 사용자의 경우 “무료”로 사용할 수 있을 것이고 곧 사용할 수 있을 것이다. 라는 부분이 흥미를 끌었죠. 내부적으로 VCS만 사용하고 있어서 말입니다.

다만, 두 툴 모두 RTL sim 보다는 Gate level sim에서 성능 향상이 크며, RTL sim의 경우는 설계에 따라 큰 차이가 있다… 를 깔고 들어갔고, Xcelium의 경우 3~4배까지는 된다고 이야기했던 반면, 당시 VCS FGP는 설계에 따라 2배 정도는 된다는 이야기를 해서 아주 큰 기대는 하지 않고 있었습니다. 보통 이렇게 이야기하면 생각보다 훨씬 안좋은 경우가 많으니까요.

결론적으로 말하자면, Parallel Simulation 쓰라는 이야기를 하고 싶습니다. 설계에 따라 다를테니 뭐가 좋다고 이야기하기 쉽지 않겠지만, core를 3~4개 정도를 사용하는 수준은 분명히 좋아집니다.

제가 테스트해본 설계에서는 main processor 이외에 3개 정도 core를 더 쓰면 대략 2배 정도 빨라지는 결과를 얻었는데, 4개 정도를 넘어가면 core를 더 사용한다고 더 좋아지지는 않았습니다. 아마도 설계에서 얻을 수 있는 병렬성이 이 정도겠죠.

곁다리로, 요즘에 새로운 프로세서들을 사용할 기회가 있어서 같이 테스트 했는데요. 요건 뭐에 걸릴일은 없을테니..

제가 기존에 쓰던 I7-3770K에서의 simulation  time을 100%라고 했을때, 상대 수행 시간입니다. (아래는 parallel simulation이 아닙니다.) 보시면, 적어도 VCS에 있어서는 intel의 8세대 CPU들이 훨씬 빠릅니다. 같은 세대인 Ryzen Threadripper 1950x와 비교해보면 말이죠. (물론, Threadripper의 경우 multicore에 힘을 실은 프로세서죠.). 사실 parallel로 비교해도 16 core짜리 threadripper보다 6core짜리 i7-8700K가 더빠릅니다. 🙂

rel. perf.
i7-3770K 100%
Ryzen 1950X 85%
i5-8400 68%
i7-8700K 52%

Zen+ Archtiecture는 이미 설계가 끝나서 출시 예정이고, Zen2 architecture 기반의 CPU들이 올해 나온다니, 그때는 single thread performance가 얼마나 비교가 될지 궁금하긴 하네요. (사실 meltdown bug 때문에 intel cpu performance가 떨어지긴 하겠습니다만,  그래도 위의 격차를 채우긴 쉽지 않을 것입니다. ) 잡설입니다만, 제 생각에 TLB에 PCIDs를 적용하고 있는 최신 processor들의 경우 약간의 트릭으로 이 버그를 피해나갈 수 있지 않을까 싶은 생각이 드는데요..  프로그램 컴파일을 다시 요구할 수 있는 embedded라면 compiler workaround로 피할 수 있을 것 같은데(예전에 요런 짓을 많이 해봐서..), PC/workstation용으로는 이게 불가능하니 대신 뭔가 해야겠죠? 안그래도 CES에서 비슷한 이야기가 나온 걸로 봐서는 뭐가 있겠죠.

원래 내용으로 돌아와서, simulation이 목적이라면 아직은 intel CPU를 사용하시라는 점. 할 수 있으면 parallel simulation을 사용하시라는 것. 이 두 가지만 기억하시면 되겠습니다. 🙂

피아노스쿨 체험단 체험기 (3)

벌써 3번째네요. 쓰는 주기가 짧아서 사실 쓰기는 참 귀찮네요. 여하튼, 정체성이 잊혀져가는 블로그에 체험단 체험기까지 더해지면서 정체성이란걸 찾아보기 더 어려워졌지만, 실은 AISC/SoC/Processor 관련 블로그를 표방한 개인 블로그였다죠 아마.

솔직히 이야기하면 피아노 스쿨 앱을 많이 사용하지는 못했습니다. 더 솔직하자면, 피아노 자체에 앉을 시간이 많지는 않았습니다. 아시잖아요.. 40대 직장인에게 연말이란..  ㅎㅎ 그래도, 짬날때마다 꾸역꾸역 사용하면서 이 글을 씁니다.


클래식 기초를 어느정도 하다보니, 좀 지겹더군요. 역시 쉽게 접근하기엔 “반주”죠.  일단 반주 클래스로 들어가면 앞부분은 약간 할만합니다. 아무리 피아노를 안쳐봤다해도 기본적인 코드 정도는 알고 있으니 크게 어렵지 않다고 생각합니다.

다만, 약간만 진행되어도 갑자기 힘들어지는데, 손가락번호도 없이 타건을 시도해야 할 뿐 아니라(혹시 손가락 번호 켜는 옵션이 있는지도..) 때문이죠. 이때 도움이 되는게 동영상 강의입니다. 클래식 강의(초급!)때도 막힐때 중간 중간 도움이 되었지만, 반주에서는 화음과 타건에 대한 설명이 필요하기 때문에 동영상 강의를 들으면서 타건 연습을 병행하는(동영상 강의 자체가 그런식으로 구성되어 있습니다. ) 형태로 연습하는 방식 자체를 바꿀 필요가 있겠더군요.

 

Screenshot_20180102-211827

위에서와 같이 강의를 진행하다가, “타건모드에서 연습하고 오겠습니다.” 하면 아래처럼 타건모드 화면이 나오고 그때부터 타건을 하면서 연습을 할 수 있습니다.

Screenshot_20180102-211839

다만 안타까운 것은 1) 타건이 끝났다해도 동영상 강의로 바로 돌아오는 건 아니라서, 타건 연습이 끝난후에 다시 play 버튼을 눌러야 한다는 점, 2) full screen 으로 동영상 강의를 듣던 도중에는 타건 모드로 들어갔더라도 악보를 보기 위해서 동영상을 작게 바꾸거나 해야 한다는 점, 3) 동영상을 보면서 타건을 살짝 따라해보면 이 상태에서 타건입력이 되어 버려서 타건 모드에 갔을때 타건된 음표가 보여서 ‘제대로 치고 있는지’ 확인하기 어렵다는 점, 4) 악보를 더 잘보기 위해서 동영상 강의를 숨길 수 없어서 중단하는 경우, 타건 후에 다시 동영상을 실행하면 ‘처음부터’ 봐야 한다는(혹은 알아서 잘 이동해서 봐야 한다는) 점등이 살짝 귀찮으면서 아쉽습니다.

사실 장황하게 나열했지만, 위와 같이 작은 화면으로 동영상 강의를 진행하면서 타건 모드로 들어갔을때만 피아노를 치면 좀 편합니다.  제 경우는 동영상을 보면서 한번 치고, 타건 형태를 켜놓고 다시 치는 형태로 연습을 하면 좋더군요. (클래식 모드에서는 별 필요없다고 생각했는데, 반주를 칠때는 코드에 익숙해질때까지는 아래 피아노 뷰가 있는것이 편합니다. 다만 “손가락 번호”가 없는건 여전히 아쉽네요. )

Screenshot_20180102-211944

몇번 이야기하지만, 피아노 스쿨 앱 자체는 좋습니다.

다른것보다 저처럼 피아노에 대해서 초견/독보가 잘 안되는 사람들에게 저 음이 피아노의 어떤 건반에 해당하는지 ‘하나씩 하나씩’ 짚어가면서 배우는 것이 아니라,  직관적으로 짚을 수 있기 때문에 생각보다 접근성이 비약적으로 좋아집니다.

이런 장점은 많은 건반을 한번에 짚어야하는 반주에서 더 도드라지는 것 같습니다. (제가 클래식의 입문 부분만 하고 와서 그렇습니다.) 어디까지 연습해볼 수 있을지 모르겠습니다만, 반주 몇곡정도는 외우는 걸 목표로 해 봐야겠습니다.

 

 

 

‘본 체험 후기는 피아노스쿨 체험단에 선정되어 작성한 무료로 체험한 솔직한 후기입니다’

 

피아노스쿨 체험단 체험기 (2)

들어가면서

제목 그대로 체험단이란걸 체험하고 있습니다. 뭐 따로 토해낼것도 없고, 뭔가를 받을 생각도 없으니(유일하게 받고 있는건 피아노 스쿨 1달 수강권이니..) 이 리뷰에 사심이 별로 섞일 건 없습니다. 다만, 놀지 않고 블로그에 글을 올리게 해주는 효과가 있겠죠.

피아노 스쿨 강의를 들어보았다

피아노 스쿨 앱은 말 그대로 피아노 교육용 앱입니다. 피아노 강의가 핵심이라는 거죠.

강의는 크게 클래식과 코드 반주로 나뉘고, 클래식은 체르니와 연주곡으로, 반주는 처음에 코드에 대해서 설명해준 이후에 화성, 노래에 따라 코드를 치면서 연습할 수 있게 되었습니다.

강의는 동영상 강의와 연습으로 구성되는데, 동영상 강의는 아주 특별할 건 없습니다. 각각의 강의에 대한 의미, 연습해야 할 부분, 주의해야 할 부분들을 설명해주는데 필요할 때 중간 중간 볼 정도는 되는 것 같습니다.

Screenshot_20171217-215922

연습의 경우 악보가 나오고, 클래식의 경우 악보에 있는 손가락 번호(옵션에 따라 끌수도 있고요) 에 따라 연주를 진행하면 되는데, 위의 그림에서 처럼 빨간색 지시선이 현재 연주해야 하는 부분을 나타내는 선입니다. 지난번 posting에서도 이야기했습니다만, 이 앱의 가장 큰 장점이 MIDI 입력을 인식해서 어디까지 어떻게 연습할 수 있는지 “직관적”으로 알려준다는 것입니다.

Screenshot_20171223-233358

오른쪽 상단에 있는 “+” 마크를 누르면 악보모드 혹은 건반 모드로 변경할 수 있는데, 건반 모드를 선택하는 경우에는 피아노 건반과 손가락 번호가 같이 표시되어서 조금더 편하게 연주를 할 수 있어서 처음에 건반에 익숙해지는데 아주 도움이 많이 됩니다.

정확히 타건해야지만 다음으로 넘어가기 때문에 박자에 맞게 하나 하나 정확히 연주하도록 노력하게 해줍니다. 이게 사실 가장 좋은 점 같습니다.

 

다만 몇가지 수정되어야 할 점이 있는데요.

우선, 생각보다 조금 귀찮은 부분은 느리게 치는 건 괜찮은데 조금 빨리 치는 경우에는 “건반 입력이 인식이 안된다는 점”입니다. 이게 귀찮은 이유가 박자보다 조금이라도 빨리 입력된 경우에 악보상에서 인식선이 그 부분에서 멈추기 때문에 연주를 중단하고, 다시 해당 부분부터 연주를 해야 하는 경우가 많아서, 중간에 연주가 끊기는 경우가 많습니다.

아마도 해당 박자부터 MIDI 입력을 판단하도록 한 것 같은데, 앞뒤로 마진을 조금 가져가면서 박자를 조정하거나, 박자를 조정하지 않는 경우 박자가 맞지 않았다는 표시(혹은 악표 표시가 앞뒤로 밀리더라도)만 나오고 그 뒷부분은 계속해서 인식되는 것이 좋겠습니다. 물론 건반 입력자체가 잘못되거나 박자가 너무 틀어진 경우에는 지금처럼 멈추는게 맞겠죠.

두번째는 사실 좀 황당했는데, 도돌이표가 정상적으로 동작하지 않습니다. 아마도 소소한(?)버그겠죠.

Screenshot_20171220-234503

위와 경우와 같이 연주하고 나면, 도돌이표 때문에 4마디를 다시 연주해야 할 것인데, 그냥 뒤로 가버립니다.

마지막으로, 강의 제목과 악보가 맞지 않는 경우가 있습니다.

예를 들어 STEP1의 4강은 ‘그대 내품에’ 로 되어있는데, 악보는 그 전 강의의 ‘가시나무’가 나온다던지 하는 문제죠. 앱의 검수가 꼼꼼히 이루어지진 않은 것이겠죠.

제가 알기로 1차 체험단이라니, 아마도 앱이 만들어진지 얼마되지 않아서 저희가 아마도 beta testing 하고 있는게 아닌가 싶긴 한데요 (아닌가..), 지난번 posting에서 화면 캡쳐와 MIDI 입력을 안한 상태에서의 앱의 동작에 대해서 feedback을 드렸더니 바로 고쳐진바가 있어서 위의 문제 역시 금방 해결될 것이라 생각합니다. QC는 좋지 않았으나 CS가 좋은 건가? (개발자 입장에서 갑자기 남의 이야기 같지 않네요.. 흠흠..)

 

앗 중요한 걸 빼먹어서 추가합니다.

‘본 체험 후기는 피아노스쿨 체험단에 선정되어 작성한 무료로 체험한 솔직한 후기입니다’