11-18-2014, 03:29 PM
(This post was last modified: 11-18-2014, 03:39 PM by LordDecapo.)
Neo, our system supports this xD lol
this actually isn't that hard, u just have to have a base offset that applies to ALL info in ram except the allocation info, so u kinda keep a portion (would be the same size as the offset) of the RAM as a papartition table,
you put that base offset in a register so it can be expanded if needed, or u have the table starting at high address and go backwards with the partition table.
Then u have each entry be 3 bytes long.
one is the PID (program ID for the program ur allocating for) the start address and the end.
then when u store data the main offset is added plus the start address, then it checks the resulting value against ur End address, if it's higher, it haults and returns an error, or automatically expands.
Easy as hell in logisim, in MC, the system would be able the size of the avg CLE data loop, (same bit size as ur addressing). Would add at least like 10-15 ticks per store/load tho..
this actually isn't that hard, u just have to have a base offset that applies to ALL info in ram except the allocation info, so u kinda keep a portion (would be the same size as the offset) of the RAM as a papartition table,
you put that base offset in a register so it can be expanded if needed, or u have the table starting at high address and go backwards with the partition table.
Then u have each entry be 3 bytes long.
one is the PID (program ID for the program ur allocating for) the start address and the end.
then when u store data the main offset is added plus the start address, then it checks the resulting value against ur End address, if it's higher, it haults and returns an error, or automatically expands.
Easy as hell in logisim, in MC, the system would be able the size of the avg CLE data loop, (same bit size as ur addressing). Would add at least like 10-15 ticks per store/load tho..