entrelacs

Arrow Space

Introduction

An “Arrow Space” (AS) is a store for arrow constructs as defined by the Entrelacs Paradigm. It’s the key component of an Entrelacs System.

Requirements

An Arrow Space must meet the following requirements.

Software Implementation

As a new kind of specialized hardware, an AS might work in a very different way than any existing digital storage medium. Please note a person may emulate an Arrow Space with discipline, pen, and paper.

In the meantime, an Arrow Space will be designed as a middleware leveraging traditional hardware, that is, volatile and mass memories, within an existing operating system.

API Overview

The Arrow Space Interface provides a high-level abstraction for interacting with the storage. It allows developers to:

How to Reach These Goals Within Existing Hardware


Artistic view
Arrows are basically stored as deduped self-indexed pairs of pointers

Prevent Duplicates During Arrows Assimilation

The Arrow Space is populated by converting data into arrows. This conversion process is called assimilation. It occurs:

Each new arrow is assimilated from its farthest ancestors, that is, entrelacs. One first assimilates entrelacs, then entrelacs’ children arrows, then their grandchildren, and so on up to the overall assimilated arrow.

To ensure each mathematically definable arrow is stored at most once, the assimilation process operates the whole mass storage as a giant content-indexed open-addressed reentrant hash-table.

Main Steps of an Arrow Assimilation

  1. Hashing the arrow definition to get a default location.
  2. Looking for the existing singleton at the default location.
  3. Storing the arrow definition if it is missing.
  4. Managing conflicts through open addressing as introduced below.

“Hash Everything!”

The first step of the arrow assimilation process consists in computing a default location where to probe the arrow singleton and store it if missing.

Solve Conflicts by Open Addressing

Once truncated modulo the total mass storage space size, a hash code defines a valid default arrow location.

In case of conflict with existing unrelated arrows, one shifts this default location by some offset. If there’s still a storage conflict, one shifts the location again, and so on.

Looking for an already stored arrow consequently requires searching in several locations starting from a default one:

This approach is called Open Addressing when applied to hash tables. The default storage location is named an open address and the search process described above is called probing.

Perform Orthogonal Persistence

As a whole, the AS is a single persistent memory device merging all the memory levels of the hosting system. In other words, the AS stores arrows into a mass storage device accessed through a massive RAM-based cache. This cache operates almost all the available fast-access volatile memory resources.

Anticipated Prototype

All the strategies introduced above are applied to the currently designed Arrow Space Prototype.