-
CLA ( Control Law Accelerator )Software/RTOS 2024. 8. 19. 10:42728x90
CLA
컴퓨터 로직에서 ALU에 해당하는 CPU 도우미 기능과 레지스터에 직접 접근할 수 있는 접근권한까지 가지고있는 MCU 보조연산장치이다.
메인 CPU와는 병렬로 동작하는 것이 컴퓨터의 ALU와 비슷하고, 연산량이 많은 레지스터인 PWM과 ADC 레지스터 연산에 주로 사용되어 CPU에 여유를 주는 역할을 수행한다.
CLA 연산 특징
1. CPU와 독자적으로 설계 및 구동이 가능하다.
2. CPU와 같은 데이터를 공유할 수 있다. 공유할 변수와 상수를 담은 헤더를 CLA에서 다시 Init해야한다.
3. CLA의 연산이 끝나면 task콜을 PIE인터럽트로 CPU에 전달할 수 있다. (인터럽트 콜 가능)
4. 코드 내에서 task 처리속도는 GPIO 응답속도로 측정한다.TI 코드파일에서 CLA와 CPU의 공유 변수를 설정하는 법.
- CLA와 CPU 사이의 전역 공유 변수 헤더파일을 C와 Cla코드에 inclue
- pragama statement와 linker사용
- CPU에서 CLA변수 사용할 변수 init / CLA에서 CPU 넘어갈 변수 init
- 2837x에서 CLA 접근 가능한 레지스터 목록 : Direct access to the the ADC module(s) (including results), ePWM+HRPWM, eCAP, eQEP, comparator subsytem, DAC subsystem, SPI, McBSP, uPP, EMIF(s), GPIO
- CPU와 CLA가 공유 메모리가 올려져있는 RAM에 동시접근 했을 경우 우선순위를 설정해놓아야함.
- 변수를 선언할 때 Volatile 키워드를 사용하여 메모리에서 최적화가 이루어지지 않도록 설정해야함.CLA to CPU shared memory exam code
main.c float32 * cpu_access_var1 = &ClaToCpu_var1; float32 * cpu_access_var2 = &ClaToCpu_var2; main(){ . . . //init CpuToCla, DataRam0, DataRam1 blocks memset((void *) 0x001500, 0, 0x80); memset((void *) 0x008800, 0, 0x000400); memset((void *) 0x008C00, 0, 0x000400); } CLA_main.c #pragma DATA_SECTION(ClaToCpu_var1,"Cla1ToCpuMsgRAM") float32 ClaToCpu_var1; #pragma DATA_SECTION(ClaToCpu_var2,"Cla1ToCpuMsgRAM") float32 ClaToCpu_var2; #pragma DATA_SECTION(cla_data_init_ok ,"Cla1DataRam1") uint16_t cla_data_init_ok = CLA_INIT_ZERO; CLATask.cla interrupt void Cla1Task ( void ){ if(cla_data_init_ok == CLA_INIT_ZERO){ cla_data_init_ok = CLA_INIT_CHECK; //make sure ALL ClaToCpu variables are initialized here //before the actual CLA Task run ClaToCpu_var1 = 0.0; ClaToCpu_var2 = 0.0; } else{ //run CLA Task here . . . } }
결론
많은 연산량을 필요로하는 코드에서 CLA는 빠른 처리 속도를 보장하기 때문에 최대한 메인 CPU를 보조하여 최대로 사용될 수 있도록 코드를 구성하는 것이 필요하다. 예를 들면 게임프로그래밍에서 ALU사용으로 간단한 수식계산을 보조받거나, CUDA나 여타 병렬 연산들같이 CPU연산 만으로는 속도가 매우 느릴 수 있는 곳에서 도움을 받을 수 있는 최대한으로 뽑아 쓰는 것처럼, 전력제어에서는 이 CLA를 최대한으로 뽑아 쓰는 것이 성능향상에 매우 큰 기댓값을 가지고 있다.
728x90'Software > RTOS' 카테고리의 다른 글
[TMS320F28377D] 개요 (0) 2024.08.20 [TI] SDFM (Sigma Delta Filter Module) (0) 2024.08.19 CCS Include 경로설정 fatal error #1965 (0) 2024.08.14 UART, SCI, CAN (0) 2024.07.12 C-2000 Realtime Microcontroller (0) 2024.07.08