%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% PAPER FOR:                                                                %%
%% https://locos.codeberg.page/loco2024/                                     %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% The first command in your LaTeX source must be the \documentclass
%% command.
%%
%% For submission and review of your manuscript please change the
%% command to \documentclass[manuscript, screen, review]{acmart}.
%%
%% When submitting camera ready or to TAPS, please change the command
%% to \documentclass[sigconf]{acmart} or whichever template is required
%% for your publication.
%%
%%
\documentclass[sigconf]{acmart}

%% For Unix quotes
\usepackage{epigraph}
\setlength{\epigraphrule}{0pt}

%% \BibTeX command to typeset BibTeX logo in the docs
\AtBeginDocument{%
  \providecommand\BibTeX{{%
    Bib\TeX}}}

%% Rights management information.  This information is sent to you
%% when you complete the rights form.  These commands have SAMPLE
%% values in them; it is your responsibility as an author to replace
%% the commands and values with those provided to you when you
%% complete the rights form.
\setcopyright{none}
\copyrightyear{2024}
\acmYear{2024}
\acmDOI{}

%% These commands are for a PROCEEDINGS abstract or paper.
\acmConference[LOCO '24]{1st International Workshop on Low Carbon
Computing}{December 05, 2024}{Glasgow, Scotland, United Kingdom }
%%
%%  Uncomment \acmBooktitle if the title of the proceedings is different
%%  from ``Proceedings of ...''!
%%
%%\acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection,
%%  June 03--05, 2018, Woodstock, NY}
\setcopyright{none}
\settopmatter{printacmref=false}
\acmDOI{}
\acmISBN{}


%% Submission ID.
%% Use this when submitting an article to a sponsored event. You'll
%% receive a unique submission ID from the organizers
%% of the event, and this ID should be used as the parameter to this command.
%%\acmSubmissionID{123-A56-BU3}

%% For managing citations, it is recommended to use bibliography
%% files in BibTeX format.
%%
%% You can then either use BibTeX with the ACM-Reference-Format style,
%% or BibLaTeX with the acmnumeric or acmauthoryear sytles, that include
%% support for advanced citation of software artefact from the
%% biblatex-software package, also separately available on CTAN.
%%
%% Look at the sample-*-biblatex.tex files for templates showcasing
%% the biblatex styles.
%%

%%
%% The majority of ACM publications use numbered citations and
%% references.  The command \citestyle{authoryear} switches to the
%% "author year" style.
%%
%% If you are preparing content for an event
%% sponsored by ACM SIGGRAPH, you must use the "author year" style of
%% citations and references.
%% Uncommenting
%% the next command will enable that style.
%%\citestyle{acmauthoryear}


%% end of the preamble, start of the body of the document source.
\begin{document}

%% The "title" command has an optional parameter,
%% allowing the author to define a "short title" to be used in page headers.
\title{A computing system that embraces the language}

%%
%% The "author" command and its associated commands are used to define
%% the authors and their affiliations.
%% Of note is the shared affiliation of the first two authors, and the
%% "authornote" and "authornotemark" commands
%% used to denote shared contribution to the research.
\author{Ekaitz Zárraga Río}
%% \authornote{Both authors contributed equally to this research.}
\email{ekaitz@elenq.tech}
%% \affiliation{%
%%   \institution{Institute for Clarity in Documentation}
%%   \city{Dublin}
%%   \state{Ohio}
%%   \country{USA}
%% }

%%
%% By default, the full list of authors will be used in the page
%% headers. Often, this list is too long, and will overlap
%% other information printed in the page headers. This command allows
%% the author to define a more concise list
%% of authors' names for this purpose.
\renewcommand{\shortauthors}{Zárraga Río E.}

%% The abstract is a short summary of the work to be presented in the
%% article.
\begin{abstract}
  Computing, as any other field, evolved from the previous work on the matter.
  During its development huge advancements have been done in many areas but
  only some are in use today, due to the inertia industry already had, which
  forced some sort of retrocompatibility. In this document a new computing
  platform is presented, one that makes use of some of the ideas that didn't
  reach the mainstream and uses our current computing capabilities in order to
  achieve a personal computing device that embraces the programming language.
\end{abstract}

%% Document outline:
%% - Motivation: Simplification as a mean for more efficient computing and
%%   a more accessible manufacture. Modern computing systems are so complex
%%   that they require very good manufacturing to deal with the excessive
%%   computing waste.
%%   Also, maintenance should be reduced as much as possible, even leaving it
%%   in the hands of the user, as Oberon would, reducing the impact of the
%%   repairs, upgrades, and computing infrastructure needed for simple tasks.
%% - Kernels, Unix
%% - Interpreters
%%    - Shells
%%    - Are interpreters a kernel?
%% - Removing layers instead of adding layers
%%    - Unikernels: Good idea but miss the target.

%% Keywords. The author(s) should pick words that accurately describe
%% the work being presented. Separate the keywords with commas.
\keywords{Operating Systems, Programming Languages, Interpreters}
%% A "teaser" image appears between the author and affiliation
%% information and the body of the document, and typically spans the
%% page.
%% \begin{teaserfigure}
%%   \includegraphics[width=\textwidth]{sampleteaser}
%%   \caption{Seattle Mariners at Spring Training, 2010.}
%%   \Description{Enjoying the baseball game from the third-base
%%   seats. Ichiro Suzuki preparing to bat.}
%%   \label{fig:teaser}
%% \end{teaserfigure}

