PrincetonUniversity / openpiton

The OpenPiton Platform
http://www.openpiton.org
622 stars 212 forks source link

Simulating cores > 64 will hang at hart 63 of 64+ harts #148

Open trueif opened 1 month ago

trueif commented 1 month ago

图片

Hi experts,

I am making X tile = 13 and Y tile = 5 (or any X * Y > 64 combinations). The simulation will hang at the 63th hart (from 0th to 63th). The 64th hart will never work. Could you please let me know if it is the limitation / bug of the current RTL code, or there is some settings that I did not configure?

Thanks!

Jbalkind commented 1 month ago

After 64 tiles there are a couple of blockers:

  1. By default, the L2's share vector (which sets the maximum number of tiles) is set to 64. You will need some changes to work around this. If you look in the second last Metro-MPI commit (https://github.com/metro-mpi/metro-mpi/commits/metro-mpi/ commit 264b3659a9495ad2d52db7d74b28df962eec3f22) then you will see some changes to define.h.pyv, l2.h.pyv, and the l2 files to support a share vector size of 1024. Note that this will make the L2 metadata quite large and thus increasing area.
  2. The core ID in the bare metal boot code for simulation passes the tile count via a char, capping the number of tiles at 255. To get past this, there's a fix in syscalls.c and hello_world_token.c on the same commit as above.