주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

데이터 전송의 표현 및 처리

데이터 전송이란 무엇인가요?

호출 가능한 함수를 나타내는 블록들 간에 데이터 전송이 이루어지며, 이들은 신호선을 통해 데이터를 교환합니다. 모델에서 데이터 전송을 어떻게 표현할지는, 해당 모델이 레이트 기반 모델링을 사용하는 모델인지, 아니면 Export-Function 모델을 사용하는 모델인지에 따라 달라집니다. 모델이 레이트 기반인 경우, 표현 방식은 연결된 블록들이 동일한 샘플 레이트를 사용하는지 여부에 따라 달라집니다. 싱글레이트 데이터 전송 및 내보낸 함수 간의 데이터 전송은 함수들을 연결하는 신호선으로 표시됩니다.

이 그림은 Function-Call Subsystem 간의 싱글레이트 데이터 전송을 보여줍니다. 두 Function-Call Subsystem 모두 1.0초의 샘플 레이트를 사용하도록 구성되어 있습니다.

멀티레이트 데이터 전송이란 서로 다른 샘플 레이트를 사용하도록 구성된 함수 블록 간에 이루어지는 데이터 전송을 말합니다. 모델에서 데이터 전송을 표현하려면, Simulink®를 구성하여 Rate Transition 블록을 자동으로 삽입하거나, 함수 블록들을 연결하는 신호 라인에 해당 블록을 수동으로 삽입하면 됩니다.

이 그림은 Function-Call Subsystem 간의 멀티레이트 데이터 전송을 보여줍니다. 한 Function-Call Subsystem은 1.0초의 샘플 레이트를 사용하도록 구성되어 있고, 다른 Function-Call Subsystem은 2.0초의 샘플 레이트를 사용하도록 구성되어 있다.

데이터 전송 시 고려 사항

멀티레이트 모델을 설계할 때, 각 데이터 전송에 대해 다음 사항의 중요도를 고려해야 합니다:

  • 데이터 무결성

  • 결정성(Determinism)

  • 지연 시간

  • 메모리 사용량

데이터 무결성

데이터 전송 시 데이터 무결성이란 전송 및 처리 과정에서 데이터의 정확성, 일관성, 완전성을 의미합니다. 블록 실행 중에 해당 블록의 입력값이 변경되거나 선점 현상이 발생할 경우, 데이터 무결성이 훼손될 수 있습니다.

다음과 같은 예시 시나리오를 생각해 보십시오:

  • 더 빠른 블록이 더 느린 블록에 입력을 공급합니다.

  • 속도가 느린 블록은 속도가 빠른 블록으로부터 입력 값 V1을 읽어온 다음, 해당 값을 사용하여 계산을 시작합니다.

  • 더 빠른 블록이 다시 실행되면, 더 느린 블록의 연산을 선점하여 새로운 출력값 V2를 계산합니다.

  • 속도가 느린 블록이 실행을 재개할 때 데이터 무결성 문제가 발생합니다. 속도가 더 느린 블록은 새로운 입력 값인 V2를 사용하여 계산을 계속합니다.

이러한 유형의 데이터 전송은 보안이 적용되지 않습니다. 보호되지 않은 데이터 전송에 대한 설명은 Fast-to-Slow Periodic Rate Transitions During Generated Code Execution를 참조하십시오.

안전한 데이터 전송을 위해, 더 빠른 블록의 출력 V1은 더 느린 블록의 실행이 완료될 때까지 보류됩니다.

결정성(Determinism)

다음 조건이 주어졌을 때, 데이터 전송의 시점이 완전히 예측 가능하다면 해당 데이터 전송은 결정론적이라고 한다:

  • 데이터의 이용 가능성

  • 연결된 블록의 샘플 레이트

  • 데이터 전송의 입력 신호 소스 블록이 실행을 종료한 시점을 기준으로, 데이터 전송의 출력 신호 대상 블록이 실행을 시작하는 시점.

지연 시간

데이터 전송의 지연 시간이란 전송되는 데이터가 수신 블록에 도달하기까지 걸리는 시간 지연을 말합니다. 응용 프로그램의 요구 사항에 따라, 데이터 무결성이나 결정성보다 데이터 전송 지연 시간을 최소화하는 것을 우선시해야 할 수도 있습니다.

메모리 사용량

응용 프로그램의 요구 사항에 따라, 데이터 무결성이나 결정성보다는 데이터 전송 시 메모리 사용량을 최소화하는 쪽을 우선시해야 할 수도 있습니다.

코드 생성 시 데이터 전송에 관한 가정

함수 간 데이터 전송을 위한 코드를 생성할 때, 코드 생성기는 다음과 같은 가정을 합니다:

  • 데이터 전송은 하나의 읽기 함수와 하나의 쓰기 함수 사이에서 이루어집니다.

  • 크기가 1바이트인 변수에 대한 읽기 또는 쓰기 작업은 아토믹입니다.

  • 함수와 관련된 두 개의 태스크가 데이터 전송을 통해 상호작용할 때, 두 태스크 중 오직 하나만이 다른 태스크를 선점할 수 있다. 함수를 멀티코어 타깃 시스템에 배포하면, 관련 작업들이 동시에 실행될 수 있습니다.

  • 주기적인 함수의 경우, 처리 속도가 더 빠른 함수와 관련된 작업은 처리 속도가 더 느린 함수와 관련된 작업보다 우선순위가 높으며, 처리 속도가 더 느린 작업을 선점합니다.

  • 작업은 단일 프로세서에서 실행됩니다. 시간 분할은 허용되지 않습니다.

  • 프로세스가 중단되거나 재시작되지 않습니다(특히 태스크 간에 데이터가 전송되는 동안에는 더욱 그렇습니다).

모델, 코드 및 타깃 환경이 이러한 가정과 일치하는지 확인하십시오.

데이터 전송 제한 사항

  • 서비스 코드 인터페이스를 사용하도록 구성된 Export-Function 모델에서는 Rate Transition 블록이 지원되지 않습니다.

  • 코드 생성기는 가변 크기 신호에 연결되거나 For Each Subsystem 블록 내에 있는 Rate Transition 블록의 경우, 코드와 데이터를 분리하지 않습니다.

참고 항목

도움말 항목