Pipelined MIPS Processor
거창하게 pipelined MIPS proessor라고 써놓았지만 만드는 방법에 대한 얘기는 아니다 이번 학기에 5-stage pipelined MIPS processor를 구성하고 주어지는 app에 대한 ASIP으로 optimization한 적이 있는데 그것에 대한 얘기 일단 현재 만들어진 것의 performance는 다음과 같다. 요건 compilation report total logic elements가 5235개 인것을 확인할 수 있다. 자세한 내용은 일단은 ALU multiplier가 포함된 size이며 multiplier는 booth encoding을 하지 않은(...) tree구조의 multiplier가 사용되었다. 그래서 먼저 booth encoding부터 시작해야겠고, register file에 swap logic이 있기 때문에 그 부분에 사용된 로직이 크다.(딜레이도 크다... 굉장히) 그래서 clock rate는 28.67MHz(period는 35ns)인데, swap logic이 추가되기 전에는 multiplication도 25ns까지 나왔지만 갑자기 부왘 하고 그래서 output port(이거 안뽑아주고 리셋하고 클락만 넣으면 극강 synthesize해버려서 작동을 안한다-_-) 당연히 ALU와, register file에 접근할 때 두 경우를 일단 반으로 뚝 짤라주면 간단하게도 큰 성능향상이 얻어질 수 있을것 같다. 요건 35ns로 simulation한 결과 x = 12의 sum of factorial(∑(n!))이 3179ns에 얻어지며 10개의 수를 bubble sort한 결과(register를 8개만 사용했을 때)가 2907ns에 얻어지는 것을 확인할 수 있다. 일단은 계절*-_-*학기를 마쳐야하지만 요걸 심각하게 pipelining해보는 것이 주...