Giter VIP home page Giter VIP logo

pa's People

Watchers

 avatar

pa's Issues

TODO

  • ROB/SB full condition
  • Make ROB
  • Make caches
  • Hook stages (get datapath)
  • Bypass unit

Caches

Ver que los vectores y las matrices esten alineadas si vamos a usar una direct mapped cache. mucho cuidado...

A las malas usar fully associative y au.

También: podemos modificar los programas para que hagan los 4 load word de la linea de cache en orden

PINEAR LINEAS PENDIENTES DE STORE (con un CONTADOR) si hay varios stores pendientes no podemos "unpinear" hasta que todos hayan acabado. CONTADORRRRRR

Fix datapath

Current structure is:

F_D -> D_E -> E_M -> M_WB
-> M2_M3

We should fix that to

D_E -> E_M
-> M1_M2 (THIS WRITES BACK alu_result, alu_rob_wenable, alu_rob_id)

And fix stalls accordingly

Read object files

Combinar esto
https://github.com/BrunoLevy/learn-fpga/tree/master/FemtoRV/TUTORIALS/FROM_BLINKER_TO_RISCV#step-20-using-the-gnu-toolchain-to-compile-programs---assembly

Hacer un for loop que sea del estilo de:

initial begin
    $readmem("programa.o", MEM)
end

`UNIT_TEST("NOSE")
    for(int i = 0; i < NUM_INSTRUCCIONES_PROGRAMA; i++) {
        instr = MEM[i];
        #1
   }
`UNIT_TEST_END

Con los tests del decoder y comprobar que podemos leer instrucción a instrucción y que el decoder saca el resultado bien (menos el auipc ese de los cojones que aun no está)

https://www.chipverify.com/verilog/verilog-arrays-memories

  • Mirar si podemos leer el "programa.o" con un "offset". Cuando metamos memoria virtual, PC virtual 0x0 leerá la dirección FISICA 0x8000. Si podemos "desplazar" todo el programa por un offset de 0x8000 estamos gucci
    Se hace con el linker script

Test programs

Make 1 testbench for every test program and check that results are as expected when possible

  • vectorCopy
  • vectorSum
  • matrixMul
  • Extra

Diagrams

pa.odg

LB loads a byte and sign-extends it. So we can forward from the Store Buffer from a SW or a SB

LW can only be forwarded from a whole SW in the RB with a exact match.

  • Split (ALU, MUL) and cache pipelines in order to avoid stalling (after exec stage), rework stalling logic...
  • See which stages have to receive a RESET signal when exceptions occur¿? ALL

Example

arco-elpis.pdf

Fix ALU

  • ALU doesn't have exceptions. At most, we could signal overflow but we're not going to do anything with it anyway

  • Also, "zero" signal is wrong

  • Taking a branch is not an exception. We can simply set aluOut different to 0 if its taken and handle it in the execution stage

module execution stage..

assign branchTaken = aluOut != 0 && instr_J_type; 

Minor issue: resetting RF after exceptions

PA/src/core.sv

Line 184 in 6a2388a

.rst(rst || rob_exception_out), //incorrectly resetting register file

We need to raise the reset signal in order to clean RF_ROB, but when doing so we're also resetting the register file.

We don't care too much because after exceptions we're going to get stuck in a loop, and we don't reset the store buffer

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.