1 / 18

Optimizing the mMIPS

Optimizing the mMIPS. Sander Stuijk. Outline. Design flow Understanding the assembler Frequently asked questions How do I recompile the compiler? How can I abort a simulation? How can I debug the mMIPS? Where do I find the maximal frequency of my mMIPS? Assignment. Toolflow. test.

dawson
Download Presentation

Optimizing the mMIPS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Optimizing the mMIPS Sander Stuijk

  2. Outline • Design flow • Understanding the assembler • Frequently asked questions • How do I recompile the compiler? • How can I abort a simulation? • How can I debug the mMIPS? • Where do I find the maximal frequency of my mMIPS? • Assignment

  3. Toolflow test implementation Application (C source) LCC C Compiler LCC C Compiler sw mMIPS (C++ sources that use SystemC libraries) hw Borland C++ Compiler Synopsys SystemC compiler Synopsys FPGA Compiler II Xilinx ISE

  4. Outline • Design flow • Understanding the assembler • Frequently asked questions • How do I recompile the compiler? • How can I abort a simulation? • How can I debug the mMIPS? • Where do I find the maximal frequency of my mMIPS? • Assignment

  5. From C to assembler Bootloader 0: 00000000 nop 4: 3c1c0001 lui gp,0x1 8: 279c0000 addiu gp,gp,0 c: 3c1d0002 lui sp,0x2 10: 27bd8000 addiu sp,sp,-32768 14: 3c1e0002 lui s8,0x2 18: 27de8000 addiu s8,s8,-32768 1c: 0c000020 jal 0x80 20: 00000000 nop 24: 08000009 j 0x24 28: 00000000 nop ... 40: 08000009 j 0x24 44: 00000000 nop ... 60: 08000009 j 0x24 64: 00000000 nop ... 80: 27bdfff8 addiu sp,sp,-8 int main(void) { int a = 0; if (a == 0) return 0; else return 1; } End of program Actual program

  6. The program is terminated by a repeated jump to address 0x24. We can stop the simulation by detecting this jump. The boot loader... Skip first instruction 0: 00000000 nop 4: 3c1c0000 lui gp,0x0 8: 279c24e2 addiu gp,gp,9442 c: 3c1d0000 lui sp,0x0 10: 27bd2800 addiu sp,sp,10240 14: 3c1e0000 lui s8,0x0 18: 27de2800 addiu s8,s8,10240 1c: 0c000020 jal 0x80 20: 00000000 nop 24: 08000009 j 0x24 ... 40: 08000009 j 0x24 ... 60: 08000009 j 0x24 Global pointer Stack pointer Frame pointer Call main function Terminate program

  7. Outline • Design flow • Understanding the assembler • Frequently asked questions • How do I recompile the compiler? • How can I abort a simulation? • How can I debug the mMIPS? • Where do I find the maximal frequency of my mMIPS? • Assignment

  8. How do I recompile the LCC compiler? • export LCCDIR=/cygdrive/c/ImageProcessing/lcc/lccdir • cd $LCCDIR/.. • make clean • make

  9. How can I abort a simulation? • Use <ctrl>+<c> to abort a running simulation. • VCD trace stored till point at which simulation is stopped.

  10. How can I debug the mMIPS? • Create a small test program to check the newly added functionality • Create a VCD trace via a simulation • Compare the VCD trace with the assembler • Start at the beginning of the program • Does it do what you expect?

  11. Where do I find the maximal frequency of my mMIPS? • You can find the maximal frequency of your design in XilinX ISE • Estimate is given by FPGA II Compiler

  12. Outline • Design flow • Understanding the assembler • Frequently asked questions • How do I recompile the compiler? • How can I abort a simulation? • How can I debug the mMIPS? • Where do I find the maximal frequency of my mMIPS? • Assignment

  13. Assignment • Optimize the run-time of an image processing algorithm running on the mMIPS. Allowed • Add special instructions to the mMIPS; • Change design of the mMIPS (e.g. forwarding). Not-allowed • Modification of the image processing algorithm that are not needed to use special instructions (e.g. replace multiply with shifts).

  14. Testing and implementing the design Test for functional correctness • Run the original mMIPS with the algorithm to produce a reference output. • Compare the results of your mMIPS to the reference output. Implement your design on the FPGA • You must complete the flow till the FPGA. The maximum clock frequency at which your mMIPS can be synthesized is part of the performance.

  15. Submitting your results • Login to ftp://ftp.es.ele.tue.nl using your username/password • Put all .cpp and .h files in the directory ‘final’ • Put ‘mips_rom.bin’ and ‘mips_ram.bin’ in the directory ‘final’ Remarks We need a working mMIPS to test your changes Put all files directly in the directory ‘final’ do not use subdirectories The input/output locations of your image must be the same as in our program Your input image is automatically replaced with a new image by our tools

  16. Important dates • Test program available on Sunday 5/3 at 12.00h • http://www.es.ele.tue.nl/education/Computation/oo2/ • Submit results at Tuesday 7/3 before 12.00h • Make sure you submit before the deadline. It’s a hard deadline! • Presentations on Thursday 9/3 and Friday 10/3 • You will be informed about the schedule

  17. Support and Information • Dominic Gawlowski - FPGA • Valentin Gheorghita - LCC • Sander Stuijk - SystemC • Each Monday, Tuesday, Thursday and Friday between 14.00 and 16.00h. • Look also at http://www.es.ele.tue.nl/education/Computation/oo2/ for information, tips, etc.

  18. Questions?

More Related