TMS320C283x의 instruction set을 살펴보니 부동소수점 관련 명령어들이 delay slot을 가지고 있습니다. 예들 들어
MPYF32 RaH, RbH, RcH
위와 같은 명령어를 수행할 경우, 연산 결과가 RaH에 저장이 되는데, 결과가 저장되는데 한 사이클이 아니라 delay slot이 하나 추가되어 2사이클이 걸립니다. ADDF32이나 SUBF32도 마찬가지 입니다. 그러면 150MHz의 경우 75MFlops냐 하면 그렇지는 않습니다. pipeline을 이용하는 CPU들의 경우, delay slot이 존재하더라도 delay slot 때문에 해당 instruction 완료가 그만큼 지연된다는 것이지 그 동안 아무것도 못한다는 것은 아닙니다. 따라서 delay slot 동안 다른 명령어들은 얼마든지 수행될 수 있습니다. 따라서
MPYF32 RaH, RbH, RcH
ADDF32 RdH, ReH, RfH
와 같이 수행할 경우 ADDF32 명령어는 MPYF32 명령 다음에 곧 바로 실행됩니다. 그러나
MPYF32 RaH, RbH, RcH
MOV32 mem32, RaH
위와 같이 하지는 못합니다. 왜냐하면 RaH에는 아직 결과가 저장되지 않았기 때문에
MPYF32 RaH, RbH, RcH
NOP
MOV32 mem32, RaH
와 같이 해야 합니다. 하지만, NOP로 CPU을 놀리지 말고 다른 할 일이 있다면, 다음과 같이 할 수 있겠지요.
MPYF32 RaH, RbH, RcH
ADDF32 RdH, ReH, RfH
MOV32 mem32, RaH
이렇게 생각한다면 150MHz의 경우 150MFlop라고 할 수 있습니다. 그런데 일반적으로 DSP들은 MAC 연산이 지원되기 때문에 통상 Hz의 두 배가 MFlops가 됩니다. 283x의 경우도
MPYF32 RaH, RbH, RcH
|| ADDF32 RdH, ReH, RfH
와 같이 병렬 명령어를 이용하여 MAC 연산을 수행할 수 있습니다. 따라서 이론 상으로는 300MFlop가 됩니다만, 연산 결과를 다음 사이클에서 이용할 수 있기 때문에 실제는 150MFlops 정도라고 보며 됩니다. (대부분의 DSP들이 단순히 주어진 시간 동안에 최대 몇 번의 부동소수점 연산을 할 수 있는가 하는 Peak performance 를 자랑하기 때문에 그런 경우라면 300MFlops라고도 할 수 있겠지요)
참고로 F283x에는 8개의 레지스터(RxH)가 추가되었고 모두 shadow register를 가지고 있어서 interrupt시에 fast context switching 이 가능합니다.
본 내용이 유익하셨다면 싱크웍스 블로그 2.0을 구독하세요. -------------------------> 싱크웍스 RSS
'기술자료실 > 어플리케이션' 카테고리의 다른 글
| TMS320F281x DSP의 Capture 기능 사용 (0) | 2009/06/29 |
|---|---|
| TMS320F28x DSP의 SCI를 이용한 RS-232C 통신 방법 (4) | 2009/06/29 |
| TMS320F2801 모듈을 사용한 TI Library 사용 예제 (0) | 2009/06/29 |
| TMS320F280x와 TMS320F281x의 차이점에 대하여 (0) | 2009/06/29 |
| ADC 외부 참조 전압 (0) | 2009/06/25 |
| TMS320F283x의 Mflops에 대하여 (0) | 2009/06/18 |



댓글을 달아 주세요