Lombiq / Hastlayer-SDK

Turning .NET software into FPGA hardware for faster execution and lower power usage.

Home Page:https://hastlayer.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Jira issue