Git Product home page Git Product logo

mips-traces's Introduction

Build Status

MIPS test traces for MIPT-MIPS Simulator.

Traces

Name Description
add.s simplest test for add instruction
bubble_sort.s bubble sort of 20 integers, contains a lot of branches
corner.s ? naughty/corner cases from our debug experience
factorial.s recursive implementation of factorial
fib.s loop implementation of Fibonacci numbers
dc_ic_stress.s a data and instruction memory stress based on random memory access pattern
dc_stress.s a data-only memory stress based on random memory access pattern
move.s just a single move pseudo-instruction
smc.s self-modifying MIPS code, modification is performed 'in-flight'
static_arrays.s example of a memory-located static array

Torture tests

Torture tests were developed as a part of SPIM S20 MIPS Simulator. SPIM source files are distributed under Free BSD license (see file header). Copyright (c) 1990-2010, James R. Larus. All rights reserved.

We separated tests for MIPS32 and MIPS64 versions, as these architectures have different flow to initialize negative value or all-ones value.

Name Description
tt.core.universal.s Instructions which behave similarly in MIPS32 and MIPS64
tt.core32.s Tests MIPS32-specific instruction behavior
tt.core32.le.s Tests MIPS32-specific and little-endian instruction behavior
tt.core64.s MIPS64-specific version of tests
tt.core64.le.s Tests MIPS64-specific and little-endian instruction behavior

Getting Started

GNU binutils for MIPS should be installed and have the following shortcuts:

 mips-linux-gnu-as           is an assembler for MIPS ISA
 mips-linux-gnu-ld           is a linker for MIPS object files
 mips-linux-gnu-objdump      dumps content of MIPS binary files (also disassembles instructions)

MIPT-MIPS wiki has an instruction how to get and build MIPS binutils: https://github.com/MIPT-ILab/mipt-mips/wiki/MIPS-binutils

Additionally, you may look inside get-binutils.sh script. The script is used to install GNU Binutils on CI hostings.

Building a Trace

Use make command to build all the traces or make tracename.out to build one trace. You may specify local mips-linux-gnu-as and mips-linux-gnu-ld binaries with MIPS_AS= and MIPS_LD= Make variables.

In order to create MIPS binary file manually do the following steps:

  1. create a file with assember code using and text editor
  2. save it as <test name>.s
  3. generate an object file: mips-linux-gnu-as <test name>.s -o <test name>.o
  4. convert the object file into the binary file: mips-linux-gnu-ld <test name>.o -o <test name>.out
  5. (optionally) look the content of .out using (pay attention only to .text section): mips-linux-gnu-objdump -D <test name>.out

mips-traces's People

Contributors

andreizoltan avatar inedostoev avatar nullbyte4532 avatar pavelkryukov avatar qsuo avatar trexxet avatar vodogrey2012 avatar yanlogovskiy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mips-traces's Issues

Add loop interchange example trace

A classical cache-oriented optimization is loop interchange (see lectures). We need a good example so IPC change can be visible for that trace.

Add software prefetch example

The idea is to add 2 traces: one without PREF instruction and one with, and see performance difference (if any is expected on 5-staged MIPS)

Add nested loops example

Two-level BP has much performance for prediction nested loops as it generates mispredicts only on loop exit. To demonstrate it, a simple trace with nested loops is required.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.