태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

아래의 글은 강원대학교 정익주 교수님께서  싱크웍스의 자유게시판에 올려주신 글입니다.
교수님께 양해를 구하고 본 블로그에 옮겨 왔습니다.


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 이 가능합니다.

DSP에 대해 좀 더 알고 싶으세요? 싱크웍스 무료실습강좌를 신청하세요. ----------> 무료실습강좌 신청하기
본 내용이 유익하셨다면 싱크웍스 블로그 2.0을 구독하세요. -------------------------> 싱크웍스 RSS
 
Posted by syncworks

댓글을 달아 주세요

티스토리 툴바