(comment
===============================================================================
This section is defining additional HTML DOM manipulation commands.
Note: this code is sensitive to tabs, do not use Tab character in
the text below. In Vim set expandtab before editing!
===============================================================================
)
(define (\n "
")
(head (getElement "head"))
(body (getElement "body"))
(title (lambda (value) (setProperty (getElement "title") "text" value)))
(span (lambda (parent)
(setProperty (createElement parent "span") "text" (concat (rest args)))))
(h1 (lambda (parent)
(setProperty (createElement parent "h1") "text" (concat (rest args)))))
(h2 (lambda (parent)
(setProperty (createElement parent "h2") "text" (concat (rest args)))))
(h3 (lambda (parent)
(setProperty (createElement parent "h3") "text" (concat (rest args)))))
(ordered_list (lambda (parent)
(createElement parent "ol")))
(list_item (lambda (parent)
(p (createElement parent "li") (concat (rest args)))))
(quotation (lambda (parent)
(setProperty (createElement parent "code") "text" (concat (rest args)))))
(p (lambda (parent)
(setProperty (createElement parent "p") "text" (concat (rest args)))))
(a (lambda (text link)
(concat (list "" text ""))))
)
(comment
===============================================================================
List of important external references. Note that some of the
references are hard-coded in the body of the document. But the
most noteworthy ones are listed here for the convenience of the
reader.
===============================================================================
)
(define
(AlanKayShowingSizeOfMicrosoftCode
"https://www.youtube.com/embed/prIwpKL57dM?start=1556&end=2063")
(EtienneDelacroixInterview
"https://greenhosting.am/db/get?id=6febc033-2171-4c24-b430-680f24d96e0d#ff129eaf-8ffb-484c-97ef-ab21f4b97d84")
(McCarthyEarlyHistoryOfLisp "http://jmc.stanford.edu/articles/lisp/lisp.pdf")
(MetaPresentation "https://www.youtube.com/watch?v=VdJwdX-IaTQ")
(TheEarlyHistoryOfSmalltalk "http://worrydream.com/EarlyHistoryOfSmalltalk/")
(BackusTuringAwardLecture "https://dl.acm.org/doi/pdf/10.1145/359576.359579")
(Steps2012FinalTR "https://tinlizzie.org/VPRIPapers/tr2012001_steps.pdf")
(AlanKayExplainingSmalltalkLayers
"https://www.youtube.com/embed/prIwpKL57dM?start=1333&end=2980")
(DistributedOSWikipedia
"https://en.wikipedia.org/wiki/Distributed_operating_system")
(RustPrankVideo "https://www.youtube.com/watch?v=QTiAWZ1YfzI")
(TheBlueBookOfLisp
"https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html")
(TheBlueBookOfSmalltalk
"http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf")
(MetaIITutorial "https://www.bayfronttechnologies.com/metaii.html")
(AlanKayMSThesis "https://www.chilton-computing.org.uk/inf/pdfs/AD0761962.pdf")
(EToysDemo "https://www.youtube.com/embed/prIwpKL57dM?start=180&end=467")
(ErlangArmstrongThesis "https://erlang.org/download/armstrong_thesis_2003.pdf")
(QuickThreadsLibrary "https://github.com/nakane1chome/SystemC-QuickThreads")
(TimBernersLeeExplainingLinkedData "https://www.youtube.com/watch?v=OM6XIICm_qo")
(TimBernersLeeTheNextWebTedTalk
"https://www.ted.com/talks/tim_berners_lee_the_next_web")
(TimBernersLeeUnhappyWithWeb3
"https://www.cnbc.com/2022/11/04/web-inventor-tim-berners-lee-wants-us-to-ignore-web3.html")
(ViewPointsRIArchive
"https://web.archive.org/web/20220808134416/http://www.vpri.org/writings.php")
(CroquetProject "https://en.wikipedia.org/wiki/Croquet_Project")
(NamedDataNetworking "https://en.wikipedia.org/wiki/Named_data_networking")
(WhatIsVPP "https://www.synopsys.com/glossary/what-is-virtual-prototyping.html")
(ChromeOSWP
"https://services.google.com/fh/files/misc/chrome_enterprise_and_beyondcorp_enterprise_technical_paper.pdf")
(BittorrentArch "https://www.quora.com/What-is-BitTorrents-architecture")
(ChromeAppStore "https://chrome.google.com/webstore")
(ChromeBook "https://en.wikipedia.org/wiki/Chromebook")
(SqueakVMWebImage "https://wiki.squeak.org/squeak/1762")
(AlanKayDDobsInterview
"https://www.minormiraclesoftware.com/university_wiki/images/d/dc/Dr_Dobb%27s_Interview_with_Alan_Kay_July_10_2012.pdf")
(ConversationWithAlanKay "https://queue.acm.org/detail.cfm?id=1039523")
(SqueakObjectModelOverview
"https://rmod-files.lille.inria.fr/FreeBooks/CollectiveNBlueBook/Rowledge-Final.pdf")
(MetaxOverview "https://leviathan.am/#b2e6b585-68e0-459f-b646-983d54687232")
(NWirthProjectOberonPortal "http://www.projectoberon.net/")
(OberonStationOverview "http://www.projectoberon.net/ostation/OberonStationQR.pdf")
(NWirthLogicLanguage "https://people.inf.ethz.ch/wirth/Lola/index.html")
(UrbitOSOverview "https://urbit.org/overview/urbit-os")
(GreenArrayEvalBoard
"https://www.greenarraychips.com/home/documents/greg/DB014-190520-EVB002.pdf")
(ReflectionInSmalltalk "https://arxiv.org/pdf/1804.07272.pdf")
(ReflectiveProgramming
"https://rmod-files.lille.inria.fr/Lectures/StephaneDucasse/200809-Turino/STOOP-305-ReflectiveProgramming5.pdf")
(ImageBasedLanguageConcept "https://wiki.c2.com/?ImageBasedLanguage")
(EditCompileRunVsImageBased
"https://www.quora.com/What-is-this-live-objects-in-Smalltalk-Ive-gotten-used-to-that-edit-compile-test-debug-cycle-and-want-to-understand-the-philosophy-behind-Smalltalk-Pharo")
(MetaCircularEvaluator "https://en.wikipedia.org/wiki/Meta-circular_evaluator")
(EvalApplyLecture "https://www.youtube.com/watch?v=aAlR3cezPJg")
(LispAsMES
"https://www.gnu.org/software/mes/manual/html_node/LISP-as-Maxwell_0027s-Equations-of-Software.html")
(CreateYourOwnForthCompiler "https://www.youtube.com/watch?v=gPk-e9vGSWU")
(BuildYourOwnLisp "https://buildyourownlisp.com/")
(TheZammBook
"https://en.wikipedia.org/wiki/Zen_and_the_Art_of_Motorcycle_Maintenance")
(KenThompsonTuringLectureOnRootOfTrust
"https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf")
(TotalInformationAwarenessSpyingProgram
"https://en.wikipedia.org/wiki/Total_Information_Awareness")
(Stage0CleanBootstreapProject "https://github.com/oriansj/stage0")
(GNUMESProject "https://www.gnu.org/software/mes/")
(ProgrammersWorstNightmareStory
"https://www.quora.com/What-is-a-coders-worst-nightmare/answer/Mick-Stute")
(NotesOnStage0 "https://bootstrapping.miraheze.org/wiki/Stage0")
(StepanovPrinciple "https://www.boost.org/sgi/stl/complexity.html")
(TCCBOOOTLinuxInInterpreter "https://bellard.org/tcc/tccboot.html")
(TinyCCompilerByFabriceBellard "https://bellard.org/tcc/index.html")
(TinyJSCompilerByFabriceBellard "https://bellard.org/quickjs/")
(NewJSEngineStartup "https://oven.sh/")
(NewJSEngineEffort "https://bun.sh/")
(NewPythonEngine "https://www.modular.com/mojo")
(ZigLanguage "https://ziglang.org/")
(SqueakOSOnBareHW "http://squeaknos.blogspot.com/")
(SmalltalkEmulatorInBrowser "https://smalltalkzoo.thechm.org/")
(OberonEmulatorInBrowser "https://schierlm.github.io/OberonEmulator/")
(PCEmulatorInBrowserBootingWindows
"https://bellard.org/jslinux/vm.html?url=win2k.cfg&mem=192&graphic=1&w=1024&h=768")
(BellardsTinyVMInJS "https://bellard.org/jslinux/")
(MythsAboutHLS4FPGA
"https://promwad.com/news/myths-around-high-level-synthesis-fpga")
(ShiftingToDistributedMemoryModel
"https://journals.iucr.org/d/issues/2009/07/00/ic5056/ic5056.pdf")
(Simulink2FPGA
"https://www.mathworks.com/help/hdlcoder/gs/fpga-synthesis-and-analysis-using-the-hdl-workflow-advisor.html")
(LabView2FPGA
"https://www.viewpointusa.com/ie/ar/labview-fpga-the-good-the-bad-and-the-ugly/")
(CSPModelInPtholemyII
"https://ptolemy.berkeley.edu/ptolemyII/ptII10.0/ptII10.0.1/ptolemy/domains/csp/doc/main.htm")
(KPNModel "http://www1.cs.columbia.edu/~sedwards/papers/kahn1974semantics.pdf")
(SDFModelInPtholemyII
"https://www.researchgate.net/figure/Ptolemy-II-model-using-the-synchronous-dataflow-SDF-model-of-computation_fig4_238271992")
(DDFModelInPtholemyII
"https://ptolemy.berkeley.edu/papers/04/DynamicDataflow/GangMS.pdf")
(KPNDFCompositeModel
"https://www.labri.fr/perso/ejeannot/publications/euromicro16.pdf")
(MetaxAlveoWorkingDoc
"https://instigate.academy/db/get?id=f7dfdeef-d782-4221-ba74-f3fa1cfa0c18-8a72140e-3829-4935-beb3-1ac09749bf4d")
(InstigateAppFramework3
"https://sourceforge.net/p/instigate-fwk/code/ci/master/tree/src/")
(InstigateManifestFramework
"https://instigate.academy/db/get?id=fbe1aafb-6fb9-43ff-a5c7-6fd4690e58d8#aea62f74-9622-4c9c-93cf-dcd707e11e43")
(ProximusOSKernel
"https://sourceforge.net/p/proximus-os-kernel/svn/HEAD/tree/trunk/src/os_kernel/")
(ComputerOrganizationBook
"http://home.ustc.edu.cn/~louwenqi/reference_books_tools/Computer%20Organization%20and%20Design%20RISC-V%20edition.pdf")
(NumaAwareProgramming
"https://onlinelibrary.wiley.com/doi/full/10.1002/cpe.6887")
(InstigateAcademyXUPPortal
"https://instigate.academy/db/get?id=fbe1aafb-6fb9-43ff-a5c7-6fd4690e58d8#1289ef05-059b-4a48-a6b1-2bd7997a6f58")
)
(comment ==================== THE ARTICLE =====================================
-------------------------------------------------------------------------
| Warning: do not use tabs if you're editing this code. Set expand tabs |
| in your editor to use only spaces for the whitespace |
-------------------------------------------------------------------------
)
(title "ISRC : STEPS 2.0 (Reinventing Computing)")
(h1 body "STEPS 2.0: Reinventing Computing")
(span body
"Notes from seminar at AMD Armenia, Yerevan, 2023 Mar 24." \n
"V.Poghosyan, ISRC Foundation. "
(a "vahagn@instigate.academy"
"mailto:vahagn@instigate.academy"))
(h2 body "Abstract")
(quotation body
"'People think that computer science is the art" \n
"of geniuses but the actual reality is the" \n
"opposite, just many people doing things that" \n
"build on each other, like a wall of mini" \n
"stones.' Donald Knuth")
(p body "Modern computer systems are built of "
(a "hundreds of millions" AlanKayShowingSizeOfMicrosoftCode)
" of lines of source code (LOC). The software part alone, without the
hardware sources (HDL code), just to be able to boot the PC, log in,
edit documents and browse the Internet requires more than 300M LOC
in a modern mainstream PC. This is beyond human reach.")
(p body "This creates an " (a "epistemological gap" EtienneDelacroixInterview)
", which makes it impossible for the educational sector to fulfill the
requirements of a healthy industry. Engineers are unaware of internal
structure and operations of their SW and HW tools, or of their mathematical and
structural properties.")
(p body "This also transforms the cyber-security assurance business into a "
(a "'security theater'" "https://en.wikipedia.org/wiki/Security_theater")
" in it's worst possible form: the "
(a "CISO " "https://en.wikipedia.org/wiki/Chief_information_security_officer")
" of a corporation (or country) is building up a portfolio of
cyber-security service and product vendor certificates, to prove to the
judge (in case of inevitable security breach) that it was not his fault,
because he did check every vendor's certificate.")
(p body "After creation of " (a "Lisp" McCarthyEarlyHistoryOfLisp) ", "
(a "Meta" MetaPresentation) " and " (a "Smalltalk" TheEarlyHistoryOfSmalltalk)
" the software industry " (a "went retrograde" BackusTuringAwardLecture) ".")
(p body "We're set out with a project to research, develop, implement, verify,
productise, deploy, support, and teach a full-stack HW-FW-SW-NW
ecosystem, with the LOC budget reduced by factor of 1000 and more. This
is not a mere re-write of " (a "STEPS" Steps2012FinalTR)
". STEPS included "
(a "FW/SW layer built on top of Virtual Machine" AlanKayExplainingSmalltalkLayers)
", but not the HW per se, and it was a single-computer (classical) OS,
not a " (a "Distributed OS" DistributedOSWikipedia) ".")
(p body "Furthermore, " (a "the modern OS rewrite efforts" "https://www.redox-os.org/")
" bind themselves with POSIX/UNIX legacy, and the "
(a "modern language efforts" "https://www.rust-lang.org/") " are trying to "
(a "repeat mistakes" RustPrankVideo) " of C++ and Python. We are
building an innovative (aka well forgotten old) programming language
based on discoveries made in design of "
(a "Lisp" TheBlueBookOfLisp) " and " (a "Meta" MetaIITutorial) ", "
(a "Scribe" AlanKayMSThesis) ", " (a "Smalltalk" TheBlueBookOfSmalltalk) " and "
(a "eToys" EToysDemo) ", Scheme and " (a "Erlang" ErlangArmstrongThesis)
", " (a "SystemC" "https://systemc.org") " and "
(a "QuickThreads" QuickThreadsLibrary) ", OpenCL and Metal, as well
as our our own research in " (a "Proximus" "https://proximusda.com")
" - an OS Kernel for Heterogeneous computers, " (a "Vostan" "https://vostan.net")
" - a Mind-map based Human-Machine Interaction paradigm for "
(a "Linked Data" TimBernersLeeTheNextWebTedTalk) ", and "
(a "Metax" "https://leviathan.am") " - an OS kernel for post-cloud era (aka "
(a "peer-to-peer" "https://en.wikipedia.org/wiki/Peer-to-peer") " aka "
(a "web 3.0" TimBernersLeeExplainingLinkedData) ", but NOT "
(a "web3" TimBernersLeeUnhappyWithWeb3) ") digital ecosystem, including
Hardware, Firmware, Software, Netware and R&D tools to design and
program them.")
(p body "We refer to this as STEPS 2.0 as reverence to STEPS initiative by "
(a "ViewPoints research institute" ViewPointsRIArchive)
" in direction of reinventing programming. STEPS 2.0 is about
reinventing the computing - not just reinventing the programming, but
also the hardware (down the technology stack), as well as upwards -
into the networking layers, because XXI century has opened the age of "
(a "Distributed Operating Systems" CroquetProject) " and "
(a "Named Data Networking" NamedDataNetworking) ".")
(h1 body "Introduction")
(h2 body "Vision")
(quotation body "'It is much more rewarding to " \n
"do more with less' Don Knuth")
(p body "With roughly 100K LOC budget allocated to Hardware (including HW "
(a "virtual prototypes" WhatIsVPP)
") 100K LOC budget for Firmware, including compilers (aka HLS), linkers
(aka P&R), debuggers and profilers, and 100K LOC budget for a modern
object-oriented distributed network OS kernel, Framework (DB + GUI TK),
and Desktop Environment, our system can be imagined as a
next-generation " (a "ChromeOS" ChromeOSWP) " analogue, which is
running over " (a "Bittorrent" BittorrentArch) " network, rather than
over the Google Cloud and " (a "Chrome App Store" ChromeAppStore)
". It would be running on our own HW, altrenative to "
(a "Chrombooks" ChromeBook) ", which made of boards with a central FPGA
instead of an SoC (user-made CPU/DSP fabric running inside the FPGA). "
)
(h2 body "Is Google Chromebook the only source of our inspiration?")
(p body "Before you are revolted by the GAFA reference and decide to stop
reading this, please note that the only reason we had to make an
analogy with " (a "ChromeOS" "https://en.wikipedia.org/wiki/ChromeOS")
" and not " (a "SqueakOS" SqueakVMWebImage) " or "
(a "Croquet" "https://croquet.io/") " is because modern IT industry
(including it's surrounding services such as education) is in deep
stagnation, caused by prevailing " (a "pop culture" AlanKayDDobsInterview)
". " (a "Squeak" "https://squeak.js.org/etoys/#fullscreen")
", " (a "Etoys" "https://www.youtube.com/embed/prIwpKL57dM?start=500&end=785")
" and " (a "Smalltalk" "https://wiki.c2.com/?SmalltalkLanguage")
" are little known in the pop world of IT. Furthermore, pop culture has
made its way into academia, resulting in the substitution of Lisp and
Smalltalk-based curricula with languages like Python, C++, Rust, Java,
and so on.")
(p body "«Computing spread out much, much faster than educating unsophisticated people
can happen. In the last 25 years or so, we actually got something like
a pop culture, similar to what happened when television came on the
scene and some of its inventors thought it would be a way of getting
Shakespeare to the masses. But they forgot that you have to be more
sophisticated and have more perspective to understand Shakespeare. What
television was able to do was to capture people as they were. So I
think the lack of a real computer science today, and the lack of real
software engineering today, is partly due to this pop culture.»")
(p body "This is a quote from the "
(a "«Conversation with Alan Kay»" ConversationWithAlanKay)
" Vol. 2, No. 9 - Dec/Jan 2004-2005. And although in this conversation
Alan Kay refers to Shakespeare as example of non-pop culture, we still
strongly recommend reading it up.")
(p body "So here is the corrected version of our")
(h2 body "Vision")
(quotation body "'It is easier to invent the future" \n
"than to predict it.' Alan Kay")
(p body "Our system can be imagined as a next-generation "
(a "SqueakOS" SqueakObjectModelOverview) " or "
(a "Croquet OS" "https://croquet.io/croquet-os/")
" built over next-generation Named-Data-Network (e.g. "
(a "Metax" MetaxOverview) ").")
(p body "The HW layer can be based on motherboards with a central FPGA instead
of an SoC, with user-made CPU/DSP fabric running inside the FPGA,
similar to the " (a "Project Oberon" NWirthProjectOberonPortal) " (e.g. see the "
(a "Oberon Station" OberonStationOverview) "). Similarly to Oberon's "
(a "Logic Language" NWirthLogicLanguage)
", our system HW is entirely programmed in
it's own programming language (more precisely - a subset of our
language that is synthesizable into RTL). The same language is used to
build a self-hosting Named-Data-Networking OS Kernel (e.g. see
" (a "Urbit.org" UrbitOSOverview) ").")
(p body "Therefore our System augments the Squeak OS both upwards - from
single-computer OS to network scale OS, like Croquet.io or Urbit, and
downwards - to user-made and user-controlled hardware layers, initially
based on FPGA, like Oberon Station, and eventually real HW - like "
(a "Open Titan" "https://opentitan.org/") " or "
(a "Green Array Chips" GreenArrayEvalBoard) ".")
(p body "It does, nevertheless, maintain the fundamental "
(a "self-hosting" "https://en.wikipedia.org/wiki/Self-hosting_(compilers)")
" and " (a "self-aware" ReflectionInSmalltalk)
" properties of the " (a "Smalltalk" ReflectiveProgramming)
". Including other fundamental features such as "
(a "image-based computing" ImageBasedLanguageConcept)
" as opposed to " (a "edit-compile-run" EditCompileRunVsImageBased)
" loop, and " (a "unrolling the world" MetaCircularEvaluator)
" from the " (a "eval/apply ying/yang" EvalApplyLecture)
" (aka " (a "Maxwell's Equations of Software" LispAsMES) ").")
(h1 body "Rationale")
(h2 body "Epistemological Gap")
(p body "In early days of personal computing people were buying computer parts
separately or as a "
(a "kit" "https://en.wikipedia.org/wiki/List_of_early_microcomputers#Kits")
", and "
(a "were programming" "https://en.wikipedia.org/wiki/COSMAC_ELF#Software")
" a " (a "Forth" CreateYourOwnForthCompiler) " or "
(a "Lisp" BuildYourOwnLisp) " or other
simple language compiler for it, then using that to create software.
They were true owners of their machine in "
(a "Zamm" TheZammBook)
" sense. Today's engineers are educated and operate in the abstraction
layer created by modern high-level programming languages, operating
systems and frameworks, and many of them do not hope to ever overcome
the epistemological gap between themselves and their tools, which turns
them into users, rather than engineers, because if any of the
underlying tools breaks - they cannot fix it - they have to call
customer support.")
(h2 body "Affordable Open Source Software")
(p body "The " (a "Worldwide Web"
"https://en.wikipedia.org/wiki/History_of_the_World_Wide_Web")
" as well as the networking and computer usage in
general was born in cooperative environemnt (cross university network,
researchers sharing their articles, educators sharing their
text-books). "
(a "Authentication" "https://en.wikipedia.org/wiki/Authentication") ", "
(a "Encryption" "https://en.wikipedia.org/wiki/Encryption") ", "
(a "Mandatory Access Control"
"https://en.wikipedia.org/wiki/Mandatory_access_control") ", "
(a "Single Sign On" "https://en.wikipedia.org/wiki/Single_sign-on") ", "
(a "Firewalls" "https://en.wikipedia.org/wiki/Firewall_(computing)")
", etc have been created later, as add-on protocols over "
(a "TCP/IP" "https://en.wikipedia.org/wiki/Internet_protocol_suite")
". As a consequence, cyber security became one of the essential aspects
and pillars of digital ecosystems.")
(p body "Our underlying doctrine for security engineering is «affordable open
source».")
(p body "Having access to the Source code of the SW enables thorough security
audit, but that is not enough. 300M LOC is not possible to audit, even
if the entire source code is available. E.g. Firefox or GCC, or GNU
Libc or Linux kernel are open-source systems, but each of these alone
has far more than 300K LOC code, and they cannot be adopted by
small-medium enterprises or devleoping country governments, because
they cannot afford own cyber-security audit of that amount of source
code. On the contrary: a small team of engineers can fully audit 300K
LOC upon adoption, and one or two engineers are sufficient to audit the
daily patches/updates. ")
(h2 body "Root of Trust")
(p body "The famous Turing Aaward "
(a "lecture" KenThompsonTuringLectureOnRootOfTrust)
" by Ken Thompson speaks about root of trust in compiler tool-chain,
thanks to which (as well as government-supported "
(a "spying" TotalInformationAwarenessSpyingProgram)
"), the projects like "
(a "Stage0 bootstrap" Stage0CleanBootstreapProject) ", "
(a "Maxwell's Equations of Software" GNUMESProject)
", and the GNU/Linux Distros like " (a "GUIX" "https://guix.gnu.org/")
" become increasingly actual and even necessary. And the self-compiling
compiler or meta-circular interpreter bootstrap process needs to handle
this aspect of the security. See also "
(a "this funny article" ProgrammersWorstNightmareStory)
" on programmer's worst nightmare. However, as said above, very quickly
the system after stage0 turns into unmanagable 300M LOC. And the goal
of our system is to combine such the "
(a "clean bootstrapping" NotesOnStage0)
" with the managability of entire system.")
(p body "Furthermore, the usage of FPGA as central piece would allow us to
build MAC layers of the I/Os in RTL, rather than purchasing 3rd party
PHY+MAC for Ethernet, USB and other I/Os. Our PCB will have only 3rd
party PHYs for I/Os, the MACs will be auditable: managable
free/open-source RTL code for FPGA or MCU fabrics. This would also feed
into RTL/EDA curricula of corresponding faculties/chairs in Instigate
Academy network.")
(h2 body "Efficiency")
(quotation body "'Software is getting slower more rapidly" \n
"than hardware becomes faster' Niklaus Wirth")
(p body "First of all, we would like to adhere to Stepanov's "
(a "principle" StepanovPrinciple) ",
underlying the STL, according to which the complexity of algorithm is
part of it's interface specification, not an implementation detail.")
(p body "Secondly, the personal computers with modern GUI (X11, Windows) became
widespread in 199x when the RAM on a typical machine was ~8MB and
typcial PC hard drive capacity was ~1GB. And to manage a linked-data
across a named-data network, with modest image/video resolutions that
are just sufficient for field-applications, we can implement modern
Information Management Systems we do not need multi-Ghz CPUs and
multi-GB memories, nor GBps network bandwidth. The relatively slow
GPIO offered by modern FPGA is more than enough for implementing most
of our system.")
(p body "Last but not least: with fixed amount of hex-code (mainly the
interpreter and runtime environment), with the LISP / Smalltalk
principle of code = data, and with simple fact that 200byte C source
compiles into 200KB+ binary on modern x86-64, we have unexpected
efficiency gains, that are unimaginable for the compiler-based modern
systems. E.g. modern AMD servers have bigger L1 cache than we need for
the binary part of our OS kernel and interpreter. Most of our Runtime
environment and Framework code could fit in L2 cache of modern CPUs.
Therefore we expect our system run on modern servers in emulation mode
as fast as compiled code or better.")
(p body "Good evidence of how wasteful is modern computing world is the "
(a "TCCBOOT" TCCBOOOTLinuxInInterpreter) " demo project by "
(a "Fabrice Bellard" "https://en.wikipedia.org/wiki/Fabrice_Bellard")
", which boots Linux 2.4 in a VM such as " (a "QEMU" "https://qemu.org/")
" (another project by the same author) in interpreted mode. The
entire Linux 2.4 kernel code is parsed in 15 seconds by "
(a "TinyCC" TinyCCompilerByFabriceBellard) " a tiny
interpreter of ISO C99, (another project by the same author). "
(a "QuickJS" TinyJSCompilerByFabriceBellard) "
has by order of magnitude lower LOC than NodeJS, and it's startup time
for tiny scripts is faster than NodeJS. It uses only interpreter, not
a JIT compiler but in many use cases for web-back-end it is faster. And
yet, industry is unable to switch to it. Of course it opens up
possibility for new businesses, and they "
(a "do get created" NewJSEngineStartup) ", because new "
(a "Javascript/Typescript engines" NewJSEngineEffort)
" and " (a "new Python engines" NewPythonEngine) " are being
developed. Even new languages have to be (and are being) designed,
because the bloatware is rooted in the design of language itself, and
not just its compiler. Pop industry has seen new languages ("
(a "Go" "https://go.dev/") ", " (a "Rust" "https://www.rust-lang.org/")
", " (a "Swift" "https://developer.apple.com/swift/") ") but there are "
(a "less known" "https://clojure.org/") " and "
(a "more impressive" ZigLanguage) " ones, too. And "
(a "Crhis Lattner" "https://en.wikipedia.org/wiki/Chris_Lattner")
" is another champion programmer who brakes the evil loop of
establishment by designing such new languages.")
(p body "But decades before them and still unsurpassed by many aspects is
" (a "SqueakNOS" SqueakOSOnBareHW)
" which boots entire kernel whith GUI and IDE and Office Suite
in QEMU in few seconds on a modern laptop. The GUI and Office suite
have orthogonal design, e.g. a title of a window can be edited with
same tool as the image in a presentation inside that window.")
(p body "See also " (a "Smalltalk" SmalltalkEmulatorInBrowser) " and "
(a "Oberon" OberonEmulatorInBrowser) " booting in a browser in few seconds.
Compared to that, the Windows kernel "
(a "takes minutes to boot" PCEmulatorInBrowserBootingWindows) "
inside a " (a "browser-based VM" BellardsTinyVMInJS) " (see also "
(a "Tiny RISC-V Emulator" "https://bellard.org/tinyemu/") " -
another beautiful project by Fabrice Bellard).")
(h2 body "Massive parallel reconfigurable computing")
(p body "The decomposition of the computing world into pure CPU, pure FPGA
(LUT/DFF fabric), pure RAM, and pure GPGPU is only meaningful for
encyclopedic purposes. In reality the modern compute fabrics have mix
of these elements at various levels of granularity, abstraction, with
various topologies and mixes.")
(p body "As it comes to our own HW: we compensate the simplicity and lack of
cache in our CPUs by the massive-parallel nature of our compute fabric,
which is made to match the structure of modern FPGAs: multiple DSP and
DPSRAM blocks injected in the FPGA fabrics are used to form our ALUs,
and Memory blocks. The language is designed to permit effective HLS
into such fabric, as opposed to C++ based efforts, which are trying to
make sense of an inherently sequential C/C++ code written for a Von
Neumann machine, and automatically 'extract parallelism' from that
code, to map it to inherently parallel FPGA fabrics. Such task
requires human intelligence, to ignore the actual C code and go back to
original intentions of the computation, and build a completely new code
for the FPGA or GPGPU. In other words - "
(a "it doesn't work" MythsAboutHLS4FPGA) ". The main evidence of this
is the fact that GPGPU world became possible only after "
(a "paradigm-shift" ShiftingToDistributedMemoryModel)
" from Von Neumann compute model into OpenCL/CUDA compute model, where
the user explicitly takes care of interconnect between compute units
and kernels.")
(p body "Bottom line: By making our system less CPU centric, simplifying the HW
elements such as CPU pipelines, we loose tactical points in efficiency
but gain dividents at strategic and doctrine levels in efficiency/cost
ratio for the overall system, both when mapping to existing compute
fabrics, and when designing our own hardware.")
(h1 body "Strategic directions")
(h2 body "Modern FPGA devices programming and integration")
(p body "We believe that the full potential of modern FPGAs is yet to be
unleashed. Main hindering factors being:")
(let ((ol (ordered_list body))) (sequentially
(list_item ol
"The heterogeneous nature of the modern FPGA systems, integrating
not only the DFF/LUT but complex DSP/BlockRAM, HBM, AXI Bus, ARM
CPU Cores, GPU cores capable of OpenCL, all together requiring
multidisciplinary teams to collaborate on a single system.")
(list_item ol
"The quest for 'holy graal' push-button solution to magic
high-level synthesis from an inherently VonNeumann style C/C++
to FPGA, denying the simple fact that even relatively less drastic
move to GPGPU required paradigm shift in language design.")
(list_item ol
"The " (a "misfortune" "https://dl.acm.org/doi/pdf/10.1145/359576.359579")
" of mainstream computer science based on Fortran/Algol and not Lisp,
Smalltalk, APL or other sufficiently high-level programming language.
For example in APL-style tacit-programming the
{ average := (compose divide (compose2nd reduce +), length) }
is a program that computes the average value of an array, and all the
operations in the sequence are built-in high-level array operations,
and the array is a biult-in first-class type. It is qualitatively
easier to understand the programmer's intention behind this code and
to extract parallelism for mapping to various fabrics.")
))
(p body "The important evidence of this is a relative success in real-world
applications by "
(a "Simulink" Simulink2FPGA) " and " (a "LabView" LabView2FPGA)
", who have shown non-trivial cases of using HLS for FPGA by actual
customers, without help of the original vendors. In all cases this was
done on expense of a complete paradigm shift into their own realm
(dataflow computing), away from C/C++/VonNeumann realms.")
(p body "Therefore, our FPGA related faculty will have to learn RTL, including
inference of DP SRAM blocks and DSP macros, but should not take HLS
seriously, i.e. learn it as an example of what not to do, if you want
to build high-level IDE/Tool-chain for out-of-house usage of FPGA by
good engineers, and even by students.")
(h2 body "HLS for heterogeneous systems")
(p body "We're striving for general parallel computing paradigm, which would
abstract away not only from the DFF/LUT and DSP/DPRAM fabrics of modern
FPGAs, but also cover higher levels of integration of heterogeneous
systems, such as combination of CPU, GPGPU, FPGA, AI Engine, Tensor
Processors, DPUs, and other systems into a single HPC fabric.")
(p body "Therefore "
(a "Data-Flow processing"
"https://en.wikipedia.org/wiki/Dataflow_programming") ", "
(a "Functional Programming"
"https://en.wikipedia.org/wiki/Functional_programming") ", "
(a "Communicating Sequential Processes" CSPModelInPtholemyII) ", "
(a "Kahn Process Networks" KPNModel)
", etc are important theoretical basis for development of our general
parallel computing paradigm. And everything new is a well forgotten
old. We just have to re-learn and re-use the Message Passing Interfaces
paradigm, the "
(a "Synchronous Data Flow" SDFModelInPtholemyII) " and "
(a "Dynamic Data Flow paradigms" DDFModelInPtholemyII) " and "
(a "their combinations" KPNDFCompositeModel)
", and even re-evaluate the original idea of UNIX,
neglected by the mainstream, to view the system as set of processes
communicating via file-pipes, and sockets API made compatible with file
and shared memory FIFOs.")
(p body "Our language design is based on this world-view, and we believe that
it will enable efficient HLS strategies and technologies.")
(h2 body "Place & Route for heterogeneous massive parallel systems")
(p body "The Synthesis/HLS is equivalent to compilation, and the P&R is an
equivalent to linking. As in software - dynamic and static linking are
possible. Dynamic linking is performed by OS kernel schedulers and
binary object linkers & loaders, including GPGPU runtimes and modern
FPGAs supporting partial reconfiguration at runtime.")
(p body "This direction of our research is based on support of "
(a "fat-binaries" "https://en.wikipedia.org/wiki/Fat_binary")
" to make systems less platform dependent. Traditionally HPC is a
platform-dependent domain, and that is one of the main hindering
factors of it's mainstream adoption. The fat-binary combined with
dynamic P&R is a strategy to sort out logistics and achieve the level
of comfort for developers, that is expected in the industry today.")
(p body "In this department student will learn about intrinsics of HLS flows,
and methodological aspects of design and programming of heterogeneous
massive parallel reconfigurable architectures.")
(h2 body "MPI or FTL as fundamental underlying paradigm")
(p body "Instigate has developed a runtime environment and an underlying
methodology for FIFO-to-FIFO transfer layer (FTL), which allows to
specify transformation of data by sequential processes, communicating
via message-passing interfaces to each other. This system was
originally developed as a commercial product by ProximusDA, Instigate's
daughter company. In 2022 the ProximusDA kernel was "
(a "donated" ProximusOSKernel) " to this project, and published under
open-source/free license. Since then it became one of the foundations
projects for our " (a "research" InstigateAcademyXUPPortal) ".")
(p body "Later it was discovered that Smalltalk kernel is more appropriate
level of abstraction than low-level FTL, and we have decided to build
the next generation system at this level, which is also known in
network computing world as RPC. System consists of objects. Object
contains state and behavior. Behavior is invoked by passing it
messages (sending Requests and receiving Response from a service).
Objects are managed in the network by the decentralized OS kernel. This
is basic paradigm behind Croquet.io, the decentralized descendant of
Smalltalk.")
(p body "In this department students will learn cooperative multithreading
kernels such as " (a "QuickThreads" "https://www.sandia.gov/qthreads/")
" (also known as co-routines), and details of memory and cache
optimization in " (a "modern computers" ComputerOrganizationBook) ", "
(a "NUMA-aware" NumaAwareProgramming) " programming, etc, when
implementing the system for modern amd64 and arm64 architectures.")
(h2 body "Introspection based framework")
(p body "Introspection means that every piece of data in the memory of the
computer has a pointer to it's type. It's an extreme case of C/C++
runtime-type-information, where every object is decorated with full
type info. Moreover, in Smalltalk like systems type information itself
is a first-class citizen - like any other piece of data (or object).
Type specification itself has properties, methods, and child-elements
(like DOM in Javascript).")
(p body "Since 2006 Instigate has been developing introspection based framework
for C++, which was "
(a "donated to public-domain" InstigateAppFramework3)
" in 2012 under name Instigate Application Framework. It brings in some
of Smalltalk's capabilities to the world of C++, and GTK+ UI Framework.")
(p body "In 2016-22 the " (a "new generation" InstigateManifestFramework)
" of the framework was implemented for the
programming language Javascript and WebKit UI frameowrk, with a
singificantly higher level of self-hosting and reflection, closer
to what was achieved in Smalltalk/Squeak.")
(p body "The new version built in the scope of STEPS 2.0 will be based on it's
own programming language. And this document is touching some
fundamentals of that upcoming system: it will be a combination of all
technologies mentioned in this chapter, simplified down to sub 100K LOC
fully self-hosted and self-aware sytem.")
(p body "In this department students will learn model-based design,
object-oriented RPC and DB frameworks.")
(h2 body "Decentralized object model")
(p body "Synchronization of decentralized massively scaleable databases is a
separate topic in computer science. Pioneers in this sphere are "
(a "Leslie Lamport" "https://www.youtube.com/watch?v=tw3gsBms-f8")
" and Dave Reed, who's "
(a "research" "https://dspace.mit.edu/handle/1721.1/16279") " have been
used in Croquet.io and many modern decentralized systems.")
(p body "Instigate's daughter company " (a "Leviathan" "https://leviathan.am")
" has developed a decentralized peer-to-peer end-to-en-encrypted
key-value storage called "
(a "Metax" "https://leviathan.am/#60dd155a-ad84-446c-b06a-986ff5b150b9")
", which was donated to public domain and also became an essential part
of our research. Currently it is " (a "being ported" MetaxAlveoWorkingDoc)
" to Xilinx ALVEO platform, and other parallel compute fabrics with
help of Proximus runtime.")
(p body "In 2022 Instigate Academy has started development of a next generation
P2P E2E kernel, which lifts the abstraction from key-value data store
to an object-oriented decentralized store, which is combined with the
Smalltalk-like runtime environment, thus turning it into a distributed
version of Smalltalk, with its own simplified OO/MPI syntax.")
(p body "Students in this department will learn decentralized p2p computing,
security, data synchronization, built-in version control, mandatory
access control and other aspects of modern system design.")
(p body "The overwhelming layers of HW and SW optimizations in modern
systems create an impression that a self-made machine can only be used
in education. But we do not care. Anyway, if you read to this point,
you have a bonus: open the source code of this HTML file and see how to
implement your own LISP compiler in ~300 lines of code, and how to add
a standard library for it that provides automation for web-page
construction, in ~300 lines. This article was created as a fully
self-contained HTML which includes its it's own framework, that is part
of the page source code itself (like in image based computing).
Try to modify it so that it allows to edit it's own source code and
you'll learn how to make image-based computing frameworks. Or
stay tuned for the next report, which will have a more complete
VM and language model under the hood.")