%% Dates for the article
%% \received{20 February 2007}
%% \received[revised]{12 March 2009}
%% \received[accepted]{5 June 2009}


%% This command processes the author and affiliation and title
%% information and builds the first part of the formatted document.
\maketitle

\section{Motivation}


\subsection{Von Neumann model}
  The von Neummann model introduced in 1945 proposes a general purpose device
  consisting of a \textit{Central Processing Unit} (CPU) and a \textit{Store}.

  The \textit{Store} is often implemented as a \textit{Random Access Memory}
  (RAM or, simply, \textit{memory}), which stores data in bytes, each of them
  with an \textit{address}, in a tabulated fashion.

  In the von Neumann model the data and the program are both written to and
  read from the \textit{Store}. This arrangement had carried criticism over the
  years but it's also a fundamental part of how modern Operating Systems work.

\subsection{Unix's heritage}
\epigraph{
  Applicants must also have extensive knowledge of Unix, although they should
  have sufficiently good programming taste to not consider this an achievement.
}{\textit{-- Hal Abelson}}

  Since its inception, Unix was a huge innovation in Operating Systems market.
  Its main features include \textit{multitasking} and \textit{multi-user}
  support, a programming interface, \textit{files as abstractions} for devices
  and other objects and a powerful \textit{shell} that facilitates program
  composition.

\subsubsection{The Kernel}
  In the Unix model, the Kernel, the core of the Operating System, is
  responsible for managing the hardware resources. For that job, it uses
  several concepts that systems designers and programmers are familiarized with
  and are discouraged to change. Those include \textit{virtual memory},
  \textit{processes}, \textit{shared-memory threads}, \textit{hierarchical
  filesystems} and \textit{system calls}.

\subsubsection{The Shell}
  The shell is run as a userspace program that has the hability to launch other
  programs using an outdated fork+exec mechanism that encourages memory
  overshoot\cite{fork:Baumann}.
  The shell in Unix systems is optimized for text processing as, in McIlroy's
  words, \textit{"text streams [are] the universal interface"}
  \cite{QuarterCenturyUnix:Salus}.

\subsubsection{Userspace programs}

  Programs are loaded in and given access to \textit{virtual memory}, and they
  can only run a subset of the CPU instructions of the machine, the
  \textit{unprivileged} set. For restricted operations, programs need to call
  the \textit{Kernel} using a \textit{system-call} that can be accepted or
  rejected by the latter, according to some rules for \textit{permissions} or
  resource availability. In order to achieve multitasking, many programs can be
  loaded in memory (\textit{processes}) simultaneously and the \textit{Kernel}
  \textit{schedules} which of the them will run at a given moment in time and
  pauses the rest accordingly.

%  ELF/Mach-O/EXE -> the kernel acts as an interpreter for them.
%  Virtual memory separates one program from another.
%  The CPU helps with that.
%  Each program is a process (invented concept)
%  Each process can launch threads \cite{Threads:Lee}

  \paragraph{Concurrency}
  If programs need to operate concurrently they can create many
  \textit{processes} or use \textit{threads}. A \textit{thread} is a
  lightweight version of a \textit{process} that shares the memory with the
  \textit{process} that created it. Resource sharing in a concurrent system has
  many security and reliability implications, and has proven to be a difficult
  subject for computer programmers over the years
  \cite{Threads:Lee}.


\subsubsection{Interpreters}
%  Unix was marketed as a system for multiple languages / supports many
%  languages via interpreters that ease the development experience. Describe how
%  they work and why they are useful
%  Interpreters are programs that run in userspace

\subsection{Computer hardware}
  Computer processors, often marketed as "\textit{general purpose}", are based
  on the von Newmann model\cite{LiberateFromVonNeumann:Backus}, a CPU and a
  Store that is, and designed for running an Operating System on them. They
  clearly separate \textit{privileged}, reserved for the kernel, and
  \textit{unprivileged} instructions, that any userspace program can use, in
  order to facilitate \textit{system-calls} and \textit{interrupt} and
  \textit{virtual memory} control.

  Contrary to what one could expect, most of the improvements in the processor
  architectures come from specialization for the said case, and not from
  generalization.

  Modern processors are heavily optimized for Operating Systems that follow the
  Unix model (including MS Windows), and a memory layout that resembles that of
  a \textit{C-like} program, which also comes from the days of Unix
  \cite{GeneralPurposeProcessor:Chisnall}, reducing the chance for other
  paradigms to succeed.


\section{Proposal}

\section{CPU}
\subsection{Optimization for tree structures}
\subsection{Hardware garbage collection}
\subsection{Extendable CPU}
\subsection{No kernel/interpreter separation}
\subsection{No threads/processes but tasks}
\subsection{No virtual memory}
\subsection{Capability based security "lambda-style"}
  Reduces the amount of permission issues inherited from Von Neumann style and
  Unix.


%% The acknowledgments section is defined using the "acks" environment
%% (and NOT an unnumbered section). This ensures the proper
%% identification of the section in the article metadata, and the
%% consistent spelling of the heading.
%% \begin{acks}
%% To Robert, for the bagels and explaining CMYK and color spaces.
%% \end{acks}


%% The next two lines define the bibliography style to be used, and
%% the bibliography file.
\bibliographystyle{ACM-Reference-Format}
\bibliography{../../bibliography}


%% If your work has an appendix, this is the place to put it.
%% \appendix


\end{document}
\endinput
