Ability to address larger memory space with SimpleMemory (HAST-259)
Piedone opened this issue · comments
SimpleMemory
currently lets you address 8GB of memory with its int cellIndex
(int.MaxValue * 32
, since cells are 32b). This is sufficient for now, but we could support addressing more memory.
This can be done by making the size of the Hast_IP CellIndex
port configurable in IDeviceManifest
, so this can vary between FPGA devices. Though the user code would need to be adapted between platforms too so this is not ideal. Alternatively, we could use a 64b int for addressing in ˙SimpleMemory
operations as well as in the Hast_IP
ports.
However, the current limitation in .NET Framework is that even with gcAllowVeryLargeObjects
enabled the maximum index of a single dimension can still be around int.MaxValue
, so we wouldn't be able to use this when running as software. This can be overcome by making SimpleMemory
be paged, i.e. use multiple arrays internally (if <2GB these can be even without gcAllowVeryLargeObjects
) but have ulong
indices in the interface.
After this device drivers for Alveo cards can be updated.