Tuesday, December 13, 2016

[SW 개발] Hierarchy에 대해서....

Hierarchy에서 중요한 점은.. 

아키텍처 측면에서 "중요한" 것이 상위로 가야 한다는 것이다. 


CPU의 개수라는 factor의 경우, 상위일 수도 있고 하위일 수도 있을 것이다.

그런데, 그 개수가 전체 SW에 영향을 미치면 상위에 놓고,
아주 국소적으로 영향을 미치는 것은 하위에 놓는다.

예를 들어, CPU개수에 따라서 해상도가 결정되고 해상도는 (플랫폼이 구려서) 많은 부분에 영향을 미치는 경우라면 최상위로 두는 것이 좋다.

반대로 (플랫폼이 좋아서) 병렬처리를 single과 똑같은 방법으로 구현하는 개발과정이라면 CPU개수는 아랫 단계로 내려놓는 것이 맞다.


이런 결정은 아무런 생각없이 직관적으로 내리는 경우 플랫폼이 품질이 떨어질 수 밖에 없을 것이다.


한가지 예를 들어보자,

여러 HW를 지원하는 개발과제가 있고, 여러 HW는 어쩔 수 없이 차이가 있을 것이다.
이 경우, 사소한 차이(예를 들면 register의 주소)만 있는 경우라면 이런 차이점에 대해서 #ifdef 등으로 구별을 하는데, 이 구별을 위한 #define은 register를 직접 access하는 header file이나, hardware 차이점을 기술한 파일 (예를 들어 stmXX.h)에 기술하면 충분하다.

그렇지만, (예를 들면) 둘 중 하나의 HW만 DMA를 지원하며, DMA를 지원하는 HW에 대해서는 busy waiting을 하지 않는 SW를 개발하는 경우라면 DMA의 여부는 architecture 최상위에 위치해야 할 것이다.
한가지 기능이 전체 SW의 동작에 큰 영향을 미치기 때문이다.

물론, HW의 기능차이를 무시하고 동일한 방식(DMA를 사용여부와 상관없이 busy waiting하는 경우)으로 처리한다면 DMA여부는 아키텍처상 하위에 위치해도 충분할 것이다.

No comments: