블로그 이미지
kalstein

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

Rss feed Tistory
잡동사니 2010. 12. 3. 09:18

SW개발부서의 부서장이 SW개발자가 아니라면...

개고생한다. -_-;;;;

다음 제품에 대한 큰그림을 그리고 있는듯한데...
H/W accelator를 넣고 싶나보다. (별로 필요없을꺼같은데;;; 흠;;;)
뭐 그래서...현재 구조의 sw에서 어떤부분이 cycle이 많이 먹는가?를 궁금해하는듯.

그런데... 임베디드 시스템이다보니, PC와는 다르게 메모리가 정해져있다.
PC는 메모리 위치가 L2인지 DDR인지 구분하지않지만,
이쪽은 M2, M3, DDR 이렇게 3단계로 구분되어있다. (당연히 크기는 M2<M3<DDR)

그러다보니...cycle 측정해놓은 결과가 메모리에 너무 dependency를 가진다.
별거없는 함수인 주제에 M3나 DDR을 썼을경우 엄청난 cycle을 먹고있는것.
그래서 위에서 내려온 일이 뭐냐면....두둥!!!


'C코드를 보고 사이클 측정하기'


이건 뭐...;;;;; 아우 Tq qt
상황따라 loop도는거, banch 되는거...다 다른데 뭘 어케 측정하라는거냐;;;
특히나 optimizer 돌아가면 안드로메다로 차이날텐데.
다른 부서에서 그런용도로 사이클 측정한게 있던데.... 문서를 보니 이건 병림픽 가관이다.
CA(Computer Architecture)에서 항상 cycle을 많이 먹는 load/store가 1 cycle...로 가정.
하긴 뭐, ALU에 들어가는것도 C코드를 보고 눈으로 측정한거니...ㅋㅋㅋㅋ

함수별로 일일히 코드보고 하기는 겁나 귀찮고...해서 asm으로 분석하기로 했다 ㅋㅋㅋ
optimize 따위 꺼버리고, 대애~~충 asm 종류별로 분류해서...
아 정말 무의미한 짓을 왜하는지 모르겠네 -_-
O(n) 과 O(n log n) 의 각각 다른 알고리즘이 있을때, 그냥 생각하면 O(n log n)이 나빠보이지만....
실제 사이클은 또 다를수가 있는법인데;;;
(구현레벨의 차이라던가, 루프내부의 하는일이 많이 차이난다던가)
,
TOTAL TODAY