09-04-2017, 03:33 AM
Introduction
Hello, everyone, it is Tidal_Force in case you are unfamiliar with my forum name.
As builds get more and more ambitious, it has come to my attention that a large, centralized memory system would be useful, as it would allow ORE members to offload large data storage from their plot. It would also serve as an extremely slow, rudimentary network if it has to. However, its protocols will be extremely simple and not explicitly based on real-life systems.
I propose the Massive Memory Module (the MMM for short) to accommodate this need. It is something I have wanted to do for a while now as I will need a large storage system for my upcoming CPU. Below is a list of its protocols and how I will be implementing it.
Basic Operation
The MMM is a system that operates on 8 byte blocks of memory. The memory is stored in queues, which wraparound to provide non-erasing reads. There is a link to the basic structure of the memory system I will be using. It is binary and it approaches 6 blocks/bit.
There will be 2 ^ 11 (2048) addresses. This provides a grand total of 16384 bytes of data that the memory will be able to store. The addresses will only be allocated to a particular user nominally once the system is set up.
Protocol
The MMM will only allow one user access to it at a time. I realize this is simplistic, but I do not anticipate the need for multiple data accesses for an already slow system. If the MMM is already being accessed by a user when another user accesses it, the MMM will deny the request of the second user. It will not hold their request as a pending operation. Each user of the MMM will be identified by a plot address. The basic format of serial data that one needs to send to the MMM is as follows.
[1 Bit: Request Access/Intialization][1 Bit: Operation][11 Bits: Address of Block][Optional 64 Bits: Data][Optional 8 bits: Plot Address]
This means that each access to the MMM will be either 21 bits for reading or 77 bits for writing. If you want to communicate with the MMM, I will provide a serial system for you.
Networking
I will be (if this project is approved) constructing a network that will act as a scaffold for basic operation of the MMM. This network may be replaced when more efficient networks are finished. Each user will communicate with the MMM through the use of a central bus. This bus will be locked in two situations:
- An acknowledged request to the MMM until the MMM is finished processing the request.
- A request to the MMM when it is not currently busy.
Although this implementation is inherently simplistic, it will make it easier for the project to be completed.
Concerns
- I will need another plot to construct the MMM and its related data buffers.
- I am worried about connecting plots together as it may require going through unapproved areas. This is the main problem and if anyone has solutions it would be incredibly helpful.
- The access times may be in the order of minutes (600+ ticks).
Conclusion
- The MMM will provide for the growing need of massive storage in ORE. It will be able to store 16384 bytes of data and access them in 8 byte blocks. If anyone would like to share suggestions or criticism, I am more than happy to read them.