목록전체 (168)
Kim Seon Deok
VLIW - Loop-Carried- Dependencies VLIW 아키텍쳐에서 loop unrolling은 main feature였다. 그리고 loop unrolling을 적용하다 보니 kernel of software pipelining이 필요해졌다. for(i = 0 ; i < N ; i++) { A[i+2] = A[i] + 1; B[i] = A[i+2] + 1; } LOOP:L.DF0,0(R2)//01 ADD.DF3,F0,F1//02 ADD.DF4,F3,F1//03 S.DF3,16(R2)//04 S.DF4,0(R3)//05 ADDIR2,R2,#8 ADDIR2,R2,#8 BNER2,R4,LOOP 위 statement에서 A[i]와 B[i]는 double-precisoin FP number의 vec..
dynamic micro architecture의 한계 클럭 당 더 많은 instruction을 dispatch 하지만 하드웨어 로직이 점점 복잡해 질수록 cost가 증가하고 느려지게 되며 더 많은 power를 소비하게 됨 VLIW : Very Long Instruction Word 소프트웨어는 high-level language로 되어있고 컴파일러에 의해 analyze된다. 컴파일러는 assembly code를 만들고 여기에 optimization technique를 적용한다. LIW/VLIW에서 instruction processing의 instruction fetch ~ retire까지 모든 단계가 컴파일러에 의해 핸들된다. 하드웨어 complexity와 power를 최소화하며 wide fetch와..
Register renaming speculative tomasulo알고리즘에서 ROB는 instruction commit을 순서대로 실행하고 speculative reigster 값은 commit 될 때까지 storage에 존재하게 된다. speculative register는 physical register에 저장된다. physical register의 갯수 >= architectural register 갯수 이다. 따라서 더 많은 data를 저장할 수 있기 때문에 같은 architectural register 값을 여러 physical reigster에 저장할 수 있다. 이를 register renaming이라 한다. (OoO 프로세스를 구현하려면 더 많은 갯수의 register가 필요하다. spe..
Out-of-Order architecture를 사용하는 이유? instruction level parallelism을 증가시키기 위해서이다. 프로세서에서 실행되는 instruction의 갯수를 증가시킴으로써 ILP를 exploting한다 -> parallelism을 사용해서 프로세서의 성능을 늘릴 수 있다. -> pipeline, OoO architecture를 사용해서 ILP를 늘릴 수 있다. Thread-level-parallelism 프로세서 내부에서 실행되는 스레드 갯수를 증가시킴으로써 프로세서의 성능을 증가시킴 tomasulo 알고리즘은 OoO architecture implementation의 baseline이다. tomasulo 알고리즘의 이점 프로세서 내에서 실행될 수 있는 명령어 갯수를..
CUDA는 hierarchical thread architecture를 가지고 있어, thread를 group으로 묶어 실행할 수 있다. thread가 GPU에서 어떻게 parallel하게 돌아가는지를 이해하게 된다면 parallel programming code를 write할 수 있고 더 나은 performance를 achive할 수 있을 것이다. CUDA thread가 GPU에서 작동하는 방식 - parallel and concurrent thread execution - warp execution - memory bandwidth issue - contel overhead - SIMD operation CUDA threads, blocks, and the GPU CUDA programming의 wo..