2016-12-06 2 views
-1

다른 사람의 집에있는 스마트 서모 스탯 용 펌웨어를 개발 중입니다. 현재의 구현은 단일 코어 프로세서에서 실행되는 멀티 스레드 솔루션입니다. (Cortex-M은 익숙하기 때문에 폐기 할 수 있습니다.) 선반 RTOS를 사용하고 있습니다.단일 코어 대 멀티 코어 프로세서의 펌웨어 개발

프로젝트를 가져 와서 듀얼/멀티 코어 프로세서로 옮기거나 포트를 옮기는 방법은 무엇입니까? RTOS에게 각 코어에서 어떤 스레드가 실행되어야하는지 RTOS에 알려주고 RTOS가 거기에서 모두 관리합니까? 멀티 코어 환경에서보다 효율적으로 작동하도록 각 스레드에서 수행해야하는 리펙토링이 일정량 있습니까? 아니면 RTOS가 READY 상태에있는 스레드를 가져 와서 여유 시간이있는 코어에서 해당 작업을 실행할 수 있습니까?

+1

답할 수 없습니다. 확실히, 그것은 완전히 당신이 사용하는 스케쥴러 ("RTOS")의 지원과 능력에 달려 있습니다. 고려할 "RTOS"에 대한 문서를 살펴 보셨습니까? – JimmyB

+1

게다가 "스마트 온도 조절기"응용 프로그램은 처음에는 멀티 코어 사용을 정당화 할 수있는 것처럼 들리지 않습니다. – JimmyB

+0

@JimmyB 멀티 코어 시스템 온칩의 가격과 가용성을 감안할 때, 필자는 필요한 "정당성"이 많이 있다고 생각하지 않는다. 10 달러에 1 달러를 얻을 수 있으며, DRAM도 포함되어 있습니다. Raspberry Pi와 같은 플랫폼에서 작동하는 온도 조절기를 생각해보십시오. –

답변

0

일반적으로 멀티 코어 머신에서 실행한다는 사실은 중요하지 않습니다. OS가 스레드를 사용 가능한 코어에 예약하도록 설정합니다. 물론 RTOS가 멀티 코어 플랫폼을 지원해야합니다!

코드가 적절하게 동시 처리를 처리하지 못하고 특히 메모리 장벽을 제대로 처리하지 못하는 경우 코드가 모두 하나의 코어에서 연속적으로 실행된다는 사실에 의해 숨겨진 버그가 발생할 수 있습니다. 믹스에 두 번째 코어를 던지면 이러한 버그가 발생하는 경향이 있지만 일반적으로 중요한 데모 또는 릴리스 후에 먼저 수행합니다. 따라서 코드를 디자인하여 동시성 - 버그 발생을 막아줍니다.

관련 문제