Computer Architecture HW #3 yglee@archi.snu.ac.kr School of Computer Science and Engineering Seoul National University
Mission Sequential Y86 implementation Pipelined Y86 implementation 설명 : leave instruction 추가하기 숙제 : iaddl, isubl instruction 추가하기 Pipelined Y86 implementation 숙제 : leave, iaddl, isubl instruction 추가하기 숙제 : load forwarding 추가 구현하기
Sequential Y86 implementation 설명 : leave instruction 추가하기 숙제 : iaddl, isubl instruction 추가하기 Pipelined Y86 implementation 숙제 : leave, iaddl, isubl instruction 추가하기 숙제 : load forwarding 추가 구현하기
Configuration tar xvf archlab4u.tar cd archilab-handout/ tar xvf sim.tar cd sim/ /archilab/archlab-handout/sim$ make clean; make
Sequential Y86 implementation 작업폴더 /sim/seq 작업파일 /sim/seq/seq-full.hcl
leave instruction leave instruction can be used to prepare the stack for returning. As described in Section 3.7.2. in textbook. It is equivalent to the following code sequence(X86): 1 movl %ebp, %esp Set stack pointer to beginning of frame 2 popl %ebp Restore saved %ebp and set stack ptr to end of caller’s frame It is equivalent to the following code sequence(Y86): 1 rrmovl %ebp, %esp Set stack pointer to beginning of frame 2 popl %ebp Restore saved %ebp and set stack ptr to end of caller’s frame
Computation (rrmovl %ebp, %esp) 과 (popl %ebp) 이 합쳐진 형태
Computation leave instruction leave icode:ifun M1[PC] Fetch valA R[%ebp] valB R[%ebp] Decode valE valB + 4 Execute valM M4[valA] Memory R[%esp] valE Write back PC valP PC update valP PC+1 R[%ebp] valM
Implementation Fetch stage &
Implementation Decode & Write-back stage
Implementation Execute stage
Implementation Memory stage
Implementation PC update
Verification 구현 확인하기 구현한 sequential implementation을 사용하는 방법 /archilab/archlab-handout/sim/seq$ make clean; make ssim VERSION=full
Verification 구현 확인하기 구현 정확성 확인하기 leave instruction 확인하기 : /archilab/archlab-handout/sim/y86-code/asuml.yo 확인 시 실행 파일 : /archilab/archlab-handout/sim/seq/ssim /archilab/archlab-handout/sim/seq$ ./ssim –t ../y86-code/asuml.yo
Sequential Y86 implementation 설명 : leave instruction 추가하기 숙제 : iaddl, isubl instruction 추가하기 Pipelined Y86 implementation 숙제 : leave, iaddl, isubl instruction 추가하기 숙제 : load forwarding 추가 구현하기
iaddl, isubl instruction 추가하기 숙제 작업폴더 /sim/seq 작업파일 /sim/seq/seq-full.hcl
iaddl, isubl instruction Computation irmovl instruction + OPl instruction iaddl V, rB : R[rB] R[rB] + V isubl V, rB : R[rB] R[rB] - V
Verification 구현 확인하기 구현 정확성 확인하기 구현 정확성 검증 명령어 iaddl instruction 확인 파일 : /archilab/archlab-handout/sim/y86-code/asumi.yo isubl instruction 확인 파일 : /archilab/archlab-handout/sim/y86-code/asums.yo 확인 시 실행 파일 : /archilab/archlab-handout/sim/seq/ssim 구현 정확성 검증 명령어 iaddl instruction : /archilab/archlab-handout/sim/seq$ ./ssim –t ../y86-code/asumi.yo isubl instruction : /archilab/archlab-handout/sim/seq$ ./ssim –t ../y86-code/asums.yo
Current state iaddl instrunction 검증 isubl instruction 검증 ./ssim –t ../y86-code/asumi.yo isubl instruction 검증 ./ssim –t ../y86-code/asums.yo
Goal state iaddl instrunction 검증 isubl instrunction 검증 ./ssim –t ../y86-code/asumi.yo isubl instrunction 검증 ./ssim –t ../y86-code/asums.yo
Sequential Y86 implementation 설명 : leave instruction 추가하기 숙제 : iaddl, isubl instruction 추가하기 Pipelined Y86 implementation 숙제 : leave, iaddl, isubl instruction 추가하기 숙제 : load forwarding 추가 구현하기
Pipelined Y86 implementation 기본 제공 파일 pipe-std.hcl 기본적인 forwarding 구현 과제 iaddl, isubl, leave instruction 추가하기 작업 폴더 : sim/pipe 작업 파일 : pipe-full.hcl ( 미완성 파일 제공 ) load forwarding 구현 하기 작업 파일 : pipe-lf.hcl ( 미완성 파일 제공)
Why? Load forwarding Load forwarding Condition Arithmetic 연산이 필요 Load instruction의 target register와 바로 뒤의 store instruction의 source register가 같음 교재 연습문제 4.57번 참조 Example sequence Arithmetic 연산이 필요 Why?
Verification : pipe-full.hcl 구현 확인하기 pipe-full.hcl 사용 하기 /sim/pipe$ make clean; make VERSION=full 구현 정확성 확인하기 leave instruction 확인 파일 : /sim/y86-code/asuml.yo iaddl instruction 확인 파일 : /sim/pipe/y86-code/asumi.yo isubl instruction 확인 파일 : /sim/pipe/y86-code/asums.yo 확인 시 실행 파일 : /sim/pipe/psim 구현 정확성 검증 명령어 leave instruction : /sim/pipe$ ./psim –t ../y86-code/asuml.yo iaddl instruction : /sim/pipe$ ./psim –t ../y86-code/asumi.yo isubl instruction : /sim/pipe$ ./psim –t ../y86-code/asums.yo
Verification : pipe-lf.hcl 구현 확인하기 pipe-lf.hcl 사용 하기 /sim/pipe$ make clean; make VERSION=lf Load forwarding성능 확인하기 Load forwarding 성능 확인 파일 : /sim/pipe/ldrivers.yo 확인 시 실행 파일 : /sim/pipe/psim Load forwarding 구현 검증 명령어 leave instruction : /sim/pipe$ ./psim –t ldrivers.yo
Current state : pipe-full.hcl iaddl instruction 검증 /sim/pipe$ ./psim –t ../y86-code/asumi.yo isubl, leave instruction iaddl의 경우와 동일
Goal state asumi.yo asuml.yo asums.yo
Current state : pipe-lf.hcl pipe-std.hcl을 사용했을 때 make clean; make VERSION=std ./psim –t ldriver.yo
Goal state : pipe-lf.hcl Load forwarding 구현 후 make clean; make VERSION=lf ./psim –t ldriver.yo
보고서 제출 숙제에 대한 보고서 각각에 대해 바꾼 부분에 대한 설명 결과 출력 화면 어려웠던 점 / 해결 방법 seq-full.hcl, pipe-full.hcl, pipe-lf.hcl 결과 출력 화면 어려웠던 점 / 해결 방법 프로젝트를 진행하며 느낀 점
제출 방법 과제 확인 제출 기한 제출 방법 12월 5일 월요일 자정 전(pm 23:59)까지 1일 delay 당 5점씩 감점 (100점 만점) 제출 기한 2일 후까지 제출 가능 12월 7일 수요일 자정 전(pm 23:59) 제출 방법 조교 메일을 통해 제출 메일 제목 : [컴구 과제]학번_이름 ex)[컴구 과제]201510000_홍길동 첨부 파일 : 학번_이름.zip으로 아래 파일들과 보고서를 함께 제출 소스 코드 : seq-full.hcl, pipe-full.hcl, pipe-lf.hcl 보고서 : pdf 형식 학번_이름을 제목으로 함 메일 주소 : yglee@archi.snu.ac.kr