/* * Funkcja przeprowadzajaca pomiary szyfrowania 1 MB danych */ void test_wydajnosci_3des_pot() { printf("Test wydajnosci potokowej realizacji szyfratora i deszyfratora Triple DES \n"); PERF_RESET(PERFORMANCE_COUNTER_0_BASE ); PERF_START_MEASURING(PERFORMANCE_COUNTER_0_BASE); int i=0; int j=0; PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,2); //rozpoczecie pracy 2 licznika mierzacego takty zegara while(i<512) { ciph_3des_pot(&blok_testowy+2048*i,&blok_testowy+1048576+2048*i,2048); i++; } PERF_END(PERFORMANCE_COUNTER_0_BASE ,2); //zakonczenie pracy 2 licznika mierzacego takty zegara i=0; PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,1);//rozpoczecie pracy 1 licznika mierzacego takty zegara while(i<512) { deciph_3des_pot(&blok_testowy+2048*i,&blok_testowy+1048576+2048*i,2048); i++; } PERF_STOP_MEASURING(PERFORMANCE_COUNTER_0_BASE); //zakonczenie pracy wszystkich licznikow perf_print_formatted_report((void* )PERFORMANCE_COUNTER_0_BASE, ALT_CPU_FREQ*2,2,"3Des_pot 1MB szyfr","3Des_pot 1MB deszyfr"); //generacja raportu }
/** * Funkcja testujaca wydajnosc modulow Triple DES przy wykorzystaniu zapisu i odczytu danych na On-Chip Memory */ void test_wydajnosc () { printf ("Test wydajnosci \n"); PERF_RESET(PERFORMANCE_COUNTER_0_BASE ); PERF_START_MEASURING(PERFORMANCE_COUNTER_0_BASE); int i=0; int j=0; PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,2); //rozpoczecie pracy 2 licznika mierzacego takty zegara while(i<512) { deciph_3des(dane[2*i],dane[2*i+1]); j--; j++; deciph_3des_read(&wyniki[2*i],&wyniki[2*i+1]); i++; } PERF_END(PERFORMANCE_COUNTER_0_BASE ,2); //zakonczenie pracy 2 licznika mierzacego takty zegara i=0; PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,1);//rozpoczecie pracy 1 licznika mierzacego takty zegara while(i<512) { ciph_3des(dane[2*i],dane[2*i+1]); j--; j++; ciph_3des_read(&wyniki[2*i],&wyniki[2*i+1]); i++; } PERF_STOP_MEASURING(PERFORMANCE_COUNTER_0_BASE); //zakonczenie pracy wszystkich licznikow perf_print_formatted_report((void* )PERFORMANCE_COUNTER_0_BASE, ALT_CPU_FREQ*2,2,"3Des 32Kbit szyfr","3Des 32Kbit deszyfr"); //generacja raportu }
int main() { volatile int i,j,k; //i = row, j = column, int count; int M1[10][10]={0,0,0,0,0,0,0,0,0,0, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 19,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 19,32,33,34,32,32,33,34,32,32}; int M2[10][10]={32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 19,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 32,32,33,34,32,32,33,34,32,32, 19,32,33,34,32,32,33,34,32,32}; int C[10][10]={0}; PERF_RESET (PERFORMANCE_COUNTER_BASE); //Reset Performance Counters to 0 PERF_START_MEASURING (PERFORMANCE_COUNTER_BASE); //Start the Counter PERF_BEGIN (PERFORMANCE_COUNTER_BASE,2); //Start the overhead counter PERF_BEGIN (PERFORMANCE_COUNTER_BASE,1); //Start the Matrix Multiplication Counter PERF_END (PERFORMANCE_COUNTER_BASE,2); //Stop the overhead counter count = 0; while(count<100){ count++; for (i=0;i<=9;i++){ for (j=0;j<=9;j++){ C[i][j] = 0; for (k=0;k<=9;k++){ C[i][j]+=M1[i][k]*M2[k][j]; } //printf("%f ", C[i][j]); } } } PERF_END (PERFORMANCE_COUNTER_BASE,1); //Stop the Matrix Multiplication Counter PERF_STOP_MEASURING (PERFORMANCE_COUNTER_BASE); //Stop all counters perf_print_formatted_report((void *)PERFORMANCE_COUNTER_BASE, ALT_CPU_FREQ, 2, "100 loops","PC overhead"); return 0; }
/* * Test wydajnosci szyfrowania 1MB danych z zapisem i odczytem do pamieci SRAM */ void test_wydajnosci_sram() { PERF_RESET(PERFORMANCE_COUNTER_0_BASE ); PERF_START_MEASURING(PERFORMANCE_COUNTER_0_BASE); PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,1); //uruchomienie 1 licznia przeprowadzenie_szyfrowania_sram(); PERF_END(PERFORMANCE_COUNTER_0_BASE ,1); //wylaczenie 1 licznika PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE ,2); // uruchomienie 2 licznika przeprowadzenie_deszyfrowania_sram(); PERF_STOP_MEASURING(PERFORMANCE_COUNTER_0_BASE); //wylaczenie wszystkich licznikow perf_print_formatted_report((void* )PERFORMANCE_COUNTER_0_BASE, ALT_CPU_FREQ*2,2,"Test szyfr 3DES(1MB)","Test deszyfr 3DES(1MB)"); }
int main(void) { alt_putstr("Hello from Nios II!\n"); fill_arrays_with_random_values(); PERF_RESET(PERFORMANCE_COUNTER_0_BASE); PERF_START_MEASURING(PERFORMANCE_COUNTER_0_BASE); PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE, 1); shuffle_in_c(array_for_c, ARRAY_SIZE); PERF_END(PERFORMANCE_COUNTER_0_BASE, 1); PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE, 2); shuffle_with_custom_instruction(array_for_custom_instr, ARRAY_SIZE); PERF_END(PERFORMANCE_COUNTER_0_BASE, 2); PERF_BEGIN(PERFORMANCE_COUNTER_0_BASE, 3); shuffle_with_accelerator(array_for_accelerator, ARRAY_SIZE); PERF_END(PERFORMANCE_COUNTER_0_BASE, 3); PERF_STOP_MEASURING(PERFORMANCE_COUNTER_0_BASE); perf_print_formatted_report((void *) PERFORMANCE_COUNTER_0_BASE, ALT_CPU_FREQ, 3, "" "shuffle_with_c", "shuffle_with_custom_instruction", "shuffle_with_accelerator"); //verify_arrays(); #ifdef SMALL_ARRAY alt_putstr("Shuffle with C:\t\t\t"); print_array(array_for_c, ARRAY_SIZE); alt_putstr("Shuffle with custom instruction:\t"); print_array(array_for_custom_instr, ARRAY_SIZE); alt_putstr("Shuffle with accelerator:\t\t"); print_array(cache_bypass(array_for_accelerator), ARRAY_SIZE); #endif return 0; }