[SPIM] pipeline simulator 프로그램
- 최초 등록일
- 2005.04.05
- 최종 저작일
- 2005.04
- 압축파일
- 가격 1,500원
소개글
spim에서 pipeline을 simulation한 프로그램입니다.
기본 처리이외에 visualization을 포함하였습니다.
프로그램 소스코드와 보고서를 포함합니다.
A+를 받은 과제입니다.
컴파일 실행환경
보고서에 첨부
본문내용
이번 과제는 SPIM Simulator에 pipeline 기능을 추가하는 것으로 SPIM simulator의 source code를 수정하여 내부적으로 pipeline이 동작하게 하는 것이 그 목적이다. Source code를 살펴보면 loop을 돌며 instruction을 수행하는데, IF stage가 수행되고 뒤이어 바로 switch statement에서 해당 instruction의 OP code를 분석하여 해당 instruction의 나머지 stage, 즉, ID, EXE, MEM, WB 단계를 한번에 수행하는 것을 볼 수 있다.
따라서, 이 부분을 수정하여, loop에서 한번의 iteration을 한 cycle로 보고, 한 cycle 내에서 각각의 stage가 동시에 수행되도록 수정하면 된다. 뿐만 아니라 spec에 따라 각각의 instruction category 별 instruction의 개수, data hazard가 발생한 회수, data forwarding이 발생한 회수, load-use stall이 발생한 회수, delayed branch가 발생한 회수 등의 statistics 정보를 출력하는 루틴을 추가하면 된다.
각각의 instruction category 별로 수행되는 stage가 다른데, 보통의 R-type instruction의 경우, IF/ID/EXE/MEM의 4 stage를 거쳐 수행되고, Memory reference instruction의 경우에는 IF/ID/EXE/MEM/WB의 5 stage를 모두 거쳐 수행된다. Branch나 jump와 같은 instruction의 경우에는 IF/ID/EXE의 3 stage를 거쳐 수행된다. 따라서 각각의 instruction에 따라 한번의 pipe stage에서 MEM이나 WB의 stage가 수행될 수도 있고 수행되지 않을 수도 있다. Pipeline을 구현할 경우, hazard가 발생할 가능성이 있는데, 이를 해결하는 것이 pipeline 구현의 핵심이라 할 수 있겠다.
압축파일 내 파일목록
pipeline.h
report.doc
run.c
test1.s
test2.s
test3.s
test4.s
pipeline.c
참고 자료
없음