entrelacs

Arrow Space

Introduction

An “Arrow Space” (AS) is a store for arrows structures involved in the Entrelacs Paradigm. It’s the key component of an Entrelacs System.

Please note one may simulate an Arrow Space with pen and paper.

One day, we may invent a new piece of hardware working as an AS. If so, it won’t necessarily consist of a bank of data buckets like all other data storage so far.

For now, we introduce the AS as a piece of software leveraging traditional hardware, that is, volatile and mass memories.


Artistic view
Arrows are basically stored as pairs of pointers

AS Requirements Summary

An AS must meet the following requirements:

API Overview

The ArrowSpaceInterface provides a high-level abstraction for interacting with the AS. It allows developers to:

How to Reach These Goals Within Existing Hardware

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 may operate the whole mass storage device 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. See this page for more details.