블로그 이미지
kalstein

여러가지 프로그래밍 관련이나...신변잡기적인 글들을 남기는 블로그입니다. 지식은 나누는만큼 강력해집니다 ^^

Rss feed Tistory
Programming 2008. 9. 26. 10:20

Platform dependent 개발이...점점 싫어지는듯 ㅋㅋ

물론...뭐 codec 같은 특수 계산만 죽어라 하는 경우에야...해당 플랫폼에 최적화를 해야되기 때문에, 어쩔수 없는 경우긴 하지만...

여튼 종속적인 개발은 별루다!

흠흠;;; 자료구조의 기본기만 잘 다뤄도...일단 80%는 먹고 들어간다. 나머지 20%를 최적화 하는건 해당 플랫폼전용 기술. (20%라고는 해놨지만 저부분에서 성능향상이 200% 정도 될수도 있긴하다 ^^;;) Performance Critical한 작업이라면 80%은 기본이요, 20%도 기본으로 해야겠지만...글쎄? 저 20%라는 영역을 위해선 해당 플랫폼에 대한 깊은 이해가 필요하다. 대충해봐야 오히려 컴파일러만 못할 수 있다는 것. 그럼 들인 노력만큼 뽑아낼 수 있느냐가 문젠데... 약간 회의적이다. ㅎㅎㅎ 그냥 inline asm 정도 쓰는것만 따진다면 20%중에서 아주 극소수랄까?

예를 들어 직면한 문제로써, CEVA dsp 에서 개발을 진행해야된다. 근데...이넘은 VLIW인거다 -_-;; 정말 best effort를 내려면, core 내에 어떤 유닛이 최대한 동시에 진행될 수 있는지 꿰고 있어야되고, 그에 맞춰서 구현이 가능한 수준에 이르러야한다. 뭐...상사들은 그걸 다 알아야된다고 말은 하지만 글쎄??

간략히 저 위에 올라갈 어플을 설명하자면, WCDMA 기지국 SW다. R99 + HSDPA + HSUPA 요렇게 크게 3가지로 나뉜다. R99는 솔직히 데이터량이 크지도 않다. 그리고 HSDPA,UPA는 대부분의 계산이 ASIC쪽에서 이루어진다. 즉, 최적화를 행할만한 부분이 R99라는 소린데...계산량이 밀려오지도 않을껀데 그걸 최적화 해봐야. -_-a;;

뭐...해당 플랫폼에 대한 이해가 필요없다는건 아니고...일단 기본기부터 제대로 짜는게 더 중요하단 소리. 여기서 기본기란? 일단 Computer자체에 대한 이해(register + L1 + L2 뭐 이런 구조라던가...메모리 관련한 내용들이 많겠지), OS에 대한 이해, 기본적인 자료구조 및 해당 알고리즘들. 그런거는 무시하고 해당 플랫폼에 대해서만 최적화하는건 본말전도라는것.

아 오랜만에 블로그 포스팅 막하고 있네 ^^;; (무플의 안습은 계속된다 쭈욱~~~ -ㅁ-;;)

,
Programming 2008. 9. 26. 09:56

DSL 사용을 해보자고 했으나...역시나 ㅎㅎ

CPU와 DSP간의 Interface를 위한 문서가 있다. 근데 이게...워낙 변수들도 다양하고 해서, DSL(Domain Specific Language)를 이용하면 간단한 룰의 Text 로 부터 Interface Word document뿐만아니라, C에서 사용되는 header 파일도 뽑을수 있단말이지. 즉 One source, Multi use가 된다.

간단한 Tech Demo를 보여줬으나...뭐 좀 신기해 하고(워드를 직접 치는게 아니라 자동생성이 가능하다는 거에 신기해 했을듯...)...다만 거기까지. 제대로 된 걸 만드려면 최소 한달 길게는 두달 정도는 잡아야되지않겠느냐는 말에 그럴꺼면 딴거 스터디하는게 더 낫다. 는 결론 ㅎㅎㅎ

뭐 틀린말은 아닐수도 있다. 회사라는게 시간과의 싸움이 있는것도 있으니까...그래도 뭐랄까. 너무 근시안적인것만 보는건 아닐까. 이번에 해놓고나면 다른 프로젝트에도 얼마든지 적용이 가능할 것이고, 업그레이드된 무언가가 나올 수도 있다. (활용 가능한 분야를 두어개 더 설명도 충분히 했었다 -_-;; 그 이상도 나올수 있다는것)

다른 팀원들이...뭔가 좀 느꼈으려나? 귀찮은 일을 자동화 한다는 개념에...뭔가를 느꼈으면 참 좋으련만 -_-;;;;
,
Programming 2008. 9. 17. 09:34

구현이 low-level, 알고리즘은 high-level...일까?

저번주에 있었던 일인데...

알고리즘 파트쪽에서 패킷 스케쥴링 구현을 했고 그걸 dsp에 포팅하는 작업을 같은 팀원이 하고있길래, 그냥 이것저것 얘기를 좀 해봤었다. (간섭? ㅋㅋㅋ 왜 근데...그런게 재밌다능...;; 내 일 아니니까 더욱 재밌는듯? 냐하하) 얘기하다보니...구현이 거참. 한숨만 푹푹. ㅎㅎㅎ

Data 형식은 (id, value) 요렇게 pair형식. 요거를 100여개? 정도 value-order로 소팅을 해야되는데...알고리즘쪽에서 가져온 구현은? 짜잔~~~
id 용 구조체 따로, value용 구조체 따로 구현한 후에, value 퀵소팅 실행. value swap 시마다 id쪽도 같이 swap.... 뭐 그렇게 해도 구현은 되지...되고말고;;;;

그.러.나.
id, value가 같이 있는 구조체 하나 선언한 뒤에, compare function 하나 만들고, Standard C Library에 있는 sort 함수 한번 호출해주면 만사 오케이 인거다...-_-;;;
즉, 알고리즘쪽 분은...구조체의 경우 어떻게 sort를 해야되는지 몰랐던것.

저분을 콕 집어서 비난하는것이 아니지만...자료구조쯤은 알아야하지않을까? 흠냐;;
문제는 대다수가 스킬개발은 뒷전 ㅎㅎㅎ 에효~~~
,
TOTAL TODAY