# Simple-As-Possible computer

El Simple-As-Possible (SAP) computer, o computador Més Senzill Possible, és una arquitectura de computadors dissenyada amb fins educatius i descrita al llibre Digital Computer Electronics d'Albert Paul Malvino i Jerald A. Brown. L'arquitectura SAP serveix com a exemple a Digital Computer Electronics per construir i analitzar sistemes lògics complexes amb electrònica digital.
Al llibre els autors desenvolupen successivament tres versions d'aquest computador, anomenades SAP-1, SAP-2 i SAP-3, respectivament. La segona i la tercera es basen en la versió immediatament anterior i hi afegeixen noves funcionalitats computacionals, de control de flux i d'entrada/sortida. El SAP-2 i el SAP-3 són máquines de Turing completes.
El conjunt d'instruccions de la versió final (SAP-3) està dissenyat perquè sigui compatible a nivell binari amb la família dels microprocessadors Intel 8080/8085. Per tant, les instruccions implementades en totes tres variants del computador SAP són, en cada cas, un subconjunt del repertori d'instruccions del 8080/8085.

## Variant
### Disseny de Ben Eater

El youtuber i antic treballador de la Khan Academy Ben Eater va crear un tutorial per construir un computador SAP Turing complet de 8 bits mitjançant plaques de proves amb xips lògics de la sèrie 7400 capaços d'executar programes senzills com ara el càlcul de la sèrie de Fibonacci. El disseny d'Eater conté els següents mòduls:
* Un mòdul de rellotge de velocitat ajustable (amb la limitació superior d'uns cents de Hertz) que es pot posar en "mode manual" per tal d'executar pas a pas en cada cicle de rellotge.
* Tres registres (A, B i el d'instrucció) que "emmagatzemen petites quantitats de dades que la CPU és capaç de processar".
* Una unitat aritmeticològica (ALU) capaç de sumar i restar nombres enters de 8 bits en complement a 2, llegits dels registres A i B. Aquest mòdul també disposa d'un registre d'indicadors de resultat (flags Z i C). La Z ve de "zero" i s'activa si el resultat de l'ALU és 0. C ve de "carry" (ròssec en anglès) i s'activa si l'ALU produeix un bit de ròssec.
* Un mòdul de memoria RAM amb una capacitat d'emmagatzematge de 16 bytes. Consta de 16 adreces d'1 byte cadascuna, fet que significa que les adreces de memòria s'expressen en binari amb 4 bits. Segons el web d'Eater, "aquesta és la limitació més gran d'aquest computador".
* Un registre comptador de programa de 4 bits que conté l'adreça de memòria de la instrucció que executarà el processador.
* Un registre de sortida que mostra el seu contingut en quatre visualitzadors de set segments, capaç de mostrar enters tant amb signe com sense. Les sortides d'aquest visualitzador es controlen amb diverses EEPROM, programades mitjançant un microcontrolador Arduino.
* Un bus que connecta entre sí tots aquests components. Els components es connecten al bus mitjançant buffers triestat.
* Un mòdul de lògica de control que defineix "els codis d'operació que reconeix el processador i tot allò que ocorre quan s'executa cada instrucció," a més a més de permetre que el computador sigui Turing complet. Les microinstruccions de la CPU es programen en diverses EEPROM mitjançant Arduino.
El disseny de Ben Eater ha inspirat moltes altres variants i millores, principalment al fòrum Reddit d'Eater. Algunes d'aquestes millores són les següents:
* Un mòdul d'expansió de la RAM per tal d'hostatjar 256 bytes, que fa servir tot l'espai d'adreces de 8 bits. Amb l'ajut de registres de segmentació, es pot augmentar la memòria encara més per disposar d'un espai d'adreces de 16 bits, igual que els computadors típics de 8 bits.
* Un registre de pila que permet incrementar o decrementar el punter de pila.

## Referències

* ↑ Malvino, Albert Paul; Brown, Jerald A. Digital Computer Electronics. 3. McGraw-Hill, 1993, p. 140-212. ISBN 0-02-800594-5.
* ↑ Malvino, Albert Paul; Brown, Jerald A. Digital Computer Electronics. 3. McGraw-Hill, 1993, p. 143-144. ISBN 0-02-800594-5.
* ↑ «Geek Builds 8-Bit Computer From Scratch And Explains How Every Part Works» (en anglès americà), 01-05-2017. [Consulta: 4 abril 2021].
* ↑ Eater, Ben. «Random access memory (RAM) module». [Consulta: 5 abril 2021].
* ↑ Eater, Ben. «CPU control logic». [Consulta: 5 abril 2021].

## Enllaços externs

* Simulador online del SAP-1 (en català, castellà i anglès)
* Design and Implementation of a Simple-As-Possible 1 (SAP-1) Computer using an FPGA and VHDL (anglès)
* An implementation of Simple As Possible computer - SAP1, written in VHDL (en anglès o portuguès)