💾 Archived View for soviet.circumlunar.space › zwatotem › diff › ideas.gmi captured on 2022-07-16 at 14:07:20. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-12-03)

-=-=-=-=-=-=-

Beginning thoughts

It might take me over a month to get to it, but finally there is a new post, and it's on my ideas on organization of computing and technology. Still though I couldn't come up with a clear order of things, that would explain concepts the best, but then my old phone came to the rescue.

You see, I have an old Nokia phone, once my daily driver, now just laying somewhere in a drawer. But once in a while I take it out and look at my old notes, I used to (and still I do) take on it. Here is one of them:

(Because this was taken in Polish, I will include it's original text, so if you're Polish you can read it in it's original saying)

The note

Polish version

Note, that this text was written for myself, so it's style may seem a little off.

Themed note: computer systems design. So more emphasis can be placed on something, that is called types. So the idea is that every type; basic, or composite had it's own representation in runtime.

Here I was refering to my experinece from C++. So for as basic type I define the one that can be represented in CPU, so mainly integers, floating point numbers, ASCII characters. As **composite** I understand types, which in C++ would be defined using `struct` keyword, so in memory usually represented as byte sequence, where every batch of bytes corresponds to a member of a certain type.

Type reperesentation contains references to its parents in inheritance model, reference to every member type and a definition of operations that can be performed on objects of that type. Basic types, as they are basic, can reference their operations as pointers into FPGA component fo the CPU.

Here I reference my own idea of CPU organization. I have no experience in microelectronics, so I don't know if it is viable from the performance and production perspective. The idea is to combine strengths of processing unit and programmable logic. CPU in every step besides the data, where the operation is performed would also recive "an address" of the operation itself, e.i. address of input to FPGA block, where there exist phisical implementation of the operation. In theory it could enable dynamic acceleration of certain operations; demanded at the moment. In practice - I'm not really sure about cost viability and speed of this solution. Although I've seen SoC chips with FPGA component on-board, none of them had this level of integration.

Composite types can define their operations as subprograms. These definitions can be written and read from hard drive. Speaking of the drive; file system is replaced with _data system_. It means, that data is kept consistent between memory and storage.Data is always compliant to existing type system. The exchange between RAM and drive is done by operation system in the background. All data in the system is kept in namespaces. Data can exist in different forms, such as files, trees, sets, maps, version control structures, etc.

Here I'm refering the fact, how data is unnecesserly serialized into text for storage, which makes no sense, when it's representation is actually ready for moving into hard drive in binary form, while encoding, and (in particular) parsing this data back commits into significant CPU usage. In practise it means opting out from using most of file types. Programmer's and users approach into what was once files should drastically change. What was once a file with mp3 extension, opened by a certain computer program now is a "variable" of type MP3, which can be used as a certain function parameter.

Ending thoughts

There is a lot of questions left to answered, that this system poses, but I'll leave them for another time. I wanted to make this one shorter, but it came out as always, so the snapshot part will be updated with a delay.

Next time I'll try to make my posts shorter, wish me luck.